{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js", "ssg:https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/IUldo6dKZIdbnCORBbXK/utils.js", "ssg:https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js", "ssg:https://framerusercontent.com/modules/hqEf5wXaAewP8VPuaZ98/5A0QGVeEr2cwheQpIuEG/useViewportSizeState.js", "ssg:https://framerusercontent.com/modules/Gzef0nFihI9m9vZG45th/lIUxbZcreiDm2GzUkt3y/useCallbackOnMouseMove.js", "ssg:https://framerusercontent.com/modules/eAnjm75CdfYT1Zz4BIaz/7KDSfnnyD1T3Ap75L4m8/scrollIntoView.js", "ssg:https://framerusercontent.com/modules/K9JZRwJcE6slDAf8rUmh/mJ54py1Ecnn1RoC4N1m4/fakeResults.js", "ssg:https://framerusercontent.com/modules/TwRgbWuhHeB95MPifel4/YW8Hlm59FG3PajbrVsaR/fuzzySearch.js", "ssg:https://framerusercontent.com/modules/3Xi2AslpcDRhfyCVPmx3/d0Oobr5BHnVqZJQyMdGn/storage.js", "ssg:https://framer.com/m/cache-YMiL.js@b9aplVZjN51x28yfNK16"],
  "sourcesContent": ["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { motion } from \"framer-motion\";\nexport function SearchIcon(props) {\n  return /*#__PURE__*/_jsx(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 256 256\",\n    width: props.width,\n    height: props.height,\n    style: {\n      ...props.style,\n      color: props.color\n    },\n    children: /*#__PURE__*/_jsx(\"path\", {\n      d: \"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z\",\n      fill: \"currentColor\"\n    })\n  });\n}\nexport function ClearIcon(props) {\n  return /*#__PURE__*/_jsxs(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 256 256\",\n    ...props,\n    children: [/*#__PURE__*/_jsx(\"rect\", {\n      width: \"256\",\n      height: \"256\",\n      fill: \"none\"\n    }), /*#__PURE__*/_jsx(\"path\", {\n      d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm37.66,130.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32L139.31,128Z\",\n      fill: \"currentColor\"\n    })]\n  });\n}\nexport function SpinnerIcon(props) {\n  const borderWidth = 3;\n  return /*#__PURE__*/_jsxs(\"div\", {\n    style: {\n      position: \"relative\",\n      ...props.style\n    },\n    children: [/*#__PURE__*/_jsx(motion.div, {\n      animate: {\n        rotate: 360\n      },\n      transition: {\n        ease: \"linear\",\n        duration: 1,\n        repeat: Infinity\n      },\n      style: {\n        borderRadius: 100,\n        backgroundImage: `conic-gradient(from 270deg, transparent 0%, ${props.color} 100%)`,\n        width: \"100%\",\n        height: \"100%\"\n      }\n    }), /*#__PURE__*/_jsx(\"div\", {\n      style: {\n        backgroundColor: props.backgroundColor,\n        borderRadius: 100,\n        position: \"absolute\",\n        top: borderWidth,\n        left: borderWidth,\n        bottom: borderWidth,\n        right: borderWidth\n      }\n    })]\n  });\n}\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"ClearIcon\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"ClearIcon\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"SpinnerIcon\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"SpinnerIcon\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"SearchIcon\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"SearchIcon\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./Icons.map", "export const localStorageDebugFlag = typeof window !== \"undefined\" && window.localStorage.getItem(\"__framerDebugSearch\") === \"true\";\nconst groupsRegex = /[A-Z]{2,}|[A-Z][a-z]+|[a-z]+|[A-Z]|\\d+/gu;\nfunction capitalizeFirstLetter(value) {\n  return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function titleCase(value) {\n  const groups = value.match(groupsRegex) || [];\n  return groups.map(capitalizeFirstLetter).join(\" \");\n}\nexport function clampText(text, maxLength) {\n  const textLength = text.length;\n  if (textLength <= maxLength) {\n    return text;\n  }\n  const slicedText = text.slice(0, maxLength);\n  if (textLength > maxLength) {\n    return slicedText + \"\u2026\";\n  }\n  return slicedText;\n}\nexport function isEmptyObject(object) {\n  return Object.keys(object).length === 0;\n}\nexport function createLogger(showOutput) {\n  function log(...data) {\n    console.log(Date.now(), ...data);\n  }\n  function time(label) {\n    console.time(label);\n  }\n  function timeEnd(label) {\n    console.timeEnd(label);\n  }\n  function noop() {}\n  if (!showOutput) {\n    return {\n      log: noop,\n      time: noop,\n      timeEnd: noop\n    };\n  }\n  return {\n    log,\n    time,\n    timeEnd\n  };\n}\nexport const DEFAULT_FONT_FAMILY = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport function getFontFamily(theme) {\n  var ref, ref1, ref2;\n  if ((ref = theme.inputFont) === null || ref === void 0 ? void 0 : ref.fontFamily) return theme.inputFont.fontFamily;\n  if ((ref1 = theme.titleFont) === null || ref1 === void 0 ? void 0 : ref1.fontFamily) return theme.titleFont.fontFamily;\n  if ((ref2 = theme.subtitleFont) === null || ref2 === void 0 ? void 0 : ref2.fontFamily) return theme.subtitleFont.fontFamily;\n  return DEFAULT_FONT_FAMILY;\n}\nexport function animationKeyFromLayout(layout) {\n  return `${layout}Animation`;\n}\nexport const safeDocument = typeof document !== \"undefined\" ? document : null;\nexport const safeWindow = typeof window !== \"undefined\" ? window : null;\nconst metaTagSelector = 'meta[name=\"framer-search-index\"]';\nexport function getMetaTagContent() {\n  const metaTag = safeDocument === null || safeDocument === void 0 ? void 0 : safeDocument.querySelector(metaTagSelector);\n  if (!metaTag) return undefined;\n  const metaTagContent = metaTag.getAttribute(\"content\");\n  return metaTagContent;\n}\nexport const checkIfOverLimit = () => {\n  return getMetaTagContent() === \"limit-reached\";\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"animationKeyFromLayout\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"titleCase\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"clampText\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"safeWindow\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"DEFAULT_FONT_FAMILY\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"getFontFamily\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"createLogger\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"localStorageDebugFlag\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"getMetaTagContent\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"isEmptyObject\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"safeDocument\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"checkIfOverLimit\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./utils.map", "export var Browser;\n(function (Browser) {\n  var isTouch = Browser.isTouch = () => \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n  var isChrome = Browser.isChrome = () => navigator.userAgent.toLowerCase().includes(\"chrome/\");\n  var isWebKit = Browser.isWebKit = () => navigator.userAgent.toLowerCase().includes(\"applewebkit/\");\n  var isSafari = Browser.isSafari = () => isWebKit() && !isChrome();\n  var isSafariDesktop = Browser.isSafariDesktop = () => isSafari() && !isTouch();\n  var isWindows = Browser.isWindows = () => /Win/.test(navigator.platform);\n  var isMacOS = Browser.isMacOS = () => /Mac/.test(navigator.platform);\n})(Browser || (Browser = {}));\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./browser.map", "import { useEffect, useState } from \"react\";\nfunction getViewportSize() {\n  if (typeof window === \"undefined\") {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n  return {\n    width: window.innerWidth,\n    height: window.innerHeight\n  };\n}\nexport function useViewportSizeState(getState) {\n  const [state, setState] = useState(() => getState(getViewportSize()));\n  useEffect(() => {\n    const handleWindowResize = () => setState(getState(getViewportSize()));\n    window.addEventListener(\"resize\", handleWindowResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleWindowResize);\n    };\n  }, []);\n  return state;\n}\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"useViewportSizeState\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./useViewportSizeState.map", "// From: @framerjs/fresco/src/components/utils/useCallbackOnMouseMove.ts\nimport { useRef, useCallback } from \"react\";\nimport { Browser } from \"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\"; /**\n                                                                                                                      * Webkit fires mousemove events if the pointer's coordination changes relative\n                                                                                                                      * to its container (e.g. if the container scrolls), or when a modifier key is\n                                                                                                                      * pressed, mousemove would fire even if the cursor did not actually move.\n                                                                                                                      * This helper compares the cursor position between mouse events, and fire the\n                                                                                                                      * callback only when its position changes.\n                                                                                                                      */\nexport const useCallbackOnMouseMove = (callback, mousePositionRef) => {\n  const prevPositionRef = useRef(null);\n  return useCallback(event => {\n    if (!Browser.isSafari()) return callback(event);\n    const ref = mousePositionRef ? mousePositionRef : prevPositionRef;\n    const {\n      clientX,\n      clientY\n    } = event;\n    const prevCursorPosition = ref.current;\n    ref.current = {\n      x: clientX,\n      y: clientY\n    }; // Ignore mouse moves unless we have a position. Else it might be an\n    // element that appears behind the mouse without the mouse moving.\n    if (!prevCursorPosition) {\n      return;\n    }\n    if (prevCursorPosition.x !== clientX || prevCursorPosition.y !== clientY) {\n      return callback(event);\n    }\n  }, [mousePositionRef, callback]);\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"useCallbackOnMouseMove\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"Point\": {\n      \"type\": \"tsType\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./useCallbackOnMouseMove.map", "// Safari does not support `element.scrollIntoView({ block: \"nearest\" })`, so this\n// is a workaround for that.\nexport function scrollIntoView(targetElement, scrollElement, /** Additional spacing to add from the top or bottom of the scroll element viewport. */{\n  offsetTop,\n  offsetBottom\n}) {\n  const targetElementBounds = targetElement.getBoundingClientRect();\n  const scrollElementBounds = scrollElement.getBoundingClientRect();\n  if (targetElementBounds.top < scrollElementBounds.top) {\n    const difference = scrollElementBounds.top - targetElementBounds.top;\n    scrollElement.scrollTop = scrollElement.scrollTop - difference - offsetTop;\n  } else if (targetElementBounds.bottom > scrollElementBounds.bottom) {\n    const topAligned = scrollElementBounds.top - targetElementBounds.top;\n    const minOffset = scrollElement.scrollTop - topAligned - offsetTop;\n    const bottomAligned = targetElementBounds.bottom - scrollElementBounds.bottom;\n    const offset = scrollElement.scrollTop + bottomAligned + offsetBottom;\n    scrollElement.scrollTop = Math.min(minOffset, offset);\n  }\n}\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"scrollIntoView\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./scrollIntoView.map", "// Fake example data used for when the search component is in preview mode.\n// Note that the `url` value is used as a key in React, so it needs to be unique.\nexport const fakeResults = {\n  \"/\": {\n    version: 1,\n    title: \"Example Search Result\",\n    description: \"Description of search result.\",\n    keywords: \"\",\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    p: [],\n    url: \"/example-url/\",\n    codeblock: []\n  },\n  \"/example-1\": {\n    version: 1,\n    title: \"Publish your Site to Search\",\n    description: \"Try Site Search to instantly search your Framer site content.\",\n    keywords: \"\",\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    p: [],\n    url: \"/example-url/1/\",\n    codeblock: []\n  },\n  \"/example-2\": {\n    version: 1,\n    title: \"Customise your Site Search\",\n    description: \"Personalize everything from corner radius, to icon weight.\",\n    keywords: \"\",\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    p: [],\n    url: \"/example-url/2/\",\n    codeblock: []\n  }\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"fakeResults\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./fakeResults.map", "// This file is based on the Levenshtein algorithm. Originally from Koen but maybe he\n// got it from somewhere else.\nconst peq = new Uint32Array(65536);\nconst myers_32 = (a, b) => {\n  const n = a.length;\n  const m = b.length;\n  const lst = 1 << n - 1;\n  let pv = -1;\n  let mv = 0;\n  let sc = n;\n  let i = n;\n  while (i--) {\n    peq[a.charCodeAt(i)] |= 1 << i;\n  }\n  for (i = 0; i < m; i++) {\n    let eq = peq[b.charCodeAt(i)];\n    const xv = eq | mv;\n    eq |= (eq & pv) + pv ^ pv;\n    mv |= ~(eq | pv);\n    pv &= eq;\n    if (mv & lst) {\n      sc++;\n    }\n    if (pv & lst) {\n      sc--;\n    }\n    mv = mv << 1 | 1;\n    pv = pv << 1 | ~(xv | mv);\n    mv &= xv;\n  }\n  i = n;\n  while (i--) {\n    peq[a.charCodeAt(i)] = 0;\n  }\n  return sc;\n};\nconst myers_x = (b, a) => {\n  const n = a.length;\n  const m = b.length;\n  const mhc = [];\n  const phc = [];\n  const hsize = Math.ceil(n / 32);\n  const vsize = Math.ceil(m / 32);\n  for (let i = 0; i < hsize; i++) {\n    phc[i] = -1;\n    mhc[i] = 0;\n  }\n  let j = 0;\n  for (; j < vsize - 1; j++) {\n    let mv = 0;\n    let pv = -1;\n    const start = j * 32;\n    const vlen = Math.min(32, m) + start;\n    for (let k = start; k < vlen; k++) {\n      peq[b.charCodeAt(k)] |= 1 << k;\n    }\n    for (let i1 = 0; i1 < n; i1++) {\n      const eq = peq[a.charCodeAt(i1)];\n      const pb = phc[i1 / 32 | 0] >>> i1 & 1;\n      const mb = mhc[i1 / 32 | 0] >>> i1 & 1;\n      const xv = eq | mv;\n      const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;\n      let ph = mv | ~(xh | pv);\n      let mh = pv & xh;\n      if (ph >>> 31 ^ pb) {\n        phc[i1 / 32 | 0] ^= 1 << i1;\n      }\n      if (mh >>> 31 ^ mb) {\n        mhc[i1 / 32 | 0] ^= 1 << i1;\n      }\n      ph = ph << 1 | pb;\n      mh = mh << 1 | mb;\n      pv = mh | ~(xv | ph);\n      mv = ph & xv;\n    }\n    for (let k1 = start; k1 < vlen; k1++) {\n      peq[b.charCodeAt(k1)] = 0;\n    }\n  }\n  let mv1 = 0;\n  let pv1 = -1;\n  const start1 = j * 32;\n  const vlen1 = Math.min(32, m - start1) + start1;\n  for (let k2 = start1; k2 < vlen1; k2++) {\n    peq[b.charCodeAt(k2)] |= 1 << k2;\n  }\n  let score = m;\n  for (let i2 = 0; i2 < n; i2++) {\n    const eq1 = peq[a.charCodeAt(i2)];\n    const pb1 = phc[i2 / 32 | 0] >>> i2 & 1;\n    const mb1 = mhc[i2 / 32 | 0] >>> i2 & 1;\n    const xv1 = eq1 | mv1;\n    const xh1 = ((eq1 | mb1) & pv1) + pv1 ^ pv1 | eq1 | mb1;\n    let ph1 = mv1 | ~(xh1 | pv1);\n    let mh1 = pv1 & xh1;\n    score += ph1 >>> m - 1 & 1;\n    score -= mh1 >>> m - 1 & 1;\n    if (ph1 >>> 31 ^ pb1) {\n      phc[i2 / 32 | 0] ^= 1 << i2;\n    }\n    if (mh1 >>> 31 ^ mb1) {\n      mhc[i2 / 32 | 0] ^= 1 << i2;\n    }\n    ph1 = ph1 << 1 | pb1;\n    mh1 = mh1 << 1 | mb1;\n    pv1 = mh1 | ~(xv1 | ph1);\n    mv1 = ph1 & xv1;\n  }\n  for (let k3 = start1; k3 < vlen1; k3++) {\n    peq[b.charCodeAt(k3)] = 0;\n  }\n  return score;\n};\nconst distance = (a, b) => {\n  if (a.length < b.length) {\n    const tmp = b;\n    b = a;\n    a = tmp;\n  }\n  if (b.length === 0) {\n    return a.length;\n  }\n  if (a.length <= 32) {\n    return myers_32(a, b);\n  }\n  return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n  let min_distance = Infinity;\n  let min_index = 0;\n  for (let i = 0; i < arr.length; i++) {\n    const dist = distance(str, arr[i]);\n    if (dist < min_distance) {\n      min_distance = dist;\n      min_index = i;\n    }\n  }\n  return arr[min_index];\n};\nexport { closest, distance };\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"closest\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"distance\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./fuzzySearch.map", "export function Storage(name) {\n  this.ready = new Promise((resolve, reject) => {\n    var request = window.indexedDB.open(location.origin);\n    request.onupgradeneeded = e => {\n      this.db = e.target[\"result\"];\n      this.db.createObjectStore(\"store\");\n    };\n    request.onsuccess = e => {\n      this.db = e.target[\"result\"];\n      resolve();\n    };\n    request.onerror = e => {\n      this.db = e.target[\"result\"];\n      reject(e);\n    };\n  });\n}\nStorage.prototype.get = function (key) {\n  return this.ready.then(() => {\n    return new Promise((resolve, reject) => {\n      var request = this.getStore().get(key);\n      request.onsuccess = e => resolve(e.target.result);\n      request.onerror = reject;\n    });\n  });\n};\nStorage.prototype.getStore = function () {\n  return this.db.transaction([\"store\"], \"readwrite\").objectStore(\"store\");\n};\nStorage.prototype.set = function (key, value) {\n  return this.ready.then(() => {\n    return new Promise((resolve, reject) => {\n      var request = this.getStore().put(value, key);\n      request.onsuccess = resolve;\n      request.onerror = reject;\n    });\n  });\n};\nStorage.prototype.delete = function (key, value) {\n  window.indexedDB.deleteDatabase(location.origin);\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"Storage\": {\n      \"type\": \"function\"\n    }\n  }\n};", "// @ts-ignore\nimport{Storage}from\"https://framerusercontent.com/modules/3Xi2AslpcDRhfyCVPmx3/d0Oobr5BHnVqZJQyMdGn/storage.js\";export const hashCode=s=>s.split(\"\").reduce((a,b)=>{a=(a<<5)-a+b.charCodeAt(0);return a&a;},0);export function corsProxy(url){return`https://cors-anywhere.herokuapp.com/${url}`;}export async function cachedResponse(url,cache=new Storage(\"cache\")){const cacheKey=url;const data=await cache.get(cacheKey);if(data){return data;}else{var req=new XMLHttpRequest;req.open(\"GET\",url,true);req.responseType=\"blob\";return new Promise((resolve,reject)=>{req.onload=async function(){if(this.status===200){await cache.set(url,this.response);resolve(this.response);}else{reject(new Error(`Response status ${this.status} ${this.statusText}`));}};req.onerror=function(error){reject(error);};req.send();});}}export async function setCachedData(url,dataToCache,cache=new Storage(\"cache\")){const cacheKey=url;const data=await cache.set(cacheKey,dataToCache);}export async function checkForCachedData(url,cache=new Storage(\"cache\")){const cacheKey=url;const data=await cache.get(cacheKey);if(data){return data;}else{return null;}}\nexport const __FramerMetadata__ = {\"exports\":{\"hashCode\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setCachedData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkForCachedData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"corsProxy\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cachedResponse\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./cache.map"],
  "mappings": "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",
  "names": ["SearchIcon", "props", "p", "ClearIcon", "u", "SpinnerIcon", "motion", "localStorageDebugFlag", "window", "groupsRegex", "capitalizeFirstLetter", "value", "titleCase", "clampText", "text", "maxLength", "textLength", "slicedText", "isEmptyObject", "object", "createLogger", "showOutput", "log", "data", "time", "label", "timeEnd", "noop", "DEFAULT_FONT_FAMILY", "getFontFamily", "theme", "ref", "ref1", "ref2", "animationKeyFromLayout", "layout", "safeDocument", "safeWindow", "metaTagSelector", "getMetaTagContent", "metaTag", "checkIfOverLimit", "Browser", "isTouch", "window", "navigator", "isChrome", "isWebKit", "isSafari", "isSafariDesktop", "isWindows", "isMacOS", "getViewportSize", "window", "useViewportSizeState", "getState", "state", "setState", "ye", "ue", "handleWindowResize", "useCallbackOnMouseMove", "callback", "mousePositionRef", "prevPositionRef", "pe", "te", "event", "Browser", "ref", "clientX", "clientY", "prevCursorPosition", "scrollIntoView", "targetElement", "scrollElement", "offsetTop", "offsetBottom", "targetElementBounds", "scrollElementBounds", "difference", "topAligned", "minOffset", "bottomAligned", "offset", "fakeResults", "peq", "myers_32", "a", "b", "m", "lst", "pv", "mv", "sc", "i", "eq", "xv", "myers_x", "mhc", "phc", "hsize", "vsize", "j", "start", "vlen", "k", "i1", "pb", "mb", "xh", "ph", "mh", "k1", "mv1", "pv1", "start1", "vlen1", "k2", "score", "i2", "eq1", "pb1", "mb1", "xv1", "xh1", "ph1", "mh1", "k3", "distance", "tmp", "Storage", "name", "resolve", "reject", "request", "window", "e", "key", "value", "setCachedData", "url", "dataToCache", "cache", "Storage", "cacheKey", "data", "checkForCachedData"]
}
