@tma.js/sdk-react 2.1.4 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dts/SDKProvider/SDKProvider.types.d.ts +3 -4
- package/dist/dts/createHOCs.d.ts +6 -10
- package/dist/dts/createHooks.d.ts +6 -7
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +604 -587
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../sdk/dist/index.js","../src/createHOCs.tsx","../src/SDKProvider/SDKContext.ts","../src/createHooks.ts","../src/hooks-hocs/back-button.ts","../src/hooks-hocs/biometry-manager.ts","../src/hooks-hocs/closing-behavior.ts","../src/hooks-hocs/cloud-storage.ts","../src/hooks-hocs/haptic-feedback.ts","../src/hooks-hocs/init-data.ts","../src/hooks-hocs/invoice.ts","../src/hooks-hocs/main-button.ts","../src/hooks-hocs/mini-app.ts","../src/hooks-hocs/popup.ts","../src/hooks-hocs/qr-scanner.ts","../src/hooks-hocs/settings-button.ts","../src/hooks-hocs/theme-params.ts","../src/hooks-hocs/launch-params.ts","../src/hooks-hocs/utils.ts","../src/hooks-hocs/viewport.ts","../src/SDKProvider/SDKProvider.tsx"],"sourcesContent":["var Dt = Object.defineProperty;\nvar Vt = (e, t, s) => t in e ? Dt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;\nvar c = (e, t, s) => (Vt(e, typeof t != \"symbol\" ? t + \"\" : t, s), s);\nfunction it(e, t) {\n let s;\n const n = () => {\n s !== void 0 && t && t(s), s = void 0;\n };\n return [() => s === void 0 ? s = e(n) : s, n];\n}\nfunction ot(e) {\n const t = M(), { count: s } = t;\n t.unsubscribe(e), s && !t.count && ne();\n}\nfunction $t(e) {\n return M().subscribe(e), () => ot(e);\n}\nclass Mt {\n constructor(t, s = {}) {\n this.scope = t, this.options = s;\n }\n /**\n * Prints message into a console in case, logger is currently enabled.\n * @param level - log level.\n * @param args - arguments.\n */\n print(t, ...s) {\n const n = /* @__PURE__ */ new Date(), r = Intl.DateTimeFormat(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n fractionalSecondDigits: 3,\n timeZone: \"UTC\"\n }).format(n), { textColor: i, bgColor: a } = this.options, o = \"font-weight: bold;padding: 0 5px;border-radius:5px\";\n console[t](\n `%c${r}%c / %c${this.scope}`,\n `${o};background-color: lightblue;color:black`,\n \"\",\n `${o};${i ? `color:${i};` : \"\"}${a ? `background-color:${a}` : \"\"}`,\n ...s\n );\n }\n /**\n * Prints error message into a console.\n * @param args\n */\n error(...t) {\n this.print(\"error\", ...t);\n }\n /**\n * Prints log message into a console.\n * @param args\n */\n log(...t) {\n this.print(\"log\", ...t);\n }\n}\nconst F = new Mt(\"SDK\", {\n bgColor: \"forestgreen\",\n textColor: \"white\"\n});\nlet G = !1;\nconst et = ({ event: e, args: [t] }) => {\n F.log(\"Event received:\", t === void 0 ? { name: e } : { name: e, data: t });\n};\nfunction Ze(e) {\n G !== e && (G = e, e ? $t(et) : ot(et));\n}\nfunction Lt(...e) {\n G && F.log(...e);\n}\nclass D {\n constructor() {\n c(this, \"listeners\", /* @__PURE__ */ new Map());\n c(this, \"listenersCount\", 0);\n c(this, \"subscribeListeners\", []);\n }\n /**\n * Removes all event listeners.\n */\n clear() {\n this.listeners.clear(), this.subscribeListeners = [];\n }\n /**\n * Returns count of bound listeners.\n */\n get count() {\n return this.listenersCount + this.subscribeListeners.length;\n }\n emit(t, ...s) {\n this.subscribeListeners.forEach((r) => r({\n event: t,\n args: s\n })), (this.listeners.get(t) || []).forEach(([r, i]) => {\n r(...s), i && this.off(t, r);\n });\n }\n /**\n * Adds new event listener.\n * @param event - event name.\n * @param listener - event listener.\n * @param once - should listener be called only once.\n * @returns Function to remove bound event listener.\n */\n on(t, s, n) {\n let r = this.listeners.get(t);\n return r || this.listeners.set(t, r = []), r.push([s, n]), this.listenersCount += 1, () => this.off(t, s);\n }\n /**\n * Removes event listener. In case, specified listener was bound several times, it removes\n * only a single one.\n * @param event - event name.\n * @param listener - event listener.\n */\n off(t, s) {\n const n = this.listeners.get(t) || [];\n for (let r = 0; r < n.length; r += 1)\n if (s === n[r][0]) {\n n.splice(r, 1), this.listenersCount -= 1;\n return;\n }\n }\n /**\n * Adds a new event listener for all events.\n * @param listener - event listener.\n * @returns Function to remove event listener.\n */\n subscribe(t) {\n return this.subscribeListeners.push(t), () => this.unsubscribe(t);\n }\n /**\n * Removes global event listener. In case, specified listener was bound several times, it removes\n * only a single one.\n * @param listener - event listener.\n */\n unsubscribe(t) {\n for (let s = 0; s < this.subscribeListeners.length; s += 1)\n if (this.subscribeListeners[s] === t) {\n this.subscribeListeners.splice(s, 1);\n return;\n }\n }\n}\nfunction j(e, t, s) {\n return window.addEventListener(e, t, s), () => window.removeEventListener(e, t, s);\n}\nclass V extends Error {\n constructor(t, s, n) {\n super(s, { cause: n }), this.type = t, Object.setPrototypeOf(this, V.prototype);\n }\n}\nfunction f(e, t, s) {\n return new V(e, t, s);\n}\nconst Bt = \"ERR_METHOD_UNSUPPORTED\", Ot = \"ERR_METHOD_PARAMETER_UNSUPPORTED\", Ut = \"ERR_UNKNOWN_ENV\", Wt = \"ERR_INVOKE_CUSTOM_METHOD_RESPONSE\", Ht = \"ERR_TIMED_OUT\", Gt = \"ERR_UNEXPECTED_TYPE\", at = \"ERR_PARSE\", jt = \"ERR_NAVIGATION_LIST_EMPTY\", zt = \"ERR_NAVIGATION_CURSOR_INVALID\", Ke = \"ERR_NAVIGATION_ITEM_INVALID\", Xe = \"ERR_SSR_INIT\", Ft = \"ERR_INVALID_PATH_BASE\";\nfunction E() {\n return f(Gt, \"Value has unexpected type\");\n}\nclass $ {\n constructor(t, s, n) {\n this.parser = t, this.isOptional = s, this.type = n;\n }\n /**\n * Attempts to parse passed value\n * @param value - value to parse.\n * @throws {SDKError} ERR_PARSE\n * @see ERR_PARSE\n */\n parse(t) {\n if (!(this.isOptional && t === void 0))\n try {\n return this.parser(t);\n } catch (s) {\n throw f(\n at,\n `Unable to parse value${this.type ? ` as ${this.type}` : \"\"}`,\n s\n );\n }\n }\n optional() {\n return this.isOptional = !0, this;\n }\n}\nfunction P(e, t) {\n return () => new $(e, !1, t);\n}\nconst w = P((e) => {\n if (typeof e == \"boolean\")\n return e;\n const t = String(e);\n if (t === \"1\" || t === \"true\")\n return !0;\n if (t === \"0\" || t === \"false\")\n return !1;\n throw E();\n}, \"boolean\");\nfunction ct(e, t) {\n const s = {};\n for (const n in e) {\n const r = e[n];\n if (!r)\n continue;\n let i, a;\n if (typeof r == \"function\" || \"parse\" in r)\n i = n, a = typeof r == \"function\" ? r : r.parse.bind(r);\n else {\n const { type: o } = r;\n i = r.from || n, a = typeof o == \"function\" ? o : o.parse.bind(o);\n }\n try {\n const o = a(t(i));\n o !== void 0 && (s[n] = o);\n } catch (o) {\n throw f(at, `Unable to parse field \"${n}\"`, o);\n }\n }\n return s;\n}\nfunction J(e) {\n let t = e;\n if (typeof t == \"string\" && (t = JSON.parse(t)), typeof t != \"object\" || t === null || Array.isArray(t))\n throw E();\n return t;\n}\nfunction d(e, t) {\n return new $((s) => {\n const n = J(s);\n return ct(e, (r) => n[r]);\n }, !1, t);\n}\nconst y = P((e) => {\n if (typeof e == \"number\")\n return e;\n if (typeof e == \"string\") {\n const t = Number(e);\n if (!Number.isNaN(t))\n return t;\n }\n throw E();\n}, \"number\");\nfunction Q(e) {\n return /^#[\\da-f]{6}$/i.test(e);\n}\nfunction Jt(e) {\n return /^#[\\da-f]{3}$/i.test(e);\n}\nfunction ht(e) {\n const t = e.replace(/\\s/g, \"\").toLowerCase();\n if (Q(t))\n return t;\n if (Jt(t)) {\n let n = \"#\";\n for (let r = 0; r < 3; r += 1)\n n += t[1 + r].repeat(2);\n return n;\n }\n const s = t.match(/^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/) || t.match(/^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),\\d{1,3}\\)$/);\n if (!s)\n throw new Error(`Value \"${e}\" does not satisfy any of known RGB formats.`);\n return s.slice(1).reduce((n, r) => {\n const i = parseInt(r, 10).toString(16);\n return n + (i.length === 1 ? \"0\" : \"\") + i;\n }, \"#\");\n}\nconst h = P((e) => {\n if (typeof e == \"string\" || typeof e == \"number\")\n return e.toString();\n throw E();\n}, \"string\"), pt = P((e) => ht(h().parse(e)), \"rgb\");\nfunction Qt(e) {\n return d({\n eventType: h(),\n eventData: (t) => t\n }).parse(e);\n}\nfunction Yt() {\n [\"TelegramGameProxy_receiveEvent\", \"TelegramGameProxy\", \"Telegram\"].forEach((e) => {\n delete window[e];\n });\n}\nfunction Zt(e, t) {\n window.dispatchEvent(new MessageEvent(\"message\", {\n data: JSON.stringify({ eventType: e, eventData: t }),\n // We specify window.parent to imitate the case, the parent iframe sent us this event.\n source: window.parent\n }));\n}\nfunction Kt() {\n [\n [\"TelegramGameProxy_receiveEvent\"],\n // Windows Phone.\n [\"TelegramGameProxy\", \"receiveEvent\"],\n // Desktop.\n [\"Telegram\", \"WebView\", \"receiveEvent\"]\n // Android and iOS.\n ].forEach((e) => {\n let t = window;\n e.forEach((s, n, r) => {\n if (n === r.length - 1) {\n t[s] = Zt;\n return;\n }\n s in t || (t[s] = {}), t = t[s];\n });\n });\n}\nconst Xt = d({\n button_id: (e) => e == null ? void 0 : h().parse(e)\n}), te = {\n clipboard_text_received: d({\n req_id: h(),\n data: (e) => e === null ? e : h().optional().parse(e)\n }),\n custom_method_invoked: d({\n req_id: h(),\n result: (e) => e,\n error: h().optional()\n }),\n invoice_closed: d({\n slug: h(),\n status: h()\n }),\n phone_requested: d({\n status: h()\n }),\n popup_closed: {\n parse: (e) => Xt.parse(e ?? {})\n },\n qr_text_received: d({\n data: h().optional()\n }),\n theme_changed: d({\n theme_params: (e) => {\n const t = pt().optional();\n return Object.entries(J(e)).reduce((s, [n, r]) => (s[n] = t.parse(r), s), {});\n }\n }),\n viewport_changed: d({\n height: y(),\n width: (e) => e == null ? window.innerWidth : y().parse(e),\n is_state_stable: w(),\n is_expanded: w()\n }),\n write_access_requested: d({\n status: h()\n })\n};\nfunction ee() {\n const e = new D();\n Kt();\n let t = [\n // Don't forget to remove created handlers.\n Yt,\n // Add \"resize\" event listener to make sure, we always have fresh viewport information.\n // Desktop version of Telegram is sometimes not sending the viewport_changed\n // event. For example, when the MainButton is shown. That's why we should\n // add our own listener to make sure, viewport information is always fresh.\n // Issue: https://github.com/Telegram-Mini-Apps/tma.js/issues/10\n j(\"resize\", () => {\n e.emit(\"viewport_changed\", {\n width: window.innerWidth,\n height: window.innerHeight,\n is_state_stable: !0,\n is_expanded: !0\n });\n }),\n // Add listener, which handles events sent from the Telegram web application and also events\n // generated by the local emitEvent function.\n j(\"message\", (s) => {\n if (s.source !== window.parent)\n return;\n let n;\n try {\n n = Qt(s.data);\n } catch {\n return;\n }\n const { eventType: r, eventData: i } = n, a = te[r];\n try {\n const o = a ? a.parse(i) : i;\n e.emit(...o ? [r, o] : [r]);\n } catch (o) {\n F.error(\n `An error occurred processing the \"${r}\" event from the Telegram application. Please, file an issue here: https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose`,\n n,\n o\n );\n }\n }),\n // Clear emitter bound events.\n () => e.clear()\n ];\n return [e, () => {\n t.forEach((s) => s()), t = [];\n }];\n}\nconst [se, ne] = it(\n (e) => {\n const [t, s] = ee(), n = t.off.bind(t);\n return t.off = (r, i) => {\n const { count: a } = t;\n n(r, i), a && !t.count && e();\n }, [t, s];\n },\n ([, e]) => e()\n);\nfunction M() {\n return se()[0];\n}\nfunction L(e, t) {\n M().off(e, t);\n}\nfunction b(e, t, s) {\n return M().on(e, t, s);\n}\nfunction T(e) {\n return typeof e == \"object\" && e !== null && !Array.isArray(e);\n}\nfunction re(e, t) {\n const s = e.split(\".\"), n = t.split(\".\"), r = Math.max(s.length, n.length);\n for (let i = 0; i < r; i += 1) {\n const a = parseInt(s[i] || \"0\", 10), o = parseInt(n[i] || \"0\", 10);\n if (a !== o)\n return a > o ? 1 : -1;\n }\n return 0;\n}\nfunction g(e, t) {\n return re(e, t) <= 0;\n}\nfunction v(e, t, s) {\n if (typeof s == \"string\") {\n if (e === \"web_app_open_link\" && t === \"try_instant_view\")\n return g(\"6.4\", s);\n if (e === \"web_app_set_header_color\" && t === \"color\")\n return g(\"6.9\", s);\n }\n switch (e) {\n case \"web_app_open_tg_link\":\n case \"web_app_open_invoice\":\n case \"web_app_setup_back_button\":\n case \"web_app_set_background_color\":\n case \"web_app_set_header_color\":\n case \"web_app_trigger_haptic_feedback\":\n return g(\"6.1\", t);\n case \"web_app_open_popup\":\n return g(\"6.2\", t);\n case \"web_app_close_scan_qr_popup\":\n case \"web_app_open_scan_qr_popup\":\n case \"web_app_read_text_from_clipboard\":\n return g(\"6.4\", t);\n case \"web_app_switch_inline_query\":\n return g(\"6.7\", t);\n case \"web_app_invoke_custom_method\":\n case \"web_app_request_write_access\":\n case \"web_app_request_phone\":\n return g(\"6.9\", t);\n case \"web_app_setup_settings_button\":\n return g(\"6.10\", t);\n case \"web_app_biometry_get_info\":\n case \"web_app_biometry_open_settings\":\n case \"web_app_biometry_request_access\":\n case \"web_app_biometry_request_auth\":\n case \"web_app_biometry_update_token\":\n return g(\"7.2\", t);\n default:\n return [\n \"iframe_ready\",\n \"iframe_will_reload\",\n \"web_app_close\",\n \"web_app_data_send\",\n \"web_app_expand\",\n \"web_app_open_link\",\n \"web_app_ready\",\n \"web_app_request_theme\",\n \"web_app_request_viewport\",\n \"web_app_setup_main_button\",\n \"web_app_setup_closing_behavior\"\n ].includes(e);\n }\n}\nfunction ie(e) {\n return \"external\" in e && T(e.external) && \"notify\" in e.external && typeof e.external.notify == \"function\";\n}\nfunction ut(e) {\n return \"TelegramWebviewProxy\" in e && T(e.TelegramWebviewProxy) && \"postEvent\" in e.TelegramWebviewProxy && typeof e.TelegramWebviewProxy.postEvent == \"function\";\n}\nfunction oe() {\n try {\n return window.self !== window.top;\n } catch {\n return !0;\n }\n}\nlet lt = \"https://web.telegram.org\";\nfunction ts(e) {\n lt = e;\n}\nfunction ae() {\n return lt;\n}\nfunction R(e, t, s) {\n let n = {}, r;\n t === void 0 && s === void 0 ? n = {} : t !== void 0 && s !== void 0 ? (n = s, r = t) : t !== void 0 && (\"targetOrigin\" in t ? n = t : r = t);\n const { targetOrigin: i = ae() } = n;\n if (Lt(\"Posting event:\", r ? { event: e, data: r } : { event: e }), oe()) {\n window.parent.postMessage(JSON.stringify({ eventType: e, eventData: r }), i);\n return;\n }\n if (ie(window)) {\n window.external.notify(JSON.stringify({ eventType: e, eventData: r }));\n return;\n }\n if (ut(window)) {\n window.TelegramWebviewProxy.postEvent(e, JSON.stringify(r));\n return;\n }\n throw f(\n Ut,\n \"Unable to determine current environment and possible way to send event. You are probably trying to use Mini Apps method outside of Telegram application environment.\"\n );\n}\nfunction ce(e) {\n return (t, s) => {\n if (!v(t, e))\n throw f(Bt, `Method \"${t}\" is unsupported in Mini Apps version ${e}`);\n if (T(s)) {\n let n;\n if (t === \"web_app_open_link\" && \"try_instant_view\" in s ? n = \"try_instant_view\" : t === \"web_app_set_header_color\" && \"color\" in s && (n = \"color\"), n && !v(t, n, e))\n throw f(\n Ot,\n `Parameter \"${n}\" of \"${t}\" method is unsupported in Mini Apps version ${e}`\n );\n }\n return R(t, s);\n };\n}\nfunction dt(e) {\n return ({ req_id: t }) => t === e;\n}\nfunction _t(e) {\n return f(Ht, `Timeout reached: ${e}ms`);\n}\nfunction ft(e, t) {\n return Promise.race([\n typeof e == \"function\" ? e() : e,\n new Promise((s, n) => {\n setTimeout(() => {\n n(_t(t));\n }, t);\n })\n ]);\n}\nasync function _(e) {\n let t;\n const s = new Promise((u) => {\n t = u;\n }), {\n method: n,\n event: r,\n capture: i,\n postEvent: a = R,\n timeout: o\n } = e, p = (Array.isArray(r) ? r : [r]).map(\n (u) => b(u, (q) => (!i || i(q)) && t(q))\n );\n try {\n return a(n, e.params), await (o ? ft(s, o) : s);\n } finally {\n p.forEach((u) => u());\n }\n}\nasync function C(e, t, s, n = {}) {\n const {\n result: r,\n error: i\n } = await _({\n ...n,\n method: \"web_app_invoke_custom_method\",\n event: \"custom_method_invoked\",\n params: {\n method: e,\n params: t,\n req_id: s\n },\n capture: dt(s)\n });\n if (i)\n throw f(Wt, i);\n return r;\n}\nfunction z(...e) {\n return e.map((t) => {\n if (typeof t == \"string\")\n return t;\n if (T(t))\n return z(Object.entries(t).map((s) => s[1] && s[0]));\n if (Array.isArray(t))\n return z(...t);\n }).filter(Boolean).join(\" \");\n}\nfunction es(...e) {\n return e.reduce((t, s) => (T(s) && Object.entries(s).forEach(([n, r]) => {\n const i = z(t[n], r);\n i.length && (t[n] = i);\n }), t), {});\n}\nfunction gt(e) {\n const t = ht(e);\n return Math.sqrt(\n [0.299, 0.587, 0.114].reduce((s, n, r) => {\n const i = parseInt(t.slice(1 + r * 2, 1 + (r + 1) * 2), 16);\n return s + i * i * n;\n }, 0)\n ) < 120;\n}\nclass he {\n constructor(t) {\n c(this, \"ee\", new D());\n /**\n * Adds new event listener.\n */\n c(this, \"on\", this.ee.on.bind(this.ee));\n /**\n * Removes event listener.\n */\n c(this, \"off\", this.ee.off.bind(this.ee));\n this.state = t;\n }\n /**\n * Clones current state and returns its copy.\n */\n clone() {\n return { ...this.state };\n }\n set(t, s) {\n Object.entries(typeof t == \"string\" ? { [t]: s } : t).reduce((r, [i, a]) => this.state[i] === a || a === void 0 ? r : (this.state[i] = a, this.ee.emit(`change:${i}`, a), !0), !1) && this.ee.emit(\"change\", this.state);\n }\n /**\n * Returns value by specified key.\n * @param key - state key.\n */\n get(t) {\n return this.state[t];\n }\n}\nclass Y {\n constructor(t) {\n c(this, \"state\");\n /**\n * Gets the state value.\n */\n c(this, \"get\");\n /**\n * Sets the state value.\n */\n c(this, \"set\");\n /**\n * Clones the current state.\n */\n c(this, \"clone\");\n this.state = new he(t), this.set = this.state.set.bind(this.state), this.get = this.state.get.bind(this.state), this.clone = this.state.clone.bind(this.state);\n }\n}\nfunction bt(e, t) {\n return (s) => v(t[s], e);\n}\nclass Z extends Y {\n constructor(s, n, r) {\n super(s);\n /**\n * @returns True, if specified method is supported by the current component.\n */\n c(this, \"supports\");\n this.supports = bt(n, r);\n }\n}\nclass pe extends Z {\n constructor(s, n, r) {\n super({ isVisible: s }, n, {\n show: \"web_app_setup_back_button\",\n hide: \"web_app_setup_back_button\"\n });\n /**\n * Adds a new event listener.\n * @param event - event to listen.\n * @param listener - listener to add.\n */\n c(this, \"on\", (s, n) => s === \"click\" ? b(\"back_button_pressed\", n) : this.state.on(s, n));\n /**\n * Removes the event listener.\n * @param event - event to listen.\n * @param listener - listener to remove.\n */\n c(this, \"off\", (s, n) => s === \"click\" ? L(\"back_button_pressed\", n) : this.state.off(s, n));\n this.postEvent = r;\n }\n set isVisible(s) {\n this.set(\"isVisible\", s), this.postEvent(\"web_app_setup_back_button\", { is_visible: s });\n }\n /**\n * True if BackButton is currently visible.\n */\n get isVisible() {\n return this.get(\"isVisible\");\n }\n /**\n * Hides the BackButton.\n */\n hide() {\n this.isVisible = !1;\n }\n /**\n * Shows the BackButton.\n */\n show() {\n this.isVisible = !0;\n }\n}\nconst wt = P((e) => e instanceof Date ? e : new Date(y().parse(e) * 1e3), \"Date\");\nfunction K(e, t) {\n return new $((s) => {\n if (typeof s != \"string\" && !(s instanceof URLSearchParams))\n throw E();\n const n = typeof s == \"string\" ? new URLSearchParams(s) : s;\n return ct(e, (r) => {\n const i = n.get(r);\n return i === null ? void 0 : i;\n });\n }, !1, t);\n}\nconst ue = d({\n id: y(),\n type: h(),\n title: h(),\n photoUrl: {\n type: h().optional(),\n from: \"photo_url\"\n },\n username: h().optional()\n}, \"Chat\").optional(), st = d({\n addedToAttachmentMenu: {\n type: w().optional(),\n from: \"added_to_attachment_menu\"\n },\n allowsWriteToPm: {\n type: w().optional(),\n from: \"allows_write_to_pm\"\n },\n firstName: {\n type: h(),\n from: \"first_name\"\n },\n id: y(),\n isBot: {\n type: w().optional(),\n from: \"is_bot\"\n },\n isPremium: {\n type: w().optional(),\n from: \"is_premium\"\n },\n languageCode: {\n type: h().optional(),\n from: \"language_code\"\n },\n lastName: {\n type: h().optional(),\n from: \"last_name\"\n },\n photoUrl: {\n type: h().optional(),\n from: \"photo_url\"\n },\n username: h().optional()\n}, \"User\").optional();\nfunction mt() {\n return K({\n authDate: {\n type: wt(),\n from: \"auth_date\"\n },\n canSendAfter: {\n type: y().optional(),\n from: \"can_send_after\"\n },\n chat: ue,\n chatInstance: {\n type: h().optional(),\n from: \"chat_instance\"\n },\n chatType: {\n type: h().optional(),\n from: \"chat_type\"\n },\n hash: h(),\n queryId: {\n type: h().optional(),\n from: \"query_id\"\n },\n receiver: st,\n startParam: {\n type: h().optional(),\n from: \"start_param\"\n },\n user: st\n }, \"InitData\");\n}\nfunction le(e) {\n return e.replace(/_[a-z]/g, (t) => t[1].toUpperCase());\n}\nfunction de(e) {\n return e.replace(/[A-Z]/g, (t) => `_${t.toLowerCase()}`);\n}\nconst yt = P(\n (e) => {\n const t = pt().optional();\n return Object.entries(J(e)).reduce((s, [n, r]) => (s[le(n)] = t.parse(r), s), {});\n },\n \"ThemeParams\"\n);\nfunction vt(e) {\n return K({\n botInline: {\n type: w().optional(),\n from: \"tgWebAppBotInline\"\n },\n initData: {\n type: mt().optional(),\n from: \"tgWebAppData\"\n },\n initDataRaw: {\n type: h().optional(),\n from: \"tgWebAppData\"\n },\n platform: {\n type: h(),\n from: \"tgWebAppPlatform\"\n },\n showSettings: {\n type: w().optional(),\n from: \"tgWebAppShowSettings\"\n },\n startParam: {\n type: h().optional(),\n from: \"tgWebAppStartParam\"\n },\n themeParams: {\n type: yt(),\n from: \"tgWebAppThemeParams\"\n },\n version: {\n type: h(),\n from: \"tgWebAppVersion\"\n }\n }).parse(e);\n}\nfunction Et(e) {\n return vt(\n e.replace(/^[^?#]*[?#]/, \"\").replace(/[?#]/g, \"&\")\n );\n}\nfunction _e() {\n return Et(window.location.href);\n}\nfunction Pt() {\n return performance.getEntriesByType(\"navigation\")[0];\n}\nfunction fe() {\n const e = Pt();\n if (!e)\n throw new Error(\"Unable to get first navigation entry.\");\n return Et(e.name);\n}\nfunction xt(e) {\n return `tma.js/${e.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`)}`;\n}\nfunction Ct(e, t) {\n sessionStorage.setItem(xt(e), JSON.stringify(t));\n}\nfunction St(e) {\n const t = sessionStorage.getItem(xt(e));\n try {\n return t ? JSON.parse(t) : void 0;\n } catch {\n }\n}\nfunction ge() {\n return vt(St(\"launchParams\") || \"\");\n}\nfunction be(e) {\n return JSON.stringify(\n Object.fromEntries(\n Object.entries(e).map(([t, s]) => [de(t), s])\n )\n );\n}\nfunction we(e) {\n const {\n initDataRaw: t,\n themeParams: s,\n platform: n,\n version: r,\n showSettings: i,\n startParam: a,\n botInline: o\n } = e, p = new URLSearchParams();\n return p.set(\"tgWebAppPlatform\", n), p.set(\"tgWebAppThemeParams\", be(s)), p.set(\"tgWebAppVersion\", r), t && p.set(\"tgWebAppData\", t), a && p.set(\"tgWebAppStartParam\", a), typeof i == \"boolean\" && p.set(\"tgWebAppShowSettings\", i ? \"1\" : \"0\"), typeof o == \"boolean\" && p.set(\"tgWebAppBotInline\", o ? \"1\" : \"0\"), p.toString();\n}\nfunction me(e) {\n Ct(\"launchParams\", we(e));\n}\nfunction ye() {\n for (const e of [\n // Try to retrieve launch parameters from the current location. This method can return\n // nothing in case, location was changed and then page was reloaded.\n _e,\n // Then, try using the lower level API - window.performance.\n fe,\n // Finally, try to extract launch parameters from the session storage.\n ge\n ])\n try {\n const t = e();\n return me(t), t;\n } catch {\n }\n throw new Error(\"Unable to retrieve launch parameters from any known source.\");\n}\nfunction Rt() {\n const e = Pt();\n return !!(e && e.type === \"reload\");\n}\nfunction ve() {\n let e = 0;\n return () => (e += 1).toString();\n}\nfunction Ee() {\n let e = !1;\n const t = [];\n return [\n (s) => !e && t.push(s),\n () => {\n e || (e = !0, t.forEach((s) => s()));\n },\n e\n ];\n}\nconst [Pe] = it(ve);\nfunction l(e, t) {\n return () => {\n const s = ye(), n = {\n ...s,\n postEvent: ce(s.version),\n createRequestId: Pe()\n };\n if (typeof e == \"function\")\n return e(n);\n const [r, i, a] = Ee(), o = t({\n ...n,\n // State should only be passed only in case, current page was reloaded. If we don't add\n // this check, state restoration will work improperly in the web version of Telegram,\n // when we are always working in the same \"session\" (tab).\n state: Rt() ? St(e) : void 0,\n addCleanup: r\n }), p = (u) => (a || r(\n u.on(\"change\", (q) => {\n Ct(e, q);\n })\n ), u);\n return [\n o instanceof Promise ? o.then(p) : p(o),\n i\n ];\n };\n}\nconst ss = l(\"backButton\", ({\n postEvent: e,\n version: t,\n state: s = { isVisible: !1 }\n}) => new pe(s.isVisible, t, e));\nclass I extends Z {\n constructor() {\n super(...arguments);\n /**\n * Adds a new event listener.\n */\n c(this, \"on\", this.state.on.bind(this.state));\n /**\n * Removes the event listener.\n */\n c(this, \"off\", this.state.off.bind(this.state));\n }\n}\nfunction At(e) {\n const t = e.available ? e : {\n available: !1,\n device_id: \"\",\n token_saved: !1,\n access_requested: !1,\n access_granted: !1,\n type: \"\"\n };\n return {\n available: !0,\n type: t.type,\n deviceId: t.device_id,\n tokenSaved: t.token_saved,\n accessRequested: t.access_requested,\n accessGranted: t.access_granted\n };\n}\nclass xe extends I {\n constructor({ postEvent: s, version: n, ...r }) {\n super(r, n, {\n auth: \"web_app_biometry_request_auth\",\n openSettings: \"web_app_biometry_open_settings\",\n requestAccess: \"web_app_biometry_request_access\",\n updateToken: \"web_app_biometry_update_token\"\n });\n c(this, \"postEvent\");\n c(this, \"authPromise\");\n c(this, \"accessPromise\");\n this.postEvent = s;\n }\n /**\n * Shows whether biometry is available.\n */\n get available() {\n return this.get(\"available\");\n }\n /**\n * Shows whether permission to use biometrics has been granted.\n */\n get accessGranted() {\n return this.get(\"accessGranted\");\n }\n /**\n * Shows whether if permission to use biometrics has been requested.\n */\n get accessRequested() {\n return this.get(\"accessRequested\");\n }\n /**\n * Authenticates the user using biometrics.\n * @param options - method options.\n * @since 7.2\n * @returns Token from the local secure storage, if authentication was successful.\n */\n async authenticate({\n reason: s,\n ...n\n }) {\n return this.authPromise || (this.authPromise = _({\n ...n,\n method: \"web_app_biometry_request_auth\",\n event: \"biometry_auth_requested\",\n postEvent: this.postEvent,\n params: {\n // TODO: Check if reason is empty works fine.\n reason: (s || \"\").trim()\n }\n }).then(({ token: r }) => r).finally(() => this.authPromise = void 0)), this.authPromise;\n }\n /**\n * A unique device identifier that can be used to match the token to the device.\n */\n get deviceId() {\n return this.get(\"deviceId\");\n }\n /**\n * Opens the biometric access settings for bots. Useful when you need to request biometrics\n * access to users who haven't granted it yet.\n *\n * _Note that this method can be called only in response to user interaction with the Mini App\n * interface (e.g. a click inside the Mini App or on the main button)_.\n * @since 7.2\n */\n openSettings() {\n this.postEvent(\"web_app_biometry_open_settings\");\n }\n /**\n * Requests permission to use biometrics.\n * @since 7.2\n * @returns Promise with true, if access was granted.\n */\n requestAccess({ reason: s, ...n } = {}) {\n return this.accessPromise || (this.accessPromise = _({\n ...n,\n postEvent: this.postEvent,\n method: \"web_app_biometry_request_access\",\n event: \"biometry_info_received\",\n params: { reason: s || \"\" }\n }).then((r) => {\n const i = At(r);\n return this.set(i), i.accessGranted;\n }).finally(() => this.accessPromise = void 0)), this.accessPromise;\n }\n /**\n * The type of biometrics currently available on the device.\n */\n get biometryType() {\n return this.get(\"biometryType\");\n }\n /**\n * Shows whether token was saved previously in the local secure storage.\n */\n get tokenSaved() {\n return this.get(\"tokenSaved\");\n }\n /**\n * Updates the biometric token in a secure storage on the device.\n * @returns Promise with `true`, if token was updated.\n */\n async updateToken({ token: s, ...n } = {}) {\n return [\"removed\", \"updated\"].includes(\n (await _({\n ...n,\n postEvent: this.postEvent,\n method: \"web_app_biometry_update_token\",\n event: \"biometry_token_updated\",\n params: { token: s || \"\" }\n })).status\n );\n }\n}\nasync function Ce(e) {\n return At(\n await _({\n ...e || {},\n method: \"web_app_biometry_get_info\",\n event: \"biometry_info_received\"\n })\n );\n}\nconst ns = l(\n \"biometryManager\",\n async ({ postEvent: e, version: t, state: s }) => new xe({\n ...s || await Ce({ timeout: 1e3 }),\n version: t,\n postEvent: e\n })\n);\nclass X extends Y {\n constructor() {\n super(...arguments);\n /**\n * Adds a new event listener.\n */\n c(this, \"on\", this.state.on.bind(this.state));\n /**\n * Removes the event listener.\n */\n c(this, \"off\", this.state.off.bind(this.state));\n }\n}\nclass Se extends X {\n constructor(t, s) {\n super({ isConfirmationNeeded: t }), this.postEvent = s;\n }\n set isConfirmationNeeded(t) {\n this.set(\"isConfirmationNeeded\", t), this.postEvent(\"web_app_setup_closing_behavior\", { need_confirmation: t });\n }\n /**\n * True, if the confirmation dialog should be shown while the user is trying to close\n * the Mini App.\n */\n get isConfirmationNeeded() {\n return this.get(\"isConfirmationNeeded\");\n }\n /**\n * Disables the confirmation dialog when closing the Mini App.\n */\n disableConfirmation() {\n this.isConfirmationNeeded = !1;\n }\n /**\n * Enables the confirmation dialog when closing the Mini App.\n */\n enableConfirmation() {\n this.isConfirmationNeeded = !0;\n }\n}\nconst rs = l(\n \"closingBehavior\",\n ({\n postEvent: e,\n state: t = { isConfirmationNeeded: !1 }\n }) => new Se(t.isConfirmationNeeded, e)\n);\nclass tt {\n constructor(t, s) {\n /**\n * @returns True, if specified method is supported by the current component.\n */\n c(this, \"supports\");\n this.supports = bt(t, s);\n }\n}\nfunction Re(e) {\n if (Array.isArray(e))\n return e;\n if (typeof e == \"string\")\n try {\n const t = JSON.parse(e);\n if (Array.isArray(t))\n return t;\n } catch {\n }\n throw E();\n}\nclass Ae extends $ {\n constructor(s, n, r) {\n super(Re, n, r);\n c(this, \"itemParser\");\n this.itemParser = typeof s == \"function\" ? s : s.parse.bind(s);\n }\n /**\n * Attempts to parse passed value\n * @param value - value to parse.\n * @throws {SDKError} ERR_PARSE\n * @see ERR_PARSE\n */\n parse(s) {\n const n = super.parse(s);\n return n === void 0 ? n : n.map(this.itemParser);\n }\n of(s) {\n return this.itemParser = typeof s == \"function\" ? s : s.parse.bind(s), this;\n }\n}\nfunction Te(e) {\n return new Ae((t) => t, !1, e);\n}\nfunction nt(e, t) {\n return Object.fromEntries(e.map((s) => [s, t]));\n}\nclass Ie extends tt {\n constructor(t, s, n) {\n super(t, {\n delete: \"web_app_invoke_custom_method\",\n get: \"web_app_invoke_custom_method\",\n getKeys: \"web_app_invoke_custom_method\",\n set: \"web_app_invoke_custom_method\"\n }), this.createRequestId = s, this.postEvent = n;\n }\n /**\n * Deletes specified key or keys from the cloud storage.\n * @param keyOrKeys - key or keys to delete.\n * @param options - request execution options.\n */\n async delete(t, s = {}) {\n const n = Array.isArray(t) ? t : [t];\n n.length && await C(\n \"deleteStorageValues\",\n { keys: n },\n this.createRequestId(),\n { ...s, postEvent: this.postEvent }\n );\n }\n /**\n * Returns list of all keys presented in the cloud storage.\n * @param options - request execution options.\n */\n async getKeys(t = {}) {\n return Te().of(h()).parse(\n await C(\n \"getStorageKeys\",\n {},\n this.createRequestId(),\n { ...t, postEvent: this.postEvent }\n )\n );\n }\n async get(t, s = {}) {\n const n = Array.isArray(t) ? t : [t];\n if (!n.length)\n return nt(n, \"\");\n const r = await C(\n \"getStorageValues\",\n { keys: n },\n this.createRequestId(),\n { ...s, postEvent: this.postEvent }\n ), i = d(nt(n, h()), \"CloudStorageData\").parse(r);\n return Array.isArray(t) ? i : i[t];\n }\n /**\n * Saves specified value by key.\n * @param key - storage key.\n * @param value - storage value.\n * @param options - request execution options.\n */\n async set(t, s, n = {}) {\n await C(\n \"saveStorageValue\",\n { key: t, value: s },\n this.createRequestId(),\n { ...n, postEvent: this.postEvent }\n );\n }\n}\nconst is = l(\n ({ createRequestId: e, postEvent: t, version: s }) => new Ie(s, e, t)\n);\nclass qe extends tt {\n constructor(t, s) {\n super(t, {\n impactOccurred: \"web_app_trigger_haptic_feedback\",\n notificationOccurred: \"web_app_trigger_haptic_feedback\",\n selectionChanged: \"web_app_trigger_haptic_feedback\"\n }), this.postEvent = s;\n }\n /**\n * A method tells that an impact occurred. The Telegram app may play the\n * appropriate haptics based on style value passed.\n * @param style - impact style.\n */\n impactOccurred(t) {\n this.postEvent(\"web_app_trigger_haptic_feedback\", {\n type: \"impact\",\n impact_style: t\n });\n }\n /**\n * A method tells that a task or action has succeeded, failed, or produced\n * a warning. The Telegram app may play the appropriate haptics based on\n * type value passed.\n * @param type - notification type.\n */\n notificationOccurred(t) {\n this.postEvent(\"web_app_trigger_haptic_feedback\", {\n type: \"notification\",\n notification_type: t\n });\n }\n /**\n * A method tells that the user has changed a selection. The Telegram app\n * may play the appropriate haptics.\n *\n * Do not use this feedback when the user makes or confirms a selection;\n * use it only when the selection changes.\n */\n selectionChanged() {\n this.postEvent(\"web_app_trigger_haptic_feedback\", { type: \"selection_change\" });\n }\n}\nconst os = l(\n ({ version: e, postEvent: t }) => new qe(e, t)\n);\nclass ke {\n constructor(t) {\n this.initData = t;\n }\n /**\n * @see InitDataParsed.authDate\n */\n get authDate() {\n return this.initData.authDate;\n }\n /**\n * @see InitDataParsed.canSendAfter\n */\n get canSendAfter() {\n return this.initData.canSendAfter;\n }\n /**\n * Date after which it is allowed to call\n * the [answerWebAppQuery](https://core.telegram.org/bots/api#answerwebappquery) method.\n */\n get canSendAfterDate() {\n const { canSendAfter: t } = this;\n return t ? new Date(this.authDate.getTime() + t * 1e3) : void 0;\n }\n /**\n * @see InitDataParsed.chat\n */\n get chat() {\n return this.initData.chat;\n }\n /**\n * @see InitDataParsed.chatType\n */\n get chatType() {\n return this.initData.chatType;\n }\n /**\n * @see InitDataParsed.chatInstance\n */\n get chatInstance() {\n return this.initData.chatInstance;\n }\n /**\n * @see InitDataParsed.hash\n */\n get hash() {\n return this.initData.hash;\n }\n /**\n * @see InitDataParsed.queryId\n */\n get queryId() {\n return this.initData.queryId;\n }\n /**\n * @see InitDataParsed.receiver\n */\n get receiver() {\n return this.initData.receiver;\n }\n /**\n * @see InitDataParsed.startParam\n */\n get startParam() {\n return this.initData.startParam;\n }\n /**\n * @see InitDataParsed.user\n */\n get user() {\n return this.initData.user;\n }\n}\nconst as = l(\n ({ initData: e }) => e ? new ke(e) : void 0\n);\nfunction cs(e) {\n return mt().parse(e);\n}\nclass Ne extends I {\n constructor(t, s, n) {\n super({ isOpened: t }, s, { open: \"web_app_open_invoice\" }), this.postEvent = n;\n }\n set isOpened(t) {\n this.set(\"isOpened\", t);\n }\n /**\n * True if invoice is currently opened.\n */\n get isOpened() {\n return this.get(\"isOpened\");\n }\n async open(t, s) {\n if (this.isOpened)\n throw new Error(\"Invoice is already opened\");\n let n;\n if (!s)\n n = t;\n else {\n const { hostname: r, pathname: i } = new URL(t, window.location.href);\n if (r !== \"t.me\")\n throw new Error(`Incorrect hostname: ${r}`);\n const a = i.match(/^\\/(\\$|invoice\\/)([A-Za-z0-9\\-_=]+)$/);\n if (!a)\n throw new Error('Link pathname has incorrect format. Expected to receive \"/invoice/{slug}\" or \"/${slug}\"');\n [, , n] = a;\n }\n this.isOpened = !0;\n try {\n return (await _({\n method: \"web_app_open_invoice\",\n event: \"invoice_closed\",\n params: { slug: n },\n postEvent: this.postEvent,\n capture(i) {\n return n === i.slug;\n }\n })).status;\n } finally {\n this.isOpened = !1;\n }\n }\n}\nconst hs = l(\n ({ version: e, postEvent: t }) => new Ne(!1, e, t)\n);\nclass De extends Y {\n constructor({ postEvent: s, ...n }) {\n super(n);\n c(this, \"postEvent\");\n /**\n * Adds a new event listener.\n * @param event - event to listen.\n * @param listener - listener to add.\n */\n c(this, \"on\", (s, n) => s === \"click\" ? b(\"main_button_pressed\", n) : this.state.on(s, n));\n /**\n * Removes the event listener.\n * @param event - event to listen.\n * @param listener - listener to remove.\n */\n c(this, \"off\", (s, n) => s === \"click\" ? L(\"main_button_pressed\", n) : this.state.off(s, n));\n this.postEvent = s;\n }\n /**\n * Sends current local state to the Telegram application.\n */\n commit() {\n this.text !== \"\" && this.postEvent(\"web_app_setup_main_button\", {\n is_visible: this.isVisible,\n is_active: this.isEnabled,\n is_progress_visible: this.isLoaderVisible,\n text: this.text,\n color: this.backgroundColor,\n text_color: this.textColor\n });\n }\n set isEnabled(s) {\n this.setParams({ isEnabled: s });\n }\n /**\n * True if the MainButton is enabled.\n */\n get isEnabled() {\n return this.get(\"isEnabled\");\n }\n set isLoaderVisible(s) {\n this.setParams({ isLoaderVisible: s });\n }\n /**\n * True if the MainButton loader is visible.\n */\n get isLoaderVisible() {\n return this.get(\"isLoaderVisible\");\n }\n set isVisible(s) {\n this.setParams({ isVisible: s });\n }\n /**\n * True if the MainButton is visible.\n */\n get isVisible() {\n return this.get(\"isVisible\");\n }\n /**\n * The MainButton background color.\n */\n get backgroundColor() {\n return this.get(\"backgroundColor\");\n }\n /**\n * The MainButton text.\n */\n get text() {\n return this.get(\"text\");\n }\n /**\n * The MainButton text color.\n */\n get textColor() {\n return this.get(\"textColor\");\n }\n /**\n * Disables the MainButton.\n * @see Does not work on Android: https://github.com/Telegram-Mini-Apps/issues/issues/1\n */\n disable() {\n return this.isEnabled = !1, this;\n }\n /**\n * Enables the MainButton.\n */\n enable() {\n return this.isEnabled = !0, this;\n }\n /**\n * Hides the MainButton.\n */\n hide() {\n return this.isVisible = !1, this;\n }\n /**\n * Hides the MainButton loading indicator.\n */\n hideLoader() {\n return this.isLoaderVisible = !1, this;\n }\n /**\n * Shows the MainButton.\n *\n * Note that opening the Mini App from the attachment menu hides the main button until the\n * user interacts with the Mini App interface.\n */\n show() {\n return this.isVisible = !0, this;\n }\n /**\n * Shows a loading indicator on the Main Button.\n */\n showLoader() {\n return this.isLoaderVisible = !0, this;\n }\n /**\n * Sets a new MainButton text. Minimal length for the text is 1 symbol, and maximum is 64 symbols.\n * @param text - a new text.\n */\n setText(s) {\n return this.setParams({ text: s });\n }\n /**\n * Sets a new Main Button text color.\n * @param textColor - new text color.\n */\n setTextColor(s) {\n return this.setParams({ textColor: s });\n }\n /**\n * Updates current Main Button color.\n * @param backgroundColor - color to set.\n */\n setBackgroundColor(s) {\n return this.setParams({ backgroundColor: s });\n }\n /**\n * Allows setting multiple Main Button parameters.\n * @param params - Main Button parameters.\n */\n setParams(s) {\n return this.set(s), this.commit(), this;\n }\n}\nconst ps = l(\n \"mainButton\",\n ({\n postEvent: e,\n themeParams: t,\n state: s = {\n isVisible: !1,\n isEnabled: !1,\n text: \"\",\n isLoaderVisible: !1,\n textColor: t.buttonTextColor || \"#ffffff\",\n backgroundColor: t.buttonColor || \"#000000\"\n }\n }) => new De({ ...s, postEvent: e })\n);\nfunction Ve() {\n return K({\n contact: d({\n userId: {\n type: y(),\n from: \"user_id\"\n },\n phoneNumber: {\n type: h(),\n from: \"phone_number\"\n },\n firstName: {\n type: h(),\n from: \"first_name\"\n },\n lastName: {\n type: h().optional(),\n from: \"last_name\"\n }\n }),\n authDate: {\n type: wt(),\n from: \"auth_date\"\n },\n hash: h()\n }, \"RequestedContact\");\n}\nfunction Tt(e, t) {\n return (s) => {\n const [n, r] = t[s];\n return v(n, r, e);\n };\n}\nfunction $e(e) {\n return new Promise((t) => {\n setTimeout(t, e);\n });\n}\nclass Me extends I {\n constructor({ postEvent: s, createRequestId: n, version: r, botInline: i, ...a }) {\n super(a, r, {\n requestPhoneAccess: \"web_app_request_phone\",\n requestWriteAccess: \"web_app_request_write_access\",\n switchInlineQuery: \"web_app_switch_inline_query\",\n setHeaderColor: \"web_app_set_header_color\",\n setBackgroundColor: \"web_app_set_background_color\"\n });\n c(this, \"botInline\");\n c(this, \"postEvent\");\n c(this, \"createRequestId\");\n c(this, \"requestPhoneAccessPromise\");\n c(this, \"requestWriteAccessPromise\");\n /**\n * Checks if specified method parameter is supported by current component.\n */\n c(this, \"supportsParam\");\n this.createRequestId = n, this.postEvent = s, this.botInline = i;\n const o = this.supports.bind(this);\n this.supports = (p) => o(p) ? p !== \"switchInlineQuery\" || i : !1, this.supportsParam = Tt(r, {\n \"setHeaderColor.color\": [\"web_app_set_header_color\", \"color\"]\n });\n }\n /**\n * Attempts to get requested contact.\n * @param timeout - request timeout.\n */\n async getRequestedContact({\n timeout: s = 1e4\n } = {}) {\n return Ve().parse(\n await C(\n \"getRequestedContact\",\n {},\n this.createRequestId(),\n { postEvent: this.postEvent, timeout: s }\n )\n );\n }\n /**\n * The Mini App background color.\n * @example \"#ffaabb\"\n */\n get bgColor() {\n return this.get(\"bgColor\");\n }\n /**\n * Closes the Mini App.\n */\n close() {\n this.postEvent(\"web_app_close\");\n }\n /**\n * The Mini App header color.\n * @example \"#ffaabb\"\n * @example \"bg_color\"\n */\n get headerColor() {\n return this.get(\"headerColor\");\n }\n /**\n * True if the Mini App is currently launched in bot inline mode.\n */\n get isBotInline() {\n return this.botInline;\n }\n /**\n * True if current Mini App background color is recognized as dark.\n */\n get isDark() {\n return gt(this.bgColor);\n }\n /**\n * Informs the Telegram app that the Mini App is ready to be displayed.\n *\n * It is recommended to call this method as early as possible, as soon as all essential\n * interface elements loaded. Once this method called, the loading placeholder is hidden\n * and the Mini App shown.\n *\n * If the method not called, the placeholder will be hidden only when the page fully loaded.\n */\n ready() {\n this.postEvent(\"web_app_ready\");\n }\n /**\n * Requests current user contact information. In contrary to requestPhoneAccess, this method\n * returns promise with contact information that rejects in case, user denied access, or request\n * failed.\n * @param options - additional options.\n */\n async requestContact({ timeout: s = 5e3 } = {}) {\n try {\n return await this.getRequestedContact();\n } catch {\n }\n if (await this.requestPhoneAccess() !== \"sent\")\n throw new Error(\"Access denied.\");\n const r = Date.now() + s;\n let i = 50;\n return ft(async () => {\n for (; Date.now() < r; ) {\n try {\n return await this.getRequestedContact();\n } catch {\n }\n await $e(i), i += 50;\n }\n throw _t(s);\n }, s);\n }\n /**\n * Requests current user phone access. Method returns promise, which resolves\n * status of the request. In case, user accepted the request, Mini App bot will receive\n * the according notification.\n *\n * To obtain the retrieved information instead, utilize the `requestContact` method.\n * @param options - additional options.\n * @see requestContact\n */\n async requestPhoneAccess(s = {}) {\n return this.requestPhoneAccessPromise || (this.requestPhoneAccessPromise = _({\n ...s,\n method: \"web_app_request_phone\",\n event: \"phone_requested\",\n postEvent: this.postEvent\n }).then(({ status: n }) => n).finally(() => this.requestPhoneAccessPromise = void 0)), this.requestPhoneAccessPromise;\n }\n /**\n * Requests write message access to current user.\n * @param options - additional options.\n */\n async requestWriteAccess(s = {}) {\n return this.requestWriteAccessPromise || (this.requestWriteAccessPromise = _({\n ...s,\n method: \"web_app_request_write_access\",\n event: \"write_access_requested\",\n postEvent: this.postEvent\n }).then(({ status: n }) => n).finally(() => this.requestWriteAccessPromise = void 0)), this.requestWriteAccessPromise;\n }\n /**\n * A method used to send data to the bot. When this method called, a service message sent to\n * the bot containing the data of the length up to 4096 bytes, and the Mini App closed. See the\n * field `web_app_data` in the class [Message](https://core.telegram.org/bots/api#message).\n *\n * This method is only available for Mini Apps launched via a Keyboard button.\n * @param data - data to send to bot.\n * @throws {Error} data has incorrect size.\n */\n sendData(s) {\n const { size: n } = new Blob([s]);\n if (!n || n > 4096)\n throw new Error(`Passed data has incorrect size: ${n}`);\n this.postEvent(\"web_app_data_send\", { data: s });\n }\n /**\n * Updates current Mini App header color.\n *\n * @see No effect on desktop: https://github.com/Telegram-Mini-Apps/tma.js/issues/9\n * @see Works incorrectly in Android: https://github.com/Telegram-Mini-Apps/tma.js/issues/8\n * @param color - color key or RGB color.\n */\n setHeaderColor(s) {\n this.postEvent(\"web_app_set_header_color\", Q(s) ? { color: s } : { color_key: s }), this.set(\"headerColor\", s);\n }\n /**\n * Updates current Mini App background color.\n *\n * @see No effect on desktop: https://github.com/Telegram-Mini-Apps/tma.js/issues/9\n * @see Works incorrectly in Android: https://github.com/Telegram-Mini-Apps/tma.js/issues/8\n * @param color - RGB color.\n */\n setBgColor(s) {\n this.postEvent(\"web_app_set_background_color\", { color: s }), this.set(\"bgColor\", s);\n }\n /**\n * Inserts the bot's username and the specified inline query in the current chat's input field.\n * Query may be empty, in which case only the bot's username will be inserted. The client prompts\n * the user to choose a specific chat, then opens that chat and inserts the bot's username and\n * the specified inline query in the input field.\n * @param text - text which should be inserted in the input after the current bot name. Max\n * length is 256 symbols.\n * @param chatTypes - List of chat types which could be chosen to send the message. Could be\n * empty list.\n */\n switchInlineQuery(s, n = []) {\n if (!this.supports(\"switchInlineQuery\") && !this.isBotInline)\n throw new Error(\"Method is unsupported because Mini App should be launched in inline mode.\");\n this.postEvent(\"web_app_switch_inline_query\", { query: s, chat_types: n });\n }\n}\nconst us = l(\n \"miniApp\",\n ({\n themeParams: e,\n botInline: t = !1,\n state: s = {\n bgColor: e.bgColor || \"#ffffff\",\n headerColor: e.headerBgColor || \"#000000\"\n },\n ...n\n }) => new Me({ ...n, ...s, botInline: t })\n);\nfunction Le(e) {\n const t = e.message.trim(), s = (e.title || \"\").trim(), n = e.buttons || [];\n let r;\n if (s.length > 64)\n throw new Error(`Title has incorrect size: ${s.length}`);\n if (!t.length || t.length > 256)\n throw new Error(`Message has incorrect size: ${t.length}`);\n if (n.length > 3)\n throw new Error(`Buttons have incorrect size: ${n.length}`);\n return n.length ? r = n.map((i) => {\n const { id: a = \"\" } = i;\n if (a.length > 64)\n throw new Error(`Button ID has incorrect size: ${a}`);\n if (!i.type || i.type === \"default\" || i.type === \"destructive\") {\n const o = i.text.trim();\n if (!o.length || o.length > 64) {\n const p = i.type || \"default\";\n throw new Error(`Button text with type \"${p}\" has incorrect size: ${i.text.length}`);\n }\n return { ...i, text: o, id: a };\n }\n return { ...i, id: a };\n }) : r = [{ type: \"close\", id: \"\" }], { title: s, message: t, buttons: r };\n}\nclass Be extends I {\n constructor(t, s, n) {\n super({ isOpened: t }, s, { open: \"web_app_open_popup\" }), this.postEvent = n;\n }\n set isOpened(t) {\n this.set(\"isOpened\", t);\n }\n /**\n * True if the Popup is opened.\n */\n get isOpened() {\n return this.get(\"isOpened\");\n }\n /**\n * A method that shows a native popup described by the `params` argument.\n * Promise will be resolved when popup is closed. Resolved value will have\n * an identifier of pressed button.\n *\n * In case, user clicked outside the popup or clicked top right popup close\n * button, null will be returned.\n *\n * @param options - popup parameters.\n * @throws {Error} Popup is already opened.\n */\n async open(t) {\n if (this.isOpened)\n throw new Error(\"Popup is already opened.\");\n this.isOpened = !0;\n try {\n const { button_id: s = null } = await _({\n event: \"popup_closed\",\n method: \"web_app_open_popup\",\n postEvent: this.postEvent,\n params: Le(t)\n });\n return s;\n } finally {\n this.isOpened = !1;\n }\n }\n}\nconst ls = l(\n ({ postEvent: e, version: t }) => new Be(!1, t, e)\n);\nclass Oe extends I {\n constructor(t, s, n) {\n super({ isOpened: t }, s, {\n close: \"web_app_close_scan_qr_popup\",\n open: \"web_app_open_scan_qr_popup\"\n }), this.postEvent = n;\n }\n /**\n * Closes scanner.\n */\n close() {\n this.postEvent(\"web_app_close_scan_qr_popup\"), this.isOpened = !1;\n }\n set isOpened(t) {\n this.set(\"isOpened\", t);\n }\n /**\n * Returns true in case, QR scanner is currently opened.\n */\n get isOpened() {\n return this.get(\"isOpened\");\n }\n /**\n * Opens scanner with specified title shown to user. Method returns promise\n * with scanned QR content in case, it was scanned. It will contain null in\n * case, scanner was closed.\n * @param text - title to display.\n */\n async open(t) {\n if (this.isOpened)\n throw new Error(\"QR scanner is already opened.\");\n this.isOpened = !0;\n try {\n return (await _({\n method: \"web_app_open_scan_qr_popup\",\n event: [\"qr_text_received\", \"scan_qr_popup_closed\"],\n postEvent: this.postEvent,\n params: { text: t }\n }) || {}).data || null;\n } finally {\n this.isOpened = !1;\n }\n }\n}\nconst ds = l(\n ({ version: e, postEvent: t }) => new Oe(!1, e, t)\n);\nclass Ue extends Z {\n constructor(s, n, r) {\n super({ isVisible: s }, n, {\n show: \"web_app_setup_settings_button\",\n hide: \"web_app_setup_settings_button\"\n });\n /**\n * Adds a new event listener.\n * @param event - event to listen.\n * @param listener - listener to add.\n */\n c(this, \"on\", (s, n) => s === \"click\" ? b(\"settings_button_pressed\", n) : this.state.on(s, n));\n /**\n * Removes the event listener.\n * @param event - event to listen.\n * @param listener - listener to remove.\n */\n c(this, \"off\", (s, n) => s === \"click\" ? L(\"settings_button_pressed\", n) : this.state.off(s, n));\n this.postEvent = r;\n }\n set isVisible(s) {\n this.set(\"isVisible\", s), this.postEvent(\"web_app_setup_settings_button\", { is_visible: s });\n }\n /**\n * True if the SettingsButton is visible.\n */\n get isVisible() {\n return this.get(\"isVisible\");\n }\n /**\n * Hides the SettingsButton.\n */\n hide() {\n this.isVisible = !1;\n }\n /**\n * Shows the SettingsButton.\n */\n show() {\n this.isVisible = !0;\n }\n}\nconst _s = l(\n \"settingsButton\",\n ({\n version: e,\n postEvent: t,\n state: s = { isVisible: !1 }\n }) => new Ue(s.isVisible, e, t)\n);\nfunction It(e) {\n return yt().parse(e);\n}\nclass We extends X {\n /**\n * @since v6.10\n */\n get accentTextColor() {\n return this.get(\"accentTextColor\");\n }\n get bgColor() {\n return this.get(\"bgColor\");\n }\n get buttonColor() {\n return this.get(\"buttonColor\");\n }\n get buttonTextColor() {\n return this.get(\"buttonTextColor\");\n }\n get destructiveTextColor() {\n return this.get(\"destructiveTextColor\");\n }\n /**\n * Returns the copy of the internal state of the current component instance.\n */\n getState() {\n return this.clone();\n }\n /**\n * @since v6.10\n */\n get headerBgColor() {\n return this.get(\"headerBgColor\");\n }\n get hintColor() {\n return this.get(\"hintColor\");\n }\n /**\n * @returns True in case, current color scheme is recognized as dark. This\n * value is calculated according to theme bg color.\n */\n get isDark() {\n return !this.bgColor || gt(this.bgColor);\n }\n get linkColor() {\n return this.get(\"linkColor\");\n }\n get secondaryBgColor() {\n return this.get(\"secondaryBgColor\");\n }\n /**\n * @since v6.10\n */\n get sectionBgColor() {\n return this.get(\"sectionBgColor\");\n }\n /**\n * @since v6.10\n */\n get sectionHeaderTextColor() {\n return this.get(\"sectionHeaderTextColor\");\n }\n /**\n * Starts listening to the external theme changes and applies them.\n * @returns Function to stop listening.\n */\n listen() {\n return b(\"theme_changed\", (t) => {\n this.set(It(t.theme_params));\n });\n }\n /**\n * @since v6.10\n */\n get subtitleTextColor() {\n return this.get(\"subtitleTextColor\");\n }\n get textColor() {\n return this.get(\"textColor\");\n }\n}\nconst fs = l(\n \"themeParams\",\n ({ themeParams: e, state: t = e, addCleanup: s }) => {\n const n = new We(t);\n return s(n.listen()), n;\n }\n);\nfunction gs(e = {}) {\n return _({\n ...e,\n method: \"web_app_request_theme\",\n event: \"theme_changed\"\n }).then(It);\n}\nclass He extends tt {\n constructor(s, n, r) {\n super(s, { readTextFromClipboard: \"web_app_read_text_from_clipboard\" });\n /**\n * Checks if specified method parameter is supported by current component.\n */\n c(this, \"supportsParam\");\n this.version = s, this.createRequestId = n, this.postEvent = r, this.supportsParam = Tt(s, {\n \"openLink.tryInstantView\": [\"web_app_open_link\", \"try_instant_view\"]\n });\n }\n /**\n * Opens a link in an external browser. The Mini App will not be closed.\n *\n * Note that this method can be called only in response to the user\n * interaction with the Mini App interface (e.g. click inside the Mini App\n * or on the main button).\n * @param url - URL to be opened.\n * @param tryInstantView\n */\n openLink(s, n) {\n const r = new URL(s, window.location.href).toString();\n if (!v(\"web_app_open_link\", this.version)) {\n window.open(r, \"_blank\");\n return;\n }\n this.postEvent(\"web_app_open_link\", {\n url: r,\n ...typeof n == \"boolean\" ? { try_instant_view: n } : {}\n });\n }\n /**\n * Opens a Telegram link inside Telegram app. The Mini App will be closed. It expects passing\n * link in full format, with hostname \"t.me\".\n * @param url - URL to be opened.\n * @throws {Error} URL has not allowed hostname.\n */\n openTelegramLink(s) {\n const { hostname: n, pathname: r, search: i } = new URL(s, window.location.href);\n if (n !== \"t.me\")\n throw new Error(`URL has not allowed hostname: ${n}. Only \"t.me\" is allowed`);\n if (!v(\"web_app_open_tg_link\", this.version)) {\n window.location.href = s;\n return;\n }\n this.postEvent(\"web_app_open_tg_link\", { path_full: r + i });\n }\n /**\n * Reads text from clipboard and returns string or null. null is returned\n * in cases:\n * - Value in clipboard is not text\n * - Access to clipboard is not allowed\n */\n async readTextFromClipboard() {\n const s = this.createRequestId(), {\n data: n = null\n } = await _({\n method: \"web_app_read_text_from_clipboard\",\n event: \"clipboard_text_received\",\n postEvent: this.postEvent,\n params: { req_id: s },\n capture: dt(s)\n });\n return n;\n }\n}\nconst bs = l(\n ({ version: e, postEvent: t, createRequestId: s }) => new He(e, s, t)\n);\nasync function qt(e = {}) {\n const {\n is_expanded: t,\n is_state_stable: s,\n ...n\n } = await _({\n ...e,\n method: \"web_app_request_viewport\",\n event: \"viewport_changed\"\n });\n return { ...n, isExpanded: t, isStateStable: s };\n}\nfunction x(e) {\n return e < 0 ? 0 : e;\n}\nclass Ge extends X {\n constructor({ postEvent: s, stableHeight: n, height: r, width: i, isExpanded: a }) {\n super({\n height: x(r),\n isExpanded: a,\n stableHeight: x(n),\n width: x(i)\n });\n c(this, \"postEvent\");\n this.postEvent = s;\n }\n /**\n * Requests viewport information from the Telegram application and updates current Viewport\n * instance.\n * @param options - options to request fresh data.\n */\n async sync(s) {\n const { isStateStable: n, ...r } = await qt(s);\n this.set({\n ...r,\n stableHeight: n ? r.height : this.get(\"stableHeight\")\n });\n }\n /**\n * The current height of the **visible area** of the Mini App.\n *\n * The application can display just the top part of the Mini App, with its lower part remaining\n * outside the screen area. From this position, the user can \"pull\" the Mini App to its\n * maximum height, while the bot can do the same by calling `expand` method. As the position of\n * the Mini App changes, the current height value of the visible area will be updated in real\n * time.\n *\n * Please note that the refresh rate of this value is not sufficient to smoothly follow the\n * lower border of the window. It should not be used to pin interface elements to the bottom\n * of the visible area. It's more appropriate to use the value of the `stableHeight`\n * field for this purpose.\n *\n * @see stableHeight\n */\n get height() {\n return this.get(\"height\");\n }\n /**\n * The height of the visible area of the Mini App in its last stable state.\n *\n * The application can display just the top part of the Mini App, with its lower part remaining\n * outside the screen area. From this position, the user can \"pull\" the Mini App to its\n * maximum height, while the application can do the same by calling `expand` method.\n *\n * Unlike the value of `height`, the value of `stableHeight` does not change as the position\n * of the Mini App changes with user gestures or during animations. The value of `stableHeight`\n * will be updated after all gestures and animations are completed and\n * the Mini App reaches its final size.\n *\n * @see height\n */\n get stableHeight() {\n return this.get(\"stableHeight\");\n }\n /**\n * Starts listening to viewport changes and applies them.\n * @returns Function to stop listening.\n */\n listen() {\n return b(\"viewport_changed\", (s) => {\n const {\n height: n,\n width: r,\n is_expanded: i,\n is_state_stable: a\n } = s, o = x(n);\n this.set({\n height: o,\n isExpanded: i,\n width: x(r),\n ...a ? { stableHeight: o } : {}\n });\n });\n }\n /**\n * True if the Mini App is expanded to the maximum available height. Otherwise, if\n * the Mini App occupies part of the screen and can be expanded to the full height using\n * `expand` method.\n * @see expand\n */\n get isExpanded() {\n return this.get(\"isExpanded\");\n }\n /**\n * Current visible area width.\n */\n get width() {\n return this.get(\"width\");\n }\n /**\n * A method that expands the Mini App to the maximum available height. To find out if the Mini\n * App is expanded to the maximum height, refer to the value of the `isExpanded`.\n * @see isExpanded\n */\n expand() {\n this.postEvent(\"web_app_expand\"), this.set(\"isExpanded\", !0);\n }\n /**\n * True if the current viewport height is stable and is not going to change in the next moment.\n */\n get isStable() {\n return this.stableHeight === this.height;\n }\n}\nconst ws = l(\n \"viewport\",\n async ({ state: e, platform: t, postEvent: s, addCleanup: n }) => {\n let r = !1, i = 0, a = 0, o = 0;\n if (e)\n r = e.isExpanded, i = e.height, a = e.width, o = e.stableHeight;\n else if ([\"macos\", \"tdesktop\", \"unigram\", \"webk\", \"weba\", \"web\"].includes(t))\n r = !0, i = window.innerHeight, a = window.innerWidth, o = window.innerHeight;\n else {\n const u = await qt({ timeout: 1e3, postEvent: s });\n r = u.isExpanded, i = u.height, a = u.width, o = u.isStateStable ? i : 0;\n }\n const p = new Ge({\n postEvent: s,\n height: i,\n width: a,\n stableHeight: o,\n isExpanded: r\n });\n return n(p.listen()), p;\n }\n);\nfunction m(e, t) {\n document.documentElement.style.setProperty(e, t);\n}\nfunction ms(e, t, s) {\n s || (s = (o) => `--tg-${o}-color`);\n const n = s(\"header\"), r = s(\"bg\"), i = () => {\n const { headerColor: o } = e;\n if (Q(o))\n m(n, o);\n else {\n const { bgColor: p, secondaryBgColor: u } = t;\n o === \"bg_color\" && p ? m(n, p) : o === \"secondary_bg_color\" && u && m(n, u);\n }\n m(r, e.bgColor);\n }, a = [\n t.on(\"change\", i),\n e.on(\"change\", i)\n ];\n return i(), () => a.forEach((o) => o());\n}\nfunction ys(e, t) {\n t || (t = (n) => `--tg-theme-${n.replace(/[A-Z]/g, (r) => `-${r.toLowerCase()}`)}`);\n const s = () => {\n Object.entries(e.getState()).forEach(([n, r]) => {\n r && m(t(n), r);\n });\n };\n return s(), e.on(\"change\", s);\n}\nfunction vs(e, t) {\n t || (t = (u) => `--tg-viewport-${u}`);\n const [\n s,\n n,\n r\n ] = [\"height\", \"width\", \"stable-height\"].map((u) => t(u)), i = () => m(s, `${e.height}px`), a = () => m(n, `${e.width}px`), o = () => m(r, `${e.stableHeight}px`), p = [\n e.on(\"change:height\", i),\n e.on(\"change:width\", a),\n e.on(\"change:stableHeight\", o)\n ];\n return i(), a(), o(), () => p.forEach((u) => u());\n}\nfunction Es(e = !0) {\n const t = [\n b(\"reload_iframe\", () => {\n R(\"iframe_will_reload\"), window.location.reload();\n })\n ], s = () => t.forEach((n) => n());\n if (e) {\n const n = document.createElement(\"style\");\n n.id = \"telegram-custom-styles\", document.head.appendChild(n), t.push(\n b(\"set_custom_style\", (r) => {\n n.innerHTML = r;\n }),\n () => document.head.removeChild(n)\n );\n }\n return R(\"iframe_ready\", { reload_supported: !0 }), s;\n}\nfunction Ps() {\n return typeof window > \"u\";\n}\nasync function xs() {\n if (ut(window))\n return !0;\n try {\n return await _({ method: \"web_app_request_theme\", event: \"theme_changed\", timeout: 100 }), !0;\n } catch {\n return !1;\n }\n}\nfunction je(e) {\n return e instanceof V;\n}\nfunction Cs(e, t) {\n return je(e) && e.type === t;\n}\nfunction B(e, t) {\n let s, n, r;\n return typeof e == \"string\" ? s = e : (s = e.pathname === void 0 ? t : e.pathname, n = e.params, r = e.id), Object.freeze({\n id: r || (Math.random() * 2 ** 14 | 0).toString(16),\n pathname: s,\n params: n\n });\n}\nclass ze {\n constructor(t, s, n = R) {\n /**\n * Navigation history.\n */\n c(this, \"history\");\n c(this, \"ee\", new D());\n /**\n * True, if current navigator is currently attached.\n */\n c(this, \"attached\", !1);\n /**\n * Goes to the previous history item.\n */\n c(this, \"back\", () => this.go(-1));\n /**\n * Adds new event listener.\n */\n c(this, \"on\", this.ee.on.bind(this.ee));\n /**\n * Removes event listener.\n */\n c(this, \"off\", this.ee.off.bind(this.ee));\n if (this._index = s, this.postEvent = n, t.length === 0)\n throw f(jt, \"History should not be empty.\");\n if (s < 0 || s >= t.length)\n throw f(\n zt,\n \"Index should not be zero and higher or equal than history size.\"\n );\n this.history = t.map((r) => B(r, \"\"));\n }\n /**\n * Allows this navigator to control the `BackButton` visibility state. It also tracks the\n * `BackButton` clicks and calls the `back` method.\n */\n attach() {\n this.attached || (this.attached = !0, this.sync(), b(\"back_button_pressed\", this.back));\n }\n /**\n * Currently active history item.\n */\n get current() {\n return this.history[this.index];\n }\n /**\n * Prevents current navigator from controlling the BackButton visibility state.\n */\n detach() {\n this.attached = !1, L(\"back_button_pressed\", this.back);\n }\n /**\n * Goes to the next history item.\n */\n forward() {\n this.go(1);\n }\n /**\n * Changes currently active history item index by the specified delta. This method doesn't\n * change index in case, the updated index points to the non-existing history item. This behavior\n * is preserved until the `fit` argument is specified.\n * @param delta - index delta.\n * @param fit - cuts the delta argument to fit the bounds `[0, history.length - 1]`.\n */\n go(t, s) {\n const n = this.index + t, r = Math.min(\n Math.max(0, n),\n this.history.length - 1\n );\n (n === r || s) && this.replaceAndMove(r, this.history[r]);\n }\n /**\n * Goes to the specified index. Method does nothing in case, passed index is out of bounds.\n *\n * If \"fit\" option was specified and index is out of bounds, it will be cut to the nearest\n * bound.\n * @param index - target index.\n * @param fit - cuts the index argument to fit the bounds `[0, history.length - 1]`.\n */\n goTo(t, s) {\n this.go(t - this.index, s);\n }\n /**\n * True if navigator has items before the current item.\n */\n get hasPrev() {\n return this.index > 0;\n }\n /**\n * True if navigator has items after the current item.\n */\n get hasNext() {\n return this.index !== this.history.length - 1;\n }\n /**\n * Currently active history item index.\n */\n get index() {\n return this._index;\n }\n /**\n * Adds a new history item removing all after the current one.\n * @param item - item to add.\n */\n push(t) {\n this.hasNext && this.history.splice(this.index + 1), this.replaceAndMove(this.index + 1, B(t, this.current.pathname));\n }\n /**\n * Replaces the current history item.\n * @param item - item to replace the current item with.\n */\n replace(t) {\n this.replaceAndMove(this.index, B(t, this.current.pathname));\n }\n /**\n * Sets history item by the specified index.\n * @param index - history item index to replace.\n * @param historyItem - history item to set.\n */\n replaceAndMove(t, s) {\n const n = t - this.index;\n if (!n && this.current === s)\n return;\n const r = this.current;\n if (this.index !== t) {\n const i = this._index;\n this._index = t, this.attached && i > 0 != t > 0 && this.sync();\n }\n this.history[t] = s, this.ee.emit(\"change\", {\n navigator: this,\n from: r,\n to: this.current,\n delta: n\n });\n }\n /**\n * Actualizes the `BackButton` visibility state.\n */\n sync() {\n this.postEvent(\"web_app_setup_back_button\", { is_visible: !!this.index });\n }\n}\nfunction O({\n params: e,\n ...t\n}) {\n return { ...e || { hash: \"\", search: \"\" }, ...t };\n}\nfunction A(e, t) {\n return e.startsWith(t) ? e : `${t}${e}`;\n}\nfunction k(e) {\n return new URL(\n typeof e == \"string\" ? e : `${e.pathname || \"\"}${A(e.search || \"\", \"?\")}${A(e.hash || \"\", \"#\")}`,\n \"http://a\"\n );\n}\nfunction N(e) {\n const t = typeof e == \"string\" ? e.startsWith(\"/\") : !!(e.pathname && e.pathname.startsWith(\"/\")), s = k(e);\n return `${t ? s.pathname : s.pathname.slice(1)}${s.search}${s.hash}`;\n}\nfunction U(e, t, s) {\n let n, r;\n typeof e == \"string\" ? n = e : (n = N(e), s = e.state, r = e.id);\n const { pathname: i, search: a, hash: o } = new URL(n, `http://a${A(t, \"/\")}`);\n return { id: r, pathname: i, params: { hash: o, search: a, state: s } };\n}\nasync function S(e) {\n return e === 0 ? !0 : Promise.race([\n new Promise((t) => {\n const s = j(\"popstate\", () => {\n s(), t(!0);\n });\n window.history.go(e);\n }),\n // Usually, it takes about 1ms to emit this event, but we use some buffer.\n new Promise((t) => {\n setTimeout(t, 50, !1);\n })\n ]);\n}\nasync function Fe() {\n if (window.history.length <= 1 || (window.history.pushState(null, \"\"), await S(1 - window.history.length)))\n return;\n let t = await S(-1);\n for (; t; )\n t = await S(-1);\n}\nfunction kt(e) {\n return k(e).pathname;\n}\nconst rt = 0, W = 1, H = 2;\nclass Nt {\n constructor(t, s, { postEvent: n, hashMode: r = \"classic\", base: i } = {}) {\n c(this, \"navigator\");\n c(this, \"ee\", new D());\n c(this, \"hashMode\");\n c(this, \"base\");\n /**\n * Shows whether the navigator is currently attached to the browser history.\n */\n c(this, \"attached\", !1);\n /**\n * Handles the window \"popstate\" event.\n * @param state - event state.\n */\n c(this, \"onPopState\", ({ state: t }) => {\n if (t === null)\n return this.push(this.parsePath(window.location.href));\n t === rt ? window.history.forward() : t === W && this.back(), t === H && this.forward();\n });\n /**\n * Underlying navigator change event listener.\n */\n c(this, \"onNavigatorChange\", async ({\n to: t,\n from: s,\n delta: n\n }) => {\n this.attached && await this.syncHistory(), this.ee.emit(\"change\", {\n delta: n,\n from: O(s),\n to: O(t),\n navigator: this\n });\n });\n /**\n * Adds new event listener.\n */\n c(this, \"on\", this.ee.on.bind(this.ee));\n /**\n * Removes event listener.\n */\n c(this, \"off\", this.ee.off.bind(this.ee));\n this.navigator = new ze(\n t.map((a) => U(a, \"/\")),\n s,\n n\n ), this.navigator.on(\"change\", this.onNavigatorChange), this.hashMode = r, this.base = kt(i || \"\");\n }\n /**\n * Attaches current navigator to the browser history allowing navigator to manipulate it.\n */\n async attach() {\n this.attached || (this.attached = !0, this.navigator.attach(), window.addEventListener(\"popstate\", this.onPopState), await this.syncHistory());\n }\n /**\n * Goes back in history by 1.\n */\n back() {\n this.navigator.back();\n }\n /**\n * Detaches current navigator from the browser history.\n */\n detach() {\n this.attached = !1, this.navigator.detach(), window.removeEventListener(\"popstate\", this.onPopState);\n }\n /**\n * Goes forward in history.\n */\n forward() {\n return this.navigator.forward();\n }\n /**\n * Current history cursor.\n */\n get index() {\n return this.navigator.index;\n }\n /**\n * Current history item identifier.\n */\n get id() {\n return this.navigator.current.id;\n }\n /**\n * Changes currently active history item index by the specified delta. This method doesn't\n * change index in case, the updated index points to the non-existing history item. This behavior\n * is preserved until the `fit` argument is specified.\n * @param delta - index delta.\n * @param fit - cuts the delta argument to fit the bounds `[0, history.length - 1]`.\n */\n go(t, s) {\n return this.navigator.go(t, s);\n }\n /**\n * Goes to the specified index. Method does nothing in case, passed index is out of bounds.\n *\n * If \"fit\" option was specified and index is out of bounds, it will be cut to the nearest\n * bound.\n * @param index - target index.\n * @param fit - cuts the index argument to fit the bounds `[0, history.length - 1]`.\n */\n goTo(t, s) {\n this.navigator.goTo(t, s);\n }\n /**\n * Current history item hash.\n * @see URL.hash\n * @example\n * \"\", \"#my-hash\"\n */\n get hash() {\n return (this.navigator.current.params || {}).hash || \"\";\n }\n /**\n * True if navigator has items before the current item.\n */\n get hasPrev() {\n return this.navigator.hasPrev;\n }\n /**\n * True if navigator has items after the current item.\n */\n get hasNext() {\n return this.navigator.hasNext;\n }\n /**\n * Navigation history.\n */\n get history() {\n return this.navigator.history.map(O);\n }\n /**\n * Path, including pathname, search and hash.\n * @example Pathname only.\n * \"/pathname\"\n * @example Pathname + search.\n * \"/pathname?search\"\n * @example Pathname + hash.\n * \"/pathname#hash\"\n * @example Pathname + search + hash.\n * \"/pathname?search#hash\"\n */\n get path() {\n return N(this);\n }\n /**\n * Current pathname. Always starts with the slash.\n * @see URL.pathname\n * @example\n * \"/\", \"/abc\"\n */\n get pathname() {\n return this.navigator.current.pathname;\n }\n /**\n * Depending on the current navigation type, parses incoming path and returns it presented as\n * an object. In other words, this method parses the passed path and returns object, describing\n * how the navigator \"sees\" it.\n *\n * @example Hash mode is omitted.\n * parsePath('/abc?a=1#hash');\n * // { pathname: '/abc', search: '?a=1', hash: '#hash' }\n * parsePath('http://example.com/abc?a=1#hash');\n * // { pathname: '/abc', search: '?a=1', hash: '#hash' }\n *\n * @example Hash mode is enabled.\n * parsePath('/abc?a=1#tma?is=cool#yeah');\n * // { pathname: '/tma', search: '?is=cool', hash: '#yeah' }\n * parsePath('http://example.com/abc?a=1#tma?is=cool#yeah');\n * // { pathname: '/tma', search: '?is=cool', hash: '#yeah' }\n */\n parsePath(t) {\n let s = k(t);\n return this.hashMode && (s = k(s.hash.slice(1))), {\n pathname: s.pathname,\n search: s.search,\n hash: s.hash\n };\n }\n push(t, s) {\n const n = U(t, this.path), { state: r = s } = n.params;\n this.navigator.push({ ...n, params: { ...n.params, state: r } });\n }\n replace(t, s) {\n const n = U(t, this.path), { state: r = s } = n.params;\n this.navigator.replace({ ...n, params: { ...n.params, state: r } });\n }\n /**\n * Combines the navigator `base` property with the passed path data applying the navigator\n * navigation mode.\n * @param value - path presented as string or URLLike.\n */\n renderPath(t) {\n const s = (this.base.length === 1 ? \"\" : this.base) + A(N(t), \"/\");\n return this.hashMode ? A(s.slice(1), this.hashMode === \"classic\" ? \"#\" : \"#/\") : s;\n }\n /**\n * Synchronizes current navigator state with browser history.\n */\n async syncHistory() {\n window.removeEventListener(\"popstate\", this.onPopState);\n const { state: t } = this, s = this.renderPath(this);\n await Fe(), this.hasPrev && this.hasNext ? (window.history.replaceState(W, \"\"), window.history.pushState(t, \"\", s), window.history.pushState(H, \"\"), await S(-1)) : this.hasPrev ? (window.history.replaceState(W, \"\"), window.history.pushState(t, \"\", s)) : this.hasNext ? (window.history.replaceState(t, s), window.history.pushState(H, \"\"), await S(-1)) : (window.history.replaceState(rt, \"\"), window.history.pushState(t, \"\", s)), window.addEventListener(\"popstate\", this.onPopState);\n }\n /**\n * Current query parameters.\n * @see URL.search\n * @example\n * \"\", \"?\", \"?a=1\"\n */\n get search() {\n return (this.navigator.current.params || {}).search || \"\";\n }\n /**\n * Current history item state.\n */\n get state() {\n return (this.navigator.current.params || {}).state;\n }\n}\nfunction Je(e) {\n e || (e = {});\n const { href: t, hash: s } = window.location;\n let n = N(\n e.hashMode === null ? t : s.includes(\"?\") ? s.slice(1) : `?${s.slice(1)}`\n );\n const r = e.base ? kt(e.base) : void 0;\n if (r) {\n if (!n.startsWith(r))\n throw f(\n Ft,\n `Path \"${n}\" expected to be starting with \"${r}\"`\n );\n n = n.slice(r.length);\n }\n return new Nt([n], 0, e);\n}\nfunction Ss(e) {\n const t = e.match(/#(.+)/);\n return t ? t[1] : null;\n}\nfunction Qe(e, t) {\n if (Rt()) {\n const s = sessionStorage.getItem(e);\n if (s)\n try {\n const { index: n, history: r } = JSON.parse(s);\n return new Nt(r, n, t);\n } catch (n) {\n console.error(\"Unable to restore hash navigator state.\", n);\n }\n }\n return Je(t);\n}\nfunction Rs(e, t) {\n const s = Qe(e, t), n = () => sessionStorage.setItem(e, JSON.stringify({\n index: s.index,\n history: s.history\n }));\n return s.on(\"change\", n), n(), s;\n}\nexport {\n pe as BackButton,\n ze as BasicNavigator,\n xe as BiometryManager,\n Nt as BrowserNavigator,\n Se as ClosingBehavior,\n Ie as CloudStorage,\n Ft as ERR_INVALID_PATH_BASE,\n Wt as ERR_INVOKE_CUSTOM_METHOD_RESPONSE,\n Ot as ERR_METHOD_PARAMETER_UNSUPPORTED,\n Bt as ERR_METHOD_UNSUPPORTED,\n jt as ERR_NAVIGATION_HISTORY_EMPTY,\n zt as ERR_NAVIGATION_INDEX_INVALID,\n Ke as ERR_NAVIGATION_ITEM_INVALID,\n at as ERR_PARSE,\n Xe as ERR_SSR_INIT,\n Ht as ERR_TIMED_OUT,\n Gt as ERR_UNEXPECTED_TYPE,\n Ut as ERR_UNKNOWN_ENV,\n D as EventEmitter,\n qe as HapticFeedback,\n ke as InitData,\n Ne as Invoice,\n De as MainButton,\n Me as MiniApp,\n Be as Popup,\n Oe as QRScanner,\n V as SDKError,\n Ue as SettingsButton,\n We as ThemeParams,\n He as Utils,\n Ge as Viewport,\n Te as array,\n ms as bindMiniAppCSSVars,\n ys as bindThemeParamsCSSVars,\n vs as bindViewportCSSVars,\n w as boolean,\n dt as captureSameReq,\n z as classNames,\n re as compareVersions,\n Je as createBrowserNavigatorFromLocation,\n ce as createPostEvent,\n k as createSafeURL,\n wt as date,\n Ss as getHash,\n kt as getPathname,\n ss as initBackButton,\n ns as initBiometryManager,\n rs as initClosingBehavior,\n is as initCloudStorage,\n os as initHapticFeedback,\n as as initInitData,\n hs as initInvoice,\n ps as initMainButton,\n us as initMiniApp,\n Rs as initNavigator,\n ls as initPopup,\n ds as initQRScanner,\n _s as initSettingsButton,\n fs as initThemeParams,\n bs as initUtils,\n ws as initViewport,\n Es as initWeb,\n C as invokeCustomMethod,\n gt as isColorDark,\n oe as isIframe,\n Rt as isPageReload,\n Q as isRGB,\n Jt as isRGBShort,\n je as isSDKError,\n Cs as isSDKErrorOfType,\n Ps as isSSR,\n xs as isTMA,\n d as json,\n es as mergeClassNames,\n y as number,\n L as off,\n b as on,\n cs as parseInitData,\n vt as parseLaunchParams,\n It as parseThemeParams,\n R as postEvent,\n _ as request,\n Ce as requestBiometryInfo,\n gs as requestThemeParams,\n qt as requestViewport,\n ye as retrieveLaunchParams,\n pt as rgb,\n K as searchParams,\n we as serializeLaunchParams,\n be as serializeThemeParams,\n m as setCSSVar,\n Ze as setDebug,\n ts as setTargetOrigin,\n h as string,\n $t as subscribe,\n v as supports,\n ae as targetOrigin,\n ht as toRGB,\n ot as unsubscribe,\n N as urlToPath,\n ft as withTimeout\n};\n//# sourceMappingURL=index.js.map\n","import type { ComponentType } from 'react';\nimport type { PartialBy } from '@tma.js/sdk';\n\nimport type { HookRaw, HookResult } from './createHooks.js';\n\nexport interface HOC<Hook extends HookRaw<any> | HookResult<any>> {\n /**\n * Returns a component which is a HOC, passing some hook result to the wrapped component.\n * @param propKey - key, which will be used to pass a hook result.\n * @param optionsKey - key, containing hook arguments.\n * @param Component - component to wrap.\n */\n <\n PropKey extends string,\n OptionsKey extends string,\n Props extends { [K in OptionsKey]?: Parameters<Hook> } & { [K in PropKey]?: ReturnType<Hook> }\n >(\n propKey: PropKey,\n optionsKey: OptionsKey,\n Component: ComponentType<Props>,\n ): ComponentType<PartialBy<Props, PropKey | OptionsKey>>;\n}\n\nexport type HOCs<HRaw extends HookRaw<any>, HResult extends HookResult<any>> = [\n HOC<HRaw>,\n HOC<HResult>\n];\n\n/**\n * Based on the passed hook, creates function returning HOC. Created HOC passes hook result\n * to the wrapped component.\n * @param useRaw - hook, returning a raw SDK item.\n * @param useResult - hook, returning an SDK item with the result.\n */\nexport function createHOCs<HRaw extends HookRaw<any>, HResult extends HookResult<any>>(\n useRaw: HRaw,\n useResult: HResult,\n): HOCs<HRaw, HResult> {\n function createHOC<Hook extends HookRaw<any> | HookResult<any>>(\n hook: Hook,\n ): HOC<Hook> {\n return <\n PropKey extends string,\n OptionsKey extends string,\n Props extends { [K in OptionsKey]?: Parameters<Hook> } & { [K in PropKey]?: ReturnType<Hook> }\n >(\n propKey: PropKey,\n optionsKey: OptionsKey,\n Component: ComponentType<Props>,\n ): ComponentType<PartialBy<Props, PropKey | OptionsKey>> => {\n return (props: PartialBy<Props, PropKey | OptionsKey>) => {\n const options: [] = props[optionsKey] || [];\n const merged: any = { ...props, [propKey]: hook(...options) };\n\n return <Component {...merged}/>;\n };\n };\n }\n\n return [createHOC(useRaw), createHOC(useResult)];\n}\n","import { createContext, useContext } from 'react';\n\nimport type { SDKContextType } from './SDKProvider.types.js';\n\nexport const SDKContext = createContext<SDKContextType | undefined>(undefined);\n\n/**\n * @throws Error useSDK was used outside SDKProvider.\n * @returns SDK context.\n */\nexport function useSDK(): SDKContextType {\n const context = useContext(SDKContext);\n if (!context) {\n throw new Error('useSDK was used outside the SDKProvider.');\n }\n return context;\n}\n","import { type CleanupFn, isSSR, type AnyFn } from '@tma.js/sdk';\nimport { useEffect, useState } from 'react';\n\nimport { useSDK } from './SDKProvider/SDKContext.js';\nimport type { SDKContextItem } from './SDKProvider/SDKProvider.types.js';\n\ntype ExtractResult<T> = T extends [result: infer R, cleanup: CleanupFn]\n ? ExtractResult<R>\n : T extends Promise<infer U>\n ? U | undefined\n : T;\n\ntype HookFnResult<Fn extends AnyFn> = ExtractResult<ReturnType<Fn>>;\n\ninterface Hook<Result> {\n (ssr?: false): Result;\n (ssr: true): Result | undefined;\n}\n\nexport interface HookRaw<Factory extends AnyFn>\n extends Hook<SDKContextItem<HookFnResult<Factory>>> {\n}\n\nexport interface HookResult<Factory extends AnyFn> extends Hook<HookFnResult<Factory>> {\n}\n\nexport type Hooks<Factory extends AnyFn> = [\n useRaw: HookRaw<Factory>,\n useResult: HookResult<Factory>,\n];\n\n/**\n * @returns Hooks, simplifying work process with the SDK components.\n */\nexport function createHooks<Factory extends AnyFn>(factory: Factory): Hooks<Factory> {\n function useRaw(ssr?: false): SDKContextItem<HookFnResult<Factory>>;\n function useRaw(ssr: true): SDKContextItem<HookFnResult<Factory>> | undefined;\n function useRaw(ssr?: boolean): SDKContextItem<HookFnResult<Factory>> | undefined {\n const sdk = useSDK();\n\n const [result, setResult] = useState<SDKContextItem<HookFnResult<Factory>> | undefined>(\n ssr\n // If SSR mode is enabled, we have no initial value. In this case we will set something\n // only in useEffect.\n ? undefined\n // Otherwise, we are retrieving this factory result.\n : () => {\n if (isSSR()) {\n throw new Error('Using hooks on the server side, you must explicitly specify ssr = true option');\n }\n return sdk.use(factory);\n },\n );\n\n // Each time sdk context changes, we are updating the local value.\n useEffect(() => {\n setResult(sdk.use(factory));\n }, [sdk]);\n\n return result;\n }\n\n function useResult(ssr?: false): HookFnResult<Factory>;\n function useResult(ssr: true): HookFnResult<Factory> | undefined;\n function useResult(ssr?: boolean): HookFnResult<Factory> | undefined {\n const raw = useRaw(ssr as any);\n if (!raw) {\n return;\n }\n if ('error' in raw) {\n throw raw.error;\n }\n return raw.result;\n }\n\n return [useRaw, useResult];\n}\n","import { initBackButton } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useBackButtonRaw, useBackButton] = createHooks(initBackButton);\n\nexport const [withBackButtonRaw, withBackButton] = createHOCs(\n useBackButtonRaw,\n useBackButton,\n);\n","import { initBiometryManager } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useBiometryManagerRaw, useBiometryManager] = createHooks(initBiometryManager);\n\nexport const [withBiometryManagerRaw, withBiometryManager] = createHOCs(\n useBiometryManagerRaw,\n useBiometryManager,\n);\n","import { initClosingBehavior } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useClosingBehaviorRaw, useClosingBehavior] = createHooks(initClosingBehavior);\n\nexport const [withClosingBehaviorRaw, withClosingBehavior] = createHOCs(\n useClosingBehaviorRaw,\n useClosingBehavior,\n);\n","import { initCloudStorage } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useCloudStorageRaw, useCloudStorage] = createHooks(initCloudStorage);\n\nexport const [withCloudStorageRaw, withCloudStorage] = createHOCs(\n useCloudStorageRaw,\n useCloudStorage,\n);\n","import { initHapticFeedback } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useHapticFeedbackRaw, useHapticFeedback] = createHooks(initHapticFeedback);\n\nexport const [withHapticFeedbackRaw, withHapticFeedback] = createHOCs(\n useHapticFeedbackRaw,\n useHapticFeedback,\n);\n","import { initInitData } from '@tma.js/sdk';\n\nimport { createHooks } from '../createHooks.js';\nimport { createHOCs } from '../createHOCs.js';\n\nexport const [useInitDataRaw, useInitData] = createHooks(initInitData);\n\nexport const [withInitDataRaw, withInitData] = createHOCs(useInitDataRaw, useInitData);\n","import { initInvoice } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useInvoiceRaw, useInvoice] = createHooks(initInvoice);\n\nexport const [withInvoiceRaw, withInvoice] = createHOCs(useInvoiceRaw, useInvoice);\n","import { initMainButton } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useMainButtonRaw, useMainButton] = createHooks(initMainButton);\n\nexport const [withMainButtonRaw, withMainButton] = createHOCs(useMainButtonRaw, useMainButton);\n","import { initMiniApp } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useMiniAppRaw, useMiniApp] = createHooks(initMiniApp);\n\nexport const [withMiniAppRaw, withMiniApp] = createHOCs(useMiniAppRaw, useMiniApp);\n","import { initPopup } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [usePopupRaw, usePopup] = createHooks(initPopup);\n\nexport const [withPopupRaw, withPopup] = createHOCs(usePopupRaw, usePopup);\n","import { initQRScanner } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useQRScannerRaw, useQRScanner] = createHooks(initQRScanner);\n\nexport const [withQRScannerRaw, withQRScanner] = createHOCs(useQRScannerRaw, useQRScanner);\n","import { initSettingsButton } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useSettingsButtonRaw, useSettingsButton] = createHooks(initSettingsButton);\n\nexport const [withSettingsButtonRaw, withSettingsButton] = createHOCs(\n useSettingsButtonRaw,\n useSettingsButton,\n);\n","import { initThemeParams } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useThemeParamsRaw, useThemeParams] = createHooks(initThemeParams);\n\nexport const [withThemeParamsRaw, withThemeParams] = createHOCs(useThemeParamsRaw, useThemeParams);\n","import { useMemo } from 'react';\nimport { type LaunchParams, retrieveLaunchParams } from '@tma.js/sdk';\n\n/**\n * @returns Launch parameters.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}","import { initUtils } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useUtilsRaw, useUtils] = createHooks(initUtils);\n\nexport const [withUtilsRaw, withUtils] = createHOCs(useUtilsRaw, useUtils);\n","import { initViewport } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useViewportRaw, useViewport] = createHooks(initViewport);\n\nexport const [withViewportRaw, withViewport] = createHOCs(useViewportRaw, useViewport);\n","import { CleanupFn, initWeb, isIframe, setDebug } from '@tma.js/sdk';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { AnyFn } from '@tma.js/sdk';\n\nimport { SDKContext } from './SDKContext.js';\nimport {\n SDKContextType,\n SDKProviderProps,\n SDKContextItem,\n} from './SDKProvider.types.js';\n\n/**\n * Provides access to the SDK components and initializes some event listeners for the web version\n * of Telegram.\n */\nexport function SDKProvider({ children, acceptCustomStyles, debug }: SDKProviderProps) {\n // We need it to safely call state setters as long as React forbids these\n // operations on unmounted components.\n const isMountedRef = useRef(true);\n\n // Map, containing all registered factories results.\n const [cache, setCache] = useState(new Map<AnyFn, SDKContextItem<any>>());\n const cacheRef = useRef(cache);\n\n // Safely mutates cache with specified function.\n const mutateCache = useCallback(\n (mutate?: (state: Map<AnyFn, SDKContextItem<any>>) => void) => {\n if (isMountedRef.current) {\n setCache(c => {\n mutate && mutate(c);\n return new Map(c);\n });\n }\n }, [],\n );\n\n const context = useMemo<SDKContextType>(() => ({\n use(factory, ...args) {\n // Try to get a cached value.\n const cached = cache.get(factory);\n if (cached) {\n return cached;\n }\n\n // Call factory and retrieve result.\n let result: any;\n let error: any;\n try {\n result = factory(...args);\n } catch (err) {\n error = err;\n }\n\n function withCacheSet(item: SDKContextItem<any>): SDKContextItem<any> {\n cache.set(factory, item);\n return item;\n }\n\n // If an error occurred, return it.\n if (error) {\n return withCacheSet({ error });\n }\n\n // Result may represent a tuple, where a result is placed on the first place, and\n // a cleanup function on the second one.\n let cleanup: CleanupFn | undefined;\n if (Array.isArray(result)) {\n cleanup = result[1];\n result = result[0];\n }\n\n // We may have a case, when result is empty (most likely undefined), for example, when\n // we initialize InitData. In this case we just return the result.\n if (!result) {\n return withCacheSet({ result, cleanup });\n }\n\n // Adds change event listener to the value if required, and adds bound listener to the\n // cleanup function.\n function finalize(v: any): SDKContextItem<any> {\n if ('on' in v) {\n // Forcefully refresh cache in case, something in this value changed.\n const off = v.on('change', () => mutateCache());\n const cleanupOriginal = cleanup;\n cleanup = () => {\n cleanupOriginal && cleanupOriginal();\n off();\n };\n }\n return { result: v, cleanup };\n }\n\n if (result instanceof Promise) {\n result.then(\n (value: any) => mutateCache(c => c.set(factory, finalize(value))),\n (error: any) => mutateCache(c => c.set(factory, { error })),\n );\n return withCacheSet({});\n }\n return withCacheSet(finalize(result));\n },\n }), [cache]);\n\n // Effect, responsible for changing mount state.\n useEffect(() => {\n // An idiotic line for React's StrictMode.\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n // Effect, responsible for initializing the app in the web version of Telegram.\n useEffect(() => {\n if (isIframe()) {\n return initWeb(acceptCustomStyles);\n }\n }, [acceptCustomStyles]);\n\n // Effect, responsible for debug mode.\n useEffect(() => {\n setDebug(debug || false);\n }, [debug]);\n\n // Every time cache changes, we should actualize the ref to it. It is used in the next\n // effect.\n useEffect(() => {\n cacheRef.current = cache;\n }, [cache]);\n\n // Effect, responsible for removing all components \"change\" listeners.\n useEffect(() => {\n return () => {\n cacheRef.current.forEach(v => {\n 'cleanup' in v && v.cleanup && v.cleanup();\n });\n };\n }, []);\n\n return <SDKContext.Provider value={context}>{children}</SDKContext.Provider>;\n}\n"],"names":["Dt","Vt","it","ot","M","ne","$t","Mt","r","i","F","G","et","Ze","Lt","D","j","V","f","Bt","Ot","Ut","Wt","Ht","Gt","at","jt","zt","Ke","Xe","Ft","E","$","P","w","ct","J","y","Q","Jt","ht","h","pt","Qt","Yt","Zt","Kt","Xt","te","ee","se","L","b","T","re","g","v","ie","ut","oe","lt","ts","ae","R","ce","dt","_t","ft","u","q","C","z","es","gt","he","a","Y","bt","Z","s","n","pe","wt","K","ue","st","mt","le","de","yt","vt","Et","_e","Pt","fe","xt","Ct","St","ge","be","we","me","ye","Rt","ve","Ee","Pe","l","ss","I","At","xe","Ce","ns","X","Se","rs","tt","Re","Ae","Te","nt","Ie","is","qe","os","ke","as","cs","Ne","hs","De","ps","Ve","Tt","$e","Me","o","p","us","Le","ls","Oe","ds","Ue","_s","It","We","fs","gs","He","bs","qt","x","Ge","ws","m","ms","ys","vs","Es","Ps","xs","je","Cs","B","O","A","k","N","U","S","Fe","t","kt","rt","W","H","Nt","Je","Ss","Qe","Rs","createHOCs","useRaw","useResult","createHOC","hook","propKey","optionsKey","Component","props","options","merged","jsx","SDKContext","createContext","useSDK","context","useContext","createHooks","factory","ssr","sdk","result","setResult","useState","isSSR","useEffect","raw","useBackButtonRaw","useBackButton","initBackButton","withBackButtonRaw","withBackButton","useBiometryManagerRaw","useBiometryManager","initBiometryManager","withBiometryManagerRaw","withBiometryManager","useClosingBehaviorRaw","useClosingBehavior","initClosingBehavior","withClosingBehaviorRaw","withClosingBehavior","useCloudStorageRaw","useCloudStorage","initCloudStorage","withCloudStorageRaw","withCloudStorage","useHapticFeedbackRaw","useHapticFeedback","initHapticFeedback","withHapticFeedbackRaw","withHapticFeedback","useInitDataRaw","useInitData","initInitData","withInitDataRaw","withInitData","useInvoiceRaw","useInvoice","initInvoice","withInvoiceRaw","withInvoice","useMainButtonRaw","useMainButton","initMainButton","withMainButtonRaw","withMainButton","useMiniAppRaw","useMiniApp","initMiniApp","withMiniAppRaw","withMiniApp","usePopupRaw","usePopup","initPopup","withPopupRaw","withPopup","useQRScannerRaw","useQRScanner","initQRScanner","withQRScannerRaw","withQRScanner","useSettingsButtonRaw","useSettingsButton","initSettingsButton","withSettingsButtonRaw","withSettingsButton","useThemeParamsRaw","useThemeParams","initThemeParams","withThemeParamsRaw","withThemeParams","useLaunchParams","useMemo","retrieveLaunchParams","useUtilsRaw","useUtils","initUtils","withUtilsRaw","withUtils","useViewportRaw","useViewport","initViewport","withViewportRaw","withViewport","SDKProvider","children","acceptCustomStyles","debug","isMountedRef","useRef","cache","setCache","cacheRef","mutateCache","useCallback","mutate","c","args","cached","error","err","withCacheSet","item","cleanup","finalize","off","cleanupOriginal","value","isIframe","initWeb","setDebug"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../sdk/dist/index.js","../src/createHOCs.tsx","../src/SDKProvider/SDKContext.ts","../src/createHooks.ts","../src/hooks-hocs/back-button.ts","../src/hooks-hocs/biometry-manager.ts","../src/hooks-hocs/closing-behavior.ts","../src/hooks-hocs/cloud-storage.ts","../src/hooks-hocs/haptic-feedback.ts","../src/hooks-hocs/init-data.ts","../src/hooks-hocs/invoice.ts","../src/hooks-hocs/main-button.ts","../src/hooks-hocs/mini-app.ts","../src/hooks-hocs/popup.ts","../src/hooks-hocs/qr-scanner.ts","../src/hooks-hocs/settings-button.ts","../src/hooks-hocs/theme-params.ts","../src/hooks-hocs/launch-params.ts","../src/hooks-hocs/utils.ts","../src/hooks-hocs/viewport.ts","../src/SDKProvider/SDKProvider.tsx"],"sourcesContent":["var Vt = Object.defineProperty;\nvar $t = (e, t, s) => t in e ? Vt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;\nvar c = (e, t, s) => ($t(e, typeof t != \"symbol\" ? t + \"\" : t, s), s);\nfunction it(e, t) {\n let s;\n const n = () => {\n s !== void 0 && t && t(s), s = void 0;\n };\n return [() => s === void 0 ? s = e(n) : s, n];\n}\nfunction ot(e) {\n const t = M(), { count: s } = t;\n t.unsubscribe(e), s && !t.count && ne();\n}\nfunction Mt(e) {\n return M().subscribe(e), () => ot(e);\n}\nclass Lt {\n constructor(t, s = {}) {\n this.scope = t, this.options = s;\n }\n /**\n * Prints message into a console in case, logger is currently enabled.\n * @param level - log level.\n * @param args - arguments.\n */\n print(t, ...s) {\n const n = /* @__PURE__ */ new Date(), r = Intl.DateTimeFormat(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n fractionalSecondDigits: 3,\n timeZone: \"UTC\"\n }).format(n), { textColor: i, bgColor: a } = this.options, o = \"font-weight: bold;padding: 0 5px;border-radius:5px\";\n console[t](\n `%c${r}%c / %c${this.scope}`,\n `${o};background-color: lightblue;color:black`,\n \"\",\n `${o};${i ? `color:${i};` : \"\"}${a ? `background-color:${a}` : \"\"}`,\n ...s\n );\n }\n /**\n * Prints error message into a console.\n * @param args\n */\n error(...t) {\n this.print(\"error\", ...t);\n }\n /**\n * Prints log message into a console.\n * @param args\n */\n log(...t) {\n this.print(\"log\", ...t);\n }\n}\nconst F = new Lt(\"SDK\", {\n bgColor: \"forestgreen\",\n textColor: \"white\"\n});\nlet G = !1;\nconst et = ({ name: e, payload: t }) => {\n F.log(\"Event received:\", t ? { name: e, payload: t } : { name: e });\n};\nfunction Ye(e) {\n G !== e && (G = e, e ? Mt(et) : ot(et));\n}\nfunction Bt(...e) {\n G && F.log(...e);\n}\nclass R {\n constructor() {\n c(this, \"listeners\", /* @__PURE__ */ new Map());\n c(this, \"listenersCount\", 0);\n c(this, \"subscribeListeners\", []);\n }\n /**\n * Removes all event listeners.\n */\n clear() {\n this.listeners.clear(), this.subscribeListeners = [];\n }\n /**\n * Returns count of bound listeners.\n */\n get count() {\n return this.listenersCount + this.subscribeListeners.length;\n }\n emit(t, ...s) {\n this.subscribeListeners.forEach((r) => r({\n event: t,\n args: s\n })), (this.listeners.get(t) || []).forEach(([r, i]) => {\n r(...s), i && this.off(t, r);\n });\n }\n /**\n * Adds new event listener.\n * @param event - event name.\n * @param listener - event listener.\n * @param once - should listener be called only once.\n * @returns Function to remove bound event listener.\n */\n on(t, s, n) {\n let r = this.listeners.get(t);\n return r || this.listeners.set(t, r = []), r.push([s, n]), this.listenersCount += 1, () => this.off(t, s);\n }\n /**\n * Removes event listener. In case, specified listener was bound several times, it removes\n * only a single one.\n * @param event - event name.\n * @param listener - event listener.\n */\n off(t, s) {\n const n = this.listeners.get(t) || [];\n for (let r = 0; r < n.length; r += 1)\n if (s === n[r][0]) {\n n.splice(r, 1), this.listenersCount -= 1;\n return;\n }\n }\n /**\n * Adds a new event listener for all events.\n * @param listener - event listener.\n * @returns Function to remove event listener.\n */\n subscribe(t) {\n return this.subscribeListeners.push(t), () => this.unsubscribe(t);\n }\n /**\n * Removes global event listener. In case, specified listener was bound several times, it removes\n * only a single one.\n * @param listener - event listener.\n */\n unsubscribe(t) {\n for (let s = 0; s < this.subscribeListeners.length; s += 1)\n if (this.subscribeListeners[s] === t) {\n this.subscribeListeners.splice(s, 1);\n return;\n }\n }\n}\nfunction j(e, t, s) {\n return window.addEventListener(e, t, s), () => window.removeEventListener(e, t, s);\n}\nfunction at(...e) {\n let t = !1;\n const s = [...e];\n return [\n (n) => !t && s.push(n),\n () => {\n t || (t = !0, s.forEach((n) => n()));\n },\n t\n ];\n}\nclass V extends Error {\n constructor(t, s, n) {\n super(s, { cause: n }), this.type = t, Object.setPrototypeOf(this, V.prototype);\n }\n}\nfunction f(e, t, s) {\n return new V(e, t, s);\n}\nconst Ot = \"ERR_METHOD_UNSUPPORTED\", Ut = \"ERR_METHOD_PARAMETER_UNSUPPORTED\", Wt = \"ERR_UNKNOWN_ENV\", Ht = \"ERR_INVOKE_CUSTOM_METHOD_RESPONSE\", Gt = \"ERR_TIMED_OUT\", jt = \"ERR_UNEXPECTED_TYPE\", ct = \"ERR_PARSE\", zt = \"ERR_NAVIGATION_LIST_EMPTY\", Ft = \"ERR_NAVIGATION_CURSOR_INVALID\", Ze = \"ERR_NAVIGATION_ITEM_INVALID\", Ke = \"ERR_SSR_INIT\", Jt = \"ERR_INVALID_PATH_BASE\";\nfunction E() {\n return f(jt, \"Value has unexpected type\");\n}\nclass $ {\n constructor(t, s, n) {\n this.parser = t, this.isOptional = s, this.type = n;\n }\n /**\n * Attempts to parse passed value\n * @param value - value to parse.\n * @throws {SDKError} ERR_PARSE\n * @see ERR_PARSE\n */\n parse(t) {\n if (!(this.isOptional && t === void 0))\n try {\n return this.parser(t);\n } catch (s) {\n throw f(\n ct,\n `Unable to parse value${this.type ? ` as ${this.type}` : \"\"}`,\n s\n );\n }\n }\n optional() {\n return this.isOptional = !0, this;\n }\n}\nfunction P(e, t) {\n return () => new $(e, !1, t);\n}\nconst w = P((e) => {\n if (typeof e == \"boolean\")\n return e;\n const t = String(e);\n if (t === \"1\" || t === \"true\")\n return !0;\n if (t === \"0\" || t === \"false\")\n return !1;\n throw E();\n}, \"boolean\");\nfunction ht(e, t) {\n const s = {};\n for (const n in e) {\n const r = e[n];\n if (!r)\n continue;\n let i, a;\n if (typeof r == \"function\" || \"parse\" in r)\n i = n, a = typeof r == \"function\" ? r : r.parse.bind(r);\n else {\n const { type: o } = r;\n i = r.from || n, a = typeof o == \"function\" ? o : o.parse.bind(o);\n }\n try {\n const o = a(t(i));\n o !== void 0 && (s[n] = o);\n } catch (o) {\n throw f(ct, `Unable to parse field \"${n}\"`, o);\n }\n }\n return s;\n}\nfunction J(e) {\n let t = e;\n if (typeof t == \"string\" && (t = JSON.parse(t)), typeof t != \"object\" || t === null || Array.isArray(t))\n throw E();\n return t;\n}\nfunction d(e, t) {\n return new $((s) => {\n const n = J(s);\n return ht(e, (r) => n[r]);\n }, !1, t);\n}\nconst y = P((e) => {\n if (typeof e == \"number\")\n return e;\n if (typeof e == \"string\") {\n const t = Number(e);\n if (!Number.isNaN(t))\n return t;\n }\n throw E();\n}, \"number\");\nfunction Q(e) {\n return /^#[\\da-f]{6}$/i.test(e);\n}\nfunction Qt(e) {\n return /^#[\\da-f]{3}$/i.test(e);\n}\nfunction pt(e) {\n const t = e.replace(/\\s/g, \"\").toLowerCase();\n if (Q(t))\n return t;\n if (Qt(t)) {\n let n = \"#\";\n for (let r = 0; r < 3; r += 1)\n n += t[1 + r].repeat(2);\n return n;\n }\n const s = t.match(/^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/) || t.match(/^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),\\d{1,3}\\)$/);\n if (!s)\n throw new Error(`Value \"${e}\" does not satisfy any of known RGB formats.`);\n return s.slice(1).reduce((n, r) => {\n const i = parseInt(r, 10).toString(16);\n return n + (i.length === 1 ? \"0\" : \"\") + i;\n }, \"#\");\n}\nconst h = P((e) => {\n if (typeof e == \"string\" || typeof e == \"number\")\n return e.toString();\n throw E();\n}, \"string\"), ut = P((e) => pt(h().parse(e)), \"rgb\");\nfunction Yt(e) {\n return d({\n eventType: h(),\n eventData: (t) => t\n }).parse(e);\n}\nfunction Zt() {\n [\"TelegramGameProxy_receiveEvent\", \"TelegramGameProxy\", \"Telegram\"].forEach((e) => {\n delete window[e];\n });\n}\nfunction Kt(e, t) {\n window.dispatchEvent(new MessageEvent(\"message\", {\n data: JSON.stringify({ eventType: e, eventData: t }),\n // We specify window.parent to imitate the case, the parent iframe sent us this event.\n source: window.parent\n }));\n}\nfunction Xt() {\n [\n [\"TelegramGameProxy_receiveEvent\"],\n // Windows Phone.\n [\"TelegramGameProxy\", \"receiveEvent\"],\n // Desktop.\n [\"Telegram\", \"WebView\", \"receiveEvent\"]\n // Android and iOS.\n ].forEach((e) => {\n let t = window;\n e.forEach((s, n, r) => {\n if (n === r.length - 1) {\n t[s] = Kt;\n return;\n }\n s in t || (t[s] = {}), t = t[s];\n });\n });\n}\nconst te = {\n clipboard_text_received: d({\n req_id: h(),\n data: (e) => e === null ? e : h().optional().parse(e)\n }),\n custom_method_invoked: d({\n req_id: h(),\n result: (e) => e,\n error: h().optional()\n }),\n invoice_closed: d({ slug: h(), status: h() }),\n phone_requested: d({ status: h() }),\n popup_closed: {\n parse(e) {\n return d({\n button_id: (t) => t == null ? void 0 : h().parse(t)\n }).parse(e ?? {});\n }\n },\n qr_text_received: d({ data: h().optional() }),\n theme_changed: d({\n theme_params: (e) => {\n const t = ut().optional();\n return Object.entries(J(e)).reduce((s, [n, r]) => (s[n] = t.parse(r), s), {});\n }\n }),\n viewport_changed: d({\n height: y(),\n width: (e) => e == null ? window.innerWidth : y().parse(e),\n is_state_stable: w(),\n is_expanded: w()\n }),\n write_access_requested: d({ status: h() })\n};\nfunction ee() {\n const e = new R(), t = new R();\n t.subscribe((n) => {\n e.emit(\"event\", { name: n.event, payload: n.args[0] });\n }), Xt();\n const [, s] = at(\n // Don't forget to remove created handlers.\n Zt,\n // Add \"resize\" event listener to make sure, we always have fresh viewport information.\n // Desktop version of Telegram is sometimes not sending the viewport_changed\n // event. For example, when the MainButton is shown. That's why we should\n // add our own listener to make sure, viewport information is always fresh.\n // Issue: https://github.com/Telegram-Mini-Apps/tma.js/issues/10\n j(\"resize\", () => {\n t.emit(\"viewport_changed\", {\n width: window.innerWidth,\n height: window.innerHeight,\n is_state_stable: !0,\n is_expanded: !0\n });\n }),\n // Add listener, which handles events sent from the Telegram web application and also events\n // generated by the local emitEvent function.\n j(\"message\", (n) => {\n if (n.source !== window.parent)\n return;\n let r;\n try {\n r = Yt(n.data);\n } catch {\n return;\n }\n const { eventType: i, eventData: a } = r, o = te[i];\n try {\n const p = o ? o.parse(a) : a;\n t.emit(...p ? [i, p] : [i]);\n } catch (p) {\n F.error(\n `An error occurred processing the \"${i}\" event from the Telegram application. Please, file an issue here: https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose`,\n r,\n p\n );\n }\n }),\n // Clear emitters.\n () => e.clear(),\n () => t.clear()\n );\n return [{\n on: t.on.bind(t),\n off: t.off.bind(t),\n subscribe(n) {\n return e.on(\"event\", n);\n },\n unsubscribe(n) {\n e.off(\"event\", n);\n },\n get count() {\n return t.count + e.count;\n }\n }, s];\n}\nconst [se, ne] = it(\n (e) => {\n const [t, s] = ee(), n = t.off.bind(t);\n return t.off = (r, i) => {\n const { count: a } = t;\n n(r, i), a && !t.count && e();\n }, [t, s];\n },\n ([, e]) => e()\n);\nfunction M() {\n return se()[0];\n}\nfunction L(e, t) {\n M().off(e, t);\n}\nfunction b(e, t, s) {\n return M().on(e, t, s);\n}\nfunction I(e) {\n return typeof e == \"object\" && e !== null && !Array.isArray(e);\n}\nfunction re(e, t) {\n const s = e.split(\".\"), n = t.split(\".\"), r = Math.max(s.length, n.length);\n for (let i = 0; i < r; i += 1) {\n const a = parseInt(s[i] || \"0\", 10), o = parseInt(n[i] || \"0\", 10);\n if (a !== o)\n return a > o ? 1 : -1;\n }\n return 0;\n}\nfunction g(e, t) {\n return re(e, t) <= 0;\n}\nfunction v(e, t, s) {\n if (typeof s == \"string\") {\n if (e === \"web_app_open_link\" && t === \"try_instant_view\")\n return g(\"6.4\", s);\n if (e === \"web_app_set_header_color\" && t === \"color\")\n return g(\"6.9\", s);\n }\n switch (e) {\n case \"web_app_open_tg_link\":\n case \"web_app_open_invoice\":\n case \"web_app_setup_back_button\":\n case \"web_app_set_background_color\":\n case \"web_app_set_header_color\":\n case \"web_app_trigger_haptic_feedback\":\n return g(\"6.1\", t);\n case \"web_app_open_popup\":\n return g(\"6.2\", t);\n case \"web_app_close_scan_qr_popup\":\n case \"web_app_open_scan_qr_popup\":\n case \"web_app_read_text_from_clipboard\":\n return g(\"6.4\", t);\n case \"web_app_switch_inline_query\":\n return g(\"6.7\", t);\n case \"web_app_invoke_custom_method\":\n case \"web_app_request_write_access\":\n case \"web_app_request_phone\":\n return g(\"6.9\", t);\n case \"web_app_setup_settings_button\":\n return g(\"6.10\", t);\n case \"web_app_biometry_get_info\":\n case \"web_app_biometry_open_settings\":\n case \"web_app_biometry_request_access\":\n case \"web_app_biometry_request_auth\":\n case \"web_app_biometry_update_token\":\n return g(\"7.2\", t);\n default:\n return [\n \"iframe_ready\",\n \"iframe_will_reload\",\n \"web_app_close\",\n \"web_app_data_send\",\n \"web_app_expand\",\n \"web_app_open_link\",\n \"web_app_ready\",\n \"web_app_request_theme\",\n \"web_app_request_viewport\",\n \"web_app_setup_main_button\",\n \"web_app_setup_closing_behavior\"\n ].includes(e);\n }\n}\nfunction ie(e) {\n return \"external\" in e && I(e.external) && \"notify\" in e.external && typeof e.external.notify == \"function\";\n}\nfunction lt(e) {\n return \"TelegramWebviewProxy\" in e && I(e.TelegramWebviewProxy) && \"postEvent\" in e.TelegramWebviewProxy && typeof e.TelegramWebviewProxy.postEvent == \"function\";\n}\nfunction oe() {\n try {\n return window.self !== window.top;\n } catch {\n return !0;\n }\n}\nlet dt = \"https://web.telegram.org\";\nfunction Xe(e) {\n dt = e;\n}\nfunction ae() {\n return dt;\n}\nfunction A(e, t, s) {\n let n = {}, r;\n t === void 0 && s === void 0 ? n = {} : t !== void 0 && s !== void 0 ? (n = s, r = t) : t !== void 0 && (\"targetOrigin\" in t ? n = t : r = t);\n const { targetOrigin: i = ae() } = n;\n if (Bt(\"Posting event:\", r ? { event: e, data: r } : { event: e }), oe()) {\n window.parent.postMessage(JSON.stringify({ eventType: e, eventData: r }), i);\n return;\n }\n if (ie(window)) {\n window.external.notify(JSON.stringify({ eventType: e, eventData: r }));\n return;\n }\n if (lt(window)) {\n window.TelegramWebviewProxy.postEvent(e, JSON.stringify(r));\n return;\n }\n throw f(\n Wt,\n \"Unable to determine current environment and possible way to send event. You are probably trying to use Mini Apps method outside of Telegram application environment.\"\n );\n}\nfunction ce(e) {\n return (t, s) => {\n if (!v(t, e))\n throw f(Ot, `Method \"${t}\" is unsupported in Mini Apps version ${e}`);\n if (I(s)) {\n let n;\n if (t === \"web_app_open_link\" && \"try_instant_view\" in s ? n = \"try_instant_view\" : t === \"web_app_set_header_color\" && \"color\" in s && (n = \"color\"), n && !v(t, n, e))\n throw f(\n Ut,\n `Parameter \"${n}\" of \"${t}\" method is unsupported in Mini Apps version ${e}`\n );\n }\n return A(t, s);\n };\n}\nfunction _t(e) {\n return ({ req_id: t }) => t === e;\n}\nfunction ft(e) {\n return f(Gt, `Timeout reached: ${e}ms`);\n}\nfunction gt(e, t) {\n return Promise.race([\n typeof e == \"function\" ? e() : e,\n new Promise((s, n) => {\n setTimeout(() => {\n n(ft(t));\n }, t);\n })\n ]);\n}\nasync function _(e) {\n let t;\n const s = new Promise((u) => {\n t = u;\n }), {\n method: n,\n event: r,\n capture: i,\n postEvent: a = A,\n timeout: o\n } = e, p = (Array.isArray(r) ? r : [r]).map(\n (u) => b(u, (k) => (!i || i(k)) && t(k))\n );\n try {\n return a(n, e.params), await (o ? gt(s, o) : s);\n } finally {\n p.forEach((u) => u());\n }\n}\nasync function S(e, t, s, n = {}) {\n const {\n result: r,\n error: i\n } = await _({\n ...n,\n method: \"web_app_invoke_custom_method\",\n event: \"custom_method_invoked\",\n params: {\n method: e,\n params: t,\n req_id: s\n },\n capture: _t(s)\n });\n if (i)\n throw f(Ht, i);\n return r;\n}\nfunction z(...e) {\n return e.map((t) => {\n if (typeof t == \"string\")\n return t;\n if (I(t))\n return z(Object.entries(t).map((s) => s[1] && s[0]));\n if (Array.isArray(t))\n return z(...t);\n }).filter(Boolean).join(\" \");\n}\nfunction ts(...e) {\n return e.reduce((t, s) => (I(s) && Object.entries(s).forEach(([n, r]) => {\n const i = z(t[n], r);\n i.length && (t[n] = i);\n }), t), {});\n}\nfunction bt(e) {\n const t = pt(e);\n return Math.sqrt(\n [0.299, 0.587, 0.114].reduce((s, n, r) => {\n const i = parseInt(t.slice(1 + r * 2, 1 + (r + 1) * 2), 16);\n return s + i * i * n;\n }, 0)\n ) < 120;\n}\nclass he {\n constructor(t) {\n c(this, \"ee\", new R());\n /**\n * Adds new event listener.\n */\n c(this, \"on\", this.ee.on.bind(this.ee));\n /**\n * Removes event listener.\n */\n c(this, \"off\", this.ee.off.bind(this.ee));\n this.state = t;\n }\n /**\n * Clones current state and returns its copy.\n */\n clone() {\n return { ...this.state };\n }\n set(t, s) {\n Object.entries(typeof t == \"string\" ? { [t]: s } : t).reduce((r, [i, a]) => this.state[i] === a || a === void 0 ? r : (this.state[i] = a, this.ee.emit(`change:${i}`, a), !0), !1) && this.ee.emit(\"change\", this.state);\n }\n /**\n * Returns value by specified key.\n * @param key - state key.\n */\n get(t) {\n return this.state[t];\n }\n}\nclass Y {\n constructor(t) {\n c(this, \"state\");\n /**\n * Gets the state value.\n */\n c(this, \"get\");\n /**\n * Sets the state value.\n */\n c(this, \"set\");\n /**\n * Clones the current state.\n */\n c(this, \"clone\");\n this.state = new he(t), this.set = this.state.set.bind(this.state), this.get = this.state.get.bind(this.state), this.clone = this.state.clone.bind(this.state);\n }\n}\nfunction wt(e, t) {\n return (s) => v(t[s], e);\n}\nclass Z extends Y {\n constructor(s, n, r) {\n super(s);\n /**\n * @returns True, if specified method is supported by the current component.\n */\n c(this, \"supports\");\n this.supports = wt(n, r);\n }\n}\nclass pe extends Z {\n constructor(s, n, r) {\n super({ isVisible: s }, n, {\n show: \"web_app_setup_back_button\",\n hide: \"web_app_setup_back_button\"\n });\n /**\n * Adds a new event listener.\n * @param event - event to listen.\n * @param listener - listener to add.\n */\n c(this, \"on\", (s, n) => s === \"click\" ? b(\"back_button_pressed\", n) : this.state.on(s, n));\n /**\n * Removes the event listener.\n * @param event - event to listen.\n * @param listener - listener to remove.\n */\n c(this, \"off\", (s, n) => s === \"click\" ? L(\"back_button_pressed\", n) : this.state.off(s, n));\n this.postEvent = r;\n }\n set isVisible(s) {\n this.set(\"isVisible\", s), this.postEvent(\"web_app_setup_back_button\", { is_visible: s });\n }\n /**\n * True if BackButton is currently visible.\n */\n get isVisible() {\n return this.get(\"isVisible\");\n }\n /**\n * Hides the BackButton.\n */\n hide() {\n this.isVisible = !1;\n }\n /**\n * Shows the BackButton.\n */\n show() {\n this.isVisible = !0;\n }\n}\nconst mt = P((e) => e instanceof Date ? e : new Date(y().parse(e) * 1e3), \"Date\");\nfunction K(e, t) {\n return new $((s) => {\n if (typeof s != \"string\" && !(s instanceof URLSearchParams))\n throw E();\n const n = typeof s == \"string\" ? new URLSearchParams(s) : s;\n return ht(e, (r) => {\n const i = n.get(r);\n return i === null ? void 0 : i;\n });\n }, !1, t);\n}\nconst ue = d({\n id: y(),\n type: h(),\n title: h(),\n photoUrl: {\n type: h().optional(),\n from: \"photo_url\"\n },\n username: h().optional()\n}, \"Chat\").optional(), st = d({\n addedToAttachmentMenu: {\n type: w().optional(),\n from: \"added_to_attachment_menu\"\n },\n allowsWriteToPm: {\n type: w().optional(),\n from: \"allows_write_to_pm\"\n },\n firstName: {\n type: h(),\n from: \"first_name\"\n },\n id: y(),\n isBot: {\n type: w().optional(),\n from: \"is_bot\"\n },\n isPremium: {\n type: w().optional(),\n from: \"is_premium\"\n },\n languageCode: {\n type: h().optional(),\n from: \"language_code\"\n },\n lastName: {\n type: h().optional(),\n from: \"last_name\"\n },\n photoUrl: {\n type: h().optional(),\n from: \"photo_url\"\n },\n username: h().optional()\n}, \"User\").optional();\nfunction yt() {\n return K({\n authDate: {\n type: mt(),\n from: \"auth_date\"\n },\n canSendAfter: {\n type: y().optional(),\n from: \"can_send_after\"\n },\n chat: ue,\n chatInstance: {\n type: h().optional(),\n from: \"chat_instance\"\n },\n chatType: {\n type: h().optional(),\n from: \"chat_type\"\n },\n hash: h(),\n queryId: {\n type: h().optional(),\n from: \"query_id\"\n },\n receiver: st,\n startParam: {\n type: h().optional(),\n from: \"start_param\"\n },\n user: st\n }, \"InitData\");\n}\nfunction le(e) {\n return e.replace(/_[a-z]/g, (t) => t[1].toUpperCase());\n}\nfunction de(e) {\n return e.replace(/[A-Z]/g, (t) => `_${t.toLowerCase()}`);\n}\nconst vt = P(\n (e) => {\n const t = ut().optional();\n return Object.entries(J(e)).reduce((s, [n, r]) => (s[le(n)] = t.parse(r), s), {});\n },\n \"ThemeParams\"\n);\nfunction Et(e) {\n return K({\n botInline: {\n type: w().optional(),\n from: \"tgWebAppBotInline\"\n },\n initData: {\n type: yt().optional(),\n from: \"tgWebAppData\"\n },\n initDataRaw: {\n type: h().optional(),\n from: \"tgWebAppData\"\n },\n platform: {\n type: h(),\n from: \"tgWebAppPlatform\"\n },\n showSettings: {\n type: w().optional(),\n from: \"tgWebAppShowSettings\"\n },\n startParam: {\n type: h().optional(),\n from: \"tgWebAppStartParam\"\n },\n themeParams: {\n type: vt(),\n from: \"tgWebAppThemeParams\"\n },\n version: {\n type: h(),\n from: \"tgWebAppVersion\"\n }\n }).parse(e);\n}\nfunction Pt(e) {\n return Et(\n e.replace(/^[^?#]*[?#]/, \"\").replace(/[?#]/g, \"&\")\n );\n}\nfunction _e() {\n return Pt(window.location.href);\n}\nfunction xt() {\n return performance.getEntriesByType(\"navigation\")[0];\n}\nfunction fe() {\n const e = xt();\n if (!e)\n throw new Error(\"Unable to get first navigation entry.\");\n return Pt(e.name);\n}\nfunction St(e) {\n return `tma.js/${e.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`)}`;\n}\nfunction Ct(e, t) {\n sessionStorage.setItem(St(e), JSON.stringify(t));\n}\nfunction Rt(e) {\n const t = sessionStorage.getItem(St(e));\n try {\n return t ? JSON.parse(t) : void 0;\n } catch {\n }\n}\nfunction ge() {\n return Et(Rt(\"launchParams\") || \"\");\n}\nfunction be(e) {\n return JSON.stringify(\n Object.fromEntries(\n Object.entries(e).map(([t, s]) => [de(t), s])\n )\n );\n}\nfunction we(e) {\n const {\n initDataRaw: t,\n themeParams: s,\n platform: n,\n version: r,\n showSettings: i,\n startParam: a,\n botInline: o\n } = e, p = new URLSearchParams();\n return p.set(\"tgWebAppPlatform\", n), p.set(\"tgWebAppThemeParams\", be(s)), p.set(\"tgWebAppVersion\", r), t && p.set(\"tgWebAppData\", t), a && p.set(\"tgWebAppStartParam\", a), typeof i == \"boolean\" && p.set(\"tgWebAppShowSettings\", i ? \"1\" : \"0\"), typeof o == \"boolean\" && p.set(\"tgWebAppBotInline\", o ? \"1\" : \"0\"), p.toString();\n}\nfunction me(e) {\n Ct(\"launchParams\", we(e));\n}\nfunction ye() {\n for (const e of [\n // Try to retrieve launch parameters from the current location. This method can return\n // nothing in case, location was changed and then page was reloaded.\n _e,\n // Then, try using the lower level API - window.performance.\n fe,\n // Finally, try to extract launch parameters from the session storage.\n ge\n ])\n try {\n const t = e();\n return me(t), t;\n } catch {\n }\n throw new Error(\"Unable to retrieve launch parameters from any known source.\");\n}\nfunction At() {\n const e = xt();\n return !!(e && e.type === \"reload\");\n}\nfunction ve() {\n let e = 0;\n return () => (e += 1).toString();\n}\nconst [Ee] = it(ve);\nfunction l(e, t) {\n return () => {\n const s = ye(), n = {\n ...s,\n postEvent: ce(s.version),\n createRequestId: Ee()\n };\n if (typeof e == \"function\")\n return e(n);\n const [r, i, a] = at(), o = t({\n ...n,\n // State should only be passed only in case, current page was reloaded. If we don't add\n // this check, state restoration will work improperly in the web version of Telegram,\n // when we are always working in the same \"session\" (tab).\n state: At() ? Rt(e) : void 0,\n addCleanup: r\n }), p = (u) => (a || r(\n u.on(\"change\", (k) => {\n Ct(e, k);\n })\n ), u);\n return [\n o instanceof Promise ? o.then(p) : p(o),\n i\n ];\n };\n}\nconst es = l(\"backButton\", ({\n postEvent: e,\n version: t,\n state: s = { isVisible: !1 }\n}) => new pe(s.isVisible, t, e));\nclass q extends Z {\n constructor() {\n super(...arguments);\n /**\n * Adds a new event listener.\n */\n c(this, \"on\", this.state.on.bind(this.state));\n /**\n * Removes the event listener.\n */\n c(this, \"off\", this.state.off.bind(this.state));\n }\n}\nfunction Tt(e) {\n const t = e.available ? e : {\n available: !1,\n device_id: \"\",\n token_saved: !1,\n access_requested: !1,\n access_granted: !1,\n type: \"\"\n };\n return {\n available: !0,\n type: t.type,\n deviceId: t.device_id,\n tokenSaved: t.token_saved,\n accessRequested: t.access_requested,\n accessGranted: t.access_granted\n };\n}\nclass Pe extends q {\n constructor({ postEvent: s, version: n, ...r }) {\n super(r, n, {\n auth: \"web_app_biometry_request_auth\",\n openSettings: \"web_app_biometry_open_settings\",\n requestAccess: \"web_app_biometry_request_access\",\n updateToken: \"web_app_biometry_update_token\"\n });\n c(this, \"postEvent\");\n c(this, \"authPromise\");\n c(this, \"accessPromise\");\n this.postEvent = s;\n }\n /**\n * Shows whether biometry is available.\n */\n get available() {\n return this.get(\"available\");\n }\n /**\n * Shows whether permission to use biometrics has been granted.\n */\n get accessGranted() {\n return this.get(\"accessGranted\");\n }\n /**\n * Shows whether if permission to use biometrics has been requested.\n */\n get accessRequested() {\n return this.get(\"accessRequested\");\n }\n /**\n * Authenticates the user using biometrics.\n * @param options - method options.\n * @since 7.2\n * @returns Token from the local secure storage, if authentication was successful.\n */\n async authenticate({\n reason: s,\n ...n\n }) {\n return this.authPromise || (this.authPromise = _({\n ...n,\n method: \"web_app_biometry_request_auth\",\n event: \"biometry_auth_requested\",\n postEvent: this.postEvent,\n params: {\n // TODO: Check if reason is empty works fine.\n reason: (s || \"\").trim()\n }\n }).then(({ token: r }) => r).finally(() => this.authPromise = void 0)), this.authPromise;\n }\n /**\n * A unique device identifier that can be used to match the token to the device.\n */\n get deviceId() {\n return this.get(\"deviceId\");\n }\n /**\n * Opens the biometric access settings for bots. Useful when you need to request biometrics\n * access to users who haven't granted it yet.\n *\n * _Note that this method can be called only in response to user interaction with the Mini App\n * interface (e.g. a click inside the Mini App or on the main button)_.\n * @since 7.2\n */\n openSettings() {\n this.postEvent(\"web_app_biometry_open_settings\");\n }\n /**\n * Requests permission to use biometrics.\n * @since 7.2\n * @returns Promise with true, if access was granted.\n */\n requestAccess({ reason: s, ...n } = {}) {\n return this.accessPromise || (this.accessPromise = _({\n ...n,\n postEvent: this.postEvent,\n method: \"web_app_biometry_request_access\",\n event: \"biometry_info_received\",\n params: { reason: s || \"\" }\n }).then((r) => {\n const i = Tt(r);\n return this.set(i), i.accessGranted;\n }).finally(() => this.accessPromise = void 0)), this.accessPromise;\n }\n /**\n * The type of biometrics currently available on the device.\n */\n get biometryType() {\n return this.get(\"biometryType\");\n }\n /**\n * Shows whether token was saved previously in the local secure storage.\n */\n get tokenSaved() {\n return this.get(\"tokenSaved\");\n }\n /**\n * Updates the biometric token in a secure storage on the device.\n * @returns Promise with `true`, if token was updated.\n */\n async updateToken({ token: s, ...n } = {}) {\n return [\"removed\", \"updated\"].includes(\n (await _({\n ...n,\n postEvent: this.postEvent,\n method: \"web_app_biometry_update_token\",\n event: \"biometry_token_updated\",\n params: { token: s || \"\" }\n })).status\n );\n }\n}\nasync function xe(e) {\n return Tt(\n await _({\n ...e || {},\n method: \"web_app_biometry_get_info\",\n event: \"biometry_info_received\"\n })\n );\n}\nconst ss = l(\n \"biometryManager\",\n async ({ postEvent: e, version: t, state: s }) => new Pe({\n ...s || v(\"web_app_biometry_get_info\", t) ? s || await xe({ timeout: 1e3 }) : {\n available: !1,\n accessGranted: !1,\n accessRequested: !1,\n tokenSaved: !1,\n deviceId: \"\"\n },\n version: t,\n postEvent: e\n })\n);\nclass X extends Y {\n constructor() {\n super(...arguments);\n /**\n * Adds a new event listener.\n */\n c(this, \"on\", this.state.on.bind(this.state));\n /**\n * Removes the event listener.\n */\n c(this, \"off\", this.state.off.bind(this.state));\n }\n}\nclass Se extends X {\n constructor(t, s) {\n super({ isConfirmationNeeded: t }), this.postEvent = s;\n }\n set isConfirmationNeeded(t) {\n this.set(\"isConfirmationNeeded\", t), this.postEvent(\"web_app_setup_closing_behavior\", { need_confirmation: t });\n }\n /**\n * True, if the confirmation dialog should be shown while the user is trying to close\n * the Mini App.\n */\n get isConfirmationNeeded() {\n return this.get(\"isConfirmationNeeded\");\n }\n /**\n * Disables the confirmation dialog when closing the Mini App.\n */\n disableConfirmation() {\n this.isConfirmationNeeded = !1;\n }\n /**\n * Enables the confirmation dialog when closing the Mini App.\n */\n enableConfirmation() {\n this.isConfirmationNeeded = !0;\n }\n}\nconst ns = l(\n \"closingBehavior\",\n ({\n postEvent: e,\n state: t = { isConfirmationNeeded: !1 }\n }) => new Se(t.isConfirmationNeeded, e)\n);\nclass tt {\n constructor(t, s) {\n /**\n * @returns True, if specified method is supported by the current component.\n */\n c(this, \"supports\");\n this.supports = wt(t, s);\n }\n}\nfunction Ce(e) {\n if (Array.isArray(e))\n return e;\n if (typeof e == \"string\")\n try {\n const t = JSON.parse(e);\n if (Array.isArray(t))\n return t;\n } catch {\n }\n throw E();\n}\nclass Re extends $ {\n constructor(s, n, r) {\n super(Ce, n, r);\n c(this, \"itemParser\");\n this.itemParser = typeof s == \"function\" ? s : s.parse.bind(s);\n }\n /**\n * Attempts to parse passed value\n * @param value - value to parse.\n * @throws {SDKError} ERR_PARSE\n * @see ERR_PARSE\n */\n parse(s) {\n const n = super.parse(s);\n return n === void 0 ? n : n.map(this.itemParser);\n }\n of(s) {\n return this.itemParser = typeof s == \"function\" ? s : s.parse.bind(s), this;\n }\n}\nfunction Ae(e) {\n return new Re((t) => t, !1, e);\n}\nfunction nt(e, t) {\n return Object.fromEntries(e.map((s) => [s, t]));\n}\nclass Te extends tt {\n constructor(t, s, n) {\n super(t, {\n delete: \"web_app_invoke_custom_method\",\n get: \"web_app_invoke_custom_method\",\n getKeys: \"web_app_invoke_custom_method\",\n set: \"web_app_invoke_custom_method\"\n }), this.createRequestId = s, this.postEvent = n;\n }\n /**\n * Deletes specified key or keys from the cloud storage.\n * @param keyOrKeys - key or keys to delete.\n * @param options - request execution options.\n */\n async delete(t, s = {}) {\n const n = Array.isArray(t) ? t : [t];\n n.length && await S(\n \"deleteStorageValues\",\n { keys: n },\n this.createRequestId(),\n { ...s, postEvent: this.postEvent }\n );\n }\n /**\n * Returns list of all keys presented in the cloud storage.\n * @param options - request execution options.\n */\n async getKeys(t = {}) {\n return Ae().of(h()).parse(\n await S(\n \"getStorageKeys\",\n {},\n this.createRequestId(),\n { ...t, postEvent: this.postEvent }\n )\n );\n }\n async get(t, s = {}) {\n const n = Array.isArray(t) ? t : [t];\n if (!n.length)\n return nt(n, \"\");\n const r = await S(\n \"getStorageValues\",\n { keys: n },\n this.createRequestId(),\n { ...s, postEvent: this.postEvent }\n ), i = d(nt(n, h()), \"CloudStorageData\").parse(r);\n return Array.isArray(t) ? i : i[t];\n }\n /**\n * Saves specified value by key.\n * @param key - storage key.\n * @param value - storage value.\n * @param options - request execution options.\n */\n async set(t, s, n = {}) {\n await S(\n \"saveStorageValue\",\n { key: t, value: s },\n this.createRequestId(),\n { ...n, postEvent: this.postEvent }\n );\n }\n}\nconst rs = l(\n ({ createRequestId: e, postEvent: t, version: s }) => new Te(s, e, t)\n);\nclass Ie extends tt {\n constructor(t, s) {\n super(t, {\n impactOccurred: \"web_app_trigger_haptic_feedback\",\n notificationOccurred: \"web_app_trigger_haptic_feedback\",\n selectionChanged: \"web_app_trigger_haptic_feedback\"\n }), this.postEvent = s;\n }\n /**\n * A method tells that an impact occurred. The Telegram app may play the\n * appropriate haptics based on style value passed.\n * @param style - impact style.\n */\n impactOccurred(t) {\n this.postEvent(\"web_app_trigger_haptic_feedback\", {\n type: \"impact\",\n impact_style: t\n });\n }\n /**\n * A method tells that a task or action has succeeded, failed, or produced\n * a warning. The Telegram app may play the appropriate haptics based on\n * type value passed.\n * @param type - notification type.\n */\n notificationOccurred(t) {\n this.postEvent(\"web_app_trigger_haptic_feedback\", {\n type: \"notification\",\n notification_type: t\n });\n }\n /**\n * A method tells that the user has changed a selection. The Telegram app\n * may play the appropriate haptics.\n *\n * Do not use this feedback when the user makes or confirms a selection;\n * use it only when the selection changes.\n */\n selectionChanged() {\n this.postEvent(\"web_app_trigger_haptic_feedback\", { type: \"selection_change\" });\n }\n}\nconst is = l(\n ({ version: e, postEvent: t }) => new Ie(e, t)\n);\nclass qe {\n constructor(t) {\n this.initData = t;\n }\n /**\n * @see InitDataParsed.authDate\n */\n get authDate() {\n return this.initData.authDate;\n }\n /**\n * @see InitDataParsed.canSendAfter\n */\n get canSendAfter() {\n return this.initData.canSendAfter;\n }\n /**\n * Date after which it is allowed to call\n * the [answerWebAppQuery](https://core.telegram.org/bots/api#answerwebappquery) method.\n */\n get canSendAfterDate() {\n const { canSendAfter: t } = this;\n return t ? new Date(this.authDate.getTime() + t * 1e3) : void 0;\n }\n /**\n * @see InitDataParsed.chat\n */\n get chat() {\n return this.initData.chat;\n }\n /**\n * @see InitDataParsed.chatType\n */\n get chatType() {\n return this.initData.chatType;\n }\n /**\n * @see InitDataParsed.chatInstance\n */\n get chatInstance() {\n return this.initData.chatInstance;\n }\n /**\n * @see InitDataParsed.hash\n */\n get hash() {\n return this.initData.hash;\n }\n /**\n * @see InitDataParsed.queryId\n */\n get queryId() {\n return this.initData.queryId;\n }\n /**\n * @see InitDataParsed.receiver\n */\n get receiver() {\n return this.initData.receiver;\n }\n /**\n * @see InitDataParsed.startParam\n */\n get startParam() {\n return this.initData.startParam;\n }\n /**\n * @see InitDataParsed.user\n */\n get user() {\n return this.initData.user;\n }\n}\nconst os = l(\n ({ initData: e }) => e ? new qe(e) : void 0\n);\nfunction as(e) {\n return yt().parse(e);\n}\nclass ke extends q {\n constructor(t, s, n) {\n super({ isOpened: t }, s, { open: \"web_app_open_invoice\" }), this.postEvent = n;\n }\n set isOpened(t) {\n this.set(\"isOpened\", t);\n }\n /**\n * True if invoice is currently opened.\n */\n get isOpened() {\n return this.get(\"isOpened\");\n }\n async open(t, s) {\n if (this.isOpened)\n throw new Error(\"Invoice is already opened\");\n let n;\n if (!s)\n n = t;\n else {\n const { hostname: r, pathname: i } = new URL(t, window.location.href);\n if (r !== \"t.me\")\n throw new Error(`Incorrect hostname: ${r}`);\n const a = i.match(/^\\/(\\$|invoice\\/)([A-Za-z0-9\\-_=]+)$/);\n if (!a)\n throw new Error('Link pathname has incorrect format. Expected to receive \"/invoice/{slug}\" or \"/${slug}\"');\n [, , n] = a;\n }\n this.isOpened = !0;\n try {\n return (await _({\n method: \"web_app_open_invoice\",\n event: \"invoice_closed\",\n params: { slug: n },\n postEvent: this.postEvent,\n capture(i) {\n return n === i.slug;\n }\n })).status;\n } finally {\n this.isOpened = !1;\n }\n }\n}\nconst cs = l(\n ({ version: e, postEvent: t }) => new ke(!1, e, t)\n);\nclass Ne extends Y {\n constructor({ postEvent: s, ...n }) {\n super(n);\n c(this, \"postEvent\");\n /**\n * Adds a new event listener.\n * @param event - event to listen.\n * @param listener - listener to add.\n */\n c(this, \"on\", (s, n) => s === \"click\" ? b(\"main_button_pressed\", n) : this.state.on(s, n));\n /**\n * Removes the event listener.\n * @param event - event to listen.\n * @param listener - listener to remove.\n */\n c(this, \"off\", (s, n) => s === \"click\" ? L(\"main_button_pressed\", n) : this.state.off(s, n));\n this.postEvent = s;\n }\n /**\n * The MainButton background color.\n */\n get bgColor() {\n return this.get(\"bgColor\");\n }\n /**\n * Sends current local state to the Telegram application.\n */\n commit() {\n this.text !== \"\" && this.postEvent(\"web_app_setup_main_button\", {\n is_visible: this.isVisible,\n is_active: this.isEnabled,\n is_progress_visible: this.isLoaderVisible,\n text: this.text,\n color: this.bgColor,\n text_color: this.textColor\n });\n }\n /**\n * Disables the MainButton.\n * @see Does not work on Android: https://github.com/Telegram-Mini-Apps/issues/issues/1\n */\n disable() {\n return this.isEnabled = !1, this;\n }\n /**\n * Enables the MainButton.\n */\n enable() {\n return this.isEnabled = !0, this;\n }\n /**\n * Hides the MainButton.\n */\n hide() {\n return this.isVisible = !1, this;\n }\n /**\n * Hides the MainButton loading indicator.\n */\n hideLoader() {\n return this.isLoaderVisible = !1, this;\n }\n set isEnabled(s) {\n this.setParams({ isEnabled: s });\n }\n /**\n * True if the MainButton is enabled.\n */\n get isEnabled() {\n return this.get(\"isEnabled\");\n }\n set isLoaderVisible(s) {\n this.setParams({ isLoaderVisible: s });\n }\n /**\n * True if the MainButton loader is visible.\n */\n get isLoaderVisible() {\n return this.get(\"isLoaderVisible\");\n }\n set isVisible(s) {\n this.setParams({ isVisible: s });\n }\n /**\n * True if the MainButton is visible.\n */\n get isVisible() {\n return this.get(\"isVisible\");\n }\n /**\n * Shows the MainButton.\n *\n * Note that opening the Mini App from the attachment menu hides the main button until the\n * user interacts with the Mini App interface.\n */\n show() {\n return this.isVisible = !0, this;\n }\n /**\n * Shows a loading indicator on the Main Button.\n */\n showLoader() {\n return this.isLoaderVisible = !0, this;\n }\n /**\n * Sets a new MainButton text. Minimal length for the text is 1 symbol, and maximum is 64 symbols.\n * @param text - a new text.\n */\n setText(s) {\n return this.setParams({ text: s });\n }\n /**\n * Sets a new Main Button text color.\n * @param textColor - new text color.\n */\n setTextColor(s) {\n return this.setParams({ textColor: s });\n }\n /**\n * Updates current Main Button color.\n * @param bgColor - color to set.\n */\n setBgColor(s) {\n return this.setParams({ bgColor: s });\n }\n /**\n * Allows setting multiple Main Button parameters.\n * @param params - Main Button parameters.\n */\n setParams(s) {\n return this.set(s), this.commit(), this;\n }\n /**\n * The MainButton text.\n */\n get text() {\n return this.get(\"text\");\n }\n /**\n * The MainButton text color.\n */\n get textColor() {\n return this.get(\"textColor\");\n }\n}\nconst hs = l(\n \"mainButton\",\n ({\n postEvent: e,\n themeParams: t,\n state: s = {\n isVisible: !1,\n isEnabled: !1,\n text: \"\",\n isLoaderVisible: !1,\n textColor: t.buttonTextColor || \"#ffffff\",\n bgColor: t.buttonColor || \"#000000\"\n }\n }) => new Ne({ ...s, postEvent: e })\n);\nfunction De() {\n return K({\n contact: d({\n userId: {\n type: y(),\n from: \"user_id\"\n },\n phoneNumber: {\n type: h(),\n from: \"phone_number\"\n },\n firstName: {\n type: h(),\n from: \"first_name\"\n },\n lastName: {\n type: h().optional(),\n from: \"last_name\"\n }\n }),\n authDate: {\n type: mt(),\n from: \"auth_date\"\n },\n hash: h()\n }, \"RequestedContact\");\n}\nfunction It(e, t) {\n return (s) => {\n const [n, r] = t[s];\n return v(n, r, e);\n };\n}\nfunction Ve(e) {\n return new Promise((t) => {\n setTimeout(t, e);\n });\n}\nclass $e extends q {\n constructor({ postEvent: s, createRequestId: n, version: r, botInline: i, ...a }) {\n super(a, r, {\n requestPhoneAccess: \"web_app_request_phone\",\n requestWriteAccess: \"web_app_request_write_access\",\n switchInlineQuery: \"web_app_switch_inline_query\",\n setHeaderColor: \"web_app_set_header_color\",\n setBackgroundColor: \"web_app_set_background_color\"\n });\n c(this, \"botInline\");\n c(this, \"postEvent\");\n c(this, \"createRequestId\");\n c(this, \"requestPhoneAccessPromise\");\n c(this, \"requestWriteAccessPromise\");\n /**\n * Checks if specified method parameter is supported by current component.\n */\n c(this, \"supportsParam\");\n this.createRequestId = n, this.postEvent = s, this.botInline = i;\n const o = this.supports.bind(this);\n this.supports = (p) => o(p) ? p !== \"switchInlineQuery\" || i : !1, this.supportsParam = It(r, {\n \"setHeaderColor.color\": [\"web_app_set_header_color\", \"color\"]\n });\n }\n /**\n * Attempts to get requested contact.\n * @param timeout - request timeout.\n */\n async getRequestedContact({\n timeout: s = 1e4\n } = {}) {\n return De().parse(\n await S(\n \"getRequestedContact\",\n {},\n this.createRequestId(),\n { postEvent: this.postEvent, timeout: s }\n )\n );\n }\n /**\n * The Mini App background color.\n * @example \"#ffaabb\"\n */\n get bgColor() {\n return this.get(\"bgColor\");\n }\n /**\n * Closes the Mini App.\n */\n close() {\n this.postEvent(\"web_app_close\");\n }\n /**\n * The Mini App header color.\n * @example \"#ffaabb\"\n * @example \"bg_color\"\n */\n get headerColor() {\n return this.get(\"headerColor\");\n }\n /**\n * True if the Mini App is currently launched in bot inline mode.\n */\n get isBotInline() {\n return this.botInline;\n }\n /**\n * True if current Mini App background color is recognized as dark.\n */\n get isDark() {\n return bt(this.bgColor);\n }\n /**\n * Informs the Telegram app that the Mini App is ready to be displayed.\n *\n * It is recommended to call this method as early as possible, as soon as all essential\n * interface elements loaded. Once this method called, the loading placeholder is hidden\n * and the Mini App shown.\n *\n * If the method not called, the placeholder will be hidden only when the page fully loaded.\n */\n ready() {\n this.postEvent(\"web_app_ready\");\n }\n /**\n * Requests current user contact information. In contrary to requestPhoneAccess, this method\n * returns promise with contact information that rejects in case, user denied access, or request\n * failed.\n * @param options - additional options.\n */\n async requestContact({ timeout: s = 5e3 } = {}) {\n try {\n return await this.getRequestedContact();\n } catch {\n }\n if (await this.requestPhoneAccess() !== \"sent\")\n throw new Error(\"Access denied.\");\n const r = Date.now() + s;\n let i = 50;\n return gt(async () => {\n for (; Date.now() < r; ) {\n try {\n return await this.getRequestedContact();\n } catch {\n }\n await Ve(i), i += 50;\n }\n throw ft(s);\n }, s);\n }\n /**\n * Requests current user phone access. Method returns promise, which resolves\n * status of the request. In case, user accepted the request, Mini App bot will receive\n * the according notification.\n *\n * To obtain the retrieved information instead, utilize the `requestContact` method.\n * @param options - additional options.\n * @see requestContact\n */\n async requestPhoneAccess(s = {}) {\n return this.requestPhoneAccessPromise || (this.requestPhoneAccessPromise = _({\n ...s,\n method: \"web_app_request_phone\",\n event: \"phone_requested\",\n postEvent: this.postEvent\n }).then(({ status: n }) => n).finally(() => this.requestPhoneAccessPromise = void 0)), this.requestPhoneAccessPromise;\n }\n /**\n * Requests write message access to current user.\n * @param options - additional options.\n */\n async requestWriteAccess(s = {}) {\n return this.requestWriteAccessPromise || (this.requestWriteAccessPromise = _({\n ...s,\n method: \"web_app_request_write_access\",\n event: \"write_access_requested\",\n postEvent: this.postEvent\n }).then(({ status: n }) => n).finally(() => this.requestWriteAccessPromise = void 0)), this.requestWriteAccessPromise;\n }\n /**\n * A method used to send data to the bot. When this method called, a service message sent to\n * the bot containing the data of the length up to 4096 bytes, and the Mini App closed. See the\n * field `web_app_data` in the class [Message](https://core.telegram.org/bots/api#message).\n *\n * This method is only available for Mini Apps launched via a Keyboard button.\n * @param data - data to send to bot.\n * @throws {Error} data has incorrect size.\n */\n sendData(s) {\n const { size: n } = new Blob([s]);\n if (!n || n > 4096)\n throw new Error(`Passed data has incorrect size: ${n}`);\n this.postEvent(\"web_app_data_send\", { data: s });\n }\n /**\n * Updates current Mini App header color.\n *\n * @see No effect on desktop: https://github.com/Telegram-Mini-Apps/tma.js/issues/9\n * @see Works incorrectly in Android: https://github.com/Telegram-Mini-Apps/tma.js/issues/8\n * @param color - color key or RGB color.\n */\n setHeaderColor(s) {\n this.postEvent(\"web_app_set_header_color\", Q(s) ? { color: s } : { color_key: s }), this.set(\"headerColor\", s);\n }\n /**\n * Updates current Mini App background color.\n *\n * @see No effect on desktop: https://github.com/Telegram-Mini-Apps/tma.js/issues/9\n * @see Works incorrectly in Android: https://github.com/Telegram-Mini-Apps/tma.js/issues/8\n * @param color - RGB color.\n */\n setBgColor(s) {\n this.postEvent(\"web_app_set_background_color\", { color: s }), this.set(\"bgColor\", s);\n }\n /**\n * Inserts the bot's username and the specified inline query in the current chat's input field.\n * Query may be empty, in which case only the bot's username will be inserted. The client prompts\n * the user to choose a specific chat, then opens that chat and inserts the bot's username and\n * the specified inline query in the input field.\n * @param text - text which should be inserted in the input after the current bot name. Max\n * length is 256 symbols.\n * @param chatTypes - List of chat types which could be chosen to send the message. Could be\n * empty list.\n */\n switchInlineQuery(s, n = []) {\n if (!this.supports(\"switchInlineQuery\") && !this.isBotInline)\n throw new Error(\"Method is unsupported because Mini App should be launched in inline mode.\");\n this.postEvent(\"web_app_switch_inline_query\", { query: s, chat_types: n });\n }\n}\nconst ps = l(\n \"miniApp\",\n ({\n themeParams: e,\n botInline: t = !1,\n state: s = {\n bgColor: e.bgColor || \"#ffffff\",\n headerColor: e.headerBgColor || \"#000000\"\n },\n ...n\n }) => new $e({ ...n, ...s, botInline: t })\n);\nfunction Me(e) {\n const t = e.message.trim(), s = (e.title || \"\").trim(), n = e.buttons || [];\n let r;\n if (s.length > 64)\n throw new Error(`Title has incorrect size: ${s.length}`);\n if (!t.length || t.length > 256)\n throw new Error(`Message has incorrect size: ${t.length}`);\n if (n.length > 3)\n throw new Error(`Buttons have incorrect size: ${n.length}`);\n return n.length ? r = n.map((i) => {\n const { id: a = \"\" } = i;\n if (a.length > 64)\n throw new Error(`Button ID has incorrect size: ${a}`);\n if (!i.type || i.type === \"default\" || i.type === \"destructive\") {\n const o = i.text.trim();\n if (!o.length || o.length > 64) {\n const p = i.type || \"default\";\n throw new Error(`Button text with type \"${p}\" has incorrect size: ${i.text.length}`);\n }\n return { ...i, text: o, id: a };\n }\n return { ...i, id: a };\n }) : r = [{ type: \"close\", id: \"\" }], { title: s, message: t, buttons: r };\n}\nclass Le extends q {\n constructor(t, s, n) {\n super({ isOpened: t }, s, { open: \"web_app_open_popup\" }), this.postEvent = n;\n }\n set isOpened(t) {\n this.set(\"isOpened\", t);\n }\n /**\n * True if the Popup is opened.\n */\n get isOpened() {\n return this.get(\"isOpened\");\n }\n /**\n * A method that shows a native popup described by the `params` argument.\n * Promise will be resolved when popup is closed. Resolved value will have\n * an identifier of pressed button.\n *\n * In case, user clicked outside the popup or clicked top right popup close\n * button, null will be returned.\n *\n * @param options - popup parameters.\n * @throws {Error} Popup is already opened.\n */\n async open(t) {\n if (this.isOpened)\n throw new Error(\"Popup is already opened.\");\n this.isOpened = !0;\n try {\n const { button_id: s = null } = await _({\n event: \"popup_closed\",\n method: \"web_app_open_popup\",\n postEvent: this.postEvent,\n params: Me(t)\n });\n return s;\n } finally {\n this.isOpened = !1;\n }\n }\n}\nconst us = l(\n ({ postEvent: e, version: t }) => new Le(!1, t, e)\n);\nclass Be extends q {\n constructor(t, s, n) {\n super({ isOpened: t }, s, {\n close: \"web_app_close_scan_qr_popup\",\n open: \"web_app_open_scan_qr_popup\"\n }), this.postEvent = n;\n }\n /**\n * Closes scanner.\n */\n close() {\n this.postEvent(\"web_app_close_scan_qr_popup\"), this.isOpened = !1;\n }\n set isOpened(t) {\n this.set(\"isOpened\", t);\n }\n /**\n * Returns true in case, QR scanner is currently opened.\n */\n get isOpened() {\n return this.get(\"isOpened\");\n }\n /**\n * Opens scanner with specified title shown to user. Method returns promise\n * with scanned QR content in case, it was scanned. It will contain null in\n * case, scanner was closed.\n * @param text - title to display.\n */\n async open(t) {\n if (this.isOpened)\n throw new Error(\"QR scanner is already opened.\");\n this.isOpened = !0;\n try {\n return (await _({\n method: \"web_app_open_scan_qr_popup\",\n event: [\"qr_text_received\", \"scan_qr_popup_closed\"],\n postEvent: this.postEvent,\n params: { text: t }\n }) || {}).data || null;\n } finally {\n this.isOpened = !1;\n }\n }\n}\nconst ls = l(\n ({ version: e, postEvent: t }) => new Be(!1, e, t)\n);\nclass Oe extends Z {\n constructor(s, n, r) {\n super({ isVisible: s }, n, {\n show: \"web_app_setup_settings_button\",\n hide: \"web_app_setup_settings_button\"\n });\n /**\n * Adds a new event listener.\n * @param event - event to listen.\n * @param listener - listener to add.\n */\n c(this, \"on\", (s, n) => s === \"click\" ? b(\"settings_button_pressed\", n) : this.state.on(s, n));\n /**\n * Removes the event listener.\n * @param event - event to listen.\n * @param listener - listener to remove.\n */\n c(this, \"off\", (s, n) => s === \"click\" ? L(\"settings_button_pressed\", n) : this.state.off(s, n));\n this.postEvent = r;\n }\n set isVisible(s) {\n this.set(\"isVisible\", s), this.postEvent(\"web_app_setup_settings_button\", { is_visible: s });\n }\n /**\n * True if the SettingsButton is visible.\n */\n get isVisible() {\n return this.get(\"isVisible\");\n }\n /**\n * Hides the SettingsButton.\n */\n hide() {\n this.isVisible = !1;\n }\n /**\n * Shows the SettingsButton.\n */\n show() {\n this.isVisible = !0;\n }\n}\nconst ds = l(\n \"settingsButton\",\n ({\n version: e,\n postEvent: t,\n state: s = { isVisible: !1 }\n }) => new Oe(s.isVisible, e, t)\n);\nfunction qt(e) {\n return vt().parse(e);\n}\nclass Ue extends X {\n /**\n * @since v6.10\n */\n get accentTextColor() {\n return this.get(\"accentTextColor\");\n }\n get bgColor() {\n return this.get(\"bgColor\");\n }\n get buttonColor() {\n return this.get(\"buttonColor\");\n }\n get buttonTextColor() {\n return this.get(\"buttonTextColor\");\n }\n get destructiveTextColor() {\n return this.get(\"destructiveTextColor\");\n }\n /**\n * Returns the copy of the internal state of the current component instance.\n */\n getState() {\n return this.clone();\n }\n /**\n * @since v6.10\n */\n get headerBgColor() {\n return this.get(\"headerBgColor\");\n }\n get hintColor() {\n return this.get(\"hintColor\");\n }\n /**\n * @returns True in case, current color scheme is recognized as dark. This\n * value is calculated according to theme bg color.\n */\n get isDark() {\n return !this.bgColor || bt(this.bgColor);\n }\n get linkColor() {\n return this.get(\"linkColor\");\n }\n get secondaryBgColor() {\n return this.get(\"secondaryBgColor\");\n }\n /**\n * @since v6.10\n */\n get sectionBgColor() {\n return this.get(\"sectionBgColor\");\n }\n /**\n * @since v6.10\n */\n get sectionHeaderTextColor() {\n return this.get(\"sectionHeaderTextColor\");\n }\n /**\n * Starts listening to the external theme changes and applies them.\n * @returns Function to stop listening.\n */\n listen() {\n return b(\"theme_changed\", (t) => {\n this.set(qt(t.theme_params));\n });\n }\n /**\n * @since v6.10\n */\n get subtitleTextColor() {\n return this.get(\"subtitleTextColor\");\n }\n get textColor() {\n return this.get(\"textColor\");\n }\n}\nconst _s = l(\n \"themeParams\",\n ({ themeParams: e, state: t = e, addCleanup: s }) => {\n const n = new Ue(t);\n return s(n.listen()), n;\n }\n);\nfunction fs(e = {}) {\n return _({\n ...e,\n method: \"web_app_request_theme\",\n event: \"theme_changed\"\n }).then(qt);\n}\nclass We extends tt {\n constructor(s, n, r) {\n super(s, { readTextFromClipboard: \"web_app_read_text_from_clipboard\" });\n /**\n * Checks if specified method parameter is supported by current component.\n */\n c(this, \"supportsParam\");\n this.version = s, this.createRequestId = n, this.postEvent = r, this.supportsParam = It(s, {\n \"openLink.tryInstantView\": [\"web_app_open_link\", \"try_instant_view\"]\n });\n }\n /**\n * Opens a link in an external browser. The Mini App will not be closed.\n *\n * Note that this method can be called only in response to the user\n * interaction with the Mini App interface (e.g. click inside the Mini App\n * or on the main button).\n * @param url - URL to be opened.\n * @param tryInstantView\n */\n openLink(s, n) {\n const r = new URL(s, window.location.href).toString();\n if (!v(\"web_app_open_link\", this.version)) {\n window.open(r, \"_blank\");\n return;\n }\n this.postEvent(\"web_app_open_link\", {\n url: r,\n ...typeof n == \"boolean\" ? { try_instant_view: n } : {}\n });\n }\n /**\n * Opens a Telegram link inside Telegram app. The Mini App will be closed. It expects passing\n * link in full format, with hostname \"t.me\".\n * @param url - URL to be opened.\n * @throws {Error} URL has not allowed hostname.\n */\n openTelegramLink(s) {\n const { hostname: n, pathname: r, search: i } = new URL(s, window.location.href);\n if (n !== \"t.me\")\n throw new Error(`URL has not allowed hostname: ${n}. Only \"t.me\" is allowed`);\n if (!v(\"web_app_open_tg_link\", this.version)) {\n window.location.href = s;\n return;\n }\n this.postEvent(\"web_app_open_tg_link\", { path_full: r + i });\n }\n /**\n * Reads text from clipboard and returns string or null. null is returned\n * in cases:\n * - Value in clipboard is not text\n * - Access to clipboard is not allowed\n */\n async readTextFromClipboard() {\n const s = this.createRequestId(), {\n data: n = null\n } = await _({\n method: \"web_app_read_text_from_clipboard\",\n event: \"clipboard_text_received\",\n postEvent: this.postEvent,\n params: { req_id: s },\n capture: _t(s)\n });\n return n;\n }\n}\nconst gs = l(\n ({ version: e, postEvent: t, createRequestId: s }) => new We(e, s, t)\n);\nasync function kt(e = {}) {\n const {\n is_expanded: t,\n is_state_stable: s,\n ...n\n } = await _({\n ...e,\n method: \"web_app_request_viewport\",\n event: \"viewport_changed\"\n });\n return { ...n, isExpanded: t, isStateStable: s };\n}\nfunction x(e) {\n return e < 0 ? 0 : e;\n}\nclass He extends X {\n constructor({ postEvent: s, stableHeight: n, height: r, width: i, isExpanded: a }) {\n super({\n height: x(r),\n isExpanded: a,\n stableHeight: x(n),\n width: x(i)\n });\n c(this, \"postEvent\");\n this.postEvent = s;\n }\n /**\n * Requests viewport information from the Telegram application and updates current Viewport\n * instance.\n * @param options - options to request fresh data.\n */\n async sync(s) {\n const { isStateStable: n, ...r } = await kt(s);\n this.set({\n ...r,\n stableHeight: n ? r.height : this.get(\"stableHeight\")\n });\n }\n /**\n * The current height of the **visible area** of the Mini App.\n *\n * The application can display just the top part of the Mini App, with its lower part remaining\n * outside the screen area. From this position, the user can \"pull\" the Mini App to its\n * maximum height, while the bot can do the same by calling `expand` method. As the position of\n * the Mini App changes, the current height value of the visible area will be updated in real\n * time.\n *\n * Please note that the refresh rate of this value is not sufficient to smoothly follow the\n * lower border of the window. It should not be used to pin interface elements to the bottom\n * of the visible area. It's more appropriate to use the value of the `stableHeight`\n * field for this purpose.\n *\n * @see stableHeight\n */\n get height() {\n return this.get(\"height\");\n }\n /**\n * The height of the visible area of the Mini App in its last stable state.\n *\n * The application can display just the top part of the Mini App, with its lower part remaining\n * outside the screen area. From this position, the user can \"pull\" the Mini App to its\n * maximum height, while the application can do the same by calling `expand` method.\n *\n * Unlike the value of `height`, the value of `stableHeight` does not change as the position\n * of the Mini App changes with user gestures or during animations. The value of `stableHeight`\n * will be updated after all gestures and animations are completed and\n * the Mini App reaches its final size.\n *\n * @see height\n */\n get stableHeight() {\n return this.get(\"stableHeight\");\n }\n /**\n * Starts listening to viewport changes and applies them.\n * @returns Function to stop listening.\n */\n listen() {\n return b(\"viewport_changed\", (s) => {\n const {\n height: n,\n width: r,\n is_expanded: i,\n is_state_stable: a\n } = s, o = x(n);\n this.set({\n height: o,\n isExpanded: i,\n width: x(r),\n ...a ? { stableHeight: o } : {}\n });\n });\n }\n /**\n * True if the Mini App is expanded to the maximum available height. Otherwise, if\n * the Mini App occupies part of the screen and can be expanded to the full height using\n * `expand` method.\n * @see expand\n */\n get isExpanded() {\n return this.get(\"isExpanded\");\n }\n /**\n * Current visible area width.\n */\n get width() {\n return this.get(\"width\");\n }\n /**\n * A method that expands the Mini App to the maximum available height. To find out if the Mini\n * App is expanded to the maximum height, refer to the value of the `isExpanded`.\n * @see isExpanded\n */\n expand() {\n this.postEvent(\"web_app_expand\"), this.set(\"isExpanded\", !0);\n }\n /**\n * True if the current viewport height is stable and is not going to change in the next moment.\n */\n get isStable() {\n return this.stableHeight === this.height;\n }\n}\nconst bs = l(\n \"viewport\",\n async ({ state: e, platform: t, postEvent: s, addCleanup: n }) => {\n let r = !1, i = 0, a = 0, o = 0;\n if (e)\n r = e.isExpanded, i = e.height, a = e.width, o = e.stableHeight;\n else if ([\"macos\", \"tdesktop\", \"unigram\", \"webk\", \"weba\", \"web\"].includes(t))\n r = !0, i = window.innerHeight, a = window.innerWidth, o = window.innerHeight;\n else {\n const u = await kt({ timeout: 1e3, postEvent: s });\n r = u.isExpanded, i = u.height, a = u.width, o = u.isStateStable ? i : 0;\n }\n const p = new He({\n postEvent: s,\n height: i,\n width: a,\n stableHeight: o,\n isExpanded: r\n });\n return n(p.listen()), p;\n }\n);\nfunction m(e, t) {\n document.documentElement.style.setProperty(e, t);\n}\nfunction ws(e, t, s) {\n s || (s = (o) => `--tg-${o}-color`);\n const n = s(\"header\"), r = s(\"bg\"), i = () => {\n const { headerColor: o } = e;\n if (Q(o))\n m(n, o);\n else {\n const { bgColor: p, secondaryBgColor: u } = t;\n o === \"bg_color\" && p ? m(n, p) : o === \"secondary_bg_color\" && u && m(n, u);\n }\n m(r, e.bgColor);\n }, a = [\n t.on(\"change\", i),\n e.on(\"change\", i)\n ];\n return i(), () => a.forEach((o) => o());\n}\nfunction ms(e, t) {\n t || (t = (n) => `--tg-theme-${n.replace(/[A-Z]/g, (r) => `-${r.toLowerCase()}`)}`);\n const s = () => {\n Object.entries(e.getState()).forEach(([n, r]) => {\n r && m(t(n), r);\n });\n };\n return s(), e.on(\"change\", s);\n}\nfunction ys(e, t) {\n t || (t = (u) => `--tg-viewport-${u}`);\n const [\n s,\n n,\n r\n ] = [\"height\", \"width\", \"stable-height\"].map((u) => t(u)), i = () => m(s, `${e.height}px`), a = () => m(n, `${e.width}px`), o = () => m(r, `${e.stableHeight}px`), p = [\n e.on(\"change:height\", i),\n e.on(\"change:width\", a),\n e.on(\"change:stableHeight\", o)\n ];\n return i(), a(), o(), () => p.forEach((u) => u());\n}\nfunction vs(e = !0) {\n const t = [\n b(\"reload_iframe\", () => {\n A(\"iframe_will_reload\"), window.location.reload();\n })\n ], s = () => t.forEach((n) => n());\n if (e) {\n const n = document.createElement(\"style\");\n n.id = \"telegram-custom-styles\", document.head.appendChild(n), t.push(\n b(\"set_custom_style\", (r) => {\n n.innerHTML = r;\n }),\n () => document.head.removeChild(n)\n );\n }\n return A(\"iframe_ready\", { reload_supported: !0 }), s;\n}\nfunction Es() {\n return typeof window > \"u\";\n}\nasync function Ps() {\n if (lt(window))\n return !0;\n try {\n return await _({ method: \"web_app_request_theme\", event: \"theme_changed\", timeout: 100 }), !0;\n } catch {\n return !1;\n }\n}\nfunction Ge(e) {\n return e instanceof V;\n}\nfunction xs(e, t) {\n return Ge(e) && e.type === t;\n}\nfunction B(e, t) {\n let s, n, r;\n return typeof e == \"string\" ? s = e : (s = e.pathname === void 0 ? t : e.pathname, n = e.params, r = e.id), Object.freeze({\n id: r || (Math.random() * 2 ** 14 | 0).toString(16),\n pathname: s,\n params: n\n });\n}\nclass je {\n constructor(t, s, n = A) {\n /**\n * Navigation history.\n */\n c(this, \"history\");\n c(this, \"ee\", new R());\n /**\n * True, if current navigator is currently attached.\n */\n c(this, \"attached\", !1);\n /**\n * Goes to the previous history item.\n */\n c(this, \"back\", () => this.go(-1));\n /**\n * Adds new event listener.\n */\n c(this, \"on\", this.ee.on.bind(this.ee));\n /**\n * Removes event listener.\n */\n c(this, \"off\", this.ee.off.bind(this.ee));\n if (this._index = s, this.postEvent = n, t.length === 0)\n throw f(zt, \"History should not be empty.\");\n if (s < 0 || s >= t.length)\n throw f(\n Ft,\n \"Index should not be zero and higher or equal than history size.\"\n );\n this.history = t.map((r) => B(r, \"\"));\n }\n /**\n * Allows this navigator to control the `BackButton` visibility state. It also tracks the\n * `BackButton` clicks and calls the `back` method.\n */\n attach() {\n this.attached || (this.attached = !0, this.sync(), b(\"back_button_pressed\", this.back));\n }\n /**\n * Currently active history item.\n */\n get current() {\n return this.history[this.index];\n }\n /**\n * Prevents current navigator from controlling the BackButton visibility state.\n */\n detach() {\n this.attached = !1, L(\"back_button_pressed\", this.back);\n }\n /**\n * Goes to the next history item.\n */\n forward() {\n this.go(1);\n }\n /**\n * Changes currently active history item index by the specified delta. This method doesn't\n * change index in case, the updated index points to the non-existing history item. This behavior\n * is preserved until the `fit` argument is specified.\n * @param delta - index delta.\n * @param fit - cuts the delta argument to fit the bounds `[0, history.length - 1]`.\n */\n go(t, s) {\n const n = this.index + t, r = Math.min(\n Math.max(0, n),\n this.history.length - 1\n );\n (n === r || s) && this.replaceAndMove(r, this.history[r]);\n }\n /**\n * Goes to the specified index. Method does nothing in case, passed index is out of bounds.\n *\n * If \"fit\" option was specified and index is out of bounds, it will be cut to the nearest\n * bound.\n * @param index - target index.\n * @param fit - cuts the index argument to fit the bounds `[0, history.length - 1]`.\n */\n goTo(t, s) {\n this.go(t - this.index, s);\n }\n /**\n * True if navigator has items before the current item.\n */\n get hasPrev() {\n return this.index > 0;\n }\n /**\n * True if navigator has items after the current item.\n */\n get hasNext() {\n return this.index !== this.history.length - 1;\n }\n /**\n * Currently active history item index.\n */\n get index() {\n return this._index;\n }\n /**\n * Adds a new history item removing all after the current one.\n * @param item - item to add.\n */\n push(t) {\n this.hasNext && this.history.splice(this.index + 1), this.replaceAndMove(this.index + 1, B(t, this.current.pathname));\n }\n /**\n * Replaces the current history item.\n * @param item - item to replace the current item with.\n */\n replace(t) {\n this.replaceAndMove(this.index, B(t, this.current.pathname));\n }\n /**\n * Sets history item by the specified index.\n * @param index - history item index to replace.\n * @param historyItem - history item to set.\n */\n replaceAndMove(t, s) {\n const n = t - this.index;\n if (!n && this.current === s)\n return;\n const r = this.current;\n if (this.index !== t) {\n const i = this._index;\n this._index = t, this.attached && i > 0 != t > 0 && this.sync();\n }\n this.history[t] = s, this.ee.emit(\"change\", {\n navigator: this,\n from: r,\n to: this.current,\n delta: n\n });\n }\n /**\n * Actualizes the `BackButton` visibility state.\n */\n sync() {\n this.postEvent(\"web_app_setup_back_button\", { is_visible: !!this.index });\n }\n}\nfunction O({\n params: e,\n ...t\n}) {\n return { ...e || { hash: \"\", search: \"\" }, ...t };\n}\nfunction T(e, t) {\n return e.startsWith(t) ? e : `${t}${e}`;\n}\nfunction N(e) {\n return new URL(\n typeof e == \"string\" ? e : `${e.pathname || \"\"}${T(e.search || \"\", \"?\")}${T(e.hash || \"\", \"#\")}`,\n \"http://a\"\n );\n}\nfunction D(e) {\n const t = typeof e == \"string\" ? e.startsWith(\"/\") : !!(e.pathname && e.pathname.startsWith(\"/\")), s = N(e);\n return `${t ? s.pathname : s.pathname.slice(1)}${s.search}${s.hash}`;\n}\nfunction U(e, t, s) {\n let n, r;\n typeof e == \"string\" ? n = e : (n = D(e), s = e.state, r = e.id);\n const { pathname: i, search: a, hash: o } = new URL(n, `http://a${T(t, \"/\")}`);\n return { id: r, pathname: i, params: { hash: o, search: a, state: s } };\n}\nasync function C(e) {\n return e === 0 ? !0 : Promise.race([\n new Promise((t) => {\n const s = j(\"popstate\", () => {\n s(), t(!0);\n });\n window.history.go(e);\n }),\n // Usually, it takes about 1ms to emit this event, but we use some buffer.\n new Promise((t) => {\n setTimeout(t, 50, !1);\n })\n ]);\n}\nasync function ze() {\n if (window.history.length <= 1 || (window.history.pushState(null, \"\"), await C(1 - window.history.length)))\n return;\n let t = await C(-1);\n for (; t; )\n t = await C(-1);\n}\nfunction Nt(e) {\n return N(e).pathname;\n}\nconst rt = 0, W = 1, H = 2;\nclass Dt {\n constructor(t, s, { postEvent: n, hashMode: r = \"classic\", base: i } = {}) {\n c(this, \"navigator\");\n c(this, \"ee\", new R());\n c(this, \"hashMode\");\n c(this, \"base\");\n /**\n * Shows whether the navigator is currently attached to the browser history.\n */\n c(this, \"attached\", !1);\n /**\n * Handles the window \"popstate\" event.\n * @param state - event state.\n */\n c(this, \"onPopState\", ({ state: t }) => {\n if (t === null)\n return this.push(this.parsePath(window.location.href));\n t === rt ? window.history.forward() : t === W && this.back(), t === H && this.forward();\n });\n /**\n * Underlying navigator change event listener.\n */\n c(this, \"onNavigatorChange\", async ({\n to: t,\n from: s,\n delta: n\n }) => {\n this.attached && await this.syncHistory(), this.ee.emit(\"change\", {\n delta: n,\n from: O(s),\n to: O(t),\n navigator: this\n });\n });\n /**\n * Adds new event listener.\n */\n c(this, \"on\", this.ee.on.bind(this.ee));\n /**\n * Removes event listener.\n */\n c(this, \"off\", this.ee.off.bind(this.ee));\n this.navigator = new je(\n t.map((a) => U(a, \"/\")),\n s,\n n\n ), this.navigator.on(\"change\", this.onNavigatorChange), this.hashMode = r, this.base = Nt(i || \"\");\n }\n /**\n * Attaches current navigator to the browser history allowing navigator to manipulate it.\n */\n async attach() {\n this.attached || (this.attached = !0, this.navigator.attach(), window.addEventListener(\"popstate\", this.onPopState), await this.syncHistory());\n }\n /**\n * Goes back in history by 1.\n */\n back() {\n this.navigator.back();\n }\n /**\n * Detaches current navigator from the browser history.\n */\n detach() {\n this.attached = !1, this.navigator.detach(), window.removeEventListener(\"popstate\", this.onPopState);\n }\n /**\n * Goes forward in history.\n */\n forward() {\n return this.navigator.forward();\n }\n /**\n * Current history cursor.\n */\n get index() {\n return this.navigator.index;\n }\n /**\n * Current history item identifier.\n */\n get id() {\n return this.navigator.current.id;\n }\n /**\n * Changes currently active history item index by the specified delta. This method doesn't\n * change index in case, the updated index points to the non-existing history item. This behavior\n * is preserved until the `fit` argument is specified.\n * @param delta - index delta.\n * @param fit - cuts the delta argument to fit the bounds `[0, history.length - 1]`.\n */\n go(t, s) {\n return this.navigator.go(t, s);\n }\n /**\n * Goes to the specified index. Method does nothing in case, passed index is out of bounds.\n *\n * If \"fit\" option was specified and index is out of bounds, it will be cut to the nearest\n * bound.\n * @param index - target index.\n * @param fit - cuts the index argument to fit the bounds `[0, history.length - 1]`.\n */\n goTo(t, s) {\n this.navigator.goTo(t, s);\n }\n /**\n * Current history item hash.\n * @see URL.hash\n * @example\n * \"\", \"#my-hash\"\n */\n get hash() {\n return (this.navigator.current.params || {}).hash || \"\";\n }\n /**\n * True if navigator has items before the current item.\n */\n get hasPrev() {\n return this.navigator.hasPrev;\n }\n /**\n * True if navigator has items after the current item.\n */\n get hasNext() {\n return this.navigator.hasNext;\n }\n /**\n * Navigation history.\n */\n get history() {\n return this.navigator.history.map(O);\n }\n /**\n * Path, including pathname, search and hash.\n * @example Pathname only.\n * \"/pathname\"\n * @example Pathname + search.\n * \"/pathname?search\"\n * @example Pathname + hash.\n * \"/pathname#hash\"\n * @example Pathname + search + hash.\n * \"/pathname?search#hash\"\n */\n get path() {\n return D(this);\n }\n /**\n * Current pathname. Always starts with the slash.\n * @see URL.pathname\n * @example\n * \"/\", \"/abc\"\n */\n get pathname() {\n return this.navigator.current.pathname;\n }\n /**\n * Depending on the current navigation type, parses incoming path and returns it presented as\n * an object. In other words, this method parses the passed path and returns object, describing\n * how the navigator \"sees\" it.\n *\n * @example Hash mode is omitted.\n * parsePath('/abc?a=1#hash');\n * // { pathname: '/abc', search: '?a=1', hash: '#hash' }\n * parsePath('http://example.com/abc?a=1#hash');\n * // { pathname: '/abc', search: '?a=1', hash: '#hash' }\n *\n * @example Hash mode is enabled.\n * parsePath('/abc?a=1#tma?is=cool#yeah');\n * // { pathname: '/tma', search: '?is=cool', hash: '#yeah' }\n * parsePath('http://example.com/abc?a=1#tma?is=cool#yeah');\n * // { pathname: '/tma', search: '?is=cool', hash: '#yeah' }\n */\n parsePath(t) {\n let s = N(t);\n return this.hashMode && (s = N(s.hash.slice(1))), {\n pathname: s.pathname,\n search: s.search,\n hash: s.hash\n };\n }\n push(t, s) {\n const n = U(t, this.path), { state: r = s } = n.params;\n this.navigator.push({ ...n, params: { ...n.params, state: r } });\n }\n replace(t, s) {\n const n = U(t, this.path), { state: r = s } = n.params;\n this.navigator.replace({ ...n, params: { ...n.params, state: r } });\n }\n /**\n * Combines the navigator `base` property with the passed path data applying the navigator\n * navigation mode.\n * @param value - path presented as string or URLLike.\n */\n renderPath(t) {\n const s = (this.base.length === 1 ? \"\" : this.base) + T(D(t), \"/\");\n return this.hashMode ? T(s.slice(1), this.hashMode === \"classic\" ? \"#\" : \"#/\") : s;\n }\n /**\n * Synchronizes current navigator state with browser history.\n */\n async syncHistory() {\n window.removeEventListener(\"popstate\", this.onPopState);\n const { state: t } = this, s = this.renderPath(this);\n await ze(), this.hasPrev && this.hasNext ? (window.history.replaceState(W, \"\"), window.history.pushState(t, \"\", s), window.history.pushState(H, \"\"), await C(-1)) : this.hasPrev ? (window.history.replaceState(W, \"\"), window.history.pushState(t, \"\", s)) : this.hasNext ? (window.history.replaceState(t, s), window.history.pushState(H, \"\"), await C(-1)) : (window.history.replaceState(rt, \"\"), window.history.pushState(t, \"\", s)), window.addEventListener(\"popstate\", this.onPopState);\n }\n /**\n * Current query parameters.\n * @see URL.search\n * @example\n * \"\", \"?\", \"?a=1\"\n */\n get search() {\n return (this.navigator.current.params || {}).search || \"\";\n }\n /**\n * Current history item state.\n */\n get state() {\n return (this.navigator.current.params || {}).state;\n }\n}\nfunction Fe(e) {\n e || (e = {});\n const { href: t, hash: s } = window.location;\n let n = D(\n e.hashMode === null ? t : s.includes(\"?\") ? s.slice(1) : `?${s.slice(1)}`\n );\n const r = e.base ? Nt(e.base) : void 0;\n if (r) {\n if (!n.startsWith(r))\n throw f(\n Jt,\n `Path \"${n}\" expected to be starting with \"${r}\"`\n );\n n = n.slice(r.length);\n }\n return new Dt([n], 0, e);\n}\nfunction Ss(e) {\n const t = e.match(/#(.+)/);\n return t ? t[1] : null;\n}\nfunction Je(e, t) {\n if (At()) {\n const s = sessionStorage.getItem(e);\n if (s)\n try {\n const { index: n, history: r } = JSON.parse(s);\n return new Dt(r, n, t);\n } catch (n) {\n console.error(\"Unable to restore hash navigator state.\", n);\n }\n }\n return Fe(t);\n}\nfunction Cs(e, t) {\n const s = Je(e, t), n = () => sessionStorage.setItem(e, JSON.stringify({\n index: s.index,\n history: s.history\n }));\n return s.on(\"change\", n), n(), s;\n}\nexport {\n pe as BackButton,\n je as BasicNavigator,\n Pe as BiometryManager,\n Dt as BrowserNavigator,\n Se as ClosingBehavior,\n Te as CloudStorage,\n Jt as ERR_INVALID_PATH_BASE,\n Ht as ERR_INVOKE_CUSTOM_METHOD_RESPONSE,\n Ut as ERR_METHOD_PARAMETER_UNSUPPORTED,\n Ot as ERR_METHOD_UNSUPPORTED,\n zt as ERR_NAVIGATION_HISTORY_EMPTY,\n Ft as ERR_NAVIGATION_INDEX_INVALID,\n Ze as ERR_NAVIGATION_ITEM_INVALID,\n ct as ERR_PARSE,\n Ke as ERR_SSR_INIT,\n Gt as ERR_TIMED_OUT,\n jt as ERR_UNEXPECTED_TYPE,\n Wt as ERR_UNKNOWN_ENV,\n R as EventEmitter,\n Ie as HapticFeedback,\n qe as InitData,\n ke as Invoice,\n Ne as MainButton,\n $e as MiniApp,\n Le as Popup,\n Be as QRScanner,\n V as SDKError,\n Oe as SettingsButton,\n Ue as ThemeParams,\n We as Utils,\n He as Viewport,\n Ae as array,\n ws as bindMiniAppCSSVars,\n ms as bindThemeParamsCSSVars,\n ys as bindViewportCSSVars,\n w as boolean,\n _t as captureSameReq,\n z as classNames,\n re as compareVersions,\n Fe as createBrowserNavigatorFromLocation,\n ce as createPostEvent,\n N as createSafeURL,\n mt as date,\n Ss as getHash,\n Nt as getPathname,\n es as initBackButton,\n ss as initBiometryManager,\n ns as initClosingBehavior,\n rs as initCloudStorage,\n is as initHapticFeedback,\n os as initInitData,\n cs as initInvoice,\n hs as initMainButton,\n ps as initMiniApp,\n Cs as initNavigator,\n us as initPopup,\n ls as initQRScanner,\n ds as initSettingsButton,\n _s as initThemeParams,\n gs as initUtils,\n bs as initViewport,\n vs as initWeb,\n S as invokeCustomMethod,\n bt as isColorDark,\n oe as isIframe,\n At as isPageReload,\n Q as isRGB,\n Qt as isRGBShort,\n Ge as isSDKError,\n xs as isSDKErrorOfType,\n Es as isSSR,\n Ps as isTMA,\n d as json,\n ts as mergeClassNames,\n y as number,\n L as off,\n b as on,\n as as parseInitData,\n Et as parseLaunchParams,\n qt as parseThemeParams,\n A as postEvent,\n _ as request,\n xe as requestBiometryInfo,\n fs as requestThemeParams,\n kt as requestViewport,\n ye as retrieveLaunchParams,\n ut as rgb,\n K as searchParams,\n we as serializeLaunchParams,\n be as serializeThemeParams,\n m as setCSSVar,\n Ye as setDebug,\n Xe as setTargetOrigin,\n h as string,\n Mt as subscribe,\n v as supports,\n ae as targetOrigin,\n pt as toRGB,\n ot as unsubscribe,\n D as urlToPath,\n gt as withTimeout\n};\n//# sourceMappingURL=index.js.map\n","import type { ComponentType } from 'react';\n\nimport type { Hook, HookRaw, HookResult } from './createHooks.js';\n\nexport interface HOC<H extends HookRaw<any> | HookResult<any>> {\n /**\n * Returns a component which is a HOC, passing some hook result to the wrapped component.\n * @param propKey - key, which will be used to pass a hook result.\n * @param ssr - is SSR mode enabled.\n * @param Component - component to wrap.\n */<\n PropKey extends string,\n SSR extends boolean,\n Props,\n >(\n propKey: PropKey,\n ssr: SSR,\n Component: ComponentType<Omit<Props, PropKey> & {\n [K in PropKey]: ReturnType<Hook<Exclude<ReturnType<H>, undefined>, SSR>>\n }>,\n ): ComponentType<Omit<Props, PropKey>>;\n}\n\nexport type HOCs<HRaw extends HookRaw<any>, HResult extends HookResult<any>> = [\n HOC<HRaw>,\n HOC<HResult>\n];\n\n/**\n * Based on the passed hook, creates function returning HOC. Created HOC passes hook result\n * to the wrapped component.\n * @param useRaw - hook, returning a raw SDK item.\n * @param useResult - hook, returning an SDK item with the result.\n */\nexport function createHOCs<HRaw extends HookRaw<any>, HResult extends HookResult<any>>(\n useRaw: HRaw,\n useResult: HResult,\n): HOCs<HRaw, HResult> {\n function createHOC<Hook extends HookRaw<any> | HookResult<any>>(hook: Hook): HOC<Hook> {\n return function HOC(propKey, ssr, Component) {\n return (props) => {\n const merged: any = {\n ...props,\n [propKey]: hook(ssr as any),\n };\n\n return <Component {...merged}/>;\n };\n };\n }\n\n return [createHOC(useRaw), createHOC(useResult)];\n}\n","import { createContext, useContext } from 'react';\n\nimport type { SDKContextType } from './SDKProvider.types.js';\n\nexport const SDKContext = createContext<SDKContextType | undefined>(undefined);\n\n/**\n * @throws Error useSDK was used outside SDKProvider.\n * @returns SDK context.\n */\nexport function useSDK(): SDKContextType {\n const context = useContext(SDKContext);\n if (!context) {\n throw new Error('useSDK was used outside the SDKProvider.');\n }\n return context;\n}\n","import { type CleanupFn, isSSR, type AnyFn, If } from '@tma.js/sdk';\nimport { useEffect, useState } from 'react';\n\nimport { useSDK } from './SDKProvider/SDKContext.js';\nimport type { SDKContextItem } from './SDKProvider/SDKProvider.types.js';\n\ntype ExtractResult<T> = T extends [result: infer R, cleanup: CleanupFn]\n ? ExtractResult<R>\n : T extends PromiseLike<any>\n ? Awaited<T> | undefined\n : T;\n\ntype HookFnResult<Fn extends AnyFn> = ExtractResult<ReturnType<Fn>>;\n\ninterface CompleteHook<Result> extends Hook<Result, true>, Hook<Result, false> {\n}\n\nexport type Hook<Result, SSR extends boolean> = If<\n SSR,\n (ssr: true) => Result | undefined,\n (ssr?: false) => Result\n>;\n\nexport interface HookRaw<Factory extends AnyFn>\n extends CompleteHook<SDKContextItem<HookFnResult<Factory>>> {\n}\n\nexport interface HookResult<Factory extends AnyFn> extends CompleteHook<HookFnResult<Factory>> {\n}\n\nexport type Hooks<Factory extends AnyFn> = [\n useRaw: HookRaw<Factory>,\n useResult: HookResult<Factory>,\n];\n\n/**\n * @returns Hooks, simplifying work process with the SDK components.\n */\nexport function createHooks<Factory extends AnyFn>(factory: Factory): Hooks<Factory> {\n function useRaw(ssr?: false): SDKContextItem<HookFnResult<Factory>>;\n function useRaw(ssr: true): SDKContextItem<HookFnResult<Factory>> | undefined;\n function useRaw(ssr?: boolean): SDKContextItem<HookFnResult<Factory>> | undefined {\n const sdk = useSDK();\n\n const [result, setResult] = useState(\n ssr\n // If SSR mode is enabled, we have no initial value. In this case we will set something\n // only in useEffect.\n ? undefined\n // Otherwise, we are retrieving this factory result.\n : () => {\n if (isSSR()) {\n throw new Error('Using hooks on the server side, you must explicitly specify ssr = true option');\n }\n return sdk.use(factory);\n },\n );\n\n // Each time sdk context changes, we are updating the local value.\n useEffect(() => {\n setResult(sdk.use(factory));\n }, [sdk]);\n\n return result as SDKContextItem<HookFnResult<Factory>> | undefined;\n }\n\n function useResult(ssr?: false): HookFnResult<Factory>;\n function useResult(ssr: true): HookFnResult<Factory> | undefined;\n function useResult(ssr?: boolean): HookFnResult<Factory> | undefined {\n const raw = useRaw(ssr as any);\n if (!raw) {\n return;\n }\n if ('error' in raw) {\n throw raw.error;\n }\n return raw.result;\n }\n\n return [useRaw, useResult];\n}\n","import { initBackButton } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useBackButtonRaw, useBackButton] = createHooks(initBackButton);\n\nexport const [withBackButtonRaw, withBackButton] = createHOCs(\n useBackButtonRaw,\n useBackButton,\n);\n","import { initBiometryManager } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useBiometryManagerRaw, useBiometryManager] = createHooks(initBiometryManager);\n\nexport const [withBiometryManagerRaw, withBiometryManager] = createHOCs(\n useBiometryManagerRaw,\n useBiometryManager,\n);\n","import { initClosingBehavior } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useClosingBehaviorRaw, useClosingBehavior] = createHooks(initClosingBehavior);\n\nexport const [withClosingBehaviorRaw, withClosingBehavior] = createHOCs(\n useClosingBehaviorRaw,\n useClosingBehavior,\n);\n","import { initCloudStorage } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useCloudStorageRaw, useCloudStorage] = createHooks(initCloudStorage);\n\nexport const [withCloudStorageRaw, withCloudStorage] = createHOCs(\n useCloudStorageRaw,\n useCloudStorage,\n);\n","import { initHapticFeedback } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useHapticFeedbackRaw, useHapticFeedback] = createHooks(initHapticFeedback);\n\nexport const [withHapticFeedbackRaw, withHapticFeedback] = createHOCs(\n useHapticFeedbackRaw,\n useHapticFeedback,\n);\n","import { initInitData } from '@tma.js/sdk';\n\nimport { createHooks } from '../createHooks.js';\nimport { createHOCs } from '../createHOCs.js';\n\nexport const [useInitDataRaw, useInitData] = createHooks(initInitData);\n\nexport const [withInitDataRaw, withInitData] = createHOCs(useInitDataRaw, useInitData);\n","import { initInvoice } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useInvoiceRaw, useInvoice] = createHooks(initInvoice);\n\nexport const [withInvoiceRaw, withInvoice] = createHOCs(useInvoiceRaw, useInvoice);\n","import { initMainButton } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useMainButtonRaw, useMainButton] = createHooks(initMainButton);\n\nexport const [withMainButtonRaw, withMainButton] = createHOCs(useMainButtonRaw, useMainButton);\n","import { initMiniApp } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useMiniAppRaw, useMiniApp] = createHooks(initMiniApp);\n\nexport const [withMiniAppRaw, withMiniApp] = createHOCs(useMiniAppRaw, useMiniApp);\n","import { initPopup } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [usePopupRaw, usePopup] = createHooks(initPopup);\n\nexport const [withPopupRaw, withPopup] = createHOCs(usePopupRaw, usePopup);\n","import { initQRScanner } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useQRScannerRaw, useQRScanner] = createHooks(initQRScanner);\n\nexport const [withQRScannerRaw, withQRScanner] = createHOCs(useQRScannerRaw, useQRScanner);\n","import { initSettingsButton } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useSettingsButtonRaw, useSettingsButton] = createHooks(initSettingsButton);\n\nexport const [withSettingsButtonRaw, withSettingsButton] = createHOCs(\n useSettingsButtonRaw,\n useSettingsButton,\n);\n","import { initThemeParams } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useThemeParamsRaw, useThemeParams] = createHooks(initThemeParams);\n\nexport const [withThemeParamsRaw, withThemeParams] = createHOCs(useThemeParamsRaw, useThemeParams);\n","import { useMemo } from 'react';\nimport { type LaunchParams, retrieveLaunchParams } from '@tma.js/sdk';\n\n/**\n * @returns Launch parameters.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}","import { initUtils } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useUtilsRaw, useUtils] = createHooks(initUtils);\n\nexport const [withUtilsRaw, withUtils] = createHOCs(useUtilsRaw, useUtils);\n","import { initViewport } from '@tma.js/sdk';\n\nimport { createHOCs } from '../createHOCs.js';\nimport { createHooks } from '../createHooks.js';\n\nexport const [useViewportRaw, useViewport] = createHooks(initViewport);\n\nexport const [withViewportRaw, withViewport] = createHOCs(useViewportRaw, useViewport);\n","import { CleanupFn, initWeb, isIframe, setDebug } from '@tma.js/sdk';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { AnyFn } from '@tma.js/sdk';\n\nimport { SDKContext } from './SDKContext.js';\nimport {\n SDKContextType,\n SDKProviderProps,\n SDKContextItem,\n} from './SDKProvider.types.js';\n\n/**\n * Provides access to the SDK components and initializes some event listeners for the web version\n * of Telegram.\n */\nexport function SDKProvider({ children, acceptCustomStyles, debug }: SDKProviderProps) {\n // We need it to safely call state setters as long as React forbids these\n // operations on unmounted components.\n const isMountedRef = useRef(true);\n\n // Map, containing all registered factories results.\n const [cache, setCache] = useState(new Map<AnyFn, SDKContextItem<any>>());\n const cacheRef = useRef(cache);\n\n // Safely mutates cache with specified function.\n const mutateCache = useCallback(\n (mutate?: (state: Map<AnyFn, SDKContextItem<any>>) => void) => {\n if (isMountedRef.current) {\n setCache(c => {\n mutate && mutate(c);\n return new Map(c);\n });\n }\n }, [],\n );\n\n const context = useMemo<SDKContextType>(() => ({\n use(factory, ...args) {\n // Try to get a cached value.\n const cached = cache.get(factory);\n if (cached) {\n return cached;\n }\n\n // Call factory and retrieve result.\n let result: any;\n let error: any;\n try {\n result = factory(...args);\n } catch (err) {\n error = err;\n }\n\n function withCacheSet(item: SDKContextItem<any>): SDKContextItem<any> {\n cache.set(factory, item);\n return item;\n }\n\n // If an error occurred, return it.\n if (error) {\n return withCacheSet({ error });\n }\n\n // Result may represent a tuple, where a result is placed on the first place, and\n // a cleanup function on the second one.\n let cleanup: CleanupFn | undefined;\n if (Array.isArray(result)) {\n cleanup = result[1];\n result = result[0];\n }\n\n // We may have a case, when result is empty (most likely undefined), for example, when\n // we initialize InitData. In this case we just return the result.\n if (!result) {\n return withCacheSet({ result, cleanup });\n }\n\n // Adds change event listener to the value if required, and adds bound listener to the\n // cleanup function.\n function finalize(v: any): SDKContextItem<any> {\n if ('on' in v) {\n // Forcefully refresh cache in case, something in this value changed.\n const off = v.on('change', () => mutateCache());\n const cleanupOriginal = cleanup;\n cleanup = () => {\n cleanupOriginal && cleanupOriginal();\n off();\n };\n }\n return { result: v, cleanup };\n }\n\n if (result instanceof Promise) {\n result.then(\n (value: any) => mutateCache(c => c.set(factory, finalize(value))),\n (error: any) => mutateCache(c => c.set(factory, { error })),\n );\n return withCacheSet({});\n }\n return withCacheSet(finalize(result));\n },\n }), [cache]);\n\n // Effect, responsible for changing mount state.\n useEffect(() => {\n // An idiotic line for React's StrictMode.\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n // Effect, responsible for initializing the app in the web version of Telegram.\n useEffect(() => {\n if (isIframe()) {\n return initWeb(acceptCustomStyles);\n }\n }, [acceptCustomStyles]);\n\n // Effect, responsible for debug mode.\n useEffect(() => {\n setDebug(debug || false);\n }, [debug]);\n\n // Every time cache changes, we should actualize the ref to it. It is used in the next\n // effect.\n useEffect(() => {\n cacheRef.current = cache;\n }, [cache]);\n\n // Effect, responsible for removing all components \"change\" listeners.\n useEffect(() => {\n return () => {\n cacheRef.current.forEach(v => {\n 'cleanup' in v && v.cleanup && v.cleanup();\n });\n };\n }, []);\n\n return <SDKContext.Provider value={context}>{children}</SDKContext.Provider>;\n}\n"],"names":["Vt","$t","it","ot","M","ne","Mt","Lt","r","i","a","o","F","G","et","Ye","Bt","R","j","at","V","f","Ot","Ut","Wt","Gt","jt","ct","zt","Ft","Ze","Ke","Jt","E","$","P","w","ht","J","y","Q","Qt","pt","h","ut","Yt","Zt","Kt","Xt","te","ee","se","L","b","I","re","g","v","ie","lt","oe","dt","Xe","ae","ce","_t","ft","gt","u","k","S","z","ts","bt","he","Y","wt","Z","s","n","pe","mt","K","ue","st","yt","le","de","vt","Et","Pt","_e","xt","fe","St","Ct","Rt","ge","be","we","me","ye","At","ve","Ee","l","es","q","Tt","Pe","xe","ss","X","Se","ns","tt","Ce","Re","Ae","nt","Te","rs","Ie","is","qe","os","as","ke","cs","Ne","hs","De","It","Ve","$e","p","ps","Me","Le","us","Be","ls","Oe","ds","qt","Ue","_s","fs","We","gs","kt","x","He","bs","m","ws","ms","ys","vs","Es","Ps","Ge","xs","B","je","O","T","N","D","U","C","ze","t","Nt","rt","W","H","Dt","Fe","Ss","Je","Cs","createHOCs","useRaw","useResult","createHOC","hook","propKey","ssr","Component","props","merged","jsx","SDKContext","createContext","useSDK","context","useContext","createHooks","factory","sdk","result","setResult","useState","isSSR","useEffect","raw","useBackButtonRaw","useBackButton","initBackButton","withBackButtonRaw","withBackButton","useBiometryManagerRaw","useBiometryManager","initBiometryManager","withBiometryManagerRaw","withBiometryManager","useClosingBehaviorRaw","useClosingBehavior","initClosingBehavior","withClosingBehaviorRaw","withClosingBehavior","useCloudStorageRaw","useCloudStorage","initCloudStorage","withCloudStorageRaw","withCloudStorage","useHapticFeedbackRaw","useHapticFeedback","initHapticFeedback","withHapticFeedbackRaw","withHapticFeedback","useInitDataRaw","useInitData","initInitData","withInitDataRaw","withInitData","useInvoiceRaw","useInvoice","initInvoice","withInvoiceRaw","withInvoice","useMainButtonRaw","useMainButton","initMainButton","withMainButtonRaw","withMainButton","useMiniAppRaw","useMiniApp","initMiniApp","withMiniAppRaw","withMiniApp","usePopupRaw","usePopup","initPopup","withPopupRaw","withPopup","useQRScannerRaw","useQRScanner","initQRScanner","withQRScannerRaw","withQRScanner","useSettingsButtonRaw","useSettingsButton","initSettingsButton","withSettingsButtonRaw","withSettingsButton","useThemeParamsRaw","useThemeParams","initThemeParams","withThemeParamsRaw","withThemeParams","useLaunchParams","useMemo","retrieveLaunchParams","useUtilsRaw","useUtils","initUtils","withUtilsRaw","withUtils","useViewportRaw","useViewport","initViewport","withViewportRaw","withViewport","SDKProvider","children","acceptCustomStyles","debug","isMountedRef","useRef","cache","setCache","cacheRef","mutateCache","useCallback","mutate","c","args","cached","error","err","withCacheSet","item","cleanup","finalize","off","cleanupOriginal","value","isIframe","initWeb","setDebug"],"mappings":"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"}
|