{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/4QsRIUsKBPTsUCV7gQzm/JtYNrbO8ElBjKUxGXz3Q/scramble.js"],
  "sourcesContent": ["function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useRef, useEffect } from \"react\";\nexport function scramble(Component) {\n  return props => {\n    const ref = useRef(null);\n    useEffect(() => {\n      var ref1;\n      if (location.host.endsWith(\"framercanvas.com\") && !location.search.startsWith(\"?target=preview-web\")) {\n        return;\n      }\n      const el = ref === null || ref === void 0 ? void 0 : (ref1 = ref.current) === null || ref1 === void 0 ? void 0 : ref1.querySelector(\".framer-text\");\n      if (!el) return;\n      const fn = new TextScramble(el);\n      fn.setText(el.innerText);\n    }, []);\n    return /*#__PURE__*/_jsx(Component, {\n      ...props,\n      ref: ref\n    });\n  };\n}\nclass TextScramble {\n  constructor(el) {\n    _defineProperty(this, \"chars\", \"!-$x____+*0\");\n    _defineProperty(this, \"setText\", newText => {\n      const oldText = this.el.innerText;\n      const length = Math.max(oldText.length, newText.length);\n      const promise = new Promise(resolve => this.resolve = resolve);\n      this.queue = [];\n      for (let i = 0; i < length; i++) {\n        const from = oldText[i] || \"\";\n        const to = newText[i] || \"\";\n        const start = Math.floor(Math.random() * 20);\n        const end = start + Math.floor(Math.random() * 20);\n        this.queue.push({\n          from,\n          to,\n          start,\n          end\n        });\n      }\n      cancelAnimationFrame(this.frameRequest);\n      this.frame = 0;\n      this.update();\n      return promise;\n    });\n    _defineProperty(this, \"update\", () => {\n      let output = \"\";\n      let complete = 0;\n      for (let i = 0, n = this.queue.length; i < n; i++) {\n        const {\n          from,\n          to,\n          start,\n          end,\n          char\n        } = this.queue[i];\n        if (this.frame >= end) {\n          complete++;\n          output += to;\n        } else if (this.frame >= start) {\n          if (!char || Math.random() < .28) {\n            this.queue[i].char = this.randomChar();\n          }\n          output += `<span>${this.queue[i].char}</span>`;\n        } else {\n          output += from;\n        }\n      }\n      this.el.innerHTML = output;\n      if (complete === this.queue.length) {\n        this.resolve();\n      } else {\n        this.frameRequest = requestAnimationFrame(this.update);\n        this.frame++;\n      }\n    });\n    _defineProperty(this, \"randomChar\", () => {\n      return this.chars[Math.floor(Math.random() * this.chars.length)];\n    });\n    _defineProperty(this, \"frame\", 0);\n    _defineProperty(this, \"queue\", []);\n    this.el = el;\n  }\n}\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"scramble\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"scramble\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./scramble.map"],
  "mappings": "yFAAA,SAASA,EAAgBC,EAAKC,EAAKC,EAAO,CACxC,OAAID,KAAOD,EACT,OAAO,eAAeA,EAAKC,EAAK,CAC9B,MAAOC,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDF,EAAIC,CAAG,EAAIC,EAENF,CACT,CAGO,SAASG,EAASC,EAAW,CAClC,OAAOC,GAAS,CACd,IAAMC,EAAMC,EAAO,IAAI,EACvB,OAAAC,EAAU,IAAM,CACd,IAAIC,EACJ,GAAI,SAAS,KAAK,SAAS,kBAAkB,GAAK,CAAC,SAAS,OAAO,WAAW,qBAAqB,EACjG,OAEF,IAAMC,EAAKJ,GAAQ,OAAmCG,EAAOH,EAAI,WAAa,MAAQG,IAAS,OAAnD,OAAqEA,EAAK,cAAc,cAAc,EAClJ,GAAI,CAACC,EAAI,OACE,IAAIC,EAAaD,CAAE,EAC3B,QAAQA,EAAG,SAAS,CACzB,EAAG,CAAC,CAAC,EACe,EAAKN,EAAW,CAClC,GAAGC,EACH,IAAKC,CACP,CAAC,CACH,CACF,CACA,IAAMK,EAAN,KAAmB,CACjB,YAAYD,EAAI,CACdX,EAAgB,KAAM,QAAS,aAAa,EAC5CA,EAAgB,KAAM,UAAWa,GAAW,CAC1C,IAAMC,EAAU,KAAK,GAAG,UAClBC,EAAS,KAAK,IAAID,EAAQ,OAAQD,EAAQ,MAAM,EAChDG,EAAU,IAAI,QAAQC,GAAW,KAAK,QAAUA,CAAO,EAC7D,KAAK,MAAQ,CAAC,EACd,QAASC,EAAI,EAAGA,EAAIH,EAAQG,IAAK,CAC/B,IAAMC,EAAOL,EAAQI,CAAC,GAAK,GACrBE,EAAKP,EAAQK,CAAC,GAAK,GACnBG,EAAQ,KAAK,MAAM,KAAK,OAAO,EAAI,EAAE,EACrCC,EAAMD,EAAQ,KAAK,MAAM,KAAK,OAAO,EAAI,EAAE,EACjD,KAAK,MAAM,KAAK,CACd,KAAAF,EACA,GAAAC,EACA,MAAAC,EACA,IAAAC,CACF,CAAC,EAEH,4BAAqB,KAAK,YAAY,EACtC,KAAK,MAAQ,EACb,KAAK,OAAO,EACLN,CACT,CAAC,EACDhB,EAAgB,KAAM,SAAU,IAAM,CACpC,IAAIuB,EAAS,GACTC,EAAW,EACf,QAASN,EAAI,EAAGO,EAAI,KAAK,MAAM,OAAQP,EAAIO,EAAGP,IAAK,CACjD,GAAM,CACJ,KAAAC,EACA,GAAAC,EACA,MAAAC,EACA,IAAAC,EACA,KAAAI,CACF,EAAI,KAAK,MAAMR,CAAC,EACZ,KAAK,OAASI,GAChBE,IACAD,GAAUH,GACD,KAAK,OAASC,IACnB,CAACK,GAAQ,KAAK,OAAO,EAAI,OAC3B,KAAK,MAAMR,CAAC,EAAE,KAAO,KAAK,WAAW,GAEvCK,GAAU,SAAS,KAAK,MAAML,CAAC,EAAE,eAEjCK,GAAUJ,EAGd,KAAK,GAAG,UAAYI,EAChBC,IAAa,KAAK,MAAM,OAC1B,KAAK,QAAQ,GAEb,KAAK,aAAe,sBAAsB,KAAK,MAAM,EACrD,KAAK,QAET,CAAC,EACDxB,EAAgB,KAAM,aAAc,IAC3B,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,EAAI,KAAK,MAAM,MAAM,CAAC,CAChE,EACDA,EAAgB,KAAM,QAAS,CAAC,EAChCA,EAAgB,KAAM,QAAS,CAAC,CAAC,EACjC,KAAK,GAAKW,CACZ,CACF",
  "names": ["_defineProperty", "obj", "key", "value", "scramble", "Component", "props", "ref", "pe", "ue", "ref1", "el", "TextScramble", "newText", "oldText", "length", "promise", "resolve", "i", "from", "to", "start", "end", "output", "complete", "n", "char"]
}
