[{"data":1,"prerenderedAt":16},["ShallowReactive",2],{"highlighted-code:browser":3},{"installation:1:0":4,"installation:1:1":5,"installation:1:2":6,"installation:3":7,"quickstart:1":8,"identify:1":9,"identity-verification:1":10,"attribution:1":11,"errors-capture:1":12,"events:1":13,"widget:1":14,"frameworks:1":15},"\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> @ravenkeep\u002Fbrowser\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> @ravenkeep\u002Fbrowser\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">&#x3C;!-- jsDelivr serves the npm package; pin the version you test with -->\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">script\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> src\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">=\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@ravenkeep\u002Fbrowser@0.4.0\u002Fdist\u002Fravenkeep.min.global.js\"\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">>&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">script\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">script\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">  const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> window\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">publishableKey\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'rk_pub_lumen_xxxxxxxxxxxx'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">script\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> @ravenkeep\u002Fbrowser\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\"># the core and the files it loads on demand, side by side\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">cp\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> node_modules\u002F@ravenkeep\u002Fbrowser\u002Fdist\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">*\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">.global.js\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> public\u002F\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">from\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> '@ravenkeep\u002Fbrowser'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F The publishable key is safe in browser code; it only works from your allowed origins.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">export\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  publishableKey\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'rk_pub_lumen_xxxxxxxxxxxx'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F Once your user signs in. userHash comes from your backend (identity verification).\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">await\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">identify\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userId\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">user\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">email\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">user\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">email\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">open\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'chat'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) \u003C\u002Fspan>\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F the support chat and feature request widget\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> me\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> fetch\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'\u002Fapi\u002Fme'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">).\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">then\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">response\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> response\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">json\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">())\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">const\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> { \u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">error\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">=\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">identify\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  userId\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">me\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  userHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">me\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">ravenkeepUserHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  email\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">me\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">email\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  name\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">me\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">name\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  account\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">me\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">orgId\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">name\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">me\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">orgName\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">if\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> (\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">error\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">?.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">code\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> ===\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> 'identity_verification_failed'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">console\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">warn\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'Check the identity secret on the server'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F On sign-out: forgets the session in this tab, closes the widget, starts a new anonymous id.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">logoutButton\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">addEventListener\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'click'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, () \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">=>\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">reset\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">())\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">from\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> '@ravenkeep\u002Fnode'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> new\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  secretKey\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">process\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">env\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">RAVENKEEP_SECRET_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  identitySecret\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">process\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">env\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">RAVENKEEP_IDENTITY_SECRET\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">app\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">get\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'\u002Fapi\u002Fme'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, (\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">req\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">res\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">=>\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  res\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">json\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">req\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">user\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">ravenkeepUserHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">widgetUserHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">req\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">user\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">})\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">await\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> fetch\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'\u002Fapi\u002Fsignup'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  method\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'POST'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  headers\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'Content-Type'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'application\u002Fjson'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  body\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">JSON\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">stringify\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">email\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">password\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">attribution\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">getAttribution\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">() }),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">})\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">try\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> uploadFile\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">file\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">} \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">catch\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> (\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">error\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">captureException\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">error\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">tags\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">area\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'upload'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> }, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">context\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">fileSize\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">file\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">size\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">  showToast\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'Upload failed'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">export\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">publishableKey\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'rk_pub_lumen_xxxxxxxxxxxx'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">autoPageviews\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">true\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F Or by hand after each route change:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">router\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">afterEach\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(() \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">=>\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">trackPageview\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">section\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'billing'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> }))\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">publishableKey\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'rk_pub_lumen_xxxxxxxxxxxx'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">widget\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">launcher\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">false\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">helpButton\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">addEventListener\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'click'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, () \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">=>\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">open\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'chat'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">roadmapLink\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">addEventListener\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'click'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, () \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">=>\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">open\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'features'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">on\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\">'unread'\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">count\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F25A67\">  helpBadge\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">textContent\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> count\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> >\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> 0\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> ?\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> String\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">count\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) \u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">:\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> ''\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">})\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki ravenkeep-one-dark-saturated\" style=\"background-color:#0d0d0d;color:#b4bcc9\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">from\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> '@ravenkeep\u002Fbrowser'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">import\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> { \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">useEffect\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> } \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">from\u003C\u002Fspan>\u003Cspan style=\"color:#94D864\"> 'react'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7F848E;font-style:italic\">\u002F\u002F Once per page load, at module scope: never inside a component or an effect.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">export\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> Ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">init\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">publishableKey\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">: \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">globalThis\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">_importMeta_\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">env\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\">VITE_RAVENKEEP_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">export\u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\"> function\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\"> useRavenkeepIdentity\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">user\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\">:\u003C\u002Fspan>\u003Cspan style=\"color:#F7C569\"> User\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#F7C569\"> null\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">  const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> userId\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> user\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">?.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">id\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">  const\u003C\u002Fspan>\u003Cspan style=\"color:#F09947\"> userHash\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> user\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">?.\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">ravenkeepUserHash\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#56B0FB\">  useEffect\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">(() \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">=>\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> (\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userId\u003C\u002Fspan>\u003Cspan style=\"color:#36CEE2\"> &#x26;&#x26;\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> userHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">) \u003C\u002Fspan>\u003Cspan style=\"color:#D163F3\">void\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">identify\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">({ \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userId\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\"> })\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D163F3\">    else\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\"> ravenkeep\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">.\u003C\u002Fspan>\u003Cspan style=\"color:#56B0FB\">reset\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">  }, [\u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userId\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F25A67\">userHash\u003C\u002Fspan>\u003Cspan style=\"color:#B4BCC9\">])\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B4BCC9\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1793518581327]