@tonconnect/ui 2.2.0 → 2.3.0-beta.1
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/README.md +122 -0
- package/dist/tonconnect-ui.min.js +239 -239
- package/dist/tonconnect-ui.min.js.map +1 -1
- package/lib/index.cjs +441 -57
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +6 -2
- package/lib/index.mjs +441 -57
- package/lib/index.mjs.map +1 -1
- package/package.json +9 -14
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../src/models/THEME.ts","../../../node_modules/goober/dist/goober.modern.js","../../../node_modules/solid-styled-components/src/index.js","../src/app/styles/global-styles.tsx","../src/app/utils/css.ts","../src/app/models/in-memory-storage.ts","../src/errors/ton-connect-ui.error.ts","../src/app/utils/log.ts","../src/app/utils/web-api.ts","../src/storage/wallet-info-storage.ts","../src/storage/preferred-wallet-storage.ts","../src/storage/last-selected-wallet-info-storage.ts","../src/app/state/modals-state.ts","../src/app/i18n.ts","../src/app/state/connector.context.ts","../../../node_modules/solid-js/store/dist/store.js","../src/app/styles/default-colors.ts","../node_modules/is-plain-object/dist/is-plain-object.mjs","../src/app/utils/options.ts","../src/app/state/theme-state.ts","../src/app/components/image/style.ts","../src/app/components/image/index.tsx","../src/app/utils/tma-api.ts","../src/app/styles/media.ts","../src/app/components/button/style.ts","../src/app/hooks/use-data-attributes.ts","../src/app/components/button/index.tsx","../../../node_modules/solid-transition-group/dist/solid-transition-group.js","../src/app/directives/click-outside.tsx","../src/app/directives/key-pressed.tsx","../src/app/directives/android-back-handler.tsx","../src/app/components/icons/arrow-icon.tsx","../src/app/components/icons/close-icon.tsx","../src/app/components/icon-button/style.ts","../src/app/components/icon-button/index.tsx","../src/app/components/modal/style.ts","../src/app/utils/animate.ts","../src/app/components/modal/index.tsx","../src/app/components/tab-bar/style.ts","../src/app/components/tab-bar/index.tsx","../src/app/components/qr-code/style.ts","../../../node_modules/qrcode-generator/qrcode.js","../src/app/utils/copy-to-clipboard.ts","../src/app/components/qr-code/index.tsx","../../../node_modules/@solid-primitives/i18n/dist/index.js","../src/app/components/typography/text/style.ts","../src/app/components/typography/text/index.tsx","../src/app/components/wallet-item/wallet-image.tsx","../src/app/components/wallet-item/style.ts","../src/app/components/wallet-item/index.tsx","../src/app/components/typography/h1/style.ts","../src/app/components/typography/h1/index.tsx","../src/app/components/typography/h2/style.ts","../src/app/components/typography/h2/index.tsx","../src/app/components/typography/h3/style.ts","../src/app/components/typography/h3/index.tsx","../src/app/components/icons/ton-icon.tsx","../src/app/components/icons/success-icon.tsx","../src/app/components/icons/error-icon.tsx","../src/app/components/icons/loader-icon.tsx","../src/app/components/icons/ton-connect-brand.tsx","../src/app/components/icons/question-icon.tsx","../src/app/components/icons/browser-icon.tsx","../src/app/components/icons/mobile-icon.tsx","../src/app/components/icons/desktop-icon.tsx","../src/app/components/icons/retry-icon.tsx","../src/app/components/icons/link-icon.tsx","../src/app/components/icons/wallet-icon.tsx","../src/app/components/icons/security-icon.tsx","../src/app/components/icons/personality-icon.tsx","../src/app/components/icons/swap-icon.tsx","../src/app/components/icons/at-wallet-icon.tsx","../src/app/components/icons/copy-light-icon.tsx","../src/app/components/icons/qr-icon.tsx","../src/app/components/wallet-item/four-wallets.style.ts","../src/app/components/wallet-item/four-wallets.tsx","../src/app/env/AT_WALLET_APP_NAME.ts","../src/app/env/IMG.ts","../src/app/components/wallet-item/wallet-labeled-item.tsx","../src/app/components/scroll-container/style.ts","../src/app/hooks/windowSize.ts","../src/app/hooks/isMobile.ts","../src/app/components/scroll-container/index.tsx","../src/app/components/link/style.ts","../src/app/components/link/index.tsx","../src/app/state/ton-connect-ui.context.ts","../src/app/components/icons/copy-icon.tsx","../src/app/components/icons/disconnect-icon.tsx","../src/app/views/account-button/account-button-dropdown/style.ts","../src/app/views/account-button/account-button-dropdown/index.tsx","../src/app/components/notification/style.ts","../src/app/components/notification/index.tsx","../src/app/views/account-button/notifications/confirm-operation-notification/style.ts","../src/app/views/account-button/notifications/confirm-operation-notification/index.tsx","../src/app/views/account-button/notifications/error-transaction-notification/style.ts","../src/app/views/account-button/notifications/error-transaction-notification/index.tsx","../src/app/views/account-button/notifications/success-transaction-notification/style.ts","../src/app/views/account-button/notifications/success-transaction-notification/index.tsx","../src/app/views/account-button/notifications/style.ts","../src/app/hooks/use-notifications.ts","../src/app/views/account-button/notifications/error-sign-data-notification/style.ts","../src/app/views/account-button/notifications/error-sign-data-notification/index.tsx","../src/app/views/account-button/notifications/success-sign-data-notification/index.tsx","../src/app/views/account-button/notifications/index.tsx","../src/app/views/account-button/style.ts","../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../../../node_modules/solid-floating-ui/dist/esm/production/index.mjs","../src/app/views/account-button/index.tsx","../src/app/views/modals/wallets-modal/style.ts","../src/app/state/app.state.ts","../src/app/utils/array.ts","../src/app/utils/wallets.ts","../src/app/views/modals/wallets-modal/all-wallets-list-modal/style.ts","../src/app/components/icons/exclamation-icon.tsx","../src/app/views/modals/wallets-modal/all-wallets-list-modal/index.tsx","../src/app/views/modals/wallets-modal/desktop-connection-modal/style.ts","../src/app/components/typography/Translation/index.tsx","../src/app/utils/url-strategy-helpers.ts","../src/app/views/modals/wallets-modal/desktop-connection-modal/index.tsx","../src/app/views/modals/wallets-modal/info-modal/style.ts","../src/app/env/LINKS.ts","../src/app/views/modals/wallets-modal/info-modal/index.tsx","../src/app/views/modals/wallets-modal/mobile-connection-modal/style.ts","../src/app/views/modals/wallets-modal/mobile-connection-modal/mobile-connection-qr/style.ts","../src/app/views/modals/wallets-modal/mobile-connection-modal/mobile-connection-qr/index.tsx","../src/app/views/modals/wallets-modal/mobile-connection-modal/index.tsx","../src/app/views/modals/wallets-modal/mobile-universal-modal/style.ts","../src/app/views/modals/wallets-modal/mobile-universal-modal/mobile-universal-qr/style.ts","../src/app/views/modals/wallets-modal/mobile-universal-modal/mobile-universal-qr/index.tsx","../src/app/utils/bridge.ts","../src/app/views/modals/wallets-modal/mobile-universal-modal/index.tsx","../src/app/views/modals/wallets-modal/desktop-universal-modal/style.ts","../src/app/views/modals/wallets-modal/desktop-universal-modal/index.tsx","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/style.ts","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/restore-info-modal/style.ts","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/restore-info-modal/index.tsx","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/index.tsx","../src/app/views/modals/wallets-modal/wallets-modal.tsx","../src/app/views/modals/actions-modal/action-modal/style.ts","../src/app/views/modals/actions-modal/action-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-transaction-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-sent-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-sign-data-modal/index.tsx","../src/app/views/modals/actions-modal/sign-data-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/data-signed-modal/index.tsx","../src/app/views/modals/actions-modal/actions-modal.tsx","../src/app/views/modals/wallets-modal/single-wallet-modal.tsx","../src/app/App.tsx","../src/app/widget-controller.tsx","../src/managers/wallets-modal-manager.ts","../src/managers/transaction-modal-manager.ts","../src/managers/single-wallet-modal-manager.ts","../src/tracker/ton-connect-ui-tracker.ts","../src/constants/version.ts","../src/ton-connect-ui.ts"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner === undefined ? owner : detachedOwner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : \"ready\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction runErrors(fns, err) {\n for (const f of fns) f(err);\n}\nfunction handleError(err) {\n err = castError(err);\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n if (Effects) Effects.push({\n fn() {\n runErrors(fns, err);\n },\n state: STALE\n });else runErrors(fns, err);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n for (let i = sources.length - 1; i >= 0; i--) {\n if (sources[i]) {\n const descriptors = Object.getOwnPropertyDescriptors(sources[i]);\n for (const key in descriptors) {\n if (key in target) continue;\n Object.defineProperty(target, key, {\n enumerable: true,\n get() {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = (sources[i] || {})[key];\n if (v !== undefined) return v;\n }\n }\n });\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n if ($PROXY in props) {\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const descriptors = Object.getOwnPropertyDescriptors(props);\n keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));\n return keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (!(key in props)) continue;\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n },\n enumerable: true\n });\n }\n return clone;\n });\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let strictEqual = false;\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => c(when)) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n const res = typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n onError(setErrored);\n return res;\n }\n onError(setErrored);\n return props.children;\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => {\n while (elem && elem.nodeType !== 8 && elem.nodeValue !== \"pl-\" + e) {\n let x = elem.nextSibling;\n elem.remove();\n elem = x;\n }\n elem && elem.remove();\n });\n }\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i];\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if ((typeof item) === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) {\n normalized.push(prev);\n } else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","export enum THEME {\n DARK = 'DARK',\n LIGHT = 'LIGHT'\n}\n\nexport type Theme = THEME | 'SYSTEM';\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { css, setup as gooberSetup } from \"goober\";\r\nimport {\r\n mergeProps,\r\n splitProps,\r\n createContext,\r\n useContext,\r\n createComponent,\r\n untrack,\r\n} from \"solid-js\";\r\nimport { Dynamic, isServer, spread } from \"solid-js/web\";\r\nexport { css, glob, extractCss, keyframes } from \"goober\";\r\n\r\nlet getForwardProps = null;\r\n\r\nexport function shouldForwardProp(predicate) {\r\n return props => props.filter(predicate);\r\n}\r\n\r\nexport function setup(prefixer, shouldForwardProp = null) {\r\n gooberSetup(null, prefixer);\r\n getForwardProps = shouldForwardProp;\r\n}\r\nconst ThemeContext = createContext();\r\nexport function ThemeProvider(props) {\r\n return createComponent(ThemeContext.Provider, {\r\n value: props.theme,\r\n get children() {\r\n return props.children;\r\n }\r\n });\r\n}\r\nexport function useTheme() {\r\n return useContext(ThemeContext);\r\n}\r\n\r\nfunction makeStyled(tag) {\r\n let _ctx = this || {};\r\n return (...args) => {\r\n const Styled = props => {\r\n const theme = useContext(ThemeContext);\r\n const withTheme = mergeProps(props, { theme });\r\n const clone = mergeProps(withTheme, {\r\n get class() {\r\n const pClass = withTheme.class,\r\n append = \"class\" in withTheme && /^go[0-9]+/.test(pClass);\r\n // Call `css` with the append flag and pass the props\r\n let className = css.apply(\r\n { target: _ctx.target, o: append, p: withTheme, g: _ctx.g },\r\n args\r\n );\r\n return [pClass, className].filter(Boolean).join(\" \");\r\n }\r\n });\r\n const [local, newProps] = splitProps(clone, [\"as\", \"theme\"]);\r\n const htmlProps = getForwardProps\r\n ? splitProps(newProps, getForwardProps(Object.keys(newProps)))[0]\r\n : newProps;\r\n const createTag = local.as || tag;\r\n let el;\r\n\r\n if (typeof createTag === \"function\") {\r\n el = createTag(htmlProps);\r\n } else {\r\n if (isServer) {\r\n const [local, others] = splitProps(htmlProps, [\"children\", \"theme\"]);\r\n el = Dynamic({\r\n component: createTag,\r\n get children() {\r\n return local.children;\r\n },\r\n ...others\r\n });\r\n } else {\r\n if (_ctx.g == 1) {\r\n // When using Global Styles we don't want to hydrate the unused nodes\r\n el = document.createElement(createTag);\r\n spread(el, htmlProps);\r\n } else {\r\n el = Dynamic(mergeProps({ component: createTag }, htmlProps));\r\n }\r\n }\r\n }\r\n return el;\r\n };\r\n Styled.class = props => {\r\n return untrack(() => {\r\n return css.apply({ target: _ctx.target, p: props, g: _ctx.g }, args);\r\n });\r\n };\r\n\r\n return Styled;\r\n };\r\n}\r\n\r\nexport const styled = new Proxy(makeStyled, {\r\n get(target, tag) {\r\n return target(tag);\r\n }\r\n});\r\n\r\nexport function createGlobalStyles() {\r\n const fn = makeStyled.call({ g: 1 }, \"div\").apply(null, arguments);\r\n\r\n return function GlobalStyles(props) {\r\n fn(props);\r\n return null;\r\n };\r\n}\r\n","import { JSXElement } from 'solid-js';\nimport { createGlobalStyles } from 'solid-styled-components';\n\nexport const globalStylesTag = 'tc-root';\nexport const disableScrollClass = 'tc-disable-scroll';\nexport const usingMouseClass = 'tc-using-mouse';\n\nexport const GlobalStyles = (): JSXElement => {\n document.body.addEventListener('mousedown', () => document.body.classList.add(usingMouseClass));\n\n document.body.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n document.body.classList.remove(usingMouseClass);\n }\n });\n\n const Styles = createGlobalStyles`\n ${globalStylesTag} * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n \n font-family: -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', Arial, Tahoma, Verdana, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; \n -webkit-tap-highlight-color: transparent;\n }\n \n ${globalStylesTag} img {\n -webkit-user-select: none;\n -webkit-touch-callout: none;\n } \n \n ${globalStylesTag} *:focus {\n outline: #08f auto 2px;\n }\n \n ${globalStylesTag} li {\n list-style: none;\n }\n \n ${globalStylesTag} button {\n outline: none;\n }\n \n body.${disableScrollClass} {\n position: fixed; \n overflow-y: scroll;\n right: 0;\n left: 0;\n }\n \n body.${usingMouseClass} ${globalStylesTag} *:focus {\n outline: none;\n }\n`;\n return <Styles />;\n};\n","import type { Property } from 'csstype';\ntype Color = Property.Color;\n\nexport function hexToRgb(hex: string): string {\n if (hex[0] === '#') {\n hex = hex.slice(1);\n }\n\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n\n return [r, g, b].join(',');\n}\n\nexport function rgba(color: Color, opacity: number): string {\n if (color[0] === '#') {\n color = hexToRgb(color);\n }\n\n return `rgba(${color}, ${opacity})`;\n}\n\nexport function toPx(value: number | string): string {\n return value.toString() + 'px';\n}\n","/**\n * In memory storage like localStorage, but without persistence.\n * Uses as a fallback for localStorage in Safari's private mode.\n */\nexport class InMemoryStorage implements Storage {\n private static instance: InMemoryStorage;\n\n private storage: Record<string, string> = {};\n\n public static getInstance(): InMemoryStorage {\n if (!InMemoryStorage.instance) {\n InMemoryStorage.instance = new InMemoryStorage();\n }\n\n return InMemoryStorage.instance;\n }\n\n private constructor() {}\n\n public get length(): number {\n return Object.keys(this.storage).length;\n }\n\n public clear(): void {\n this.storage = {};\n }\n\n public getItem(key: string): string | null {\n return this.storage[key] ?? null;\n }\n\n public key(index: number): string | null {\n const keys = Object.keys(this.storage);\n if (index < 0 || index >= keys.length) {\n return null;\n }\n\n return keys[index] ?? null;\n }\n\n public removeItem(key: string): void {\n delete this.storage[key];\n }\n\n public setItem(key: string, value: string): void {\n this.storage[key] = value;\n }\n}\n","import { TonConnectError } from '@tonconnect/sdk';\n\nexport class TonConnectUIError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectUIError.prototype);\n }\n}\n","export function logDebug(...args: Parameters<Console['debug']>): void {\n if (typeof 'console' !== undefined) {\n try {\n console.debug('[TON_CONNECT_UI]', ...args);\n } catch {}\n }\n}\n\nexport function logError(...args: Parameters<Console['error']>): void {\n if (typeof 'console' !== undefined) {\n try {\n console.error('[TON_CONNECT_UI]', ...args);\n } catch {}\n }\n}\n\nexport function logWarning(...args: Parameters<Console['warn']>): void {\n if (typeof 'console' !== undefined) {\n try {\n console.warn('[TON_CONNECT_UI]', ...args);\n } catch {}\n }\n}\n","import { THEME } from 'src/models/THEME';\nimport { disableScrollClass, globalStylesTag } from 'src/app/styles/global-styles';\nimport { toPx } from 'src/app/utils/css';\nimport { UserAgent } from 'src/models/user-agent';\nimport UAParser from 'ua-parser-js';\nimport { InMemoryStorage } from 'src/app/models/in-memory-storage';\nimport { TonConnectUIError } from 'src/errors';\nimport { logDebug } from 'src/app/utils/log';\n\n/**\n * Opens a link in a new tab.\n * @param href\n * @param target\n */\nexport function openLink(href: string, target = '_self'): void {\n logDebug('openLink', href, target);\n window.open(href, target, 'noopener noreferrer');\n}\n\n/**\n * Opens a link in a new tab.\n * @param href\n */\nexport function openLinkBlank(href: string): void {\n openLink(href, '_blank');\n}\n\n/**\n * Open a deeplink in the same tab and fallback to a direct link after 200 ms.\n * In Safari, the fallback will not work.\n * @param href\n * @param fallback\n */\nexport function openDeeplinkWithFallback(href: string, fallback: () => void): void {\n const doFallback = (): void => {\n if (isBrowser('safari') || (isOS('android') && isBrowser('firefox'))) {\n // Safari does not support fallback to direct link.\n return;\n }\n\n fallback();\n };\n const fallbackTimeout = setTimeout(() => doFallback(), 200);\n window.addEventListener('blur', () => clearTimeout(fallbackTimeout), { once: true });\n\n openLink(href, '_self');\n}\n\nexport function getSystemTheme(): THEME {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {\n return THEME.LIGHT;\n }\n\n return THEME.DARK;\n}\n\nexport function subscribeToThemeChange(callback: (theme: THEME) => void): () => void {\n const handler = (event: MediaQueryListEvent): void =>\n callback(event.matches ? THEME.DARK : THEME.LIGHT);\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', handler);\n return () =>\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', handler);\n}\n\nexport function disableScroll(): void {\n if (document.documentElement.scrollHeight === document.documentElement.clientHeight) {\n return;\n }\n\n document.body.style.top = toPx(-document.documentElement.scrollTop);\n document.body.classList.add(disableScrollClass);\n}\n\nexport function enableScroll(): void {\n document.body.classList.remove(disableScrollClass);\n document.documentElement.scrollTo({ top: -parseFloat(getComputedStyle(document.body).top) });\n document.body.style.top = 'auto';\n}\n\nexport function fixMobileSafariActiveTransition(): void {\n if (!document.body.hasAttribute('ontouchstart')) {\n document.body.setAttribute('ontouchstart', '');\n }\n}\n\nexport function defineStylesRoot(): void {\n customElements.define(globalStylesTag, class TcRootElement extends HTMLElement {});\n}\n\n/**\n * Create a macrotask using `requestAnimationFrame()` to ensure that any pending microtasks,\n * such as asynchronous operations from other developers and browser APIs, are executed before.\n * @param callback\n */\nexport async function createMacrotask(callback: () => void): Promise<void> {\n await new Promise(resolve => requestAnimationFrame(resolve));\n callback();\n}\n\n/**\n * Create a macrotask using `requestAnimationFrame()` to ensure that any pending microtasks,\n * such as asynchronous operations from other developers and browser APIs, are executed before.\n * @param callback\n */\nexport async function createMacrotaskAsync<T>(callback: () => Promise<T>): Promise<T> {\n await new Promise(resolve => requestAnimationFrame(resolve));\n return callback();\n}\n\n/**\n * Preload images after page load to improve UX and Web Vitals metrics without affecting initial page load performance.\n */\nexport function preloadImages(images: string[]): void {\n if (document.readyState !== 'complete') {\n window.addEventListener('load', () => createMacrotask(() => preloadImages(images)), {\n once: true\n });\n } else {\n images.forEach(img => {\n const node = new window.Image();\n node.src = img;\n });\n }\n}\n\nexport function getWindow(): Window | undefined {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n return undefined;\n}\n\n/**\n * Returns `localStorage` if it is available. In Safari's private mode, it returns `InMemoryStorage`. In Node.js, it throws an error.\n */\nexport function tryGetLocalStorage(): Storage {\n if (isLocalStorageAvailable()) {\n return localStorage;\n }\n\n if (isNodeJs()) {\n throw new TonConnectUIError(\n '`localStorage` is unavailable, but it is required for TonConnect. For more details, see https://github.com/ton-connect/sdk/tree/main/packages/sdk#init-connector'\n );\n }\n\n return InMemoryStorage.getInstance();\n}\n\n/**\n * Checks if `localStorage` is available.\n */\nfunction isLocalStorageAvailable(): boolean {\n // We use a try/catch block because Safari's private mode throws an error when attempting to access localStorage.\n try {\n return typeof localStorage !== 'undefined';\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if the environment is Node.js.\n */\nfunction isNodeJs(): boolean {\n return (\n typeof process !== 'undefined' && process.versions != null && process.versions.node != null\n );\n}\n\nexport function isMobileUserAgent(): boolean {\n let check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.slice(0, 4)\n )\n )\n check = true;\n })(\n navigator.userAgent ||\n navigator.vendor ||\n (\n window as unknown as {\n opera: string;\n }\n ).opera\n );\n return check;\n}\n\nexport function getUserAgent(): UserAgent {\n const results = new UAParser().getResult();\n const osName = results.os.name?.toLowerCase();\n const deviceModel = results.device.model?.toLowerCase();\n let os: UserAgent['os'];\n switch (true) {\n case deviceModel === 'ipad':\n os = 'ipad';\n break;\n case osName === 'ios':\n os = 'ios';\n break;\n case osName === 'android':\n os = 'android';\n break;\n case osName === 'mac os':\n os = 'macos';\n break;\n case osName === 'linux':\n os = 'linux';\n break;\n case osName?.includes('windows'):\n os = 'windows';\n break;\n }\n\n const browserName = results.browser.name?.toLowerCase();\n let browser: UserAgent['browser'] | undefined;\n switch (true) {\n case browserName === 'chrome':\n browser = 'chrome';\n break;\n case browserName === 'firefox':\n browser = 'firefox';\n break;\n case browserName?.includes('safari'):\n browser = 'safari';\n break;\n case browserName?.includes('opera'):\n browser = 'opera';\n break;\n }\n\n return {\n os,\n browser\n };\n}\n\nexport function isOS(...os: UserAgent['os'][]): boolean {\n return os.includes(getUserAgent().os);\n}\n\nexport function isBrowser(...browser: UserAgent['browser'][]): boolean {\n return browser.includes(getUserAgent().browser);\n}\n\n/**\n * Convert universal link to the given deeplink: replace protocol and path, but keep query params\n * @param universalLink\n * @param deeplink\n */\nexport function toDeeplink(universalLink: string, deeplink: string): string {\n const url = new URL(universalLink);\n return deeplink + url.search;\n}\n","import { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\nimport { tryGetLocalStorage } from 'src/app/utils/web-api';\n\nexport class WalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_wallet-info';\n\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n\n public setWalletInfo(walletInfo: WalletInfoWithOpenMethod): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getWalletInfo(): WalletInfoWithOpenMethod | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import { tryGetLocalStorage } from 'src/app/utils/web-api';\n\nexport class PreferredWalletStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_preferred-wallet';\n\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n\n public setPreferredWalletAppName(name: string): void {\n this.localStorage.setItem(this.storageKey, name);\n }\n\n public getPreferredWalletAppName(): string | undefined {\n return this.localStorage.getItem(this.storageKey) || undefined;\n }\n}\n","import { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\nimport { tryGetLocalStorage } from 'src/app/utils/web-api';\n\nexport class LastSelectedWalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_last-selected-wallet-info';\n\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n\n public setLastSelectedWalletInfo(\n walletInfo:\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n ): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getLastSelectedWalletInfo():\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeLastSelectedWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import { createMemo, createSignal } from 'solid-js';\nimport { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\nimport { LastSelectedWalletInfoStorage } from 'src/storage';\nimport { ReturnStrategy } from 'src/models';\nimport { WalletsModalState } from 'src/models/wallets-modal';\nimport { SingleWalletModalState } from 'src/models/single-wallet-modal';\n\nexport type ActionName =\n | 'confirm-transaction'\n | 'transaction-sent'\n | 'transaction-canceled'\n | 'confirm-sign-data'\n | 'data-signed'\n | 'sign-data-canceled';\n\nexport type Action = BasicAction | ConfirmTransactionAction | ConfirmSignDataAction;\n\ntype BasicAction = {\n name: ActionName;\n openModal: boolean;\n showNotification: boolean;\n};\n\nexport type ConfirmTransactionAction = BasicAction & {\n name: 'confirm-transaction';\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}`;\n sent: boolean;\n};\n\nexport type ConfirmSignDataAction = BasicAction & {\n name: 'confirm-sign-data';\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}`;\n signed: boolean;\n};\n\nexport const [walletsModalState, setWalletsModalState] = createSignal<WalletsModalState>({\n status: 'closed',\n closeReason: null\n});\n\nexport const getWalletsModalIsOpened = createMemo(() => walletsModalState().status === 'opened');\n\nexport const [singleWalletModalState, setSingleWalletModalState] =\n createSignal<SingleWalletModalState>({\n status: 'closed',\n closeReason: null\n });\n\nexport const getSingleWalletModalIsOpened = createMemo(\n () => singleWalletModalState().status === 'opened'\n);\n\nexport const getSingleWalletModalWalletInfo = createMemo(() => {\n const state = singleWalletModalState();\n if (state.status === 'opened') {\n return state.walletInfo;\n }\n\n return null;\n});\n\nlet lastSelectedWalletInfoStorage =\n typeof window !== 'undefined' ? new LastSelectedWalletInfoStorage() : undefined;\nexport const [lastSelectedWalletInfo, _setLastSelectedWalletInfo] = createSignal<\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null\n>(lastSelectedWalletInfoStorage?.getLastSelectedWalletInfo() || null);\n\nexport const setLastSelectedWalletInfo = (\n walletInfo:\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null\n): void => {\n if (!lastSelectedWalletInfoStorage) {\n lastSelectedWalletInfoStorage = new LastSelectedWalletInfoStorage();\n }\n\n if (walletInfo) {\n lastSelectedWalletInfoStorage.setLastSelectedWalletInfo(walletInfo);\n } else {\n lastSelectedWalletInfoStorage.removeLastSelectedWalletInfo();\n }\n _setLastSelectedWalletInfo(walletInfo);\n};\n\nexport const [action, setAction] = createSignal<Action | null>(null);\n","import en from 'src/app/assets/i18n/en.json';\nimport ru from 'src/app/assets/i18n/ru.json';\nimport { Locales } from 'src/models/locales';\n\nexport const i18nDictionary: Record<Locales, object> = {\n en: parseDictionary(en),\n ru: parseDictionary(ru)\n};\n\n// replace '$key1.key2.key3' with it's value\nfunction parseDictionary(dictionary: Record<string, unknown>): Record<string, unknown> {\n const refSymbol = '$';\n\n const iterate = (subDictionary: Record<string, unknown>): void => {\n Object.entries(subDictionary).forEach(([key, value]) => {\n if (typeof value === 'object' && value) {\n return iterate(value as Record<string, unknown>);\n }\n\n if (typeof value === 'string') {\n if (value[0] === refSymbol) {\n const path = value.slice(1).split('.');\n let obj: Record<string, unknown> = dictionary;\n path.forEach(item => {\n if (item in obj) {\n obj = obj[item] as Record<string, unknown>;\n } else {\n throw new Error(\n `Cannot parse translations: there is no property ${item} in translation`\n );\n }\n });\n\n subDictionary[key] = obj;\n }\n\n if (value.slice(0, 2) === `\\\\${refSymbol}`) {\n subDictionary[key] = value.slice(1);\n }\n }\n });\n };\n\n iterate(dictionary);\n return dictionary;\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createContext } from 'solid-js';\n\nexport const ConnectorContext = createContext<ITonConnect>();\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n if (target !== previous) {\n if (property === $ROOT) return target;\n setProperty(parent, property, target);\n }\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","import { ColorsSet } from 'src/models/colors-set';\n\nexport const defaultLightColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#0098EA',\n foreground: '#FFFFFF'\n },\n accent: '#0098EA',\n telegramButton: '#0098EA',\n icon: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n tertiary: '#C1CAD2',\n success: '#29CC6A',\n error: '#F5A73B'\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F1F3F5',\n segment: '#FFFFFF',\n tint: '#F1F3F5',\n qr: '#F1F3F5'\n },\n text: {\n primary: '#0F0F0F',\n secondary: '#6A7785'\n }\n};\n\nexport const defaultDarkColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#0098EA',\n foreground: '#FFFFFF'\n },\n accent: '#E5E5EA',\n telegramButton: '#31A6F5',\n icon: {\n primary: '#E5E5EA',\n secondary: '#909099',\n tertiary: '#434347',\n success: '#29CC6A',\n error: '#F5A73B'\n },\n background: {\n primary: '#121214',\n secondary: '#18181A',\n segment: '#262629',\n tint: '#222224',\n qr: '#FFFFFF'\n },\n text: {\n primary: '#E5E5EA',\n secondary: '#7D7D85'\n }\n};\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import deepmerge from 'deepmerge';\nimport { DeepPartial } from 'src/app/utils/types';\nimport { isPlainObject } from 'is-plain-object';\n\nexport function mergeOptions<T>(options: DeepPartial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, {\n arrayMerge: overwriteMerge,\n isMergeableObject: isPlainObject\n });\n}\n","import { createStore } from 'solid-js/store';\nimport { DefaultTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models/THEME';\nimport { defaultDarkColorsSet, defaultLightColorsSet } from 'src/app/styles/default-colors';\nimport { BorderRadius, PartialColorsSet } from 'src/models';\nimport { mergeOptions } from 'src/app/utils/options';\n\nexport const [themeState, setThemeState] = createStore<DefaultTheme>({\n theme: THEME.LIGHT,\n colors: defaultLightColorsSet,\n borderRadius: 'm'\n});\n\nconst themeColorsMappingDefault = {\n [THEME.LIGHT]: defaultLightColorsSet,\n [THEME.DARK]: defaultDarkColorsSet\n};\n\nconst themeCustomColors: Record<THEME, PartialColorsSet | undefined> = {\n [THEME.LIGHT]: undefined,\n [THEME.DARK]: undefined\n};\n\nexport function setTheme(theme: THEME, colorsSet?: Partial<Record<THEME, PartialColorsSet>>): void {\n if (colorsSet) {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n }\n\n setThemeState({\n theme,\n colors: mergeOptions(themeCustomColors[theme], themeColorsMappingDefault[theme])\n });\n}\n\nexport function setBorderRadius(borderRadius: BorderRadius): void {\n setThemeState({ borderRadius });\n}\n\nexport function setColors(colorsSet: Partial<Record<THEME, PartialColorsSet>>): void {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n\n setThemeState(state => ({\n colors: mergeOptions(\n themeCustomColors[state.theme as THEME],\n themeColorsMappingDefault[state.theme as THEME]\n )\n }));\n}\n","import { styled } from 'solid-styled-components';\n\nexport const ImagePlaceholder = styled.div`\n background-color: ${props => props.theme!.colors.background.secondary};\n`;\n","import { Component, createEffect, createSignal, Show } from 'solid-js';\nimport { ImagePlaceholder } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface ImageProps extends Styleable {\n src: string;\n alt?: string;\n}\n\nexport const Image: Component<ImageProps> = props => {\n let imgRef: HTMLImageElement | undefined;\n\n const [image, setImage] = createSignal<HTMLImageElement | null>(null);\n\n createEffect(() => {\n const img = new window.Image();\n img.src = props.src;\n img.alt = props.alt || '';\n img.setAttribute('draggable', 'false');\n if (props.class) {\n img.classList.add(props.class);\n }\n\n if (img.complete) {\n return setImage(img);\n }\n\n img.addEventListener('load', () => setImage(img));\n\n return () => img.removeEventListener('load', () => setImage(img));\n });\n\n return (\n <>\n <Show when={image()}>{image()}</Show>\n <Show when={!image()}>\n <ImagePlaceholder class={props.class} ref={imgRef} />\n </Show>\n </>\n );\n};\n","import { getWindow, openLinkBlank } from 'src/app/utils/web-api';\nimport { TonConnectUIError } from 'src/errors';\nimport { logDebug, logError } from 'src/app/utils/log';\n\ntype TmaPlatform = 'android' | 'ios' | 'macos' | 'tdesktop' | 'weba' | 'web' | 'unknown';\n\ntype TelegramWebviewProxy = {\n postEvent(eventType: string, eventData: string): void;\n};\n\ntype TelegramWebview = unknown;\n\ndeclare global {\n interface External {\n notify: (message: string) => void;\n }\n\n interface Window {\n TelegramWebviewProxy?: TelegramWebviewProxy;\n TelegramWebview?: TelegramWebview;\n Telegram?: {\n WebApp?: {\n platform?: TmaPlatform;\n version?: string;\n };\n };\n }\n}\n\nlet initParams: Record<string, string> = {};\ntry {\n let locationHash = location.hash.toString();\n initParams = urlParseHashParams(locationHash);\n} catch (e) {}\n\nlet tmaPlatform: TmaPlatform = 'unknown';\nif (initParams?.tgWebAppPlatform) {\n tmaPlatform = (initParams.tgWebAppPlatform as TmaPlatform) ?? 'unknown';\n}\nif (tmaPlatform === 'unknown') {\n const window = getWindow();\n tmaPlatform = window?.Telegram?.WebApp?.platform ?? 'unknown';\n}\n\nlet webAppVersion = '6.0';\nif (initParams?.tgWebAppVersion) {\n webAppVersion = initParams.tgWebAppVersion;\n}\nif (!webAppVersion) {\n const window = getWindow();\n webAppVersion = window?.Telegram?.WebApp?.version ?? '6.0';\n}\n\n/**\n * Returns true if the app is running in TMA on the specified platform.\n * @param platforms\n */\nexport function isTmaPlatform(...platforms: TmaPlatform[]): boolean {\n return platforms.includes(tmaPlatform);\n}\n\n/**\n * Returns true if the app is running in TMA.\n */\nexport function isInTMA(): boolean {\n return tmaPlatform !== 'unknown' || !!getWindow()?.TelegramWebviewProxy;\n}\n\n/**\n * Returns true if the app is running in the Telegram browser.\n */\nexport function isInTelegramBrowser(): boolean {\n const isTelegramWebview = !!getWindow()?.TelegramWebview;\n\n return (isInTMA() || isTelegramWebview) && tmaPlatform === 'unknown';\n}\n\n/**\n * Expand the app window.\n */\nexport function sendExpand(): void {\n postEvent('web_app_expand', {});\n}\n\n/**\n * Opens link in TMA or in new tab and returns a function that closes the tab.\n * @param link The link to open.\n * @param fallback The function to call if the link can't be opened in TMA.\n */\nexport function sendOpenTelegramLink(link: string, fallback?: () => void): void {\n const url = new URL(link);\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n if (fallback) {\n return fallback();\n }\n throw new TonConnectUIError(`Url protocol is not supported: ${url}`);\n }\n if (url.hostname !== 't.me') {\n if (fallback) {\n return fallback();\n }\n throw new TonConnectUIError(`Url host is not supported: ${url}`);\n }\n\n const pathFull = url.pathname + url.search;\n\n if (isIframe() || versionAtLeast('6.1')) {\n postEvent('web_app_open_tg_link', { path_full: pathFull });\n } else {\n openLinkBlank('https://t.me' + pathFull);\n }\n}\n\nfunction isIframe(): boolean {\n try {\n const window = getWindow();\n if (!window) {\n return false;\n }\n return window.parent != null && window !== window.parent;\n } catch (e) {\n return false;\n }\n}\n\nfunction postEvent(eventType: 'web_app_open_tg_link', eventData: { path_full: string }): void;\nfunction postEvent(eventType: 'web_app_expand', eventData: {}): void;\nfunction postEvent(eventType: string, eventData: object): void {\n try {\n const window = getWindow();\n if (!window) {\n throw new TonConnectUIError(`Can't post event to parent window: window is not defined`);\n }\n\n if (window.TelegramWebviewProxy !== undefined) {\n logDebug('postEvent', eventType, eventData);\n window.TelegramWebviewProxy.postEvent(eventType, JSON.stringify(eventData));\n } else if (window.external && 'notify' in window.external) {\n logDebug('postEvent', eventType, eventData);\n window.external.notify(JSON.stringify({ eventType: eventType, eventData: eventData }));\n } else if (isIframe()) {\n const trustedTarget = '*';\n const message = JSON.stringify({ eventType: eventType, eventData: eventData });\n logDebug('postEvent', eventType, eventData);\n window.parent.postMessage(message, trustedTarget);\n } else {\n throw new TonConnectUIError(`Can't post event to TMA`);\n }\n } catch (e) {\n logError(`Can't post event to parent window: ${e}`);\n }\n}\n\nfunction urlParseHashParams(locationHash: string): Record<string, string> {\n locationHash = locationHash.replace(/^#/, '');\n let params: Record<string, string> = {};\n if (!locationHash.length) {\n return params;\n }\n if (locationHash.indexOf('=') < 0 && locationHash.indexOf('?') < 0) {\n params._path = urlSafeDecode(locationHash);\n return params;\n }\n let qIndex = locationHash.indexOf('?');\n if (qIndex >= 0) {\n let pathParam = locationHash.substr(0, qIndex);\n params._path = urlSafeDecode(pathParam);\n locationHash = locationHash.substr(qIndex + 1);\n }\n let query_params = urlParseQueryString(locationHash);\n for (let k in query_params) {\n params[k] = query_params[k]!;\n }\n return params;\n}\n\nfunction urlSafeDecode(urlencoded: string): string {\n try {\n urlencoded = urlencoded.replace(/\\+/g, '%20');\n return decodeURIComponent(urlencoded);\n } catch (e) {\n return urlencoded;\n }\n}\n\nfunction urlParseQueryString(queryString: string): Record<string, string | null> {\n let params: Record<string, string | null> = {};\n if (!queryString.length) {\n return params;\n }\n let queryStringParams = queryString.split('&');\n let i, param, paramName, paramValue;\n for (i = 0; i < queryStringParams.length; i++) {\n param = queryStringParams[i]!.split('=');\n paramName = urlSafeDecode(param[0]!);\n paramValue = param[1] == null ? null : urlSafeDecode(param[1]);\n params[paramName] = paramValue;\n }\n return params;\n}\n\nfunction versionCompare(v1: string | undefined, v2: string | undefined): 0 | 1 | -1 {\n if (typeof v1 !== 'string') v1 = '';\n if (typeof v2 !== 'string') v2 = '';\n let v1List = v1.replace(/^\\s+|\\s+$/g, '').split('.');\n let v2List = v2.replace(/^\\s+|\\s+$/g, '').split('.');\n let a: number, i, p1, p2;\n a = Math.max(v1List.length, v2List.length);\n for (i = 0; i < a; i++) {\n p1 = parseInt(v1List[i]!) || 0;\n p2 = parseInt(v2List[i]!) || 0;\n if (p1 === p2) continue;\n if (p1 > p2) return 1;\n return -1;\n }\n return 0;\n}\n\nfunction versionAtLeast(ver: string): boolean {\n return versionCompare(webAppVersion, ver) >= 0;\n}\n","import { getWindow, isOS } from 'src/app/utils/web-api';\nimport { isTmaPlatform } from 'src/app/utils/tma-api';\n\nexport type Device = 'mobile' | 'tablet' | 'desktop';\n\nexport const maxWidth = {\n mobile: 440,\n tablet: 1020\n};\n\nexport function isDevice(device: keyof typeof maxWidth | 'desktop'): boolean {\n const window = getWindow();\n if (!window) {\n return device === 'desktop';\n }\n\n // TODO: remove this check when weba will fix viewport width\n if (isTmaPlatform('weba')) {\n return true;\n }\n\n const width = window.innerWidth;\n\n switch (device) {\n case 'desktop':\n return width > maxWidth.tablet;\n case 'tablet':\n return width > maxWidth.mobile;\n default:\n case 'mobile':\n return width <= maxWidth.mobile || isOS('ios', 'android', 'ipad');\n }\n}\n\nexport function media(device: Device): string {\n switch (device) {\n case 'mobile':\n return `@media (max-width: ${maxWidth.mobile}px)`;\n case 'tablet':\n return `@media (max-width: ${maxWidth.tablet}px) (min-width: ${maxWidth.mobile}px)`;\n default:\n case 'desktop':\n return `@media (min-width: ${maxWidth.tablet}px)`;\n }\n}\n\nexport function mediaMin(px: number): string {\n return `@media (min-width: ${px}px)`;\n}\n\nexport function mediaMax(px: number): string {\n return `@media (max-width: ${px}px)`;\n}\n\nexport function mediaMinMax(pxMin: number, pxMax: number): string {\n return `@media (min-width: ${pxMin}px) and (max-width: ${pxMax}px)`;\n}\n\nexport const mediaTouch = '@media (hover: none)';\n\nexport const mediaNotTouch = '@media not all and (hover: none)';\n","import { styled } from 'solid-styled-components';\nimport { rgba } from 'src/app/utils/css';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nconst borders: BorderRadiusConfig = {\n m: '100vh',\n s: '8px',\n none: '0'\n};\n\nconst scaleValues = {\n s: 0.02,\n m: 0.04\n};\n\nexport const ButtonStyled = styled.button<{\n appearance: 'primary' | 'flat' | 'secondary';\n scale: 's' | 'm';\n leftIcon: boolean;\n rightIcon: boolean;\n}>`\n display: ${props => (props.leftIcon || props.rightIcon ? 'flex' : 'inline-block')};\n gap: ${props => (props.leftIcon || props.rightIcon ? '6px' : 'unset')};\n align-items: ${props => (props.leftIcon || props.rightIcon ? 'center' : 'unset')};\n justify-content: ${props => (props.leftIcon || props.rightIcon ? 'space-between' : 'unset')};\n background-color: ${props =>\n props.appearance === 'flat'\n ? 'transparent'\n : props.appearance === 'secondary'\n ? props.theme!.colors.background.tint\n : rgba(props.theme!.colors.accent, 0.12)};\n color: ${props =>\n props.appearance === 'secondary'\n ? props.theme!.colors.text.primary\n : props.theme!.colors.accent};\n\n padding: ${props => (props.appearance === 'flat' ? '0' : '9px 16px')};\n padding-left: ${props => (props.leftIcon && props.appearance !== 'flat' ? '12px' : '16px')};\n padding-right: ${props => (props.rightIcon && props.appearance !== 'flat' ? '12px' : '16px')};\n border: none;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\n\n font-size: 14px;\n font-weight: 510;\n line-height: 18px;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 + scaleValues[props.scale]})`};\n }\n }\n\n &:active {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 - scaleValues[props.scale]})`};\n }\n\n ${mediaTouch} {\n &:active {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 - scaleValues[props.scale] * 2})`};\n }\n }\n`;\n","import { splitProps, untrack } from 'solid-js';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\n\nexport function useDataAttributes<T extends object>(props: T): WithDataAttributes {\n const keys = untrack(() => Object.keys(props).filter(key => key.startsWith('data-')));\n const [dataAttrs] = splitProps(props, keys as (keyof T)[]);\n return dataAttrs;\n}\n","import { Component, JSXElement } from 'solid-js';\nimport { ButtonStyled } from 'src/app/components/button/style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\n\nexport interface ButtonProps extends Styleable, WithDataAttributes {\n appearance?: 'primary' | 'flat' | 'secondary';\n scale?: 's' | 'm';\n leftIcon?: JSXElement;\n rightIcon?: JSXElement;\n iconFloatRight?: boolean;\n children: JSXElement;\n onClick?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n onMouseEnter?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n onMouseLeave?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n disabled?: boolean;\n ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void) | undefined;\n}\n\nexport const Button: Component<ButtonProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <ButtonStyled\n appearance={props.appearance || 'primary'}\n class={props.class}\n onClick={e => props.onClick?.(e)}\n onMouseEnter={e => props.onMouseEnter?.(e)}\n onMouseLeave={e => props.onMouseLeave?.(e)}\n ref={props.ref}\n disabled={props.disabled}\n scale={props.scale || 'm'}\n leftIcon={!!props.leftIcon}\n rightIcon={!!props.rightIcon}\n data-tc-button=\"true\"\n {...dataAttrs}\n >\n {props.leftIcon}\n {props.children}\n {props.rightIcon}\n </ButtonStyled>\n );\n};\n","import { createSignal, children, createMemo, createComputed, untrack, batch, createEffect } from 'solid-js';\n\nfunction nextFrame(fn) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nconst Transition = props => {\n let el;\n let first = true;\n const [s1, set1] = createSignal();\n const [s2, set2] = createSignal();\n const resolved = children(() => props.children);\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\"\n };\n });\n\n function enterTransition(el, prev) {\n if (!first || props.appear) {\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n batch(() => {\n s1() !== el && set1(el);\n s2() === el && set2(undefined);\n });\n onAfterEnter && onAfterEnter(el);\n if (props.mode === \"inout\") exitTransition(el, prev);\n }\n }\n }\n\n prev && !props.mode ? set2(el) : set1(el);\n }\n\n function exitTransition(el, prev) {\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n if (!prev.parentNode) return endTransition();\n onBeforeExit && onBeforeExit(prev);\n prev.classList.add(...exitClasses);\n prev.classList.add(...exitActiveClasses);\n nextFrame(() => {\n prev.classList.remove(...exitClasses);\n prev.classList.add(...exitToClasses);\n });\n onExit && onExit(prev, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n prev.addEventListener(\"transitionend\", endTransition);\n prev.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === prev) {\n prev.removeEventListener(\"transitionend\", endTransition);\n prev.removeEventListener(\"animationend\", endTransition);\n prev.classList.remove(...exitActiveClasses);\n prev.classList.remove(...exitToClasses);\n s1() === prev && set1(undefined);\n onAfterExit && onAfterExit(prev);\n if (props.mode === \"outin\") enterTransition(el, prev);\n }\n }\n }\n\n createComputed(prev => {\n el = resolved();\n\n while (typeof el === \"function\") el = el();\n\n return untrack(() => {\n if (el && el !== prev) {\n if (props.mode !== \"outin\") enterTransition(el, prev);else if (first) set1(el);\n }\n\n if (prev && prev !== el && props.mode !== \"inout\") exitTransition(el, prev);\n first = false;\n return el;\n });\n });\n return [s1, s2];\n};\n\nfunction getRect(element) {\n const {\n top,\n bottom,\n left,\n right,\n width,\n height\n } = element.getBoundingClientRect();\n const parentRect = element.parentNode.getBoundingClientRect();\n return {\n top: top - parentRect.top,\n bottom,\n left: left - parentRect.left,\n right,\n width,\n height\n };\n}\n\nconst TransitionGroup = props => {\n const resolved = children(() => props.children);\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\",\n moveClass: props.moveClass || name + \"-move\"\n };\n });\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const [combined, setCombined] = createSignal();\n let p = [];\n let first = true;\n createComputed(() => {\n const c = resolved();\n const comb = [...c];\n const next = new Set(c);\n const prev = new Set(p);\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n\n for (let i = 0; i < c.length; i++) {\n const el = c[i];\n\n if (!first && !prev.has(el)) {\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n onAfterEnter && onAfterEnter(el);\n }\n }\n }\n }\n\n for (let i = 0; i < p.length; i++) {\n const old = p[i];\n\n if (!next.has(old) && old.parentNode) {\n comb.splice(i, 0, old);\n onBeforeExit && onBeforeExit(old);\n old.classList.add(...exitClasses);\n old.classList.add(...exitActiveClasses);\n nextFrame(() => {\n old.classList.remove(...exitClasses);\n old.classList.add(...exitToClasses);\n });\n onExit && onExit(old, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n old.addEventListener(\"transitionend\", endTransition);\n old.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === old) {\n old.removeEventListener(\"transitionend\", endTransition);\n old.removeEventListener(\"animationend\", endTransition);\n old.classList.remove(...exitActiveClasses);\n old.classList.remove(...exitToClasses);\n onAfterExit && onAfterExit(old);\n p = p.filter(i => i !== old);\n setCombined(p);\n }\n }\n }\n }\n\n p = comb;\n setCombined(comb);\n });\n createEffect(nodes => {\n const c = combined();\n c.forEach(child => {\n let n;\n\n if (!(n = nodes.get(child))) {\n nodes.set(child, n = {\n pos: getRect(child),\n new: !first\n });\n } else if (n.new) {\n n.new = false;\n n.newPos = getRect(child);\n }\n\n if (n.new) {\n child.addEventListener(\"transitionend\", () => {\n n.new = false;\n child.parentNode && (n.newPos = getRect(child));\n }, {\n once: true\n });\n }\n\n n.newPos && (n.pos = n.newPos);\n n.newPos = getRect(child);\n });\n\n if (first) {\n first = false;\n return nodes;\n }\n\n c.forEach(child => {\n const c = nodes.get(child);\n const oldPos = c.pos;\n const newPos = c.newPos;\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.moved = true;\n const s = child.style;\n s.transform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n }\n });\n document.body.offsetHeight;\n c.forEach(child => {\n const c = nodes.get(child);\n\n if (c.moved) {\n c.moved = false;\n const s = child.style;\n const moveClasses = classnames().moveClass.split(\" \");\n child.classList.add(...moveClasses);\n s.transform = s.transitionDuration = \"\";\n\n function endTransition(e) {\n if (e && e.target !== child || !child.parentNode) return;\n\n if (!e || /transform$/.test(e.propertyName)) {\n child.removeEventListener(\"transitionend\", endTransition);\n child.classList.remove(...moveClasses);\n }\n }\n\n child.addEventListener(\"transitionend\", endTransition);\n }\n });\n return nodes;\n }, new Map());\n return combined;\n};\n\nexport { Transition, TransitionGroup };\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function clickOutside(el: Element, accessor: Accessor<() => void>): void {\n const onClick = (e: Event): void | boolean => !el.contains(e.target as Node) && accessor()?.();\n document.body.addEventListener('click', onClick);\n\n onCleanup(() => document.body.removeEventListener('click', onClick));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n clickOutside: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function escPressed(_: Element, accessor: Accessor<() => void>): void {\n const onKeyPress = (e: Event): void | boolean => {\n if ((e as KeyboardEvent).key === 'Escape') {\n (document.activeElement as HTMLElement)?.blur();\n accessor()?.();\n }\n };\n document.body.addEventListener('keydown', onKeyPress);\n\n onCleanup(() => document.body.removeEventListener('keydown', onKeyPress));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n keyPressed: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\nimport { createMacrotask, getUserAgent } from 'src/app/utils/web-api';\n\n/**\n * A directive that enhances the behavior of modal-like components on Android devices, ensuring\n * a native-like user experience.\n *\n * When enabled, this directive adds a new entry to the browser's history stack, providing a target\n * for the back button press. It then listens for the 'popstate' event, which is triggered when\n * the user presses the back button. In response to the 'popstate' event, the directive calls\n * the provided `onClose` callback to handle the modal dismissal.\n *\n * The functionality can be easily toggled using the isEnabled property.\n *\n * Usage:\n * ```jsx\n * <div use:androidBackHandler={{ isEnabled: true, onClose: () => setIsModalOpen(false) }}>\n * ... your modal content ...\n * </div>\n * ```\n */\nexport default function androidBackHandler(\n _: Element,\n config: Accessor<{\n isEnabled: boolean;\n onClose: () => void;\n }>\n): void {\n const { isEnabled, onClose } = config();\n\n // Terminate the execution if the directive is disabled.\n if (!isEnabled) {\n return;\n }\n\n // Terminate the execution if the user's device is not Android.\n const userOSIsAndroid = getUserAgent().os === 'android';\n if (!userOSIsAndroid) {\n return;\n }\n\n // Create a point that the back button can target by pushing a new state into the browser's history stack.\n window.history.pushState(ROUTE_STATE, '');\n\n // Handle the 'popstate' event triggered by the back button press.\n const popstateHandler = (event: PopStateEvent): void => {\n // Prevent the browser's default back navigation,\n event.preventDefault();\n // and instead call a provided function to handle the modal dismissal.\n onClose();\n };\n window.addEventListener('popstate', popstateHandler, { once: true });\n\n // Clean up when the directive's lifecycle ends\n onCleanup((): void => {\n // Remove the 'popstate' event handler.\n window.removeEventListener('popstate', popstateHandler);\n\n // Create a macrotask using `requestAnimationFrame()` to ensure that any pending microtasks,\n // such as asynchronous operations from other developers (e.g., tracking wallet connection status\n // and calling `history.pushState()), are completed before we proceed with cleaning up the history state.\n createMacrotask(() => {\n // If the current history state is the one that was added by this directive,\n if (window.history.state?.[ROUTE_STATE_KEY] === true) {\n // navigate back in the browser's history to clean up the state.\n window.history.back();\n }\n });\n });\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n androidBackHandler: {\n isEnabled: boolean;\n onClose: () => void;\n };\n }\n }\n}\n\n/**\n * Unique identifier for the history entry that is added by this directive.\n */\nconst ROUTE_STATE_KEY = 'androidBackHandler';\n\n/**\n * The state for the history entry that is added by this directive.\n */\nconst ROUTE_STATE = {\n [ROUTE_STATE_KEY]: true\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { styled, useTheme } from 'solid-styled-components';\n\ninterface ArrowIconProps {\n fill?: Property.Color;\n direction?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst rotationDegrees = {\n left: 0,\n top: 90,\n right: 180,\n bottom: 270\n};\n\nexport const ArrowIcon: Component<ArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n const direction = (): 'left' | 'right' | 'top' | 'bottom' => props.direction || 'left';\n\n const Svg = styled('svg')<{ svgDirection: 'left' | 'right' | 'top' | 'bottom' }>`\n transform: rotate(${props => rotationDegrees[props.svgDirection]}deg);\n transition: transform 0.1s ease-in-out;\n `;\n\n return (\n <Svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n svgDirection={direction()}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.2122 14.3407C10.5384 14.0854 10.5959 13.614 10.3406 13.2878L6.20237 8.00003L10.3406 2.71227C10.5959 2.38607 10.5384 1.91469 10.2122 1.6594C9.88604 1.40412 9.41465 1.46161 9.15937 1.7878L4.65937 7.5378C4.44688 7.80932 4.44688 8.19074 4.65937 8.46226L9.15937 14.2123C9.41465 14.5385 9.88604 14.5959 10.2122 14.3407Z\"\n fill={fill()}\n />\n </Svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CloseIconProps {\n fill?: Property.Color;\n}\n\nexport const CloseIcon: Component<CloseIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.71966 2.71968C3.01255 2.42678 3.48743 2.42677 3.78032 2.71966L8.00002 6.93925L12.2197 2.71967C12.5126 2.42677 12.9874 2.42678 13.2803 2.71967C13.5732 3.01257 13.5732 3.48744 13.2803 3.78033L9.06068 7.99991L13.2803 12.2197C13.5732 12.5126 13.5732 12.9874 13.2803 13.2803C12.9874 13.5732 12.5126 13.5732 12.2197 13.2803L8.00002 9.06057L3.78033 13.2803C3.48744 13.5732 3.01257 13.5732 2.71967 13.2803C2.42678 12.9874 2.42677 12.5126 2.71967 12.2197L6.93936 7.99991L2.71968 3.78034C2.42678 3.48745 2.42677 3.01257 2.71966 2.71968Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nexport const IconButtonStyled = styled.button`\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${props => props.theme!.colors.background.tint};\n border: none;\n cursor: pointer;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n","import type { Property } from 'csstype';\nimport { Component, JSXElement, Match, Show, Switch } from 'solid-js';\nimport { ArrowIcon } from 'src/app/components/icons/arrow-icon';\nimport { CloseIcon } from 'src/app/components/icons/close-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { IconButtonStyled } from './style';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { QuestionIcon } from 'src/app/components';\n\nexport interface IconButtonProps extends Styleable, WithDataAttributes {\n fill?: Property.Color;\n children?: JSXElement;\n icon?: 'close' | 'arrow' | 'question' | JSXElement;\n onClick: () => void;\n}\n\nexport const IconButton: Component<IconButtonProps> = props => {\n const dataAttrs = useDataAttributes(props);\n const icon = (): 'close' | 'arrow' | 'question' | JSXElement => props.icon || 'close';\n return (\n <IconButtonStyled\n class={props.class}\n onClick={() => props.onClick()}\n data-tc-icon-button=\"true\"\n {...dataAttrs}\n >\n <Show when={!!props.children}>{props.children}</Show>\n <Show when={!props.children}>\n <Switch>\n <Match when={icon() === 'close'}>\n <CloseIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'arrow'}>\n <ArrowIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'question'}>\n <QuestionIcon fill={props.fill} />\n </Match>\n <Match when={typeof icon() !== 'string'}>{icon()}</Match>\n </Switch>\n </Show>\n </IconButtonStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { IconButton } from 'src/app/components/icon-button';\nimport { media } from 'src/app/styles/media';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { rgba } from 'src/app/utils/css';\n\nexport const borders: BorderRadiusConfig = {\n m: '24px',\n s: '16px',\n none: '0'\n};\n\nexport const ModalBackgroundStyled = styled.div`\n display: flex;\n position: fixed;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n padding: 20px 0;\n overflow-y: auto;\n\n ${media('mobile')} {\n padding-bottom: 0;\n }\n`;\n\nexport const ModalWrapperClass = css`\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 16px 64px rgba(0, 0, 0, 0.16);\n width: fit-content;\n margin: auto;\n\n ${media('mobile')} {\n width: 100%;\n height: fit-content;\n margin: auto 0 0 0;\n }\n`;\n\nexport const ModalBodyStyled = styled.div`\n position: relative;\n min-height: 100px;\n width: 416px;\n padding: 44px 56px 24px;\n\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.04);\n\n background-color: ${props => props.theme!.colors.background.primary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const CloseButtonStyled = styled(IconButton)`\n position: absolute;\n right: 16px;\n top: 16px;\n`;\n\nexport const ModalFooterStyled = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 16px 16px 18px;\n border-radius: 0 0 ${props => borders[props.theme!.borderRadius]}\n ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const QuestionButtonStyled = styled(IconButton)`\n background-color: ${props => rgba(props.theme!.colors.icon.secondary, 0.12)};\n`;\n","import { logWarning } from 'src/app/utils/log';\n\n/**\n * A mock animation timeline class for environments that do not support animations.\n */\nclass AnimationTimelineNoop implements AnimationTimeline {\n public readonly currentTime: number = 0;\n}\n\n/**\n * A mock animation class for environments that do not support animations.\n */\nclass AnimationNoop implements Animation {\n private static _instance: AnimationNoop | null = null;\n\n public static create(): Animation {\n if (!AnimationNoop._instance) {\n logWarning(\n 'Animation is not supported in this environment: please consider using the `web-animations-js` polyfill to provide a fallback implementation of the Web Animations API.'\n );\n AnimationNoop._instance = new AnimationNoop();\n }\n return AnimationNoop._instance;\n }\n\n public readonly currentTime: number = 0;\n\n public readonly playbackRate: number = 1;\n\n public readonly startTime: number | null = null;\n\n public readonly timeline: AnimationTimeline = new AnimationTimelineNoop();\n\n public readonly finished: Promise<Animation> = Promise.resolve(this);\n\n public readonly effect: AnimationEffect | null = null;\n\n public readonly id: string = '';\n\n public readonly pending: boolean = false;\n\n public readonly playState: AnimationPlayState = 'finished';\n\n public readonly replaceState: AnimationReplaceState = 'active';\n\n public readonly ready: Promise<Animation> = Promise.resolve(this);\n\n public readonly oncancel: ((this: Animation, event: AnimationPlaybackEvent) => unknown) | null =\n null;\n\n public readonly onfinish: ((this: Animation, event: AnimationPlaybackEvent) => unknown) | null =\n null;\n\n public readonly onremove: ((this: Animation, ev: Event) => unknown) | null = null;\n\n private constructor() {}\n\n public cancel(): void {\n // no-op\n }\n\n public finish(): void {\n // no-op\n }\n\n public pause(): void {\n // no-op\n }\n\n public play(): void {\n // no-op\n }\n\n public reverse(): void {\n // no-op\n }\n\n public addEventListener(\n _type: string,\n _listener: EventListenerOrEventListenerObject | null,\n _options?: boolean | AddEventListenerOptions\n ): void {\n // no-op\n }\n\n public dispatchEvent(_event: Event): boolean {\n return false;\n }\n\n public removeEventListener(\n _type: string,\n _callback: EventListenerOrEventListenerObject | null,\n _options?: EventListenerOptions | boolean\n ): void {\n // no-op\n }\n\n public updatePlaybackRate(_playbackRate: number): void {\n // no-op\n }\n\n public commitStyles(): void {\n // no-op\n }\n\n public persist(): void {\n // no-op\n }\n}\n\n/**\n * A function that performs an animation on an element using Web Animations API.\n * If the environment supports animations, it uses the native animate function.\n * If not, it returns an instance of AnimationNoop to prevent code from breaking.\n *\n * @param element - The element to animate.\n * @param keyframes - The keyframes that define the animation.\n * @param options - The options that control the animation.\n * @returns An instance of Animation.\n */\nexport function animate(\n element: Element,\n keyframes: Keyframe[] | PropertyIndexedKeyframes | null,\n options?: number | KeyframeAnimationOptions\n): Animation {\n if ('animate' in element) {\n return element.animate(keyframes, options);\n }\n return AnimationNoop.create();\n}\n","import cn from 'classnames';\nimport { Component, createEffect, JSXElement, Show } from 'solid-js';\nimport { Transition } from 'solid-transition-group';\nimport clickOutsideDirective from 'src/app/directives/click-outside';\nimport keyPressedDirective from 'src/app/directives/key-pressed';\nimport androidBackHandlerDirective from 'src/app/directives/android-back-handler';\nimport { Styleable } from 'src/app/models/styleable';\nimport { isDevice, media } from 'src/app/styles/media';\nimport {\n borders,\n CloseButtonStyled,\n ModalBackgroundStyled,\n ModalBodyStyled,\n ModalFooterStyled,\n ModalWrapperClass,\n QuestionButtonStyled\n} from './style';\nimport { css, useTheme } from 'solid-styled-components';\nimport { disableScroll, enableScroll } from 'src/app/utils/web-api';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { TonConnectBrand } from 'src/app/components';\nimport { animate } from 'src/app/utils/animate';\n\nconst clickOutside = clickOutsideDirective;\nconst keyPressed = keyPressedDirective;\nconst androidBackHandler = androidBackHandlerDirective;\n\nexport interface ModalProps extends Styleable, WithDataAttributes {\n children: JSXElement;\n opened: boolean;\n enableAndroidBackHandler: boolean;\n onClose: () => void;\n onClickQuestion?: () => void;\n showFooter: boolean;\n}\n\nexport const Modal: Component<ModalProps> = props => {\n const theme = useTheme();\n const dataAttrs = useDataAttributes(props);\n\n createEffect(() => {\n if (props.opened) {\n disableScroll();\n } else {\n enableScroll();\n }\n });\n\n return (\n <Transition\n onBeforeEnter={el => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n animate(el, [{ opacity: 0 }, { opacity: 1 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n animate(\n el.firstElementChild!,\n [{ transform: 'translateY(390px)' }, { transform: 'translateY(0)' }],\n {\n duration\n }\n );\n }\n }}\n onExit={(el, done) => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n const backgroundAnimation = animate(el, [{ opacity: 1 }, { opacity: 0 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n const contentAnimation = animate(\n el.firstElementChild!,\n [{ transform: 'translateY(0)' }, { transform: 'translateY(390px)' }],\n {\n duration\n }\n );\n\n Promise.all([backgroundAnimation.finished, contentAnimation.finished]).then(\n done\n );\n } else {\n backgroundAnimation.finished.then(done);\n }\n }}\n >\n <Show when={props.opened}>\n <ModalBackgroundStyled data-tc-modal=\"true\" {...dataAttrs}>\n <div\n class={cn(\n ModalWrapperClass,\n css`\n border-radius: ${borders[theme!.borderRadius]};\n background-color: ${theme.colors.background.tint};\n\n ${media('mobile')} {\n border-radius: ${borders[theme!.borderRadius]}\n ${borders[theme!.borderRadius]} 0 0;\n }\n `\n )}\n use:clickOutside={() => props.onClose()}\n use:keyPressed={() => props.onClose()}\n use:androidBackHandler={{\n isEnabled: props.enableAndroidBackHandler,\n onClose: () => props.onClose()\n }}\n >\n <ModalBodyStyled class={props.class}>\n <CloseButtonStyled icon=\"close\" onClick={() => props.onClose()} />\n {props.children}\n </ModalBodyStyled>\n <Show when={props.onClickQuestion && props.showFooter}>\n <ModalFooterStyled>\n <TonConnectBrand />\n <QuestionButtonStyled\n onClick={props.onClickQuestion!}\n icon=\"question\"\n />\n </ModalFooterStyled>\n </Show>\n </div>\n </ModalBackgroundStyled>\n </Show>\n </Transition>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst wrapperBorderRadius: BorderRadiusConfig = {\n m: '22px',\n s: '12px',\n none: '0'\n};\n\nconst sliderBorderRadius: BorderRadiusConfig = {\n m: '18px',\n s: '8px',\n none: '0'\n};\n\nexport const TabBarStyled = styled.div`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n width: fit-content;\n justify-items: center;\n gap: 4px;\n\n position: relative;\n padding: 4px;\n border-radius: ${props => wrapperBorderRadius[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.secondary};\n`;\n\nexport const SliderStyled = styled.div<{ right: boolean }>`\n position: absolute;\n top: 4px;\n left: 4px;\n\n height: calc(100% - 8px);\n width: calc(50% - 4px);\n\n border-radius: ${props => sliderBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.segment};\n\n transform: ${props => (props.right ? 'translateX(100%)' : 'translateX(0)')};\n\n transition: transform 0.13s ease-in-out;\n`;\n\nexport const InputStyled = styled.input`\n display: none;\n`;\n\nexport const LabelStyled = styled.label<{ isActive: boolean }>`\n padding: 9px 12px;\n z-index: 1;\n\n cursor: ${props => (props.isActive ? 'default' : 'pointer')};\n\n transition: transform 0.13s ease-in-out;\n\n &:hover {\n transform: ${props => (props.isActive ? 'none' : 'scale(1.025)')};\n }\n\n > * {\n ${props => (!props.isActive ? `color: ${props.theme!.colors.text.secondary};` : '')}\n }\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { InputStyled, LabelStyled, SliderStyled, TabBarStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface TabBarProps extends Styleable {\n tab1: JSXElement;\n tab2: JSXElement;\n\n selectedTabIndex: number;\n\n onSelectedTabIndexChange?: (index: number) => void;\n}\n\nexport const TabBar: Component<TabBarProps> = props => {\n const groupName = 'tabBar' + Math.floor(Math.random() * 10000);\n\n return (\n <TabBarStyled class={props.class} data-tc-tab-bar=\"true\">\n <SliderStyled right={props.selectedTabIndex === 1} />\n <LabelStyled isActive={props.selectedTabIndex === 0}>\n <InputStyled\n type=\"radio\"\n name={groupName}\n checked={props.selectedTabIndex === 0}\n onInput={() => props.onSelectedTabIndexChange?.(0)}\n />\n {props.tab1}\n </LabelStyled>\n <LabelStyled isActive={props.selectedTabIndex === 1}>\n <InputStyled\n type=\"radio\"\n checked={props.selectedTabIndex === 1}\n name={groupName}\n onInput={() => props.onSelectedTabIndexChange?.(1)}\n />\n {props.tab2}\n </LabelStyled>\n </TabBarStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Image } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { toPx } from 'src/app/utils/css';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nconst backgroundBorders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst imageBorders: BorderRadiusConfig = {\n m: '12px',\n s: '8px',\n none: '0'\n};\n\nexport const qrNormalSize = 256;\nexport const imgSizeDefault = 60;\n\nexport const picSizeDefault = 48;\n\nconst qrPaddingTop = 24;\n\nexport const CopyIconButton = styled.div`\n width: 52px;\n height: 52px;\n background: transparent;\n position: absolute;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.125s ease-in-out;\n`;\n\nexport const QrCodeBackground = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background-color: ${props => props.theme!.colors.background.qr};\n border-radius: ${props => backgroundBorders[props.theme!.borderRadius]};\n padding: ${toPx(qrPaddingTop)} 0;\n height: ${toPx(qrNormalSize + qrPaddingTop * 2)};\n width: 100%;\n\n overflow: hidden;\n cursor: pointer;\n border: none;\n\n ${mediaNotTouch} {\n &:hover {\n ${CopyIconButton.class} {\n transform: scale(1.04);\n }\n }\n }\n\n &:active {\n ${CopyIconButton.class} {\n transform: scale(0.96);\n }\n }\n\n ${mediaTouch} {\n &:active {\n ${CopyIconButton.class} {\n transform: scale(0.92);\n }\n }\n }\n`;\n\nexport const QrCodeWrapper = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0 auto;\n\n > div:first-child {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n rect {\n fill: transparent;\n }\n\n path {\n fill: ${props => props.theme!.colors.constant.black};\n }\n`;\n\nexport const ImageBackground = styled.div`\n position: absolute;\n width: ${toPx(imgSizeDefault)};\n height: ${toPx(imgSizeDefault)};\n background: ${props => props.theme!.colors.background.qr};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const ImageStyled = styled(Image)<{ size: number }>`\n width: ${props => toPx(props.size)};\n height: ${props => toPx(props.size)};\n border-radius: ${props => imageBorders[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.qr};\n`;\n\nexport const CopiedBoxStyled = styled.div`\n position: absolute;\n bottom: 14px;\n left: 50%;\n transform: translate(-50%, 0);\n\n display: flex;\n gap: 6px;\n align-items: center;\n border-radius: 18px;\n min-width: 126px;\n padding: 9px 16px 9px 10px;\n\n filter: drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.08));\n background-color: ${props => props.theme!.colors.background.segment};\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { TonConnectUIError } from 'src/errors';\n\nexport async function copyToClipboard(text: string): Promise<void> {\n try {\n if (!navigator?.clipboard) {\n throw new TonConnectUIError('Clipboard API not available');\n }\n\n return await navigator.clipboard.writeText(text);\n } catch (e) {}\n\n fallbackCopyTextToClipboard(text);\n}\n\nfunction fallbackCopyTextToClipboard(text: string): void {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(textArea);\n }\n}\n","import { Component, createEffect, createSignal, Show } from 'solid-js';\nimport {\n CopiedBoxStyled,\n CopyIconButton,\n ImageBackground,\n ImageStyled,\n imgSizeDefault,\n picSizeDefault,\n QrCodeBackground,\n QrCodeWrapper,\n qrNormalSize\n} from './style';\nimport qrcode from 'qrcode-generator';\nimport { Transition } from 'solid-transition-group';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { Styleable } from 'src/app/models/styleable';\nimport { toPx } from 'src/app/utils/css';\nimport { CopyLightIcon, SuccessIcon, Text } from 'src/app/components';\nimport { animate } from 'src/app/utils/animate';\n\nexport interface QRCodeProps extends Styleable {\n sourceUrl: string;\n imageUrl?: string;\n disableCopy?: boolean;\n}\n\nexport const QRCode: Component<QRCodeProps> = props => {\n let qrCodeCanvasRef: HTMLDivElement | undefined;\n let qrCodeWrapperRef: HTMLDivElement | undefined;\n let imageRef: HTMLDivElement | undefined;\n\n const [copyButtonOpened, setCopyButtonOpened] = createSignal(false);\n\n const [picSize, setPicSize] = createSignal(picSizeDefault);\n\n createEffect(() => {\n const errorCorrectionLevel = 'L';\n const cellSize = 4;\n const qr = qrcode(0, errorCorrectionLevel);\n qr.addData(props.sourceUrl);\n qr.make();\n qrCodeCanvasRef!.innerHTML = qr.createSvgTag(cellSize, 0);\n const qrSize = qrCodeCanvasRef!.firstElementChild!.clientWidth;\n\n const scale = Math.round((qrNormalSize / qrSize) * 100000) / 100000;\n\n if (imageRef) {\n const imgSize = Math.ceil(imgSizeDefault / (scale * cellSize)) * cellSize;\n const imgOffset = toPx(Math.ceil((qrSize - imgSize) / (2 * cellSize)) * cellSize);\n imageRef.style.top = imgOffset;\n imageRef.style.left = imgOffset;\n imageRef.style.height = toPx(imgSize);\n imageRef.style.width = toPx(imgSize);\n\n setPicSize(Math.round(picSizeDefault / scale));\n }\n\n qrCodeWrapperRef!.style.transform = `scale(${scale})`;\n });\n\n let timeoutId: null | ReturnType<typeof setTimeout> = null;\n const onCopyClick = (): void => {\n setCopyButtonOpened(true);\n copyToClipboard(props.sourceUrl);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => setCopyButtonOpened(false), 1500);\n };\n\n return (\n <QrCodeBackground class={props.class} onClick={onCopyClick}>\n <QrCodeWrapper ref={qrCodeWrapperRef}>\n <div ref={qrCodeCanvasRef} />\n <Show when={props.imageUrl}>\n <ImageBackground ref={imageRef}>\n <ImageStyled src={props.imageUrl!} alt=\"\" size={picSize()} />\n </ImageBackground>\n </Show>\n </QrCodeWrapper>\n <Transition\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translate(-50%, 44px)' },\n { opacity: 1, transform: 'translate(-50%, 0)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n );\n }}\n onExit={(el, done) => {\n animate(\n el,\n [\n { opacity: 1, transform: 'translate(-50%, 0)' },\n { opacity: 0, transform: 'translate(-50%, 44px)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n ).finished.then(() => {\n done();\n });\n }}\n >\n <Show when={copyButtonOpened() && !props.disableCopy}>\n <CopiedBoxStyled>\n <SuccessIcon size=\"xs\" />\n <Text translationKey=\"common.linkCopied\">Link Copied</Text>\n </CopiedBoxStyled>\n </Show>\n </Transition>\n <Show when={!props.disableCopy}>\n <CopyIconButton>\n <CopyLightIcon />\n </CopyIconButton>\n </Show>\n </QrCodeBackground>\n );\n};\n","import { createContext, createSignal, useContext } from 'solid-js';\nimport { createStore } from 'solid-js/store';\n\n// src/index.ts\nvar deepReadObject = (obj, path, defaultValue) => {\n const value = path.trim().split(\".\").reduce((a, b) => a ? a[b] : void 0, obj);\n return value !== void 0 ? value : defaultValue;\n};\nvar template = (str, params, reg = /{{(.*?)}}/g) => str.replace(reg, (_, key) => deepReadObject(params, key, \"\"));\nvar createI18nContext = (init = {}, lang = navigator.language in init ? navigator.language : Object.keys(init)[0]) => {\n const [locale, setLocale] = createSignal(lang);\n const [dict, setDict] = createStore(init);\n const translate = (key, params, defaultValue) => {\n const val = deepReadObject(dict[locale()], key, defaultValue || \"\");\n if (typeof val === \"function\")\n return val(params);\n if (typeof val === \"string\")\n return template(val, params || {});\n return val;\n };\n const actions = {\n add(lang2, table) {\n setDict(lang2, (t) => Object.assign(t || {}, table));\n },\n locale: (lang2) => lang2 ? setLocale(lang2) : locale(),\n dict: (lang2) => deepReadObject(dict, lang2)\n };\n return [translate, actions];\n};\nvar I18nContext = createContext({});\nvar useI18n = () => useContext(I18nContext);\n\nexport { I18nContext, createI18nContext, useI18n };\n","import type { Property } from 'csstype';\nimport { styled } from 'solid-styled-components';\n\nexport const TextStyled = styled.div<{\n fontSize: Property.FontSize;\n fontWeight: Property.FontWeight;\n lineHeight: Property.LineHeight;\n color: Property.Color;\n}>`\n font-style: normal;\n font-weight: ${props => props.fontWeight};\n font-size: ${props => props.fontSize};\n line-height: ${props => props.lineHeight};\n\n color: ${props => props.color};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport type { Property } from 'csstype';\nimport { Component, createEffect, JSXElement, mergeProps } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TextStyled } from './style';\n\nexport interface TextProps extends Styleable, Translateable {\n children?: JSXElement;\n fontSize?: Property.FontSize;\n fontWeight?: Property.FontWeight;\n lineHeight?: Property.LineHeight;\n letterSpacing?: Property.LetterSpacing;\n color?: Property.Color;\n\n cursor?: 'default' | 'unset';\n}\n\nexport const Text: Component<TextProps> = inputs => {\n const theme = useTheme();\n const [t] = useI18n();\n let textRef: HTMLDivElement | undefined;\n\n const color = (): Property.Color => inputs.color || theme.colors.text.primary;\n\n const props = mergeProps(\n {\n fontSize: '14px',\n fontWeight: '510',\n lineHeight: '130%'\n },\n inputs\n );\n\n createEffect(() => {\n if (!textRef) {\n return;\n }\n\n if (props.cursor === 'unset') {\n return;\n }\n\n if (getComputedStyle(textRef).cursor !== 'pointer') {\n textRef.style.cursor = 'default';\n }\n });\n\n return (\n <TextStyled\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n lineHeight={props.lineHeight}\n color={color()}\n class={props.class}\n ref={textRef}\n data-tc-text=\"true\"\n >\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </TextStyled>\n );\n};\n","import { Component, JSXElement } from 'solid-js';\nimport { Image } from 'src/app/components';\nimport { styled } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface WalletImageProps extends Styleable {\n src: string;\n badge?: JSXElement;\n}\n\nconst ImageContainer = styled.div`\n position: relative;\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border: 0.5px solid rgba(0, 0, 0, 0.08);\n border-radius: inherit;\n }\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 100%;\n height: 100%;\n border-radius: inherit;\n`;\n\nexport const WalletImage: Component<WalletImageProps> = props => {\n return (\n <ImageContainer class={props.class}>\n <ImageStyled src={props.src} />\n {props.badge}\n </ImageContainer>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from '../typography/text';\nimport { Image } from '../image';\nimport { media, mediaNotTouch, mediaTouch } from 'src/app/styles/media';\nimport { WalletImage } from './wallet-image';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst badgeBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const WalletUlContainer = styled.ul`\n display: flex;\n gap: 0;\n width: 100%;\n overflow-x: auto;\n padding: 8px 12px 16px 12px;\n margin: 0;\n list-style: none;\n flex-wrap: nowrap;\n\n &&::-webkit-scrollbar {\n display: none;\n }\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n > li {\n display: flex;\n flex: 1;\n min-width: 78px;\n height: fit-content;\n }\n\n > li > button {\n width: 100%;\n }\n`;\n\nexport const WalletItemStyled = styled.button`\n position: relative;\n cursor: pointer;\n border: none;\n background-color: unset;\n padding: 8px 4px;\n width: 100%;\n min-width: 78px;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n\nexport const ImageStyled = styled(WalletImage)`\n width: 60px;\n height: 60px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n margin-bottom: 8px;\n position: relative;\n`;\n\nexport const BadgeStyled = styled(Image)`\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 24px;\n height: 24px;\n border-radius: ${props => badgeBorders[props.theme!.borderRadius]};\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08);\n`;\n\nexport const StyledText = styled(Text)`\n max-width: 90px;\n font-weight: 510;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n ${media('mobile')} {\n max-width: 80px;\n }\n`;\n\nexport const StyledSecondLine = styled(Text)<{ colorPrimary: boolean }>`\n font-weight: ${props => (props.colorPrimary ? '510' : '400')};\n max-width: 90px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n color: ${props =>\n props.colorPrimary ? props.theme!.colors.text.primary : props.theme!.colors.text.secondary};\n\n ${media('mobile')} {\n max-width: 80px;\n }\n`;\n","import { Component, createEffect, JSXElement, onMount } from 'solid-js';\nimport { BadgeStyled, ImageStyled, StyledSecondLine, StyledText, WalletItemStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface WalletItemProps extends Styleable {\n icon: string | JSXElement;\n name: string;\n secondLine?: string;\n secondLineColorPrimary?: boolean;\n badgeUrl?: string;\n onClick: () => void;\n}\n\nexport const WalletItem: Component<WalletItemProps> = props => {\n let ctxRef: HTMLDivElement | null = null;\n\n // adjust letter spacing to fit the wallet name in the item\n const adjustLetterSpacing = (): void => {\n // we can't set `ref` on the `StyledText` directly, so we use a context ref\n const name = ctxRef?.querySelector('div');\n if (name && name.scrollWidth > name.clientWidth) {\n let spacing = 0;\n const minSpacing = -0.4;\n const step = 0.05;\n // reduce letter spacing until the text fits\n while (name.scrollWidth > name.clientWidth && spacing >= minSpacing) {\n spacing -= step;\n name.style.letterSpacing = `${spacing}px`;\n }\n // adjust spacing one more time to make sure the text fits\n if (spacing !== 0) {\n spacing -= step;\n name.style.letterSpacing = `${spacing}px`;\n }\n }\n };\n\n onMount(() => adjustLetterSpacing());\n\n createEffect(() => {\n adjustLetterSpacing();\n });\n\n return (\n <WalletItemStyled\n class={props.class}\n onClick={() => props.onClick()}\n data-tc-wallet-item=\"true\"\n >\n {typeof props.icon === 'string' ? (\n <ImageStyled\n src={props.icon}\n badge={props.badgeUrl && <BadgeStyled src={props.badgeUrl} />}\n />\n ) : (\n props.icon\n )}\n <div ref={el => (ctxRef = el)}>\n <StyledText>{props.name}</StyledText>\n </div>\n {props.secondLine && (\n <StyledSecondLine colorPrimary={props.secondLineColorPrimary ?? true}>\n {props.secondLine}\n </StyledSecondLine>\n )}\n </WalletItemStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H1Styled = styled.h1`\n font-style: normal;\n font-weight: 590;\n font-size: 20px;\n line-height: 28px;\n\n text-align: center;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H1Styled } from './style';\n\nexport interface H1Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H1: Component<H1Props> = props => {\n const [t] = useI18n();\n return (\n <H1Styled class={props.class} data-tc-h1=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H1Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H2Styled = styled.h2`\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 22px;\n\n text-align: center;\n\n color: ${props => props.theme!.colors.text.secondary};\n\n margin-top: 0;\n margin-bottom: 32px;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H2Styled } from './style';\n\nexport interface H2Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H2: Component<H2Props> = props => {\n const [t] = useI18n();\n return (\n <H2Styled class={props.class} data-tc-h2=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H2Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H3Styled = styled.h3`\n font-style: normal;\n font-weight: 510;\n font-size: 16px;\n line-height: 20px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H3Styled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface H3Props extends Translateable, Styleable {\n children?: JSXElement;\n}\n\nexport const H3: Component<H3Props> = props => {\n const [t] = useI18n();\n\n return (\n <H3Styled data-tc-h3=\"true\" class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H3Styled>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const TonIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14.1839 17.7069C13.6405 18.6507 13.3688 19.1226 13.0591 19.348C12.4278 19.8074 11.5723 19.8074 10.941 19.348C10.6312 19.1226 10.3595 18.6507 9.81613 17.7069L5.52066 10.2464C4.76864 8.94024 4.39263 8.28717 4.33762 7.75894C4.2255 6.68236 4.81894 5.65591 5.80788 5.21589C6.29309 5 7.04667 5 8.55383 5H15.4462C16.9534 5 17.7069 5 18.1922 5.21589C19.1811 5.65591 19.7745 6.68236 19.6624 7.75894C19.6074 8.28717 19.2314 8.94024 18.4794 10.2464L14.1839 17.7069ZM11.1 16.3412L6.56139 8.48002C6.31995 8.06185 6.19924 7.85276 6.18146 7.68365C6.14523 7.33896 6.33507 7.01015 6.65169 6.86919C6.80703 6.80002 7.04847 6.80002 7.53133 6.80002H7.53134L11.1 6.80002V16.3412ZM12.9 16.3412L17.4387 8.48002C17.6801 8.06185 17.8008 7.85276 17.8186 7.68365C17.8548 7.33896 17.665 7.01015 17.3484 6.86919C17.193 6.80002 16.9516 6.80002 16.4687 6.80002L12.9 6.80002V16.3412Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface SuccessIconProps extends Styleable {\n fill?: Property.Color;\n size?: 'xs' | 's' | 'm';\n}\n\nexport const SuccessIcon: Component<SuccessIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 'xs' | 's' | 'm' => props.size || 's';\n const fill = (): string => props.fill || theme.colors.icon.success;\n\n return (\n <>\n {size() === 'xs' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n class={props.class}\n >\n <g clip-path=\"url(#clip0_3783_2045)\">\n <circle cx=\"8\" cy=\"8.00098\" r=\"8\" fill={fill()} />\n <path\n d=\"M4.75 8.50098L7 10.751L11.75 6.00098\"\n stroke={theme.colors.constant.white}\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3783_2045\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0 0.000976562)\"\n />\n </clipPath>\n </defs>\n </svg>\n ) : size() === 's' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M17.1364 9.6364C17.4879 9.28493 17.4879 8.71508 17.1364 8.36361C16.7849 8.01214 16.2151 8.01214 15.8636 8.36361L10 14.2272L8.1364 12.3636C7.78493 12.0121 7.21508 12.0121 6.86361 12.3636C6.51214 12.7151 6.51214 13.2849 6.86361 13.6364L9.36361 16.1364C9.71508 16.4879 10.2849 16.4879 10.6364 16.1364L17.1364 9.6364Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"36\" cy=\"36\" r=\"33\" fill={fill()} />\n <path\n d=\"M50.9142 28.4142C51.6953 27.6332 51.6953 26.3668 50.9142 25.5858C50.1332 24.8047 48.8668 24.8047 48.0858 25.5858L30 43.6716L23.9142 37.5858C23.1332 36.8047 21.8668 36.8047 21.0858 37.5858C20.3047 38.3668 20.3047 39.6332 21.0858 40.4142L28.5858 47.9142C29.3668 48.6953 30.6332 48.6953 31.4142 47.9142L50.9142 28.4142Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n )}\n </>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ErrorIconProps extends Styleable {\n fill?: Property.Color;\n size?: 'xs' | 's' | 'm';\n}\n\nexport const ErrorIcon: Component<ErrorIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 'xs' | 's' | 'm' => props.size || 'm';\n const fill = (): string => props.fill || theme.colors.icon.error;\n\n return (\n <>\n {size() === 'm' ? (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"36\" cy=\"36\" r=\"33\" fill={fill()} />\n <path\n d=\"M24.0858 26.9142C23.3047 26.1332 23.3047 24.8668 24.0858 24.0858C24.8668 23.3047 26.1332 23.3047 26.9142 24.0858L36 33.1716L45.0858 24.0858C45.8668 23.3047 47.1332 23.3047 47.9142 24.0858C48.6953 24.8668 48.6953 26.1332 47.9142 26.9142L38.8284 36L47.9142 45.0858C48.6953 45.8668 48.6953 47.1332 47.9142 47.9142C47.1332 48.6953 45.8668 48.6953 45.0858 47.9142L36 38.8284L26.9142 47.9142C26.1332 48.6953 24.8668 48.6953 24.0858 47.9142C23.3047 47.1332 23.3047 45.8668 24.0858 45.0858L33.1716 36L24.0858 26.9142Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : size() === 's' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <circle cx=\"24\" cy=\"24.001\" r=\"22\" fill={fill()} />\n <path\n d=\"M24 24.001L31.5 16.501M24 24.001L16.5 16.501M24 24.001L16.5 31.501M24 24.001L31.5 31.501\"\n stroke={theme.colors.constant.white}\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n ) : (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M7.86361 9.1364C7.51214 8.78493 7.51214 8.21508 7.86361 7.86361C8.21508 7.51214 8.78493 7.51214 9.1364 7.86361L12 10.7272L14.8636 7.86361C15.2151 7.51214 15.7849 7.51214 16.1364 7.86361C16.4879 8.21508 16.4879 8.78493 16.1364 9.1364L13.2728 12L16.1364 14.8636C16.4879 15.2151 16.4879 15.7849 16.1364 16.1364C15.7849 16.4879 15.2151 16.4879 14.8636 16.1364L12 13.2728L9.1364 16.1364C8.78493 16.4879 8.21508 16.4879 7.86361 16.1364C7.51214 15.7849 7.51214 15.2151 7.86361 14.8636L10.7272 12L7.86361 9.1364Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n )}\n </>\n );\n};\n","import cn from 'classnames';\nimport type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { css, keyframes, useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LoaderIconProps extends Styleable {\n fill?: Property.Color;\n size?: 'xs' | 's' | 'm';\n}\n\nexport const LoaderIcon: Component<LoaderIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 'xs' | 's' | 'm' => props.size || 'xs';\n const fill = (): string => props.fill || theme.colors.icon.tertiary;\n\n const rotateAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const svgClass = css`\n animation: ${rotateAnimation} 1s linear infinite;\n `;\n\n return (\n <>\n {size() === 'xs' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M15.55 5.85123C18.9459 7.81184 20.1094 12.1541 18.1488 15.55C16.1882 18.9459 11.8459 20.1094 8.44998 18.1488C8.01952 17.9003 7.46909 18.0478 7.22056 18.4782C6.97203 18.9087 7.11952 19.4591 7.54998 19.7076C11.8068 22.1653 17.2499 20.7068 19.7076 16.45C22.1653 12.1932 20.7068 6.75005 16.45 4.29239C12.1932 1.83472 6.75003 3.29321 4.29236 7.55001C4.04383 7.98047 4.19132 8.53091 4.62178 8.77943C5.05224 9.02796 5.60268 8.88048 5.8512 8.45001C7.81181 5.05413 12.1541 3.89062 15.55 5.85123Z\"\n fill={fill()}\n />\n </svg>\n ) : size() === 's' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"44\"\n height=\"44\"\n viewBox=\"0 0 44 44\"\n fill=\"none\"\n class={cn(svgClass, props.class)}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M22 2.99951C11.5066 2.99951 3 11.5061 3 21.9995C3 32.4929 11.5066 40.9995 22 40.9995C22.8284 40.9995 23.5 41.6711 23.5 42.4995C23.5 43.3279 22.8284 43.9995 22 43.9995C9.84974 43.9995 0 34.1498 0 21.9995C0 9.84925 9.84974 -0.000488281 22 -0.000488281C34.1503 -0.000488281 44 9.84925 44 21.9995C44 22.8279 43.3284 23.4995 42.5 23.4995C41.6716 23.4995 41 22.8279 41 21.9995C41 11.5061 32.4934 2.99951 22 2.99951Z\"\n fill={fill()}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M24 56.7846C35.479 63.412 50.1572 59.479 56.7846 47.9999C63.412 36.5209 59.479 21.8427 48 15.2153C36.521 8.58791 21.8428 12.5209 15.2154 23.9999\"\n stroke={fill()}\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )}\n </>\n );\n};\n","import { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models';\n\nexport const TonConnectBrand: Component = () => {\n const theme = useTheme();\n const fill = (): string =>\n theme.theme === THEME.DARK ? theme.colors.constant.white : theme.colors.constant.black;\n\n return (\n <svg\n width=\"158\"\n height=\"28\"\n viewBox=\"0 0 158 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M28 14.001C28 21.733 21.732 28.001 14 28.001C6.26801 28.001 0 21.733 0 14.001C0 6.26899 6.26801 0.000976562 14 0.000976562C21.732 0.000976562 28 6.26899 28 14.001ZM9.21931 8.00098H18.7801H18.7813C20.538 8.00098 21.6522 9.89966 20.7691 11.4302L14.8672 21.6576C14.4822 22.3254 13.5172 22.3254 13.1322 21.6576L7.23158 11.4302C6.34721 9.89726 7.4614 8.00098 9.21931 8.00098ZM13.1262 18.5882V9.74806H9.21811C8.78976 9.74806 8.53708 10.2029 8.74163 10.5578L11.8423 16.1035L13.1262 18.5882ZM16.1559 16.1047L19.2554 10.5566C19.4599 10.2017 19.2073 9.74685 18.7789 9.74685H14.8709V18.5906L16.1559 16.1047Z\"\n fill=\"#0098EA\"\n />\n <path\n d=\"M18.7802 8.00098H9.21936C7.46145 8.00098 6.34727 9.89726 7.23164 11.4302L13.1322 21.6576C13.5173 22.3254 14.4823 22.3254 14.8673 21.6576L20.7691 11.4302C21.6523 9.89966 20.5381 8.00098 18.7814 8.00098H18.7802ZM13.1274 18.5906L11.8424 16.1035L8.74168 10.5578C8.53714 10.2029 8.78981 9.74806 9.21816 9.74806H13.1262V18.5918L13.1274 18.5906ZM19.2555 10.5566L16.156 16.1047L14.8709 18.5906V9.74685H18.779C19.2073 9.74685 19.46 10.2017 19.2555 10.5566Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M51.7483 22.1967C55.7182 22.1967 58.9609 18.954 58.9609 14.9841C58.9609 11.0142 55.7182 7.77148 51.7483 7.77148C47.7588 7.77148 44.5357 11.0142 44.5357 14.9841C44.5357 18.954 47.7588 22.1967 51.7483 22.1967ZM51.7483 19.1702C49.4686 19.1702 47.6802 17.2442 47.6802 14.9841C47.6802 12.724 49.4686 10.798 51.7483 10.798C54.0084 10.798 55.7968 12.724 55.7968 14.9841C55.7968 17.2442 54.0084 19.1702 51.7483 19.1702ZM37.0698 21.9609H40.2142V10.9946H44.2843V8.00732H33V10.9946H37.0698V21.9609ZM69.9379 8.00732H73.0823V21.9609H70.3899L63.59 13.3333V21.9609H60.4652V8.00732H63.1576L69.9379 16.6153V8.00732ZM79.2259 14.9887C79.2259 10.9202 82.351 7.77539 86.4982 7.77539C89.8592 7.77539 92.5519 9.95709 93.2202 12.6891H90.7437C90.154 11.0971 88.4637 9.9964 86.4982 9.9964C83.5893 9.9964 81.5452 12.1781 81.5452 14.9887C81.5452 17.7994 83.5893 19.9811 86.4982 19.9811C88.4637 19.9811 90.154 18.8804 90.7437 17.2884H93.2202C92.5519 20.0204 89.8592 22.2021 86.4982 22.2021C82.351 22.2021 79.2259 19.0573 79.2259 14.9887ZM104.584 17.0525C104.584 19.9025 102.343 22.1628 99.4342 22.1628C96.5253 22.1628 94.2846 19.9025 94.2846 17.0525C94.2846 14.2025 96.5253 11.9422 99.4342 11.9422C102.343 11.9422 104.584 14.2025 104.584 17.0525ZM96.4663 17.0525C96.4663 18.8018 97.6849 20.158 99.4342 20.158C101.164 20.158 102.382 18.8018 102.382 17.0525C102.382 15.3032 101.164 13.947 99.4342 13.947C97.6849 13.947 96.4663 15.3032 96.4663 17.0525ZM108.626 12.1388H106.463V21.9662H108.626V17.1311C108.626 15.0281 109.726 13.9077 111.161 13.9077C112.419 13.9077 113.205 14.8512 113.205 16.4039V21.9662H115.367V16.0501C115.367 13.5539 113.893 11.9422 111.613 11.9422C110.335 11.9422 109.215 12.4926 108.626 13.4753V12.1388ZM117.839 12.1388H120.001V13.4753C120.59 12.4926 121.711 11.9422 122.988 11.9422C125.268 11.9422 126.742 13.5539 126.742 16.0501V21.9662H124.58V16.4039C124.58 14.8512 123.794 13.9077 122.536 13.9077C121.101 13.9077 120.001 15.0281 120.001 17.1311V21.9662H117.839V12.1388ZM133.558 22.1628C136.054 22.1628 137.823 20.728 138.373 18.8804H136.113C135.661 19.8238 134.717 20.2563 133.636 20.2563C131.887 20.2563 130.747 19.077 130.668 17.5832H138.491C138.688 14.2419 136.585 11.9422 133.577 11.9422C130.551 11.9422 128.526 14.1436 128.526 17.0525C128.526 20.0007 130.629 22.1628 133.558 22.1628ZM130.747 16.0501C131.042 14.5367 132.162 13.7505 133.518 13.7505C134.717 13.7505 135.838 14.4581 136.172 16.0501H130.747ZM149.851 18.3694C149.32 20.5511 147.453 22.1628 144.859 22.1628C141.871 22.1628 139.709 19.8828 139.709 17.0525C139.709 14.2222 141.871 11.9422 144.859 11.9422C147.453 11.9422 149.32 13.5539 149.851 15.7356H147.571C147.178 14.6743 146.215 13.9077 144.859 13.9077C143.109 13.9077 141.91 15.2246 141.91 17.0525C141.91 18.8804 143.109 20.1973 144.859 20.1973C146.215 20.1973 147.178 19.4307 147.571 18.3694H149.851ZM155.75 22.0645C156.418 22.0645 156.929 21.9859 157.362 21.8483V19.9221C157.047 20.0401 156.615 20.1187 156.202 20.1187C155.082 20.1187 154.551 19.6666 154.551 18.448V14.065H157.362V12.1388H154.551V9.40675H152.389V12.1388H150.345V14.065H152.389V18.8018C152.389 21.0228 153.863 22.0645 155.75 22.0645Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const QuestionIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5.56608 4.42584C5.82527 3.32158 6.8176 2.5 8.00001 2.5C9.38072 2.5 10.5 3.61929 10.5 5C10.5 5.63026 10.3391 6.0386 10.1264 6.34455C9.90018 6.66993 9.58561 6.92478 9.18864 7.20877C9.12579 7.25372 9.05873 7.30025 8.9887 7.34883C8.27392 7.84472 7.25001 8.55507 7.25001 10V10.25C7.25001 10.6642 7.5858 11 8.00001 11C8.41422 11 8.75001 10.6642 8.75001 10.25V10C8.75001 9.36502 9.10777 9.1096 9.94554 8.51149L10.0614 8.42873C10.4769 8.13147 10.9748 7.75194 11.358 7.20076C11.7547 6.63015 12 5.91973 12 5C12 2.79086 10.2091 1 8.00001 1C6.10564 1 4.5205 2.31615 4.10577 4.08308C4.01112 4.48634 4.26129 4.88997 4.66454 4.98462C5.0678 5.07927 5.47143 4.8291 5.56608 4.42584ZM8.00001 15C8.60752 15 9.10001 14.5075 9.10001 13.9C9.10001 13.2925 8.60752 12.8 8.00001 12.8C7.39249 12.8 6.90001 13.2925 6.90001 13.9C6.90001 14.5075 7.39249 15 8.00001 15Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface BrowserIconProps {\n fill?: Property.Color;\n}\n\nexport const BrowserIcon: Component<BrowserIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M9.98156 8.75C9.84854 11.4328 9.01206 13.5 8 13.5C6.98794 13.5 6.15146 11.4328 6.01844 8.75H9.98156ZM11.4832 8.75C11.4217 10.1155 11.1929 11.3869 10.8239 12.4017C10.7734 12.5405 10.7188 12.6789 10.6595 12.8154C12.1454 11.993 13.2103 10.5029 13.4493 8.75H11.4832ZM13.4493 7.25H11.4832C11.4217 5.88453 11.1929 4.61314 10.8239 3.5983C10.7734 3.4595 10.7188 3.32111 10.6595 3.18459C12.1454 4.00697 13.2103 5.49709 13.4493 7.25ZM9.98156 7.25H6.01844C6.15144 4.56764 6.98769 2.50062 7.99955 2.5H8C9.01206 2.5 9.84854 4.56724 9.98156 7.25ZM4.51678 7.25C4.57826 5.88453 4.80706 4.61314 5.1761 3.5983C5.22657 3.4595 5.28124 3.32111 5.3405 3.18459C3.85463 4.00697 2.78972 5.49709 2.55071 7.25H4.51678ZM2.55071 8.75C2.78972 10.5029 3.85463 11.993 5.3405 12.8154C5.28124 12.6789 5.22657 12.5405 5.1761 12.4017C4.80706 11.3869 4.57826 10.1155 4.51678 8.75H2.55071ZM15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface MobileIconProps {\n fill?: Property.Color;\n}\n\nexport const MobileIcon: Component<MobileIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.5 4.8C2.5 3.11984 2.5 2.27976 2.82698 1.63803C3.1146 1.07354 3.57354 0.614601 4.13803 0.32698C4.77976 0 5.61984 0 7.3 0H8.7C10.3802 0 11.2202 0 11.862 0.32698C12.4265 0.614601 12.8854 1.07354 13.173 1.63803C13.5 2.27976 13.5 3.11984 13.5 4.8V11.2C13.5 12.8802 13.5 13.7202 13.173 14.362C12.8854 14.9265 12.4265 15.3854 11.862 15.673C11.2202 16 10.3802 16 8.7 16H7.3C5.61984 16 4.77976 16 4.13803 15.673C3.57354 15.3854 3.1146 14.9265 2.82698 14.362C2.5 13.7202 2.5 12.8802 2.5 11.2V4.8ZM4 3.9C4 3.05992 4 2.63988 4.16349 2.31901C4.3073 2.03677 4.53677 1.8073 4.81901 1.66349C5.13988 1.5 5.55992 1.5 6.4 1.5H9.6C10.4401 1.5 10.8601 1.5 11.181 1.66349C11.4632 1.8073 11.6927 2.03677 11.8365 2.31901C12 2.63988 12 3.05992 12 3.9V12.1C12 12.9401 12 13.3601 11.8365 13.681C11.6927 13.9632 11.4632 14.1927 11.181 14.3365C10.8601 14.5 10.4401 14.5 9.6 14.5H6.4C5.55992 14.5 5.13988 14.5 4.81901 14.3365C4.53677 14.1927 4.3073 13.9632 4.16349 13.681C4 13.3601 4 12.9401 4 12.1V3.9ZM7 2.5C6.58579 2.5 6.25 2.83579 6.25 3.25C6.25 3.66421 6.58579 4 7 4H9C9.41421 4 9.75 3.66421 9.75 3.25C9.75 2.83579 9.41421 2.5 9 2.5H7Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DesktopIconProps {\n fill?: Property.Color;\n}\n\nexport const DesktopIcon: Component<DesktopIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.5 6.8C1.5 5.11984 1.5 4.27976 1.82698 3.63803C2.1146 3.07354 2.57354 2.6146 3.13803 2.32698C3.77976 2 4.61984 2 6.3 2H9.7C11.3802 2 12.2202 2 12.862 2.32698C13.4265 2.6146 13.8854 3.07354 14.173 3.63803C14.5 4.27976 14.5 5.11984 14.5 6.8V11.5H15.25C15.6642 11.5 16 11.8358 16 12.25C16 12.6642 15.6642 13 15.25 13H0.75C0.335786 13 0 12.6642 0 12.25C0 11.8358 0.335786 11.5 0.75 11.5H1.5V6.8ZM3 11.5H13V5.9C13 5.05992 13 4.63988 12.8365 4.31901C12.6927 4.03677 12.4632 3.8073 12.181 3.66349C11.8601 3.5 11.4401 3.5 10.6 3.5H5.4C4.55992 3.5 4.13988 3.5 3.81901 3.66349C3.53677 3.8073 3.3073 4.03677 3.16349 4.31901C3 4.63988 3 5.05992 3 5.9V11.5Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface RetryIconProps {\n fill?: Property.Color;\n}\n\nexport const RetryIcon: Component<RetryIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.accent;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_3676_1603)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15.5 1.25049C15.5 0.836275 15.1642 0.500488 14.75 0.500488C14.3358 0.500488 14 0.836275 14 1.25049V3.67012C12.7187 2.04487 10.7318 1.00049 8.5 1.00049C4.63401 1.00049 1.5 4.1345 1.5 8.00049C1.5 11.8665 4.63401 15.0005 8.5 15.0005C11.6844 15.0005 14.3703 12.8748 15.2199 9.96661C15.3361 9.56902 15.1079 9.15254 14.7103 9.03638C14.3127 8.92023 13.8962 9.14838 13.7801 9.54597C13.1123 11.8319 11 13.5005 8.5 13.5005C5.46243 13.5005 3 11.0381 3 8.00049C3 4.96292 5.46243 2.50049 8.5 2.50049C10.321 2.50049 11.9363 3.3855 12.9377 4.75049H10.5C10.0858 4.75049 9.75 5.08627 9.75 5.50049C9.75 5.9147 10.0858 6.25049 10.5 6.25049H14.75C15.1642 6.25049 15.5 5.9147 15.5 5.50049V1.25049Z\"\n fill={fill()}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3676_1603\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0.5 0.000488281)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface LinkIconProps {\n fill?: Property.Color;\n}\n\nexport const LinkIcon: Component<LinkIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.accent;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13 4.06119V6.75053C13 7.16474 13.3358 7.50053 13.75 7.50053C14.1642 7.50053 14.5 7.16474 14.5 6.75053V2.75053L14.5 2.72807C14.5001 2.63191 14.5003 2.49627 14.4842 2.37627C14.4638 2.22503 14.4063 1.99261 14.2071 1.79342C14.0079 1.59423 13.7755 1.5367 13.6243 1.51637C13.5043 1.50023 13.3686 1.50039 13.2725 1.50051L13.25 1.50053H9.25C8.83579 1.50053 8.5 1.83631 8.5 2.25053C8.5 2.66474 8.83579 3.00053 9.25 3.00053H11.9393L7.21967 7.7202C6.92678 8.01309 6.92678 8.48796 7.21967 8.78086C7.51256 9.07375 7.98744 9.07375 8.28033 8.78086L13 4.06119ZM5.85 1.50053H5.81903H5.81899C5.21528 1.50052 4.71702 1.50051 4.31113 1.53367C3.88956 1.56812 3.50203 1.64204 3.13803 1.82751C2.57354 2.11513 2.1146 2.57407 1.82698 3.13856C1.64151 3.50256 1.56759 3.89009 1.53315 4.31166C1.49998 4.71755 1.49999 5.21581 1.5 5.81953V5.81955V5.85053V10.1505V10.1815V10.1815C1.49999 10.7852 1.49998 11.2835 1.53315 11.6894C1.56759 12.111 1.64151 12.4985 1.82698 12.8625C2.1146 13.427 2.57354 13.8859 3.13803 14.1735C3.50203 14.359 3.88956 14.4329 4.31113 14.4674C4.71702 14.5005 5.21527 14.5005 5.81897 14.5005H5.81901H5.85H10.15H10.181H10.181C10.7847 14.5005 11.283 14.5005 11.6889 14.4674C12.1104 14.4329 12.498 14.359 12.862 14.1735C13.4265 13.8859 13.8854 13.427 14.173 12.8625C14.3585 12.4985 14.4324 12.111 14.4669 11.6894C14.5 11.2835 14.5 10.7853 14.5 10.1816V10.1815V10.1505V9.75053C14.5 9.33631 14.1642 9.00053 13.75 9.00053C13.3358 9.00053 13 9.33631 13 9.75053V10.1505C13 10.793 12.9994 11.2297 12.9718 11.5672C12.945 11.8961 12.8963 12.0642 12.8365 12.1815C12.6927 12.4638 12.4632 12.6932 12.181 12.837C12.0637 12.8968 11.8955 12.9455 11.5667 12.9724C11.2292 12.9999 10.7924 13.0005 10.15 13.0005H5.85C5.20757 13.0005 4.77085 12.9999 4.43328 12.9724C4.10447 12.9455 3.93632 12.8968 3.81902 12.837C3.53677 12.6932 3.3073 12.4638 3.16349 12.1815C3.10372 12.0642 3.05503 11.8961 3.02816 11.5672C3.00058 11.2297 3 10.793 3 10.1505V5.85053C3 5.20809 3.00058 4.77137 3.02816 4.43381C3.05503 4.10499 3.10372 3.93684 3.16349 3.81954C3.3073 3.5373 3.53677 3.30783 3.81902 3.16402C3.93632 3.10425 4.10447 3.05556 4.43328 3.02869C4.77085 3.00111 5.20757 3.00053 5.85 3.00053H6.25C6.66422 3.00053 7 2.66474 7 2.25053C7 1.83631 6.66422 1.50053 6.25 1.50053H5.85Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface WalletIconProps {\n fill?: Property.Color;\n}\n\nexport const WalletIcon: Component<WalletIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.accent;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_3676_1274)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.82698 2.63901C1.5 3.28074 1.5 4.12082 1.5 5.80098V8.80098V9.00098V10.201C1.5 11.8811 1.5 12.7212 1.82698 13.3629C2.1146 13.9274 2.57354 14.3864 3.13803 14.674C3.77976 15.001 4.61984 15.001 6.3 15.001H11.7C13.3802 15.001 14.2202 15.001 14.862 14.674C15.4265 14.3864 15.8854 13.9274 16.173 13.3629C16.5 12.7212 16.5 11.8811 16.5 10.201V8.80098C16.5 7.12082 16.5 6.28074 16.173 5.63901C15.8854 5.07452 15.4265 4.61558 14.862 4.32796C14.743 4.26733 14.6172 4.21795 14.4805 4.17772C14.4501 3.49449 14.3722 3.02994 14.173 2.63901C13.8854 2.07452 13.4265 1.61558 12.862 1.32796C12.2202 1.00098 11.3802 1.00098 9.7 1.00098H6.3C4.61984 1.00098 3.77976 1.00098 3.13803 1.32796C2.57354 1.61558 2.1146 2.07452 1.82698 2.63901ZM12.9861 4.00942C12.9684 3.7108 12.9281 3.49982 12.8365 3.31999C12.6927 3.03775 12.4632 2.80828 12.181 2.66447C11.8601 2.50098 11.4401 2.50098 10.6 2.50098H5.4C4.55992 2.50098 4.13988 2.50098 3.81901 2.66447C3.53677 2.80828 3.3073 3.03775 3.16349 3.31999C3.03615 3.56991 3.00799 3.88 3.00177 4.40188C3.04646 4.37612 3.09189 4.35146 3.13803 4.32796C3.77976 4.00098 4.61984 4.00098 6.3 4.00098H11.7C12.1966 4.00098 12.6197 4.00098 12.9861 4.00942ZM3 7.90098V8.10098C3 8.47468 3 8.76527 3.01439 9.00098H3V11.101C3 11.9411 3 12.3611 3.16349 12.682C3.3073 12.9642 3.53677 13.1937 3.81901 13.3375C4.13988 13.501 4.55992 13.501 5.4 13.501H12.6C13.4401 13.501 13.8601 13.501 14.181 13.3375C14.4632 13.1937 14.6927 12.9642 14.8365 12.682C15 12.3611 15 11.9411 15 11.101V7.90098C15 7.0609 15 6.64086 14.8365 6.31999C14.6927 6.03775 14.4632 5.80828 14.181 5.66447C13.8601 5.50098 13.4401 5.50098 12.6 5.50098H5.4C4.55992 5.50098 4.13988 5.50098 3.81901 5.66447C3.53677 5.80828 3.3073 6.03775 3.16349 6.31999C3 6.64086 3 7.0609 3 7.90098ZM10.5 9.75098C10.5 9.33676 10.8358 9.00098 11.25 9.00098H12.75C13.1642 9.00098 13.5 9.33676 13.5 9.75098C13.5 10.1652 13.1642 10.501 12.75 10.501H11.25C10.8358 10.501 10.5 10.1652 10.5 9.75098Z\"\n fill={fill()}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3676_1274\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0.5 0.000976562)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface SecurityIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SecurityIcon: Component<SecurityIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M39.6319 16.8719C38.3212 16.2041 36.7002 16.0478 34 16.0112V11C34 5.47715 29.5228 1 24 1C18.4772 1 14 5.47715 14 11V16.0112C11.2998 16.0478 9.6788 16.2041 8.36808 16.8719C6.86278 17.6389 5.63893 18.8628 4.87195 20.3681C4 22.0794 4 24.3196 4 28.8V32.2C4 36.6804 4 38.9206 4.87195 40.6319C5.63893 42.1372 6.86278 43.3611 8.36808 44.1281C10.0794 45 12.3196 45 16.8 45H31.2C35.6804 45 37.9206 45 39.6319 44.1281C41.1372 43.3611 42.3611 42.1372 43.1281 40.6319C44 38.9206 44 36.6804 44 32.2V28.8C44 24.3196 44 22.0794 43.1281 20.3681C42.3611 18.8628 41.1372 17.6389 39.6319 16.8719ZM31 11V16H17V11C17 7.13401 20.134 4 24 4C27.866 4 31 7.13401 31 11ZM7.54497 21.73C7 22.7996 7 24.1997 7 27V34C7 36.8003 7 38.2004 7.54497 39.27C8.02433 40.2108 8.78924 40.9757 9.73005 41.455C10.7996 42 12.1997 42 15 42H33C35.8003 42 37.2004 42 38.27 41.455C39.2108 40.9757 39.9757 40.2108 40.455 39.27C41 38.2004 41 36.8003 41 34V27C41 24.1997 41 22.7996 40.455 21.73C39.9757 20.7892 39.2108 20.0243 38.27 19.545C37.2004 19 35.8003 19 33 19H15C12.1997 19 10.7996 19 9.73005 19.545C8.78924 20.0243 8.02433 20.7892 7.54497 21.73ZM24 24C23.1716 24 22.5 24.6716 22.5 25.5V29.5C22.5 30.3284 23.1716 31 24 31C24.8284 31 25.5 30.3284 25.5 29.5V25.5C25.5 24.6716 24.8284 24 24 24Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface PersonalityIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const PersonalityIcon: Component<PersonalityIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M37.485 37.3849C40.894 33.9506 43 29.2212 43 24C43 13.5066 34.4934 5 24 5C13.5066 5 5 13.5066 5 24C5 29.2213 7.1061 33.9507 10.5151 37.385C13.3583 32.9438 18.3354 30 24.0001 30C29.6647 30 34.6418 32.9437 37.485 37.3849ZM35.1809 39.3635C32.9143 35.5532 28.7554 33 24.0001 33C19.2448 33 15.0858 35.5533 12.8193 39.3636C15.9564 41.6506 19.8206 43 24 43C28.1795 43 32.0437 41.6505 35.1809 39.3635ZM24 46C36.1503 46 46 36.1503 46 24C46 11.8497 36.1503 2 24 2C11.8497 2 2 11.8497 2 24C2 36.1503 11.8497 46 24 46ZM24 24C26.7614 24 29 21.7614 29 19C29 16.2386 26.7614 14 24 14C21.2386 14 19 16.2386 19 19C19 21.7614 21.2386 24 24 24ZM24 27C28.4183 27 32 23.4183 32 19C32 14.5817 28.4183 11 24 11C19.5817 11 16 14.5817 16 19C16 23.4183 19.5817 27 24 27Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface SwapIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SwapIcon: Component<SwapIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M34.5607 4.43934C33.9749 3.85355 33.0251 3.85355 32.4393 4.43934C31.8536 5.02513 31.8536 5.97487 32.4393 6.56066L37.8787 12H10.5C9.67157 12 9 12.6716 9 13.5C9 14.3284 9.67157 15 10.5 15H37.8787L32.4393 20.4393C31.8536 21.0251 31.8536 21.9749 32.4393 22.5607C33.0251 23.1464 33.9749 23.1464 34.5607 22.5607L42.5607 14.5607C43.1464 13.9749 43.1464 13.0251 42.5607 12.4393L34.5607 4.43934ZM13.4393 25.4393C14.0251 24.8536 14.9749 24.8536 15.5607 25.4393C16.1464 26.0251 16.1464 26.9749 15.5607 27.5607L10.1213 33H37.5C38.3284 33 39 33.6716 39 34.5C39 35.3284 38.3284 36 37.5 36H10.1213L15.5607 41.4393C16.1464 42.0251 16.1464 42.9749 15.5607 43.5607C14.9749 44.1464 14.0251 44.1464 13.4393 43.5607L5.43934 35.5607C4.85355 34.9749 4.85355 34.0251 5.43934 33.4393L13.4393 25.4393Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface AtWalletIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const AtWalletIcon: Component<AtWalletIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.constant.white;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.75 12.002C1.75 9.20169 1.75 7.80156 2.29497 6.732C2.77433 5.79119 3.53924 5.02629 4.48005 4.54692C5.54961 4.00195 6.94974 4.00195 9.75 4.00195H17.25C20.0503 4.00195 21.4504 4.00195 22.52 4.54692C23.4608 5.02629 24.2257 5.79119 24.705 6.732C24.8256 6.96861 24.9195 7.2214 24.9926 7.50195H21.5C19.6377 7.50195 18.7065 7.50195 17.9609 7.77334C16.711 8.22828 15.7263 9.21291 15.2714 10.4629C15 11.2085 15 12.1396 15 14.002C15 15.8643 15 16.7954 15.2714 17.541C15.7263 18.791 16.711 19.7756 17.9609 20.2306C18.7065 20.502 19.6377 20.502 21.5 20.502H24.9926C24.9195 20.7825 24.8256 21.0353 24.705 21.2719C24.2257 22.2127 23.4608 22.9776 22.52 23.457C21.4504 24.002 20.0503 24.002 17.25 24.002H9.75C6.94974 24.002 5.54961 24.002 4.48005 23.457C3.53924 22.9776 2.77433 22.2127 2.29497 21.2719C1.75 20.2023 1.75 18.8022 1.75 16.002V12.002ZM16.4999 13.802C16.4999 12.1218 16.4999 11.2817 16.8269 10.64C17.1145 10.0755 17.5735 9.61656 18.138 9.32894C18.7797 9.00196 19.6198 9.00196 21.2999 9.00196H23.1999C24.8801 9.00196 25.7202 9.00196 26.3619 9.32894C26.9264 9.61656 27.3853 10.0755 27.673 10.64C27.9999 11.2817 27.9999 12.1218 27.9999 13.802V14.202C27.9999 15.8821 27.9999 16.7222 27.673 17.3639C27.3853 17.9284 26.9264 18.3874 26.3619 18.675C25.7202 19.002 24.8801 19.002 23.1999 19.002H21.2999C19.6198 19.002 18.7797 19.002 18.138 18.675C17.5735 18.3874 17.1145 17.9284 16.8269 17.3639C16.4999 16.7222 16.4999 15.8821 16.4999 14.202V13.802ZM22.4999 14.002C22.4999 14.9685 21.7164 15.752 20.7499 15.752C19.7834 15.752 18.9999 14.9685 18.9999 14.002C18.9999 13.0355 19.7834 12.252 20.7499 12.252C21.7164 12.252 22.4999 13.0355 22.4999 14.002Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface CopyLightIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const CopyLightIcon: Component<CopyLightIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill={fill()}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.0001 10.0001C10.0016 8.02333 10.0267 6.98719 10.436 6.18404C10.8195 5.43139 11.4314 4.81947 12.184 4.43597C13.0397 4 14.1598 4 16.4 4H17.6C19.8402 4 20.9603 4 21.816 4.43597C22.5686 4.81947 23.1805 5.43139 23.564 6.18404C24 7.03969 24 8.15979 24 10.4V11.6C24 13.8402 24 14.9603 23.564 15.816C23.1805 16.5686 22.5686 17.1805 21.816 17.564C21.0128 17.9733 19.9767 17.9984 17.9999 17.9999C17.9984 19.9767 17.9733 21.0128 17.564 21.816C17.1805 22.5686 16.5686 23.1805 15.816 23.564C14.9603 24 13.8402 24 11.6 24H10.4C8.15979 24 7.03969 24 6.18404 23.564C5.43139 23.1805 4.81947 22.5686 4.43597 21.816C4 20.9603 4 19.8402 4 17.6V16.4C4 14.1598 4 13.0397 4.43597 12.184C4.81947 11.4314 5.43139 10.8195 6.18404 10.436C6.98719 10.0267 8.02333 10.0016 10.0001 10.0001ZM10 11.5H9.5C8.09987 11.5 7.3998 11.5 6.86502 11.7725C6.39462 12.0122 6.01217 12.3946 5.77248 12.865C5.5 13.3998 5.5 14.0999 5.5 15.5V18.5C5.5 19.9001 5.5 20.6002 5.77248 21.135C6.01217 21.6054 6.39462 21.9878 6.86502 22.2275C7.3998 22.5 8.09987 22.5 9.5 22.5H12.5C13.9001 22.5 14.6002 22.5 15.135 22.2275C15.6054 21.9878 15.9878 21.6054 16.2275 21.135C16.5 20.6002 16.5 19.9001 16.5 18.5V18H16.4C14.1598 18 13.0397 18 12.184 17.564C11.4314 17.1805 10.8195 16.5686 10.436 15.816C10 14.9603 10 13.8402 10 11.6V11.5ZM11.5 9.5C11.5 8.09987 11.5 7.3998 11.7725 6.86502C12.0122 6.39462 12.3946 6.01217 12.865 5.77248C13.3998 5.5 14.0999 5.5 15.5 5.5H18.5C19.9001 5.5 20.6002 5.5 21.135 5.77248C21.6054 6.01217 21.9878 6.39462 22.2275 6.86502C22.5 7.3998 22.5 8.09987 22.5 9.5V12.5C22.5 13.9001 22.5 14.6002 22.2275 15.135C21.9878 15.6054 21.6054 15.9878 21.135 16.2275C20.6002 16.5 19.9001 16.5 18.5 16.5H15.5C14.0999 16.5 13.3998 16.5 12.865 16.2275C12.3946 15.9878 12.0122 15.6054 11.7725 15.135C11.5 14.6002 11.5 13.9001 11.5 12.5V9.5Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface QRIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const QRIcon: Component<QRIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"17\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1 4.12695C1 3.07754 1 2.55284 1.19202 2.14684C1.38986 1.72856 1.7266 1.39181 2.14489 1.19397C2.55088 1.00195 3.07559 1.00195 4.125 1.00195C5.17441 1.00195 5.69912 1.00195 6.10511 1.19397C6.5234 1.39181 6.86014 1.72856 7.05798 2.14684C7.25 2.55284 7.25 3.07754 7.25 4.12695C7.25 5.17636 7.25 5.70107 7.05798 6.10706C6.86014 6.52535 6.5234 6.8621 6.10511 7.05993C5.69912 7.25195 5.17441 7.25195 4.125 7.25195C3.07559 7.25195 2.55088 7.25195 2.14489 7.05993C1.7266 6.8621 1.38986 6.52535 1.19202 6.10706C1 5.70107 1 5.17636 1 4.12695ZM2.5 3.30195C2.5 3.02193 2.5 2.88191 2.5545 2.77496C2.60243 2.68088 2.67892 2.60439 2.773 2.55645C2.87996 2.50195 3.01997 2.50195 3.3 2.50195H4.95C5.23003 2.50195 5.37004 2.50195 5.477 2.55645C5.57108 2.60439 5.64757 2.68088 5.6955 2.77496C5.75 2.88191 5.75 3.02193 5.75 3.30195V4.95195C5.75 5.23198 5.75 5.37199 5.6955 5.47895C5.64757 5.57303 5.57108 5.64952 5.477 5.69746C5.37004 5.75195 5.23003 5.75195 4.95 5.75195H3.3C3.01997 5.75195 2.87996 5.75195 2.773 5.69746C2.67892 5.64952 2.60243 5.57303 2.5545 5.47895C2.5 5.37199 2.5 5.23198 2.5 4.95195V3.30195ZM1 11.877C1 10.8275 1 10.3028 1.19202 9.89684C1.38986 9.47856 1.7266 9.14181 2.14489 8.94397C2.55088 8.75195 3.07559 8.75195 4.125 8.75195C5.17441 8.75195 5.69912 8.75195 6.10511 8.94397C6.5234 9.14181 6.86014 9.47856 7.05798 9.89684C7.25 10.3028 7.25 10.8275 7.25 11.877C7.25 12.9264 7.25 13.4511 7.05798 13.8571C6.86014 14.2753 6.5234 14.6121 6.10511 14.8099C5.69912 15.002 5.17441 15.002 4.125 15.002C3.07559 15.002 2.55088 15.002 2.14489 14.8099C1.7266 14.6121 1.38986 14.2753 1.19202 13.8571C1 13.4511 1 12.9264 1 11.877ZM2.5 11.052C2.5 10.7719 2.5 10.6319 2.5545 10.525C2.60243 10.4309 2.67892 10.3544 2.773 10.3064C2.87996 10.252 3.01997 10.252 3.3 10.252H4.95C5.23003 10.252 5.37004 10.252 5.477 10.3064C5.57108 10.3544 5.64757 10.4309 5.6955 10.525C5.75 10.6319 5.75 10.7719 5.75 11.052V12.702C5.75 12.982 5.75 13.122 5.6955 13.2289C5.64757 13.323 5.57108 13.3995 5.477 13.4475C5.37004 13.502 5.23003 13.502 4.95 13.502H3.3C3.01997 13.502 2.87996 13.502 2.773 13.4475C2.67892 13.3995 2.60243 13.323 2.5545 13.2289C2.5 13.122 2.5 12.982 2.5 12.702V11.052ZM8.94202 2.14684C8.75 2.55284 8.75 3.07754 8.75 4.12695C8.75 5.17636 8.75 5.70107 8.94202 6.10706C9.13986 6.52535 9.4766 6.8621 9.89489 7.05993C10.3009 7.25195 10.8256 7.25195 11.875 7.25195C12.9244 7.25195 13.4491 7.25195 13.8551 7.05993C14.2734 6.8621 14.6101 6.52535 14.808 6.10706C15 5.70107 15 5.17636 15 4.12695C15 3.07754 15 2.55284 14.808 2.14684C14.6101 1.72856 14.2734 1.39181 13.8551 1.19397C13.4491 1.00195 12.9244 1.00195 11.875 1.00195C10.8256 1.00195 10.3009 1.00195 9.89489 1.19397C9.4766 1.39181 9.13986 1.72856 8.94202 2.14684ZM10.3045 2.77496C10.25 2.88191 10.25 3.02193 10.25 3.30195V4.95195C10.25 5.23198 10.25 5.37199 10.3045 5.47895C10.3524 5.57303 10.4289 5.64952 10.523 5.69746C10.63 5.75195 10.77 5.75195 11.05 5.75195H12.7C12.98 5.75195 13.12 5.75195 13.227 5.69746C13.3211 5.64952 13.3976 5.57303 13.4455 5.47895C13.5 5.37199 13.5 5.23198 13.5 4.95195V3.30195C13.5 3.02193 13.5 2.88191 13.4455 2.77496C13.3976 2.68088 13.3211 2.60439 13.227 2.55645C13.12 2.50195 12.98 2.50195 12.7 2.50195H11.05C10.77 2.50195 10.63 2.50195 10.523 2.55645C10.4289 2.60439 10.3524 2.68088 10.3045 2.77496ZM8.80727 9.13518C8.75 9.26242 8.75 9.4256 8.75 9.75195C8.75 10.0783 8.75 10.2415 8.80727 10.3687C8.87245 10.5136 8.9884 10.6295 9.13323 10.6947C9.26047 10.752 9.42365 10.752 9.75 10.752C10.0764 10.752 10.2395 10.752 10.3668 10.6947C10.5116 10.6295 10.6276 10.5136 10.6927 10.3687C10.75 10.2415 10.75 10.0783 10.75 9.75195C10.75 9.4256 10.75 9.26242 10.6927 9.13518C10.6276 8.99035 10.5116 8.8744 10.3668 8.80922C10.2395 8.75195 10.0764 8.75195 9.75 8.75195C9.42365 8.75195 9.26047 8.75195 9.13323 8.80922C8.9884 8.8744 8.87245 8.99035 8.80727 9.13518ZM10.87 11.8771C10.87 11.546 10.87 11.3805 10.9289 11.2517C10.9938 11.1098 11.1077 10.9959 11.2497 10.931C11.3784 10.8721 11.5439 10.8721 11.875 10.8721C12.2061 10.8721 12.3716 10.8721 12.5003 10.931C12.6423 10.9959 12.7562 11.1098 12.8211 11.2517C12.88 11.3805 12.88 11.546 12.88 11.8771C12.88 12.2081 12.88 12.3737 12.8211 12.5024C12.7562 12.6444 12.6423 12.7583 12.5003 12.8232C12.3716 12.8821 12.2061 12.8821 11.875 12.8821C11.5439 12.8821 11.3784 12.8821 11.2497 12.8232C11.1077 12.7583 10.9938 12.6444 10.9289 12.5024C10.87 12.3737 10.87 12.2081 10.87 11.8771ZM8.80727 13.3852C8.75 13.5124 8.75 13.6756 8.75 14.002C8.75 14.3283 8.75 14.4915 8.80727 14.6187C8.87245 14.7636 8.9884 14.8795 9.13323 14.9447C9.26047 15.002 9.42365 15.002 9.75 15.002C10.0764 15.002 10.2395 15.002 10.3668 14.9447C10.5116 14.8795 10.6276 14.7636 10.6927 14.6187C10.75 14.4915 10.75 14.3283 10.75 14.002C10.75 13.6756 10.75 13.5124 10.6927 13.3852C10.6276 13.2404 10.5116 13.1244 10.3668 13.0592C10.2395 13.002 10.0764 13.002 9.75 13.002C9.42365 13.002 9.26047 13.002 9.13323 13.0592C8.9884 13.1244 8.87245 13.2404 8.80727 13.3852ZM13 9.75195C13 9.4256 13 9.26242 13.0573 9.13518C13.1224 8.99035 13.2384 8.8744 13.3832 8.80922C13.5105 8.75195 13.6736 8.75195 14 8.75195C14.3264 8.75195 14.4895 8.75195 14.6168 8.80922C14.7616 8.8744 14.8776 8.99035 14.9427 9.13518C15 9.26242 15 9.4256 15 9.75195C15 10.0783 15 10.2415 14.9427 10.3687C14.8776 10.5136 14.7616 10.6295 14.6168 10.6947C14.4895 10.752 14.3264 10.752 14 10.752C13.6736 10.752 13.5105 10.752 13.3832 10.6947C13.2384 10.6295 13.1224 10.5136 13.0573 10.3687C13 10.2415 13 10.0783 13 9.75195ZM13.0573 13.3852C13 13.5124 13 13.6756 13 14.002C13 14.3283 13 14.4915 13.0573 14.6187C13.1224 14.7636 13.2384 14.8795 13.3832 14.9447C13.5105 15.002 13.6736 15.002 14 15.002C14.3264 15.002 14.4895 15.002 14.6168 14.9447C14.7616 14.8795 14.8776 14.7636 14.9427 14.6187C15 14.4915 15 14.3283 15 14.002C15 13.6756 15 13.5124 14.9427 13.3852C14.8776 13.2404 14.7616 13.1244 14.6168 13.0592C14.4895 13.002 14.3264 13.002 14 13.002C13.6736 13.002 13.5105 13.002 13.3832 13.0592C13.2384 13.1244 13.1224 13.2404 13.0573 13.3852Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { WalletImage } from './wallet-image';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst containerBorders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst walletBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const FourWalletsCard = styled.div`\n width: 60px;\n height: 60px;\n padding: 8px;\n margin-bottom: 8px;\n border-radius: ${props => containerBorders[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.tint};\n display: grid;\n grid-template: 1fr 1fr / 1fr 1fr;\n gap: 4px;\n`;\n\nexport const FourWalletsImage = styled(WalletImage)`\n width: 20px;\n height: 20px;\n border-radius: ${props => walletBorders[props.theme!.borderRadius]};\n`;\n","import { Component, For } from 'solid-js';\nimport { WalletItem } from './index';\nimport { FourWalletsCard, FourWalletsImage } from './four-wallets.style';\n\ninterface FourWallets {\n labelLine1: string;\n labelLine2: string;\n images: string[];\n onClick: () => void;\n}\n\nexport const FourWalletsItem: Component<FourWallets> = props => {\n return (\n <WalletItem\n name={props.labelLine1}\n secondLine={props.labelLine2}\n icon={\n <FourWalletsCard>\n <For each={[0, 1, 2, 3]}>\n {index => <FourWalletsImage src={props.images[index]!} />}\n </For>\n </FourWalletsCard>\n }\n onClick={() => props.onClick()}\n />\n );\n};\n","export const AT_WALLET_APP_NAME = 'telegram-wallet';\n","export const IMG = {\n TON: 'https://raw.githubusercontent.com/ton-connect/sdk/main/assets/ton-icon-48.png',\n TG: 'https://raw.githubusercontent.com/ton-connect/sdk/main/assets/tg.png'\n};\n","import { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { WalletItem } from 'src/app/components';\nimport { isWalletInfoCurrentlyInjected } from '@tonconnect/sdk';\nimport { IMG } from 'src/app/env/IMG';\nimport { useI18n } from '@solid-primitives/i18n';\n\nexport interface WalletLabeledItemProps extends Styleable {\n wallet: UIWalletInfo;\n onClick: () => void;\n}\n\nexport const WalletLabeledItem: Component<WalletLabeledItemProps> = props => {\n const [t] = useI18n();\n\n const walletsSecondLine = (): string | undefined => {\n if (props.wallet.appName === AT_WALLET_APP_NAME) {\n return undefined;\n }\n if ('isPreferred' in props.wallet && props.wallet.isPreferred) {\n return t('walletItem.recent', {}, 'Recent');\n }\n if (isWalletInfoCurrentlyInjected(props.wallet)) {\n return t('walletItem.installed', {}, 'Installed');\n }\n if (props.wallet.name === 'Tonkeeper') {\n return t('walletItem.popular', {}, 'Popular');\n }\n return undefined;\n };\n\n return (\n <>\n {props.wallet.appName === AT_WALLET_APP_NAME ? (\n <WalletItem\n icon={props.wallet.imageUrl}\n name={t('walletItem.walletOn', {}, 'Wallet in')}\n secondLine=\"Telegram\"\n badgeUrl={IMG.TG}\n onClick={() => props.onClick()}\n class={props.class}\n />\n ) : (\n <WalletItem\n icon={props.wallet.imageUrl}\n name={props.wallet.name}\n secondLine={walletsSecondLine()}\n secondLineColorPrimary={false}\n onClick={() => props.onClick()}\n class={props.class}\n />\n )}\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { media } from 'src/app/styles/media';\n\nexport const ScrollContainerStyled = styled.div<{ maxHeight: string }>`\n width: 100%;\n overflow-y: auto;\n max-height: ${props => props.maxHeight};\n\n scrollbar-width: none;\n &&::-webkit-scrollbar {\n display: none;\n }\n\n &&::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &&::-webkit-scrollbar-thumb {\n display: none;\n }\n`;\n\nexport const ScrollDivider = styled.div<{ isShown: boolean }>`\n height: 1px;\n margin: 0 -24px;\n width: calc(100% + 48px);\n opacity: 0.08;\n background: ${props => (props.isShown ? props.theme!.colors.icon.secondary : 'transparent')};\n transition: background 0.15s ease-in-out;\n\n ${media('mobile')} {\n width: 100%;\n margin: 0;\n }\n`;\n","import { createSignal } from 'solid-js';\nimport { getWindow } from 'src/app/utils/web-api';\n\nconst [windowHeight, setWindowHeight] = createSignal(getWindow()?.innerHeight || 0);\n\nif (getWindow()) {\n window.addEventListener('resize', () => setWindowHeight(window.innerHeight));\n}\n\nexport default windowHeight;\n","import { createSignal } from 'solid-js';\nimport { isDevice } from 'src/app/styles/media';\nimport { getWindow } from 'src/app/utils/web-api';\n\nconst [isMobile, setIsMobile] = createSignal(isDevice('mobile'));\n\nconst updateIsMobile = (): boolean => setIsMobile(isDevice('mobile'));\n\nif (getWindow()) {\n window.addEventListener('resize', () => updateIsMobile());\n\n // Browsers may throttle `resize` if page hasn't loaded, so recalculate on page `load`\n window.addEventListener('load', () => updateIsMobile(), { once: true });\n}\n\nexport { isMobile, updateIsMobile };\n","import { Component, createSignal, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ScrollContainerStyled, ScrollDivider } from './style';\nimport windowHeight from 'src/app/hooks/windowSize';\nimport { isMobile } from 'src/app/hooks/isMobile';\n\nexport interface ScrollContainerProps extends Styleable {\n children: JSXElement;\n maxHeight?: number;\n}\n\nexport const ScrollContainer: Component<ScrollContainerProps> = props => {\n const [scrolled, setScrolled] = createSignal(false);\n\n const onScroll = (e: Event): void => {\n setScrolled((e.target as HTMLUListElement).scrollTop > 0);\n };\n\n const offset = (): number => (isMobile() ? 150 : 200);\n\n const maxHeight = (): string =>\n props.maxHeight !== undefined ? `${props.maxHeight}px` : `${windowHeight() - offset()}px`;\n\n return (\n <>\n <ScrollDivider isShown={scrolled()} />\n <ScrollContainerStyled maxHeight={maxHeight()} onScroll={onScroll} class={props.class}>\n {props.children}\n </ScrollContainerStyled>\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const AStyled = styled.a`\n display: block;\n text-decoration: unset;\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { AStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LinkProps extends Styleable {\n children: JSXElement;\n\n href: string;\n\n blank?: boolean;\n}\n\nexport const Link: Component<LinkProps> = props => {\n const attributes = (): { rel: 'noreferrer noopener' } | {} =>\n props.blank ? { rel: 'noreferrer noopener' } : {};\n\n return (\n <AStyled\n href={props.href}\n target={props.blank ? '_blank' : '_self'}\n class={props.class}\n {...attributes}\n >\n {props.children}\n </AStyled>\n );\n};\n","import { createContext } from 'solid-js';\nimport { TonConnectUI } from 'src/ton-connect-ui';\n\nexport const TonConnectUiContext = createContext<TonConnectUI>();\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface CopyIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const CopyIcon: Component<CopyIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.76228 2.09998H10.2378C11.0458 2.09997 11.7067 2.09996 12.2438 2.14384C12.7997 2.18926 13.3017 2.28614 13.7706 2.52505C14.5045 2.89896 15.1011 3.49558 15.475 4.22941C15.7139 4.6983 15.8108 5.20038 15.8562 5.75629C15.9001 6.29337 15.9001 6.95422 15.9001 7.76227V8.1H16.2377C17.0457 8.09999 17.7066 8.09998 18.2437 8.14386C18.7996 8.18928 19.3017 8.28616 19.7705 8.52507C20.5044 8.89898 21.101 9.4956 21.4749 10.2294C21.7138 10.6983 21.8107 11.2004 21.8561 11.7563C21.9 12.2934 21.9 12.9542 21.9 13.7623V16.2377C21.9 17.0458 21.9 17.7066 21.8561 18.2437C21.8107 18.7996 21.7138 19.3017 21.4749 19.7706C21.101 20.5044 20.5044 21.101 19.7705 21.4749C19.3017 21.7138 18.7996 21.8107 18.2437 21.8561C17.7066 21.9 17.0458 21.9 16.2378 21.9H13.7623C12.9543 21.9 12.2934 21.9 11.7563 21.8561C11.2004 21.8107 10.6983 21.7138 10.2294 21.4749C9.49561 21.101 8.89898 20.5044 8.52508 19.7706C8.28616 19.3017 8.18928 18.7996 8.14386 18.2437C8.09998 17.7066 8.09999 17.0458 8.1 16.2377V15.9H7.76227C6.95426 15.9 6.29335 15.9 5.75629 15.8561C5.20038 15.8107 4.6983 15.7138 4.22941 15.4749C3.49558 15.101 2.89896 14.5044 2.52505 13.7705C2.28614 13.3017 2.18926 12.7996 2.14384 12.2437C2.09996 11.7066 2.09997 11.0458 2.09998 10.2377V7.76228C2.09997 6.95424 2.09996 6.29336 2.14384 5.75629C2.18926 5.20038 2.28614 4.6983 2.52505 4.22941C2.89896 3.49558 3.49558 2.89896 4.22941 2.52505C4.6983 2.28614 5.20038 2.18926 5.75629 2.14384C6.29336 2.09996 6.95425 2.09997 7.76228 2.09998ZM8.1 14.1V13.7623C8.09999 12.9542 8.09998 12.2934 8.14386 11.7563C8.18928 11.2004 8.28616 10.6983 8.52508 10.2294C8.89898 9.4956 9.49561 8.89898 10.2294 8.52507C10.6983 8.28616 11.2004 8.18928 11.7563 8.14386C12.2934 8.09998 12.9542 8.09999 13.7623 8.1H14.1001V7.79998C14.1001 6.94505 14.0994 6.35798 14.0622 5.90287C14.0259 5.45827 13.9593 5.21944 13.8712 5.0466C13.6699 4.65146 13.3486 4.3302 12.9535 4.12886C12.7806 4.04079 12.5418 3.97419 12.0972 3.93786C11.6421 3.90068 11.055 3.89998 10.2001 3.89998H7.79998C6.94505 3.89998 6.35798 3.90068 5.90287 3.93786C5.45827 3.97419 5.21944 4.04079 5.0466 4.12886C4.65146 4.3302 4.3302 4.65146 4.12886 5.0466C4.04079 5.21944 3.97419 5.45827 3.93786 5.90287C3.90068 6.35798 3.89998 6.94505 3.89998 7.79998V10.2C3.89998 11.0549 3.90068 11.642 3.93786 12.0971C3.97419 12.5417 4.04079 12.7805 4.12886 12.9534C4.3302 13.3485 4.65146 13.6698 5.0466 13.8711C5.21944 13.9592 5.45827 14.0258 5.90287 14.0621C6.35798 14.0993 6.94505 14.1 7.79998 14.1H8.1ZM11.0466 10.1289C11.2195 10.0408 11.4583 9.97421 11.9029 9.93788C12.358 9.9007 12.9451 9.9 13.8 9.9H16.2C17.0549 9.9 17.642 9.9007 18.0971 9.93788C18.5417 9.97421 18.7805 10.0408 18.9534 10.1289C19.3485 10.3302 19.6698 10.6515 19.8711 11.0466C19.9592 11.2195 20.0258 11.4583 20.0621 11.9029C20.0993 12.358 20.1 12.9451 20.1 13.8V16.2C20.1 17.0549 20.0993 17.642 20.0621 18.0971C20.0258 18.5417 19.9592 18.7805 19.8711 18.9534C19.6698 19.3485 19.3485 19.6698 18.9534 19.8711C18.7805 19.9592 18.5417 20.0258 18.0971 20.0621C17.642 20.0993 17.0549 20.1 16.2 20.1H13.8C12.9451 20.1 12.358 20.0993 11.9029 20.0621C11.4583 20.0258 11.2195 19.9592 11.0466 19.8711C10.6515 19.6698 10.3302 19.3485 10.1289 18.9534C10.0408 18.7805 9.97421 18.5417 9.93788 18.0971C9.9007 17.642 9.9 17.0549 9.9 16.2V13.8C9.9 12.9451 9.9007 12.358 9.93788 11.9029C9.97421 11.4583 10.0408 11.2195 10.1289 11.0466C10.3302 10.6515 10.6515 10.3302 11.0466 10.1289Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DisconnectIconProps {\n fill?: Property.Color;\n}\n\nexport const DisconnectIcon: Component<DisconnectIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.7624 3.10001C7.95435 3.1 7.29349 3.09999 6.75642 3.14387C6.2005 3.18929 5.69842 3.28617 5.22954 3.52508C4.4957 3.89899 3.89908 4.49561 3.52517 5.22944C3.28626 5.69833 3.18938 6.20041 3.14396 6.75632C3.10008 7.2934 3.10009 7.95424 3.1001 8.76229V15.2377C3.10009 16.0458 3.10008 16.7066 3.14396 17.2437C3.18938 17.7996 3.28626 18.3017 3.52517 18.7706C3.89908 19.5044 4.4957 20.101 5.22954 20.4749C5.69842 20.7138 6.2005 20.8107 6.75642 20.8561C7.29349 20.9 7.95434 20.9 8.76239 20.9H12.0001C12.4972 20.9 12.9001 20.4971 12.9001 20C12.9001 19.503 12.4972 19.1 12.0001 19.1H8.8001C7.94517 19.1 7.3581 19.0993 6.90299 19.0621C6.45839 19.0258 6.21956 18.9592 6.04672 18.8711C5.65158 18.6698 5.33032 18.3485 5.12898 17.9534C5.04092 17.7805 4.97431 17.5417 4.93798 17.0971C4.9008 16.642 4.9001 16.0549 4.9001 15.2V8.80001C4.9001 7.94508 4.9008 7.35801 4.93798 6.9029C4.97431 6.4583 5.04092 6.21947 5.12898 6.04663C5.33032 5.65149 5.65158 5.33023 6.04672 5.12889C6.21956 5.04082 6.45839 4.97422 6.90299 4.93789C7.3581 4.90071 7.94517 4.90001 8.8001 4.90001H12.0001C12.4972 4.90001 12.9001 4.49706 12.9001 4.00001C12.9001 3.50295 12.4972 3.10001 12.0001 3.10001H8.7624Z\"\n fill={fill()}\n />\n <path\n d=\"M17.6364 7.3636C17.2849 7.01212 16.7151 7.01212 16.3636 7.3636C16.0121 7.71507 16.0121 8.28492 16.3636 8.63639L18.8272 11.1H9.00001C8.50295 11.1 8.10001 11.5029 8.10001 12C8.10001 12.497 8.50295 12.9 9.00001 12.9H18.8272L16.3636 15.3636C16.0121 15.7151 16.0121 16.2849 16.3636 16.6364C16.7151 16.9879 17.2849 16.9879 17.6364 16.6364L21.6364 12.6364C21.9879 12.2849 21.9879 11.7151 21.6364 11.3636L17.6364 7.3636Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nconst dropdownBorders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const AccountButtonDropdownStyled = styled.div`\n width: 256px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => dropdownBorders[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.primary}\n \n color: ${props => props.theme!.colors.text.primary}\n`;\n\nexport const UlStyled = styled.ul`\n background-color: ${props => props.theme!.colors.background.primary};\n padding: 8px;\n`;\n\nexport const MenuButtonStyled = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n height: 40px;\n padding-left: 8px;\n width: 100%;\n\n background-color: ${props => props.theme!.colors.background.primary};\n border: none;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n cursor: pointer;\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, createSignal, Show, useContext } from 'solid-js';\nimport { Text } from 'src/app/components';\nimport { CopyIcon } from 'src/app/components/icons/copy-icon';\nimport { DisconnectIcon } from 'src/app/components/icons/disconnect-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { AccountButtonDropdownStyled, MenuButtonStyled, UlStyled } from './style';\n\nconst MenuItemText: Component<{ children: string } & Translateable> = props => (\n <Text translationKey={props.translationKey} fontSize=\"15px\" fontWeight=\"590\">\n {props.children}\n </Text>\n);\n\nexport interface AccountButtonDropdownProps extends Styleable {\n onClose: () => void;\n ref: HTMLDivElement | undefined;\n}\n\nexport const AccountButtonDropdown: Component<AccountButtonDropdownProps> = props => {\n const tonConnectUi = useContext(TonConnectUiContext)!;\n const [isCopiedShown, setIsCopiedShown] = createSignal(false);\n\n const onCopy = async (): Promise<void> => {\n const userFriendlyAddress = toUserFriendlyAddress(\n tonConnectUi.account!.address,\n tonConnectUi.account!.chain === CHAIN.TESTNET\n );\n await copyToClipboard(userFriendlyAddress);\n setIsCopiedShown(true);\n\n setTimeout(() => setIsCopiedShown(false), 1000);\n };\n\n const onDisconnect = (): void => {\n tonConnectUi.disconnect();\n props.onClose();\n };\n\n return (\n <AccountButtonDropdownStyled ref={props.ref} class={props.class} data-tc-dropdown=\"true\">\n <UlStyled>\n <li>\n <MenuButtonStyled onClick={() => onCopy()}>\n <CopyIcon />\n <Show when={!isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copy\">\n Copy address\n </MenuItemText>\n </Show>\n <Show when={isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copied\">\n Address copied!\n </MenuItemText>\n </Show>\n </MenuButtonStyled>\n </li>\n <li>\n <MenuButtonStyled onClick={() => onDisconnect()}>\n <DisconnectIcon />\n <MenuItemText translationKey=\"button.dropdown.disconnect\">\n Disconnect\n </MenuItemText>\n </MenuButtonStyled>\n </li>\n </UlStyled>\n </AccountButtonDropdownStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\nexport const NotificationStyled = styled.div`\n width: 256px;\n padding: 12px 16px;\n display: flex;\n gap: 9px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const NotificationContentStyled = styled.div`\n width: 192px;\n\n > h3 {\n font-size: 15px;\n }\n`;\n\nexport const TextStyled = styled(Text)`\n margin-top: 4px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { H3 } from 'src/app/components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\nimport { NotificationContentStyled, NotificationStyled, TextStyled } from './style';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\n\nexport interface NotificationProps extends Styleable, WithDataAttributes {\n header: PropertyRequired<Translateable, 'translationKey'>;\n children?: string;\n text?: Translateable;\n icon?: JSXElement;\n}\n\nexport const Notification: Component<NotificationProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <NotificationStyled class={props.class} data-tc-notification=\"true\" {...dataAttrs}>\n <NotificationContentStyled>\n <H3\n translationKey={props.header.translationKey}\n translationValues={props.header.translationValues}\n >\n {props.children}\n </H3>\n <Show when={props.text}>\n <TextStyled\n translationKey={props.text!.translationKey}\n translationValues={props.text!.translationValues}\n />\n </Show>\n </NotificationContentStyled>\n {props.icon}\n </NotificationStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n align-self: center;\n`;\n","import { Component, useContext } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { LoaderIconStyled } from 'src/app/views/account-button/notifications/confirm-operation-notification/style';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmOperationNotificationProps extends Styleable {}\n\nexport const ConfirmOperationNotification: Component<ConfirmOperationNotificationProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = (): string =>\n tonConnectUI!.wallet && 'name' in tonConnectUI!.wallet\n ? tonConnectUI!.wallet.name\n : t('common.yourWallet', {}, 'Your wallet');\n\n return (\n <Notification\n header={{\n translationKey: 'notifications.confirm.header',\n translationValues: { name: name() }\n }}\n class={props.class}\n icon={<LoaderIconStyled />}\n data-tc-notification-confirm=\"true\"\n >\n Confirm operation in your wallet\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorTransactionNotificationProps extends Styleable {}\n\nexport const ErrorTransactionNotification: Component<ErrorTransactionNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionCanceled.header' }}\n text={{ translationKey: 'notifications.transactionCanceled.text' }}\n icon={<ErrorIconStyled size=\"xs\" />}\n class={props.class}\n data-tc-notification-tx-cancelled=\"true\"\n >\n Transaction cancelled\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\n\ninterface SuccessTransactionNotificationProps extends Styleable {}\n\nexport const SuccessTransactionNotification: Component<\n SuccessTransactionNotificationProps\n> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionSent.header' }}\n text={{ translationKey: 'notifications.transactionSent.text' }}\n icon={<SuccessIconStyled />}\n class={props.class}\n data-tc-notification-tx-sent=\"true\"\n >\n Transaction sent\n </Notification>\n );\n};\n","import { css } from 'solid-styled-components';\n\nexport const NotificationClass = css`\n transform: translateY(-8px);\n margin-bottom: 12px;\n`;\n","import { Accessor, createEffect, createSignal, on, onCleanup } from 'solid-js';\nimport { Action, action, ActionName } from 'src/app/state/modals-state';\n\ntype Notification = {\n action: ActionName;\n};\n\n/**\n * Hook for opened notifications.\n */\nexport type UseOpenedNotifications = Accessor<Notification[]>;\n\n/**\n * Config for useOpenedNotifications hook.\n */\nexport type UseOpenedNotificationsConfig = {\n /**\n * Timeout in milliseconds after which the notification will be removed, default is 4500.\n */\n timeout?: number;\n};\n\nconst defaultConfig: UseOpenedNotificationsConfig = {\n timeout: 4500\n};\n\nconst [latestAction, setLatestAction] = createSignal<Action | null>(null);\n\nexport function useOpenedNotifications(\n config?: UseOpenedNotificationsConfig\n): UseOpenedNotifications {\n const { timeout } = { ...defaultConfig, ...config };\n\n const [openedNotifications, setOpenedNotifications] = createSignal<Notification[]>([]);\n const [timeoutIds, setTimeoutIds] = createSignal<ReturnType<typeof setTimeout>[]>([]);\n\n createEffect(\n on(action, (action: Action | null): void => {\n // do nothing if action is null or should not show notification\n if (!action || !action.showNotification) {\n // clearAction not work without that code\n setOpenedNotifications(openedNotifications =>\n openedNotifications.filter(n => n.action !== 'confirm-transaction')\n );\n\n return;\n }\n\n // do nothing if action is the same as latest action\n if (latestAction() === action) {\n return;\n }\n\n const isConfirmTransactionAction =\n latestAction()?.name === 'confirm-transaction' &&\n action.name === 'confirm-transaction';\n\n const isConfirmSignDataAction =\n latestAction()?.name === 'confirm-sign-data' && action.name === 'confirm-sign-data';\n\n if (isConfirmTransactionAction || isConfirmSignDataAction) {\n return;\n }\n\n setLatestAction(action);\n\n // cleanup all not confirmed transactions\n setOpenedNotifications(openedNotifications =>\n openedNotifications.filter(\n n => n.action !== 'confirm-transaction' && n.action !== 'confirm-sign-data'\n )\n );\n\n // create notification\n const notification: Notification = { action: action.name };\n setOpenedNotifications(openedNotifications => [...openedNotifications, notification]);\n\n // remove notification after timeout\n const timeoutId = setTimeout(() => {\n setOpenedNotifications(openedNotifications =>\n openedNotifications.filter(n => n !== notification)\n );\n setTimeoutIds(timeoutIds => timeoutIds.filter(id => id !== timeoutId));\n }, timeout);\n setTimeoutIds(timeoutIds => [...timeoutIds, timeoutId]);\n })\n );\n\n // cleanup all timeouts on unmount\n onCleanup(() => {\n timeoutIds().forEach(id => clearTimeout(id));\n });\n\n return openedNotifications;\n}\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorSignDataNotificationProps extends Styleable {}\n\nexport const ErrorSignDataNotification: Component<ErrorSignDataNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.signDataCanceled.header' }}\n icon={<ErrorIconStyled size=\"xs\" />}\n class={props.class}\n data-tc-notification-sign-data-cancelled=\"true\"\n >\n Sign data canceled\n </Notification>\n );\n};\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\n\ninterface SuccessSignDataNotificationProps extends Styleable {}\n\nexport const SuccessSignDataNotification: Component<SuccessSignDataNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.dataSigned.header' }}\n icon={<SuccessIconStyled />}\n class={props.class}\n data-tc-notification-data-signed=\"true\"\n >\n Data signed\n </Notification>\n );\n};\n","import { Component, For, Match, Switch } from 'solid-js';\nimport { TransitionGroup } from 'solid-transition-group';\nimport { ConfirmOperationNotification } from './confirm-operation-notification';\nimport { ErrorTransactionNotification } from './error-transaction-notification';\nimport { SuccessTransactionNotification } from './success-transaction-notification';\nimport { NotificationClass } from './style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useOpenedNotifications } from 'src/app/hooks/use-notifications';\nimport { animate } from 'src/app/utils/animate';\nimport { ErrorSignDataNotification } from './error-sign-data-notification';\nimport { SuccessSignDataNotification } from './success-sign-data-notification';\n\nexport interface NotificationsProps extends Styleable {}\n\nexport const Notifications: Component<NotificationsProps> = props => {\n const openedNotifications = useOpenedNotifications();\n\n return (\n <div class={props.class} data-tc-list-notifications=\"true\">\n <TransitionGroup\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-8px)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n const a = animate(\n el,\n [\n { opacity: 1, transform: 'translateY(-8px)' },\n { opacity: 0, transform: 'translateY(-30px)' }\n ],\n {\n duration: 200\n }\n );\n a.finished.then(done);\n }}\n >\n <For each={openedNotifications()}>\n {openedNotification => (\n <Switch>\n <Match when={openedNotification.action === 'transaction-sent'}>\n <SuccessTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'transaction-canceled'}>\n <ErrorTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'data-signed'}>\n <SuccessSignDataNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'sign-data-canceled'}>\n <ErrorSignDataNotification class={NotificationClass} />\n </Match>\n <Match\n when={\n openedNotification.action === 'confirm-transaction' ||\n openedNotification.action === 'confirm-sign-data'\n }\n >\n <ConfirmOperationNotification class={NotificationClass} />\n </Match>\n </Switch>\n )}\n </For>\n </TransitionGroup>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, LoaderIcon } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { AccountButtonDropdown } from 'src/app/views/account-button/account-button-dropdown';\nimport { Notifications } from 'src/app/views/account-button/notifications';\n\nexport const AccountButtonStyled = styled(Button)`\n background-color: ${props => props.theme!.colors.connectButton.background};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n padding: 8px 16px 8px 12px;\n\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n`;\n\nexport const DropdownButtonStyled = styled(AccountButtonStyled)`\n padding: 12px 16px;\n min-width: 148px;\n justify-content: center;\n background-color: ${props => props.theme!.colors.background.primary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n min-width: 148px;\n height: 40px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 18px;\n width: 18px;\n`;\n\nexport const DropdownContainerStyled = styled.div`\n width: fit-content;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const DropdownStyled = styled(AccountButtonDropdown)<{ hidden: boolean }>`\n box-sizing: border-box;\n overflow: hidden;\n margin-top: 12px;\n`;\n\nexport const NotificationsStyled = styled(Notifications)`\n > div:first-child {\n margin-top: 20px;\n }\n`;\n","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (validMiddleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement` middleware', 'detected. This will lead to an infinite loop. Ensure only one of', 'either has been passed to the `middleware` array.'].join(' '));\n }\n\n if (!reference || !floating) {\n console.error(['Floating UI: The reference and/or floating element was not defined', 'when `computePosition()` was called. Ensure that both elements have', 'been created and can be measured.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n\n if (process.env.NODE_ENV !== \"production\") ;\n\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n\n const uaData = navigator.userAgentData;\n\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter; // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = !isElement(element) && element.contextElement ? element.contextElement : isElement(element) ? element : null;\n\n if (!domElement) {\n return FALLBACK_SCALE;\n }\n\n const rect = domElement.getBoundingClientRect();\n const css = getComputedStyle(domElement); // Would need to take into account borders, padding, and potential scrollbars\n // which would require a lot of code. Fallback to the old technique to\n // determine scale.\n\n if (css.boxSizing !== 'border-box') {\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n\n return {\n x: domElement.offsetWidth > 0 ? round(rect.width) / domElement.offsetWidth || 1 : 1,\n y: domElement.offsetHeight > 0 ? round(rect.height) / domElement.offsetHeight || 1 : 1\n };\n }\n\n let x = rect.width / parseFloat(css.width);\n let y = rect.height / parseFloat(css.height); // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scale = FALLBACK_SCALE;\n\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n\n const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scale.x;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scale.y;\n const width = clientRect.width / scale.x;\n const height = clientRect.height / scale.y;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n const result = // Step into the shadow DOM of the parent of a slotted node\n node.assignedSlot || // DOM Element detected\n node.parentNode || ( // ShadowRoot detected\n isShadowRoot(node) ? node.host : null) || // Fallback\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\n// Returns the inner client rect, subtracting scrollbars if present\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y,\n width,\n height\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingAncestor)) {\n return getInnerBoundingClientRect(clippingAncestor, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\n\n\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element; // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration\n currentContainingBlockComputedStyle = computedStyle;\n }\n\n currentNode = getParentNode(currentNode);\n }\n\n cache.set(element, result);\n return result;\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = { ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, { ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import{createEffect as f,createMemo as R,createSignal as g,onCleanup as y}from\"solid-js\";import{computePosition as E}from\"@floating-ui/dom\";function P(l,u,e){let c=()=>{var t;return(t=e==null?void 0:e.placement)!=null?t:\"bottom\"},d=()=>{var t;return(t=e==null?void 0:e.strategy)!=null?t:\"absolute\"},[n,o]=g({x:null,y:null,placement:c(),strategy:d(),middlewareData:{}}),[x,F]=g();f(()=>{let t=x();if(t)throw t.value});let s=R(()=>(l(),u(),{}));function i(){let t=l(),r=u();if(t&&r){let a=s();E(t,r,{middleware:e==null?void 0:e.middleware,placement:c(),strategy:d()}).then(m=>{a===s()&&o(m)},m=>{F(m)})}}return f(()=>{let t=l(),r=u();if(e==null||e.middleware,c(),d(),t&&r)if(e!=null&&e.whileElementsMounted){let a=e.whileElementsMounted(t,r,i);a&&y(a)}else i()}),{get x(){return n().x},get y(){return n().y},get placement(){return n().placement},get strategy(){return n().strategy},get middlewareData(){return n().middlewareData},update:i}}export{P as useFloating};\n","import { Component, createSignal, onCleanup, onMount, Show, useContext } from 'solid-js';\nimport { ArrowIcon, Text, TonIcon } from 'src/app/components';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { Account, CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport {\n AccountButtonStyled,\n DropdownButtonStyled,\n DropdownContainerStyled,\n DropdownStyled,\n LoaderButtonStyled,\n LoaderIconStyled,\n NotificationsStyled\n} from './style';\nimport { Dynamic, Portal } from 'solid-js/web';\nimport { useFloating } from 'solid-floating-ui';\nimport { autoUpdate } from '@floating-ui/dom';\nimport { Transition } from 'solid-transition-group';\nimport { useTheme } from 'solid-styled-components';\nimport { globalStylesTag } from 'src/app/styles/global-styles';\nimport { animate } from 'src/app/utils/animate';\n\ninterface AccountButtonProps {}\n\nexport const AccountButton: Component<AccountButtonProps> = () => {\n const theme = useTheme();\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [isOpened, setIsOpened] = createSignal(false);\n const [account, setAccount] = createSignal<Account | null>(connector.account);\n const [restoringProcess, setRestoringProcess] = createSignal<boolean>(!connector.account);\n\n let dropDownRef: HTMLDivElement | undefined;\n\n const [floating, setFloating] = createSignal<HTMLDivElement | undefined>();\n const [anchor, setAnchor] = createSignal<HTMLButtonElement | undefined>();\n\n const position = useFloating(anchor, floating, {\n whileElementsMounted: autoUpdate,\n placement: 'bottom-end'\n });\n\n const normalizedAddress = (): string => {\n const acc = account();\n if (acc) {\n const userFriendlyAddress = toUserFriendlyAddress(\n acc.address,\n acc.chain === CHAIN.TESTNET\n );\n return userFriendlyAddress.slice(0, 4) + '…' + userFriendlyAddress.slice(-4);\n }\n\n return '';\n };\n\n // TODO: implement restoring process\n tonConnectUI.connectionRestored.then(() => setRestoringProcess(false));\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (!wallet) {\n setIsOpened(false);\n setAccount(null);\n setRestoringProcess(false);\n return;\n }\n\n setAccount(wallet.account);\n setRestoringProcess(false);\n });\n\n const onClick = (e: Event): void | boolean => {\n if (!account() || !isOpened()) {\n return;\n }\n const clickToButton = anchor()!.contains(e.target as Node);\n const clickToDropdown = dropDownRef!.contains(e.target as Node);\n\n if (!clickToButton && !clickToDropdown) {\n setIsOpened(false);\n }\n };\n\n onMount(() => {\n document.body.addEventListener('click', onClick);\n });\n\n onCleanup(() => {\n document.body.removeEventListener('click', onClick);\n unsubscribe();\n });\n\n return (\n <Dynamic component={globalStylesTag}>\n <Show when={restoringProcess()}>\n <LoaderButtonStyled disabled={true} data-tc-connect-button-loading=\"true\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={!restoringProcess()}>\n <Show when={!account()}>\n <AccountButtonStyled\n onClick={() => tonConnectUI.openModal()}\n data-tc-connect-button=\"true\"\n scale=\"s\"\n >\n <TonIcon fill={theme.colors.connectButton.foreground} />\n <Text\n translationKey=\"button.connectWallet\"\n fontSize=\"15px\"\n lineHeight=\"18px\"\n fontWeight=\"590\"\n color={theme.colors.connectButton.foreground}\n >\n Connect wallet\n </Text>\n </AccountButtonStyled>\n </Show>\n <Show when={account()}>\n <DropdownContainerStyled>\n <DropdownButtonStyled\n onClick={() => setIsOpened(v => !v)}\n ref={setAnchor}\n data-tc-dropdown-button=\"true\"\n scale=\"s\"\n >\n <Text fontSize=\"15px\" fontWeight=\"590\" lineHeight=\"18px\">\n {normalizedAddress()}\n </Text>\n <ArrowIcon direction=\"bottom\" />\n </DropdownButtonStyled>\n <Portal>\n <tc-root\n ref={setFloating}\n style={{\n position: position.strategy,\n top: `${position.y ?? 0}px`,\n left: `${position.x ?? 0}px`,\n 'z-index': 999\n }}\n data-tc-dropdown-container=\"true\"\n >\n <Transition\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translateY(-8px)' },\n { opacity: 1, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n const a = animate(\n el,\n [\n { opacity: 1, transform: 'translateY(0)' },\n { opacity: 0, transform: 'translateY(-8px)' }\n ],\n {\n duration: 150\n }\n );\n a.finished.then(done);\n }}\n >\n <Show when={isOpened()}>\n <DropdownStyled\n hidden={!isOpened()}\n onClose={() => setIsOpened(false)}\n ref={dropDownRef}\n />\n </Show>\n </Transition>\n <NotificationsStyled />\n </tc-root>\n </Portal>\n </DropdownContainerStyled>\n </Show>\n </Show>\n </Dynamic>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { H1, Modal, TabBar, Text } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const StyledModal = styled(Modal)`\n padding-left: 24px;\n padding-right: 24px;\n padding-top: 18px;\n padding-bottom: 0;\n\n ${media('mobile')} {\n padding-left: 0;\n padding-right: 0;\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 12px;\n\n ${media('mobile')} {\n padding: 0 10px;\n }\n`;\n\nexport const LoaderContainerStyled = styled.div`\n margin: 30px 0;\n width: 100%;\n display: flex;\n justify-content: center;\n\n ${media('mobile')} {\n height: 160px;\n align-items: center;\n }\n`;\n\nexport const TabTextStyled = styled(Text)`\n min-width: 84px;\n text-align: center;\n font-weight: 590;\n`;\n\nexport const TabBarStyled = styled(TabBar)`\n margin: 0 auto 22px;\n`;\n","import { ConnectAdditionalRequest, RequiredFeatures, ITonConnect } from '@tonconnect/sdk';\nimport { createStore } from 'solid-js/store';\nimport { Locales } from 'src/models/locales';\nimport { WalletsListConfiguration } from 'src/models/wallets-list-configuration';\nimport { ReturnStrategy } from 'src/models/return-strategy';\nimport { Loadable } from 'src/models/loadable';\n\nexport type AppState = {\n connector: ITonConnect;\n buttonRootId: string | null;\n language: Locales;\n walletsListConfiguration: WalletsListConfiguration | {};\n connectRequestParameters?: Loadable<ConnectAdditionalRequest> | null;\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}` | undefined;\n preferredWalletAppName: string | undefined;\n enableAndroidBackHandler: boolean;\n walletsRequiredFeatures: RequiredFeatures | undefined;\n walletsPreferredFeatures: RequiredFeatures | undefined;\n};\n\nexport const [appState, setAppState] = createStore<AppState>({\n buttonRootId: null,\n language: 'en',\n returnStrategy: 'back',\n twaReturnUrl: undefined,\n walletsListConfiguration: {},\n enableAndroidBackHandler: true\n} as AppState);\n","export function uniq<T>(array: T[]): T[] {\n return [...new Set(array)];\n}\n\nexport function mergeConcat<K extends PropertyKey, T extends Record<K, unknown>>(\n idKey: K,\n array1: T[],\n array2: T[]\n): T[] {\n return array1\n .map(item1 => {\n const item2 = array2.find(elem => elem[idKey] === item1[idKey]);\n array2 = array2.filter(elem => elem[idKey] !== item1[idKey]);\n\n return item2 === undefined ? item1 : item2;\n })\n .concat(array2);\n}\n","import { WalletInfo, TonConnect } from '@tonconnect/sdk';\nimport { UIWallet } from 'src/models/ui-wallet';\nimport { WalletsListConfiguration } from 'src/models';\nimport { mergeConcat } from 'src/app/utils/array';\n\nexport function uiWalletToWalletInfo(uiWallet: UIWallet): WalletInfo {\n if ('jsBridgeKey' in uiWallet) {\n return {\n ...uiWallet,\n injected: TonConnect.isWalletInjected(uiWallet.jsBridgeKey),\n embedded: TonConnect.isInsideWalletBrowser(uiWallet.jsBridgeKey)\n };\n }\n\n return uiWallet;\n}\n\nexport function applyWalletsListConfiguration(\n walletsList: WalletInfo[],\n configuration?: WalletsListConfiguration\n): WalletInfo[] {\n if (!configuration) {\n return walletsList;\n }\n\n if (configuration.includeWallets?.length) {\n walletsList = mergeConcat(\n 'name',\n walletsList,\n configuration.includeWallets.map(uiWalletToWalletInfo)\n );\n }\n\n return walletsList;\n}\n\nexport function supportsDesktop(walletInfo: WalletInfo): boolean {\n return walletInfo.platforms.some(w => ['macos', 'linux', 'windows'].includes(w));\n}\n\nexport function supportsMobile(walletInfo: WalletInfo): boolean {\n return walletInfo.platforms.some(w => ['ios', 'android'].includes(w));\n}\n\nexport function supportsExtension(walletInfo: WalletInfo): boolean {\n return walletInfo.platforms.some(w => ['chrome', 'firefox', 'safari'].includes(w));\n}\n\nexport function eqWalletName(wallet1: { name: string; appName: string }, name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return (\n wallet1.name.toLowerCase() === name.toLowerCase() ||\n wallet1.appName.toLowerCase() === name.toLowerCase()\n );\n}\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, H2, IconButton, WalletLabeledItem } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const DesktopSelectWalletModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 18px;\n`;\n\nexport const ScrollDivider = styled.div<{ isShown: boolean }>`\n height: 1px;\n margin: 0 -24px;\n width: calc(100% + 48px);\n opacity: 0.12;\n background: ${props => (props.isShown ? props.theme!.colors.icon.secondary : 'transparent')};\n transition: background 0.15s ease-in-out;\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const WalletsUl = styled.ul`\n display: grid;\n grid-template-columns: repeat(auto-fit, 92px);\n grid-template-rows: auto;\n align-content: flex-start;\n row-gap: 8px;\n width: 100%;\n padding: 0 0 16px;\n align-self: flex-start;\n max-width: 400px;\n margin: 0 auto;\n list-style: none;\n\n > li {\n display: block;\n height: fit-content;\n }\n\n ${media('mobile')} {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 0;\n padding: 8px 12px 16px;\n max-width: none;\n\n > li {\n min-width: 78px;\n display: flex;\n }\n\n > li > * {\n width: 100%;\n }\n }\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto 1px;\n font-size: 15px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const WalletLabeledItemStyled = styled(WalletLabeledItem)<{ withOpacity?: boolean }>`\n opacity: ${props => (props.withOpacity ? '0.4' : '1')};\n`;\n\nexport const WalletsNotSupportedNotifier = styled.div`\n display: grid;\n grid-template-columns: auto 28px;\n gap: 16px;\n padding: 16px;\n margin-bottom: 16px;\n border-radius: 16px;\n color: ${props => props.theme!.colors.text.secondary};\n background: ${props => props.theme!.colors.background.tint};\n\n ${media('mobile')} {\n margin-left: 16px;\n margin-right: 16px;\n }\n`;\n\nexport const WalletsNotSupportedNotifierText = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: left;\n margin: 0;\n`;\n\nexport const ErrorBoxStyled = styled.div`\n position: absolute;\n bottom: 14px;\n left: 50%;\n transform: translate(-50%, 0);\n\n text-wrap: nowrap;\n display: flex;\n gap: 6px;\n align-items: center;\n border-radius: 18px;\n min-width: 126px;\n padding: 9px 16px 9px 10px;\n\n filter: drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.08));\n background-color: ${props => props.theme!.colors.background.segment};\n`;\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ExclamationIconProps extends Styleable {\n fill?: Property.Color;\n size: '16' | '28';\n}\n\nexport const ExclamationIcon: Component<ExclamationIconProps> = props => {\n const theme = useTheme();\n\n const size = (): '16' | '28' => props.size;\n const fill = (): string => props.fill || theme.colors.icon.error;\n\n return (\n <>\n {size() === '16' ? (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_5122_10355)\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill={fill()} />\n <circle cx=\"8\" cy=\"11\" r=\"1\" fill={theme.colors.constant.white} />\n <path\n d=\"M7.04994 4.99875C7.02277 4.45542 7.45598 4 8 4C8.54402 4 8.97723 4.45541 8.95006 4.99875L8.78745 8.25094C8.76647 8.67055 8.42014 9 8 9C7.57986 9 7.23353 8.67055 7.21255 8.25094L7.04994 4.99875Z\"\n fill={theme.colors.constant.white}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_5122_10355\">\n <rect width=\"16\" height=\"16\" fill={theme.colors.constant.white} />\n </clipPath>\n </defs>\n </svg>\n ) : size() === '28' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n class={props.class}\n >\n <circle cx=\"14\" cy=\"14\" r=\"12\" fill={fill()} />\n <circle cx=\"14\" cy=\"18.9\" r=\"1.4\" fill={theme.colors.constant.white} />\n <path\n d=\"M12.6658 8.89845C12.63 8.13698 13.2377 7.5 14 7.5C14.7623 7.5 15.37 8.13698 15.3342 8.89845L15.047 15.0013C15.0207 15.5604 14.5597 16.0002 14 16.0002C13.4403 16.0002 12.9793 15.5604 12.953 15.0013L12.6658 8.89845Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : null}\n </>\n );\n};\n","import { Component, createSignal, For, Show } from 'solid-js';\nimport {\n DesktopSelectWalletModalStyled,\n WalletsUl,\n H1Styled,\n StyledIconButton,\n WalletLabeledItemStyled,\n WalletsNotSupportedNotifier,\n ErrorBoxStyled,\n WalletsNotSupportedNotifierText\n} from './style';\nimport { isMobile } from 'src/app/hooks/isMobile';\nimport { supportsMobile } from 'src/app/utils/wallets';\nimport { ScrollContainer } from 'src/app/components/scroll-container';\nimport { ExclamationIcon } from 'src/app/components/icons/exclamation-icon';\nimport { Transition } from 'solid-transition-group';\nimport { animate } from 'src/app/utils/animate';\nimport { ErrorIcon, Text } from 'src/app/components';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\n\nexport interface DesktopSelectWalletModalProps {\n walletsList: UIWalletInfo[];\n\n featureCheckMode?: 'strict' | 'soft' | 'hide';\n\n onBack: () => void;\n\n onSelect: (walletInfo: UIWalletInfo) => void;\n}\n\nexport const AllWalletsListModal: Component<DesktopSelectWalletModalProps> = props => {\n const maxHeight = (): number | undefined => (isMobile() ? undefined : 510);\n\n const [errorSupportOpened, setErrorSupportOpened] = createSignal<UIWalletInfo | null>(null);\n let timeoutId: null | ReturnType<typeof setTimeout> = null;\n const onErrorClick = (wallet: UIWalletInfo): void => {\n setErrorSupportOpened(wallet);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => setErrorSupportOpened(null), 1500);\n };\n\n const handleSelectWallet = (wallet: UIWalletInfo): void => {\n if (!wallet.isSupportRequiredFeatures && props.featureCheckMode === 'strict') {\n onErrorClick(wallet);\n return;\n }\n props.onSelect(wallet);\n };\n\n const walletsList = (): UIWalletInfo[] =>\n isMobile() ? props.walletsList.filter(supportsMobile) : props.walletsList;\n\n const supportedWallets = (): UIWalletInfo[] =>\n walletsList().filter(wallet => wallet.isSupportRequiredFeatures);\n\n const unsupportedWallets = (): UIWalletInfo[] =>\n walletsList().filter(wallet => !wallet.isSupportRequiredFeatures);\n\n return (\n <DesktopSelectWalletModalStyled data-tc-wallets-modal-list=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBack()} />\n <H1Styled translationKey=\"walletModal.wallets\">Wallets</H1Styled>\n <ScrollContainer maxHeight={maxHeight()}>\n <WalletsUl>\n <For each={supportedWallets()}>\n {wallet => (\n <li>\n <WalletLabeledItemStyled\n wallet={wallet}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </WalletsUl>\n <Show when={unsupportedWallets().length > 0 && props.featureCheckMode !== 'hide'}>\n <WalletsNotSupportedNotifier>\n <WalletsNotSupportedNotifierText translationKey=\"walletModal.allWallets.walletsBelowNotSupported\">\n The wallets below don’t support all features of the connected service.\n You can use your recovery phrase in one of the supported wallets above.\n </WalletsNotSupportedNotifierText>\n <ExclamationIcon size=\"28\" />\n </WalletsNotSupportedNotifier>\n <WalletsUl>\n <For each={unsupportedWallets()}>\n {wallet => (\n <li>\n <WalletLabeledItemStyled\n wallet={wallet}\n onClick={() => handleSelectWallet(wallet)}\n withOpacity={props.featureCheckMode === 'strict'}\n />\n </li>\n )}\n </For>\n </WalletsUl>\n <Transition\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translate(-50%, 44px)' },\n { opacity: 1, transform: 'translate(-50%, 0)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n );\n }}\n onExit={(el, done) => {\n animate(\n el,\n [\n { opacity: 1, transform: 'translate(-50%, 0)' },\n { opacity: 0, transform: 'translate(-50%, 44px)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n ).finished.then(() => {\n done();\n });\n }}\n >\n <Show when={errorSupportOpened()}>\n <ErrorBoxStyled>\n <ErrorIcon size=\"xs\" />\n <Text\n translationKey=\"walletModal.allWallets.walletNotSupportService\"\n translationValues={{ name: errorSupportOpened()!.name }}\n >\n {errorSupportOpened()!.name} doesn’t support connected service\n </Text>\n </ErrorBoxStyled>\n </Show>\n </Transition>\n </Show>\n </ScrollContainer>\n </DesktopSelectWalletModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport {\n Button,\n ErrorIcon,\n H1,\n H2,\n IconButton,\n LoaderIcon,\n Image,\n QRCode\n} from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst tgButtonBorders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst tgIconBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const DesktopConnectionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const BodyStyled = styled.div<{ qr: boolean }>`\n flex: 1;\n margin-top: ${props => (props.qr ? '0' : '18px')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 232px;\n`;\n\nexport const QRCodeStyled = styled(QRCode)`\n margin-bottom: 24px;\n`;\n\nexport const H1Styled = styled(H1)`\n max-width: 288px;\n margin: 0 auto 2px;\n`;\n\nexport const H2Styled = styled(H2)`\n max-width: 288px;\n text-align: center;\n margin: 0 auto 20px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n justify-content: center;\n gap: 8px;\n padding-bottom: 16px;\n`;\n\nexport const BottomButtonsContainerStyled = styled(ButtonsContainerStyled)`\n padding-bottom: 0;\n`;\n\nexport const FooterButton = styled(Button)`\n margin-bottom: 24px;\n`;\n\nexport const LoaderStyled = styled(LoaderIcon)`\n margin-bottom: 18px;\n margin-top: 2px;\n`;\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-bottom: 16px;\n`;\n\nexport const BodyTextStyled = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: center;\n margin-bottom: 20px;\n`;\n\nexport const TgButtonStyled = styled(Button)`\n margin-top: -8px;\n margin-bottom: 24px;\n width: 100%;\n padding: 12px 12px 12px 20px;\n border-radius: ${props => tgButtonBorders[props.theme!.borderRadius]};\n font-size: 16px;\n line-height: 20px;\n`;\n\nexport const TgImageStyled = styled(Image)`\n width: 32px;\n height: 32px;\n border-radius: ${props => tgIconBorders[props.theme!.borderRadius]};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\n\ninterface TranslationProps extends PropertyRequired<Translateable, 'translationKey'> {\n children?: JSXElement;\n}\n\nexport const Translation: Component<TranslationProps> = props => {\n const [t] = useI18n();\n\n return <>{t(props.translationKey, props.translationValues, props.children?.toString())}</>;\n};\n","import { ReturnStrategy } from 'src/models/return-strategy';\nimport {\n isInTelegramBrowser,\n isInTMA,\n isTmaPlatform,\n sendOpenTelegramLink\n} from 'src/app/utils/tma-api';\nimport {\n isBrowser,\n isOS,\n openDeeplinkWithFallback,\n openLink,\n openLinkBlank,\n toDeeplink\n} from 'src/app/utils/web-api';\nimport { encodeTelegramUrlParameters, isTelegramUrl } from '@tonconnect/sdk';\n\n/**\n * Adds a return strategy to a url.\n * @param url\n * @param strategy\n * TODO: refactor this method\n */\nexport function addReturnStrategy(\n url: string,\n strategy:\n | ReturnStrategy\n | {\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}` | undefined;\n }\n): string {\n let returnStrategy;\n if (typeof strategy === 'string') {\n returnStrategy = strategy;\n } else {\n returnStrategy = isInTMA() ? strategy.twaReturnUrl || strategy.returnStrategy : 'none';\n }\n const newUrl = addQueryParameter(url, 'ret', returnStrategy);\n\n if (!isTelegramUrl(url)) {\n return newUrl;\n }\n\n const lastParam = newUrl.slice(newUrl.lastIndexOf('&') + 1);\n return newUrl.slice(0, newUrl.lastIndexOf('&')) + '-' + encodeTelegramUrlParameters(lastParam);\n}\n\n/**\n * Redirects the user to a specified Telegram link with various strategies for returning to the application.\n * This function is primarily used for TON Space to handle different platforms and operating systems.\n *\n * @param universalLink A string representing the universal link to redirect to within Telegram.\n * @param options An object containing specific properties to customize the redirect behavior:\n * - returnStrategy: An enum `ReturnStrategy` dictating the method for returning to the app after the action is completed.\n * - twaReturnUrl: A URL template string for TMA return, or `undefined` if not applicable.\n * - forceRedirect: A boolean flag to force redirection, bypassing deep link fallback mechanisms.\n *\n * The function adapts its behavior based on the execution context, such as the TMA or browser environment, and the operating system.\n * Different strategies involve manipulating URL parameters and utilizing platform-specific features for optimal user experience.\n */\nexport function redirectToTelegram(\n universalLink: string,\n options: {\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}` | undefined;\n forceRedirect: boolean;\n }\n): void {\n options = { ...options };\n // TODO: Remove this line after all dApps and the wallets-list.json have been updated\n const directLink = convertToTGDirectLink(universalLink);\n const directLinkUrl = new URL(directLink);\n\n if (!directLinkUrl.searchParams.has('startapp')) {\n directLinkUrl.searchParams.append('startapp', 'tonconnect');\n }\n\n if (isInTelegramBrowser()) {\n // return back to the telegram browser\n options.returnStrategy = 'back';\n const linkWitStrategy = addReturnStrategy(directLinkUrl.toString(), options.returnStrategy);\n\n openLinkBlank(linkWitStrategy);\n } else if (isInTMA()) {\n if (isTmaPlatform('ios', 'android', 'macos', 'tdesktop', 'web')) {\n // Use the `back` strategy, the current TMA instance will keep open.\n // TON Space should automatically open in stack and should close\n // itself after the user action.\n\n options.returnStrategy = 'back';\n const linkWitStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n sendOpenTelegramLink(linkWitStrategy);\n } else if (isTmaPlatform('weba')) {\n // TODO: move weba to the ios/android/macOS/tdesktop strategy\n // Similar to tdesktop strategy, but opening another TMA occurs\n // through sending `web_app_open_tg_link` event to `parent`.\n\n sendOpenTelegramLink(addReturnStrategy(directLinkUrl.toString(), options));\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n\n openLinkBlank(addReturnStrategy(directLinkUrl.toString(), options));\n }\n } else {\n // For browser\n if (isOS('ios')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // TODO: use back for all browsers\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'back';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n // In case if the browser is Chrome or Firefox, use the deep link with fallback to the direct link.\n const isChrome = isBrowser('chrome');\n const isFirefox = isBrowser('firefox');\n const useDeepLink = (isChrome || isFirefox) && !options.forceRedirect;\n\n if (useDeepLink) {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n } else {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n openLinkBlank(linkWithStrategy);\n }\n } else if (isOS('android')) {\n // Use the `none` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // TODO: use back for all browsers\n options.returnStrategy = 'back';\n\n // In case if the browser is Chrome or Firefox, use the deep link with fallback to the direct link.\n const isChrome = isBrowser('chrome');\n const isFirefox = isBrowser('firefox');\n const useDeepLink = (isChrome || isFirefox) && !options.forceRedirect;\n\n if (useDeepLink) {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n } else {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n openLinkBlank(linkWithStrategy);\n }\n } else if (isOS('ipad')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'back';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n // In case if the browser is Chrome or Firefox, use the deep link with fallback to the direct link.\n const isChrome = isBrowser('chrome');\n const isFirefox = isBrowser('firefox');\n const useDeepLink = (isChrome || isFirefox) && !options.forceRedirect;\n\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n if (useDeepLink) {\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n } else {\n openLinkBlank(linkWithStrategy);\n }\n } else if (isOS('macos', 'windows', 'linux')) {\n // Use the `none` strategy. The user will transition to the TON Space\n // and return to the TMA after the action is completed.\n\n options.returnStrategy = 'back';\n options.twaReturnUrl = undefined;\n\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n if (options.forceRedirect) {\n openLinkBlank(linkWithStrategy);\n } else {\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n }\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n\n openLinkBlank(addReturnStrategy(directLinkUrl.toString(), options));\n }\n }\n}\n\n/**\n * Redirects the user to a specified wallet link with various strategies for returning to the application.\n * This function is primarily used for any wallet (except TON Space) to handle different platforms and operating systems.\n *\n * @param universalLink A string representing the universal link to redirect to within the wallet.\n * @param deepLink A string representing the deep link to redirect to within the wallet, or `undefined` if not applicable.\n * @param options An object containing specific properties to customize the redirect behavior:\n * - returnStrategy: An enum `ReturnStrategy` dictating the method for returning to the app after the action is completed.\n * - forceRedirect: A boolean flag to force redirection, bypassing deep link fallback mechanisms.\n * @param setOpenMethod A function to set the method of opening the wallet.\n *\n * The function adapts its behavior based on the execution context, such as the TMA or browser environment, and the operating system.\n * Different strategies involve manipulating URL parameters and utilizing platform-specific features for optimal user experience.\n */\nexport function redirectToWallet(\n universalLink: string,\n deepLink: string | undefined,\n options: {\n returnStrategy: ReturnStrategy;\n forceRedirect: boolean;\n },\n setOpenMethod: (method: 'universal-link' | 'custom-deeplink') => void\n): void {\n options = { ...options };\n\n if (isInTelegramBrowser()) {\n if (isOS('ios', 'android')) {\n // return back to the telegram browser\n if (options.returnStrategy === 'back') {\n options.returnStrategy = 'tg://resolve';\n }\n\n setOpenMethod('universal-link');\n\n openLink(addReturnStrategy(universalLink, options.returnStrategy), '_self');\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n setOpenMethod('universal-link');\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n\n openLinkBlank(linkWitStrategy);\n }\n } else if (isInTMA()) {\n if (isTmaPlatform('ios', 'android')) {\n // Use the `tg://resolve` strategy instead of `back`, the user will transition to the other app\n // and return to the Telegram app after the action is completed.\n\n // return back to the telegram app\n if (options.returnStrategy === 'back') {\n options.returnStrategy = 'tg://resolve';\n }\n\n setOpenMethod('universal-link');\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n\n sendOpenTelegramLink(linkWitStrategy, () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else if (isTmaPlatform('macos', 'tdesktop')) {\n // Use the `tg://resolve` strategy instead of `back`, the user will transition to the other app\n // and return to the Telegram app after the action is completed.\n\n // return back to the telegram app\n if (options.returnStrategy === 'back') {\n options.returnStrategy = 'tg://resolve';\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else if (isTmaPlatform('weba')) {\n // Use the `back` strategy, the user will transition to the other app\n // and maybe return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else if (isTmaPlatform('web')) {\n // Use the `back` strategy, the user will transition to the other app\n // and maybe return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n setOpenMethod('universal-link');\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n\n openLinkBlank(linkWitStrategy);\n }\n } else {\n if (isOS('ios')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'none';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n if (isBrowser('chrome')) {\n setOpenMethod('universal-link');\n\n // TODO: in case when the wallet does not exist, the location.href will be rewritten\n openLink(addReturnStrategy(universalLink, options.returnStrategy), '_self');\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n }\n } else if (isOS('android')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n } else if (isOS('ipad')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'none';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n if (isBrowser('chrome')) {\n setOpenMethod('universal-link');\n\n // TODO: in case when the wallet does not exist, the location.href will be rewritten\n openLink(addReturnStrategy(universalLink, options.returnStrategy), '_self');\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n }\n } else if (isOS('macos', 'windows', 'linux')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n options.returnStrategy = 'none';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n options.returnStrategy = 'none';\n }\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n }\n }\n}\n\n/**\n * Adds a query parameter to a URL.\n * @param url\n * @param key\n * @param value\n */\nfunction addQueryParameter(url: string, key: string, value: string): string {\n const parsed = new URL(url);\n parsed.searchParams.append(key, value);\n return parsed.toString();\n}\n\n/**\n * Converts a universal link to a direct link.\n * @param universalLink\n * TODO: Remove this method after all dApps and the wallets-list.json have been updated\n */\nfunction convertToTGDirectLink(universalLink: string): string {\n const url = new URL(universalLink);\n\n if (url.searchParams.has('attach')) {\n url.searchParams.delete('attach');\n url.pathname += '/start';\n }\n\n return url.toString();\n}\n\n/**\n * Converts a direct link to a deep link.\n * @param directLink\n */\nfunction convertToTGDeepLink(directLink: string): string {\n const parsed = new URL(directLink);\n const [, domain, appname] = parsed.pathname.split('/');\n const startapp = parsed.searchParams.get('startapp');\n return `tg://resolve?domain=${domain}&appname=${appname}&startapp=${startapp}`;\n}\n","import {\n ConnectAdditionalRequest,\n isTelegramUrl,\n isWalletInfoCurrentlyInjected,\n WalletMissingRequiredFeaturesError,\n WalletInfoInjectable,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n untrack,\n useContext\n} from 'solid-js';\nimport {\n BodyStyled,\n BodyTextStyled,\n BottomButtonsContainerStyled,\n ButtonsContainerStyled,\n DesktopConnectionModalStyled,\n ErrorIconStyled,\n FooterButton,\n H1Styled,\n H2Styled,\n LoaderStyled,\n QRCodeStyled,\n StyledIconButton,\n TgButtonStyled,\n TgImageStyled\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n BrowserIcon,\n Button,\n DesktopIcon,\n LinkIcon,\n LoaderIcon,\n MobileIcon,\n RetryIcon\n} from 'src/app/components';\nimport { appState } from 'src/app/state/app.state';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { Link } from 'src/app/components/link';\nimport { supportsDesktop, supportsExtension, supportsMobile } from 'src/app/utils/wallets';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { IMG } from 'src/app/env/IMG';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n addReturnStrategy,\n redirectToTelegram,\n redirectToWallet\n} from 'src/app/utils/url-strategy-helpers';\n\nexport interface DesktopConnectionProps {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote | (WalletInfoRemote & WalletInfoInjectable);\n onBackClick: () => void;\n backDisabled?: boolean;\n defaultError?: 'missing-features' | 'connection-declined' | 'not-supported' | null;\n}\n\nexport const DesktopConnectionModal: Component<DesktopConnectionProps> = props => {\n const [mode, setMode] = createSignal<'mobile' | 'desktop' | 'extension'>('mobile');\n\n const [connectionErrored, setConnectionErrored] = createSignal<\n 'missing-features' | 'connection-declined' | 'not-supported' | null\n >(null);\n\n createEffect(() => {\n setConnectionErrored(props.defaultError ?? null);\n });\n\n const [universalLink, setUniversalLink] = createSignal<string | undefined>();\n const [firstClick, setFirstClick] = createSignal(true);\n const connector = useContext(ConnectorContext)!;\n\n const unsubscribe = connector.onStatusChange(\n () => {},\n error => {\n if (error instanceof WalletMissingRequiredFeaturesError) {\n setConnectionErrored('missing-features');\n return;\n }\n\n if (props.wallet.appName !== AT_WALLET_APP_NAME) {\n setConnectionErrored('connection-declined');\n }\n }\n );\n\n onCleanup(unsubscribe);\n\n const generateUniversalLink = (): void => {\n // TODO: prevent double generation of universal link later and remove try-catch\n try {\n const universalLink = connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n );\n\n setUniversalLink(universalLink);\n } catch (e) {}\n };\n\n createEffect(() => {\n if (\n untrack(mode) !== 'extension' &&\n (supportsMobile(props.wallet) || supportsDesktop(props.wallet))\n ) {\n generateUniversalLink();\n }\n });\n\n const onClickMobile = (): void => {\n setConnectionErrored(null);\n if (mode() === 'extension') {\n generateUniversalLink();\n }\n\n setMode('mobile');\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'qrcode'\n });\n };\n\n const onClickDesktop = (): void => {\n setConnectionErrored(null);\n if (mode() === 'extension') {\n generateUniversalLink();\n }\n\n setMode('desktop');\n\n if (isTelegramUrl(universalLink())) {\n onClickTelegram();\n } else {\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToWallet(\n universalLink()!,\n props.wallet.deepLink,\n {\n returnStrategy: appState.returnStrategy,\n forceRedirect: forceRedirect\n },\n (method: 'universal-link' | 'custom-deeplink'): void => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: method\n });\n }\n );\n }\n };\n\n const onClickTelegram = (): void => {\n const forceRedirect = !firstClick();\n setFirstClick(false);\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n redirectToTelegram(universalLink()!, {\n returnStrategy: appState.returnStrategy,\n twaReturnUrl: appState.twaReturnUrl,\n forceRedirect: forceRedirect\n });\n };\n\n const onClickExtension = (): void => {\n setConnectionErrored(null);\n setMode('extension');\n if (isWalletInfoCurrentlyInjected(props.wallet)) {\n setLastSelectedWalletInfo(props.wallet);\n connector.connect(\n {\n jsBridgeKey: props.wallet.jsBridgeKey\n },\n props.additionalRequest\n );\n }\n };\n\n if (supportsMobile(props.wallet)) {\n onClickMobile();\n } else if (supportsExtension(props.wallet)) {\n onClickExtension();\n } else {\n onClickDesktop();\n }\n\n return (\n <DesktopConnectionModalStyled data-tc-wallets-modal-connection-desktop=\"true\">\n <Show when={!props.backDisabled}>\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n </Show>\n <H1Styled>{props.wallet.name}</H1Styled>\n <Show when={mode() === 'mobile' && !connectionErrored()}>\n <H2Styled\n translationKey=\"walletModal.desktopConnectionModal.scanQR\"\n translationValues={{ name: props.wallet.name }}\n >\n Scan the QR code below with your phone’s or {props.wallet.name}’s camera\n </H2Styled>\n </Show>\n\n <BodyStyled qr={mode() === 'mobile'}>\n <Switch>\n <Match when={connectionErrored()}>\n <ErrorIconStyled size=\"s\" />\n <Switch>\n <Match when={connectionErrored() === 'missing-features'}>\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.missingFeatures\"\n translationValues={{ name: props.wallet.name }}\n >\n Please update Wallet, your version does not support required\n features for this dApp\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'connection-declined'}>\n <BodyTextStyled translationKey=\"walletModal.desktopConnectionModal.connectionDeclined\">\n Connection declined\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'not-supported'}>\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.notSupportedWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n {props.wallet.name} doesn’t support the requested action. Please\n connect another wallet that supports it.\n </BodyTextStyled>\n </Match>\n </Switch>\n <ButtonsContainerStyled>\n <Show when={connectionErrored() !== 'not-supported'}>\n <Button\n leftIcon={<RetryIcon />}\n onClick={\n mode() === 'extension' ? onClickExtension : onClickDesktop\n }\n >\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n </Show>\n <Show when={connectionErrored() === 'missing-features'}>\n <Link href={props.wallet.aboutUrl} blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.desktopConnectionModal.updateWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Update {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </Show>\n <Show when={connectionErrored() === 'not-supported'}>\n <Button onClick={() => props.onBackClick()}>\n <Translation translationKey=\"walletModal.desktopConnectionModal.chooseAnotherWallet\">\n Choose Another Wallet\n </Translation>\n </Button>\n </Show>\n </ButtonsContainerStyled>\n </Match>\n <Match when={mode() === 'mobile'}>\n <QRCodeStyled\n disableCopy={false}\n sourceUrl={addReturnStrategy(universalLink()!, 'none')}\n imageUrl={props.wallet.imageUrl}\n />\n </Match>\n <Match when={mode() === 'extension'}>\n <Show when={isWalletInfoCurrentlyInjected(props.wallet)}>\n <LoaderStyled size=\"s\" />\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.continueInExtension\"\n translationValues={{ name: props.wallet.name }}\n >\n Continue in {props.wallet.name} browser extension…\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Button leftIcon={<RetryIcon />} onClick={onClickExtension}>\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n </ButtonsContainerStyled>\n </Show>\n <Show when={!isWalletInfoCurrentlyInjected(props.wallet)}>\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.dontHaveExtension\"\n translationValues={{ name: props.wallet.name }}\n >\n Seems you don't have installed {props.wallet.name} browser extension\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Link href={props.wallet.aboutUrl} blank>\n <Button rightIcon={<LinkIcon />} onClick={onClickExtension}>\n <Translation\n translationKey=\"walletModal.desktopConnectionModal.getWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Get {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </ButtonsContainerStyled>\n </Show>\n </Match>\n <Match when={mode() === 'desktop'}>\n <LoaderIcon size=\"m\" />\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.continueOnDesktop\"\n translationValues={{ name: props.wallet.name }}\n >\n Continue in {props.wallet.name} on desktop…\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Button leftIcon={<RetryIcon />} onClick={onClickDesktop}>\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n <Link href={props.wallet.aboutUrl} blank>\n <Button rightIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.desktopConnectionModal.getWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Get {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </ButtonsContainerStyled>\n </Match>\n </Switch>\n </BodyStyled>\n\n <Show when={props.wallet.appName === AT_WALLET_APP_NAME}>\n <TgButtonStyled\n rightIcon={<TgImageStyled src={IMG.TG} />}\n scale=\"s\"\n onClick={onClickTelegram}\n >\n <Translation translationKey=\"walletModal.desktopConnectionModal.openWalletOnTelegram\">\n Open Wallet in Telegram on desktop\n </Translation>\n </TgButtonStyled>\n </Show>\n <Show when={props.wallet.appName !== AT_WALLET_APP_NAME}>\n <BottomButtonsContainerStyled>\n <Show when={mode() !== 'mobile' && supportsMobile(props.wallet)}>\n <FooterButton\n appearance=\"secondary\"\n leftIcon={<MobileIcon />}\n onClick={onClickMobile}\n >\n <Translation translationKey=\"common.mobile\">Mobile</Translation>\n </FooterButton>\n </Show>\n <Show when={mode() !== 'extension' && supportsExtension(props.wallet)}>\n <FooterButton\n appearance=\"secondary\"\n leftIcon={<BrowserIcon />}\n onClick={onClickExtension}\n >\n <Translation translationKey=\"common.browserExtension\">\n Browser Extension\n </Translation>\n </FooterButton>\n </Show>\n <Show when={mode() !== 'desktop' && supportsDesktop(props.wallet)}>\n <FooterButton\n appearance=\"secondary\"\n leftIcon={<DesktopIcon />}\n onClick={onClickDesktop}\n >\n <Translation translationKey=\"common.desktop\">Desktop</Translation>\n </FooterButton>\n </Show>\n </BottomButtonsContainerStyled>\n </Show>\n </DesktopConnectionModalStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { H1, H3, IconButton, Text } from 'src/app/components';\n\nexport const InfoModalStyled = styled.div``;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 18px;\n`;\n\nexport const InfoBlock = styled.div`\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const InfoBlockIconClass = css`\n margin-bottom: 12px;\n`;\n\nexport const H3Styled = styled(H3)`\n text-align: center;\n margin-bottom: 4px;\n`;\n\nexport const TextStyled = styled(Text)`\n text-align: center;\n max-width: 352px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const ButtonsBlock = styled.div`\n padding: 16px 24px 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n`;\n","export const LINKS = {\n GET_A_WALLET:\n 'https://ton.org/wallets?filters[wallet_features][slug][$in]=dapp-auth&pagination[limit]=-1'\n};\n","import { Component } from 'solid-js';\nimport {\n InfoModalStyled,\n H1Styled,\n StyledIconButton,\n InfoBlock,\n InfoBlockIconClass,\n H3Styled,\n TextStyled,\n ButtonsBlock\n} from './style';\nimport {\n Button,\n PersonalityIcon,\n SecurityIcon,\n SwapIcon,\n WalletIcon,\n ScrollContainer,\n Link\n} from 'src/app/components';\nimport { LINKS } from 'src/app/env/LINKS';\nimport { Translation } from 'src/app/components/typography/Translation';\n\ninterface InfoModalProps {\n onBackClick: () => void;\n}\n\nexport const InfoModal: Component<InfoModalProps> = props => {\n return (\n <InfoModalStyled data-tc-wallets-modal-info=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n <H1Styled translationKey=\"walletModal.infoModal.whatIsAWallet\">\n What is a wallet\n </H1Styled>\n\n <ScrollContainer>\n <InfoBlock>\n <SecurityIcon class={InfoBlockIconClass} />\n <H3Styled translationKey=\"walletModal.infoModal.secureDigitalAssets\">\n Secure digital assets storage\n </H3Styled>\n <TextStyled translationKey=\"walletModal.infoModal.walletProtects\">\n A wallet protects and manages your digital assets including TON, tokens and\n collectables.\n </TextStyled>\n </InfoBlock>\n <InfoBlock>\n <PersonalityIcon class={InfoBlockIconClass} />\n <H3Styled translationKey=\"walletModal.infoModal.controlIdentity\">\n Control your Web3 identity\n </H3Styled>\n <TextStyled translationKey=\"walletModal.infoModal.manageIdentity\">\n Manage your digital identity and access decentralized applications with\n ease. Maintain control over your data and engage securely in the blockchain\n ecosystem.\n </TextStyled>\n </InfoBlock>\n <InfoBlock>\n <SwapIcon class={InfoBlockIconClass} />\n <H3Styled translationKey=\"walletModal.infoModal.effortlessCryptoTransactions\">\n Effortless crypto transactions\n </H3Styled>\n <TextStyled translationKey=\"walletModal.infoModal.easilySend\">\n Easily send, receive, monitor your cryptocurrencies. Streamline your\n operations with decentralized applications.\n </TextStyled>\n </InfoBlock>\n\n <ButtonsBlock>\n <Link href={LINKS.GET_A_WALLET} blank>\n <Button rightIcon={<WalletIcon />}>\n <Translation translationKey=\"walletModal.infoModal.getAWallet\">\n Get a Wallet\n </Translation>\n </Button>\n </Link>\n </ButtonsBlock>\n </ScrollContainer>\n </InfoModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon, H1, IconButton, LoaderIcon, Image, H2 } from 'src/app/components';\nimport { Link } from 'src/app/components/link';\nimport { rgba } from 'src/app/utils/css';\n\nexport const MobileConnectionModalStyled = styled.div``;\n\nexport const BodyStyled = styled.div`\n flex: 1;\n margin-top: 18px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 232px;\n`;\n\nexport const H1Styled = styled(H1)`\n max-width: 262px;\n margin: 0 auto 8px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const FooterStyled = styled.div`\n padding: 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n border-top: 0.5px solid ${props => rgba(props.theme!.colors.icon.secondary, 0.2)};\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 36px;\n height: 36px;\n border-radius: 10px;\n`;\n\nexport const FooterButton = styled(Link)`\n margin-left: auto;\n`;\n\nexport const LoaderStyled = styled(LoaderIcon)`\n margin-bottom: 18px;\n margin-top: 2px;\n`;\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-bottom: 16px;\n`;\n\nexport const BodyTextStyled = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: center;\n margin-bottom: 20px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n justify-content: center;\n gap: 8px;\n padding-bottom: 16px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { H1, H2, Button } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { rgba } from 'src/app/utils/css';\n\nconst actionButtonBorderRadius: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 2px;\n padding: 0 52px;\n`;\n\nexport const H2Styled = styled(H2)`\n margin-bottom: 20px;\n padding: 0 64px;\n`;\n\nexport const QrCodeWrapper = styled.div`\n padding: 0 24px 16px;\n`;\n\nexport const ButtonsWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 16px;\n padding: 0 24px 24px;\n margin-top: 0;\n`;\n\nexport const ActionButton = styled(Button)`\n width: 100%;\n height: 56px;\n border-radius: ${props => actionButtonBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 17px 20px 19px 20px;\n`;\n","import { Component } from 'solid-js';\nimport { H1Styled, H2Styled, QrCodeWrapper, ButtonsWrapper, ActionButton } from './style';\nimport { QRCode } from 'src/app/components';\nimport { addReturnStrategy } from 'src/app/utils/url-strategy-helpers';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\n\ninterface MobileConnectionQRProps {\n universalLink: string;\n walletInfo: Pick<UIWalletInfo, 'name' | 'imageUrl'>;\n onOpenLink?: () => void;\n onCopy?: () => void;\n isCopiedShown?: ReturnType<typeof setTimeout> | void;\n}\n\nexport const MobileConnectionQR: Component<MobileConnectionQRProps> = props => {\n return (\n <>\n <H1Styled>{props.walletInfo.name}</H1Styled>\n <H2Styled\n translationKey=\"walletModal.mobileConnectionModal.scanQR\"\n translationValues={{ name: props.walletInfo.name }}\n >\n Scan the QR code below with your phone’s or {props.walletInfo.name}’s camera\n </H2Styled>\n <QrCodeWrapper>\n <QRCode\n imageUrl={props.walletInfo.imageUrl}\n sourceUrl={addReturnStrategy(props.universalLink, 'none')}\n disableCopy\n />\n </QrCodeWrapper>\n <ButtonsWrapper>\n <ActionButton appearance=\"secondary\" onClick={() => props.onOpenLink?.()}>\n <Translation translationKey=\"walletModal.mobileUniversalModal.openLink\">\n Open Link\n </Translation>\n </ActionButton>\n <ActionButton appearance=\"secondary\" onClick={() => props.onCopy?.()}>\n <Translation\n translationKey={\n props.isCopiedShown !== undefined ? 'common.copied' : 'common.copyLink'\n }\n >\n {props.isCopiedShown !== undefined ? 'Copied' : 'Copy Link'}\n </Translation>\n </ActionButton>\n </ButtonsWrapper>\n </>\n );\n};\n","import { ConnectAdditionalRequest, isTelegramUrl, WalletInfoRemote } from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n useContext\n} from 'solid-js';\nimport {\n BodyStyled,\n BodyTextStyled,\n ButtonsContainerStyled,\n ErrorIconStyled,\n FooterButton,\n FooterStyled,\n H1Styled,\n ImageStyled,\n LoaderStyled,\n MobileConnectionModalStyled,\n StyledIconButton\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { Button, H3, Link, LinkIcon, QRIcon, RetryIcon } from 'src/app/components';\nimport { appState } from 'src/app/state/app.state';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { useTheme } from 'solid-styled-components';\nimport { MobileConnectionQR } from 'src/app/views/modals/wallets-modal/mobile-connection-modal/mobile-connection-qr';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\n\nexport interface MobileConnectionProps {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote;\n onBackClick: () => void;\n backDisabled?: boolean;\n defaultError?: 'missing-features' | 'connection-declined' | 'not-supported' | null;\n}\n\nexport const MobileConnectionModal: Component<MobileConnectionProps> = props => {\n const theme = useTheme();\n const [firstClick, setFirstClick] = createSignal(true);\n const [showQR, setShowQR] = createSignal(false);\n const [connectionErrored, setConnectionErrored] = createSignal<\n 'missing-features' | 'connection-declined' | 'not-supported' | null\n >(null);\n\n createEffect(() => {\n setConnectionErrored(props.defaultError ?? null);\n });\n const connector = useContext(ConnectorContext)!;\n\n const unsubscribe = connector.onStatusChange(\n () => {},\n () => {\n setConnectionErrored(null);\n }\n );\n\n const universalLink = createMemo(() =>\n connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n )\n );\n\n const onClickTelegram = (): void => {\n const alwaysForceRedirect = true;\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n redirectToTelegram(universalLink()!, {\n returnStrategy: appState.returnStrategy,\n twaReturnUrl: appState.twaReturnUrl,\n forceRedirect: alwaysForceRedirect\n });\n };\n\n const onRetry = (): void => {\n const currentUniversalLink = universalLink();\n if (isTelegramUrl(currentUniversalLink)) {\n return onClickTelegram();\n }\n\n setConnectionErrored(null);\n\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToWallet(\n universalLink()!,\n props.wallet.deepLink,\n {\n returnStrategy: appState.returnStrategy,\n forceRedirect: forceRedirect\n },\n (method: 'universal-link' | 'custom-deeplink') => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: method\n });\n }\n );\n };\n\n const [isCopiedShown, setIsCopiedShown] = createSignal<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n\n const onCopy = async (): Promise<void> => {\n if (isCopiedShown() !== undefined) {\n clearTimeout(isCopiedShown());\n }\n\n await copyToClipboard(universalLink());\n const timeoutId = setTimeout(() => setIsCopiedShown(undefined), 1500);\n setIsCopiedShown(timeoutId);\n };\n\n const onOpenQR = (): void => {\n setConnectionErrored(null);\n setShowQR(true);\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'qrcode'\n });\n };\n\n const onCloseQR = (): void => {\n setShowQR(false);\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n };\n\n const onBack = (): void => {\n if (showQR()) {\n onCloseQR();\n } else {\n props.onBackClick();\n }\n };\n\n onCleanup(unsubscribe);\n onRetry();\n\n return (\n <MobileConnectionModalStyled data-tc-wallets-modal-connection-mobile=\"true\">\n <Show when={!props.backDisabled || showQR()}>\n <StyledIconButton icon=\"arrow\" onClick={onBack} />\n </Show>\n <Show when={showQR()}>\n <MobileConnectionQR\n universalLink={universalLink()}\n walletInfo={props.wallet}\n onOpenLink={onRetry}\n onCopy={onCopy}\n isCopiedShown={isCopiedShown()}\n />\n </Show>\n <Show when={!showQR()}>\n <H1Styled>{props.wallet.name}</H1Styled>\n\n <BodyStyled>\n <Show when={connectionErrored()}>\n <ErrorIconStyled size=\"s\" />\n\n <Switch>\n <Match when={connectionErrored() === 'missing-features'}>\n <BodyTextStyled\n translationKey=\"walletModal.mobileConnectionModal.missingFeatures\"\n translationValues={{ name: props.wallet.name }}\n >\n Please update Wallet, your version does not support required\n features for this dApp\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'connection-declined'}>\n <BodyTextStyled translationKey=\"walletModal.mobileConnectionModal.connectionDeclined\">\n Connection declined\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'not-supported'}>\n <BodyTextStyled\n translationKey=\"walletModal.mobileConnectionModal.notSupportedWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n {props.wallet.name} doesn’t support the requested action. Please\n connect another wallet that supports it.\n </BodyTextStyled>\n </Match>\n </Switch>\n <ButtonsContainerStyled>\n <Switch>\n <Match when={connectionErrored() === 'missing-features'}>\n <Button leftIcon={<RetryIcon />} onClick={onRetry}>\n <Translation translationKey=\"common.retry\">\n Retry\n </Translation>\n </Button>\n <Link href={props.wallet.aboutUrl} blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.mobileConnectionModal.updateWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Update {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </Match>\n <Match when={connectionErrored() === 'not-supported'}>\n <Button onClick={() => props.onBackClick()}>\n <Translation translationKey=\"walletModal.mobileConnectionModal.chooseAnotherWallet\">\n Choose Another Wallet\n </Translation>\n </Button>\n </Match>\n <Match when={connectionErrored() === 'connection-declined'}>\n <Button leftIcon={<RetryIcon />} onClick={onRetry}>\n <Translation translationKey=\"common.retry\">\n Retry\n </Translation>\n </Button>\n <Button\n leftIcon={<QRIcon fill={theme.colors.accent} />}\n onClick={onOpenQR}\n >\n <Translation translationKey=\"walletModal.mobileConnectionModal.showQR\">\n Show QR Code\n </Translation>\n </Button>\n </Match>\n </Switch>\n </ButtonsContainerStyled>\n </Show>\n <Show when={!connectionErrored()}>\n <LoaderStyled size=\"s\" />\n <BodyTextStyled\n translationKey=\"walletModal.mobileConnectionModal.continueIn\"\n translationValues={{ name: props.wallet.name }}\n >\n Continue in {props.wallet.name}…\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Button leftIcon={<RetryIcon />} onClick={onRetry}>\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n <Button\n leftIcon={<QRIcon fill={theme.colors.accent} />}\n onClick={onOpenQR}\n >\n <Translation translationKey=\"walletModal.mobileConnectionModal.showQR\">\n Show QR Code\n </Translation>\n </Button>\n </ButtonsContainerStyled>\n </Show>\n </BodyStyled>\n\n <FooterStyled>\n <ImageStyled src={props.wallet.imageUrl} />\n <H3>{props.wallet.name}</H3>\n <FooterButton href={props.wallet.aboutUrl} blank>\n <Button>\n <Translation translationKey=\"common.get\">GET</Translation>\n </Button>\n </FooterButton>\n </FooterStyled>\n </Show>\n </MobileConnectionModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, H2, IconButton, Image } from 'src/app/components';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst tgBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const OtherOptionButton = styled.li`\n width: 82px;\n min-width: 82px;\n height: 124px;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 4px;\n\n text-align: center;\n cursor: pointer;\n\n transition: transform 0.1s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 38px;\n margin-bottom: 4px;\n padding: 0 24px;\n`;\n\nexport const H2Styled = styled(H2)<{\n maxWidth?: number;\n minHeight?: string;\n padding?: string;\n margin?: string;\n}>`\n margin: ${props => props.margin ?? '0 0 28px 0'};\n padding: ${props => props.padding ?? '0 24px'};\n min-height: ${props => props.padding ?? '44px'};\n max-width: ${props => props.maxWidth}px;\n margin-left: ${props => (props.maxWidth ? 'auto' : '0px')};\n margin-right: ${props => (props.maxWidth ? 'auto' : '0px')};\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto;\n`;\n\nexport const TelegramButtonStyled = styled(Button)`\n margin: 0 28px 24px;\n width: calc(100% - 56px);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n padding: 14px 16px 14px 14px;\n background-color: ${props => props.theme!.colors.telegramButton};\n\n color: ${props => props.theme!.colors.constant.white};\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n\n @media (max-width: 375px) {\n margin: 0 16px 24px;\n width: calc(100% - 32px);\n }\n`;\n\nexport const TGImageStyled = styled(Image)`\n background-color: transparent;\n border-radius: ${props => tgBorders[props.theme!.borderRadius]};\n width: 24px;\n height: 24px;\n`;\n\nexport const StyledLeftActionButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { H1, H2, Button } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { rgba } from 'src/app/utils/css';\n\nconst actionButtonBorderRadius: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 2px;\n padding: 0 52px;\n`;\n\nexport const H2Styled = styled(H2)`\n margin-bottom: 20px;\n padding: 0 64px;\n`;\n\nexport const QrCodeWrapper = styled.div`\n padding: 0 24px 16px;\n`;\n\nexport const ButtonsWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 16px;\n padding: 0 24px 24px;\n margin-top: 0;\n`;\n\nexport const ActionButton = styled(Button)`\n width: 100%;\n height: 56px;\n border-radius: ${props => actionButtonBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 17px 20px 19px 20px;\n`;\n","import { Component } from 'solid-js';\nimport { H1Styled, H2Styled, QrCodeWrapper, ButtonsWrapper, ActionButton } from './style';\nimport { QRCode } from 'src/app/components';\nimport { IMG } from 'src/app/env/IMG';\n\nimport { addReturnStrategy } from 'src/app/utils/url-strategy-helpers';\nimport { Translation } from 'src/app/components/typography/Translation';\n\ninterface MobileUniversalQRProps {\n universalLink: string;\n onOpenLink: () => void;\n onCopy: () => void;\n isCopiedShown: ReturnType<typeof setTimeout> | void;\n}\n\nexport const MobileUniversalQR: Component<MobileUniversalQRProps> = props => {\n return (\n <>\n <H1Styled translationKey=\"walletModal.mobileUniversalModal.connectYourWallet\">\n Connect your TON wallet\n </H1Styled>\n <H2Styled translationKey=\"walletModal.mobileUniversalModal.scan\">\n Scan with your mobile wallet\n </H2Styled>\n <QrCodeWrapper>\n <QRCode\n imageUrl={IMG.TON}\n sourceUrl={addReturnStrategy(props.universalLink, 'none')}\n disableCopy\n />\n </QrCodeWrapper>\n <ButtonsWrapper>\n <ActionButton appearance=\"secondary\" onClick={() => props.onOpenLink()}>\n <Translation translationKey=\"walletModal.mobileUniversalModal.openLink\">\n Open Link\n </Translation>\n </ActionButton>\n <ActionButton appearance=\"secondary\" onClick={() => props.onCopy()}>\n <Translation\n translationKey={\n props.isCopiedShown !== undefined ? 'common.copied' : 'common.copyLink'\n }\n >\n {props.isCopiedShown !== undefined ? 'Copied' : 'Copy Link'}\n </Translation>\n </ActionButton>\n </ButtonsWrapper>\n </>\n );\n};\n","import { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { isWalletInfoRemote, WalletInfoRemote } from '@tonconnect/sdk';\n\nexport function getUniqueBridges(walletsList: UIWalletInfo[]): { bridgeUrl: string }[] {\n const uniqueBridges = new Set(\n walletsList.filter(isWalletInfoRemote).map(item => (item as WalletInfoRemote).bridgeUrl)\n );\n return Array.from(uniqueBridges).map(bridgeUrl => ({ bridgeUrl }));\n}\n\nexport function bridgesIsEqual(\n left: { bridgeUrl: string }[] | null,\n right: { bridgeUrl: string }[] | null\n): boolean {\n const leftSet = new Set(left?.map(i => i.bridgeUrl));\n const rightSet = new Set(right?.map(i => i.bridgeUrl));\n return leftSet.size === rightSet.size && [...leftSet].every(value => rightSet.has(value));\n}\n","import { ConnectAdditionalRequest, isWalletInfoRemote } from '@tonconnect/sdk';\nimport { Component, createMemo, createSignal, For, Show } from 'solid-js';\nimport { AtWalletIcon, FourWalletsItem, QRIcon, WalletItem } from 'src/app/components';\nimport {\n H1Styled,\n H2Styled,\n StyledLeftActionButton,\n TelegramButtonStyled,\n TGImageStyled\n} from './style';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { appState } from 'src/app/state/app.state';\nimport { IMG } from 'src/app/env/IMG';\nimport { supportsMobile } from 'src/app/utils/wallets';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { TonConnectUIError } from 'src/errors';\nimport { MobileUniversalQR } from './mobile-universal-qr';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\nimport { bridgesIsEqual, getUniqueBridges } from 'src/app/utils/bridge';\nimport { WalletUlContainer } from 'src/app/components/wallet-item/style';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\n\ninterface MobileUniversalModalProps {\n walletsList: UIWalletInfo[];\n\n additionalRequest: ConnectAdditionalRequest;\n\n onSelect: (walletInfo: UIWalletInfo) => void;\n\n onSelectAllWallets: () => void;\n}\n\nexport const MobileUniversalModal: Component<MobileUniversalModalProps> = props => {\n const [showQR, setShowQR] = createSignal(false);\n const [firstClick, setFirstClick] = createSignal(true);\n const [universalLink, setUniversalLink] = createSignal<string | null>(null);\n const connector = appState.connector;\n const walletsList = (): UIWalletInfo[] =>\n props.walletsList.filter(w => supportsMobile(w) && w.appName !== AT_WALLET_APP_NAME);\n const shouldShowMoreButton = (): boolean => walletsList().length > 7;\n\n const walletsBridges = createMemo(() => getUniqueBridges(props.walletsList), null, {\n equals: bridgesIsEqual\n });\n\n const atWalletSupportFeatures = createMemo(\n () =>\n props.walletsList.find(wallet => wallet.appName === AT_WALLET_APP_NAME)\n ?.isSupportRequiredFeatures ?? false,\n null\n );\n\n const getUniversalLink = (): string => {\n if (!universalLink()) {\n setUniversalLink(connector.connect(walletsBridges(), props.additionalRequest));\n }\n return universalLink()!;\n };\n\n setLastSelectedWalletInfo({ openMethod: 'universal-link' });\n\n const [isCopiedShown, setIsCopiedShown] = createSignal<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n\n const onCopy = async (): Promise<void> => {\n if (isCopiedShown() !== undefined) {\n clearTimeout(isCopiedShown());\n }\n\n await copyToClipboard(getUniversalLink());\n const timeoutId = setTimeout(() => setIsCopiedShown(undefined), 1500);\n setIsCopiedShown(timeoutId);\n };\n\n const onSelectUniversal = (): void => {\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToWallet(\n getUniversalLink(),\n undefined,\n {\n returnStrategy: appState.returnStrategy,\n forceRedirect: forceRedirect\n },\n (method: 'universal-link' | 'custom-deeplink') => {\n setLastSelectedWalletInfo({\n openMethod: method\n });\n }\n );\n };\n\n const onSelectTelegram = (): void => {\n setUniversalLink(null);\n\n const atWallet = props.walletsList.find(wallet => wallet.appName === AT_WALLET_APP_NAME);\n if (!atWallet || !isWalletInfoRemote(atWallet)) {\n throw new TonConnectUIError('@wallet bot not found in the wallets list');\n }\n\n const walletLink = connector.connect(\n {\n bridgeUrl: atWallet.bridgeUrl,\n universalLink: atWallet.universalLink\n },\n props.additionalRequest\n );\n\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToTelegram(walletLink, {\n returnStrategy: appState.returnStrategy,\n twaReturnUrl: appState.twaReturnUrl,\n forceRedirect: forceRedirect\n });\n };\n\n const onOpenQR = (): void => {\n setShowQR(true);\n setLastSelectedWalletInfo({\n openMethod: 'qrcode'\n });\n };\n\n const onCloseQR = (): void => {\n setShowQR(false);\n setLastSelectedWalletInfo({\n openMethod: 'universal-link'\n });\n };\n\n const supportedWallets = createMemo(\n () => walletsList().filter(wallet => wallet.isSupportRequiredFeatures),\n null\n );\n\n const visibleWallets = createMemo(() => supportedWallets().slice(0, 3), null);\n\n const fourWalletsItem = createMemo(\n () =>\n walletsList()\n .filter(wallet => !visibleWallets().find(w => w.appName === wallet.appName))\n .slice(0, 4),\n null\n );\n\n return (\n <div data-tc-wallets-modal-universal-mobile=\"true\">\n <Show when={showQR()}>\n <StyledLeftActionButton icon=\"arrow\" onClick={onCloseQR} />\n <MobileUniversalQR\n universalLink={getUniversalLink()}\n isCopiedShown={isCopiedShown()}\n onOpenLink={onSelectUniversal}\n onCopy={onCopy}\n />\n </Show>\n <Show when={!showQR()}>\n <StyledLeftActionButton icon={<QRIcon />} onClick={onOpenQR} />\n <H1Styled translationKey=\"walletModal.mobileUniversalModal.connectYourWallet\">\n Connect your TON wallet\n </H1Styled>\n <Show when={atWalletSupportFeatures()}>\n <H2Styled\n translationKey=\"walletModal.mobileUniversalModal.openWalletOnTelegramOrSelect\"\n maxWidth={320}\n >\n Use Wallet in Telegram or choose other application\n </H2Styled>\n <TelegramButtonStyled\n leftIcon={<AtWalletIcon />}\n rightIcon={<TGImageStyled src={IMG.TG} />}\n onClick={onSelectTelegram}\n scale=\"s\"\n >\n <Translation translationKey=\"walletModal.mobileUniversalModal.openWalletOnTelegram\">\n Connect Wallet in Telegram\n </Translation>\n </TelegramButtonStyled>\n </Show>\n <H2Styled\n translationKey=\"walletModal.mobileUniversalModal.chooseOtherApplication\"\n maxWidth={342}\n padding={'0 24px 8px 24px'}\n margin={'0'}\n >\n Choose other application\n </H2Styled>\n <WalletUlContainer>\n <For each={shouldShowMoreButton() ? visibleWallets() : supportedWallets()}>\n {wallet => (\n <li>\n <WalletItem\n icon={wallet.imageUrl}\n name={wallet.name}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n <Show when={shouldShowMoreButton()}>\n <li>\n <FourWalletsItem\n labelLine1=\"View all\"\n labelLine2=\"wallets\"\n images={fourWalletsItem().map(i => i.imageUrl)}\n onClick={() => props.onSelectAllWallets()}\n />\n </li>\n </Show>\n </WalletUlContainer>\n </Show>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2, QRCode, Text, Image } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nexport const DesktopUniversalModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 16px;\n`;\n\nexport const H2Styled = styled(H2)`\n max-width: 320px;\n margin-top: 2px;\n margin-bottom: 20px;\n`;\n\nexport const H2AvailableWalletsStyled = styled(H2)`\n margin-bottom: 16px;\n`;\n\nexport const QRCodeStyled = styled(QRCode)`\n margin-bottom: 24px;\n`;\n\nexport const WalletsContainerStyled = styled.ul`\n display: flex;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n width: 100%;\n`;\n\nexport const ActionButtonStyled = styled(Button)<{ disableEventsAnimation?: boolean }>`\n position: relative;\n font-size: 16px;\n line-height: 20px;\n width: 100%;\n padding: 0 16px;\n height: 56px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n\n &:hover {\n ${props => (props.disableEventsAnimation ? 'transform: unset;' : '')}\n }\n\n &:active {\n ${props => (props.disableEventsAnimation ? 'transform: unset;' : '')}\n }\n`;\n\nexport const PopupWrapperStyled = styled.ul`\n position: absolute;\n bottom: 100%;\n left: 0;\n margin: 0;\n padding: 8px;\n width: 188px;\n transform: translateY(-16px);\n\n background-color: ${props => props.theme!.colors.background.primary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n`;\n\nexport const ExtensionLiStyled = styled.li`\n padding: 8px;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n cursor: pointer;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 24px;\n height: 24px;\n\n border-radius: 6px;\n`;\n\nexport const GetWalletStyled = styled.div`\n margin-top: 23px;\n margin-bottom: 1px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { Component, createMemo, createSignal, For } from 'solid-js';\nimport {\n DesktopUniversalModalStyled,\n H2AvailableWalletsStyled,\n H2Styled,\n QRCodeStyled,\n WalletsContainerStyled\n} from './style';\nimport { ConnectAdditionalRequest } from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { FourWalletsItem, H1, WalletLabeledItem } from 'src/app/components';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { IMG } from 'src/app/env/IMG';\n\nimport { addReturnStrategy } from 'src/app/utils/url-strategy-helpers';\nimport { bridgesIsEqual, getUniqueBridges } from 'src/app/utils/bridge';\n\ninterface DesktopUniversalModalProps {\n additionalRequest: ConnectAdditionalRequest;\n\n walletsList: UIWalletInfo[];\n\n onSelect: (walletInfo: UIWalletInfo) => void;\n\n onSelectAllWallets: () => void;\n}\n\nexport const DesktopUniversalModal: Component<DesktopUniversalModalProps> = props => {\n const [popupOpened, setPopupOpened] = createSignal(false);\n const connector = appState.connector;\n\n const walletsBridges = createMemo(() => getUniqueBridges(props.walletsList), null, {\n equals: bridgesIsEqual\n });\n\n setLastSelectedWalletInfo({ openMethod: 'qrcode' });\n const request = createMemo(() => connector.connect(walletsBridges(), props.additionalRequest));\n\n const supportedWallets = createMemo(\n () => props.walletsList.filter(wallet => wallet.isSupportRequiredFeatures),\n null\n );\n\n const visibleWallets = createMemo(() => supportedWallets().slice(0, 3), null);\n\n const fourWalletsItem = createMemo(\n () =>\n props.walletsList\n .filter(wallet => !visibleWallets().find(w => w.appName === wallet.appName))\n .slice(0, 4),\n null\n );\n\n return (\n <DesktopUniversalModalStyled\n onClick={() => setPopupOpened(false)}\n data-tc-wallets-modal-universal-desktop=\"true\"\n >\n <H1 translationKey=\"walletModal.desktopUniversalModal.connectYourWallet\">\n Connect your wallet\n </H1>\n <H2Styled translationKey=\"walletModal.desktopUniversalModal.scan\">\n Scan with your mobile wallet\n </H2Styled>\n <QRCodeStyled\n sourceUrl={addReturnStrategy(request()!, 'none')}\n disableCopy={popupOpened()}\n imageUrl={IMG.TON}\n />\n <H2AvailableWalletsStyled translationKey=\"walletModal.desktopUniversalModal.availableWallets\">\n Available wallets\n </H2AvailableWalletsStyled>\n <WalletsContainerStyled>\n <For each={visibleWallets()}>\n {wallet => (\n <li>\n <WalletLabeledItem\n wallet={wallet}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n <FourWalletsItem\n labelLine1=\"View all\"\n labelLine2=\"wallets\"\n images={fourWalletsItem().map(i => i.imageUrl)}\n onClick={() => props.onSelectAllWallets()}\n />\n </WalletsContainerStyled>\n </DesktopUniversalModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, ErrorIcon, H1, H2, IconButton, Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const H1Styled = styled(H1)`\n max-width: 288px;\n margin: 0 auto 38px;\n`;\n\nexport const DesktopFeatureNotSupportModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const TitleStyled = styled(H1)`\n text-align: center;\n font-size: 20px;\n line-height: 28px;\n`;\n\nexport const DescriptionStyled = styled(Text)`\n margin-top: 12px;\n margin-bottom: 24px;\n text-align: center;\n max-width: 360px;\n font-weight: 400;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const RestoreWalletLinkStyled = styled.button`\n background: transparent;\n border: none;\n padding: 0;\n margin: 0;\n color: ${props => props.theme!.colors.accent};\n text-decoration: underline;\n cursor: pointer;\n font: inherit;\n`;\n\nexport const Spacer = styled.div`\n margin-bottom: 46px;\n`;\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-bottom: 16px;\n`;\n\nexport const WalletsContainerStyled = styled.ul`\n display: flex;\n gap: 8px;\n margin-bottom: 24px;\n list-style: none;\n padding: 0;\n`;\n\nexport const DisconnectButtonStyled = styled(Button)`\n max-width: 320px;\n width: 100%;\n height: 48px;\n font-size: 16px;\n line-height: 20px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n margin-bottom: 28px;\n`;\n\nexport const BodyTextStyled = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: center;\n margin-bottom: 20px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n justify-content: center;\n gap: 8px;\n padding-bottom: 31px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { H1, H3, IconButton, Text } from 'src/app/components';\n\nexport const RestoreInfoModalStyled = styled.div`\n margin: 0 8px 16px 8px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 18px;\n text-align: center;\n`;\n\nexport const StepBlock = styled.div`\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const IconWrapper = styled.div`\n margin-bottom: 12px;\n`;\n\nexport const H3Styled = styled(H3)`\n text-align: center;\n margin-bottom: 4px;\n`;\n\nexport const TextStyled = styled(Text)`\n text-align: center;\n max-width: 352px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const CircleNumber = styled.div`\n width: 44px;\n height: 44px;\n border-radius: 20px;\n background-color: ${props => props.theme?.colors.icon.secondary};\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 12px;\n font-weight: 700;\n font-size: 22px;\n color: ${props => props.theme?.colors.text.primary};\n`;\n","import { Component } from 'solid-js';\nimport {\n RestoreInfoModalStyled,\n StyledIconButton,\n H1Styled,\n StepBlock,\n H3Styled,\n TextStyled,\n CircleNumber\n} from './style';\nimport { ScrollContainer } from 'src/app/components';\n\ninterface RestoreInfoModalProps {\n onBackClick: () => void;\n}\n\nexport const RestoreInfoModal: Component<RestoreInfoModalProps> = props => {\n return (\n <RestoreInfoModalStyled data-tc-wallets-modal-restore=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={props.onBackClick} />\n <H1Styled translationKey=\"walletModal.restoreInfoModal.title\">Restore</H1Styled>\n\n <ScrollContainer>\n <StepBlock>\n <CircleNumber>1</CircleNumber>\n <H3Styled translationKey=\"walletModal.restoreModal.step1.title\">\n Find your current recovery phrase\n </H3Styled>\n <TextStyled translationKey=\"walletModal.restoreModal.step1.text\">\n Open your wallet settings and locate the recovery phrase\n </TextStyled>\n </StepBlock>\n\n <StepBlock>\n <CircleNumber>2</CircleNumber>\n <H3Styled translationKey=\"walletModal.restoreModal.step2.title\">\n Copy your recovery phrase\n </H3Styled>\n <TextStyled translationKey=\"walletModal.restoreModal.step2.text\">\n Write it down or copy it to a safe place\n </TextStyled>\n </StepBlock>\n\n <StepBlock>\n <CircleNumber>3</CircleNumber>\n <H3Styled translationKey=\"walletModal.restoreModal.step3.title\">\n Restore in a supported wallet from the list below\n </H3Styled>\n <TextStyled translationKey=\"walletModal.restoreModal.step3.text\">\n Enter the recovery phrase to access your wallet\n </TextStyled>\n </StepBlock>\n </ScrollContainer>\n </RestoreInfoModalStyled>\n );\n};\n","import {\n Component,\n createMemo,\n createSignal,\n // For,\n Match,\n // Show,\n Switch\n} from 'solid-js';\nimport {\n DesktopFeatureNotSupportModalStyled,\n TitleStyled,\n DescriptionStyled,\n // WalletsContainerStyled,\n ErrorIconStyled,\n DisconnectButtonStyled,\n // RestoreWalletLinkStyled,\n StyledIconButton,\n BodyTextStyled,\n Spacer,\n ButtonsContainerStyled,\n H1Styled\n} from './style';\n\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport {\n // FourWalletsItem,\n // WalletLabeledItem,\n Button,\n Link,\n LinkIcon\n} from 'src/app/components';\nimport { checkRequiredWalletFeatures, Wallet } from '@tonconnect/sdk';\nimport { RestoreInfoModal } from './restore-info-modal';\nimport { ChooseSupportedFeatureWalletsModal } from 'src/models/wallets-modal';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\n\ninterface DesktopFeatureNotSupportModalProps {\n walletsList: UIWalletInfo[];\n currentWallet: Wallet;\n walletsModalState: ChooseSupportedFeatureWalletsModal;\n onSelect: (walletInfo: UIWalletInfo) => void;\n onSelectAllWallets: () => void;\n onDisconnect: () => Promise<void>;\n onClose: () => void;\n}\n\nexport const DesktopFeatureNotSupportModal: Component<\n DesktopFeatureNotSupportModalProps\n> = props => {\n const [selectedWallet, setSelectedWallet] = createSignal<UIWalletInfo | null>(null);\n const [infoModalOpen, setInfoModalOpen] = createSignal(false);\n\n // const supportedWallets = createMemo(() => {\n // const requiredFeature = props.walletsModalState.requiredFeature;\n // const requiredFeatures = requiredFeature\n // ? { [requiredFeature.featureName]: requiredFeature.value }\n // : {};\n //\n // return props.walletsList.filter(\n // wallet =>\n // wallet.isSupportRequiredFeatures &&\n // wallet.features &&\n // checkRequiredWalletFeatures(wallet.features, requiredFeatures)\n // );\n // });\n\n const currentWalletUI = createMemo(() =>\n props.walletsList.find(\n wallet =>\n wallet.appName === props.currentWallet.device.appName ||\n wallet.name === props.currentWallet.device.appName\n )\n );\n\n const currentWalletName = createMemo(() => {\n const appName = currentWalletUI()?.appName ?? props.currentWallet.device.appName;\n if (appName === AT_WALLET_APP_NAME) {\n return 'Wallet in Telegram';\n }\n\n return currentWalletUI()?.name ?? props.currentWallet.device.appName;\n });\n\n const currentWalletVersionNotSupported = createMemo(() => {\n const currentWalletUIVar = currentWalletUI();\n if (!currentWalletUIVar?.features) {\n return false;\n }\n\n const requiredFeature = props.walletsModalState.requiredFeature;\n const requiredFeatures = requiredFeature\n ? { [requiredFeature.featureName]: requiredFeature.value }\n : {};\n\n const validInList = checkRequiredWalletFeatures(\n currentWalletUIVar.features,\n requiredFeatures\n );\n\n const validCurrentWallet = checkRequiredWalletFeatures(\n props.currentWallet.device.features,\n requiredFeatures\n );\n\n return validInList && !validCurrentWallet;\n });\n\n // const visibleWallets = createMemo(() => supportedWallets().slice(0, 3), null);\n\n // const fourWalletsItem = createMemo(\n // () =>\n // supportedWallets()\n // .filter(wallet => !visibleWallets().find(w => w.appName === wallet.appName))\n // .slice(0, 4),\n // null\n // );\n //\n // const handleSelect = (wallet: UIWalletInfo): void => {\n // setSelectedWallet(wallet);\n // };\n\n const handleDisconnect = async (): Promise<void> => {\n await props.onDisconnect();\n props.onSelect(selectedWallet()!);\n };\n\n return (\n <DesktopFeatureNotSupportModalStyled>\n <Switch>\n <Match when={infoModalOpen()}>\n <RestoreInfoModal onBackClick={() => setInfoModalOpen(false)} />\n </Match>\n <Match when={selectedWallet()}>\n <Spacer />\n <DesktopFeatureNotSupportModalStyled>\n <StyledIconButton icon=\"arrow\" onClick={() => setSelectedWallet(null)} />\n <TitleStyled translationKey=\"walletModal.featureNotSupported.disconnect.title\">\n Confirm Disconnect\n </TitleStyled>\n\n <DescriptionStyled\n translationKey=\"walletModal.featureNotSupported.disconnect.description\"\n translationValues={{ name: selectedWallet()!.name }}\n >\n You will be disconnected from your current wallet and redirected to\n connect {selectedWallet()?.name}.\n </DescriptionStyled>\n\n <DisconnectButtonStyled onClick={() => handleDisconnect()}>\n <Translation translationKey=\"walletModal.featureNotSupported.disconnect.button\">\n Disconnect\n </Translation>\n </DisconnectButtonStyled>\n </DesktopFeatureNotSupportModalStyled>\n </Match>\n <Match when={currentWalletVersionNotSupported()}>\n <H1Styled>{currentWalletName()}</H1Styled>\n <ErrorIconStyled size=\"s\" />\n <BodyTextStyled\n translationKey=\"walletModal.featureNotSupported.version.description\"\n translationValues={{ name: currentWalletName() }}\n >\n Your current version of {currentWalletName()} or wallet contract type\n doesn't support the required features. Please update it to continue.\n </BodyTextStyled>\n\n <ButtonsContainerStyled>\n <Link href={currentWalletUI()!.aboutUrl} blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.featureNotSupported.version.updateButton\"\n translationValues={{ name: currentWalletName() }}\n >\n Update {currentWalletName()}\n </Translation>\n </Button>\n </Link>\n <Link href=\"https://tonkeeper.helpscoutdocs.com/article/102-w5\" blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation translationKey=\"walletModal.featureNotSupported.version.aboutW5\">\n About W5\n </Translation>\n </Button>\n </Link>\n </ButtonsContainerStyled>\n </Match>\n <Match when={true}>\n <Spacer />\n\n <ErrorIconStyled size=\"s\" />\n\n <TitleStyled\n translationKey=\"walletModal.featureNotSupported.wallet.title\"\n translationValues={{ name: currentWalletName() }}\n >\n {currentWalletName()} doesn’t support the requested action\n </TitleStyled>\n\n <Spacer />\n {/*<DescriptionStyled>*/}\n {/* <Translation translationKey=\"walletModal.featureNotSupported.wallet.description\">*/}\n {/* Install a supported wallet from the list below, restore it with your*/}\n {/* recovery phrase, then connect it and try again.*/}\n {/* </Translation>*/}\n {/* */}\n {/* <RestoreWalletLinkStyled onClick={() => setInfoModalOpen(true)}>*/}\n {/* <Translation translationKey=\"walletModal.featureNotSupported.wallet.info\">*/}\n {/* Learn how to restore your wallet*/}\n {/* </Translation>*/}\n {/* </RestoreWalletLinkStyled>*/}\n {/*</DescriptionStyled>*/}\n\n {/*<WalletsContainerStyled>*/}\n {/* <For each={visibleWallets()}>*/}\n {/* {wallet => (*/}\n {/* <li>*/}\n {/* <WalletLabeledItem*/}\n {/* wallet={wallet}*/}\n {/* onClick={() => handleSelect(wallet)}*/}\n {/* />*/}\n {/* </li>*/}\n {/* )}*/}\n {/* </For>*/}\n {/* <Show when={fourWalletsItem().length > 0}>*/}\n {/* <FourWalletsItem*/}\n {/* labelLine1=\"View all\"*/}\n {/* labelLine2=\"wallets\"*/}\n {/* images={fourWalletsItem().map(i => i.imageUrl)}*/}\n {/* onClick={() => props.onSelectAllWallets()}*/}\n {/* />*/}\n {/* </Show>*/}\n {/*</WalletsContainerStyled>*/}\n </Match>\n </Switch>\n </DesktopFeatureNotSupportModalStyled>\n );\n};\n","import {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyInjected,\n WalletMissingRequiredFeaturesError,\n TonConnectError,\n Wallet,\n WalletInfoRemote,\n checkRequiredWalletFeatures,\n WalletInfo\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { getWalletsModalIsOpened, walletsModalState } from 'src/app/state/modals-state';\nimport { H1Styled, LoaderContainerStyled, StyledModal } from './style';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { applyWalletsListConfiguration, eqWalletName } from 'src/app/utils/wallets';\nimport { isMobile, updateIsMobile } from 'src/app/hooks/isMobile';\nimport { AllWalletsListModal } from 'src/app/views/modals/wallets-modal/all-wallets-list-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { LoadableReady } from 'src/models/loadable';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { DesktopConnectionModal } from 'src/app/views/modals/wallets-modal/desktop-connection-modal';\nimport { InfoModal } from 'src/app/views/modals/wallets-modal/info-modal';\nimport { MobileConnectionModal } from 'src/app/views/modals/wallets-modal/mobile-connection-modal';\nimport { MobileUniversalModal } from 'src/app/views/modals/wallets-modal/mobile-universal-modal';\nimport { DesktopUniversalModal } from 'src/app/views/modals/wallets-modal/desktop-universal-modal';\nimport { Dynamic } from 'solid-js/web';\nimport { WalletsModalCloseReason } from 'src/models';\nimport { DesktopFeatureNotSupportModal } from './feature-not-supoprt-modal';\nimport { widgetController } from 'src/app/widget-controller';\nimport { ChooseSupportedFeatureWalletsModal } from 'src/models/wallets-modal';\n\nexport const WalletsModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n createEffect(() => {\n if (getWalletsModalIsOpened()) {\n updateIsMobile();\n } else {\n setSelectedWalletInfo(null);\n setSelectedTab('universal');\n setInfoTab(false);\n }\n });\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext);\n const [fetchedWalletsList] = createResource(() => tonConnectUI!.getWallets());\n\n const [selectedWalletInfo, setSelectedWalletInfo] = createSignal<UIWalletInfo | null>(null);\n const [selectedWalletError, setSelectedWalletError] = createSignal<\n 'missing-features' | 'not-supported' | null\n >(null);\n const [selectedTab, setSelectedTab] = createSignal<'universal' | 'all-wallets'>('universal');\n const [infoTab, setInfoTab] = createSignal(false);\n\n const walletsModalIsWalletNotSupportFeature = createMemo(() => {\n const state = walletsModalState();\n return 'type' in state && state.type === 'wallet-not-support-feature';\n });\n\n const walletsList = createMemo<UIWalletInfo[] | null>(() => {\n if (fetchedWalletsList.state !== 'ready') {\n return null;\n }\n\n let walletsList = applyWalletsListConfiguration(\n fetchedWalletsList(),\n appState.walletsListConfiguration\n );\n\n const injectedWallets: WalletInfo[] = walletsList.filter(isWalletInfoCurrentlyInjected);\n const notInjectedWallets = walletsList.filter(w => !isWalletInfoCurrentlyInjected(w));\n walletsList = (injectedWallets || []).concat(notInjectedWallets);\n\n const preferredWalletAppName = appState.preferredWalletAppName;\n const preferredWallet = walletsList.find(item =>\n eqWalletName(item, preferredWalletAppName)\n );\n const someWalletsWithSameName =\n walletsList.filter(item => eqWalletName(item, preferredWalletAppName)).length >= 2;\n if (preferredWalletAppName && preferredWallet && !someWalletsWithSameName) {\n walletsList = [\n { ...preferredWallet, isPreferred: true } as WalletInfo & {\n isPreferred?: boolean;\n }\n ].concat(walletsList.filter(item => !eqWalletName(item, preferredWalletAppName)));\n }\n\n const atWallet = walletsList.find(item => eqWalletName(item, AT_WALLET_APP_NAME));\n if (atWallet) {\n walletsList = [atWallet].concat(\n walletsList.filter(item => !eqWalletName(item, AT_WALLET_APP_NAME))\n );\n }\n\n const walletsFeaturesRequested =\n tonConnectUI?.walletsRequiredFeatures ?? tonConnectUI?.walletsPreferredFeatures;\n\n const uiWallets = walletsList.map(wallet => ({\n ...wallet,\n isSupportRequiredFeatures: walletsFeaturesRequested\n ? checkRequiredWalletFeatures(wallet.features ?? [], walletsFeaturesRequested)\n : true\n }));\n\n return uiWallets;\n });\n\n const additionalRequestLoading = (): boolean =>\n appState.connectRequestParameters?.state === 'loading';\n\n const additionalRequest = createMemo(() => {\n if (additionalRequestLoading()) {\n return undefined;\n }\n\n return (appState.connectRequestParameters as LoadableReady<ConnectAdditionalRequest>)\n ?.value;\n });\n\n const onClose = (closeReason: WalletsModalCloseReason): void => {\n tonConnectUI!.closeModal(closeReason);\n };\n\n const unsubscribe = connector.onStatusChange(\n (wallet: Wallet | null) => {\n if (wallet) {\n onClose('wallet-selected');\n }\n },\n err => {\n if (err instanceof WalletMissingRequiredFeaturesError) {\n const errorAppName = err.cause.connectEvent.device.appName.toLowerCase();\n const wallet = walletsList()?.find(w => w.appName.toLowerCase() === errorAppName);\n\n if (!wallet) {\n throw new TonConnectError('Wallet not found');\n }\n\n const walletErrorType = wallet.isSupportRequiredFeatures\n ? 'missing-features'\n : 'not-supported';\n setSelectedWalletError(walletErrorType);\n setSelectedWalletInfo(wallet);\n }\n }\n );\n\n const onSelectAllWallets = (): void => {\n setSelectedTab('all-wallets');\n };\n\n const onSelectUniversal = (): void => {\n setSelectedTab('universal');\n };\n\n const onSelectWallet = (wallet: UIWalletInfo): void => {\n setSelectedWalletInfo(wallet);\n widgetController.openWalletsModal();\n };\n\n const clearSelectedWalletInfo = (): void => {\n setSelectedWalletInfo(null);\n setSelectedWalletError(null);\n };\n\n onCleanup(() => {\n setSelectedWalletInfo(null);\n setSelectedWalletError(null);\n setInfoTab(false);\n });\n\n onCleanup(unsubscribe);\n\n return (\n <StyledModal\n opened={getWalletsModalIsOpened()}\n enableAndroidBackHandler={appState.enableAndroidBackHandler}\n onClose={() => onClose('action-cancelled')}\n onClickQuestion={() => setInfoTab(v => !v)}\n showFooter={!walletsModalIsWalletNotSupportFeature()}\n data-tc-wallets-modal-container=\"true\"\n >\n <Show when={infoTab()}>\n <InfoModal onBackClick={() => setInfoTab(false)} />\n </Show>\n\n <Show when={!infoTab()}>\n <Show when={additionalRequestLoading() || !walletsList()}>\n <H1Styled translationKey=\"walletModal.loading\">\n Wallets list is loading\n </H1Styled>\n <LoaderContainerStyled>\n <LoaderIcon size=\"m\" />\n </LoaderContainerStyled>\n </Show>\n\n <Show when={!additionalRequestLoading() && walletsList()}>\n <Switch>\n <Match when={walletsModalIsWalletNotSupportFeature()}>\n <DesktopFeatureNotSupportModal\n walletsList={walletsList()!}\n currentWallet={tonConnectUI?.wallet as Wallet}\n onSelect={onSelectWallet}\n onSelectAllWallets={onSelectAllWallets}\n onDisconnect={() => connector.disconnect()}\n walletsModalState={\n walletsModalState() as ChooseSupportedFeatureWalletsModal\n }\n onClose={() => onClose('action-cancelled')}\n />\n </Match>\n <Match when={selectedWalletInfo()}>\n <Dynamic\n component={\n isMobile() ? MobileConnectionModal : DesktopConnectionModal\n }\n wallet={selectedWalletInfo()! as WalletInfoRemote}\n additionalRequest={additionalRequest()}\n onBackClick={clearSelectedWalletInfo}\n defaultError={selectedWalletError()}\n />\n </Match>\n <Match when={selectedTab() === 'universal'}>\n <Dynamic\n component={\n isMobile() ? MobileUniversalModal : DesktopUniversalModal\n }\n onSelect={setSelectedWalletInfo}\n walletsList={walletsList()!}\n additionalRequest={additionalRequest()!}\n onSelectAllWallets={onSelectAllWallets}\n />\n </Match>\n <Match when={selectedTab() === 'all-wallets'}>\n <AllWalletsListModal\n walletsList={walletsList()!}\n featureCheckMode={\n tonConnectUI?.walletsRequiredFeatures ? 'strict' : 'soft'\n }\n onBack={onSelectUniversal}\n onSelect={setSelectedWalletInfo}\n />\n </Match>\n </Switch>\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, LoaderIcon, Text } from 'src/app/components';\n\nexport const ActionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 8px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 16px;\n`;\n\nexport const TextStyled = styled(Text)`\n font-weight: 510;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n max-width: 250px;\n\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n min-width: 112px;\n margin-top: 32px;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 16px;\n width: 16px;\n`;\n\nexport const ButtonStyled = styled(Button)`\n margin-top: 32px;\n`;\n","import { Component, createEffect, createSignal, JSXElement, Show, useContext } from 'solid-js';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ActionModalStyled,\n ButtonStyled,\n H1Styled,\n LoaderButtonStyled,\n LoaderIconStyled,\n TextStyled\n} from './style';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { isTelegramUrl } from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { action } from 'src/app/state/modals-state';\nimport { isInTMA } from 'src/app/utils/tma-api';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\n\ninterface ActionModalProps extends WithDataAttributes {\n headerTranslationKey: string;\n headerTranslationValues?: Record<string, string>;\n icon: JSXElement;\n textTranslationKey?: string;\n textTranslationValues?: Record<string, string>;\n onClose: () => void;\n showButton?: 'close' | 'open-wallet';\n}\n\nexport const ActionModal: Component<ActionModalProps> = props => {\n const dataAttrs = useDataAttributes(props);\n const tonConnectUI = useContext(TonConnectUiContext);\n const [firstClick, setFirstClick] = createSignal(true);\n const [sent, setSent] = createSignal(false);\n const [signed, setSigned] = createSignal(false);\n const [canceled, setCanceled] = createSignal(false);\n\n createEffect(() => {\n const currentAction = action();\n\n setSent(\n !!currentAction &&\n (('sent' in currentAction && currentAction.sent) ||\n currentAction.name === 'transaction-sent')\n );\n setSigned(\n !!currentAction &&\n (('signed' in currentAction && currentAction.signed) ||\n currentAction.name === 'data-signed')\n );\n setCanceled(\n !!currentAction &&\n (currentAction.name === 'transaction-canceled' ||\n currentAction.name === 'sign-data-canceled')\n );\n });\n\n let universalLink: string | undefined;\n if (\n tonConnectUI?.wallet &&\n 'universalLink' in tonConnectUI.wallet &&\n (tonConnectUI.wallet.openMethod === 'universal-link' ||\n (isTelegramUrl(tonConnectUI.wallet.universalLink) && isInTMA()))\n ) {\n universalLink = tonConnectUI.wallet.universalLink;\n }\n\n let deepLink: string | undefined;\n if (\n tonConnectUI?.wallet &&\n 'deepLink' in tonConnectUI.wallet &&\n (tonConnectUI.wallet.openMethod === 'custom-deeplink' ||\n (isTelegramUrl(tonConnectUI.wallet.deepLink) && isInTMA()))\n ) {\n deepLink = tonConnectUI.wallet.deepLink;\n }\n\n const onOpenWallet = (): void => {\n const currentAction = action()!;\n const returnStrategy =\n 'returnStrategy' in currentAction\n ? currentAction.returnStrategy\n : appState.returnStrategy;\n\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n if (isTelegramUrl(universalLink)) {\n redirectToTelegram(universalLink, {\n returnStrategy: returnStrategy,\n twaReturnUrl:\n 'twaReturnUrl' in currentAction\n ? currentAction.twaReturnUrl\n : appState.twaReturnUrl,\n forceRedirect: forceRedirect\n });\n } else {\n redirectToWallet(\n universalLink!,\n deepLink,\n {\n returnStrategy: returnStrategy,\n forceRedirect: forceRedirect\n },\n () => {}\n );\n }\n };\n\n return (\n <ActionModalStyled {...dataAttrs}>\n {props.icon}\n <H1Styled\n translationKey={props.headerTranslationKey}\n translationValues={props.headerTranslationValues}\n />\n <TextStyled\n translationKey={props.textTranslationKey}\n translationValues={props.textTranslationValues}\n />\n <Show\n when={\n !sent() &&\n !signed() &&\n !canceled() &&\n ((props.showButton === 'open-wallet' && universalLink) ||\n props.showButton !== 'open-wallet')\n }\n >\n <LoaderButtonStyled disabled={true} data-tc-connect-button-loading=\"true\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={sent() || signed()}>\n <Show when={props.showButton !== 'open-wallet'}>\n <ButtonStyled onClick={() => props.onClose()}>\n <Translation translationKey=\"common.close\">Close</Translation>\n </ButtonStyled>\n </Show>\n <Show when={props.showButton === 'open-wallet' && universalLink}>\n <ButtonStyled onClick={onOpenWallet}>\n <Translation translationKey=\"common.openWallet\">Open wallet</Translation>\n </ButtonStyled>\n </Show>\n </Show>\n </ActionModalStyled>\n );\n};\n","import { Component, useContext } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmTransactionModalProps {\n onClose: () => void;\n}\n\nexport const ConfirmTransactionModal: Component<ConfirmTransactionModalProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = (): string =>\n tonConnectUI!.wallet && 'name' in tonConnectUI!.wallet\n ? tonConnectUI!.wallet.name\n : t('common.yourWallet', {}, 'Your wallet');\n\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.confirmTransaction.header\"\n headerTranslationValues={{ name: name() }}\n textTranslationKey=\"actionModal.confirmTransaction.text\"\n icon={<LoaderIcon size=\"m\" />}\n onClose={() => props.onClose()}\n showButton=\"open-wallet\"\n data-tc-confirm-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIcon } from 'src/app/components';\n\ninterface TransactionCanceledModalProps {\n onClose: () => void;\n}\n\nexport const TransactionCanceledModal: Component<TransactionCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionCanceled.header\"\n textTranslationKey=\"actionModal.transactionCanceled.text\"\n icon={<ErrorIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-transaction-canceled-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIcon } from 'src/app/components';\n\ninterface TransactionSentModalProps {\n onClose: () => void;\n}\n\nexport const TransactionSentModal: Component<TransactionSentModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionSent.header\"\n textTranslationKey=\"actionModal.transactionSent.text\"\n icon={<SuccessIcon size=\"m\" />}\n showButton=\"open-wallet\"\n onClose={() => props.onClose()}\n data-tc-transaction-sent-modal=\"true\"\n />\n );\n};\n","import { Component, useContext } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmSignDataModalProps {\n onClose: () => void;\n}\n\nexport const ConfirmSignDataModal: Component<ConfirmSignDataModalProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = (): string =>\n tonConnectUI!.wallet && 'name' in tonConnectUI!.wallet\n ? tonConnectUI!.wallet.name\n : t('common.yourWallet', {}, 'Your wallet');\n\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.signData.header\"\n headerTranslationValues={{ name: name() }}\n textTranslationKey=\"actionModal.signData.text\"\n icon={<LoaderIcon size=\"m\" />}\n onClose={() => props.onClose()}\n showButton=\"open-wallet\"\n data-tc-sign-data-confirm-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIcon } from 'src/app/components';\n\ninterface SignDataCanceledModalProps {\n onClose: () => void;\n}\n\nexport const SignDataCanceledModal: Component<SignDataCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.signDataCanceled.header\"\n icon={<ErrorIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-sign-data-canceled-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIcon } from 'src/app/components';\n\ninterface DataSignedModalProps {\n onClose: () => void;\n}\n\nexport const DataSignedModal: Component<DataSignedModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.dataSigned.header\"\n icon={<SuccessIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-data-signed-modal=\"true\"\n />\n );\n};\n","import { Component, Match, Switch } from 'solid-js';\nimport { Modal } from 'src/app/components';\nimport { appState } from 'src/app/state/app.state';\nimport { action, setAction } from 'src/app/state/modals-state';\nimport { ConfirmTransactionModal } from 'src/app/views/modals/actions-modal/confirm-transaction-modal';\nimport { TransactionCanceledModal } from 'src/app/views/modals/actions-modal/transaction-canceled-modal';\nimport { TransactionSentModal } from 'src/app/views/modals/actions-modal/transaction-sent-modal';\nimport { ConfirmSignDataModal } from './confirm-sign-data-modal';\nimport { SignDataCanceledModal } from './sign-data-canceled-modal';\nimport { DataSignedModal } from './data-signed-modal';\n\nexport const ActionsModal: Component = () => {\n return (\n <Modal\n opened={action() !== null && action()?.openModal === true}\n enableAndroidBackHandler={appState.enableAndroidBackHandler}\n onClose={() => setAction(null)}\n showFooter={false}\n data-tc-actions-modal-container=\"true\"\n >\n <Switch>\n <Match when={action()!.name === 'transaction-sent'}>\n <TransactionSentModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'transaction-canceled'}>\n <TransactionCanceledModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'confirm-transaction'}>\n <ConfirmTransactionModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'data-signed'}>\n <DataSignedModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'sign-data-canceled'}>\n <SignDataCanceledModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'confirm-sign-data'}>\n <ConfirmSignDataModal onClose={() => setAction(null)} />\n </Match>\n </Switch>\n </Modal>\n );\n};\n","import { ConnectAdditionalRequest } from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createSignal,\n onCleanup,\n Show,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n getSingleWalletModalIsOpened,\n getSingleWalletModalWalletInfo\n} from 'src/app/state/modals-state';\nimport { H1Styled, LoaderContainerStyled, StyledModal } from './style';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { isMobile, updateIsMobile } from 'src/app/hooks/isMobile';\nimport { LoaderIcon } from 'src/app/components';\nimport { LoadableReady } from 'src/models/loadable';\nimport { DesktopConnectionModal } from 'src/app/views/modals/wallets-modal/desktop-connection-modal';\nimport { InfoModal } from 'src/app/views/modals/wallets-modal/info-modal';\nimport { MobileConnectionModal } from 'src/app/views/modals/wallets-modal/mobile-connection-modal';\nimport { Dynamic } from 'solid-js/web';\nimport { WalletsModalCloseReason } from 'src/models';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\n\nexport const SingleWalletModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n createEffect(() => {\n if (getSingleWalletModalIsOpened()) {\n updateIsMobile();\n }\n });\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [infoTab, setInfoTab] = createSignal(false);\n\n const additionalRequestLoading = (): boolean =>\n appState.connectRequestParameters?.state === 'loading';\n\n const additionalRequest = createMemo(() => {\n if (additionalRequestLoading()) {\n return undefined;\n }\n\n return (appState.connectRequestParameters as LoadableReady<ConnectAdditionalRequest>)\n ?.value;\n });\n\n const onClose = (closeReason: WalletsModalCloseReason): void => {\n tonConnectUI.closeSingleWalletModal(closeReason);\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (wallet) {\n onClose('wallet-selected');\n }\n });\n\n onCleanup(unsubscribe);\n\n onCleanup(() => {\n setInfoTab(false);\n });\n\n return (\n <StyledModal\n opened={getSingleWalletModalIsOpened()}\n enableAndroidBackHandler={appState.enableAndroidBackHandler}\n onClose={() => onClose('action-cancelled')}\n onClickQuestion={() => setInfoTab(v => !v)}\n showFooter={true}\n data-tc-wallets-modal-container=\"true\"\n >\n <Show when={infoTab()}>\n <InfoModal onBackClick={() => setInfoTab(false)} />\n </Show>\n\n <Show when={!infoTab()}>\n <Show when={additionalRequestLoading()}>\n <H1Styled translationKey=\"walletModal.loading\">\n Wallets list is loading\n </H1Styled>\n <LoaderContainerStyled>\n <LoaderIcon size=\"m\" />\n </LoaderContainerStyled>\n </Show>\n\n <Show when={!additionalRequestLoading()}>\n <Dynamic\n component={isMobile() ? MobileConnectionModal : DesktopConnectionModal}\n wallet={getSingleWalletModalWalletInfo()!} // TODO: remove non-null assertion\n additionalRequest={additionalRequest()}\n onBackClick={() => {}}\n backDisabled={true}\n />\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import './global.d.ts';\nimport { Show } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport { Dynamic, Portal } from 'solid-js/web';\nimport { ThemeProvider } from 'solid-styled-components';\nimport { i18nDictionary } from 'src/app/i18n';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { themeState } from 'src/app/state/theme-state';\nimport { GlobalStyles, globalStylesTag } from 'src/app/styles/global-styles';\nimport { AccountButton } from 'src/app/views/account-button';\nimport { ActionsModal, WalletsModal } from 'src/app/views/modals';\nimport './styles/style.d.ts';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { createI18nContext, I18nContext } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { defineStylesRoot, fixMobileSafariActiveTransition } from 'src/app/utils/web-api';\nimport { SingleWalletModal } from 'src/app/views/modals/wallets-modal/single-wallet-modal';\n\nexport type AppProps = {\n tonConnectUI: TonConnectUI;\n};\n\nconst App: Component<AppProps> = props => {\n const translations = createI18nContext(i18nDictionary, appState.language);\n\n defineStylesRoot();\n fixMobileSafariActiveTransition();\n\n return (\n <I18nContext.Provider value={translations}>\n <TonConnectUiContext.Provider value={props.tonConnectUI}>\n <ConnectorContext.Provider value={appState.connector}>\n <GlobalStyles />\n <ThemeProvider theme={themeState}>\n <Show when={appState.buttonRootId}>\n <Portal mount={document.getElementById(appState.buttonRootId!)!}>\n <AccountButton />\n </Portal>\n </Show>\n <Dynamic component={globalStylesTag}>\n <WalletsModal />\n <SingleWalletModal />\n <ActionsModal />\n </Dynamic>\n </ThemeProvider>\n </ConnectorContext.Provider>\n </TonConnectUiContext.Provider>\n </I18nContext.Provider>\n );\n};\n\nexport default App;\n","import { render } from 'solid-js/web';\n\nimport {\n Action,\n lastSelectedWalletInfo,\n setAction,\n setLastSelectedWalletInfo,\n setSingleWalletModalState,\n setWalletsModalState\n} from 'src/app/state/modals-state';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport App from './App';\nimport { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\nimport { WalletsModalCloseReason } from 'src/models';\nimport { WalletInfoRemote, WalletNotSupportFeatureError } from '@tonconnect/sdk';\n\nexport const widgetController = {\n openWalletsModal: (): void =>\n void setTimeout(() =>\n setWalletsModalState({\n status: 'opened',\n closeReason: null\n })\n ),\n closeWalletsModal: (reason: WalletsModalCloseReason): void =>\n void setTimeout(() =>\n setWalletsModalState({\n status: 'closed',\n closeReason: reason\n })\n ),\n openSingleWalletModal: (walletInfo: WalletInfoRemote): void => {\n void setTimeout(() =>\n setSingleWalletModalState({\n status: 'opened',\n closeReason: null,\n walletInfo: walletInfo\n })\n );\n },\n closeSingleWalletModal: (reason: WalletsModalCloseReason): void =>\n void setTimeout(() =>\n setSingleWalletModalState({\n status: 'closed',\n closeReason: reason\n })\n ),\n openWalletNotSupportFeatureModal: (cause: WalletNotSupportFeatureError['cause']): void =>\n void setTimeout(() =>\n setWalletsModalState({\n status: 'opened',\n closeReason: null,\n type: 'wallet-not-support-feature',\n requiredFeature: cause.requiredFeature\n })\n ),\n setAction: (action: Action): void => void setTimeout(() => setAction(action)),\n clearAction: (): void => void setTimeout(() => setAction(null)),\n getSelectedWalletInfo: ():\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null => lastSelectedWalletInfo(),\n removeSelectedWalletInfo: (): void => setLastSelectedWalletInfo(null),\n renderApp: (root: string, tonConnectUI: TonConnectUI): (() => void) =>\n render(\n () => <App tonConnectUI={tonConnectUI} />,\n document.getElementById(root) as HTMLElement\n )\n};\n","import { setLastSelectedWalletInfo, walletsModalState } from 'src/app/state/modals-state';\nimport { createEffect } from 'solid-js';\nimport {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyEmbedded,\n ITonConnect,\n WalletInfoCurrentlyEmbedded\n} from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { widgetController } from 'src/app/widget-controller';\nimport { WalletsModal, WalletsModalCloseReason, WalletsModalState } from 'src/models/wallets-modal';\nimport { isInTMA, sendExpand } from 'src/app/utils/tma-api';\nimport { TonConnectUITracker } from 'src/tracker/ton-connect-ui-tracker';\n\ninterface WalletsModalManagerCreateOptions {\n /**\n * TonConnect instance.\n */\n connector: ITonConnect;\n\n /**\n * Set connect request parameters callback.\n */\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n */\n tracker: TonConnectUITracker;\n}\n\n/**\n * Manages the modal window state.\n */\nexport class WalletsModalManager implements WalletsModal {\n /**\n * TonConnect instance.\n * @internal\n */\n private readonly connector: ITonConnect;\n\n /**\n * Callback to call when the connection parameters are received.\n * @internal\n */\n private readonly setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * List of subscribers to the modal window state changes.\n * @internal\n */\n private consumers: Array<(state: WalletsModalState) => void> = [];\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n * @internal\n */\n private readonly tracker: TonConnectUITracker;\n\n /**\n * Current modal window state.\n */\n public state: WalletsModalState = walletsModalState();\n\n constructor(options: WalletsModalManagerCreateOptions) {\n this.connector = options.connector;\n this.tracker = options.tracker;\n this.setConnectRequestParametersCallback = options.setConnectRequestParametersCallback;\n\n createEffect(() => {\n const state = walletsModalState();\n this.state = state;\n this.consumers.forEach(consumer => consumer(state));\n });\n }\n\n /**\n * Opens the modal window.\n */\n public async open(): Promise<void> {\n this.tracker.trackConnectionStarted();\n const walletsList = await this.connector.getWallets();\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n\n if (embeddedWallet) {\n return this.connectEmbeddedWallet(embeddedWallet);\n } else {\n return this.openWalletsModal();\n }\n }\n\n /**\n * Closes the modal window.\n * @default 'action-cancelled'\n */\n public close(reason: WalletsModalCloseReason = 'action-cancelled'): void {\n if (reason === 'action-cancelled') {\n this.tracker.trackConnectionError('Connection was cancelled');\n }\n widgetController.closeWalletsModal(reason);\n }\n\n /**\n * Subscribe to the modal window state changes, returns unsubscribe function.\n */\n public onStateChange(onChange: (state: WalletsModalState) => void): () => void {\n this.consumers.push(onChange);\n\n return () => {\n this.consumers = this.consumers.filter(consumer => consumer !== onChange);\n };\n }\n\n /**\n * Initiates a connection with an embedded wallet.\n * @param embeddedWallet - Information about the embedded wallet to connect to.\n * @internal\n */\n private connectEmbeddedWallet(embeddedWallet: WalletInfoCurrentlyEmbedded): void {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.setConnectRequestParametersCallback(connect);\n } else {\n connect(additionalRequest?.value);\n }\n }\n\n /**\n * Opens the modal window to connect to an external wallet, and waits when modal window is opened.\n * @internal\n */\n private async openWalletsModal(): Promise<void> {\n if (isInTMA()) {\n sendExpand();\n }\n\n widgetController.openWalletsModal();\n\n return new Promise<void>(resolve => {\n const unsubscribe = this.onStateChange(state => {\n const { status } = state;\n if (status === 'opened') {\n unsubscribe();\n resolve();\n }\n });\n });\n }\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createEffect } from 'solid-js';\nimport { action, Action } from 'src/app/state/modals-state';\n\ninterface TransactionModalManagerCreateOptions {\n /**\n * TonConnect instance.\n */\n connector: ITonConnect;\n}\n\n/**\n * Manages the transaction modal window state.\n */\nexport class TransactionModalManager {\n /**\n * TonConnect instance.\n * @internal\n */\n private readonly connector: ITonConnect;\n\n /**\n * List of subscribers to the modal window state changes.\n * @internal\n */\n private consumers: Array<(action: Action | null) => void> = [];\n\n constructor(options: TransactionModalManagerCreateOptions) {\n this.connector = options.connector;\n\n createEffect(() => {\n const currentAction = action();\n this.consumers.forEach(consumer => consumer(currentAction));\n });\n }\n\n /**\n * Subscribe to the modal window state changes, returns unsubscribe function.\n */\n public onStateChange(consumer: (action: Action | null) => void): () => void {\n this.consumers.push(consumer);\n\n return () => {\n this.consumers = this.consumers.filter(c => c !== consumer);\n };\n }\n}\n","import { setLastSelectedWalletInfo, singleWalletModalState } from 'src/app/state/modals-state';\nimport { createEffect } from 'solid-js';\nimport {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyEmbedded,\n isWalletInfoRemote,\n ITonConnect,\n WalletInfoCurrentlyEmbedded,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { widgetController } from 'src/app/widget-controller';\nimport { SingleWalletModal, SingleWalletModalState } from 'src/models/single-wallet-modal';\nimport { isInTMA, sendExpand } from 'src/app/utils/tma-api';\nimport { TonConnectUIError } from 'src/errors';\nimport { applyWalletsListConfiguration, eqWalletName } from 'src/app/utils/wallets';\nimport { TonConnectUITracker } from 'src/tracker/ton-connect-ui-tracker';\nimport { WalletsModalCloseReason } from 'src/models';\n\ninterface SingleWalletModalManagerCreateOptions {\n /**\n * TonConnect instance.\n */\n connector: ITonConnect;\n\n /**\n * Set connect request parameters callback.\n */\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n */\n tracker: TonConnectUITracker;\n}\n\n/**\n * Manages the modal window state.\n */\nexport class SingleWalletModalManager implements SingleWalletModal {\n /**\n * TonConnect instance.\n * @internal\n */\n private readonly connector: ITonConnect;\n\n /**\n * Callback to call when the connection parameters are received.\n * @internal\n */\n private readonly setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * List of subscribers to the modal window state changes.\n * @internal\n */\n private consumers: Array<(state: SingleWalletModalState) => void> = [];\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n * @internal\n */\n private readonly tracker: TonConnectUITracker;\n\n /**\n * Current modal window state.\n */\n public state: SingleWalletModalState = singleWalletModalState();\n\n constructor(options: SingleWalletModalManagerCreateOptions) {\n this.connector = options.connector;\n this.tracker = options.tracker;\n this.setConnectRequestParametersCallback = options.setConnectRequestParametersCallback;\n\n createEffect(() => {\n const state = singleWalletModalState();\n this.state = state;\n this.consumers.forEach(consumer => consumer(state));\n });\n }\n\n /**\n * Opens the modal window with the specified wallet.\n * @param wallet - Wallet app name.\n * @throws TonConnectUIError if the specified wallet is not found.\n */\n public async open(wallet: string): Promise<void> {\n this.tracker.trackConnectionStarted();\n\n const fetchedWalletsList = await this.connector.getWallets();\n const walletsList = applyWalletsListConfiguration(\n fetchedWalletsList,\n appState.walletsListConfiguration\n );\n\n // TODO: move to ITonConnect\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n const isEmbeddedWalletExist = !!embeddedWallet;\n if (isEmbeddedWalletExist) {\n return this.connectEmbeddedWallet(embeddedWallet);\n }\n\n // TODO: move to ITonConnect\n const externalWallets = walletsList.filter(isWalletInfoRemote);\n const externalWallet = externalWallets.find(walletInfo => eqWalletName(walletInfo, wallet));\n const isExternalWalletExist = !!externalWallet;\n if (isExternalWalletExist) {\n return this.openSingleWalletModal(externalWallet);\n }\n\n const error = `Trying to open modal window with unknown wallet \"${wallet}\".`;\n this.tracker.trackConnectionError(error);\n throw new TonConnectUIError(error);\n }\n\n /**\n * Closes the modal window.\n * @default 'action-cancelled'\n */\n public close(reason: WalletsModalCloseReason = 'action-cancelled'): void {\n if (reason === 'action-cancelled') {\n this.tracker.trackConnectionError('Connection was cancelled');\n }\n widgetController.closeSingleWalletModal('action-cancelled');\n }\n\n /**\n * Subscribe to the modal window state changes, returns unsubscribe function.\n */\n public onStateChange(onChange: (state: SingleWalletModalState) => void): () => void {\n this.consumers.push(onChange);\n\n return () => {\n this.consumers = this.consumers.filter(consumer => consumer !== onChange);\n };\n }\n\n /**\n * Initiates a connection with an embedded wallet.\n * @param embeddedWallet - Information about the embedded wallet to connect to.\n * @internal\n */\n private connectEmbeddedWallet(embeddedWallet: WalletInfoCurrentlyEmbedded): void {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.setConnectRequestParametersCallback(connect);\n } else {\n connect(additionalRequest?.value);\n }\n }\n\n /**\n * Opens the modal window to connect to a specified wallet, and waits when modal window is opened.\n */\n public async openSingleWalletModal(wallet: WalletInfoRemote): Promise<void> {\n if (isInTMA()) {\n sendExpand();\n }\n\n widgetController.openSingleWalletModal(wallet);\n\n return new Promise<void>(resolve => {\n const unsubscribe = this.onStateChange(state => {\n const { status } = state;\n if (status === 'opened') {\n unsubscribe();\n resolve();\n }\n });\n });\n }\n}\n","import {\n createConnectionCompletedEvent,\n createConnectionErrorEvent,\n createConnectionRestoringCompletedEvent,\n createConnectionRestoringErrorEvent,\n createConnectionRestoringStartedEvent,\n createConnectionStartedEvent,\n createDisconnectionEvent,\n createRequestVersionEvent,\n createResponseVersionEvent,\n createTransactionSentForSignatureEvent,\n createTransactionSignedEvent,\n createTransactionSigningFailedEvent,\n UserActionEvent\n} from './types';\nimport {\n BrowserEventDispatcher,\n createDataSentForSignatureEvent,\n createDataSignedEvent,\n createDataSigningFailedEvent,\n createVersionInfo,\n EventDispatcher,\n ResponseVersionEvent,\n Version,\n WithoutVersion\n} from '@tonconnect/sdk';\n\nexport type TonConnectUITrackerOptions = {\n /**\n * Event dispatcher to track user actions.\n * @default new BrowserEventDispatcher()\n */\n eventDispatcher?: EventDispatcher<UserActionEvent> | null;\n /**\n * TonConnect UI version.\n */\n tonConnectUiVersion: string;\n};\n\n/**\n * Tracker for TonConnectUI user actions, such as transaction signing, connection, etc.\n *\n * List of events:\n * * `connection-started`: when a user starts connecting a wallet.\n * * `connection-completed`: when a user successfully connected a wallet.\n * * `connection-error`: when a user cancels a connection or there is an error during the connection process.\n * * `connection-restoring-started`: when the dApp starts restoring a connection.\n * * `connection-restoring-completed`: when the dApp successfully restores a connection.\n * * `connection-restoring-error`: when the dApp fails to restore a connection.\n * * `disconnection`: when a user starts disconnecting a wallet.\n * * `transaction-sent-for-signature`: when a user sends a transaction for signature.\n * * `transaction-signed`: when a user successfully signs a transaction.\n * * `transaction-signing-failed`: when a user cancels transaction signing or there is an error during the signing process.\n * * `sign-data-request-initiated`: when a user initiates a data signing request.\n * * `sign-data-request-completed`: when a user successfully signs data.\n * * `sign-data-request-failed`: when a user cancels data signing or there is an error during the signing process.\n *\n * If you want to track user actions, you can subscribe to the window events with prefix `ton-connect-ui-`:\n *\n * @example\n * window.addEventListener('ton-connect-ui-transaction-sent-for-signature', (event) => {\n * console.log('Transaction init', event.detail);\n * });\n *\n * @internal\n */\nexport class TonConnectUITracker {\n /**\n * Event prefix for user actions.\n * @private\n */\n private readonly eventPrefix = 'ton-connect-ui-';\n\n /**\n * TonConnect UI version.\n */\n private readonly tonConnectUiVersion: string;\n\n /**\n * TonConnect SDK version.\n */\n private tonConnectSdkVersion: string | null = null;\n\n /**\n * Version of the library.\n */\n get version(): Version {\n return createVersionInfo({\n ton_connect_sdk_lib: this.tonConnectSdkVersion,\n ton_connect_ui_lib: this.tonConnectUiVersion\n });\n }\n\n /**\n * Event dispatcher to track user actions. By default, it uses `window.dispatchEvent` for browser environment.\n * @private\n */\n private readonly eventDispatcher: EventDispatcher<UserActionEvent>;\n\n constructor(options: TonConnectUITrackerOptions) {\n this.eventDispatcher = options?.eventDispatcher ?? new BrowserEventDispatcher();\n this.tonConnectUiVersion = options.tonConnectUiVersion;\n\n this.init().catch();\n }\n\n /**\n * Called once when the tracker is created and request version other libraries.\n */\n private async init(): Promise<void> {\n try {\n await this.setRequestVersionHandler();\n this.tonConnectSdkVersion = await this.requestTonConnectSdkVersion();\n } catch (e) {}\n }\n\n /**\n * Set request version handler.\n * @private\n */\n private async setRequestVersionHandler(): Promise<void> {\n await this.eventDispatcher.addEventListener('ton-connect-ui-request-version', async () => {\n await this.eventDispatcher.dispatchEvent(\n 'ton-connect-ui-response-version',\n createResponseVersionEvent(this.tonConnectUiVersion)\n );\n });\n }\n\n /**\n * Request TonConnect SDK version.\n * @private\n */\n private async requestTonConnectSdkVersion(): Promise<string> {\n return new Promise(async (resolve, reject) => {\n try {\n await this.eventDispatcher.addEventListener(\n 'ton-connect-response-version',\n (event: CustomEvent<ResponseVersionEvent>) => {\n resolve(event.detail.version);\n },\n { once: true }\n );\n await this.eventDispatcher.dispatchEvent(\n 'ton-connect-request-version',\n createRequestVersionEvent()\n );\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * Emit user action event to the window.\n * @param eventDetails\n * @private\n */\n private dispatchUserActionEvent(eventDetails: UserActionEvent): void {\n try {\n this.eventDispatcher\n ?.dispatchEvent(`${this.eventPrefix}${eventDetails.type}`, eventDetails)\n .catch();\n } catch (e) {}\n }\n\n /**\n * Track connection init event.\n * @param args\n */\n public trackConnectionStarted(\n ...args: WithoutVersion<Parameters<typeof createConnectionStartedEvent>>\n ): void {\n try {\n const event = createConnectionStartedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection success event.\n * @param args\n */\n public trackConnectionCompleted(\n ...args: WithoutVersion<Parameters<typeof createConnectionCompletedEvent>>\n ): void {\n try {\n const event = createConnectionCompletedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection error event.\n * @param args\n */\n public trackConnectionError(\n ...args: WithoutVersion<Parameters<typeof createConnectionErrorEvent>>\n ): void {\n try {\n const event = createConnectionErrorEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection restoring init event.\n * @param args\n */\n public trackConnectionRestoringStarted(\n ...args: WithoutVersion<Parameters<typeof createConnectionRestoringStartedEvent>>\n ): void {\n try {\n const event = createConnectionRestoringStartedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection restoring success event.\n * @param args\n */\n public trackConnectionRestoringCompleted(\n ...args: WithoutVersion<Parameters<typeof createConnectionRestoringCompletedEvent>>\n ): void {\n try {\n const event = createConnectionRestoringCompletedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection restoring error event.\n * @param args\n */\n public trackConnectionRestoringError(\n ...args: WithoutVersion<Parameters<typeof createConnectionRestoringErrorEvent>>\n ): void {\n try {\n const event = createConnectionRestoringErrorEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track disconnect event.\n * @param args\n */\n public trackDisconnection(\n ...args: WithoutVersion<Parameters<typeof createDisconnectionEvent>>\n ): void {\n try {\n const event = createDisconnectionEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track transaction init event.\n * @param args\n */\n public trackTransactionSentForSignature(\n ...args: WithoutVersion<Parameters<typeof createTransactionSentForSignatureEvent>>\n ): void {\n try {\n const event = createTransactionSentForSignatureEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track transaction signed event.\n * @param args\n */\n public trackTransactionSigned(\n ...args: WithoutVersion<Parameters<typeof createTransactionSignedEvent>>\n ): void {\n try {\n const event = createTransactionSignedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track transaction error event.\n * @param args\n */\n public trackTransactionSigningFailed(\n ...args: WithoutVersion<Parameters<typeof createTransactionSigningFailedEvent>>\n ): void {\n try {\n const event = createTransactionSigningFailedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track data sent for signature event.\n * @param args\n */\n public trackDataSentForSignature(\n ...args: WithoutVersion<Parameters<typeof createDataSentForSignatureEvent>>\n ): void {\n try {\n const event = createDataSentForSignatureEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track data signed event.\n * @param args\n */\n public trackDataSigned(\n ...args: WithoutVersion<Parameters<typeof createDataSignedEvent>>\n ): void {\n try {\n const event = createDataSignedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track data signing error event.\n * @param args\n */\n public trackDataSigningFailed(\n ...args: WithoutVersion<Parameters<typeof createDataSigningFailedEvent>>\n ): void {\n try {\n const event = createDataSigningFailedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n}\n","declare const TON_CONNECT_UI_VERSION: string;\n\nexport const tonConnectUiVersion: string = TON_CONNECT_UI_VERSION;\n","import type {\n Account,\n ConnectAdditionalRequest,\n RequiredFeatures,\n SignDataPayload,\n SignDataResponse,\n WalletInfoCurrentlyEmbedded\n} from '@tonconnect/sdk';\nimport {\n isTelegramUrl,\n isWalletInfoCurrentlyEmbedded,\n ITonConnect,\n SendTransactionRequest,\n SendTransactionResponse,\n TonConnect,\n TonConnectError,\n Wallet,\n WalletInfo,\n WalletNotSupportFeatureError\n} from '@tonconnect/sdk';\nimport { widgetController } from 'src/app/widget-controller';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { TonConnectUiCreateOptions } from 'src/models/ton-connect-ui-create-options';\nimport { PreferredWalletStorage, WalletInfoStorage } from 'src/storage';\nimport {\n createMacrotaskAsync,\n getSystemTheme,\n preloadImages,\n subscribeToThemeChange\n} from 'src/app/utils/web-api';\nimport { TonConnectUiOptions } from 'src/models/ton-connect-ui-options';\nimport { setBorderRadius, setColors, setTheme } from 'src/app/state/theme-state';\nimport { mergeOptions } from 'src/app/utils/options';\nimport { appState, setAppState } from 'src/app/state/app.state';\nimport { unwrap } from 'solid-js/store';\nimport { Action, setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { ActionConfiguration, StrictActionConfiguration } from 'src/models/action-configuration';\nimport { ConnectedWallet, WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\nimport { applyWalletsListConfiguration, eqWalletName } from 'src/app/utils/wallets';\nimport { uniq } from 'src/app/utils/array';\nimport { Loadable } from 'src/models/loadable';\nimport { WalletsModalManager } from 'src/managers/wallets-modal-manager';\nimport { TransactionModalManager } from 'src/managers/transaction-modal-manager';\nimport { WalletsModal, WalletsModalCloseReason, WalletsModalState } from 'src/models/wallets-modal';\nimport { isInTMA, sendExpand } from 'src/app/utils/tma-api';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\nimport { SingleWalletModalManager } from 'src/managers/single-wallet-modal-manager';\nimport { SingleWalletModal, SingleWalletModalState } from 'src/models/single-wallet-modal';\nimport { TonConnectUITracker } from 'src/tracker/ton-connect-ui-tracker';\nimport { tonConnectUiVersion } from 'src/constants/version';\nimport { ReturnStrategy } from './models';\n\nexport class TonConnectUI {\n public static getWallets(): Promise<WalletInfo[]> {\n return TonConnect.getWallets();\n }\n\n private readonly walletInfoStorage = new WalletInfoStorage();\n\n private readonly preferredWalletStorage = new PreferredWalletStorage();\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n * @private\n */\n private readonly tracker: TonConnectUITracker;\n\n private walletInfo: WalletInfoWithOpenMethod | null = null;\n\n private systemThemeChangeUnsubscribe: (() => void) | null = null;\n\n private actionsConfiguration?: ActionConfiguration;\n\n private readonly walletsList: Promise<WalletInfo[]>;\n\n private _walletsRequiredFeatures?: RequiredFeatures;\n\n public get walletsRequiredFeatures(): RequiredFeatures | undefined {\n return this._walletsRequiredFeatures;\n }\n\n private _walletsPreferredFeatures?: RequiredFeatures;\n\n public get walletsPreferredFeatures(): RequiredFeatures | undefined {\n return this._walletsPreferredFeatures;\n }\n\n private connectRequestParametersCallback?: (\n parameters: ConnectAdditionalRequest | undefined\n ) => void;\n\n /**\n * TonConnect instance.\n */\n public readonly connector: ITonConnect;\n\n /**\n * Manages the modal window state.\n */\n public readonly modal: WalletsModal;\n\n /**\n * Manages the single wallet modal window state.\n * TODO: make it public when interface will be ready for external usage.\n */\n private readonly singleWalletModal: SingleWalletModal;\n\n /**\n * Manages the transaction modal window state.\n * TODO: make it public when interface will be ready for external usage.\n */\n private readonly transactionModal: TransactionModalManager;\n\n /**\n * Promise that resolves after end of th connection restoring process (promise will fire after `onStatusChange`,\n * so you can get actual information about wallet and session after when promise resolved).\n * Resolved value `true`/`false` indicates if the session was restored successfully.\n */\n public readonly connectionRestored = Promise.resolve(false);\n\n /**\n * Current connection status.\n */\n public get connected(): boolean {\n return this.connector.connected;\n }\n\n /**\n * Current connected account or null.\n */\n public get account(): Account | null {\n return this.connector.account;\n }\n\n /**\n * Curren connected wallet app and its info or null.\n */\n public get wallet(): Wallet | (Wallet & WalletInfoWithOpenMethod) | null {\n if (!this.connector.wallet) {\n return null;\n }\n\n return {\n ...this.connector.wallet,\n ...this.walletInfo\n };\n }\n\n /**\n * Set and apply new UI options. Object with partial options should be passed. Passed options will be merged with current options.\n * @param options\n */\n public set uiOptions(options: TonConnectUiOptions) {\n this.checkButtonRootExist(options.buttonRootId);\n\n this.actionsConfiguration = options.actionsConfiguration;\n\n if ('walletsRequiredFeatures' in options) {\n this._walletsRequiredFeatures = options.walletsRequiredFeatures;\n }\n\n if ('walletsPreferredFeatures' in options) {\n this._walletsPreferredFeatures = options.walletsPreferredFeatures;\n }\n\n if (options.uiPreferences?.theme) {\n if (options.uiPreferences?.theme !== 'SYSTEM') {\n this.systemThemeChangeUnsubscribe?.();\n setTheme(options.uiPreferences.theme, options.uiPreferences.colorsSet);\n } else {\n setTheme(getSystemTheme(), options.uiPreferences.colorsSet);\n\n if (!this.systemThemeChangeUnsubscribe) {\n this.systemThemeChangeUnsubscribe = subscribeToThemeChange(setTheme);\n }\n }\n } else {\n if (options.uiPreferences?.colorsSet) {\n setColors(options.uiPreferences.colorsSet);\n }\n }\n\n if (options.uiPreferences?.borderRadius) {\n setBorderRadius(options.uiPreferences.borderRadius);\n }\n\n setAppState(state => {\n const merged = mergeOptions(\n {\n ...(options.language && { language: options.language }),\n ...(!!options.actionsConfiguration?.returnStrategy && {\n returnStrategy: options.actionsConfiguration.returnStrategy\n }),\n ...(!!options.actionsConfiguration?.twaReturnUrl && {\n twaReturnUrl: options.actionsConfiguration.twaReturnUrl\n }),\n ...(!!options.walletsListConfiguration && {\n walletsListConfiguration: options.walletsListConfiguration\n })\n },\n unwrap(state)\n );\n\n if (options.buttonRootId !== undefined) {\n merged.buttonRootId = options.buttonRootId;\n }\n\n if (options.enableAndroidBackHandler !== undefined) {\n merged.enableAndroidBackHandler = options.enableAndroidBackHandler;\n }\n\n return merged;\n });\n }\n\n // TODO: `actionsConfiguration.twaReturnUrl` is used only in `connectWallet` method, but it's not used in `sendTransaction` method, NEED TO FIX IT\n constructor(options?: TonConnectUiCreateOptions) {\n if (options && 'connector' in options && options.connector) {\n this.connector = options.connector;\n } else if (options && 'manifestUrl' in options && options.manifestUrl) {\n this.connector = new TonConnect({\n manifestUrl: options.manifestUrl,\n eventDispatcher: options.eventDispatcher,\n walletsRequiredFeatures: options.walletsRequiredFeatures\n });\n } else {\n throw new TonConnectUIError(\n 'You have to specify a `manifestUrl` or a `connector` in the options.'\n );\n }\n\n this.tracker = new TonConnectUITracker({\n eventDispatcher: options?.eventDispatcher,\n tonConnectUiVersion: tonConnectUiVersion\n });\n\n this.modal = new WalletsModalManager({\n connector: this.connector,\n tracker: this.tracker,\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => {\n this.connectRequestParametersCallback = callback;\n }\n });\n\n this.singleWalletModal = new SingleWalletModalManager({\n connector: this.connector,\n tracker: this.tracker,\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => {\n this.connectRequestParametersCallback = callback;\n }\n });\n\n this.transactionModal = new TransactionModalManager({\n connector: this.connector\n });\n\n this._walletsRequiredFeatures = options.walletsRequiredFeatures;\n\n this._walletsPreferredFeatures = options.walletsPreferredFeatures;\n\n this.walletsList = this.getWallets();\n\n this.walletsList.then(list => preloadImages(uniq(list.map(item => item.imageUrl))));\n\n const rootId = this.normalizeWidgetRoot(options?.widgetRootId);\n\n this.subscribeToWalletChange();\n\n if (options?.restoreConnection !== false) {\n this.connectionRestored = createMacrotaskAsync(async () => {\n this.tracker.trackConnectionRestoringStarted();\n await this.connector.restoreConnection();\n\n if (!this.connector.connected) {\n this.tracker.trackConnectionRestoringError('Connection was not restored');\n this.walletInfoStorage.removeWalletInfo();\n } else {\n this.tracker.trackConnectionRestoringCompleted(this.wallet);\n }\n\n return this.connector.connected;\n });\n }\n\n this.uiOptions = mergeOptions(options, { uiPreferences: { theme: 'SYSTEM' } });\n const preferredWalletName = this.preferredWalletStorage.getPreferredWalletAppName();\n setAppState({\n connector: this.connector,\n preferredWalletAppName: preferredWalletName\n });\n\n widgetController.renderApp(rootId, this);\n }\n\n /**\n * Use it to customize ConnectRequest and add `tonProof` payload.\n * You can call it multiply times to set updated tonProof payload if previous one is outdated.\n * If `connectRequestParameters.state === 'loading'` loader will appear instead of the qr code in the wallets modal.\n * If `connectRequestParameters.state` was changed to 'ready' or it's value has been changed, QR will be re-rendered.\n */\n public setConnectRequestParameters(\n connectRequestParameters: Loadable<ConnectAdditionalRequest> | undefined | null\n ): void {\n setAppState({ connectRequestParameters });\n if (connectRequestParameters?.state === 'ready' || !connectRequestParameters) {\n this.connectRequestParametersCallback?.(connectRequestParameters?.value);\n }\n }\n\n /**\n * Returns available wallets list.\n */\n public async getWallets(): Promise<WalletInfo[]> {\n return this.connector.getWallets();\n }\n\n /**\n * Subscribe to connection status change.\n * @return function which has to be called to unsubscribe.\n */\n public onStatusChange(\n callback: (wallet: ConnectedWallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): ReturnType<ITonConnect['onStatusChange']> {\n return this.connector.onStatusChange(async wallet => {\n if (wallet) {\n const lastSelectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n\n callback({\n ...wallet,\n ...(lastSelectedWalletInfo || this.walletInfoStorage.getWalletInfo())!\n });\n } else {\n callback(wallet);\n }\n }, errorsHandler);\n }\n\n /**\n * Opens the modal window, returns a promise that resolves after the modal window is opened.\n */\n public async openModal(): Promise<void> {\n return this.modal.open();\n }\n\n /**\n * Closes the modal window.\n */\n public closeModal(reason?: WalletsModalCloseReason): void {\n this.modal.close(reason);\n }\n\n /**\n * Subscribe to the modal window state changes, returns a function which has to be called to unsubscribe.\n */\n public onModalStateChange(onChange: (state: WalletsModalState) => void): () => void {\n return this.modal.onStateChange(onChange);\n }\n\n /**\n * Returns current modal window state.\n */\n public get modalState(): WalletsModalState {\n return this.modal.state;\n }\n\n /**\n * Opens the single wallet modal window, returns a promise that resolves after the modal window is opened.\n * @experimental\n */\n public async openSingleWalletModal(wallet: string): Promise<void> {\n return this.singleWalletModal.open(wallet);\n }\n\n /**\n * Close the single wallet modal window.\n * @experimental\n */\n public closeSingleWalletModal(closeReason?: WalletsModalCloseReason): void {\n this.singleWalletModal.close(closeReason);\n }\n\n /**\n * Subscribe to the single wallet modal window state changes, returns a function which has to be called to unsubscribe.\n * @experimental\n */\n public onSingleWalletModalStateChange(\n onChange: (state: SingleWalletModalState) => void\n ): () => void {\n return this.singleWalletModal.onStateChange(onChange);\n }\n\n /**\n * Returns current single wallet modal window state.\n * @experimental\n */\n public get singleWalletModalState(): SingleWalletModalState {\n return this.singleWalletModal.state;\n }\n\n /**\n * @deprecated Use `tonConnectUI.openModal()` instead. Will be removed in the next major version.\n * Opens the modal window and handles a wallet connection.\n * @return Connected wallet.\n * @throws TonConnectUIError if connection was aborted.\n */\n public async connectWallet(): Promise<ConnectedWallet> {\n const walletsList = await this.getWallets();\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n\n if (embeddedWallet) {\n return await this.connectEmbeddedWallet(embeddedWallet);\n } else {\n return await this.connectExternalWallet();\n }\n }\n\n /**\n * Disconnect wallet and clean localstorage.\n */\n public disconnect(): Promise<void> {\n this.tracker.trackDisconnection(this.wallet, 'dapp');\n\n widgetController.clearAction();\n widgetController.removeSelectedWalletInfo();\n this.walletInfoStorage.removeWalletInfo();\n return this.connector.disconnect();\n }\n\n /**\n * Opens the modal window and handles the transaction sending.\n * @param tx transaction to send.\n * @param options modal and notifications behaviour settings. Default is show only 'before' modal and all notifications.\n */\n public async sendTransaction(\n tx: SendTransactionRequest,\n options?: ActionConfiguration\n ): Promise<SendTransactionResponse> {\n this.tracker.trackTransactionSentForSignature(this.wallet, tx);\n\n if (!this.connected) {\n this.tracker.trackTransactionSigningFailed(this.wallet, tx, 'Wallet was not connected');\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n if (isInTMA()) {\n sendExpand();\n }\n\n const { notifications, modals, returnStrategy, twaReturnUrl } =\n this.getModalsAndNotificationsConfiguration(options);\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n sent: false\n });\n\n const abortController = new AbortController();\n\n const onRequestSent = (): void => {\n if (abortController.signal.aborted) {\n return;\n }\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n sent: true\n });\n\n this.redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl\n });\n };\n\n const unsubscribe = this.onTransactionModalStateChange(action => {\n if (action?.openModal) {\n return;\n }\n\n unsubscribe();\n if (!action) {\n abortController.abort();\n }\n });\n\n try {\n const result = await this.waitForSendTransaction(\n {\n transaction: tx,\n signal: abortController.signal\n },\n onRequestSent\n );\n\n this.tracker.trackTransactionSigned(this.wallet, tx, result);\n\n widgetController.setAction({\n name: 'transaction-sent',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n if (e instanceof WalletNotSupportFeatureError) {\n widgetController.clearAction();\n widgetController.openWalletNotSupportFeatureModal(e.cause);\n\n throw e;\n }\n\n widgetController.setAction({\n name: 'transaction-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n } finally {\n unsubscribe();\n }\n }\n\n /**\n * Signs the data and returns the signature.\n * @param data data to sign.\n */\n public async signData(data: SignDataPayload): Promise<SignDataResponse> {\n this.tracker.trackDataSentForSignature(this.wallet, data);\n\n if (!this.connected) {\n this.tracker.trackDataSigningFailed(this.wallet, data, 'Wallet was not connected');\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n if (isInTMA()) {\n sendExpand();\n }\n\n const { notifications, modals, returnStrategy, twaReturnUrl } =\n this.getModalsAndNotificationsConfiguration();\n\n widgetController.setAction({\n name: 'confirm-sign-data',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n signed: false\n });\n\n const abortController = new AbortController();\n\n const onRequestSent = (): void => {\n if (abortController.signal.aborted) {\n return;\n }\n\n widgetController.setAction({\n name: 'confirm-sign-data',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n signed: true\n });\n\n this.redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl\n });\n };\n\n const unsubscribe = this.onTransactionModalStateChange(action => {\n if (action?.openModal) {\n return;\n }\n\n unsubscribe();\n if (!action) {\n abortController.abort();\n }\n });\n\n try {\n const result = await this.waitForSignData(\n {\n data,\n signal: new AbortController().signal\n },\n onRequestSent\n );\n\n this.tracker.trackDataSigned(this.wallet, data, result);\n\n widgetController.setAction({\n name: 'data-signed',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n if (e instanceof WalletNotSupportFeatureError) {\n widgetController.clearAction();\n widgetController.openWalletNotSupportFeatureModal(e.cause);\n\n throw e;\n }\n\n widgetController.setAction({\n name: 'sign-data-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n } finally {\n unsubscribe();\n }\n }\n\n private redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl\n }: {\n returnStrategy: ReturnStrategy;\n twaReturnUrl?: `${string}://${string}`;\n }): void {\n if (\n this.walletInfo &&\n 'universalLink' in this.walletInfo &&\n (this.walletInfo.openMethod === 'universal-link' ||\n this.walletInfo.openMethod === 'custom-deeplink')\n ) {\n if (isTelegramUrl(this.walletInfo.universalLink)) {\n redirectToTelegram(this.walletInfo.universalLink, {\n returnStrategy,\n twaReturnUrl: twaReturnUrl || appState.twaReturnUrl,\n forceRedirect: false\n });\n } else {\n redirectToWallet(\n this.walletInfo.universalLink,\n this.walletInfo.deepLink,\n {\n returnStrategy,\n forceRedirect: false\n },\n () => {}\n );\n }\n }\n }\n\n /**\n * TODO: remove in the next major version.\n * Initiates a connection with an embedded wallet, awaits its completion, and returns the connected wallet information.\n * @param embeddedWallet - Information about the embedded wallet to connect to.\n * @throws Error if the connection process fails.\n * @internal\n */\n private async connectEmbeddedWallet(\n embeddedWallet: WalletInfoCurrentlyEmbedded\n ): Promise<ConnectedWallet> {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.connectRequestParametersCallback = connect;\n } else {\n connect(additionalRequest?.value);\n }\n\n return await this.waitForWalletConnection({\n ignoreErrors: false\n });\n }\n\n /**\n * TODO: remove in the next major version.\n * Initiates the connection process for an external wallet by opening the wallet modal\n * and returns the connected wallet information upon successful connection.\n * @throws Error if the user cancels the connection process or if the connection process fails.\n * @internal\n */\n private async connectExternalWallet(): Promise<ConnectedWallet> {\n const abortController = new AbortController();\n\n widgetController.openWalletsModal();\n\n const unsubscribe = this.onModalStateChange(state => {\n const { status, closeReason } = state;\n if (status === 'opened') {\n return;\n }\n\n unsubscribe();\n if (closeReason === 'action-cancelled') {\n abortController.abort();\n }\n });\n\n return await this.waitForWalletConnection({\n ignoreErrors: true,\n signal: abortController.signal\n });\n }\n\n /**\n * TODO: remove in the next major version.\n * Waits for a wallet connection based on provided options, returning connected wallet information.\n * @param options - Configuration for connection statuses and errors handling.\n * @options.ignoreErrors - If true, ignores errors during waiting, waiting continues until a valid wallet connects. Default is false.\n * @options.abortSignal - Optional AbortSignal for external cancellation. Throws TonConnectUIError if aborted.\n * @throws TonConnectUIError if waiting is aborted or no valid wallet connection is received and ignoreErrors is false.\n * @internal\n */\n private async waitForWalletConnection(\n options: WaitWalletConnectionOptions\n ): Promise<ConnectedWallet> {\n return new Promise((resolve, reject) => {\n this.tracker.trackConnectionStarted();\n const { ignoreErrors = false, signal = null } = options;\n\n if (signal && signal.aborted) {\n this.tracker.trackConnectionError('Connection was cancelled');\n return reject(new TonConnectUIError('Wallet was not connected'));\n }\n\n const onStatusChangeHandler = async (wallet: ConnectedWallet | null): Promise<void> => {\n if (!wallet) {\n this.tracker.trackConnectionError('Connection was cancelled');\n\n if (ignoreErrors) {\n // skip empty wallet status changes to avoid aborting the process\n return;\n }\n\n unsubscribe();\n reject(new TonConnectUIError('Wallet was not connected'));\n } else {\n this.tracker.trackConnectionCompleted(wallet);\n\n unsubscribe();\n resolve(wallet);\n }\n };\n\n const onErrorsHandler = (reason: TonConnectError): void => {\n this.tracker.trackConnectionError(reason.message);\n\n if (ignoreErrors) {\n // skip errors to avoid aborting the process\n return;\n }\n\n unsubscribe();\n reject(reason);\n };\n\n const unsubscribe = this.onStatusChange(\n (wallet: ConnectedWallet | null) => onStatusChangeHandler(wallet),\n (reason: TonConnectError) => onErrorsHandler(reason)\n );\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n (): void => {\n unsubscribe();\n reject(new TonConnectUIError('Wallet was not connected'));\n },\n { once: true }\n );\n }\n });\n }\n\n /**\n * Waits for a transaction to be sent based on provided options, returning the transaction response.\n * @param options - Configuration for transaction statuses and errors handling.\n * @options.transaction - Transaction to send.\n * @options.ignoreErrors - If true, ignores errors during waiting, waiting continues until a valid transaction is sent. Default is false.\n * @options.abortSignal - Optional AbortSignal for external cancellation. Throws TonConnectUIError if aborted.\n * @param onRequestSent (optional) will be called after the transaction is sent to the wallet.\n * @throws TonConnectUIError if waiting is aborted or no valid transaction response is received and ignoreErrors is false.\n * @internal\n */\n private async waitForSendTransaction(\n options: WaitSendTransactionOptions,\n onRequestSent?: () => void\n ): Promise<SendTransactionResponse> {\n return new Promise((resolve, reject) => {\n const { transaction, signal } = options;\n\n if (signal.aborted) {\n this.tracker.trackTransactionSigningFailed(\n this.wallet,\n transaction,\n 'Transaction was cancelled'\n );\n return reject(new TonConnectUIError('Transaction was not sent'));\n }\n\n const onTransactionHandler = async (\n transaction: SendTransactionResponse\n ): Promise<void> => {\n resolve(transaction);\n };\n\n const onErrorsHandler = (reason: TonConnectError): void => {\n reject(reason);\n };\n\n const onCanceledHandler = (): void => {\n this.tracker.trackTransactionSigningFailed(\n this.wallet,\n transaction,\n 'Transaction was cancelled'\n );\n reject(new TonConnectUIError('Transaction was not sent'));\n };\n\n signal.addEventListener('abort', onCanceledHandler, { once: true });\n\n this.connector\n .sendTransaction(transaction, { onRequestSent: onRequestSent, signal: signal })\n .then(result => {\n signal.removeEventListener('abort', onCanceledHandler);\n return onTransactionHandler(result);\n })\n .catch(reason => {\n signal.removeEventListener('abort', onCanceledHandler);\n return onErrorsHandler(reason);\n });\n });\n }\n\n /**\n * Waits for a transaction to be sent based on provided options, returning the transaction response.\n * @param options - Configuration for transaction statuses and errors handling.\n * @options.transaction - Transaction to send.\n * @options.ignoreErrors - If true, ignores errors during waiting, waiting continues until a valid transaction is sent. Default is false.\n * @options.abortSignal - Optional AbortSignal for external cancellation. Throws TonConnectUIError if aborted.\n * @param onRequestSent (optional) will be called after the transaction is sent to the wallet.\n * @throws TonConnectUIError if waiting is aborted or no valid transaction response is received and ignoreErrors is false.\n * @internal\n */\n private async waitForSignData(\n options: WaitSignDataOptions,\n onRequestSent?: () => void\n ): Promise<SignDataResponse> {\n return new Promise((resolve, reject) => {\n const { data, signal } = options;\n\n if (signal.aborted) {\n this.tracker.trackDataSigningFailed(this.wallet, data, 'SignData was cancelled');\n return reject(new TonConnectUIError('SignData was not sent'));\n }\n\n const onSignHandler = async (data: SignDataResponse): Promise<void> => {\n resolve(data);\n };\n\n const onErrorsHandler = (reason: TonConnectError): void => {\n reject(reason);\n };\n\n const onCanceledHandler = (): void => {\n this.tracker.trackDataSigningFailed(this.wallet, data, 'SignData was cancelled');\n reject(new TonConnectUIError('SignData was not sent'));\n };\n\n signal.addEventListener('abort', onCanceledHandler, { once: true });\n\n this.connector\n .signData(data, { onRequestSent: onRequestSent, signal: signal })\n .then(result => {\n // signal.removeEventListener('abort', onCanceledHandler);\n return onSignHandler(result);\n })\n .catch(reason => {\n // signal.removeEventListener('abort', onCanceledHandler);\n return onErrorsHandler(reason);\n });\n });\n }\n\n /**\n * Subscribe to the transaction modal window state changes, returns a function which has to be called to unsubscribe.\n * @internal\n */\n private onTransactionModalStateChange(onChange: (action: Action | null) => void): () => void {\n return this.transactionModal.onStateChange(onChange);\n }\n\n private subscribeToWalletChange(): void {\n // TODO: possible memory leak here, check it\n this.connector.onStatusChange(async wallet => {\n if (wallet) {\n await this.updateWalletInfo(wallet);\n this.setPreferredWalletAppName(this.walletInfo?.appName || wallet.device.appName);\n } else {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n private setPreferredWalletAppName(value: string): void {\n this.preferredWalletStorage.setPreferredWalletAppName(value);\n setAppState({ preferredWalletAppName: value });\n }\n\n private async getSelectedWalletInfo(wallet: Wallet): Promise<WalletInfoWithOpenMethod | null> {\n let lastSelectedWalletInfo = widgetController.getSelectedWalletInfo();\n\n if (!lastSelectedWalletInfo) {\n return null;\n }\n\n let fullLastSelectedWalletInfo: WalletInfoWithOpenMethod;\n if (!('name' in lastSelectedWalletInfo)) {\n const walletsList = applyWalletsListConfiguration(\n await this.walletsList,\n appState.walletsListConfiguration\n );\n const walletInfo = walletsList.find(item => eqWalletName(item, wallet.device.appName));\n\n if (!walletInfo) {\n throw new TonConnectUIError(\n `Cannot find WalletInfo for the '${wallet.device.appName}' wallet`\n );\n }\n\n fullLastSelectedWalletInfo = {\n ...walletInfo,\n ...lastSelectedWalletInfo\n };\n } else {\n fullLastSelectedWalletInfo = lastSelectedWalletInfo;\n }\n\n return fullLastSelectedWalletInfo;\n }\n\n private async updateWalletInfo(wallet: Wallet): Promise<void> {\n const selectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n if (selectedWalletInfo) {\n this.walletInfo = selectedWalletInfo;\n this.walletInfoStorage.setWalletInfo(selectedWalletInfo);\n return;\n }\n\n const storedWalletInfo = this.walletInfoStorage.getWalletInfo();\n if (storedWalletInfo) {\n this.walletInfo = storedWalletInfo;\n return;\n }\n\n this.walletInfo =\n (await this.walletsList).find(walletInfo =>\n eqWalletName(walletInfo, wallet.device.appName)\n ) || null;\n }\n\n private normalizeWidgetRoot(rootId: string | undefined): string {\n if (!rootId || !document.getElementById(rootId)) {\n rootId = 'tc-widget-root';\n const rootElement = document.createElement('div');\n rootElement.id = rootId;\n document.body.appendChild(rootElement);\n }\n\n return rootId;\n }\n\n private checkButtonRootExist(buttonRootId: string | null | undefined): void | never {\n if (buttonRootId == null) {\n return;\n }\n\n if (!document.getElementById(buttonRootId)) {\n throw new TonConnectUIError(`${buttonRootId} element not found in the document.`);\n }\n }\n\n private getModalsAndNotificationsConfiguration(\n options?: ActionConfiguration\n ): StrictActionConfiguration {\n const allActions: StrictActionConfiguration['notifications'] = [\n 'before',\n 'success',\n 'error'\n ];\n\n let notifications: StrictActionConfiguration['notifications'] = allActions;\n if (\n this.actionsConfiguration?.notifications &&\n this.actionsConfiguration?.notifications !== 'all'\n ) {\n notifications = this.actionsConfiguration.notifications;\n }\n\n if (options?.notifications) {\n if (options.notifications === 'all') {\n notifications = allActions;\n } else {\n notifications = options.notifications;\n }\n }\n\n let modals: StrictActionConfiguration['modals'] = ['before'];\n if (this.actionsConfiguration?.modals) {\n if (this.actionsConfiguration.modals === 'all') {\n modals = allActions;\n } else {\n modals = this.actionsConfiguration.modals;\n }\n }\n if (options?.modals) {\n if (options.modals === 'all') {\n modals = allActions;\n } else {\n modals = options.modals;\n }\n }\n\n const returnStrategy =\n options?.returnStrategy || this.actionsConfiguration?.returnStrategy || 'back';\n\n const twaReturnUrl = options?.twaReturnUrl || this.actionsConfiguration?.twaReturnUrl;\n\n let skipRedirectToWallet =\n options?.skipRedirectToWallet ||\n this.actionsConfiguration?.skipRedirectToWallet ||\n 'ios';\n\n // TODO: refactor this check after testing\n if (isInTMA()) {\n skipRedirectToWallet = 'never';\n }\n\n return {\n notifications,\n modals,\n returnStrategy,\n twaReturnUrl,\n skipRedirectToWallet\n };\n }\n}\n\ntype WaitWalletConnectionOptions = {\n ignoreErrors?: boolean;\n signal?: AbortSignal | null;\n};\n\ntype WaitSendTransactionOptions = {\n transaction: SendTransactionRequest;\n signal: AbortSignal;\n};\n\ntype WaitSignDataOptions = {\n data: SignDataPayload;\n signal: AbortSignal;\n};\n"],"names":["a","Transition","s","value","c","p","error","lookup","e","i","children","o","n","t","dispose","template","document","l","h","unwrap","THEME","u","r","className","css","GlobalStyles","globalStylesTag","disableScrollClass","usingMouseClass","body","addEventListener","classList","add","event","key","remove","Styles","createGlobalStyles","_$createComponent","_a","getWindow","_b","_c","Image","props","imgRef","image","setImage","createSignal","createEffect","img","window","src","alt","setAttribute","class","complete","removeEventListener","Show","when","ImagePlaceholder","ref","r$","_ref$","borders","ButtonStyled","Button","dataAttrs","useDataAttributes","_$mergeProps","appearance","onClick","onMouseEnter","onMouseLeave","disabled","scale","leftIcon","rightIcon","_$memo","el","clickOutside","accessor","contains","target","onCleanup","escPressed","_","onKeyPress","activeElement","blur","androidBackHandler","config","isEnabled","onClose","userOSIsAndroid","getUserAgent","os","history","pushState","ROUTE_STATE","popstateHandler","preventDefault","once","createMacrotask","state","ROUTE_STATE_KEY","back","rotationDegrees","left","top","right","bottom","ArrowIcon","theme","useTheme","fill","colors","icon","secondary","direction","Svg","styled","svgDirection","xmlns","width","height","viewBox","_el$","_tmpl$","cloneNode","_$effect","_$setAttribute","CloseIcon","_el$2","firstChild","IconButton","IconButtonStyled","Switch","Match","QuestionIcon","clickOutsideDirective","keyPressed","keyPressedDirective","androidBackHandlerDirective","Modal","opened","disableScroll","enableScroll","onBeforeEnter","duration","isDevice","animate","opacity","firstElementChild","transform","onExit","done","backgroundAnimation","contentAnimation","Promise","all","finished","then","ModalBackgroundStyled","_$use","enableAndroidBackHandler","_$insert","ModalBodyStyled","CloseButtonStyled","onClickQuestion","showFooter","ModalFooterStyled","TonConnectBrand","QuestionButtonStyled","_$className","cn","ModalWrapperClass","borderRadius","background","tint","media","TabBar","groupName","Math","floor","random","TabBarStyled","SliderStyled","selectedTabIndex","LabelStyled","isActive","InputStyled","type","name","checked","onInput","onSelectedTabIndexChange","tab1","tab2","QrCodeWrapper","ImageStyled","qrcode","typeNumber","errorCorrectionLevel","min","max","unicodeMap","_num","num","_this","data","QRCode","qrCodeCanvasRef","qrCodeWrapperRef","imageRef","copyButtonOpened","setCopyButtonOpened","picSize","setPicSize","picSizeDefault","cellSize","qr","addData","sourceUrl","make","innerHTML","createSvgTag","qrSize","clientWidth","round","qrNormalSize","imgSize","ceil","imgSizeDefault","imgOffset","toPx","style","timeoutId","onCopyClick","copyToClipboard","clearTimeout","setTimeout","QrCodeBackground","_ref$2","imageUrl","ImageBackground","_ref$3","size","easing","disableCopy","CopiedBoxStyled","SuccessIcon","Text","translationKey","CopyIconButton","CopyLightIcon","TextStyled","inputs","useI18n","textRef","color","text","primary","mergeProps","fontSize","fontWeight","lineHeight","cursor","getComputedStyle","translationValues","toString","ImageContainer","div","WalletImage","badge","WalletItem","ctxRef","adjustLetterSpacing","querySelector","scrollWidth","spacing","minSpacing","step","letterSpacing","onMount","WalletItemStyled","badgeUrl","BadgeStyled","StyledText","secondLine","StyledSecondLine","colorPrimary","secondLineColorPrimary","H1Styled","H1","H2Styled","H2","H3Styled","H3","TonIcon","success","_c$","_el$3","_el$4","nextSibling","_p$","_v$","_v$2","_v$3","constant","white","undefined","_c$2","_el$5","_tmpl$2","_el$6","_el$7","_v$4","_v$5","_v$6","_el$8","_tmpl$3","_el$9","_el$10","_v$7","_v$8","_v$9","ErrorIcon","LoaderIcon","tertiary","rotateAnimation","keyframes","svgClass","DARK","black","BrowserIcon","MobileIcon","DesktopIcon","RetryIcon","accent","LinkIcon","WalletIcon","SecurityIcon","PersonalityIcon","SwapIcon","AtWalletIcon","QRIcon","FourWalletsItem","labelLine1","labelLine2","FourWalletsCard","For","each","index","FourWalletsImage","images","WalletLabeledItem","walletsSecondLine","wallet","appName","AT_WALLET_APP_NAME","isPreferred","isWalletInfoCurrentlyInjected","IMG","TG","ScrollContainer","scrolled","setScrolled","onScroll","scrollTop","offset","isMobile","maxHeight","windowHeight","ScrollDivider","isShown","ScrollContainerStyled","Link","attributes","blank","rel","AStyled","href","CopyIcon","DisconnectIcon","hoverBorders","MenuItemText","AccountButtonDropdown","tonConnectUi","useContext","TonConnectUiContext","isCopiedShown","setIsCopiedShown","onCopy","userFriendlyAddress","toUserFriendlyAddress","account","address","chain","CHAIN","TESTNET","onDisconnect","disconnect","AccountButtonDropdownStyled","UlStyled","MenuButtonStyled","Notification","NotificationStyled","NotificationContentStyled","header","LoaderIconStyled","ConfirmOperationNotification","tonConnectUI","ErrorIconStyled","ErrorTransactionNotification","SuccessTransactionNotification","SuccessIconStyled","action","openedNotifications","timeoutIds","ErrorSignDataNotification","SuccessSignDataNotification","Notifications","useOpenedNotifications","TransitionGroup","openedNotification","NotificationClass","LoaderButtonStyled","computePosition","platform","g","f","R","E","y","AccountButton","connector","ConnectorContext","isOpened","setIsOpened","setAccount","restoringProcess","setRestoringProcess","dropDownRef","floating","setFloating","anchor","setAnchor","position","useFloating","whileElementsMounted","autoUpdate","placement","normalizedAddress","acc","slice","connectionRestored","unsubscribe","onStatusChange","clickToButton","clickToDropdown","Dynamic","component","AccountButtonStyled","openModal","connectButton","foreground","DropdownContainerStyled","DropdownButtonStyled","v","Portal","_$untrack","importNode","setProperty","_$owner","_$getOwner","DropdownStyled","hidden","NotificationsStyled","strategy","x","StyledIconButton","ExclamationIcon","_el$11","_el$12","AllWalletsListModal","errorSupportOpened","setErrorSupportOpened","onErrorClick","handleSelectWallet","isSupportRequiredFeatures","featureCheckMode","onSelect","walletsList","filter","supportsMobile","supportedWallets","unsupportedWallets","DesktopSelectWalletModalStyled","onBack","WalletsUl","WalletLabeledItemStyled","length","WalletsNotSupportedNotifier","WalletsNotSupportedNotifierText","withOpacity","ErrorBoxStyled","BodyStyled","QRCodeStyled","ButtonsContainerStyled","FooterButton","LoaderStyled","BodyTextStyled","Translation","DesktopConnectionModal","mode","setMode","connectionErrored","setConnectionErrored","defaultError","universalLink","setUniversalLink","firstClick","setFirstClick","WalletMissingRequiredFeaturesError","generateUniversalLink","connect","bridgeUrl","additionalRequest","untrack","supportsDesktop","onClickMobile","setLastSelectedWalletInfo","openMethod","onClickDesktop","isTelegramUrl","onClickTelegram","forceRedirect","redirectToWallet","deepLink","returnStrategy","appState","method","redirectToTelegram","twaReturnUrl","onClickExtension","jsBridgeKey","supportsExtension","DesktopConnectionModalStyled","backDisabled","onBackClick","aboutUrl","addReturnStrategy","TgButtonStyled","TgImageStyled","BottomButtonsContainerStyled","InfoModal","InfoModalStyled","InfoBlock","InfoBlockIconClass","ButtonsBlock","LINKS","GET_A_WALLET","actionButtonBorderRadius","ButtonsWrapper","ActionButton","MobileConnectionQR","walletInfo","onOpenLink","MobileConnectionModal","showQR","setShowQR","createMemo","alwaysForceRedirect","onRetry","currentUniversalLink","onOpenQR","onCloseQR","MobileConnectionModalStyled","FooterStyled","MobileUniversalQR","TON","MobileUniversalModal","w","shouldShowMoreButton","walletsBridges","getUniqueBridges","equals","bridgesIsEqual","atWalletSupportFeatures","find","getUniversalLink","onSelectUniversal","onSelectTelegram","atWallet","isWalletInfoRemote","TonConnectUIError","walletLink","visibleWallets","fourWalletsItem","StyledLeftActionButton","maxWidth","TelegramButtonStyled","TGImageStyled","padding","margin","WalletUlContainer","map","onSelectAllWallets","DesktopUniversalModal","popupOpened","setPopupOpened","request","DesktopUniversalModalStyled","H2AvailableWalletsStyled","WalletsContainerStyled","RestoreInfoModal","RestoreInfoModalStyled","StepBlock","CircleNumber","DesktopFeatureNotSupportModal","selectedWallet","setSelectedWallet","infoModalOpen","setInfoModalOpen","currentWalletUI","currentWallet","device","currentWalletName","currentWalletVersionNotSupported","currentWalletUIVar","features","requiredFeature","walletsModalState","requiredFeatures","featureName","validInList","checkRequiredWalletFeatures","validCurrentWallet","handleDisconnect","DesktopFeatureNotSupportModalStyled","Spacer","TitleStyled","DescriptionStyled","DisconnectButtonStyled","WalletsModal","locale","language","getWalletsModalIsOpened","updateIsMobile","setSelectedWalletInfo","setSelectedTab","setInfoTab","fetchedWalletsList","createResource","getWallets","selectedWalletInfo","selectedWalletError","setSelectedWalletError","selectedTab","infoTab","walletsModalIsWalletNotSupportFeature","applyWalletsListConfiguration","walletsListConfiguration","injectedWallets","notInjectedWallets","concat","preferredWalletAppName","preferredWallet","item","eqWalletName","someWalletsWithSameName","walletsFeaturesRequested","walletsRequiredFeatures","walletsPreferredFeatures","uiWallets","additionalRequestLoading","connectRequestParameters","closeReason","closeModal","err","errorAppName","cause","connectEvent","toLowerCase","TonConnectError","walletErrorType","onSelectWallet","widgetController","openWalletsModal","clearSelectedWalletInfo","StyledModal","LoaderContainerStyled","ActionModal","sent","setSent","signed","setSigned","canceled","setCanceled","currentAction","isInTMA","onOpenWallet","ActionModalStyled","headerTranslationKey","headerTranslationValues","textTranslationKey","textTranslationValues","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ConfirmSignDataModal","SignDataCanceledModal","DataSignedModal","ActionsModal","setAction","SingleWalletModal","getSingleWalletModalIsOpened","closeSingleWalletModal","getSingleWalletModalWalletInfo","App","translations","createI18nContext","i18nDictionary","defineStylesRoot","fixMobileSafariActiveTransition","I18nContext","Provider","ThemeProvider","themeState","buttonRootId","mount","getElementById","setWalletsModalState","status","closeWalletsModal","reason","openSingleWalletModal","setSingleWalletModalState","openWalletNotSupportFeatureModal","clearAction","getSelectedWalletInfo","lastSelectedWalletInfo","removeSelectedWalletInfo","renderApp","root","render","_d","_e","notifications","transaction","_f"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/solid-js@1.6.9/node_modules/solid-js/dist/solid.js","../../../node_modules/.pnpm/solid-js@1.6.9/node_modules/solid-js/web/dist/web.js","../src/models/THEME.ts","../../../node_modules/.pnpm/goober@2.1.11_csstype@3.1.1/node_modules/goober/dist/goober.modern.js","../../../node_modules/.pnpm/solid-styled-components@0.28.5_solid-js@1.6.9/node_modules/solid-styled-components/src/index.js","../src/app/styles/global-styles.tsx","../src/app/utils/css.ts","../src/app/models/in-memory-storage.ts","../src/errors/ton-connect-ui.error.ts","../src/app/utils/log.ts","../src/app/utils/web-api.ts","../src/storage/wallet-info-storage.ts","../src/storage/preferred-wallet-storage.ts","../src/storage/last-selected-wallet-info-storage.ts","../src/app/state/modals-state.ts","../src/app/i18n.ts","../src/app/state/connector.context.ts","../../../node_modules/.pnpm/solid-js@1.6.9/node_modules/solid-js/store/dist/store.js","../src/app/styles/default-colors.ts","../../../node_modules/.pnpm/is-plain-object@5.0.0/node_modules/is-plain-object/dist/is-plain-object.mjs","../src/app/utils/options.ts","../src/app/state/theme-state.ts","../src/app/components/image/style.ts","../src/app/components/image/index.tsx","../src/app/utils/tma-api.ts","../src/app/styles/media.ts","../src/app/components/button/style.ts","../src/app/hooks/use-data-attributes.ts","../src/app/components/button/index.tsx","../../../node_modules/.pnpm/solid-transition-group@0.0.12_solid-js@1.6.9/node_modules/solid-transition-group/dist/solid-transition-group.js","../src/app/directives/click-outside.tsx","../src/app/directives/key-pressed.tsx","../src/app/directives/android-back-handler.tsx","../src/app/components/icons/arrow-icon.tsx","../src/app/components/icons/close-icon.tsx","../src/app/components/icon-button/style.ts","../src/app/components/icon-button/index.tsx","../src/app/components/modal/style.ts","../src/app/utils/animate.ts","../src/app/components/modal/index.tsx","../src/app/components/tab-bar/style.ts","../src/app/components/tab-bar/index.tsx","../src/app/components/qr-code/style.ts","../../../node_modules/.pnpm/qrcode-generator@1.4.4/node_modules/qrcode-generator/qrcode.js","../src/app/utils/copy-to-clipboard.ts","../src/app/components/qr-code/index.tsx","../../../node_modules/.pnpm/@solid-primitives+i18n@1.1.2_solid-js@1.6.9/node_modules/@solid-primitives/i18n/dist/index.js","../src/app/components/typography/text/style.ts","../src/app/components/typography/text/index.tsx","../src/app/components/wallet-item/wallet-image.tsx","../src/app/components/wallet-item/style.ts","../src/app/components/wallet-item/index.tsx","../src/app/components/typography/h1/style.ts","../src/app/components/typography/h1/index.tsx","../src/app/components/typography/h2/style.ts","../src/app/components/typography/h2/index.tsx","../src/app/components/typography/h3/style.ts","../src/app/components/typography/h3/index.tsx","../src/app/components/icons/ton-icon.tsx","../src/app/components/icons/success-icon.tsx","../src/app/components/icons/error-icon.tsx","../src/app/components/icons/loader-icon.tsx","../src/app/components/icons/ton-connect-brand.tsx","../src/app/components/icons/question-icon.tsx","../src/app/components/icons/browser-icon.tsx","../src/app/components/icons/mobile-icon.tsx","../src/app/components/icons/desktop-icon.tsx","../src/app/components/icons/retry-icon.tsx","../src/app/components/icons/link-icon.tsx","../src/app/components/icons/wallet-icon.tsx","../src/app/components/icons/security-icon.tsx","../src/app/components/icons/personality-icon.tsx","../src/app/components/icons/swap-icon.tsx","../src/app/components/icons/at-wallet-icon.tsx","../src/app/components/icons/copy-light-icon.tsx","../src/app/components/icons/qr-icon.tsx","../src/app/components/wallet-item/four-wallets.style.ts","../src/app/components/wallet-item/four-wallets.tsx","../src/app/env/AT_WALLET_APP_NAME.ts","../src/app/env/IMG.ts","../src/app/components/wallet-item/wallet-labeled-item.tsx","../src/app/components/scroll-container/style.ts","../src/app/hooks/windowSize.ts","../src/app/hooks/isMobile.ts","../src/app/components/scroll-container/index.tsx","../src/app/components/link/style.ts","../src/app/components/link/index.tsx","../src/app/state/ton-connect-ui.context.ts","../src/app/components/icons/copy-icon.tsx","../src/app/components/icons/disconnect-icon.tsx","../src/app/views/account-button/account-button-dropdown/style.ts","../src/app/views/account-button/account-button-dropdown/index.tsx","../src/app/components/notification/style.ts","../src/app/components/notification/index.tsx","../src/app/views/account-button/notifications/confirm-operation-notification/style.ts","../src/app/views/account-button/notifications/confirm-operation-notification/index.tsx","../src/app/views/account-button/notifications/error-transaction-notification/style.ts","../src/app/views/account-button/notifications/error-transaction-notification/index.tsx","../src/app/views/account-button/notifications/success-transaction-notification/style.ts","../src/app/views/account-button/notifications/success-transaction-notification/index.tsx","../src/app/views/account-button/notifications/style.ts","../src/app/hooks/use-notifications.ts","../src/app/views/account-button/notifications/error-sign-data-notification/style.ts","../src/app/views/account-button/notifications/error-sign-data-notification/index.tsx","../src/app/views/account-button/notifications/success-sign-data-notification/index.tsx","../src/app/views/account-button/notifications/index.tsx","../src/app/views/account-button/style.ts","../../../node_modules/.pnpm/@floating-ui+core@1.1.0/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../../node_modules/.pnpm/@floating-ui+dom@1.1.0/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../../../node_modules/.pnpm/solid-floating-ui@0.2.0_@floating-ui+dom@1.1.0_solid-js@1.6.9/node_modules/solid-floating-ui/dist/esm/production/index.mjs","../src/app/views/account-button/index.tsx","../src/app/views/modals/wallets-modal/style.ts","../src/app/state/app.state.ts","../src/app/utils/array.ts","../src/app/utils/wallets.ts","../src/app/views/modals/wallets-modal/all-wallets-list-modal/style.ts","../src/app/components/icons/exclamation-icon.tsx","../src/app/views/modals/wallets-modal/all-wallets-list-modal/index.tsx","../src/app/views/modals/wallets-modal/desktop-connection-modal/style.ts","../src/app/components/typography/Translation/index.tsx","../src/app/utils/url-strategy-helpers.ts","../src/app/views/modals/wallets-modal/desktop-connection-modal/index.tsx","../src/app/views/modals/wallets-modal/info-modal/style.ts","../src/app/env/LINKS.ts","../src/app/views/modals/wallets-modal/info-modal/index.tsx","../src/app/views/modals/wallets-modal/mobile-connection-modal/style.ts","../src/app/views/modals/wallets-modal/mobile-connection-modal/mobile-connection-qr/style.ts","../src/app/views/modals/wallets-modal/mobile-connection-modal/mobile-connection-qr/index.tsx","../src/app/views/modals/wallets-modal/mobile-connection-modal/index.tsx","../src/app/views/modals/wallets-modal/mobile-universal-modal/style.ts","../src/app/views/modals/wallets-modal/mobile-universal-modal/mobile-universal-qr/style.ts","../src/app/views/modals/wallets-modal/mobile-universal-modal/mobile-universal-qr/index.tsx","../src/app/utils/bridge.ts","../src/app/views/modals/wallets-modal/mobile-universal-modal/index.tsx","../src/app/views/modals/wallets-modal/desktop-universal-modal/style.ts","../src/app/views/modals/wallets-modal/desktop-universal-modal/index.tsx","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/style.ts","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/restore-info-modal/style.ts","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/restore-info-modal/index.tsx","../src/app/views/modals/wallets-modal/feature-not-supoprt-modal/index.tsx","../src/app/views/modals/wallets-modal/wallets-modal.tsx","../src/app/views/modals/actions-modal/action-modal/style.ts","../src/app/views/modals/actions-modal/action-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-transaction-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-sent-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-sign-data-modal/index.tsx","../src/app/views/modals/actions-modal/sign-data-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/data-signed-modal/index.tsx","../src/app/views/modals/actions-modal/actions-modal.tsx","../src/app/views/modals/wallets-modal/single-wallet-modal.tsx","../src/app/App.tsx","../src/app/widget-controller.tsx","../src/managers/wallets-modal-manager.ts","../src/managers/transaction-modal-manager.ts","../src/managers/single-wallet-modal-manager.ts","../src/tracker/ton-connect-ui-tracker.ts","../src/constants/version.ts","../src/ton-connect-ui.ts"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner || owner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (!err) setValue(() => v);\n setState(err ? \"errored\" : \"ready\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n Owner = o;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!Updates) Effects = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction handleError(err) {\n err = castError(err);\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n for (const f of fns) f(err);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n for (let i = sources.length - 1; i >= 0; i--) {\n if (sources[i]) {\n const descriptors = Object.getOwnPropertyDescriptors(sources[i]);\n for (const key in descriptors) {\n if (key in target) continue;\n Object.defineProperty(target, key, {\n enumerable: true,\n get() {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = (sources[i] || {})[key];\n if (v !== undefined) return v;\n }\n }\n });\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n if ($PROXY in props) {\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const descriptors = Object.getOwnPropertyDescriptors(props);\n keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));\n return keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (!(key in props)) continue;\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n },\n enumerable: true\n });\n }\n return clone;\n });\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let strictEqual = false;\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => c(when)) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n const res = typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n onError(setErrored);\n return res;\n }\n onError(setErrored);\n return props.children;\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => {\n while (elem && elem.nodeType !== 8 && elem.nodeValue !== \"pl-\" + e) {\n let x = elem.nextSibling;\n elem.remove();\n elem = x;\n }\n elem && elem.remove();\n });\n }\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i];\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if ((typeof item) === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) {\n normalized.push(prev);\n } else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","export enum THEME {\n DARK = 'DARK',\n LIGHT = 'LIGHT'\n}\n\nexport type Theme = THEME | 'SYSTEM';\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { css, setup as gooberSetup } from \"goober\";\r\nimport {\r\n mergeProps,\r\n splitProps,\r\n createContext,\r\n useContext,\r\n createComponent,\r\n untrack,\r\n} from \"solid-js\";\r\nimport { Dynamic, isServer, spread } from \"solid-js/web\";\r\nexport { css, glob, extractCss, keyframes } from \"goober\";\r\n\r\nlet getForwardProps = null;\r\n\r\nexport function shouldForwardProp(predicate) {\r\n return props => props.filter(predicate);\r\n}\r\n\r\nexport function setup(prefixer, shouldForwardProp = null) {\r\n gooberSetup(null, prefixer);\r\n getForwardProps = shouldForwardProp;\r\n}\r\nconst ThemeContext = createContext();\r\nexport function ThemeProvider(props) {\r\n return createComponent(ThemeContext.Provider, {\r\n value: props.theme,\r\n get children() {\r\n return props.children;\r\n }\r\n });\r\n}\r\nexport function useTheme() {\r\n return useContext(ThemeContext);\r\n}\r\n\r\nfunction makeStyled(tag) {\r\n let _ctx = this || {};\r\n return (...args) => {\r\n const Styled = props => {\r\n const theme = useContext(ThemeContext);\r\n const withTheme = mergeProps(props, { theme });\r\n const clone = mergeProps(withTheme, {\r\n get class() {\r\n const pClass = withTheme.class,\r\n append = \"class\" in withTheme && /^go[0-9]+/.test(pClass);\r\n // Call `css` with the append flag and pass the props\r\n let className = css.apply(\r\n { target: _ctx.target, o: append, p: withTheme, g: _ctx.g },\r\n args\r\n );\r\n return [pClass, className].filter(Boolean).join(\" \");\r\n }\r\n });\r\n const [local, newProps] = splitProps(clone, [\"as\", \"theme\"]);\r\n const htmlProps = getForwardProps\r\n ? splitProps(newProps, getForwardProps(Object.keys(newProps)))[0]\r\n : newProps;\r\n const createTag = local.as || tag;\r\n let el;\r\n\r\n if (typeof createTag === \"function\") {\r\n el = createTag(htmlProps);\r\n } else {\r\n if (isServer) {\r\n const [local, others] = splitProps(htmlProps, [\"children\", \"theme\"]);\r\n el = Dynamic({\r\n component: createTag,\r\n get children() {\r\n return local.children;\r\n },\r\n ...others\r\n });\r\n } else {\r\n if (_ctx.g == 1) {\r\n // When using Global Styles we don't want to hydrate the unused nodes\r\n el = document.createElement(createTag);\r\n spread(el, htmlProps);\r\n } else {\r\n el = Dynamic(mergeProps({ component: createTag }, htmlProps));\r\n }\r\n }\r\n }\r\n return el;\r\n };\r\n Styled.class = props => {\r\n return untrack(() => {\r\n return css.apply({ target: _ctx.target, p: props, g: _ctx.g }, args);\r\n });\r\n };\r\n\r\n return Styled;\r\n };\r\n}\r\n\r\nexport const styled = new Proxy(makeStyled, {\r\n get(target, tag) {\r\n return target(tag);\r\n }\r\n});\r\n\r\nexport function createGlobalStyles() {\r\n const fn = makeStyled.call({ g: 1 }, \"div\").apply(null, arguments);\r\n\r\n return function GlobalStyles(props) {\r\n fn(props);\r\n return null;\r\n };\r\n}\r\n","import { JSXElement } from 'solid-js';\nimport { createGlobalStyles } from 'solid-styled-components';\n\nexport const globalStylesTag = 'tc-root';\nexport const disableScrollClass = 'tc-disable-scroll';\nexport const usingMouseClass = 'tc-using-mouse';\n\nexport const GlobalStyles = (): JSXElement => {\n document.body.addEventListener('mousedown', () => document.body.classList.add(usingMouseClass));\n\n document.body.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n document.body.classList.remove(usingMouseClass);\n }\n });\n\n const Styles = createGlobalStyles`\n ${globalStylesTag} * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n \n font-family: -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', Arial, Tahoma, Verdana, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; \n -webkit-tap-highlight-color: transparent;\n }\n \n ${globalStylesTag} img {\n -webkit-user-select: none;\n -webkit-touch-callout: none;\n } \n \n ${globalStylesTag} *:focus {\n outline: #08f auto 2px;\n }\n \n ${globalStylesTag} li {\n list-style: none;\n }\n \n ${globalStylesTag} button {\n outline: none;\n }\n \n body.${disableScrollClass} {\n position: fixed; \n overflow-y: scroll;\n right: 0;\n left: 0;\n }\n \n body.${usingMouseClass} ${globalStylesTag} *:focus {\n outline: none;\n }\n`;\n return <Styles />;\n};\n","import type { Property } from 'csstype';\ntype Color = Property.Color;\n\nexport function hexToRgb(hex: string): string {\n if (hex[0] === '#') {\n hex = hex.slice(1);\n }\n\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n\n return [r, g, b].join(',');\n}\n\nexport function rgba(color: Color, opacity: number): string {\n if (color[0] === '#') {\n color = hexToRgb(color);\n }\n\n return `rgba(${color}, ${opacity})`;\n}\n\nexport function toPx(value: number | string): string {\n return value.toString() + 'px';\n}\n","/**\n * In memory storage like localStorage, but without persistence.\n * Uses as a fallback for localStorage in Safari's private mode.\n */\nexport class InMemoryStorage implements Storage {\n private static instance: InMemoryStorage;\n\n private storage: Record<string, string> = {};\n\n public static getInstance(): InMemoryStorage {\n if (!InMemoryStorage.instance) {\n InMemoryStorage.instance = new InMemoryStorage();\n }\n\n return InMemoryStorage.instance;\n }\n\n private constructor() {}\n\n public get length(): number {\n return Object.keys(this.storage).length;\n }\n\n public clear(): void {\n this.storage = {};\n }\n\n public getItem(key: string): string | null {\n return this.storage[key] ?? null;\n }\n\n public key(index: number): string | null {\n const keys = Object.keys(this.storage);\n if (index < 0 || index >= keys.length) {\n return null;\n }\n\n return keys[index] ?? null;\n }\n\n public removeItem(key: string): void {\n delete this.storage[key];\n }\n\n public setItem(key: string, value: string): void {\n this.storage[key] = value;\n }\n}\n","import { TonConnectError } from '@tonconnect/sdk';\n\nexport class TonConnectUIError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectUIError.prototype);\n }\n}\n","export function logDebug(...args: Parameters<Console['debug']>): void {\n if (typeof 'console' !== undefined) {\n try {\n console.debug('[TON_CONNECT_UI]', ...args);\n } catch {}\n }\n}\n\nexport function logError(...args: Parameters<Console['error']>): void {\n if (typeof 'console' !== undefined) {\n try {\n console.error('[TON_CONNECT_UI]', ...args);\n } catch {}\n }\n}\n\nexport function logWarning(...args: Parameters<Console['warn']>): void {\n if (typeof 'console' !== undefined) {\n try {\n console.warn('[TON_CONNECT_UI]', ...args);\n } catch {}\n }\n}\n","import { THEME } from 'src/models/THEME';\nimport { disableScrollClass, globalStylesTag } from 'src/app/styles/global-styles';\nimport { toPx } from 'src/app/utils/css';\nimport { UserAgent } from 'src/models/user-agent';\nimport UAParser from 'ua-parser-js';\nimport { InMemoryStorage } from 'src/app/models/in-memory-storage';\nimport { TonConnectUIError } from 'src/errors';\nimport { logDebug } from 'src/app/utils/log';\n\n/**\n * Opens a link in a new tab.\n * @param href\n * @param target\n */\nexport function openLink(href: string, target = '_self'): void {\n logDebug('openLink', href, target);\n window.open(href, target, 'noopener noreferrer');\n}\n\n/**\n * Opens a link in a new tab.\n * @param href\n */\nexport function openLinkBlank(href: string): void {\n openLink(href, '_blank');\n}\n\n/**\n * Open a deeplink in the same tab and fallback to a direct link after 200 ms.\n * In Safari, the fallback will not work.\n * @param href\n * @param fallback\n */\nexport function openDeeplinkWithFallback(href: string, fallback: () => void): void {\n const doFallback = (): void => {\n if (isBrowser('safari') || (isOS('android') && isBrowser('firefox'))) {\n // Safari does not support fallback to direct link.\n return;\n }\n\n fallback();\n };\n const fallbackTimeout = setTimeout(() => doFallback(), 200);\n window.addEventListener('blur', () => clearTimeout(fallbackTimeout), { once: true });\n\n openLink(href, '_self');\n}\n\nexport function getSystemTheme(): THEME {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {\n return THEME.LIGHT;\n }\n\n return THEME.DARK;\n}\n\nexport function subscribeToThemeChange(callback: (theme: THEME) => void): () => void {\n const handler = (event: MediaQueryListEvent): void =>\n callback(event.matches ? THEME.DARK : THEME.LIGHT);\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', handler);\n return () =>\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', handler);\n}\n\nexport function disableScroll(): void {\n if (document.documentElement.scrollHeight === document.documentElement.clientHeight) {\n return;\n }\n\n document.body.style.top = toPx(-document.documentElement.scrollTop);\n document.body.classList.add(disableScrollClass);\n}\n\nexport function enableScroll(): void {\n document.body.classList.remove(disableScrollClass);\n document.documentElement.scrollTo({ top: -parseFloat(getComputedStyle(document.body).top) });\n document.body.style.top = 'auto';\n}\n\nexport function fixMobileSafariActiveTransition(): void {\n if (!document.body.hasAttribute('ontouchstart')) {\n document.body.setAttribute('ontouchstart', '');\n }\n}\n\nexport function defineStylesRoot(): void {\n if (!customElements.get('tc-root')) {\n customElements.define(globalStylesTag, class TcRootElement extends HTMLElement {});\n }\n}\n\n/**\n * Create a macrotask using `requestAnimationFrame()` to ensure that any pending microtasks,\n * such as asynchronous operations from other developers and browser APIs, are executed before.\n * @param callback\n */\nexport async function createMacrotask(callback: () => void): Promise<void> {\n await new Promise(resolve => requestAnimationFrame(resolve));\n callback();\n}\n\n/**\n * Create a macrotask using `requestAnimationFrame()` to ensure that any pending microtasks,\n * such as asynchronous operations from other developers and browser APIs, are executed before.\n * @param callback\n */\nexport async function createMacrotaskAsync<T>(callback: () => Promise<T>): Promise<T> {\n await new Promise(resolve => requestAnimationFrame(resolve));\n return callback();\n}\n\n/**\n * Preload images after page load to improve UX and Web Vitals metrics without affecting initial page load performance.\n */\nexport function preloadImages(images: string[]): void {\n if (document.readyState !== 'complete') {\n window.addEventListener('load', () => createMacrotask(() => preloadImages(images)), {\n once: true\n });\n } else {\n images.forEach(img => {\n const node = new window.Image();\n node.src = img;\n });\n }\n}\n\nexport function getWindow(): Window | undefined {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n return undefined;\n}\n\n/**\n * Returns `localStorage` if it is available. In Safari's private mode, it returns `InMemoryStorage`. In Node.js, it throws an error.\n */\nexport function tryGetLocalStorage(): Storage {\n if (isLocalStorageAvailable()) {\n return localStorage;\n }\n\n if (isNodeJs()) {\n throw new TonConnectUIError(\n '`localStorage` is unavailable, but it is required for TonConnect. For more details, see https://github.com/ton-connect/sdk/tree/main/packages/sdk#init-connector'\n );\n }\n\n return InMemoryStorage.getInstance();\n}\n\n/**\n * Checks if `localStorage` is available.\n */\nfunction isLocalStorageAvailable(): boolean {\n // We use a try/catch block because Safari's private mode throws an error when attempting to access localStorage.\n try {\n return typeof localStorage !== 'undefined';\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if the environment is Node.js.\n */\nfunction isNodeJs(): boolean {\n return (\n typeof process !== 'undefined' && process.versions != null && process.versions.node != null\n );\n}\n\nexport function isMobileUserAgent(): boolean {\n let check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.slice(0, 4)\n )\n )\n check = true;\n })(\n navigator.userAgent ||\n navigator.vendor ||\n (\n window as unknown as {\n opera: string;\n }\n ).opera\n );\n return check;\n}\n\nexport function getUserAgent(): UserAgent {\n const results = new UAParser().getResult();\n const osName = results.os.name?.toLowerCase();\n const deviceModel = results.device.model?.toLowerCase();\n let os: UserAgent['os'];\n switch (true) {\n case deviceModel === 'ipad':\n os = 'ipad';\n break;\n case osName === 'ios':\n os = 'ios';\n break;\n case osName === 'android':\n os = 'android';\n break;\n case osName === 'mac os':\n os = 'macos';\n break;\n case osName === 'linux':\n os = 'linux';\n break;\n case osName?.includes('windows'):\n os = 'windows';\n break;\n }\n\n const browserName = results.browser.name?.toLowerCase();\n let browser: UserAgent['browser'] | undefined;\n switch (true) {\n case browserName === 'chrome':\n browser = 'chrome';\n break;\n case browserName === 'firefox':\n browser = 'firefox';\n break;\n case browserName?.includes('safari'):\n browser = 'safari';\n break;\n case browserName?.includes('opera'):\n browser = 'opera';\n break;\n }\n\n return {\n os,\n browser\n };\n}\n\nexport function isOS(...os: UserAgent['os'][]): boolean {\n return os.includes(getUserAgent().os);\n}\n\nexport function isBrowser(...browser: UserAgent['browser'][]): boolean {\n return browser.includes(getUserAgent().browser);\n}\n\n/**\n * Convert universal link to the given deeplink: replace protocol and path, but keep query params\n * @param universalLink\n * @param deeplink\n */\nexport function toDeeplink(universalLink: string, deeplink: string): string {\n const url = new URL(universalLink);\n return deeplink + url.search;\n}\n","import { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\nimport { tryGetLocalStorage } from 'src/app/utils/web-api';\n\nexport class WalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_wallet-info';\n\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n\n public setWalletInfo(walletInfo: WalletInfoWithOpenMethod): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getWalletInfo(): WalletInfoWithOpenMethod | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import { tryGetLocalStorage } from 'src/app/utils/web-api';\n\nexport class PreferredWalletStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_preferred-wallet';\n\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n\n public setPreferredWalletAppName(name: string): void {\n this.localStorage.setItem(this.storageKey, name);\n }\n\n public getPreferredWalletAppName(): string | undefined {\n return this.localStorage.getItem(this.storageKey) || undefined;\n }\n}\n","import { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\nimport { tryGetLocalStorage } from 'src/app/utils/web-api';\n\nexport class LastSelectedWalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_last-selected-wallet-info';\n\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n\n public setLastSelectedWalletInfo(\n walletInfo:\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n ): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getLastSelectedWalletInfo():\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeLastSelectedWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import { createMemo, createSignal } from 'solid-js';\nimport { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\nimport { LastSelectedWalletInfoStorage } from 'src/storage';\nimport { ReturnStrategy } from 'src/models';\nimport { WalletsModalState } from 'src/models/wallets-modal';\nimport { SingleWalletModalState } from 'src/models/single-wallet-modal';\n\nexport type ActionName =\n | 'confirm-transaction'\n | 'transaction-sent'\n | 'transaction-canceled'\n | 'confirm-sign-data'\n | 'data-signed'\n | 'sign-data-canceled';\n\nexport type Action = BasicAction | ConfirmTransactionAction | ConfirmSignDataAction;\n\ntype BasicAction = {\n name: ActionName;\n openModal: boolean;\n showNotification: boolean;\n};\n\nexport type ConfirmTransactionAction = BasicAction & {\n name: 'confirm-transaction';\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}`;\n sent: boolean;\n};\n\nexport type ConfirmSignDataAction = BasicAction & {\n name: 'confirm-sign-data';\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}`;\n signed: boolean;\n};\n\nexport const [walletsModalState, setWalletsModalState] = createSignal<WalletsModalState>({\n status: 'closed',\n closeReason: null\n});\n\nexport const getWalletsModalIsOpened = createMemo(() => walletsModalState().status === 'opened');\n\nexport const [singleWalletModalState, setSingleWalletModalState] =\n createSignal<SingleWalletModalState>({\n status: 'closed',\n closeReason: null\n });\n\nexport const getSingleWalletModalIsOpened = createMemo(\n () => singleWalletModalState().status === 'opened'\n);\n\nexport const getSingleWalletModalWalletInfo = createMemo(() => {\n const state = singleWalletModalState();\n if (state.status === 'opened') {\n return state.walletInfo;\n }\n\n return null;\n});\n\nlet lastSelectedWalletInfoStorage =\n typeof window !== 'undefined' ? new LastSelectedWalletInfoStorage() : undefined;\nexport const [lastSelectedWalletInfo, _setLastSelectedWalletInfo] = createSignal<\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null\n>(lastSelectedWalletInfoStorage?.getLastSelectedWalletInfo() || null);\n\nexport const setLastSelectedWalletInfo = (\n walletInfo:\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null\n): void => {\n if (!lastSelectedWalletInfoStorage) {\n lastSelectedWalletInfoStorage = new LastSelectedWalletInfoStorage();\n }\n\n if (walletInfo) {\n lastSelectedWalletInfoStorage.setLastSelectedWalletInfo(walletInfo);\n } else {\n lastSelectedWalletInfoStorage.removeLastSelectedWalletInfo();\n }\n _setLastSelectedWalletInfo(walletInfo);\n};\n\nexport const [action, setAction] = createSignal<Action | null>(null);\n","import en from 'src/app/assets/i18n/en.json';\nimport ru from 'src/app/assets/i18n/ru.json';\nimport { Locales } from 'src/models/locales';\n\nexport const i18nDictionary: Record<Locales, object> = {\n en: parseDictionary(en),\n ru: parseDictionary(ru)\n};\n\n// replace '$key1.key2.key3' with it's value\nfunction parseDictionary(dictionary: Record<string, unknown>): Record<string, unknown> {\n const refSymbol = '$';\n\n const iterate = (subDictionary: Record<string, unknown>): void => {\n Object.entries(subDictionary).forEach(([key, value]) => {\n if (typeof value === 'object' && value) {\n return iterate(value as Record<string, unknown>);\n }\n\n if (typeof value === 'string') {\n if (value[0] === refSymbol) {\n const path = value.slice(1).split('.');\n let obj: Record<string, unknown> = dictionary;\n path.forEach(item => {\n if (item in obj) {\n obj = obj[item] as Record<string, unknown>;\n } else {\n throw new Error(\n `Cannot parse translations: there is no property ${item} in translation`\n );\n }\n });\n\n subDictionary[key] = obj;\n }\n\n if (value.slice(0, 2) === `\\\\${refSymbol}`) {\n subDictionary[key] = value.slice(1);\n }\n }\n });\n };\n\n iterate(dictionary);\n return dictionary;\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createContext } from 'solid-js';\n\nexport const ConnectorContext = createContext<ITonConnect>();\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n if (target !== previous) {\n if (property === $ROOT) return target;\n setProperty(parent, property, target);\n }\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","import { ColorsSet } from 'src/models/colors-set';\n\nexport const defaultLightColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#0098EA',\n foreground: '#FFFFFF'\n },\n accent: '#0098EA',\n telegramButton: '#0098EA',\n icon: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n tertiary: '#C1CAD2',\n success: '#29CC6A',\n error: '#F5A73B'\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F1F3F5',\n segment: '#FFFFFF',\n tint: '#F1F3F5',\n qr: '#F1F3F5'\n },\n text: {\n primary: '#0F0F0F',\n secondary: '#6A7785'\n }\n};\n\nexport const defaultDarkColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#0098EA',\n foreground: '#FFFFFF'\n },\n accent: '#E5E5EA',\n telegramButton: '#31A6F5',\n icon: {\n primary: '#E5E5EA',\n secondary: '#909099',\n tertiary: '#434347',\n success: '#29CC6A',\n error: '#F5A73B'\n },\n background: {\n primary: '#121214',\n secondary: '#18181A',\n segment: '#262629',\n tint: '#222224',\n qr: '#FFFFFF'\n },\n text: {\n primary: '#E5E5EA',\n secondary: '#7D7D85'\n }\n};\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import deepmerge from 'deepmerge';\nimport { DeepPartial } from 'src/app/utils/types';\nimport { isPlainObject } from 'is-plain-object';\n\nexport function mergeOptions<T>(options: DeepPartial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, {\n arrayMerge: overwriteMerge,\n isMergeableObject: isPlainObject\n });\n}\n","import { createStore } from 'solid-js/store';\nimport { DefaultTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models/THEME';\nimport { defaultDarkColorsSet, defaultLightColorsSet } from 'src/app/styles/default-colors';\nimport { BorderRadius, PartialColorsSet } from 'src/models';\nimport { mergeOptions } from 'src/app/utils/options';\n\nexport const [themeState, setThemeState] = createStore<DefaultTheme>({\n theme: THEME.LIGHT,\n colors: defaultLightColorsSet,\n borderRadius: 'm'\n});\n\nconst themeColorsMappingDefault = {\n [THEME.LIGHT]: defaultLightColorsSet,\n [THEME.DARK]: defaultDarkColorsSet\n};\n\nconst themeCustomColors: Record<THEME, PartialColorsSet | undefined> = {\n [THEME.LIGHT]: undefined,\n [THEME.DARK]: undefined\n};\n\nexport function setTheme(theme: THEME, colorsSet?: Partial<Record<THEME, PartialColorsSet>>): void {\n if (colorsSet) {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n }\n\n setThemeState({\n theme,\n colors: mergeOptions(themeCustomColors[theme], themeColorsMappingDefault[theme])\n });\n}\n\nexport function setBorderRadius(borderRadius: BorderRadius): void {\n setThemeState({ borderRadius });\n}\n\nexport function setColors(colorsSet: Partial<Record<THEME, PartialColorsSet>>): void {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n\n setThemeState(state => ({\n colors: mergeOptions(\n themeCustomColors[state.theme as THEME],\n themeColorsMappingDefault[state.theme as THEME]\n )\n }));\n}\n","import { styled } from 'solid-styled-components';\n\nexport const ImagePlaceholder = styled.div`\n background-color: ${props => props.theme!.colors.background.secondary};\n`;\n","import { Component, createEffect, createSignal, Show } from 'solid-js';\nimport { ImagePlaceholder } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface ImageProps extends Styleable {\n src: string;\n alt?: string;\n}\n\nexport const Image: Component<ImageProps> = props => {\n let imgRef: HTMLImageElement | undefined;\n\n const [image, setImage] = createSignal<HTMLImageElement | null>(null);\n\n createEffect(() => {\n const img = new window.Image();\n img.src = props.src;\n img.alt = props.alt || '';\n img.setAttribute('draggable', 'false');\n if (props.class) {\n img.classList.add(props.class);\n }\n\n if (img.complete) {\n return setImage(img);\n }\n\n img.addEventListener('load', () => setImage(img));\n\n return () => img.removeEventListener('load', () => setImage(img));\n });\n\n return (\n <>\n <Show when={image()}>{image()}</Show>\n <Show when={!image()}>\n <ImagePlaceholder class={props.class} ref={imgRef} />\n </Show>\n </>\n );\n};\n","import { getWindow, openLinkBlank } from 'src/app/utils/web-api';\nimport { TonConnectUIError } from 'src/errors';\nimport { logDebug, logError } from 'src/app/utils/log';\n\ntype TmaPlatform = 'android' | 'ios' | 'macos' | 'tdesktop' | 'weba' | 'web' | 'unknown';\n\ntype TelegramWebviewProxy = {\n postEvent(eventType: string, eventData: string): void;\n};\n\ntype TelegramWebview = unknown;\n\ndeclare global {\n interface External {\n notify: (message: string) => void;\n }\n\n interface Window {\n TelegramWebviewProxy?: TelegramWebviewProxy;\n TelegramWebview?: TelegramWebview;\n Telegram?: {\n WebApp?: {\n platform?: TmaPlatform;\n version?: string;\n };\n };\n }\n}\n\nlet initParams: Record<string, string> = {};\ntry {\n let locationHash = location.hash.toString();\n initParams = urlParseHashParams(locationHash);\n} catch (e) {}\n\nlet tmaPlatform: TmaPlatform = 'unknown';\nif (initParams?.tgWebAppPlatform) {\n tmaPlatform = (initParams.tgWebAppPlatform as TmaPlatform) ?? 'unknown';\n}\nif (tmaPlatform === 'unknown') {\n const window = getWindow();\n tmaPlatform = window?.Telegram?.WebApp?.platform ?? 'unknown';\n}\n\nlet webAppVersion = '6.0';\nif (initParams?.tgWebAppVersion) {\n webAppVersion = initParams.tgWebAppVersion;\n}\nif (!webAppVersion) {\n const window = getWindow();\n webAppVersion = window?.Telegram?.WebApp?.version ?? '6.0';\n}\n\n/**\n * Returns true if the app is running in TMA on the specified platform.\n * @param platforms\n */\nexport function isTmaPlatform(...platforms: TmaPlatform[]): boolean {\n return platforms.includes(tmaPlatform);\n}\n\n/**\n * Returns true if the app is running in TMA.\n */\nexport function isInTMA(): boolean {\n return tmaPlatform !== 'unknown' || !!getWindow()?.TelegramWebviewProxy;\n}\n\n/**\n * Returns true if the app is running in the Telegram browser.\n */\nexport function isInTelegramBrowser(): boolean {\n const isTelegramWebview = !!getWindow()?.TelegramWebview;\n\n return (isInTMA() || isTelegramWebview) && tmaPlatform === 'unknown';\n}\n\n/**\n * Expand the app window.\n */\nexport function sendExpand(): void {\n postEvent('web_app_expand', {});\n}\n\n/**\n * Opens link in TMA or in new tab and returns a function that closes the tab.\n * @param link The link to open.\n * @param fallback The function to call if the link can't be opened in TMA.\n */\nexport function sendOpenTelegramLink(link: string, fallback?: () => void): void {\n const url = new URL(link);\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n if (fallback) {\n return fallback();\n }\n throw new TonConnectUIError(`Url protocol is not supported: ${url}`);\n }\n if (url.hostname !== 't.me') {\n if (fallback) {\n return fallback();\n }\n throw new TonConnectUIError(`Url host is not supported: ${url}`);\n }\n\n const pathFull = url.pathname + url.search;\n\n if (isIframe() || versionAtLeast('6.1')) {\n postEvent('web_app_open_tg_link', { path_full: pathFull });\n } else {\n openLinkBlank('https://t.me' + pathFull);\n }\n}\n\nfunction isIframe(): boolean {\n try {\n const window = getWindow();\n if (!window) {\n return false;\n }\n return window.parent != null && window !== window.parent;\n } catch (e) {\n return false;\n }\n}\n\nfunction postEvent(eventType: 'web_app_open_tg_link', eventData: { path_full: string }): void;\nfunction postEvent(eventType: 'web_app_expand', eventData: {}): void;\nfunction postEvent(eventType: string, eventData: object): void {\n try {\n const window = getWindow();\n if (!window) {\n throw new TonConnectUIError(`Can't post event to parent window: window is not defined`);\n }\n\n if (window.TelegramWebviewProxy !== undefined) {\n logDebug('postEvent', eventType, eventData);\n window.TelegramWebviewProxy.postEvent(eventType, JSON.stringify(eventData));\n } else if (window.external && 'notify' in window.external) {\n logDebug('postEvent', eventType, eventData);\n window.external.notify(JSON.stringify({ eventType: eventType, eventData: eventData }));\n } else if (isIframe()) {\n const trustedTarget = '*';\n const message = JSON.stringify({ eventType: eventType, eventData: eventData });\n logDebug('postEvent', eventType, eventData);\n window.parent.postMessage(message, trustedTarget);\n } else {\n throw new TonConnectUIError(`Can't post event to TMA`);\n }\n } catch (e) {\n logError(`Can't post event to parent window: ${e}`);\n }\n}\n\nfunction urlParseHashParams(locationHash: string): Record<string, string> {\n locationHash = locationHash.replace(/^#/, '');\n let params: Record<string, string> = {};\n if (!locationHash.length) {\n return params;\n }\n if (locationHash.indexOf('=') < 0 && locationHash.indexOf('?') < 0) {\n params._path = urlSafeDecode(locationHash);\n return params;\n }\n let qIndex = locationHash.indexOf('?');\n if (qIndex >= 0) {\n let pathParam = locationHash.substr(0, qIndex);\n params._path = urlSafeDecode(pathParam);\n locationHash = locationHash.substr(qIndex + 1);\n }\n let query_params = urlParseQueryString(locationHash);\n for (let k in query_params) {\n params[k] = query_params[k]!;\n }\n return params;\n}\n\nfunction urlSafeDecode(urlencoded: string): string {\n try {\n urlencoded = urlencoded.replace(/\\+/g, '%20');\n return decodeURIComponent(urlencoded);\n } catch (e) {\n return urlencoded;\n }\n}\n\nfunction urlParseQueryString(queryString: string): Record<string, string | null> {\n let params: Record<string, string | null> = {};\n if (!queryString.length) {\n return params;\n }\n let queryStringParams = queryString.split('&');\n let i, param, paramName, paramValue;\n for (i = 0; i < queryStringParams.length; i++) {\n param = queryStringParams[i]!.split('=');\n paramName = urlSafeDecode(param[0]!);\n paramValue = param[1] == null ? null : urlSafeDecode(param[1]);\n params[paramName] = paramValue;\n }\n return params;\n}\n\nfunction versionCompare(v1: string | undefined, v2: string | undefined): 0 | 1 | -1 {\n if (typeof v1 !== 'string') v1 = '';\n if (typeof v2 !== 'string') v2 = '';\n let v1List = v1.replace(/^\\s+|\\s+$/g, '').split('.');\n let v2List = v2.replace(/^\\s+|\\s+$/g, '').split('.');\n let a: number, i, p1, p2;\n a = Math.max(v1List.length, v2List.length);\n for (i = 0; i < a; i++) {\n p1 = parseInt(v1List[i]!) || 0;\n p2 = parseInt(v2List[i]!) || 0;\n if (p1 === p2) continue;\n if (p1 > p2) return 1;\n return -1;\n }\n return 0;\n}\n\nfunction versionAtLeast(ver: string): boolean {\n return versionCompare(webAppVersion, ver) >= 0;\n}\n","import { getWindow, isOS } from 'src/app/utils/web-api';\nimport { isTmaPlatform } from 'src/app/utils/tma-api';\n\nexport type Device = 'mobile' | 'tablet' | 'desktop';\n\nexport const maxWidth = {\n mobile: 440,\n tablet: 1020\n};\n\nexport function isDevice(device: keyof typeof maxWidth | 'desktop'): boolean {\n const window = getWindow();\n if (!window) {\n return device === 'desktop';\n }\n\n // TODO: remove this check when weba will fix viewport width\n if (isTmaPlatform('weba')) {\n return true;\n }\n\n const width = window.innerWidth;\n\n switch (device) {\n case 'desktop':\n return width > maxWidth.tablet;\n case 'tablet':\n return width > maxWidth.mobile;\n default:\n case 'mobile':\n return width <= maxWidth.mobile || isOS('ios', 'android', 'ipad');\n }\n}\n\nexport function media(device: Device): string {\n switch (device) {\n case 'mobile':\n return `@media (max-width: ${maxWidth.mobile}px)`;\n case 'tablet':\n return `@media (max-width: ${maxWidth.tablet}px) (min-width: ${maxWidth.mobile}px)`;\n default:\n case 'desktop':\n return `@media (min-width: ${maxWidth.tablet}px)`;\n }\n}\n\nexport function mediaMin(px: number): string {\n return `@media (min-width: ${px}px)`;\n}\n\nexport function mediaMax(px: number): string {\n return `@media (max-width: ${px}px)`;\n}\n\nexport function mediaMinMax(pxMin: number, pxMax: number): string {\n return `@media (min-width: ${pxMin}px) and (max-width: ${pxMax}px)`;\n}\n\nexport const mediaTouch = '@media (hover: none)';\n\nexport const mediaNotTouch = '@media not all and (hover: none)';\n","import { styled } from 'solid-styled-components';\nimport { rgba } from 'src/app/utils/css';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nconst borders: BorderRadiusConfig = {\n m: '100vh',\n s: '8px',\n none: '0'\n};\n\nconst scaleValues = {\n s: 0.02,\n m: 0.04\n};\n\nexport const ButtonStyled = styled.button<{\n appearance: 'primary' | 'flat' | 'secondary';\n scale: 's' | 'm';\n leftIcon: boolean;\n rightIcon: boolean;\n}>`\n display: ${props => (props.leftIcon || props.rightIcon ? 'flex' : 'inline-block')};\n gap: ${props => (props.leftIcon || props.rightIcon ? '6px' : 'unset')};\n align-items: ${props => (props.leftIcon || props.rightIcon ? 'center' : 'unset')};\n justify-content: ${props => (props.leftIcon || props.rightIcon ? 'space-between' : 'unset')};\n background-color: ${props =>\n props.appearance === 'flat'\n ? 'transparent'\n : props.appearance === 'secondary'\n ? props.theme!.colors.background.tint\n : rgba(props.theme!.colors.accent, 0.12)};\n color: ${props =>\n props.appearance === 'secondary'\n ? props.theme!.colors.text.primary\n : props.theme!.colors.accent};\n\n padding: ${props => (props.appearance === 'flat' ? '0' : '9px 16px')};\n padding-left: ${props => (props.leftIcon && props.appearance !== 'flat' ? '12px' : '16px')};\n padding-right: ${props => (props.rightIcon && props.appearance !== 'flat' ? '12px' : '16px')};\n border: none;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\n\n font-size: 14px;\n font-weight: 510;\n line-height: 18px;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 + scaleValues[props.scale]})`};\n }\n }\n\n &:active {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 - scaleValues[props.scale]})`};\n }\n\n ${mediaTouch} {\n &:active {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 - scaleValues[props.scale] * 2})`};\n }\n }\n`;\n","import { splitProps, untrack } from 'solid-js';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\n\nexport function useDataAttributes<T extends object>(props: T): WithDataAttributes {\n const keys = untrack(() => Object.keys(props).filter(key => key.startsWith('data-')));\n const [dataAttrs] = splitProps(props, keys as (keyof T)[]);\n return dataAttrs;\n}\n","import { Component, JSXElement } from 'solid-js';\nimport { ButtonStyled } from 'src/app/components/button/style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\n\nexport interface ButtonProps extends Styleable, WithDataAttributes {\n appearance?: 'primary' | 'flat' | 'secondary';\n scale?: 's' | 'm';\n leftIcon?: JSXElement;\n rightIcon?: JSXElement;\n iconFloatRight?: boolean;\n children: JSXElement;\n onClick?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n onMouseEnter?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n onMouseLeave?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n disabled?: boolean;\n ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void) | undefined;\n}\n\nexport const Button: Component<ButtonProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <ButtonStyled\n type={'button'}\n appearance={props.appearance || 'primary'}\n class={props.class}\n onClick={e => props.onClick?.(e)}\n onMouseEnter={e => props.onMouseEnter?.(e)}\n onMouseLeave={e => props.onMouseLeave?.(e)}\n ref={props.ref}\n disabled={props.disabled}\n scale={props.scale || 'm'}\n leftIcon={!!props.leftIcon}\n rightIcon={!!props.rightIcon}\n data-tc-button=\"true\"\n {...dataAttrs}\n >\n {props.leftIcon}\n {props.children}\n {props.rightIcon}\n </ButtonStyled>\n );\n};\n","import { createSignal, children, createMemo, createComputed, untrack, batch, createEffect } from 'solid-js';\n\nfunction nextFrame(fn) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nconst Transition = props => {\n let el;\n let first = true;\n const [s1, set1] = createSignal();\n const [s2, set2] = createSignal();\n const resolved = children(() => props.children);\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\"\n };\n });\n\n function enterTransition(el, prev) {\n if (!first || props.appear) {\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n batch(() => {\n s1() !== el && set1(el);\n s2() === el && set2(undefined);\n });\n onAfterEnter && onAfterEnter(el);\n if (props.mode === \"inout\") exitTransition(el, prev);\n }\n }\n }\n\n prev && !props.mode ? set2(el) : set1(el);\n }\n\n function exitTransition(el, prev) {\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n if (!prev.parentNode) return endTransition();\n onBeforeExit && onBeforeExit(prev);\n prev.classList.add(...exitClasses);\n prev.classList.add(...exitActiveClasses);\n nextFrame(() => {\n prev.classList.remove(...exitClasses);\n prev.classList.add(...exitToClasses);\n });\n onExit && onExit(prev, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n prev.addEventListener(\"transitionend\", endTransition);\n prev.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === prev) {\n prev.removeEventListener(\"transitionend\", endTransition);\n prev.removeEventListener(\"animationend\", endTransition);\n prev.classList.remove(...exitActiveClasses);\n prev.classList.remove(...exitToClasses);\n s1() === prev && set1(undefined);\n onAfterExit && onAfterExit(prev);\n if (props.mode === \"outin\") enterTransition(el, prev);\n }\n }\n }\n\n createComputed(prev => {\n el = resolved();\n\n while (typeof el === \"function\") el = el();\n\n return untrack(() => {\n if (el && el !== prev) {\n if (props.mode !== \"outin\") enterTransition(el, prev);else if (first) set1(el);\n }\n\n if (prev && prev !== el && props.mode !== \"inout\") exitTransition(el, prev);\n first = false;\n return el;\n });\n });\n return [s1, s2];\n};\n\nfunction getRect(element) {\n const {\n top,\n bottom,\n left,\n right,\n width,\n height\n } = element.getBoundingClientRect();\n const parentRect = element.parentNode.getBoundingClientRect();\n return {\n top: top - parentRect.top,\n bottom,\n left: left - parentRect.left,\n right,\n width,\n height\n };\n}\n\nconst TransitionGroup = props => {\n const resolved = children(() => props.children);\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\",\n moveClass: props.moveClass || name + \"-move\"\n };\n });\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const [combined, setCombined] = createSignal();\n let p = [];\n let first = true;\n createComputed(() => {\n const c = resolved();\n const comb = [...c];\n const next = new Set(c);\n const prev = new Set(p);\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n\n for (let i = 0; i < c.length; i++) {\n const el = c[i];\n\n if (!first && !prev.has(el)) {\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n onAfterEnter && onAfterEnter(el);\n }\n }\n }\n }\n\n for (let i = 0; i < p.length; i++) {\n const old = p[i];\n\n if (!next.has(old) && old.parentNode) {\n comb.splice(i, 0, old);\n onBeforeExit && onBeforeExit(old);\n old.classList.add(...exitClasses);\n old.classList.add(...exitActiveClasses);\n nextFrame(() => {\n old.classList.remove(...exitClasses);\n old.classList.add(...exitToClasses);\n });\n onExit && onExit(old, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n old.addEventListener(\"transitionend\", endTransition);\n old.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === old) {\n old.removeEventListener(\"transitionend\", endTransition);\n old.removeEventListener(\"animationend\", endTransition);\n old.classList.remove(...exitActiveClasses);\n old.classList.remove(...exitToClasses);\n onAfterExit && onAfterExit(old);\n p = p.filter(i => i !== old);\n setCombined(p);\n }\n }\n }\n }\n\n p = comb;\n setCombined(comb);\n });\n createEffect(nodes => {\n const c = combined();\n c.forEach(child => {\n let n;\n\n if (!(n = nodes.get(child))) {\n nodes.set(child, n = {\n pos: getRect(child),\n new: !first\n });\n } else if (n.new) {\n n.new = false;\n n.newPos = getRect(child);\n }\n\n if (n.new) {\n child.addEventListener(\"transitionend\", () => {\n n.new = false;\n child.parentNode && (n.newPos = getRect(child));\n }, {\n once: true\n });\n }\n\n n.newPos && (n.pos = n.newPos);\n n.newPos = getRect(child);\n });\n\n if (first) {\n first = false;\n return nodes;\n }\n\n c.forEach(child => {\n const c = nodes.get(child);\n const oldPos = c.pos;\n const newPos = c.newPos;\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.moved = true;\n const s = child.style;\n s.transform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n }\n });\n document.body.offsetHeight;\n c.forEach(child => {\n const c = nodes.get(child);\n\n if (c.moved) {\n c.moved = false;\n const s = child.style;\n const moveClasses = classnames().moveClass.split(\" \");\n child.classList.add(...moveClasses);\n s.transform = s.transitionDuration = \"\";\n\n function endTransition(e) {\n if (e && e.target !== child || !child.parentNode) return;\n\n if (!e || /transform$/.test(e.propertyName)) {\n child.removeEventListener(\"transitionend\", endTransition);\n child.classList.remove(...moveClasses);\n }\n }\n\n child.addEventListener(\"transitionend\", endTransition);\n }\n });\n return nodes;\n }, new Map());\n return combined;\n};\n\nexport { Transition, TransitionGroup };\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function clickOutside(el: Element, accessor: Accessor<() => void>): void {\n const onClick = (e: Event): void | boolean => !el.contains(e.target as Node) && accessor()?.();\n document.body.addEventListener('click', onClick);\n\n onCleanup(() => document.body.removeEventListener('click', onClick));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n clickOutside: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function escPressed(_: Element, accessor: Accessor<() => void>): void {\n const onKeyPress = (e: Event): void | boolean => {\n if ((e as KeyboardEvent).key === 'Escape') {\n (document.activeElement as HTMLElement)?.blur();\n accessor()?.();\n }\n };\n document.body.addEventListener('keydown', onKeyPress);\n\n onCleanup(() => document.body.removeEventListener('keydown', onKeyPress));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n keyPressed: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\nimport { createMacrotask, getUserAgent } from 'src/app/utils/web-api';\n\n/**\n * A directive that enhances the behavior of modal-like components on Android devices, ensuring\n * a native-like user experience.\n *\n * When enabled, this directive adds a new entry to the browser's history stack, providing a target\n * for the back button press. It then listens for the 'popstate' event, which is triggered when\n * the user presses the back button. In response to the 'popstate' event, the directive calls\n * the provided `onClose` callback to handle the modal dismissal.\n *\n * The functionality can be easily toggled using the isEnabled property.\n *\n * Usage:\n * ```jsx\n * <div use:androidBackHandler={{ isEnabled: true, onClose: () => setIsModalOpen(false) }}>\n * ... your modal content ...\n * </div>\n * ```\n */\nexport default function androidBackHandler(\n _: Element,\n config: Accessor<{\n isEnabled: boolean;\n onClose: () => void;\n }>\n): void {\n const { isEnabled, onClose } = config();\n\n // Terminate the execution if the directive is disabled.\n if (!isEnabled) {\n return;\n }\n\n // Terminate the execution if the user's device is not Android.\n const userOSIsAndroid = getUserAgent().os === 'android';\n if (!userOSIsAndroid) {\n return;\n }\n\n // Create a point that the back button can target by pushing a new state into the browser's history stack.\n window.history.pushState(ROUTE_STATE, '');\n\n // Handle the 'popstate' event triggered by the back button press.\n const popstateHandler = (event: PopStateEvent): void => {\n // Prevent the browser's default back navigation,\n event.preventDefault();\n // and instead call a provided function to handle the modal dismissal.\n onClose();\n };\n window.addEventListener('popstate', popstateHandler, { once: true });\n\n // Clean up when the directive's lifecycle ends\n onCleanup((): void => {\n // Remove the 'popstate' event handler.\n window.removeEventListener('popstate', popstateHandler);\n\n // Create a macrotask using `requestAnimationFrame()` to ensure that any pending microtasks,\n // such as asynchronous operations from other developers (e.g., tracking wallet connection status\n // and calling `history.pushState()), are completed before we proceed with cleaning up the history state.\n createMacrotask(() => {\n // If the current history state is the one that was added by this directive,\n if (window.history.state?.[ROUTE_STATE_KEY] === true) {\n // navigate back in the browser's history to clean up the state.\n window.history.back();\n }\n });\n });\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n androidBackHandler: {\n isEnabled: boolean;\n onClose: () => void;\n };\n }\n }\n}\n\n/**\n * Unique identifier for the history entry that is added by this directive.\n */\nconst ROUTE_STATE_KEY = 'androidBackHandler';\n\n/**\n * The state for the history entry that is added by this directive.\n */\nconst ROUTE_STATE = {\n [ROUTE_STATE_KEY]: true\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { styled, useTheme } from 'solid-styled-components';\n\ninterface ArrowIconProps {\n fill?: Property.Color;\n direction?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst rotationDegrees = {\n left: 0,\n top: 90,\n right: 180,\n bottom: 270\n};\n\nexport const ArrowIcon: Component<ArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n const direction = (): 'left' | 'right' | 'top' | 'bottom' => props.direction || 'left';\n\n const Svg = styled('svg')<{ svgDirection: 'left' | 'right' | 'top' | 'bottom' }>`\n transform: rotate(${props => rotationDegrees[props.svgDirection]}deg);\n transition: transform 0.1s ease-in-out;\n `;\n\n return (\n <Svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n svgDirection={direction()}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.2122 14.3407C10.5384 14.0854 10.5959 13.614 10.3406 13.2878L6.20237 8.00003L10.3406 2.71227C10.5959 2.38607 10.5384 1.91469 10.2122 1.6594C9.88604 1.40412 9.41465 1.46161 9.15937 1.7878L4.65937 7.5378C4.44688 7.80932 4.44688 8.19074 4.65937 8.46226L9.15937 14.2123C9.41465 14.5385 9.88604 14.5959 10.2122 14.3407Z\"\n fill={fill()}\n />\n </Svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CloseIconProps {\n fill?: Property.Color;\n}\n\nexport const CloseIcon: Component<CloseIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.71966 2.71968C3.01255 2.42678 3.48743 2.42677 3.78032 2.71966L8.00002 6.93925L12.2197 2.71967C12.5126 2.42677 12.9874 2.42678 13.2803 2.71967C13.5732 3.01257 13.5732 3.48744 13.2803 3.78033L9.06068 7.99991L13.2803 12.2197C13.5732 12.5126 13.5732 12.9874 13.2803 13.2803C12.9874 13.5732 12.5126 13.5732 12.2197 13.2803L8.00002 9.06057L3.78033 13.2803C3.48744 13.5732 3.01257 13.5732 2.71967 13.2803C2.42678 12.9874 2.42677 12.5126 2.71967 12.2197L6.93936 7.99991L2.71968 3.78034C2.42678 3.48745 2.42677 3.01257 2.71966 2.71968Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nexport const IconButtonStyled = styled.button`\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${props => props.theme!.colors.background.tint};\n border: none;\n cursor: pointer;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n","import type { Property } from 'csstype';\nimport { Component, JSXElement, Match, Show, Switch } from 'solid-js';\nimport { ArrowIcon } from 'src/app/components/icons/arrow-icon';\nimport { CloseIcon } from 'src/app/components/icons/close-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { IconButtonStyled } from './style';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { QuestionIcon } from 'src/app/components';\n\nexport interface IconButtonProps extends Styleable, WithDataAttributes {\n fill?: Property.Color;\n children?: JSXElement;\n icon?: 'close' | 'arrow' | 'question' | JSXElement;\n onClick: () => void;\n}\n\nexport const IconButton: Component<IconButtonProps> = props => {\n const dataAttrs = useDataAttributes(props);\n const icon = (): 'close' | 'arrow' | 'question' | JSXElement => props.icon || 'close';\n return (\n <IconButtonStyled\n class={props.class}\n onClick={() => props.onClick()}\n data-tc-icon-button=\"true\"\n {...dataAttrs}\n >\n <Show when={!!props.children}>{props.children}</Show>\n <Show when={!props.children}>\n <Switch>\n <Match when={icon() === 'close'}>\n <CloseIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'arrow'}>\n <ArrowIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'question'}>\n <QuestionIcon fill={props.fill} />\n </Match>\n <Match when={typeof icon() !== 'string'}>{icon()}</Match>\n </Switch>\n </Show>\n </IconButtonStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { IconButton } from 'src/app/components/icon-button';\nimport { media } from 'src/app/styles/media';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { rgba } from 'src/app/utils/css';\n\nexport const borders: BorderRadiusConfig = {\n m: '24px',\n s: '16px',\n none: '0'\n};\n\nexport const ModalBackgroundStyled = styled.div`\n display: flex;\n position: fixed;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n padding: 20px 0;\n overflow-y: auto;\n\n ${media('mobile')} {\n padding-bottom: 0;\n }\n`;\n\nexport const ModalWrapperClass = css`\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 16px 64px rgba(0, 0, 0, 0.16);\n width: fit-content;\n margin: auto;\n\n ${media('mobile')} {\n width: 100%;\n height: fit-content;\n margin: auto 0 0 0;\n }\n`;\n\nexport const ModalBodyStyled = styled.div`\n position: relative;\n min-height: 100px;\n width: 416px;\n padding: 44px 56px 24px;\n\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.04);\n\n background-color: ${props => props.theme!.colors.background.primary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const CloseButtonStyled = styled(IconButton)`\n position: absolute;\n right: 16px;\n top: 16px;\n`;\n\nexport const ModalFooterStyled = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 16px 16px 18px;\n border-radius: 0 0 ${props => borders[props.theme!.borderRadius]}\n ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const QuestionButtonStyled = styled(IconButton)`\n background-color: ${props => rgba(props.theme!.colors.icon.secondary, 0.12)};\n`;\n","import { logWarning } from 'src/app/utils/log';\n\n/**\n * A mock animation timeline class for environments that do not support animations.\n */\nclass AnimationTimelineNoop implements AnimationTimeline {\n public readonly currentTime: number = 0;\n}\n\n/**\n * A mock animation class for environments that do not support animations.\n */\nclass AnimationNoop implements Animation {\n private static _instance: AnimationNoop | null = null;\n\n public static create(): Animation {\n if (!AnimationNoop._instance) {\n logWarning(\n 'Animation is not supported in this environment: please consider using the `web-animations-js` polyfill to provide a fallback implementation of the Web Animations API.'\n );\n AnimationNoop._instance = new AnimationNoop();\n }\n return AnimationNoop._instance;\n }\n\n public readonly currentTime: number = 0;\n\n public readonly playbackRate: number = 1;\n\n public readonly startTime: number | null = null;\n\n public readonly timeline: AnimationTimeline = new AnimationTimelineNoop();\n\n public readonly finished: Promise<Animation> = Promise.resolve(this);\n\n public readonly effect: AnimationEffect | null = null;\n\n public readonly id: string = '';\n\n public readonly pending: boolean = false;\n\n public readonly playState: AnimationPlayState = 'finished';\n\n public readonly replaceState: AnimationReplaceState = 'active';\n\n public readonly ready: Promise<Animation> = Promise.resolve(this);\n\n public readonly oncancel: ((this: Animation, event: AnimationPlaybackEvent) => unknown) | null =\n null;\n\n public readonly onfinish: ((this: Animation, event: AnimationPlaybackEvent) => unknown) | null =\n null;\n\n public readonly onremove: ((this: Animation, ev: Event) => unknown) | null = null;\n\n private constructor() {}\n\n public cancel(): void {\n // no-op\n }\n\n public finish(): void {\n // no-op\n }\n\n public pause(): void {\n // no-op\n }\n\n public play(): void {\n // no-op\n }\n\n public reverse(): void {\n // no-op\n }\n\n public addEventListener(\n _type: string,\n _listener: EventListenerOrEventListenerObject | null,\n _options?: boolean | AddEventListenerOptions\n ): void {\n // no-op\n }\n\n public dispatchEvent(_event: Event): boolean {\n return false;\n }\n\n public removeEventListener(\n _type: string,\n _callback: EventListenerOrEventListenerObject | null,\n _options?: EventListenerOptions | boolean\n ): void {\n // no-op\n }\n\n public updatePlaybackRate(_playbackRate: number): void {\n // no-op\n }\n\n public commitStyles(): void {\n // no-op\n }\n\n public persist(): void {\n // no-op\n }\n}\n\n/**\n * A function that performs an animation on an element using Web Animations API.\n * If the environment supports animations, it uses the native animate function.\n * If not, it returns an instance of AnimationNoop to prevent code from breaking.\n *\n * @param element - The element to animate.\n * @param keyframes - The keyframes that define the animation.\n * @param options - The options that control the animation.\n * @returns An instance of Animation.\n */\nexport function animate(\n element: Element,\n keyframes: Keyframe[] | PropertyIndexedKeyframes | null,\n options?: number | KeyframeAnimationOptions\n): Animation {\n if ('animate' in element) {\n return element.animate(keyframes, options);\n }\n return AnimationNoop.create();\n}\n","import cn from 'classnames';\nimport { Component, createEffect, JSXElement, Show } from 'solid-js';\nimport { Transition } from 'solid-transition-group';\nimport clickOutsideDirective from 'src/app/directives/click-outside';\nimport keyPressedDirective from 'src/app/directives/key-pressed';\nimport androidBackHandlerDirective from 'src/app/directives/android-back-handler';\nimport { Styleable } from 'src/app/models/styleable';\nimport { isDevice, media } from 'src/app/styles/media';\nimport {\n borders,\n CloseButtonStyled,\n ModalBackgroundStyled,\n ModalBodyStyled,\n ModalFooterStyled,\n ModalWrapperClass,\n QuestionButtonStyled\n} from './style';\nimport { css, useTheme } from 'solid-styled-components';\nimport { disableScroll, enableScroll } from 'src/app/utils/web-api';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { TonConnectBrand } from 'src/app/components';\nimport { animate } from 'src/app/utils/animate';\n\nconst clickOutside = clickOutsideDirective;\nconst keyPressed = keyPressedDirective;\nconst androidBackHandler = androidBackHandlerDirective;\n\nexport interface ModalProps extends Styleable, WithDataAttributes {\n children: JSXElement;\n opened: boolean;\n enableAndroidBackHandler: boolean;\n onClose: () => void;\n onClickQuestion?: () => void;\n showFooter: boolean;\n}\n\nexport const Modal: Component<ModalProps> = props => {\n const theme = useTheme();\n const dataAttrs = useDataAttributes(props);\n\n createEffect(() => {\n if (props.opened) {\n disableScroll();\n } else {\n enableScroll();\n }\n });\n\n return (\n <Transition\n onBeforeEnter={el => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n animate(el, [{ opacity: 0 }, { opacity: 1 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n animate(\n el.firstElementChild!,\n [{ transform: 'translateY(390px)' }, { transform: 'translateY(0)' }],\n {\n duration\n }\n );\n }\n }}\n onExit={(el, done) => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n const backgroundAnimation = animate(el, [{ opacity: 1 }, { opacity: 0 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n const contentAnimation = animate(\n el.firstElementChild!,\n [{ transform: 'translateY(0)' }, { transform: 'translateY(390px)' }],\n {\n duration\n }\n );\n\n Promise.all([backgroundAnimation.finished, contentAnimation.finished]).then(\n done\n );\n } else {\n backgroundAnimation.finished.then(done);\n }\n }}\n >\n <Show when={props.opened}>\n <ModalBackgroundStyled data-tc-modal=\"true\" {...dataAttrs}>\n <div\n class={cn(\n ModalWrapperClass,\n css`\n border-radius: ${borders[theme!.borderRadius]};\n background-color: ${theme.colors.background.tint};\n\n ${media('mobile')} {\n border-radius: ${borders[theme!.borderRadius]}\n ${borders[theme!.borderRadius]} 0 0;\n }\n `\n )}\n use:clickOutside={() => props.onClose()}\n use:keyPressed={() => props.onClose()}\n use:androidBackHandler={{\n isEnabled: props.enableAndroidBackHandler,\n onClose: () => props.onClose()\n }}\n >\n <ModalBodyStyled class={props.class}>\n <CloseButtonStyled icon=\"close\" onClick={() => props.onClose()} />\n {props.children}\n </ModalBodyStyled>\n <Show when={props.onClickQuestion && props.showFooter}>\n <ModalFooterStyled>\n <TonConnectBrand />\n <QuestionButtonStyled\n onClick={props.onClickQuestion!}\n icon=\"question\"\n />\n </ModalFooterStyled>\n </Show>\n </div>\n </ModalBackgroundStyled>\n </Show>\n </Transition>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst wrapperBorderRadius: BorderRadiusConfig = {\n m: '22px',\n s: '12px',\n none: '0'\n};\n\nconst sliderBorderRadius: BorderRadiusConfig = {\n m: '18px',\n s: '8px',\n none: '0'\n};\n\nexport const TabBarStyled = styled.div`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n width: fit-content;\n justify-items: center;\n gap: 4px;\n\n position: relative;\n padding: 4px;\n border-radius: ${props => wrapperBorderRadius[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.secondary};\n`;\n\nexport const SliderStyled = styled.div<{ right: boolean }>`\n position: absolute;\n top: 4px;\n left: 4px;\n\n height: calc(100% - 8px);\n width: calc(50% - 4px);\n\n border-radius: ${props => sliderBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.segment};\n\n transform: ${props => (props.right ? 'translateX(100%)' : 'translateX(0)')};\n\n transition: transform 0.13s ease-in-out;\n`;\n\nexport const InputStyled = styled.input`\n display: none;\n`;\n\nexport const LabelStyled = styled.label<{ isActive: boolean }>`\n padding: 9px 12px;\n z-index: 1;\n\n cursor: ${props => (props.isActive ? 'default' : 'pointer')};\n\n transition: transform 0.13s ease-in-out;\n\n &:hover {\n transform: ${props => (props.isActive ? 'none' : 'scale(1.025)')};\n }\n\n > * {\n ${props => (!props.isActive ? `color: ${props.theme!.colors.text.secondary};` : '')}\n }\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { InputStyled, LabelStyled, SliderStyled, TabBarStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface TabBarProps extends Styleable {\n tab1: JSXElement;\n tab2: JSXElement;\n\n selectedTabIndex: number;\n\n onSelectedTabIndexChange?: (index: number) => void;\n}\n\nexport const TabBar: Component<TabBarProps> = props => {\n const groupName = 'tabBar' + Math.floor(Math.random() * 10000);\n\n return (\n <TabBarStyled class={props.class} data-tc-tab-bar=\"true\">\n <SliderStyled right={props.selectedTabIndex === 1} />\n <LabelStyled isActive={props.selectedTabIndex === 0}>\n <InputStyled\n type=\"radio\"\n name={groupName}\n checked={props.selectedTabIndex === 0}\n onInput={() => props.onSelectedTabIndexChange?.(0)}\n />\n {props.tab1}\n </LabelStyled>\n <LabelStyled isActive={props.selectedTabIndex === 1}>\n <InputStyled\n type=\"radio\"\n checked={props.selectedTabIndex === 1}\n name={groupName}\n onInput={() => props.onSelectedTabIndexChange?.(1)}\n />\n {props.tab2}\n </LabelStyled>\n </TabBarStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Image } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { toPx } from 'src/app/utils/css';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nconst backgroundBorders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst imageBorders: BorderRadiusConfig = {\n m: '12px',\n s: '8px',\n none: '0'\n};\n\nexport const qrNormalSize = 256;\nexport const imgSizeDefault = 60;\n\nexport const picSizeDefault = 48;\n\nconst qrPaddingTop = 24;\n\nexport const CopyIconButton = styled.div`\n width: 52px;\n height: 52px;\n background: transparent;\n position: absolute;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.125s ease-in-out;\n`;\n\nexport const QrCodeBackground = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background-color: ${props => props.theme!.colors.background.qr};\n border-radius: ${props => backgroundBorders[props.theme!.borderRadius]};\n padding: ${toPx(qrPaddingTop)} 0;\n height: ${toPx(qrNormalSize + qrPaddingTop * 2)};\n width: 100%;\n\n overflow: hidden;\n cursor: pointer;\n border: none;\n\n ${mediaNotTouch} {\n &:hover {\n ${CopyIconButton.class} {\n transform: scale(1.04);\n }\n }\n }\n\n &:active {\n ${CopyIconButton.class} {\n transform: scale(0.96);\n }\n }\n\n ${mediaTouch} {\n &:active {\n ${CopyIconButton.class} {\n transform: scale(0.92);\n }\n }\n }\n`;\n\nexport const QrCodeWrapper = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0 auto;\n\n > div:first-child {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n rect {\n fill: transparent;\n }\n\n path {\n fill: ${props => props.theme!.colors.constant.black};\n }\n`;\n\nexport const ImageBackground = styled.div`\n position: absolute;\n width: ${toPx(imgSizeDefault)};\n height: ${toPx(imgSizeDefault)};\n background: ${props => props.theme!.colors.background.qr};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const ImageStyled = styled(Image)<{ size: number }>`\n width: ${props => toPx(props.size)};\n height: ${props => toPx(props.size)};\n border-radius: ${props => imageBorders[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.qr};\n`;\n\nexport const CopiedBoxStyled = styled.div`\n position: absolute;\n bottom: 14px;\n left: 50%;\n transform: translate(-50%, 0);\n\n display: flex;\n gap: 6px;\n align-items: center;\n border-radius: 18px;\n min-width: 126px;\n padding: 9px 16px 9px 10px;\n\n filter: drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.08));\n background-color: ${props => props.theme!.colors.background.segment};\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { TonConnectUIError } from 'src/errors';\n\nexport async function copyToClipboard(text: string): Promise<void> {\n try {\n if (!navigator?.clipboard) {\n throw new TonConnectUIError('Clipboard API not available');\n }\n\n return await navigator.clipboard.writeText(text);\n } catch (e) {}\n\n fallbackCopyTextToClipboard(text);\n}\n\nfunction fallbackCopyTextToClipboard(text: string): void {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(textArea);\n }\n}\n","import { Component, createEffect, createSignal, Show } from 'solid-js';\nimport {\n CopiedBoxStyled,\n CopyIconButton,\n ImageBackground,\n ImageStyled,\n imgSizeDefault,\n picSizeDefault,\n QrCodeBackground,\n QrCodeWrapper,\n qrNormalSize\n} from './style';\nimport qrcode from 'qrcode-generator';\nimport { Transition } from 'solid-transition-group';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { Styleable } from 'src/app/models/styleable';\nimport { toPx } from 'src/app/utils/css';\nimport { CopyLightIcon, SuccessIcon, Text } from 'src/app/components';\nimport { animate } from 'src/app/utils/animate';\n\nexport interface QRCodeProps extends Styleable {\n sourceUrl: string;\n imageUrl?: string;\n disableCopy?: boolean;\n}\n\nexport const QRCode: Component<QRCodeProps> = props => {\n let qrCodeCanvasRef: HTMLDivElement | undefined;\n let qrCodeWrapperRef: HTMLDivElement | undefined;\n let imageRef: HTMLDivElement | undefined;\n\n const [copyButtonOpened, setCopyButtonOpened] = createSignal(false);\n\n const [picSize, setPicSize] = createSignal(picSizeDefault);\n\n createEffect(() => {\n const errorCorrectionLevel = 'L';\n const cellSize = 4;\n const qr = qrcode(0, errorCorrectionLevel);\n qr.addData(props.sourceUrl);\n qr.make();\n qrCodeCanvasRef!.innerHTML = qr.createSvgTag(cellSize, 0);\n const qrSize = qrCodeCanvasRef!.firstElementChild!.clientWidth;\n\n const scale = Math.round((qrNormalSize / qrSize) * 100000) / 100000;\n\n if (imageRef) {\n const imgSize = Math.ceil(imgSizeDefault / (scale * cellSize)) * cellSize;\n const imgOffset = toPx(Math.ceil((qrSize - imgSize) / (2 * cellSize)) * cellSize);\n imageRef.style.top = imgOffset;\n imageRef.style.left = imgOffset;\n imageRef.style.height = toPx(imgSize);\n imageRef.style.width = toPx(imgSize);\n\n setPicSize(Math.round(picSizeDefault / scale));\n }\n\n qrCodeWrapperRef!.style.transform = `scale(${scale})`;\n });\n\n let timeoutId: null | ReturnType<typeof setTimeout> = null;\n const onCopyClick = (): void => {\n setCopyButtonOpened(true);\n copyToClipboard(props.sourceUrl);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => setCopyButtonOpened(false), 1500);\n };\n\n return (\n <QrCodeBackground class={props.class} onClick={onCopyClick}>\n <QrCodeWrapper ref={qrCodeWrapperRef}>\n <div ref={qrCodeCanvasRef} />\n <Show when={props.imageUrl}>\n <ImageBackground ref={imageRef}>\n <ImageStyled src={props.imageUrl!} alt=\"\" size={picSize()} />\n </ImageBackground>\n </Show>\n </QrCodeWrapper>\n <Transition\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translate(-50%, 44px)' },\n { opacity: 1, transform: 'translate(-50%, 0)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n );\n }}\n onExit={(el, done) => {\n animate(\n el,\n [\n { opacity: 1, transform: 'translate(-50%, 0)' },\n { opacity: 0, transform: 'translate(-50%, 44px)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n ).finished.then(() => {\n done();\n });\n }}\n >\n <Show when={copyButtonOpened() && !props.disableCopy}>\n <CopiedBoxStyled>\n <SuccessIcon size=\"xs\" />\n <Text translationKey=\"common.linkCopied\">Link Copied</Text>\n </CopiedBoxStyled>\n </Show>\n </Transition>\n <Show when={!props.disableCopy}>\n <CopyIconButton>\n <CopyLightIcon />\n </CopyIconButton>\n </Show>\n </QrCodeBackground>\n );\n};\n","import { createContext, createSignal, useContext } from 'solid-js';\nimport { createStore } from 'solid-js/store';\n\n// src/index.ts\nvar deepReadObject = (obj, path, defaultValue) => {\n const value = path.trim().split(\".\").reduce((a, b) => a ? a[b] : void 0, obj);\n return value !== void 0 ? value : defaultValue;\n};\nvar template = (str, params, reg = /{{(.*?)}}/g) => str.replace(reg, (_, key) => deepReadObject(params, key, \"\"));\nvar createI18nContext = (init = {}, lang = navigator.language in init ? navigator.language : Object.keys(init)[0]) => {\n const [locale, setLocale] = createSignal(lang);\n const [dict, setDict] = createStore(init);\n const translate = (key, params, defaultValue) => {\n const val = deepReadObject(dict[locale()], key, defaultValue || \"\");\n if (typeof val === \"function\")\n return val(params);\n if (typeof val === \"string\")\n return template(val, params || {});\n return val;\n };\n const actions = {\n add(lang2, table) {\n setDict(lang2, (t) => Object.assign(t || {}, table));\n },\n locale: (lang2) => lang2 ? setLocale(lang2) : locale(),\n dict: (lang2) => deepReadObject(dict, lang2)\n };\n return [translate, actions];\n};\nvar I18nContext = createContext({});\nvar useI18n = () => useContext(I18nContext);\n\nexport { I18nContext, createI18nContext, useI18n };\n","import type { Property } from 'csstype';\nimport { styled } from 'solid-styled-components';\n\nexport const TextStyled = styled.div<{\n fontSize: Property.FontSize;\n fontWeight: Property.FontWeight;\n lineHeight: Property.LineHeight;\n color: Property.Color;\n}>`\n font-style: normal;\n font-weight: ${props => props.fontWeight};\n font-size: ${props => props.fontSize};\n line-height: ${props => props.lineHeight};\n\n color: ${props => props.color};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport type { Property } from 'csstype';\nimport { Component, createEffect, JSXElement, mergeProps } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TextStyled } from './style';\n\nexport interface TextProps extends Styleable, Translateable {\n children?: JSXElement;\n fontSize?: Property.FontSize;\n fontWeight?: Property.FontWeight;\n lineHeight?: Property.LineHeight;\n letterSpacing?: Property.LetterSpacing;\n color?: Property.Color;\n\n cursor?: 'default' | 'unset';\n}\n\nexport const Text: Component<TextProps> = inputs => {\n const theme = useTheme();\n const [t] = useI18n();\n let textRef: HTMLDivElement | undefined;\n\n const color = (): Property.Color => inputs.color || theme.colors.text.primary;\n\n const props = mergeProps(\n {\n fontSize: '14px',\n fontWeight: '510',\n lineHeight: '130%'\n },\n inputs\n );\n\n createEffect(() => {\n if (!textRef) {\n return;\n }\n\n if (props.cursor === 'unset') {\n return;\n }\n\n if (getComputedStyle(textRef).cursor !== 'pointer') {\n textRef.style.cursor = 'default';\n }\n });\n\n return (\n <TextStyled\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n lineHeight={props.lineHeight}\n color={color()}\n class={props.class}\n ref={textRef}\n data-tc-text=\"true\"\n >\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </TextStyled>\n );\n};\n","import { Component, JSXElement } from 'solid-js';\nimport { Image } from 'src/app/components';\nimport { styled } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface WalletImageProps extends Styleable {\n src: string;\n badge?: JSXElement;\n}\n\nconst ImageContainer = styled.div`\n position: relative;\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border: 0.5px solid rgba(0, 0, 0, 0.08);\n border-radius: inherit;\n }\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 100%;\n height: 100%;\n border-radius: inherit;\n`;\n\nexport const WalletImage: Component<WalletImageProps> = props => {\n return (\n <ImageContainer class={props.class}>\n <ImageStyled src={props.src} />\n {props.badge}\n </ImageContainer>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from '../typography/text';\nimport { Image } from '../image';\nimport { media, mediaNotTouch, mediaTouch } from 'src/app/styles/media';\nimport { WalletImage } from './wallet-image';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst badgeBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const WalletUlContainer = styled.ul`\n display: flex;\n gap: 0;\n width: 100%;\n overflow-x: auto;\n padding: 8px 12px 16px 12px;\n margin: 0;\n list-style: none;\n flex-wrap: nowrap;\n\n &&::-webkit-scrollbar {\n display: none;\n }\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n > li {\n display: flex;\n flex: 1;\n min-width: 78px;\n height: fit-content;\n }\n\n > li > button {\n width: 100%;\n }\n`;\n\nexport const WalletItemStyled = styled.button`\n position: relative;\n cursor: pointer;\n border: none;\n background-color: unset;\n padding: 8px 4px;\n width: 100%;\n min-width: 78px;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n\nexport const ImageStyled = styled(WalletImage)`\n width: 60px;\n height: 60px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n margin-bottom: 8px;\n position: relative;\n`;\n\nexport const BadgeStyled = styled(Image)`\n position: absolute;\n right: -6px;\n bottom: -6px;\n width: 24px;\n height: 24px;\n border-radius: ${props => badgeBorders[props.theme!.borderRadius]};\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08);\n`;\n\nexport const StyledText = styled(Text)`\n max-width: 90px;\n font-weight: 510;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n ${media('mobile')} {\n max-width: 80px;\n }\n`;\n\nexport const StyledSecondLine = styled(Text)<{ colorPrimary: boolean }>`\n font-weight: ${props => (props.colorPrimary ? '510' : '400')};\n max-width: 90px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n color: ${props =>\n props.colorPrimary ? props.theme!.colors.text.primary : props.theme!.colors.text.secondary};\n\n ${media('mobile')} {\n max-width: 80px;\n }\n`;\n","import { Component, createEffect, JSXElement, onMount } from 'solid-js';\nimport { BadgeStyled, ImageStyled, StyledSecondLine, StyledText, WalletItemStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface WalletItemProps extends Styleable {\n icon: string | JSXElement;\n name: string;\n secondLine?: string;\n secondLineColorPrimary?: boolean;\n badgeUrl?: string;\n onClick: () => void;\n}\n\nexport const WalletItem: Component<WalletItemProps> = props => {\n let ctxRef: HTMLDivElement | null = null;\n\n // adjust letter spacing to fit the wallet name in the item\n const adjustLetterSpacing = (): void => {\n // we can't set `ref` on the `StyledText` directly, so we use a context ref\n const name = ctxRef?.querySelector('div');\n if (name && name.scrollWidth > name.clientWidth) {\n let spacing = 0;\n const minSpacing = -0.4;\n const step = 0.05;\n // reduce letter spacing until the text fits\n while (name.scrollWidth > name.clientWidth && spacing >= minSpacing) {\n spacing -= step;\n name.style.letterSpacing = `${spacing}px`;\n }\n // adjust spacing one more time to make sure the text fits\n if (spacing !== 0) {\n spacing -= step;\n name.style.letterSpacing = `${spacing}px`;\n }\n }\n };\n\n onMount(() => adjustLetterSpacing());\n\n createEffect(() => {\n adjustLetterSpacing();\n });\n\n return (\n <WalletItemStyled\n class={props.class}\n onClick={() => props.onClick()}\n data-tc-wallet-item=\"true\"\n >\n {typeof props.icon === 'string' ? (\n <ImageStyled\n src={props.icon}\n badge={props.badgeUrl && <BadgeStyled src={props.badgeUrl} />}\n />\n ) : (\n props.icon\n )}\n <div ref={el => (ctxRef = el)}>\n <StyledText>{props.name}</StyledText>\n </div>\n {props.secondLine && (\n <StyledSecondLine colorPrimary={props.secondLineColorPrimary ?? true}>\n {props.secondLine}\n </StyledSecondLine>\n )}\n </WalletItemStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H1Styled = styled.h1`\n font-style: normal;\n font-weight: 590;\n font-size: 20px;\n line-height: 28px;\n\n text-align: center;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H1Styled } from './style';\n\nexport interface H1Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H1: Component<H1Props> = props => {\n const [t] = useI18n();\n return (\n <H1Styled class={props.class} data-tc-h1=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H1Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H2Styled = styled.h2`\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 22px;\n\n text-align: center;\n\n color: ${props => props.theme!.colors.text.secondary};\n\n margin-top: 0;\n margin-bottom: 32px;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H2Styled } from './style';\n\nexport interface H2Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H2: Component<H2Props> = props => {\n const [t] = useI18n();\n return (\n <H2Styled class={props.class} data-tc-h2=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H2Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H3Styled = styled.h3`\n font-style: normal;\n font-weight: 510;\n font-size: 16px;\n line-height: 20px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H3Styled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface H3Props extends Translateable, Styleable {\n children?: JSXElement;\n}\n\nexport const H3: Component<H3Props> = props => {\n const [t] = useI18n();\n\n return (\n <H3Styled data-tc-h3=\"true\" class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H3Styled>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const TonIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14.1839 17.7069C13.6405 18.6507 13.3688 19.1226 13.0591 19.348C12.4278 19.8074 11.5723 19.8074 10.941 19.348C10.6312 19.1226 10.3595 18.6507 9.81613 17.7069L5.52066 10.2464C4.76864 8.94024 4.39263 8.28717 4.33762 7.75894C4.2255 6.68236 4.81894 5.65591 5.80788 5.21589C6.29309 5 7.04667 5 8.55383 5H15.4462C16.9534 5 17.7069 5 18.1922 5.21589C19.1811 5.65591 19.7745 6.68236 19.6624 7.75894C19.6074 8.28717 19.2314 8.94024 18.4794 10.2464L14.1839 17.7069ZM11.1 16.3412L6.56139 8.48002C6.31995 8.06185 6.19924 7.85276 6.18146 7.68365C6.14523 7.33896 6.33507 7.01015 6.65169 6.86919C6.80703 6.80002 7.04847 6.80002 7.53133 6.80002H7.53134L11.1 6.80002V16.3412ZM12.9 16.3412L17.4387 8.48002C17.6801 8.06185 17.8008 7.85276 17.8186 7.68365C17.8548 7.33896 17.665 7.01015 17.3484 6.86919C17.193 6.80002 16.9516 6.80002 16.4687 6.80002L12.9 6.80002V16.3412Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface SuccessIconProps extends Styleable {\n fill?: Property.Color;\n size?: 'xs' | 's' | 'm';\n}\n\nexport const SuccessIcon: Component<SuccessIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 'xs' | 's' | 'm' => props.size || 's';\n const fill = (): string => props.fill || theme.colors.icon.success;\n\n return (\n <>\n {size() === 'xs' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n class={props.class}\n >\n <g clip-path=\"url(#clip0_3783_2045)\">\n <circle cx=\"8\" cy=\"8.00098\" r=\"8\" fill={fill()} />\n <path\n d=\"M4.75 8.50098L7 10.751L11.75 6.00098\"\n stroke={theme.colors.constant.white}\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3783_2045\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0 0.000976562)\"\n />\n </clipPath>\n </defs>\n </svg>\n ) : size() === 's' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M17.1364 9.6364C17.4879 9.28493 17.4879 8.71508 17.1364 8.36361C16.7849 8.01214 16.2151 8.01214 15.8636 8.36361L10 14.2272L8.1364 12.3636C7.78493 12.0121 7.21508 12.0121 6.86361 12.3636C6.51214 12.7151 6.51214 13.2849 6.86361 13.6364L9.36361 16.1364C9.71508 16.4879 10.2849 16.4879 10.6364 16.1364L17.1364 9.6364Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"36\" cy=\"36\" r=\"33\" fill={fill()} />\n <path\n d=\"M50.9142 28.4142C51.6953 27.6332 51.6953 26.3668 50.9142 25.5858C50.1332 24.8047 48.8668 24.8047 48.0858 25.5858L30 43.6716L23.9142 37.5858C23.1332 36.8047 21.8668 36.8047 21.0858 37.5858C20.3047 38.3668 20.3047 39.6332 21.0858 40.4142L28.5858 47.9142C29.3668 48.6953 30.6332 48.6953 31.4142 47.9142L50.9142 28.4142Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n )}\n </>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ErrorIconProps extends Styleable {\n fill?: Property.Color;\n size?: 'xs' | 's' | 'm';\n}\n\nexport const ErrorIcon: Component<ErrorIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 'xs' | 's' | 'm' => props.size || 'm';\n const fill = (): string => props.fill || theme.colors.icon.error;\n\n return (\n <>\n {size() === 'm' ? (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"36\" cy=\"36\" r=\"33\" fill={fill()} />\n <path\n d=\"M24.0858 26.9142C23.3047 26.1332 23.3047 24.8668 24.0858 24.0858C24.8668 23.3047 26.1332 23.3047 26.9142 24.0858L36 33.1716L45.0858 24.0858C45.8668 23.3047 47.1332 23.3047 47.9142 24.0858C48.6953 24.8668 48.6953 26.1332 47.9142 26.9142L38.8284 36L47.9142 45.0858C48.6953 45.8668 48.6953 47.1332 47.9142 47.9142C47.1332 48.6953 45.8668 48.6953 45.0858 47.9142L36 38.8284L26.9142 47.9142C26.1332 48.6953 24.8668 48.6953 24.0858 47.9142C23.3047 47.1332 23.3047 45.8668 24.0858 45.0858L33.1716 36L24.0858 26.9142Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : size() === 's' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <circle cx=\"24\" cy=\"24.001\" r=\"22\" fill={fill()} />\n <path\n d=\"M24 24.001L31.5 16.501M24 24.001L16.5 16.501M24 24.001L16.5 31.501M24 24.001L31.5 31.501\"\n stroke={theme.colors.constant.white}\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n ) : (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M7.86361 9.1364C7.51214 8.78493 7.51214 8.21508 7.86361 7.86361C8.21508 7.51214 8.78493 7.51214 9.1364 7.86361L12 10.7272L14.8636 7.86361C15.2151 7.51214 15.7849 7.51214 16.1364 7.86361C16.4879 8.21508 16.4879 8.78493 16.1364 9.1364L13.2728 12L16.1364 14.8636C16.4879 15.2151 16.4879 15.7849 16.1364 16.1364C15.7849 16.4879 15.2151 16.4879 14.8636 16.1364L12 13.2728L9.1364 16.1364C8.78493 16.4879 8.21508 16.4879 7.86361 16.1364C7.51214 15.7849 7.51214 15.2151 7.86361 14.8636L10.7272 12L7.86361 9.1364Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n )}\n </>\n );\n};\n","import cn from 'classnames';\nimport type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { css, keyframes, useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LoaderIconProps extends Styleable {\n fill?: Property.Color;\n size?: 'xs' | 's' | 'm';\n}\n\nexport const LoaderIcon: Component<LoaderIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 'xs' | 's' | 'm' => props.size || 'xs';\n const fill = (): string => props.fill || theme.colors.icon.tertiary;\n\n const rotateAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const svgClass = css`\n animation: ${rotateAnimation} 1s linear infinite;\n `;\n\n return (\n <>\n {size() === 'xs' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M15.55 5.85123C18.9459 7.81184 20.1094 12.1541 18.1488 15.55C16.1882 18.9459 11.8459 20.1094 8.44998 18.1488C8.01952 17.9003 7.46909 18.0478 7.22056 18.4782C6.97203 18.9087 7.11952 19.4591 7.54998 19.7076C11.8068 22.1653 17.2499 20.7068 19.7076 16.45C22.1653 12.1932 20.7068 6.75005 16.45 4.29239C12.1932 1.83472 6.75003 3.29321 4.29236 7.55001C4.04383 7.98047 4.19132 8.53091 4.62178 8.77943C5.05224 9.02796 5.60268 8.88048 5.8512 8.45001C7.81181 5.05413 12.1541 3.89062 15.55 5.85123Z\"\n fill={fill()}\n />\n </svg>\n ) : size() === 's' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"44\"\n height=\"44\"\n viewBox=\"0 0 44 44\"\n fill=\"none\"\n class={cn(svgClass, props.class)}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M22 2.99951C11.5066 2.99951 3 11.5061 3 21.9995C3 32.4929 11.5066 40.9995 22 40.9995C22.8284 40.9995 23.5 41.6711 23.5 42.4995C23.5 43.3279 22.8284 43.9995 22 43.9995C9.84974 43.9995 0 34.1498 0 21.9995C0 9.84925 9.84974 -0.000488281 22 -0.000488281C34.1503 -0.000488281 44 9.84925 44 21.9995C44 22.8279 43.3284 23.4995 42.5 23.4995C41.6716 23.4995 41 22.8279 41 21.9995C41 11.5061 32.4934 2.99951 22 2.99951Z\"\n fill={fill()}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M24 56.7846C35.479 63.412 50.1572 59.479 56.7846 47.9999C63.412 36.5209 59.479 21.8427 48 15.2153C36.521 8.58791 21.8428 12.5209 15.2154 23.9999\"\n stroke={fill()}\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )}\n </>\n );\n};\n","import { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models';\n\nexport const TonConnectBrand: Component = () => {\n const theme = useTheme();\n const fill = (): string =>\n theme.theme === THEME.DARK ? theme.colors.constant.white : theme.colors.constant.black;\n\n return (\n <svg\n width=\"158\"\n height=\"28\"\n viewBox=\"0 0 158 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M28 14.001C28 21.733 21.732 28.001 14 28.001C6.26801 28.001 0 21.733 0 14.001C0 6.26899 6.26801 0.000976562 14 0.000976562C21.732 0.000976562 28 6.26899 28 14.001ZM9.21931 8.00098H18.7801H18.7813C20.538 8.00098 21.6522 9.89966 20.7691 11.4302L14.8672 21.6576C14.4822 22.3254 13.5172 22.3254 13.1322 21.6576L7.23158 11.4302C6.34721 9.89726 7.4614 8.00098 9.21931 8.00098ZM13.1262 18.5882V9.74806H9.21811C8.78976 9.74806 8.53708 10.2029 8.74163 10.5578L11.8423 16.1035L13.1262 18.5882ZM16.1559 16.1047L19.2554 10.5566C19.4599 10.2017 19.2073 9.74685 18.7789 9.74685H14.8709V18.5906L16.1559 16.1047Z\"\n fill=\"#0098EA\"\n />\n <path\n d=\"M18.7802 8.00098H9.21936C7.46145 8.00098 6.34727 9.89726 7.23164 11.4302L13.1322 21.6576C13.5173 22.3254 14.4823 22.3254 14.8673 21.6576L20.7691 11.4302C21.6523 9.89966 20.5381 8.00098 18.7814 8.00098H18.7802ZM13.1274 18.5906L11.8424 16.1035L8.74168 10.5578C8.53714 10.2029 8.78981 9.74806 9.21816 9.74806H13.1262V18.5918L13.1274 18.5906ZM19.2555 10.5566L16.156 16.1047L14.8709 18.5906V9.74685H18.779C19.2073 9.74685 19.46 10.2017 19.2555 10.5566Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M51.7483 22.1967C55.7182 22.1967 58.9609 18.954 58.9609 14.9841C58.9609 11.0142 55.7182 7.77148 51.7483 7.77148C47.7588 7.77148 44.5357 11.0142 44.5357 14.9841C44.5357 18.954 47.7588 22.1967 51.7483 22.1967ZM51.7483 19.1702C49.4686 19.1702 47.6802 17.2442 47.6802 14.9841C47.6802 12.724 49.4686 10.798 51.7483 10.798C54.0084 10.798 55.7968 12.724 55.7968 14.9841C55.7968 17.2442 54.0084 19.1702 51.7483 19.1702ZM37.0698 21.9609H40.2142V10.9946H44.2843V8.00732H33V10.9946H37.0698V21.9609ZM69.9379 8.00732H73.0823V21.9609H70.3899L63.59 13.3333V21.9609H60.4652V8.00732H63.1576L69.9379 16.6153V8.00732ZM79.2259 14.9887C79.2259 10.9202 82.351 7.77539 86.4982 7.77539C89.8592 7.77539 92.5519 9.95709 93.2202 12.6891H90.7437C90.154 11.0971 88.4637 9.9964 86.4982 9.9964C83.5893 9.9964 81.5452 12.1781 81.5452 14.9887C81.5452 17.7994 83.5893 19.9811 86.4982 19.9811C88.4637 19.9811 90.154 18.8804 90.7437 17.2884H93.2202C92.5519 20.0204 89.8592 22.2021 86.4982 22.2021C82.351 22.2021 79.2259 19.0573 79.2259 14.9887ZM104.584 17.0525C104.584 19.9025 102.343 22.1628 99.4342 22.1628C96.5253 22.1628 94.2846 19.9025 94.2846 17.0525C94.2846 14.2025 96.5253 11.9422 99.4342 11.9422C102.343 11.9422 104.584 14.2025 104.584 17.0525ZM96.4663 17.0525C96.4663 18.8018 97.6849 20.158 99.4342 20.158C101.164 20.158 102.382 18.8018 102.382 17.0525C102.382 15.3032 101.164 13.947 99.4342 13.947C97.6849 13.947 96.4663 15.3032 96.4663 17.0525ZM108.626 12.1388H106.463V21.9662H108.626V17.1311C108.626 15.0281 109.726 13.9077 111.161 13.9077C112.419 13.9077 113.205 14.8512 113.205 16.4039V21.9662H115.367V16.0501C115.367 13.5539 113.893 11.9422 111.613 11.9422C110.335 11.9422 109.215 12.4926 108.626 13.4753V12.1388ZM117.839 12.1388H120.001V13.4753C120.59 12.4926 121.711 11.9422 122.988 11.9422C125.268 11.9422 126.742 13.5539 126.742 16.0501V21.9662H124.58V16.4039C124.58 14.8512 123.794 13.9077 122.536 13.9077C121.101 13.9077 120.001 15.0281 120.001 17.1311V21.9662H117.839V12.1388ZM133.558 22.1628C136.054 22.1628 137.823 20.728 138.373 18.8804H136.113C135.661 19.8238 134.717 20.2563 133.636 20.2563C131.887 20.2563 130.747 19.077 130.668 17.5832H138.491C138.688 14.2419 136.585 11.9422 133.577 11.9422C130.551 11.9422 128.526 14.1436 128.526 17.0525C128.526 20.0007 130.629 22.1628 133.558 22.1628ZM130.747 16.0501C131.042 14.5367 132.162 13.7505 133.518 13.7505C134.717 13.7505 135.838 14.4581 136.172 16.0501H130.747ZM149.851 18.3694C149.32 20.5511 147.453 22.1628 144.859 22.1628C141.871 22.1628 139.709 19.8828 139.709 17.0525C139.709 14.2222 141.871 11.9422 144.859 11.9422C147.453 11.9422 149.32 13.5539 149.851 15.7356H147.571C147.178 14.6743 146.215 13.9077 144.859 13.9077C143.109 13.9077 141.91 15.2246 141.91 17.0525C141.91 18.8804 143.109 20.1973 144.859 20.1973C146.215 20.1973 147.178 19.4307 147.571 18.3694H149.851ZM155.75 22.0645C156.418 22.0645 156.929 21.9859 157.362 21.8483V19.9221C157.047 20.0401 156.615 20.1187 156.202 20.1187C155.082 20.1187 154.551 19.6666 154.551 18.448V14.065H157.362V12.1388H154.551V9.40675H152.389V12.1388H150.345V14.065H152.389V18.8018C152.389 21.0228 153.863 22.0645 155.75 22.0645Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const QuestionIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5.56608 4.42584C5.82527 3.32158 6.8176 2.5 8.00001 2.5C9.38072 2.5 10.5 3.61929 10.5 5C10.5 5.63026 10.3391 6.0386 10.1264 6.34455C9.90018 6.66993 9.58561 6.92478 9.18864 7.20877C9.12579 7.25372 9.05873 7.30025 8.9887 7.34883C8.27392 7.84472 7.25001 8.55507 7.25001 10V10.25C7.25001 10.6642 7.5858 11 8.00001 11C8.41422 11 8.75001 10.6642 8.75001 10.25V10C8.75001 9.36502 9.10777 9.1096 9.94554 8.51149L10.0614 8.42873C10.4769 8.13147 10.9748 7.75194 11.358 7.20076C11.7547 6.63015 12 5.91973 12 5C12 2.79086 10.2091 1 8.00001 1C6.10564 1 4.5205 2.31615 4.10577 4.08308C4.01112 4.48634 4.26129 4.88997 4.66454 4.98462C5.0678 5.07927 5.47143 4.8291 5.56608 4.42584ZM8.00001 15C8.60752 15 9.10001 14.5075 9.10001 13.9C9.10001 13.2925 8.60752 12.8 8.00001 12.8C7.39249 12.8 6.90001 13.2925 6.90001 13.9C6.90001 14.5075 7.39249 15 8.00001 15Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface BrowserIconProps {\n fill?: Property.Color;\n}\n\nexport const BrowserIcon: Component<BrowserIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M9.98156 8.75C9.84854 11.4328 9.01206 13.5 8 13.5C6.98794 13.5 6.15146 11.4328 6.01844 8.75H9.98156ZM11.4832 8.75C11.4217 10.1155 11.1929 11.3869 10.8239 12.4017C10.7734 12.5405 10.7188 12.6789 10.6595 12.8154C12.1454 11.993 13.2103 10.5029 13.4493 8.75H11.4832ZM13.4493 7.25H11.4832C11.4217 5.88453 11.1929 4.61314 10.8239 3.5983C10.7734 3.4595 10.7188 3.32111 10.6595 3.18459C12.1454 4.00697 13.2103 5.49709 13.4493 7.25ZM9.98156 7.25H6.01844C6.15144 4.56764 6.98769 2.50062 7.99955 2.5H8C9.01206 2.5 9.84854 4.56724 9.98156 7.25ZM4.51678 7.25C4.57826 5.88453 4.80706 4.61314 5.1761 3.5983C5.22657 3.4595 5.28124 3.32111 5.3405 3.18459C3.85463 4.00697 2.78972 5.49709 2.55071 7.25H4.51678ZM2.55071 8.75C2.78972 10.5029 3.85463 11.993 5.3405 12.8154C5.28124 12.6789 5.22657 12.5405 5.1761 12.4017C4.80706 11.3869 4.57826 10.1155 4.51678 8.75H2.55071ZM15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface MobileIconProps {\n fill?: Property.Color;\n}\n\nexport const MobileIcon: Component<MobileIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.5 4.8C2.5 3.11984 2.5 2.27976 2.82698 1.63803C3.1146 1.07354 3.57354 0.614601 4.13803 0.32698C4.77976 0 5.61984 0 7.3 0H8.7C10.3802 0 11.2202 0 11.862 0.32698C12.4265 0.614601 12.8854 1.07354 13.173 1.63803C13.5 2.27976 13.5 3.11984 13.5 4.8V11.2C13.5 12.8802 13.5 13.7202 13.173 14.362C12.8854 14.9265 12.4265 15.3854 11.862 15.673C11.2202 16 10.3802 16 8.7 16H7.3C5.61984 16 4.77976 16 4.13803 15.673C3.57354 15.3854 3.1146 14.9265 2.82698 14.362C2.5 13.7202 2.5 12.8802 2.5 11.2V4.8ZM4 3.9C4 3.05992 4 2.63988 4.16349 2.31901C4.3073 2.03677 4.53677 1.8073 4.81901 1.66349C5.13988 1.5 5.55992 1.5 6.4 1.5H9.6C10.4401 1.5 10.8601 1.5 11.181 1.66349C11.4632 1.8073 11.6927 2.03677 11.8365 2.31901C12 2.63988 12 3.05992 12 3.9V12.1C12 12.9401 12 13.3601 11.8365 13.681C11.6927 13.9632 11.4632 14.1927 11.181 14.3365C10.8601 14.5 10.4401 14.5 9.6 14.5H6.4C5.55992 14.5 5.13988 14.5 4.81901 14.3365C4.53677 14.1927 4.3073 13.9632 4.16349 13.681C4 13.3601 4 12.9401 4 12.1V3.9ZM7 2.5C6.58579 2.5 6.25 2.83579 6.25 3.25C6.25 3.66421 6.58579 4 7 4H9C9.41421 4 9.75 3.66421 9.75 3.25C9.75 2.83579 9.41421 2.5 9 2.5H7Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DesktopIconProps {\n fill?: Property.Color;\n}\n\nexport const DesktopIcon: Component<DesktopIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.5 6.8C1.5 5.11984 1.5 4.27976 1.82698 3.63803C2.1146 3.07354 2.57354 2.6146 3.13803 2.32698C3.77976 2 4.61984 2 6.3 2H9.7C11.3802 2 12.2202 2 12.862 2.32698C13.4265 2.6146 13.8854 3.07354 14.173 3.63803C14.5 4.27976 14.5 5.11984 14.5 6.8V11.5H15.25C15.6642 11.5 16 11.8358 16 12.25C16 12.6642 15.6642 13 15.25 13H0.75C0.335786 13 0 12.6642 0 12.25C0 11.8358 0.335786 11.5 0.75 11.5H1.5V6.8ZM3 11.5H13V5.9C13 5.05992 13 4.63988 12.8365 4.31901C12.6927 4.03677 12.4632 3.8073 12.181 3.66349C11.8601 3.5 11.4401 3.5 10.6 3.5H5.4C4.55992 3.5 4.13988 3.5 3.81901 3.66349C3.53677 3.8073 3.3073 4.03677 3.16349 4.31901C3 4.63988 3 5.05992 3 5.9V11.5Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface RetryIconProps {\n fill?: Property.Color;\n}\n\nexport const RetryIcon: Component<RetryIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.accent;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_3676_1603)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15.5 1.25049C15.5 0.836275 15.1642 0.500488 14.75 0.500488C14.3358 0.500488 14 0.836275 14 1.25049V3.67012C12.7187 2.04487 10.7318 1.00049 8.5 1.00049C4.63401 1.00049 1.5 4.1345 1.5 8.00049C1.5 11.8665 4.63401 15.0005 8.5 15.0005C11.6844 15.0005 14.3703 12.8748 15.2199 9.96661C15.3361 9.56902 15.1079 9.15254 14.7103 9.03638C14.3127 8.92023 13.8962 9.14838 13.7801 9.54597C13.1123 11.8319 11 13.5005 8.5 13.5005C5.46243 13.5005 3 11.0381 3 8.00049C3 4.96292 5.46243 2.50049 8.5 2.50049C10.321 2.50049 11.9363 3.3855 12.9377 4.75049H10.5C10.0858 4.75049 9.75 5.08627 9.75 5.50049C9.75 5.9147 10.0858 6.25049 10.5 6.25049H14.75C15.1642 6.25049 15.5 5.9147 15.5 5.50049V1.25049Z\"\n fill={fill()}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3676_1603\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0.5 0.000488281)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface LinkIconProps {\n fill?: Property.Color;\n}\n\nexport const LinkIcon: Component<LinkIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.accent;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13 4.06119V6.75053C13 7.16474 13.3358 7.50053 13.75 7.50053C14.1642 7.50053 14.5 7.16474 14.5 6.75053V2.75053L14.5 2.72807C14.5001 2.63191 14.5003 2.49627 14.4842 2.37627C14.4638 2.22503 14.4063 1.99261 14.2071 1.79342C14.0079 1.59423 13.7755 1.5367 13.6243 1.51637C13.5043 1.50023 13.3686 1.50039 13.2725 1.50051L13.25 1.50053H9.25C8.83579 1.50053 8.5 1.83631 8.5 2.25053C8.5 2.66474 8.83579 3.00053 9.25 3.00053H11.9393L7.21967 7.7202C6.92678 8.01309 6.92678 8.48796 7.21967 8.78086C7.51256 9.07375 7.98744 9.07375 8.28033 8.78086L13 4.06119ZM5.85 1.50053H5.81903H5.81899C5.21528 1.50052 4.71702 1.50051 4.31113 1.53367C3.88956 1.56812 3.50203 1.64204 3.13803 1.82751C2.57354 2.11513 2.1146 2.57407 1.82698 3.13856C1.64151 3.50256 1.56759 3.89009 1.53315 4.31166C1.49998 4.71755 1.49999 5.21581 1.5 5.81953V5.81955V5.85053V10.1505V10.1815V10.1815C1.49999 10.7852 1.49998 11.2835 1.53315 11.6894C1.56759 12.111 1.64151 12.4985 1.82698 12.8625C2.1146 13.427 2.57354 13.8859 3.13803 14.1735C3.50203 14.359 3.88956 14.4329 4.31113 14.4674C4.71702 14.5005 5.21527 14.5005 5.81897 14.5005H5.81901H5.85H10.15H10.181H10.181C10.7847 14.5005 11.283 14.5005 11.6889 14.4674C12.1104 14.4329 12.498 14.359 12.862 14.1735C13.4265 13.8859 13.8854 13.427 14.173 12.8625C14.3585 12.4985 14.4324 12.111 14.4669 11.6894C14.5 11.2835 14.5 10.7853 14.5 10.1816V10.1815V10.1505V9.75053C14.5 9.33631 14.1642 9.00053 13.75 9.00053C13.3358 9.00053 13 9.33631 13 9.75053V10.1505C13 10.793 12.9994 11.2297 12.9718 11.5672C12.945 11.8961 12.8963 12.0642 12.8365 12.1815C12.6927 12.4638 12.4632 12.6932 12.181 12.837C12.0637 12.8968 11.8955 12.9455 11.5667 12.9724C11.2292 12.9999 10.7924 13.0005 10.15 13.0005H5.85C5.20757 13.0005 4.77085 12.9999 4.43328 12.9724C4.10447 12.9455 3.93632 12.8968 3.81902 12.837C3.53677 12.6932 3.3073 12.4638 3.16349 12.1815C3.10372 12.0642 3.05503 11.8961 3.02816 11.5672C3.00058 11.2297 3 10.793 3 10.1505V5.85053C3 5.20809 3.00058 4.77137 3.02816 4.43381C3.05503 4.10499 3.10372 3.93684 3.16349 3.81954C3.3073 3.5373 3.53677 3.30783 3.81902 3.16402C3.93632 3.10425 4.10447 3.05556 4.43328 3.02869C4.77085 3.00111 5.20757 3.00053 5.85 3.00053H6.25C6.66422 3.00053 7 2.66474 7 2.25053C7 1.83631 6.66422 1.50053 6.25 1.50053H5.85Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface WalletIconProps {\n fill?: Property.Color;\n}\n\nexport const WalletIcon: Component<WalletIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.accent;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_3676_1274)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.82698 2.63901C1.5 3.28074 1.5 4.12082 1.5 5.80098V8.80098V9.00098V10.201C1.5 11.8811 1.5 12.7212 1.82698 13.3629C2.1146 13.9274 2.57354 14.3864 3.13803 14.674C3.77976 15.001 4.61984 15.001 6.3 15.001H11.7C13.3802 15.001 14.2202 15.001 14.862 14.674C15.4265 14.3864 15.8854 13.9274 16.173 13.3629C16.5 12.7212 16.5 11.8811 16.5 10.201V8.80098C16.5 7.12082 16.5 6.28074 16.173 5.63901C15.8854 5.07452 15.4265 4.61558 14.862 4.32796C14.743 4.26733 14.6172 4.21795 14.4805 4.17772C14.4501 3.49449 14.3722 3.02994 14.173 2.63901C13.8854 2.07452 13.4265 1.61558 12.862 1.32796C12.2202 1.00098 11.3802 1.00098 9.7 1.00098H6.3C4.61984 1.00098 3.77976 1.00098 3.13803 1.32796C2.57354 1.61558 2.1146 2.07452 1.82698 2.63901ZM12.9861 4.00942C12.9684 3.7108 12.9281 3.49982 12.8365 3.31999C12.6927 3.03775 12.4632 2.80828 12.181 2.66447C11.8601 2.50098 11.4401 2.50098 10.6 2.50098H5.4C4.55992 2.50098 4.13988 2.50098 3.81901 2.66447C3.53677 2.80828 3.3073 3.03775 3.16349 3.31999C3.03615 3.56991 3.00799 3.88 3.00177 4.40188C3.04646 4.37612 3.09189 4.35146 3.13803 4.32796C3.77976 4.00098 4.61984 4.00098 6.3 4.00098H11.7C12.1966 4.00098 12.6197 4.00098 12.9861 4.00942ZM3 7.90098V8.10098C3 8.47468 3 8.76527 3.01439 9.00098H3V11.101C3 11.9411 3 12.3611 3.16349 12.682C3.3073 12.9642 3.53677 13.1937 3.81901 13.3375C4.13988 13.501 4.55992 13.501 5.4 13.501H12.6C13.4401 13.501 13.8601 13.501 14.181 13.3375C14.4632 13.1937 14.6927 12.9642 14.8365 12.682C15 12.3611 15 11.9411 15 11.101V7.90098C15 7.0609 15 6.64086 14.8365 6.31999C14.6927 6.03775 14.4632 5.80828 14.181 5.66447C13.8601 5.50098 13.4401 5.50098 12.6 5.50098H5.4C4.55992 5.50098 4.13988 5.50098 3.81901 5.66447C3.53677 5.80828 3.3073 6.03775 3.16349 6.31999C3 6.64086 3 7.0609 3 7.90098ZM10.5 9.75098C10.5 9.33676 10.8358 9.00098 11.25 9.00098H12.75C13.1642 9.00098 13.5 9.33676 13.5 9.75098C13.5 10.1652 13.1642 10.501 12.75 10.501H11.25C10.8358 10.501 10.5 10.1652 10.5 9.75098Z\"\n fill={fill()}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3676_1274\">\n <rect\n width=\"16\"\n height=\"16\"\n fill=\"white\"\n transform=\"translate(0.5 0.000976562)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface SecurityIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SecurityIcon: Component<SecurityIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M39.6319 16.8719C38.3212 16.2041 36.7002 16.0478 34 16.0112V11C34 5.47715 29.5228 1 24 1C18.4772 1 14 5.47715 14 11V16.0112C11.2998 16.0478 9.6788 16.2041 8.36808 16.8719C6.86278 17.6389 5.63893 18.8628 4.87195 20.3681C4 22.0794 4 24.3196 4 28.8V32.2C4 36.6804 4 38.9206 4.87195 40.6319C5.63893 42.1372 6.86278 43.3611 8.36808 44.1281C10.0794 45 12.3196 45 16.8 45H31.2C35.6804 45 37.9206 45 39.6319 44.1281C41.1372 43.3611 42.3611 42.1372 43.1281 40.6319C44 38.9206 44 36.6804 44 32.2V28.8C44 24.3196 44 22.0794 43.1281 20.3681C42.3611 18.8628 41.1372 17.6389 39.6319 16.8719ZM31 11V16H17V11C17 7.13401 20.134 4 24 4C27.866 4 31 7.13401 31 11ZM7.54497 21.73C7 22.7996 7 24.1997 7 27V34C7 36.8003 7 38.2004 7.54497 39.27C8.02433 40.2108 8.78924 40.9757 9.73005 41.455C10.7996 42 12.1997 42 15 42H33C35.8003 42 37.2004 42 38.27 41.455C39.2108 40.9757 39.9757 40.2108 40.455 39.27C41 38.2004 41 36.8003 41 34V27C41 24.1997 41 22.7996 40.455 21.73C39.9757 20.7892 39.2108 20.0243 38.27 19.545C37.2004 19 35.8003 19 33 19H15C12.1997 19 10.7996 19 9.73005 19.545C8.78924 20.0243 8.02433 20.7892 7.54497 21.73ZM24 24C23.1716 24 22.5 24.6716 22.5 25.5V29.5C22.5 30.3284 23.1716 31 24 31C24.8284 31 25.5 30.3284 25.5 29.5V25.5C25.5 24.6716 24.8284 24 24 24Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface PersonalityIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const PersonalityIcon: Component<PersonalityIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M37.485 37.3849C40.894 33.9506 43 29.2212 43 24C43 13.5066 34.4934 5 24 5C13.5066 5 5 13.5066 5 24C5 29.2213 7.1061 33.9507 10.5151 37.385C13.3583 32.9438 18.3354 30 24.0001 30C29.6647 30 34.6418 32.9437 37.485 37.3849ZM35.1809 39.3635C32.9143 35.5532 28.7554 33 24.0001 33C19.2448 33 15.0858 35.5533 12.8193 39.3636C15.9564 41.6506 19.8206 43 24 43C28.1795 43 32.0437 41.6505 35.1809 39.3635ZM24 46C36.1503 46 46 36.1503 46 24C46 11.8497 36.1503 2 24 2C11.8497 2 2 11.8497 2 24C2 36.1503 11.8497 46 24 46ZM24 24C26.7614 24 29 21.7614 29 19C29 16.2386 26.7614 14 24 14C21.2386 14 19 16.2386 19 19C19 21.7614 21.2386 24 24 24ZM24 27C28.4183 27 32 23.4183 32 19C32 14.5817 28.4183 11 24 11C19.5817 11 16 14.5817 16 19C16 23.4183 19.5817 27 24 27Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface SwapIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SwapIcon: Component<SwapIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M34.5607 4.43934C33.9749 3.85355 33.0251 3.85355 32.4393 4.43934C31.8536 5.02513 31.8536 5.97487 32.4393 6.56066L37.8787 12H10.5C9.67157 12 9 12.6716 9 13.5C9 14.3284 9.67157 15 10.5 15H37.8787L32.4393 20.4393C31.8536 21.0251 31.8536 21.9749 32.4393 22.5607C33.0251 23.1464 33.9749 23.1464 34.5607 22.5607L42.5607 14.5607C43.1464 13.9749 43.1464 13.0251 42.5607 12.4393L34.5607 4.43934ZM13.4393 25.4393C14.0251 24.8536 14.9749 24.8536 15.5607 25.4393C16.1464 26.0251 16.1464 26.9749 15.5607 27.5607L10.1213 33H37.5C38.3284 33 39 33.6716 39 34.5C39 35.3284 38.3284 36 37.5 36H10.1213L15.5607 41.4393C16.1464 42.0251 16.1464 42.9749 15.5607 43.5607C14.9749 44.1464 14.0251 44.1464 13.4393 43.5607L5.43934 35.5607C4.85355 34.9749 4.85355 34.0251 5.43934 33.4393L13.4393 25.4393Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\ninterface AtWalletIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const AtWalletIcon: Component<AtWalletIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.constant.white;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.75 12.002C1.75 9.20169 1.75 7.80156 2.29497 6.732C2.77433 5.79119 3.53924 5.02629 4.48005 4.54692C5.54961 4.00195 6.94974 4.00195 9.75 4.00195H17.25C20.0503 4.00195 21.4504 4.00195 22.52 4.54692C23.4608 5.02629 24.2257 5.79119 24.705 6.732C24.8256 6.96861 24.9195 7.2214 24.9926 7.50195H21.5C19.6377 7.50195 18.7065 7.50195 17.9609 7.77334C16.711 8.22828 15.7263 9.21291 15.2714 10.4629C15 11.2085 15 12.1396 15 14.002C15 15.8643 15 16.7954 15.2714 17.541C15.7263 18.791 16.711 19.7756 17.9609 20.2306C18.7065 20.502 19.6377 20.502 21.5 20.502H24.9926C24.9195 20.7825 24.8256 21.0353 24.705 21.2719C24.2257 22.2127 23.4608 22.9776 22.52 23.457C21.4504 24.002 20.0503 24.002 17.25 24.002H9.75C6.94974 24.002 5.54961 24.002 4.48005 23.457C3.53924 22.9776 2.77433 22.2127 2.29497 21.2719C1.75 20.2023 1.75 18.8022 1.75 16.002V12.002ZM16.4999 13.802C16.4999 12.1218 16.4999 11.2817 16.8269 10.64C17.1145 10.0755 17.5735 9.61656 18.138 9.32894C18.7797 9.00196 19.6198 9.00196 21.2999 9.00196H23.1999C24.8801 9.00196 25.7202 9.00196 26.3619 9.32894C26.9264 9.61656 27.3853 10.0755 27.673 10.64C27.9999 11.2817 27.9999 12.1218 27.9999 13.802V14.202C27.9999 15.8821 27.9999 16.7222 27.673 17.3639C27.3853 17.9284 26.9264 18.3874 26.3619 18.675C25.7202 19.002 24.8801 19.002 23.1999 19.002H21.2999C19.6198 19.002 18.7797 19.002 18.138 18.675C17.5735 18.3874 17.1145 17.9284 16.8269 17.3639C16.4999 16.7222 16.4999 15.8821 16.4999 14.202V13.802ZM22.4999 14.002C22.4999 14.9685 21.7164 15.752 20.7499 15.752C19.7834 15.752 18.9999 14.9685 18.9999 14.002C18.9999 13.0355 19.7834 12.252 20.7499 12.252C21.7164 12.252 22.4999 13.0355 22.4999 14.002Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface CopyLightIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const CopyLightIcon: Component<CopyLightIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill={fill()}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.0001 10.0001C10.0016 8.02333 10.0267 6.98719 10.436 6.18404C10.8195 5.43139 11.4314 4.81947 12.184 4.43597C13.0397 4 14.1598 4 16.4 4H17.6C19.8402 4 20.9603 4 21.816 4.43597C22.5686 4.81947 23.1805 5.43139 23.564 6.18404C24 7.03969 24 8.15979 24 10.4V11.6C24 13.8402 24 14.9603 23.564 15.816C23.1805 16.5686 22.5686 17.1805 21.816 17.564C21.0128 17.9733 19.9767 17.9984 17.9999 17.9999C17.9984 19.9767 17.9733 21.0128 17.564 21.816C17.1805 22.5686 16.5686 23.1805 15.816 23.564C14.9603 24 13.8402 24 11.6 24H10.4C8.15979 24 7.03969 24 6.18404 23.564C5.43139 23.1805 4.81947 22.5686 4.43597 21.816C4 20.9603 4 19.8402 4 17.6V16.4C4 14.1598 4 13.0397 4.43597 12.184C4.81947 11.4314 5.43139 10.8195 6.18404 10.436C6.98719 10.0267 8.02333 10.0016 10.0001 10.0001ZM10 11.5H9.5C8.09987 11.5 7.3998 11.5 6.86502 11.7725C6.39462 12.0122 6.01217 12.3946 5.77248 12.865C5.5 13.3998 5.5 14.0999 5.5 15.5V18.5C5.5 19.9001 5.5 20.6002 5.77248 21.135C6.01217 21.6054 6.39462 21.9878 6.86502 22.2275C7.3998 22.5 8.09987 22.5 9.5 22.5H12.5C13.9001 22.5 14.6002 22.5 15.135 22.2275C15.6054 21.9878 15.9878 21.6054 16.2275 21.135C16.5 20.6002 16.5 19.9001 16.5 18.5V18H16.4C14.1598 18 13.0397 18 12.184 17.564C11.4314 17.1805 10.8195 16.5686 10.436 15.816C10 14.9603 10 13.8402 10 11.6V11.5ZM11.5 9.5C11.5 8.09987 11.5 7.3998 11.7725 6.86502C12.0122 6.39462 12.3946 6.01217 12.865 5.77248C13.3998 5.5 14.0999 5.5 15.5 5.5H18.5C19.9001 5.5 20.6002 5.5 21.135 5.77248C21.6054 6.01217 21.9878 6.39462 22.2275 6.86502C22.5 7.3998 22.5 8.09987 22.5 9.5V12.5C22.5 13.9001 22.5 14.6002 22.2275 15.135C21.9878 15.6054 21.6054 15.9878 21.135 16.2275C20.6002 16.5 19.9001 16.5 18.5 16.5H15.5C14.0999 16.5 13.3998 16.5 12.865 16.2275C12.3946 15.9878 12.0122 15.6054 11.7725 15.135C11.5 14.6002 11.5 13.9001 11.5 12.5V9.5Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface QRIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const QRIcon: Component<QRIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"17\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1 4.12695C1 3.07754 1 2.55284 1.19202 2.14684C1.38986 1.72856 1.7266 1.39181 2.14489 1.19397C2.55088 1.00195 3.07559 1.00195 4.125 1.00195C5.17441 1.00195 5.69912 1.00195 6.10511 1.19397C6.5234 1.39181 6.86014 1.72856 7.05798 2.14684C7.25 2.55284 7.25 3.07754 7.25 4.12695C7.25 5.17636 7.25 5.70107 7.05798 6.10706C6.86014 6.52535 6.5234 6.8621 6.10511 7.05993C5.69912 7.25195 5.17441 7.25195 4.125 7.25195C3.07559 7.25195 2.55088 7.25195 2.14489 7.05993C1.7266 6.8621 1.38986 6.52535 1.19202 6.10706C1 5.70107 1 5.17636 1 4.12695ZM2.5 3.30195C2.5 3.02193 2.5 2.88191 2.5545 2.77496C2.60243 2.68088 2.67892 2.60439 2.773 2.55645C2.87996 2.50195 3.01997 2.50195 3.3 2.50195H4.95C5.23003 2.50195 5.37004 2.50195 5.477 2.55645C5.57108 2.60439 5.64757 2.68088 5.6955 2.77496C5.75 2.88191 5.75 3.02193 5.75 3.30195V4.95195C5.75 5.23198 5.75 5.37199 5.6955 5.47895C5.64757 5.57303 5.57108 5.64952 5.477 5.69746C5.37004 5.75195 5.23003 5.75195 4.95 5.75195H3.3C3.01997 5.75195 2.87996 5.75195 2.773 5.69746C2.67892 5.64952 2.60243 5.57303 2.5545 5.47895C2.5 5.37199 2.5 5.23198 2.5 4.95195V3.30195ZM1 11.877C1 10.8275 1 10.3028 1.19202 9.89684C1.38986 9.47856 1.7266 9.14181 2.14489 8.94397C2.55088 8.75195 3.07559 8.75195 4.125 8.75195C5.17441 8.75195 5.69912 8.75195 6.10511 8.94397C6.5234 9.14181 6.86014 9.47856 7.05798 9.89684C7.25 10.3028 7.25 10.8275 7.25 11.877C7.25 12.9264 7.25 13.4511 7.05798 13.8571C6.86014 14.2753 6.5234 14.6121 6.10511 14.8099C5.69912 15.002 5.17441 15.002 4.125 15.002C3.07559 15.002 2.55088 15.002 2.14489 14.8099C1.7266 14.6121 1.38986 14.2753 1.19202 13.8571C1 13.4511 1 12.9264 1 11.877ZM2.5 11.052C2.5 10.7719 2.5 10.6319 2.5545 10.525C2.60243 10.4309 2.67892 10.3544 2.773 10.3064C2.87996 10.252 3.01997 10.252 3.3 10.252H4.95C5.23003 10.252 5.37004 10.252 5.477 10.3064C5.57108 10.3544 5.64757 10.4309 5.6955 10.525C5.75 10.6319 5.75 10.7719 5.75 11.052V12.702C5.75 12.982 5.75 13.122 5.6955 13.2289C5.64757 13.323 5.57108 13.3995 5.477 13.4475C5.37004 13.502 5.23003 13.502 4.95 13.502H3.3C3.01997 13.502 2.87996 13.502 2.773 13.4475C2.67892 13.3995 2.60243 13.323 2.5545 13.2289C2.5 13.122 2.5 12.982 2.5 12.702V11.052ZM8.94202 2.14684C8.75 2.55284 8.75 3.07754 8.75 4.12695C8.75 5.17636 8.75 5.70107 8.94202 6.10706C9.13986 6.52535 9.4766 6.8621 9.89489 7.05993C10.3009 7.25195 10.8256 7.25195 11.875 7.25195C12.9244 7.25195 13.4491 7.25195 13.8551 7.05993C14.2734 6.8621 14.6101 6.52535 14.808 6.10706C15 5.70107 15 5.17636 15 4.12695C15 3.07754 15 2.55284 14.808 2.14684C14.6101 1.72856 14.2734 1.39181 13.8551 1.19397C13.4491 1.00195 12.9244 1.00195 11.875 1.00195C10.8256 1.00195 10.3009 1.00195 9.89489 1.19397C9.4766 1.39181 9.13986 1.72856 8.94202 2.14684ZM10.3045 2.77496C10.25 2.88191 10.25 3.02193 10.25 3.30195V4.95195C10.25 5.23198 10.25 5.37199 10.3045 5.47895C10.3524 5.57303 10.4289 5.64952 10.523 5.69746C10.63 5.75195 10.77 5.75195 11.05 5.75195H12.7C12.98 5.75195 13.12 5.75195 13.227 5.69746C13.3211 5.64952 13.3976 5.57303 13.4455 5.47895C13.5 5.37199 13.5 5.23198 13.5 4.95195V3.30195C13.5 3.02193 13.5 2.88191 13.4455 2.77496C13.3976 2.68088 13.3211 2.60439 13.227 2.55645C13.12 2.50195 12.98 2.50195 12.7 2.50195H11.05C10.77 2.50195 10.63 2.50195 10.523 2.55645C10.4289 2.60439 10.3524 2.68088 10.3045 2.77496ZM8.80727 9.13518C8.75 9.26242 8.75 9.4256 8.75 9.75195C8.75 10.0783 8.75 10.2415 8.80727 10.3687C8.87245 10.5136 8.9884 10.6295 9.13323 10.6947C9.26047 10.752 9.42365 10.752 9.75 10.752C10.0764 10.752 10.2395 10.752 10.3668 10.6947C10.5116 10.6295 10.6276 10.5136 10.6927 10.3687C10.75 10.2415 10.75 10.0783 10.75 9.75195C10.75 9.4256 10.75 9.26242 10.6927 9.13518C10.6276 8.99035 10.5116 8.8744 10.3668 8.80922C10.2395 8.75195 10.0764 8.75195 9.75 8.75195C9.42365 8.75195 9.26047 8.75195 9.13323 8.80922C8.9884 8.8744 8.87245 8.99035 8.80727 9.13518ZM10.87 11.8771C10.87 11.546 10.87 11.3805 10.9289 11.2517C10.9938 11.1098 11.1077 10.9959 11.2497 10.931C11.3784 10.8721 11.5439 10.8721 11.875 10.8721C12.2061 10.8721 12.3716 10.8721 12.5003 10.931C12.6423 10.9959 12.7562 11.1098 12.8211 11.2517C12.88 11.3805 12.88 11.546 12.88 11.8771C12.88 12.2081 12.88 12.3737 12.8211 12.5024C12.7562 12.6444 12.6423 12.7583 12.5003 12.8232C12.3716 12.8821 12.2061 12.8821 11.875 12.8821C11.5439 12.8821 11.3784 12.8821 11.2497 12.8232C11.1077 12.7583 10.9938 12.6444 10.9289 12.5024C10.87 12.3737 10.87 12.2081 10.87 11.8771ZM8.80727 13.3852C8.75 13.5124 8.75 13.6756 8.75 14.002C8.75 14.3283 8.75 14.4915 8.80727 14.6187C8.87245 14.7636 8.9884 14.8795 9.13323 14.9447C9.26047 15.002 9.42365 15.002 9.75 15.002C10.0764 15.002 10.2395 15.002 10.3668 14.9447C10.5116 14.8795 10.6276 14.7636 10.6927 14.6187C10.75 14.4915 10.75 14.3283 10.75 14.002C10.75 13.6756 10.75 13.5124 10.6927 13.3852C10.6276 13.2404 10.5116 13.1244 10.3668 13.0592C10.2395 13.002 10.0764 13.002 9.75 13.002C9.42365 13.002 9.26047 13.002 9.13323 13.0592C8.9884 13.1244 8.87245 13.2404 8.80727 13.3852ZM13 9.75195C13 9.4256 13 9.26242 13.0573 9.13518C13.1224 8.99035 13.2384 8.8744 13.3832 8.80922C13.5105 8.75195 13.6736 8.75195 14 8.75195C14.3264 8.75195 14.4895 8.75195 14.6168 8.80922C14.7616 8.8744 14.8776 8.99035 14.9427 9.13518C15 9.26242 15 9.4256 15 9.75195C15 10.0783 15 10.2415 14.9427 10.3687C14.8776 10.5136 14.7616 10.6295 14.6168 10.6947C14.4895 10.752 14.3264 10.752 14 10.752C13.6736 10.752 13.5105 10.752 13.3832 10.6947C13.2384 10.6295 13.1224 10.5136 13.0573 10.3687C13 10.2415 13 10.0783 13 9.75195ZM13.0573 13.3852C13 13.5124 13 13.6756 13 14.002C13 14.3283 13 14.4915 13.0573 14.6187C13.1224 14.7636 13.2384 14.8795 13.3832 14.9447C13.5105 15.002 13.6736 15.002 14 15.002C14.3264 15.002 14.4895 15.002 14.6168 14.9447C14.7616 14.8795 14.8776 14.7636 14.9427 14.6187C15 14.4915 15 14.3283 15 14.002C15 13.6756 15 13.5124 14.9427 13.3852C14.8776 13.2404 14.7616 13.1244 14.6168 13.0592C14.4895 13.002 14.3264 13.002 14 13.002C13.6736 13.002 13.5105 13.002 13.3832 13.0592C13.2384 13.1244 13.1224 13.2404 13.0573 13.3852Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { WalletImage } from './wallet-image';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst containerBorders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst walletBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const FourWalletsCard = styled.div`\n width: 60px;\n height: 60px;\n padding: 8px;\n margin-bottom: 8px;\n border-radius: ${props => containerBorders[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.tint};\n display: grid;\n grid-template: 1fr 1fr / 1fr 1fr;\n gap: 4px;\n`;\n\nexport const FourWalletsImage = styled(WalletImage)`\n width: 20px;\n height: 20px;\n border-radius: ${props => walletBorders[props.theme!.borderRadius]};\n`;\n","import { Component, For } from 'solid-js';\nimport { WalletItem } from './index';\nimport { FourWalletsCard, FourWalletsImage } from './four-wallets.style';\n\ninterface FourWallets {\n labelLine1: string;\n labelLine2: string;\n images: string[];\n onClick: () => void;\n}\n\nexport const FourWalletsItem: Component<FourWallets> = props => {\n return (\n <WalletItem\n name={props.labelLine1}\n secondLine={props.labelLine2}\n icon={\n <FourWalletsCard>\n <For each={[0, 1, 2, 3]}>\n {index => <FourWalletsImage src={props.images[index]!} />}\n </For>\n </FourWalletsCard>\n }\n onClick={() => props.onClick()}\n />\n );\n};\n","export const AT_WALLET_APP_NAME = 'telegram-wallet';\n","export const IMG = {\n TON: 'https://raw.githubusercontent.com/ton-connect/sdk/main/assets/ton-icon-48.png',\n TG: 'https://raw.githubusercontent.com/ton-connect/sdk/main/assets/tg.png'\n};\n","import { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { WalletItem } from 'src/app/components';\nimport { isWalletInfoCurrentlyInjected } from '@tonconnect/sdk';\nimport { IMG } from 'src/app/env/IMG';\nimport { useI18n } from '@solid-primitives/i18n';\n\nexport interface WalletLabeledItemProps extends Styleable {\n wallet: UIWalletInfo;\n onClick: () => void;\n}\n\nexport const WalletLabeledItem: Component<WalletLabeledItemProps> = props => {\n const [t] = useI18n();\n\n const walletsSecondLine = (): string | undefined => {\n if (props.wallet.appName === AT_WALLET_APP_NAME) {\n return undefined;\n }\n if ('isPreferred' in props.wallet && props.wallet.isPreferred) {\n return t('walletItem.recent', {}, 'Recent');\n }\n if (isWalletInfoCurrentlyInjected(props.wallet)) {\n return t('walletItem.installed', {}, 'Installed');\n }\n if (props.wallet.name === 'Tonkeeper') {\n return t('walletItem.popular', {}, 'Popular');\n }\n return undefined;\n };\n\n return (\n <>\n {props.wallet.appName === AT_WALLET_APP_NAME ? (\n <WalletItem\n icon={props.wallet.imageUrl}\n name={t('walletItem.walletOn', {}, 'Wallet in')}\n secondLine=\"Telegram\"\n badgeUrl={IMG.TG}\n onClick={() => props.onClick()}\n class={props.class}\n />\n ) : (\n <WalletItem\n icon={props.wallet.imageUrl}\n name={props.wallet.name}\n secondLine={walletsSecondLine()}\n secondLineColorPrimary={false}\n onClick={() => props.onClick()}\n class={props.class}\n />\n )}\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { media } from 'src/app/styles/media';\n\nexport const ScrollContainerStyled = styled.div<{ maxHeight: string }>`\n width: 100%;\n overflow-y: auto;\n max-height: ${props => props.maxHeight};\n\n scrollbar-width: none;\n &&::-webkit-scrollbar {\n display: none;\n }\n\n &&::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &&::-webkit-scrollbar-thumb {\n display: none;\n }\n`;\n\nexport const ScrollDivider = styled.div<{ isShown: boolean }>`\n height: 1px;\n margin: 0 -24px;\n width: calc(100% + 48px);\n opacity: 0.08;\n background: ${props => (props.isShown ? props.theme!.colors.icon.secondary : 'transparent')};\n transition: background 0.15s ease-in-out;\n\n ${media('mobile')} {\n width: 100%;\n margin: 0;\n }\n`;\n","import { createSignal } from 'solid-js';\nimport { getWindow } from 'src/app/utils/web-api';\n\nconst [windowHeight, setWindowHeight] = createSignal(getWindow()?.innerHeight || 0);\n\nif (getWindow()) {\n window.addEventListener('resize', () => setWindowHeight(window.innerHeight));\n}\n\nexport default windowHeight;\n","import { createSignal } from 'solid-js';\nimport { isDevice } from 'src/app/styles/media';\nimport { getWindow } from 'src/app/utils/web-api';\n\nconst [isMobile, setIsMobile] = createSignal(isDevice('mobile'));\n\nconst updateIsMobile = (): boolean => setIsMobile(isDevice('mobile'));\n\nif (getWindow()) {\n window.addEventListener('resize', () => updateIsMobile());\n\n // Browsers may throttle `resize` if page hasn't loaded, so recalculate on page `load`\n window.addEventListener('load', () => updateIsMobile(), { once: true });\n}\n\nexport { isMobile, updateIsMobile };\n","import { Component, createSignal, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ScrollContainerStyled, ScrollDivider } from './style';\nimport windowHeight from 'src/app/hooks/windowSize';\nimport { isMobile } from 'src/app/hooks/isMobile';\n\nexport interface ScrollContainerProps extends Styleable {\n children: JSXElement;\n maxHeight?: number;\n}\n\nexport const ScrollContainer: Component<ScrollContainerProps> = props => {\n const [scrolled, setScrolled] = createSignal(false);\n\n const onScroll = (e: Event): void => {\n setScrolled((e.target as HTMLUListElement).scrollTop > 0);\n };\n\n const offset = (): number => (isMobile() ? 150 : 200);\n\n const maxHeight = (): string =>\n props.maxHeight !== undefined ? `${props.maxHeight}px` : `${windowHeight() - offset()}px`;\n\n return (\n <>\n <ScrollDivider isShown={scrolled()} />\n <ScrollContainerStyled maxHeight={maxHeight()} onScroll={onScroll} class={props.class}>\n {props.children}\n </ScrollContainerStyled>\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const AStyled = styled.a`\n display: block;\n text-decoration: unset;\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { AStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LinkProps extends Styleable {\n children: JSXElement;\n\n href: string;\n\n blank?: boolean;\n}\n\nexport const Link: Component<LinkProps> = props => {\n const attributes = (): { rel: 'noreferrer noopener' } | {} =>\n props.blank ? { rel: 'noreferrer noopener' } : {};\n\n return (\n <AStyled\n href={props.href}\n target={props.blank ? '_blank' : '_self'}\n class={props.class}\n {...attributes}\n >\n {props.children}\n </AStyled>\n );\n};\n","import { createContext } from 'solid-js';\nimport { TonConnectUI } from 'src/ton-connect-ui';\n\nexport const TonConnectUiContext = createContext<TonConnectUI>();\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface CopyIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const CopyIcon: Component<CopyIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.76228 2.09998H10.2378C11.0458 2.09997 11.7067 2.09996 12.2438 2.14384C12.7997 2.18926 13.3017 2.28614 13.7706 2.52505C14.5045 2.89896 15.1011 3.49558 15.475 4.22941C15.7139 4.6983 15.8108 5.20038 15.8562 5.75629C15.9001 6.29337 15.9001 6.95422 15.9001 7.76227V8.1H16.2377C17.0457 8.09999 17.7066 8.09998 18.2437 8.14386C18.7996 8.18928 19.3017 8.28616 19.7705 8.52507C20.5044 8.89898 21.101 9.4956 21.4749 10.2294C21.7138 10.6983 21.8107 11.2004 21.8561 11.7563C21.9 12.2934 21.9 12.9542 21.9 13.7623V16.2377C21.9 17.0458 21.9 17.7066 21.8561 18.2437C21.8107 18.7996 21.7138 19.3017 21.4749 19.7706C21.101 20.5044 20.5044 21.101 19.7705 21.4749C19.3017 21.7138 18.7996 21.8107 18.2437 21.8561C17.7066 21.9 17.0458 21.9 16.2378 21.9H13.7623C12.9543 21.9 12.2934 21.9 11.7563 21.8561C11.2004 21.8107 10.6983 21.7138 10.2294 21.4749C9.49561 21.101 8.89898 20.5044 8.52508 19.7706C8.28616 19.3017 8.18928 18.7996 8.14386 18.2437C8.09998 17.7066 8.09999 17.0458 8.1 16.2377V15.9H7.76227C6.95426 15.9 6.29335 15.9 5.75629 15.8561C5.20038 15.8107 4.6983 15.7138 4.22941 15.4749C3.49558 15.101 2.89896 14.5044 2.52505 13.7705C2.28614 13.3017 2.18926 12.7996 2.14384 12.2437C2.09996 11.7066 2.09997 11.0458 2.09998 10.2377V7.76228C2.09997 6.95424 2.09996 6.29336 2.14384 5.75629C2.18926 5.20038 2.28614 4.6983 2.52505 4.22941C2.89896 3.49558 3.49558 2.89896 4.22941 2.52505C4.6983 2.28614 5.20038 2.18926 5.75629 2.14384C6.29336 2.09996 6.95425 2.09997 7.76228 2.09998ZM8.1 14.1V13.7623C8.09999 12.9542 8.09998 12.2934 8.14386 11.7563C8.18928 11.2004 8.28616 10.6983 8.52508 10.2294C8.89898 9.4956 9.49561 8.89898 10.2294 8.52507C10.6983 8.28616 11.2004 8.18928 11.7563 8.14386C12.2934 8.09998 12.9542 8.09999 13.7623 8.1H14.1001V7.79998C14.1001 6.94505 14.0994 6.35798 14.0622 5.90287C14.0259 5.45827 13.9593 5.21944 13.8712 5.0466C13.6699 4.65146 13.3486 4.3302 12.9535 4.12886C12.7806 4.04079 12.5418 3.97419 12.0972 3.93786C11.6421 3.90068 11.055 3.89998 10.2001 3.89998H7.79998C6.94505 3.89998 6.35798 3.90068 5.90287 3.93786C5.45827 3.97419 5.21944 4.04079 5.0466 4.12886C4.65146 4.3302 4.3302 4.65146 4.12886 5.0466C4.04079 5.21944 3.97419 5.45827 3.93786 5.90287C3.90068 6.35798 3.89998 6.94505 3.89998 7.79998V10.2C3.89998 11.0549 3.90068 11.642 3.93786 12.0971C3.97419 12.5417 4.04079 12.7805 4.12886 12.9534C4.3302 13.3485 4.65146 13.6698 5.0466 13.8711C5.21944 13.9592 5.45827 14.0258 5.90287 14.0621C6.35798 14.0993 6.94505 14.1 7.79998 14.1H8.1ZM11.0466 10.1289C11.2195 10.0408 11.4583 9.97421 11.9029 9.93788C12.358 9.9007 12.9451 9.9 13.8 9.9H16.2C17.0549 9.9 17.642 9.9007 18.0971 9.93788C18.5417 9.97421 18.7805 10.0408 18.9534 10.1289C19.3485 10.3302 19.6698 10.6515 19.8711 11.0466C19.9592 11.2195 20.0258 11.4583 20.0621 11.9029C20.0993 12.358 20.1 12.9451 20.1 13.8V16.2C20.1 17.0549 20.0993 17.642 20.0621 18.0971C20.0258 18.5417 19.9592 18.7805 19.8711 18.9534C19.6698 19.3485 19.3485 19.6698 18.9534 19.8711C18.7805 19.9592 18.5417 20.0258 18.0971 20.0621C17.642 20.0993 17.0549 20.1 16.2 20.1H13.8C12.9451 20.1 12.358 20.0993 11.9029 20.0621C11.4583 20.0258 11.2195 19.9592 11.0466 19.8711C10.6515 19.6698 10.3302 19.3485 10.1289 18.9534C10.0408 18.7805 9.97421 18.5417 9.93788 18.0971C9.9007 17.642 9.9 17.0549 9.9 16.2V13.8C9.9 12.9451 9.9007 12.358 9.93788 11.9029C9.97421 11.4583 10.0408 11.2195 10.1289 11.0466C10.3302 10.6515 10.6515 10.3302 11.0466 10.1289Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DisconnectIconProps {\n fill?: Property.Color;\n}\n\nexport const DisconnectIcon: Component<DisconnectIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.7624 3.10001C7.95435 3.1 7.29349 3.09999 6.75642 3.14387C6.2005 3.18929 5.69842 3.28617 5.22954 3.52508C4.4957 3.89899 3.89908 4.49561 3.52517 5.22944C3.28626 5.69833 3.18938 6.20041 3.14396 6.75632C3.10008 7.2934 3.10009 7.95424 3.1001 8.76229V15.2377C3.10009 16.0458 3.10008 16.7066 3.14396 17.2437C3.18938 17.7996 3.28626 18.3017 3.52517 18.7706C3.89908 19.5044 4.4957 20.101 5.22954 20.4749C5.69842 20.7138 6.2005 20.8107 6.75642 20.8561C7.29349 20.9 7.95434 20.9 8.76239 20.9H12.0001C12.4972 20.9 12.9001 20.4971 12.9001 20C12.9001 19.503 12.4972 19.1 12.0001 19.1H8.8001C7.94517 19.1 7.3581 19.0993 6.90299 19.0621C6.45839 19.0258 6.21956 18.9592 6.04672 18.8711C5.65158 18.6698 5.33032 18.3485 5.12898 17.9534C5.04092 17.7805 4.97431 17.5417 4.93798 17.0971C4.9008 16.642 4.9001 16.0549 4.9001 15.2V8.80001C4.9001 7.94508 4.9008 7.35801 4.93798 6.9029C4.97431 6.4583 5.04092 6.21947 5.12898 6.04663C5.33032 5.65149 5.65158 5.33023 6.04672 5.12889C6.21956 5.04082 6.45839 4.97422 6.90299 4.93789C7.3581 4.90071 7.94517 4.90001 8.8001 4.90001H12.0001C12.4972 4.90001 12.9001 4.49706 12.9001 4.00001C12.9001 3.50295 12.4972 3.10001 12.0001 3.10001H8.7624Z\"\n fill={fill()}\n />\n <path\n d=\"M17.6364 7.3636C17.2849 7.01212 16.7151 7.01212 16.3636 7.3636C16.0121 7.71507 16.0121 8.28492 16.3636 8.63639L18.8272 11.1H9.00001C8.50295 11.1 8.10001 11.5029 8.10001 12C8.10001 12.497 8.50295 12.9 9.00001 12.9H18.8272L16.3636 15.3636C16.0121 15.7151 16.0121 16.2849 16.3636 16.6364C16.7151 16.9879 17.2849 16.9879 17.6364 16.6364L21.6364 12.6364C21.9879 12.2849 21.9879 11.7151 21.6364 11.3636L17.6364 7.3636Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nconst dropdownBorders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const AccountButtonDropdownStyled = styled.div`\n width: 256px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => dropdownBorders[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.primary}\n \n color: ${props => props.theme!.colors.text.primary}\n`;\n\nexport const UlStyled = styled.ul`\n background-color: ${props => props.theme!.colors.background.primary};\n padding: 8px;\n`;\n\nexport const MenuButtonStyled = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n height: 40px;\n padding-left: 8px;\n width: 100%;\n\n background-color: ${props => props.theme!.colors.background.primary};\n border: none;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n cursor: pointer;\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, createSignal, Show, useContext } from 'solid-js';\nimport { Text } from 'src/app/components';\nimport { CopyIcon } from 'src/app/components/icons/copy-icon';\nimport { DisconnectIcon } from 'src/app/components/icons/disconnect-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { AccountButtonDropdownStyled, MenuButtonStyled, UlStyled } from './style';\n\nconst MenuItemText: Component<{ children: string } & Translateable> = props => (\n <Text translationKey={props.translationKey} fontSize=\"15px\" fontWeight=\"590\">\n {props.children}\n </Text>\n);\n\nexport interface AccountButtonDropdownProps extends Styleable {\n onClose: () => void;\n ref: HTMLDivElement | undefined;\n}\n\nexport const AccountButtonDropdown: Component<AccountButtonDropdownProps> = props => {\n const tonConnectUi = useContext(TonConnectUiContext)!;\n const [isCopiedShown, setIsCopiedShown] = createSignal(false);\n\n const onCopy = async (): Promise<void> => {\n const userFriendlyAddress = toUserFriendlyAddress(\n tonConnectUi.account!.address,\n tonConnectUi.account!.chain === CHAIN.TESTNET\n );\n await copyToClipboard(userFriendlyAddress);\n setIsCopiedShown(true);\n\n setTimeout(() => setIsCopiedShown(false), 1000);\n };\n\n const onDisconnect = (): void => {\n tonConnectUi.disconnect();\n props.onClose();\n };\n\n return (\n <AccountButtonDropdownStyled ref={props.ref} class={props.class} data-tc-dropdown=\"true\">\n <UlStyled>\n <li>\n <MenuButtonStyled onClick={() => onCopy()}>\n <CopyIcon />\n <Show when={!isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copy\">\n Copy address\n </MenuItemText>\n </Show>\n <Show when={isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copied\">\n Address copied!\n </MenuItemText>\n </Show>\n </MenuButtonStyled>\n </li>\n <li>\n <MenuButtonStyled onClick={() => onDisconnect()}>\n <DisconnectIcon />\n <MenuItemText translationKey=\"button.dropdown.disconnect\">\n Disconnect\n </MenuItemText>\n </MenuButtonStyled>\n </li>\n </UlStyled>\n </AccountButtonDropdownStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\nexport const NotificationStyled = styled.div`\n width: 256px;\n padding: 12px 16px;\n display: flex;\n gap: 9px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const NotificationContentStyled = styled.div`\n width: 192px;\n\n > h3 {\n font-size: 15px;\n }\n`;\n\nexport const TextStyled = styled(Text)`\n margin-top: 4px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { H3 } from 'src/app/components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\nimport { NotificationContentStyled, NotificationStyled, TextStyled } from './style';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\n\nexport interface NotificationProps extends Styleable, WithDataAttributes {\n header: PropertyRequired<Translateable, 'translationKey'>;\n children?: string;\n text?: Translateable;\n icon?: JSXElement;\n}\n\nexport const Notification: Component<NotificationProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <NotificationStyled class={props.class} data-tc-notification=\"true\" {...dataAttrs}>\n <NotificationContentStyled>\n <H3\n translationKey={props.header.translationKey}\n translationValues={props.header.translationValues}\n >\n {props.children}\n </H3>\n <Show when={props.text}>\n <TextStyled\n translationKey={props.text!.translationKey}\n translationValues={props.text!.translationValues}\n />\n </Show>\n </NotificationContentStyled>\n {props.icon}\n </NotificationStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n align-self: center;\n`;\n","import { Component, useContext } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { LoaderIconStyled } from 'src/app/views/account-button/notifications/confirm-operation-notification/style';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmOperationNotificationProps extends Styleable {}\n\nexport const ConfirmOperationNotification: Component<ConfirmOperationNotificationProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = (): string =>\n tonConnectUI!.wallet && 'name' in tonConnectUI!.wallet\n ? tonConnectUI!.wallet.name\n : t('common.yourWallet', {}, 'Your wallet');\n\n return (\n <Notification\n header={{\n translationKey: 'notifications.confirm.header',\n translationValues: { name: name() }\n }}\n class={props.class}\n icon={<LoaderIconStyled />}\n data-tc-notification-confirm=\"true\"\n >\n Confirm operation in your wallet\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorTransactionNotificationProps extends Styleable {}\n\nexport const ErrorTransactionNotification: Component<ErrorTransactionNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionCanceled.header' }}\n text={{ translationKey: 'notifications.transactionCanceled.text' }}\n icon={<ErrorIconStyled size=\"xs\" />}\n class={props.class}\n data-tc-notification-tx-cancelled=\"true\"\n >\n Transaction cancelled\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\n\ninterface SuccessTransactionNotificationProps extends Styleable {}\n\nexport const SuccessTransactionNotification: Component<\n SuccessTransactionNotificationProps\n> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionSent.header' }}\n text={{ translationKey: 'notifications.transactionSent.text' }}\n icon={<SuccessIconStyled />}\n class={props.class}\n data-tc-notification-tx-sent=\"true\"\n >\n Transaction sent\n </Notification>\n );\n};\n","import { css } from 'solid-styled-components';\n\nexport const NotificationClass = css`\n transform: translateY(-8px);\n margin-bottom: 12px;\n`;\n","import { Accessor, createEffect, createSignal, on, onCleanup } from 'solid-js';\nimport { Action, action, ActionName } from 'src/app/state/modals-state';\n\ntype Notification = {\n action: ActionName;\n};\n\n/**\n * Hook for opened notifications.\n */\nexport type UseOpenedNotifications = Accessor<Notification[]>;\n\n/**\n * Config for useOpenedNotifications hook.\n */\nexport type UseOpenedNotificationsConfig = {\n /**\n * Timeout in milliseconds after which the notification will be removed, default is 4500.\n */\n timeout?: number;\n};\n\nconst defaultConfig: UseOpenedNotificationsConfig = {\n timeout: 4500\n};\n\nconst [latestAction, setLatestAction] = createSignal<Action | null>(null);\n\nexport function useOpenedNotifications(\n config?: UseOpenedNotificationsConfig\n): UseOpenedNotifications {\n const { timeout } = { ...defaultConfig, ...config };\n\n const [openedNotifications, setOpenedNotifications] = createSignal<Notification[]>([]);\n const [timeoutIds, setTimeoutIds] = createSignal<ReturnType<typeof setTimeout>[]>([]);\n\n createEffect(\n on(action, (action: Action | null): void => {\n // do nothing if action is null or should not show notification\n if (!action || !action.showNotification) {\n // clearAction not work without that code\n setOpenedNotifications(openedNotifications =>\n openedNotifications.filter(n => n.action !== 'confirm-transaction')\n );\n\n return;\n }\n\n // do nothing if action is the same as latest action\n if (latestAction() === action) {\n return;\n }\n\n const isConfirmTransactionAction =\n latestAction()?.name === 'confirm-transaction' &&\n action.name === 'confirm-transaction';\n\n const isConfirmSignDataAction =\n latestAction()?.name === 'confirm-sign-data' && action.name === 'confirm-sign-data';\n\n if (isConfirmTransactionAction || isConfirmSignDataAction) {\n return;\n }\n\n setLatestAction(action);\n\n // cleanup all not confirmed transactions\n setOpenedNotifications(openedNotifications =>\n openedNotifications.filter(\n n => n.action !== 'confirm-transaction' && n.action !== 'confirm-sign-data'\n )\n );\n\n // create notification\n const notification: Notification = { action: action.name };\n setOpenedNotifications(openedNotifications => [...openedNotifications, notification]);\n\n // remove notification after timeout\n const timeoutId = setTimeout(() => {\n setOpenedNotifications(openedNotifications =>\n openedNotifications.filter(n => n !== notification)\n );\n setTimeoutIds(timeoutIds => timeoutIds.filter(id => id !== timeoutId));\n }, timeout);\n setTimeoutIds(timeoutIds => [...timeoutIds, timeoutId]);\n })\n );\n\n // cleanup all timeouts on unmount\n onCleanup(() => {\n timeoutIds().forEach(id => clearTimeout(id));\n });\n\n return openedNotifications;\n}\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorSignDataNotificationProps extends Styleable {}\n\nexport const ErrorSignDataNotification: Component<ErrorSignDataNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.signDataCanceled.header' }}\n icon={<ErrorIconStyled size=\"xs\" />}\n class={props.class}\n data-tc-notification-sign-data-cancelled=\"true\"\n >\n Sign data canceled\n </Notification>\n );\n};\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\n\ninterface SuccessSignDataNotificationProps extends Styleable {}\n\nexport const SuccessSignDataNotification: Component<SuccessSignDataNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.dataSigned.header' }}\n icon={<SuccessIconStyled />}\n class={props.class}\n data-tc-notification-data-signed=\"true\"\n >\n Data signed\n </Notification>\n );\n};\n","import { Component, For, Match, Switch } from 'solid-js';\nimport { TransitionGroup } from 'solid-transition-group';\nimport { ConfirmOperationNotification } from './confirm-operation-notification';\nimport { ErrorTransactionNotification } from './error-transaction-notification';\nimport { SuccessTransactionNotification } from './success-transaction-notification';\nimport { NotificationClass } from './style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useOpenedNotifications } from 'src/app/hooks/use-notifications';\nimport { animate } from 'src/app/utils/animate';\nimport { ErrorSignDataNotification } from './error-sign-data-notification';\nimport { SuccessSignDataNotification } from './success-sign-data-notification';\n\nexport interface NotificationsProps extends Styleable {}\n\nexport const Notifications: Component<NotificationsProps> = props => {\n const openedNotifications = useOpenedNotifications();\n\n return (\n <div class={props.class} data-tc-list-notifications=\"true\">\n <TransitionGroup\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-8px)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n const a = animate(\n el,\n [\n { opacity: 1, transform: 'translateY(-8px)' },\n { opacity: 0, transform: 'translateY(-30px)' }\n ],\n {\n duration: 200\n }\n );\n a.finished.then(done);\n }}\n >\n <For each={openedNotifications()}>\n {openedNotification => (\n <Switch>\n <Match when={openedNotification.action === 'transaction-sent'}>\n <SuccessTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'transaction-canceled'}>\n <ErrorTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'data-signed'}>\n <SuccessSignDataNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'sign-data-canceled'}>\n <ErrorSignDataNotification class={NotificationClass} />\n </Match>\n <Match\n when={\n openedNotification.action === 'confirm-transaction' ||\n openedNotification.action === 'confirm-sign-data'\n }\n >\n <ConfirmOperationNotification class={NotificationClass} />\n </Match>\n </Switch>\n )}\n </For>\n </TransitionGroup>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, LoaderIcon } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { AccountButtonDropdown } from 'src/app/views/account-button/account-button-dropdown';\nimport { Notifications } from 'src/app/views/account-button/notifications';\n\nexport const AccountButtonStyled = styled(Button)`\n background-color: ${props => props.theme!.colors.connectButton.background};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n padding: 8px 16px 8px 12px;\n\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n`;\n\nexport const DropdownButtonStyled = styled(AccountButtonStyled)`\n padding: 12px 16px;\n min-width: 148px;\n justify-content: center;\n background-color: ${props => props.theme!.colors.background.primary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n min-width: 148px;\n height: 40px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 18px;\n width: 18px;\n`;\n\nexport const DropdownContainerStyled = styled.div`\n width: fit-content;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const DropdownStyled = styled(AccountButtonDropdown)<{ hidden: boolean }>`\n box-sizing: border-box;\n overflow: hidden;\n margin-top: 12px;\n`;\n\nexport const NotificationsStyled = styled(Notifications)`\n > div:first-child {\n margin-top: 20px;\n }\n`;\n","function getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n if (validMiddleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement` middleware', 'detected. This will lead to an infinite loop. Ensure only one of', 'either has been passed to the `middleware` array.'].join(' '));\n }\n if (!reference || !floating) {\n console.error(['Floating UI: The reference and/or floating element was not defined', 'when `computePosition()` was called. Ensure that both elements have', 'been created and can be measured.'].join(' '));\n }\n }\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n continue;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n if (process.env.NODE_ENV !== \"production\") ;\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = options || {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n return {};\n }\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. This stops `shift()` from taking action, but can\n // be worked around by calling it again after the `arrow()` if desired.\n const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n});\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsSortedByLe;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = alignment !== undefined || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides || placementsSortedByLeastOverflow[0].placement;\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[main], overflow[cross]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n let resetPlacement = 'bottom';\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(middlewareArguments) {\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = options;\n const {\n rects\n } = middlewareArguments;\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(middlewareArguments) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || [];\n const paddingObject = getSideObjectFromPadding(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value;\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n return {\n name: 'offset',\n options: value,\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({\n ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle$1(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter;\n\n // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some(\n // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\n\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n let width = parseFloat(css.width);\n let height = parseFloat(css.height);\n const offsetWidth = element.offsetWidth;\n const offsetHeight = element.offsetHeight;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n fallback: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n fallback\n } = getCssDimensions(domElement);\n let x = (fallback ? round(rect.width) : rect.width) / width;\n let y = (fallback ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport, _win$visualViewport2;\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = FALLBACK_SCALE;\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const win = domElement ? getWindow(domElement) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n let x = (clientRect.left + (addVisualOffsets ? ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0 : 0)) / scale.x;\n let y = (clientRect.top + (addVisualOffsets ? ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0 : 0)) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n iframeRect.x += (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n iframeRect.y += (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += iframeRect.x;\n y += iframeRect.y;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node\n node.assignedSlot ||\n // DOM Element detected\n node.parentNode || (\n // ShadowRoot detected\n isShadowRoot(node) ? node.host : null) ||\n // Fallback\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n return getCssDimensions(element);\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n // This doesn't appear to need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n if (list === void 0) {\n list = [];\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\n// Returns the inner client rect, subtracting scrollbars if present\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y,\n width,\n height\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n if (isElement(clippingAncestor)) {\n return getInnerBoundingClientRect(clippingAncestor, strategy);\n }\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n observer.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _observer;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import{createEffect as f,createMemo as R,createSignal as g,onCleanup as y}from\"solid-js\";import{computePosition as E}from\"@floating-ui/dom\";function P(l,u,e){let c=()=>{var t;return(t=e==null?void 0:e.placement)!=null?t:\"bottom\"},d=()=>{var t;return(t=e==null?void 0:e.strategy)!=null?t:\"absolute\"},[n,o]=g({x:null,y:null,placement:c(),strategy:d(),middlewareData:{}}),[x,F]=g();f(()=>{let t=x();if(t)throw t.value});let s=R(()=>(l(),u(),{}));function i(){let t=l(),r=u();if(t&&r){let a=s();E(t,r,{middleware:e==null?void 0:e.middleware,placement:c(),strategy:d()}).then(m=>{a===s()&&o(m)},m=>{F(m)})}}return f(()=>{let t=l(),r=u();if(e==null||e.middleware,c(),d(),t&&r)if(e!=null&&e.whileElementsMounted){let a=e.whileElementsMounted(t,r,i);a&&y(a)}else i()}),{get x(){return n().x},get y(){return n().y},get placement(){return n().placement},get strategy(){return n().strategy},get middlewareData(){return n().middlewareData},update:i}}export{P as useFloating};\n","import { Component, createSignal, onCleanup, onMount, Show, useContext } from 'solid-js';\nimport { ArrowIcon, Text, TonIcon } from 'src/app/components';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { Account, CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport {\n AccountButtonStyled,\n DropdownButtonStyled,\n DropdownContainerStyled,\n DropdownStyled,\n LoaderButtonStyled,\n LoaderIconStyled,\n NotificationsStyled\n} from './style';\nimport { Dynamic, Portal } from 'solid-js/web';\nimport { useFloating } from 'solid-floating-ui';\nimport { autoUpdate, flip, shift } from '@floating-ui/dom';\nimport { Transition } from 'solid-transition-group';\nimport { useTheme } from 'solid-styled-components';\nimport { globalStylesTag } from 'src/app/styles/global-styles';\nimport { animate } from 'src/app/utils/animate';\n\ninterface AccountButtonProps {}\n\nexport const AccountButton: Component<AccountButtonProps> = () => {\n const theme = useTheme();\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [isOpened, setIsOpened] = createSignal(false);\n const [account, setAccount] = createSignal<Account | null>(connector.account);\n const [restoringProcess, setRestoringProcess] = createSignal<boolean>(!connector.account);\n\n let dropDownRef: HTMLDivElement | undefined;\n\n const [floating, setFloating] = createSignal<HTMLDivElement | undefined>();\n const [anchor, setAnchor] = createSignal<HTMLButtonElement | undefined>();\n\n const position = useFloating(anchor, floating, {\n whileElementsMounted: autoUpdate,\n placement: 'bottom-end',\n middleware: [flip(), shift()]\n });\n\n const normalizedAddress = (): string => {\n const acc = account();\n if (acc) {\n const userFriendlyAddress = toUserFriendlyAddress(\n acc.address,\n acc.chain === CHAIN.TESTNET\n );\n return userFriendlyAddress.slice(0, 4) + '…' + userFriendlyAddress.slice(-4);\n }\n\n return '';\n };\n\n // TODO: implement restoring process\n tonConnectUI.connectionRestored.then(() => setRestoringProcess(false));\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (!wallet) {\n setIsOpened(false);\n setAccount(null);\n setRestoringProcess(false);\n return;\n }\n\n setAccount(wallet.account);\n setRestoringProcess(false);\n });\n\n const onClick = (e: Event): void | boolean => {\n if (!account() || !isOpened()) {\n return;\n }\n const clickToButton = anchor()!.contains(e.target as Node);\n const clickToDropdown = dropDownRef!.contains(e.target as Node);\n\n if (!clickToButton && !clickToDropdown) {\n setIsOpened(false);\n }\n };\n\n onMount(() => {\n document.body.addEventListener('click', onClick);\n });\n\n onCleanup(() => {\n document.body.removeEventListener('click', onClick);\n unsubscribe();\n });\n\n return (\n <Dynamic component={globalStylesTag}>\n <Show when={restoringProcess()}>\n <LoaderButtonStyled disabled={true} data-tc-connect-button-loading=\"true\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={!restoringProcess()}>\n <Show when={!account()}>\n <AccountButtonStyled\n onClick={() => tonConnectUI.openModal()}\n data-tc-connect-button=\"true\"\n scale=\"s\"\n >\n <TonIcon fill={theme.colors.connectButton.foreground} />\n <Text\n translationKey=\"button.connectWallet\"\n fontSize=\"15px\"\n lineHeight=\"18px\"\n fontWeight=\"590\"\n color={theme.colors.connectButton.foreground}\n >\n Connect wallet\n </Text>\n </AccountButtonStyled>\n </Show>\n <Show when={account()}>\n <DropdownContainerStyled>\n <DropdownButtonStyled\n onClick={() => setIsOpened(v => !v)}\n ref={setAnchor}\n data-tc-dropdown-button=\"true\"\n scale=\"s\"\n >\n <Text fontSize=\"15px\" fontWeight=\"590\" lineHeight=\"18px\">\n {normalizedAddress()}\n </Text>\n <ArrowIcon direction=\"bottom\" />\n </DropdownButtonStyled>\n <Portal>\n <tc-root\n ref={setFloating}\n style={{\n position: position.strategy,\n top: `${position.y ?? 0}px`,\n left: `${position.x ?? 0}px`,\n 'z-index': 999\n }}\n data-tc-dropdown-container=\"true\"\n >\n <Transition\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translateY(-8px)' },\n { opacity: 1, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n const a = animate(\n el,\n [\n { opacity: 1, transform: 'translateY(0)' },\n { opacity: 0, transform: 'translateY(-8px)' }\n ],\n {\n duration: 150\n }\n );\n a.finished.then(done);\n }}\n >\n <Show when={isOpened()}>\n <DropdownStyled\n hidden={!isOpened()}\n onClose={() => setIsOpened(false)}\n ref={dropDownRef}\n />\n </Show>\n </Transition>\n <NotificationsStyled />\n </tc-root>\n </Portal>\n </DropdownContainerStyled>\n </Show>\n </Show>\n </Dynamic>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { H1, Modal, TabBar, Text } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const StyledModal = styled(Modal)`\n padding-left: 24px;\n padding-right: 24px;\n padding-top: 18px;\n padding-bottom: 0;\n\n ${media('mobile')} {\n padding-left: 0;\n padding-right: 0;\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 12px;\n\n ${media('mobile')} {\n padding: 0 10px;\n }\n`;\n\nexport const LoaderContainerStyled = styled.div`\n margin: 30px 0;\n width: 100%;\n display: flex;\n justify-content: center;\n\n ${media('mobile')} {\n height: 160px;\n align-items: center;\n }\n`;\n\nexport const TabTextStyled = styled(Text)`\n min-width: 84px;\n text-align: center;\n font-weight: 590;\n`;\n\nexport const TabBarStyled = styled(TabBar)`\n margin: 0 auto 22px;\n`;\n","import { ConnectAdditionalRequest, RequiredFeatures, ITonConnect } from '@tonconnect/sdk';\nimport { createStore } from 'solid-js/store';\nimport { Locales } from 'src/models/locales';\nimport { WalletsListConfiguration } from 'src/models/wallets-list-configuration';\nimport { ReturnStrategy } from 'src/models/return-strategy';\nimport { Loadable } from 'src/models/loadable';\n\nexport type AppState = {\n connector: ITonConnect;\n buttonRootId: string | null;\n language: Locales;\n walletsListConfiguration: WalletsListConfiguration | {};\n connectRequestParameters?: Loadable<ConnectAdditionalRequest> | null;\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}` | undefined;\n preferredWalletAppName: string | undefined;\n enableAndroidBackHandler: boolean;\n walletsRequiredFeatures: RequiredFeatures | undefined;\n walletsPreferredFeatures: RequiredFeatures | undefined;\n};\n\nexport const [appState, setAppState] = createStore<AppState>({\n buttonRootId: null,\n language: 'en',\n returnStrategy: 'back',\n twaReturnUrl: undefined,\n walletsListConfiguration: {},\n enableAndroidBackHandler: true\n} as AppState);\n","export function uniq<T>(array: T[]): T[] {\n return [...new Set(array)];\n}\n\nexport function mergeConcat<K extends PropertyKey, T extends Record<K, unknown>>(\n idKey: K,\n array1: T[],\n array2: T[]\n): T[] {\n return array1\n .map(item1 => {\n const item2 = array2.find(elem => elem[idKey] === item1[idKey]);\n array2 = array2.filter(elem => elem[idKey] !== item1[idKey]);\n\n return item2 === undefined ? item1 : item2;\n })\n .concat(array2);\n}\n","import { WalletInfo, TonConnect } from '@tonconnect/sdk';\nimport { UIWallet } from 'src/models/ui-wallet';\nimport { WalletsListConfiguration } from 'src/models';\nimport { mergeConcat } from 'src/app/utils/array';\n\nexport function uiWalletToWalletInfo(uiWallet: UIWallet): WalletInfo {\n if ('jsBridgeKey' in uiWallet) {\n return {\n ...uiWallet,\n injected: TonConnect.isWalletInjected(uiWallet.jsBridgeKey),\n embedded: TonConnect.isInsideWalletBrowser(uiWallet.jsBridgeKey)\n };\n }\n\n return uiWallet;\n}\n\nexport function applyWalletsListConfiguration(\n walletsList: WalletInfo[],\n configuration?: WalletsListConfiguration\n): WalletInfo[] {\n if (!configuration) {\n return walletsList;\n }\n\n if (configuration.includeWallets?.length) {\n walletsList = mergeConcat(\n 'name',\n walletsList,\n configuration.includeWallets.map(uiWalletToWalletInfo)\n );\n }\n\n return walletsList;\n}\n\nexport function supportsDesktop(walletInfo: WalletInfo): boolean {\n return walletInfo.platforms.some(w => ['macos', 'linux', 'windows'].includes(w));\n}\n\nexport function supportsMobile(walletInfo: WalletInfo): boolean {\n return walletInfo.platforms.some(w => ['ios', 'android'].includes(w));\n}\n\nexport function supportsExtension(walletInfo: WalletInfo): boolean {\n return walletInfo.platforms.some(w => ['chrome', 'firefox', 'safari'].includes(w));\n}\n\nexport function eqWalletName(wallet1: { name: string; appName: string }, name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return (\n wallet1.name.toLowerCase() === name.toLowerCase() ||\n wallet1.appName.toLowerCase() === name.toLowerCase()\n );\n}\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, H2, IconButton, WalletLabeledItem } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const DesktopSelectWalletModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 18px;\n`;\n\nexport const ScrollDivider = styled.div<{ isShown: boolean }>`\n height: 1px;\n margin: 0 -24px;\n width: calc(100% + 48px);\n opacity: 0.12;\n background: ${props => (props.isShown ? props.theme!.colors.icon.secondary : 'transparent')};\n transition: background 0.15s ease-in-out;\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const WalletsUl = styled.ul`\n display: grid;\n grid-template-columns: repeat(auto-fit, 92px);\n grid-template-rows: auto;\n align-content: flex-start;\n row-gap: 8px;\n width: 100%;\n padding: 0 0 16px;\n align-self: flex-start;\n max-width: 400px;\n margin: 0 auto;\n list-style: none;\n\n > li {\n display: block;\n height: fit-content;\n }\n\n ${media('mobile')} {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 0;\n padding: 8px 12px 16px;\n max-width: none;\n\n > li {\n min-width: 78px;\n display: flex;\n }\n\n > li > * {\n width: 100%;\n }\n }\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto 1px;\n font-size: 15px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const WalletLabeledItemStyled = styled(WalletLabeledItem)<{ withOpacity?: boolean }>`\n opacity: ${props => (props.withOpacity ? '0.4' : '1')};\n`;\n\nexport const WalletsNotSupportedNotifier = styled.div`\n display: grid;\n grid-template-columns: auto 28px;\n gap: 16px;\n padding: 16px;\n margin-bottom: 16px;\n border-radius: 16px;\n color: ${props => props.theme!.colors.text.secondary};\n background: ${props => props.theme!.colors.background.tint};\n\n ${media('mobile')} {\n margin-left: 16px;\n margin-right: 16px;\n }\n`;\n\nexport const WalletsNotSupportedNotifierText = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: left;\n margin: 0;\n`;\n\nexport const ErrorBoxStyled = styled.div`\n position: absolute;\n bottom: 14px;\n left: 50%;\n transform: translate(-50%, 0);\n\n text-wrap: nowrap;\n display: flex;\n gap: 6px;\n align-items: center;\n border-radius: 18px;\n min-width: 126px;\n padding: 9px 16px 9px 10px;\n\n filter: drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.08));\n background-color: ${props => props.theme!.colors.background.segment};\n`;\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ExclamationIconProps extends Styleable {\n fill?: Property.Color;\n size: '16' | '28';\n}\n\nexport const ExclamationIcon: Component<ExclamationIconProps> = props => {\n const theme = useTheme();\n\n const size = (): '16' | '28' => props.size;\n const fill = (): string => props.fill || theme.colors.icon.error;\n\n return (\n <>\n {size() === '16' ? (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_5122_10355)\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill={fill()} />\n <circle cx=\"8\" cy=\"11\" r=\"1\" fill={theme.colors.constant.white} />\n <path\n d=\"M7.04994 4.99875C7.02277 4.45542 7.45598 4 8 4C8.54402 4 8.97723 4.45541 8.95006 4.99875L8.78745 8.25094C8.76647 8.67055 8.42014 9 8 9C7.57986 9 7.23353 8.67055 7.21255 8.25094L7.04994 4.99875Z\"\n fill={theme.colors.constant.white}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_5122_10355\">\n <rect width=\"16\" height=\"16\" fill={theme.colors.constant.white} />\n </clipPath>\n </defs>\n </svg>\n ) : size() === '28' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n class={props.class}\n >\n <circle cx=\"14\" cy=\"14\" r=\"12\" fill={fill()} />\n <circle cx=\"14\" cy=\"18.9\" r=\"1.4\" fill={theme.colors.constant.white} />\n <path\n d=\"M12.6658 8.89845C12.63 8.13698 13.2377 7.5 14 7.5C14.7623 7.5 15.37 8.13698 15.3342 8.89845L15.047 15.0013C15.0207 15.5604 14.5597 16.0002 14 16.0002C13.4403 16.0002 12.9793 15.5604 12.953 15.0013L12.6658 8.89845Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : null}\n </>\n );\n};\n","import { Component, createSignal, For, Show } from 'solid-js';\nimport {\n DesktopSelectWalletModalStyled,\n WalletsUl,\n H1Styled,\n StyledIconButton,\n WalletLabeledItemStyled,\n WalletsNotSupportedNotifier,\n ErrorBoxStyled,\n WalletsNotSupportedNotifierText\n} from './style';\nimport { isMobile } from 'src/app/hooks/isMobile';\nimport { supportsMobile } from 'src/app/utils/wallets';\nimport { ScrollContainer } from 'src/app/components/scroll-container';\nimport { ExclamationIcon } from 'src/app/components/icons/exclamation-icon';\nimport { Transition } from 'solid-transition-group';\nimport { animate } from 'src/app/utils/animate';\nimport { ErrorIcon, Text } from 'src/app/components';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\n\nexport interface DesktopSelectWalletModalProps {\n walletsList: UIWalletInfo[];\n\n featureCheckMode?: 'strict' | 'soft' | 'hide';\n\n onBack: () => void;\n\n onSelect: (walletInfo: UIWalletInfo) => void;\n}\n\nexport const AllWalletsListModal: Component<DesktopSelectWalletModalProps> = props => {\n const maxHeight = (): number | undefined => (isMobile() ? undefined : 510);\n\n const [errorSupportOpened, setErrorSupportOpened] = createSignal<UIWalletInfo | null>(null);\n let timeoutId: null | ReturnType<typeof setTimeout> = null;\n const onErrorClick = (wallet: UIWalletInfo): void => {\n setErrorSupportOpened(wallet);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => setErrorSupportOpened(null), 1500);\n };\n\n const handleSelectWallet = (wallet: UIWalletInfo): void => {\n if (!wallet.isSupportRequiredFeatures && props.featureCheckMode === 'strict') {\n onErrorClick(wallet);\n return;\n }\n props.onSelect(wallet);\n };\n\n const walletsList = (): UIWalletInfo[] =>\n isMobile() ? props.walletsList.filter(supportsMobile) : props.walletsList;\n\n const supportedWallets = (): UIWalletInfo[] =>\n walletsList().filter(wallet => wallet.isSupportRequiredFeatures);\n\n const unsupportedWallets = (): UIWalletInfo[] =>\n walletsList().filter(wallet => !wallet.isSupportRequiredFeatures);\n\n return (\n <DesktopSelectWalletModalStyled data-tc-wallets-modal-list=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBack()} />\n <H1Styled translationKey=\"walletModal.wallets\">Wallets</H1Styled>\n <ScrollContainer maxHeight={maxHeight()}>\n <WalletsUl>\n <For each={supportedWallets()}>\n {wallet => (\n <li>\n <WalletLabeledItemStyled\n wallet={wallet}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </WalletsUl>\n <Show when={unsupportedWallets().length > 0 && props.featureCheckMode !== 'hide'}>\n <WalletsNotSupportedNotifier>\n <WalletsNotSupportedNotifierText translationKey=\"walletModal.allWallets.walletsBelowNotSupported\">\n The wallets below don’t support all features of the connected service.\n You can use your recovery phrase in one of the supported wallets above.\n </WalletsNotSupportedNotifierText>\n <ExclamationIcon size=\"28\" />\n </WalletsNotSupportedNotifier>\n <WalletsUl>\n <For each={unsupportedWallets()}>\n {wallet => (\n <li>\n <WalletLabeledItemStyled\n wallet={wallet}\n onClick={() => handleSelectWallet(wallet)}\n withOpacity={props.featureCheckMode === 'strict'}\n />\n </li>\n )}\n </For>\n </WalletsUl>\n <Transition\n onBeforeEnter={el => {\n animate(\n el,\n [\n { opacity: 0, transform: 'translate(-50%, 44px)' },\n { opacity: 1, transform: 'translate(-50%, 0)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n );\n }}\n onExit={(el, done) => {\n animate(\n el,\n [\n { opacity: 1, transform: 'translate(-50%, 0)' },\n { opacity: 0, transform: 'translate(-50%, 44px)' }\n ],\n {\n duration: 150,\n easing: 'ease-out'\n }\n ).finished.then(() => {\n done();\n });\n }}\n >\n <Show when={errorSupportOpened()}>\n <ErrorBoxStyled>\n <ErrorIcon size=\"xs\" />\n <Text\n translationKey=\"walletModal.allWallets.walletNotSupportService\"\n translationValues={{ name: errorSupportOpened()!.name }}\n >\n {errorSupportOpened()!.name} doesn’t support connected service\n </Text>\n </ErrorBoxStyled>\n </Show>\n </Transition>\n </Show>\n </ScrollContainer>\n </DesktopSelectWalletModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport {\n Button,\n ErrorIcon,\n H1,\n H2,\n IconButton,\n LoaderIcon,\n Image,\n QRCode\n} from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst tgButtonBorders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst tgIconBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const DesktopConnectionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const BodyStyled = styled.div<{ qr: boolean }>`\n flex: 1;\n margin-top: ${props => (props.qr ? '0' : '18px')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 232px;\n`;\n\nexport const QRCodeStyled = styled(QRCode)`\n margin-bottom: 24px;\n`;\n\nexport const H1Styled = styled(H1)`\n max-width: 288px;\n margin: 0 auto 2px;\n`;\n\nexport const H2Styled = styled(H2)`\n max-width: 288px;\n text-align: center;\n margin: 0 auto 20px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n justify-content: center;\n gap: 8px;\n padding-bottom: 16px;\n`;\n\nexport const BottomButtonsContainerStyled = styled(ButtonsContainerStyled)`\n padding-bottom: 0;\n`;\n\nexport const FooterButton = styled(Button)`\n margin-bottom: 24px;\n`;\n\nexport const LoaderStyled = styled(LoaderIcon)`\n margin-bottom: 18px;\n margin-top: 2px;\n`;\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-bottom: 16px;\n`;\n\nexport const BodyTextStyled = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: center;\n margin-bottom: 20px;\n`;\n\nexport const TgButtonStyled = styled(Button)`\n margin-top: -8px;\n margin-bottom: 24px;\n width: 100%;\n padding: 12px 12px 12px 20px;\n border-radius: ${props => tgButtonBorders[props.theme!.borderRadius]};\n font-size: 16px;\n line-height: 20px;\n`;\n\nexport const TgImageStyled = styled(Image)`\n width: 32px;\n height: 32px;\n border-radius: ${props => tgIconBorders[props.theme!.borderRadius]};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\n\ninterface TranslationProps extends PropertyRequired<Translateable, 'translationKey'> {\n children?: JSXElement;\n}\n\nexport const Translation: Component<TranslationProps> = props => {\n const [t] = useI18n();\n\n return <>{t(props.translationKey, props.translationValues, props.children?.toString())}</>;\n};\n","import { ReturnStrategy } from 'src/models/return-strategy';\nimport {\n isInTelegramBrowser,\n isInTMA,\n isTmaPlatform,\n sendOpenTelegramLink\n} from 'src/app/utils/tma-api';\nimport {\n isBrowser,\n isOS,\n openDeeplinkWithFallback,\n openLink,\n openLinkBlank,\n toDeeplink\n} from 'src/app/utils/web-api';\nimport { encodeTelegramUrlParameters, isTelegramUrl } from '@tonconnect/sdk';\n\n/**\n * Adds a return strategy to a url.\n * @param url\n * @param strategy\n * TODO: refactor this method\n */\nexport function addReturnStrategy(\n url: string,\n strategy:\n | ReturnStrategy\n | {\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}` | undefined;\n }\n): string {\n let returnStrategy;\n if (typeof strategy === 'string') {\n returnStrategy = strategy;\n } else {\n returnStrategy = isInTMA() ? strategy.twaReturnUrl || strategy.returnStrategy : 'none';\n }\n const newUrl = addQueryParameter(url, 'ret', returnStrategy);\n\n if (!isTelegramUrl(url)) {\n return newUrl;\n }\n\n const lastParam = newUrl.slice(newUrl.lastIndexOf('&') + 1);\n return newUrl.slice(0, newUrl.lastIndexOf('&')) + '-' + encodeTelegramUrlParameters(lastParam);\n}\n\n/**\n * Redirects the user to a specified Telegram link with various strategies for returning to the application.\n * This function is primarily used for TON Space to handle different platforms and operating systems.\n *\n * @param universalLink A string representing the universal link to redirect to within Telegram.\n * @param options An object containing specific properties to customize the redirect behavior:\n * - returnStrategy: An enum `ReturnStrategy` dictating the method for returning to the app after the action is completed.\n * - twaReturnUrl: A URL template string for TMA return, or `undefined` if not applicable.\n * - forceRedirect: A boolean flag to force redirection, bypassing deep link fallback mechanisms.\n *\n * The function adapts its behavior based on the execution context, such as the TMA or browser environment, and the operating system.\n * Different strategies involve manipulating URL parameters and utilizing platform-specific features for optimal user experience.\n */\nexport function redirectToTelegram(\n universalLink: string,\n options: {\n returnStrategy: ReturnStrategy;\n twaReturnUrl: `${string}://${string}` | undefined;\n forceRedirect: boolean;\n }\n): void {\n options = { ...options };\n // TODO: Remove this line after all dApps and the wallets-list.json have been updated\n const directLink = convertToTGDirectLink(universalLink);\n const directLinkUrl = new URL(directLink);\n\n if (!directLinkUrl.searchParams.has('startapp')) {\n directLinkUrl.searchParams.append('startapp', 'tonconnect');\n }\n\n if (isInTelegramBrowser()) {\n // return back to the telegram browser\n options.returnStrategy = 'back';\n const linkWitStrategy = addReturnStrategy(directLinkUrl.toString(), options.returnStrategy);\n\n openLinkBlank(linkWitStrategy);\n } else if (isInTMA()) {\n if (isTmaPlatform('ios', 'android', 'macos', 'tdesktop', 'web')) {\n // Use the `back` strategy, the current TMA instance will keep open.\n // TON Space should automatically open in stack and should close\n // itself after the user action.\n\n options.returnStrategy = 'back';\n const linkWitStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n sendOpenTelegramLink(linkWitStrategy);\n } else if (isTmaPlatform('weba')) {\n // TODO: move weba to the ios/android/macOS/tdesktop strategy\n // Similar to tdesktop strategy, but opening another TMA occurs\n // through sending `web_app_open_tg_link` event to `parent`.\n\n sendOpenTelegramLink(addReturnStrategy(directLinkUrl.toString(), options));\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n\n openLinkBlank(addReturnStrategy(directLinkUrl.toString(), options));\n }\n } else {\n // For browser\n if (isOS('ios')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // TODO: use back for all browsers\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'back';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n // In case if the browser is Chrome or Firefox, use the deep link with fallback to the direct link.\n const isChrome = isBrowser('chrome');\n const isFirefox = isBrowser('firefox');\n const useDeepLink = (isChrome || isFirefox) && !options.forceRedirect;\n\n if (useDeepLink) {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n } else {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n openLinkBlank(linkWithStrategy);\n }\n } else if (isOS('android')) {\n // Use the `none` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // TODO: use back for all browsers\n options.returnStrategy = 'back';\n\n // In case if the browser is Chrome or Firefox, use the deep link with fallback to the direct link.\n const isChrome = isBrowser('chrome');\n const isFirefox = isBrowser('firefox');\n const useDeepLink = (isChrome || isFirefox) && !options.forceRedirect;\n\n if (useDeepLink) {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n } else {\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n openLinkBlank(linkWithStrategy);\n }\n } else if (isOS('ipad')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'back';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n // In case if the browser is Chrome or Firefox, use the deep link with fallback to the direct link.\n const isChrome = isBrowser('chrome');\n const isFirefox = isBrowser('firefox');\n const useDeepLink = (isChrome || isFirefox) && !options.forceRedirect;\n\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n if (useDeepLink) {\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n } else {\n openLinkBlank(linkWithStrategy);\n }\n } else if (isOS('macos', 'windows', 'linux')) {\n // Use the `none` strategy. The user will transition to the TON Space\n // and return to the TMA after the action is completed.\n\n options.returnStrategy = 'back';\n options.twaReturnUrl = undefined;\n\n const linkWithStrategy = addReturnStrategy(\n directLinkUrl.toString(),\n options.returnStrategy\n );\n\n if (options.forceRedirect) {\n openLinkBlank(linkWithStrategy);\n } else {\n const deepLink = convertToTGDeepLink(linkWithStrategy);\n\n openDeeplinkWithFallback(deepLink, () => openLinkBlank(linkWithStrategy));\n }\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n\n openLinkBlank(addReturnStrategy(directLinkUrl.toString(), options));\n }\n }\n}\n\n/**\n * Redirects the user to a specified wallet link with various strategies for returning to the application.\n * This function is primarily used for any wallet (except TON Space) to handle different platforms and operating systems.\n *\n * @param universalLink A string representing the universal link to redirect to within the wallet.\n * @param deepLink A string representing the deep link to redirect to within the wallet, or `undefined` if not applicable.\n * @param options An object containing specific properties to customize the redirect behavior:\n * - returnStrategy: An enum `ReturnStrategy` dictating the method for returning to the app after the action is completed.\n * - forceRedirect: A boolean flag to force redirection, bypassing deep link fallback mechanisms.\n * @param setOpenMethod A function to set the method of opening the wallet.\n *\n * The function adapts its behavior based on the execution context, such as the TMA or browser environment, and the operating system.\n * Different strategies involve manipulating URL parameters and utilizing platform-specific features for optimal user experience.\n */\nexport function redirectToWallet(\n universalLink: string,\n deepLink: string | undefined,\n options: {\n returnStrategy: ReturnStrategy;\n forceRedirect: boolean;\n },\n setOpenMethod: (method: 'universal-link' | 'custom-deeplink') => void\n): void {\n options = { ...options };\n\n if (isInTelegramBrowser()) {\n if (isOS('ios', 'android')) {\n // return back to the telegram browser\n if (options.returnStrategy === 'back') {\n options.returnStrategy = 'tg://resolve';\n }\n\n setOpenMethod('universal-link');\n\n openLink(addReturnStrategy(universalLink, options.returnStrategy), '_self');\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n setOpenMethod('universal-link');\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n\n openLinkBlank(linkWitStrategy);\n }\n } else if (isInTMA()) {\n if (isTmaPlatform('ios', 'android')) {\n // Use the `tg://resolve` strategy instead of `back`, the user will transition to the other app\n // and return to the Telegram app after the action is completed.\n\n // return back to the telegram app\n if (options.returnStrategy === 'back') {\n options.returnStrategy = 'tg://resolve';\n }\n\n setOpenMethod('universal-link');\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n\n sendOpenTelegramLink(linkWitStrategy, () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else if (isTmaPlatform('macos', 'tdesktop')) {\n // Use the `tg://resolve` strategy instead of `back`, the user will transition to the other app\n // and return to the Telegram app after the action is completed.\n\n // return back to the telegram app\n if (options.returnStrategy === 'back') {\n options.returnStrategy = 'tg://resolve';\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else if (isTmaPlatform('weba')) {\n // Use the `back` strategy, the user will transition to the other app\n // and maybe return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else if (isTmaPlatform('web')) {\n // Use the `back` strategy, the user will transition to the other app\n // and maybe return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n setOpenMethod('universal-link');\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n\n openLinkBlank(linkWitStrategy);\n }\n } else {\n if (isOS('ios')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'none';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n if (isBrowser('chrome')) {\n setOpenMethod('universal-link');\n\n // TODO: in case when the wallet does not exist, the location.href will be rewritten\n openLink(addReturnStrategy(universalLink, options.returnStrategy), '_self');\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n }\n } else if (isOS('android')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n } else if (isOS('ipad')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n // safari does not have a deep link, so we use the `location.href`\n // ref: https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app\n options.returnStrategy = 'none';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n // fallback to the `location.href`\n options.returnStrategy = location.href as ReturnStrategy;\n }\n }\n\n if (isBrowser('chrome')) {\n setOpenMethod('universal-link');\n\n // TODO: in case when the wallet does not exist, the location.href will be rewritten\n openLink(addReturnStrategy(universalLink, options.returnStrategy), '_self');\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n }\n } else if (isOS('macos', 'windows', 'linux')) {\n // Use the `back` strategy, the user will transition to the other app\n // and return to the browser when the action is completed.\n\n // return back to the browser\n if (options.returnStrategy === 'back') {\n if (isBrowser('safari')) {\n options.returnStrategy = 'none';\n } else if (isBrowser('chrome')) {\n options.returnStrategy = 'googlechrome://';\n } else if (isBrowser('firefox')) {\n options.returnStrategy = 'firefox://';\n } else if (isBrowser('opera')) {\n options.returnStrategy = 'opera-http://';\n } else {\n options.returnStrategy = 'none';\n }\n }\n\n const linkWitStrategy = addReturnStrategy(universalLink, options.returnStrategy);\n const useDeepLink = !!deepLink && !options.forceRedirect;\n\n // In case of deep link, use the `custom-deeplink` strategy with fallback to `universal-link`.\n if (useDeepLink) {\n setOpenMethod('custom-deeplink');\n\n openDeeplinkWithFallback(toDeeplink(linkWitStrategy, deepLink), () => {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n });\n } else {\n setOpenMethod('universal-link');\n\n openLinkBlank(linkWitStrategy);\n }\n } else {\n // Fallback for unknown platforms. Should use desktop strategy.\n setOpenMethod('universal-link');\n\n openLinkBlank(addReturnStrategy(universalLink, options.returnStrategy));\n }\n }\n}\n\n/**\n * Adds a query parameter to a URL.\n * @param url\n * @param key\n * @param value\n */\nfunction addQueryParameter(url: string, key: string, value: string): string {\n const parsed = new URL(url);\n parsed.searchParams.append(key, value);\n return parsed.toString();\n}\n\n/**\n * Converts a universal link to a direct link.\n * @param universalLink\n * TODO: Remove this method after all dApps and the wallets-list.json have been updated\n */\nfunction convertToTGDirectLink(universalLink: string): string {\n const url = new URL(universalLink);\n\n if (url.searchParams.has('attach')) {\n url.searchParams.delete('attach');\n url.pathname += '/start';\n }\n\n return url.toString();\n}\n\n/**\n * Converts a direct link to a deep link.\n * @param directLink\n */\nfunction convertToTGDeepLink(directLink: string): string {\n const parsed = new URL(directLink);\n const [, domain, appname] = parsed.pathname.split('/');\n const startapp = parsed.searchParams.get('startapp');\n return `tg://resolve?domain=${domain}&appname=${appname}&startapp=${startapp}`;\n}\n","import {\n ConnectAdditionalRequest,\n isTelegramUrl,\n isWalletInfoCurrentlyInjected,\n WalletMissingRequiredFeaturesError,\n WalletInfoInjectable,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n untrack,\n useContext\n} from 'solid-js';\nimport {\n BodyStyled,\n BodyTextStyled,\n BottomButtonsContainerStyled,\n ButtonsContainerStyled,\n DesktopConnectionModalStyled,\n ErrorIconStyled,\n FooterButton,\n H1Styled,\n H2Styled,\n LoaderStyled,\n QRCodeStyled,\n StyledIconButton,\n TgButtonStyled,\n TgImageStyled\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n BrowserIcon,\n Button,\n DesktopIcon,\n LinkIcon,\n LoaderIcon,\n MobileIcon,\n RetryIcon\n} from 'src/app/components';\nimport { appState } from 'src/app/state/app.state';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { Link } from 'src/app/components/link';\nimport { supportsDesktop, supportsExtension, supportsMobile } from 'src/app/utils/wallets';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { IMG } from 'src/app/env/IMG';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n addReturnStrategy,\n redirectToTelegram,\n redirectToWallet\n} from 'src/app/utils/url-strategy-helpers';\n\nexport interface DesktopConnectionProps {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote | (WalletInfoRemote & WalletInfoInjectable);\n onBackClick: () => void;\n backDisabled?: boolean;\n defaultError?: 'missing-features' | 'connection-declined' | 'not-supported' | null;\n}\n\nexport const DesktopConnectionModal: Component<DesktopConnectionProps> = props => {\n const [mode, setMode] = createSignal<'mobile' | 'desktop' | 'extension'>('mobile');\n\n const [connectionErrored, setConnectionErrored] = createSignal<\n 'missing-features' | 'connection-declined' | 'not-supported' | null\n >(null);\n\n createEffect(() => {\n setConnectionErrored(props.defaultError ?? null);\n });\n\n const [universalLink, setUniversalLink] = createSignal<string | undefined>();\n const [firstClick, setFirstClick] = createSignal(true);\n const connector = useContext(ConnectorContext)!;\n\n const unsubscribe = connector.onStatusChange(\n () => {},\n error => {\n if (error instanceof WalletMissingRequiredFeaturesError) {\n setConnectionErrored('missing-features');\n return;\n }\n\n if (props.wallet.appName !== AT_WALLET_APP_NAME) {\n setConnectionErrored('connection-declined');\n }\n }\n );\n\n onCleanup(unsubscribe);\n\n const generateUniversalLink = (): void => {\n // TODO: prevent double generation of universal link later and remove try-catch\n try {\n const universalLink = connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n );\n\n setUniversalLink(universalLink);\n } catch (e) {}\n };\n\n createEffect(() => {\n if (\n untrack(mode) !== 'extension' &&\n (supportsMobile(props.wallet) || supportsDesktop(props.wallet))\n ) {\n generateUniversalLink();\n }\n });\n\n const onClickMobile = (): void => {\n setConnectionErrored(null);\n if (mode() === 'extension') {\n generateUniversalLink();\n }\n\n setMode('mobile');\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'qrcode'\n });\n };\n\n const onClickDesktop = (): void => {\n setConnectionErrored(null);\n if (mode() === 'extension') {\n generateUniversalLink();\n }\n\n setMode('desktop');\n\n if (isTelegramUrl(universalLink())) {\n onClickTelegram();\n } else {\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToWallet(\n universalLink()!,\n props.wallet.deepLink,\n {\n returnStrategy: appState.returnStrategy,\n forceRedirect: forceRedirect\n },\n (method: 'universal-link' | 'custom-deeplink'): void => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: method\n });\n }\n );\n }\n };\n\n const onClickTelegram = (): void => {\n const forceRedirect = !firstClick();\n setFirstClick(false);\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n redirectToTelegram(universalLink()!, {\n returnStrategy: appState.returnStrategy,\n twaReturnUrl: appState.twaReturnUrl,\n forceRedirect: forceRedirect\n });\n };\n\n const onClickExtension = (): void => {\n setConnectionErrored(null);\n setMode('extension');\n if (isWalletInfoCurrentlyInjected(props.wallet)) {\n setLastSelectedWalletInfo(props.wallet);\n connector.connect(\n {\n jsBridgeKey: props.wallet.jsBridgeKey\n },\n props.additionalRequest\n );\n }\n };\n\n if (supportsMobile(props.wallet)) {\n onClickMobile();\n } else if (supportsExtension(props.wallet)) {\n onClickExtension();\n } else {\n onClickDesktop();\n }\n\n return (\n <DesktopConnectionModalStyled data-tc-wallets-modal-connection-desktop=\"true\">\n <Show when={!props.backDisabled}>\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n </Show>\n <H1Styled>{props.wallet.name}</H1Styled>\n <Show when={mode() === 'mobile' && !connectionErrored()}>\n <H2Styled\n translationKey=\"walletModal.desktopConnectionModal.scanQR\"\n translationValues={{ name: props.wallet.name }}\n >\n Scan the QR code below with your phone’s or {props.wallet.name}’s camera\n </H2Styled>\n </Show>\n\n <BodyStyled qr={mode() === 'mobile'}>\n <Switch>\n <Match when={connectionErrored()}>\n <ErrorIconStyled size=\"s\" />\n <Switch>\n <Match when={connectionErrored() === 'missing-features'}>\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.missingFeatures\"\n translationValues={{ name: props.wallet.name }}\n >\n Please update Wallet, your version does not support required\n features for this dApp\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'connection-declined'}>\n <BodyTextStyled translationKey=\"walletModal.desktopConnectionModal.connectionDeclined\">\n Connection declined\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'not-supported'}>\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.notSupportedWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n {props.wallet.name} doesn’t support the requested action. Please\n connect another wallet that supports it.\n </BodyTextStyled>\n </Match>\n </Switch>\n <ButtonsContainerStyled>\n <Show when={connectionErrored() !== 'not-supported'}>\n <Button\n leftIcon={<RetryIcon />}\n onClick={\n mode() === 'extension' ? onClickExtension : onClickDesktop\n }\n >\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n </Show>\n <Show when={connectionErrored() === 'missing-features'}>\n <Link href={props.wallet.aboutUrl} blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.desktopConnectionModal.updateWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Update {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </Show>\n <Show when={connectionErrored() === 'not-supported'}>\n <Button onClick={() => props.onBackClick()}>\n <Translation translationKey=\"walletModal.desktopConnectionModal.chooseAnotherWallet\">\n Choose Another Wallet\n </Translation>\n </Button>\n </Show>\n </ButtonsContainerStyled>\n </Match>\n <Match when={mode() === 'mobile'}>\n <QRCodeStyled\n disableCopy={false}\n sourceUrl={addReturnStrategy(universalLink()!, 'none')}\n imageUrl={props.wallet.imageUrl}\n />\n </Match>\n <Match when={mode() === 'extension'}>\n <Show when={isWalletInfoCurrentlyInjected(props.wallet)}>\n <LoaderStyled size=\"s\" />\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.continueInExtension\"\n translationValues={{ name: props.wallet.name }}\n >\n Continue in {props.wallet.name} browser extension…\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Button leftIcon={<RetryIcon />} onClick={onClickExtension}>\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n </ButtonsContainerStyled>\n </Show>\n <Show when={!isWalletInfoCurrentlyInjected(props.wallet)}>\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.dontHaveExtension\"\n translationValues={{ name: props.wallet.name }}\n >\n Seems you don't have installed {props.wallet.name} browser extension\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Link href={props.wallet.aboutUrl} blank>\n <Button rightIcon={<LinkIcon />} onClick={onClickExtension}>\n <Translation\n translationKey=\"walletModal.desktopConnectionModal.getWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Get {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </ButtonsContainerStyled>\n </Show>\n </Match>\n <Match when={mode() === 'desktop'}>\n <LoaderIcon size=\"m\" />\n <BodyTextStyled\n translationKey=\"walletModal.desktopConnectionModal.continueOnDesktop\"\n translationValues={{ name: props.wallet.name }}\n >\n Continue in {props.wallet.name} on desktop…\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Button leftIcon={<RetryIcon />} onClick={onClickDesktop}>\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n <Link href={props.wallet.aboutUrl} blank>\n <Button rightIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.desktopConnectionModal.getWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Get {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </ButtonsContainerStyled>\n </Match>\n </Switch>\n </BodyStyled>\n\n <Show when={props.wallet.appName === AT_WALLET_APP_NAME}>\n <TgButtonStyled\n rightIcon={<TgImageStyled src={IMG.TG} />}\n scale=\"s\"\n onClick={onClickTelegram}\n >\n <Translation translationKey=\"walletModal.desktopConnectionModal.openWalletOnTelegram\">\n Open Wallet in Telegram on desktop\n </Translation>\n </TgButtonStyled>\n </Show>\n <Show when={props.wallet.appName !== AT_WALLET_APP_NAME}>\n <BottomButtonsContainerStyled>\n <Show when={mode() !== 'mobile' && supportsMobile(props.wallet)}>\n <FooterButton\n appearance=\"secondary\"\n leftIcon={<MobileIcon />}\n onClick={onClickMobile}\n >\n <Translation translationKey=\"common.mobile\">Mobile</Translation>\n </FooterButton>\n </Show>\n <Show when={mode() !== 'extension' && supportsExtension(props.wallet)}>\n <FooterButton\n appearance=\"secondary\"\n leftIcon={<BrowserIcon />}\n onClick={onClickExtension}\n >\n <Translation translationKey=\"common.browserExtension\">\n Browser Extension\n </Translation>\n </FooterButton>\n </Show>\n <Show when={mode() !== 'desktop' && supportsDesktop(props.wallet)}>\n <FooterButton\n appearance=\"secondary\"\n leftIcon={<DesktopIcon />}\n onClick={onClickDesktop}\n >\n <Translation translationKey=\"common.desktop\">Desktop</Translation>\n </FooterButton>\n </Show>\n </BottomButtonsContainerStyled>\n </Show>\n </DesktopConnectionModalStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { H1, H3, IconButton, Text } from 'src/app/components';\n\nexport const InfoModalStyled = styled.div``;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 18px;\n`;\n\nexport const InfoBlock = styled.div`\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const InfoBlockIconClass = css`\n margin-bottom: 12px;\n`;\n\nexport const H3Styled = styled(H3)`\n text-align: center;\n margin-bottom: 4px;\n`;\n\nexport const TextStyled = styled(Text)`\n text-align: center;\n max-width: 352px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const ButtonsBlock = styled.div`\n padding: 16px 24px 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n`;\n","export const LINKS = {\n GET_A_WALLET:\n 'https://ton.org/wallets?filters[wallet_features][slug][$in]=dapp-auth&pagination[limit]=-1'\n};\n","import { Component } from 'solid-js';\nimport {\n InfoModalStyled,\n H1Styled,\n StyledIconButton,\n InfoBlock,\n InfoBlockIconClass,\n H3Styled,\n TextStyled,\n ButtonsBlock\n} from './style';\nimport {\n Button,\n PersonalityIcon,\n SecurityIcon,\n SwapIcon,\n WalletIcon,\n ScrollContainer,\n Link\n} from 'src/app/components';\nimport { LINKS } from 'src/app/env/LINKS';\nimport { Translation } from 'src/app/components/typography/Translation';\n\ninterface InfoModalProps {\n onBackClick: () => void;\n}\n\nexport const InfoModal: Component<InfoModalProps> = props => {\n return (\n <InfoModalStyled data-tc-wallets-modal-info=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n <H1Styled translationKey=\"walletModal.infoModal.whatIsAWallet\">\n What is a wallet\n </H1Styled>\n\n <ScrollContainer>\n <InfoBlock>\n <SecurityIcon class={InfoBlockIconClass} />\n <H3Styled translationKey=\"walletModal.infoModal.secureDigitalAssets\">\n Secure digital assets storage\n </H3Styled>\n <TextStyled translationKey=\"walletModal.infoModal.walletProtects\">\n A wallet protects and manages your digital assets including TON, tokens and\n collectables.\n </TextStyled>\n </InfoBlock>\n <InfoBlock>\n <PersonalityIcon class={InfoBlockIconClass} />\n <H3Styled translationKey=\"walletModal.infoModal.controlIdentity\">\n Control your Web3 identity\n </H3Styled>\n <TextStyled translationKey=\"walletModal.infoModal.manageIdentity\">\n Manage your digital identity and access decentralized applications with\n ease. Maintain control over your data and engage securely in the blockchain\n ecosystem.\n </TextStyled>\n </InfoBlock>\n <InfoBlock>\n <SwapIcon class={InfoBlockIconClass} />\n <H3Styled translationKey=\"walletModal.infoModal.effortlessCryptoTransactions\">\n Effortless crypto transactions\n </H3Styled>\n <TextStyled translationKey=\"walletModal.infoModal.easilySend\">\n Easily send, receive, monitor your cryptocurrencies. Streamline your\n operations with decentralized applications.\n </TextStyled>\n </InfoBlock>\n\n <ButtonsBlock>\n <Link href={LINKS.GET_A_WALLET} blank>\n <Button rightIcon={<WalletIcon />}>\n <Translation translationKey=\"walletModal.infoModal.getAWallet\">\n Get a Wallet\n </Translation>\n </Button>\n </Link>\n </ButtonsBlock>\n </ScrollContainer>\n </InfoModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon, H1, IconButton, LoaderIcon, Image, H2 } from 'src/app/components';\nimport { Link } from 'src/app/components/link';\nimport { rgba } from 'src/app/utils/css';\n\nexport const MobileConnectionModalStyled = styled.div``;\n\nexport const BodyStyled = styled.div`\n flex: 1;\n margin-top: 18px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 232px;\n`;\n\nexport const H1Styled = styled(H1)`\n max-width: 262px;\n margin: 0 auto 8px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const FooterStyled = styled.div`\n padding: 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n border-top: 0.5px solid ${props => rgba(props.theme!.colors.icon.secondary, 0.2)};\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 36px;\n height: 36px;\n border-radius: 10px;\n`;\n\nexport const FooterButton = styled(Link)`\n margin-left: auto;\n`;\n\nexport const LoaderStyled = styled(LoaderIcon)`\n margin-bottom: 18px;\n margin-top: 2px;\n`;\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-bottom: 16px;\n`;\n\nexport const BodyTextStyled = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: center;\n margin-bottom: 20px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n justify-content: center;\n gap: 8px;\n padding-bottom: 16px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { H1, H2, Button } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { rgba } from 'src/app/utils/css';\n\nconst actionButtonBorderRadius: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 2px;\n padding: 0 52px;\n`;\n\nexport const H2Styled = styled(H2)`\n margin-bottom: 20px;\n padding: 0 64px;\n`;\n\nexport const QrCodeWrapper = styled.div`\n padding: 0 24px 16px;\n`;\n\nexport const ButtonsWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 16px;\n padding: 0 24px 24px;\n margin-top: 0;\n`;\n\nexport const ActionButton = styled(Button)`\n width: 100%;\n height: 56px;\n border-radius: ${props => actionButtonBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 17px 20px 19px 20px;\n`;\n","import { Component } from 'solid-js';\nimport { H1Styled, H2Styled, QrCodeWrapper, ButtonsWrapper, ActionButton } from './style';\nimport { QRCode } from 'src/app/components';\nimport { addReturnStrategy } from 'src/app/utils/url-strategy-helpers';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\n\ninterface MobileConnectionQRProps {\n universalLink: string;\n walletInfo: Pick<UIWalletInfo, 'name' | 'imageUrl'>;\n onOpenLink?: () => void;\n onCopy?: () => void;\n isCopiedShown?: ReturnType<typeof setTimeout> | void;\n}\n\nexport const MobileConnectionQR: Component<MobileConnectionQRProps> = props => {\n return (\n <>\n <H1Styled>{props.walletInfo.name}</H1Styled>\n <H2Styled\n translationKey=\"walletModal.mobileConnectionModal.scanQR\"\n translationValues={{ name: props.walletInfo.name }}\n >\n Scan the QR code below with your phone’s or {props.walletInfo.name}’s camera\n </H2Styled>\n <QrCodeWrapper>\n <QRCode\n imageUrl={props.walletInfo.imageUrl}\n sourceUrl={addReturnStrategy(props.universalLink, 'none')}\n disableCopy\n />\n </QrCodeWrapper>\n <ButtonsWrapper>\n <ActionButton appearance=\"secondary\" onClick={() => props.onOpenLink?.()}>\n <Translation translationKey=\"walletModal.mobileUniversalModal.openLink\">\n Open Link\n </Translation>\n </ActionButton>\n <ActionButton appearance=\"secondary\" onClick={() => props.onCopy?.()}>\n <Translation\n translationKey={\n props.isCopiedShown !== undefined ? 'common.copied' : 'common.copyLink'\n }\n >\n {props.isCopiedShown !== undefined ? 'Copied' : 'Copy Link'}\n </Translation>\n </ActionButton>\n </ButtonsWrapper>\n </>\n );\n};\n","import { ConnectAdditionalRequest, isTelegramUrl, WalletInfoRemote } from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n useContext\n} from 'solid-js';\nimport {\n BodyStyled,\n BodyTextStyled,\n ButtonsContainerStyled,\n ErrorIconStyled,\n FooterButton,\n FooterStyled,\n H1Styled,\n ImageStyled,\n LoaderStyled,\n MobileConnectionModalStyled,\n StyledIconButton\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { Button, H3, Link, LinkIcon, QRIcon, RetryIcon } from 'src/app/components';\nimport { appState } from 'src/app/state/app.state';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { useTheme } from 'solid-styled-components';\nimport { MobileConnectionQR } from 'src/app/views/modals/wallets-modal/mobile-connection-modal/mobile-connection-qr';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\n\nexport interface MobileConnectionProps {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote;\n onBackClick: () => void;\n backDisabled?: boolean;\n defaultError?: 'missing-features' | 'connection-declined' | 'not-supported' | null;\n}\n\nexport const MobileConnectionModal: Component<MobileConnectionProps> = props => {\n const theme = useTheme();\n const [firstClick, setFirstClick] = createSignal(true);\n const [showQR, setShowQR] = createSignal(false);\n const [connectionErrored, setConnectionErrored] = createSignal<\n 'missing-features' | 'connection-declined' | 'not-supported' | null\n >(null);\n\n createEffect(() => {\n setConnectionErrored(props.defaultError ?? null);\n });\n const connector = useContext(ConnectorContext)!;\n\n const unsubscribe = connector.onStatusChange(\n () => {},\n () => {\n setConnectionErrored(null);\n }\n );\n\n const universalLink = createMemo(() =>\n connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n )\n );\n\n const onClickTelegram = (): void => {\n const alwaysForceRedirect = true;\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n redirectToTelegram(universalLink()!, {\n returnStrategy: appState.returnStrategy,\n twaReturnUrl: appState.twaReturnUrl,\n forceRedirect: alwaysForceRedirect\n });\n };\n\n const onRetry = (): void => {\n const currentUniversalLink = universalLink();\n if (isTelegramUrl(currentUniversalLink)) {\n return onClickTelegram();\n }\n\n setConnectionErrored(null);\n\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToWallet(\n universalLink()!,\n props.wallet.deepLink,\n {\n returnStrategy: appState.returnStrategy,\n forceRedirect: forceRedirect\n },\n (method: 'universal-link' | 'custom-deeplink') => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: method\n });\n }\n );\n };\n\n const [isCopiedShown, setIsCopiedShown] = createSignal<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n\n const onCopy = async (): Promise<void> => {\n if (isCopiedShown() !== undefined) {\n clearTimeout(isCopiedShown());\n }\n\n await copyToClipboard(universalLink());\n const timeoutId = setTimeout(() => setIsCopiedShown(undefined), 1500);\n setIsCopiedShown(timeoutId);\n };\n\n const onOpenQR = (): void => {\n setConnectionErrored(null);\n setShowQR(true);\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'qrcode'\n });\n };\n\n const onCloseQR = (): void => {\n setShowQR(false);\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n };\n\n const onBack = (): void => {\n if (showQR()) {\n onCloseQR();\n } else {\n props.onBackClick();\n }\n };\n\n onCleanup(unsubscribe);\n onRetry();\n\n return (\n <MobileConnectionModalStyled data-tc-wallets-modal-connection-mobile=\"true\">\n <Show when={!props.backDisabled || showQR()}>\n <StyledIconButton icon=\"arrow\" onClick={onBack} />\n </Show>\n <Show when={showQR()}>\n <MobileConnectionQR\n universalLink={universalLink()}\n walletInfo={props.wallet}\n onOpenLink={onRetry}\n onCopy={onCopy}\n isCopiedShown={isCopiedShown()}\n />\n </Show>\n <Show when={!showQR()}>\n <H1Styled>{props.wallet.name}</H1Styled>\n\n <BodyStyled>\n <Show when={connectionErrored()}>\n <ErrorIconStyled size=\"s\" />\n\n <Switch>\n <Match when={connectionErrored() === 'missing-features'}>\n <BodyTextStyled\n translationKey=\"walletModal.mobileConnectionModal.missingFeatures\"\n translationValues={{ name: props.wallet.name }}\n >\n Please update Wallet, your version does not support required\n features for this dApp\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'connection-declined'}>\n <BodyTextStyled translationKey=\"walletModal.mobileConnectionModal.connectionDeclined\">\n Connection declined\n </BodyTextStyled>\n </Match>\n <Match when={connectionErrored() === 'not-supported'}>\n <BodyTextStyled\n translationKey=\"walletModal.mobileConnectionModal.notSupportedWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n {props.wallet.name} doesn’t support the requested action. Please\n connect another wallet that supports it.\n </BodyTextStyled>\n </Match>\n </Switch>\n <ButtonsContainerStyled>\n <Switch>\n <Match when={connectionErrored() === 'missing-features'}>\n <Button leftIcon={<RetryIcon />} onClick={onRetry}>\n <Translation translationKey=\"common.retry\">\n Retry\n </Translation>\n </Button>\n <Link href={props.wallet.aboutUrl} blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.mobileConnectionModal.updateWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Update {props.wallet.name}\n </Translation>\n </Button>\n </Link>\n </Match>\n <Match when={connectionErrored() === 'not-supported'}>\n <Button onClick={() => props.onBackClick()}>\n <Translation translationKey=\"walletModal.mobileConnectionModal.chooseAnotherWallet\">\n Choose Another Wallet\n </Translation>\n </Button>\n </Match>\n <Match when={connectionErrored() === 'connection-declined'}>\n <Button leftIcon={<RetryIcon />} onClick={onRetry}>\n <Translation translationKey=\"common.retry\">\n Retry\n </Translation>\n </Button>\n <Button\n leftIcon={<QRIcon fill={theme.colors.accent} />}\n onClick={onOpenQR}\n >\n <Translation translationKey=\"walletModal.mobileConnectionModal.showQR\">\n Show QR Code\n </Translation>\n </Button>\n </Match>\n </Switch>\n </ButtonsContainerStyled>\n </Show>\n <Show when={!connectionErrored()}>\n <LoaderStyled size=\"s\" />\n <BodyTextStyled\n translationKey=\"walletModal.mobileConnectionModal.continueIn\"\n translationValues={{ name: props.wallet.name }}\n >\n Continue in {props.wallet.name}…\n </BodyTextStyled>\n <ButtonsContainerStyled>\n <Button leftIcon={<RetryIcon />} onClick={onRetry}>\n <Translation translationKey=\"common.retry\">Retry</Translation>\n </Button>\n <Button\n leftIcon={<QRIcon fill={theme.colors.accent} />}\n onClick={onOpenQR}\n >\n <Translation translationKey=\"walletModal.mobileConnectionModal.showQR\">\n Show QR Code\n </Translation>\n </Button>\n </ButtonsContainerStyled>\n </Show>\n </BodyStyled>\n\n <FooterStyled>\n <ImageStyled src={props.wallet.imageUrl} />\n <H3>{props.wallet.name}</H3>\n <FooterButton href={props.wallet.aboutUrl} blank>\n <Button>\n <Translation translationKey=\"common.get\">GET</Translation>\n </Button>\n </FooterButton>\n </FooterStyled>\n </Show>\n </MobileConnectionModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, H2, IconButton, Image } from 'src/app/components';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '12px',\n none: '0'\n};\n\nconst tgBorders: BorderRadiusConfig = {\n m: '6px',\n s: '6px',\n none: '0'\n};\n\nexport const OtherOptionButton = styled.li`\n width: 82px;\n min-width: 82px;\n height: 124px;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 4px;\n\n text-align: center;\n cursor: pointer;\n\n transition: transform 0.1s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 38px;\n margin-bottom: 4px;\n padding: 0 24px;\n`;\n\nexport const H2Styled = styled(H2)<{\n maxWidth?: number;\n minHeight?: string;\n padding?: string;\n margin?: string;\n}>`\n margin: ${props => props.margin ?? '0 0 28px 0'};\n padding: ${props => props.padding ?? '0 24px'};\n min-height: ${props => props.padding ?? '44px'};\n max-width: ${props => props.maxWidth}px;\n margin-left: ${props => (props.maxWidth ? 'auto' : '0px')};\n margin-right: ${props => (props.maxWidth ? 'auto' : '0px')};\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto;\n`;\n\nexport const TelegramButtonStyled = styled(Button)`\n margin: 0 28px 24px;\n width: calc(100% - 56px);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n padding: 14px 16px 14px 14px;\n background-color: ${props => props.theme!.colors.telegramButton};\n\n color: ${props => props.theme!.colors.constant.white};\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n\n @media (max-width: 375px) {\n margin: 0 16px 24px;\n width: calc(100% - 32px);\n }\n`;\n\nexport const TGImageStyled = styled(Image)`\n background-color: transparent;\n border-radius: ${props => tgBorders[props.theme!.borderRadius]};\n width: 24px;\n height: 24px;\n`;\n\nexport const StyledLeftActionButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { H1, H2, Button } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { rgba } from 'src/app/utils/css';\n\nconst actionButtonBorderRadius: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 2px;\n padding: 0 52px;\n`;\n\nexport const H2Styled = styled(H2)`\n margin-bottom: 20px;\n padding: 0 64px;\n`;\n\nexport const QrCodeWrapper = styled.div`\n padding: 0 24px 16px;\n`;\n\nexport const ButtonsWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 16px;\n padding: 0 24px 24px;\n margin-top: 0;\n`;\n\nexport const ActionButton = styled(Button)`\n width: 100%;\n height: 56px;\n border-radius: ${props => actionButtonBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 17px 20px 19px 20px;\n`;\n","import { Component } from 'solid-js';\nimport { H1Styled, H2Styled, QrCodeWrapper, ButtonsWrapper, ActionButton } from './style';\nimport { QRCode } from 'src/app/components';\nimport { IMG } from 'src/app/env/IMG';\n\nimport { addReturnStrategy } from 'src/app/utils/url-strategy-helpers';\nimport { Translation } from 'src/app/components/typography/Translation';\n\ninterface MobileUniversalQRProps {\n universalLink: string;\n onOpenLink: () => void;\n onCopy: () => void;\n isCopiedShown: ReturnType<typeof setTimeout> | void;\n}\n\nexport const MobileUniversalQR: Component<MobileUniversalQRProps> = props => {\n return (\n <>\n <H1Styled translationKey=\"walletModal.mobileUniversalModal.connectYourWallet\">\n Connect your TON wallet\n </H1Styled>\n <H2Styled translationKey=\"walletModal.mobileUniversalModal.scan\">\n Scan with your mobile wallet\n </H2Styled>\n <QrCodeWrapper>\n <QRCode\n imageUrl={IMG.TON}\n sourceUrl={addReturnStrategy(props.universalLink, 'none')}\n disableCopy\n />\n </QrCodeWrapper>\n <ButtonsWrapper>\n <ActionButton appearance=\"secondary\" onClick={() => props.onOpenLink()}>\n <Translation translationKey=\"walletModal.mobileUniversalModal.openLink\">\n Open Link\n </Translation>\n </ActionButton>\n <ActionButton appearance=\"secondary\" onClick={() => props.onCopy()}>\n <Translation\n translationKey={\n props.isCopiedShown !== undefined ? 'common.copied' : 'common.copyLink'\n }\n >\n {props.isCopiedShown !== undefined ? 'Copied' : 'Copy Link'}\n </Translation>\n </ActionButton>\n </ButtonsWrapper>\n </>\n );\n};\n","import { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { isWalletInfoRemote, WalletInfoRemote } from '@tonconnect/sdk';\n\nexport function getUniqueBridges(walletsList: UIWalletInfo[]): { bridgeUrl: string }[] {\n const uniqueBridges = new Set(\n walletsList.filter(isWalletInfoRemote).map(item => (item as WalletInfoRemote).bridgeUrl)\n );\n return Array.from(uniqueBridges).map(bridgeUrl => ({ bridgeUrl }));\n}\n\nexport function bridgesIsEqual(\n left: { bridgeUrl: string }[] | null,\n right: { bridgeUrl: string }[] | null\n): boolean {\n const leftSet = new Set(left?.map(i => i.bridgeUrl));\n const rightSet = new Set(right?.map(i => i.bridgeUrl));\n return leftSet.size === rightSet.size && [...leftSet].every(value => rightSet.has(value));\n}\n","import { ConnectAdditionalRequest, isWalletInfoRemote } from '@tonconnect/sdk';\nimport { Component, createMemo, createSignal, For, Show } from 'solid-js';\nimport { AtWalletIcon, FourWalletsItem, QRIcon, WalletItem } from 'src/app/components';\nimport {\n H1Styled,\n H2Styled,\n StyledLeftActionButton,\n TelegramButtonStyled,\n TGImageStyled\n} from './style';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { appState } from 'src/app/state/app.state';\nimport { IMG } from 'src/app/env/IMG';\nimport { supportsMobile } from 'src/app/utils/wallets';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { TonConnectUIError } from 'src/errors';\nimport { MobileUniversalQR } from './mobile-universal-qr';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\nimport { bridgesIsEqual, getUniqueBridges } from 'src/app/utils/bridge';\nimport { WalletUlContainer } from 'src/app/components/wallet-item/style';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\n\ninterface MobileUniversalModalProps {\n walletsList: UIWalletInfo[];\n\n additionalRequest: ConnectAdditionalRequest;\n\n onSelect: (walletInfo: UIWalletInfo) => void;\n\n onSelectAllWallets: () => void;\n}\n\nexport const MobileUniversalModal: Component<MobileUniversalModalProps> = props => {\n const [showQR, setShowQR] = createSignal(false);\n const [firstClick, setFirstClick] = createSignal(true);\n const [universalLink, setUniversalLink] = createSignal<string | null>(null);\n const connector = appState.connector;\n const walletsList = (): UIWalletInfo[] =>\n props.walletsList.filter(w => supportsMobile(w) && w.appName !== AT_WALLET_APP_NAME);\n const shouldShowMoreButton = (): boolean => walletsList().length > 7;\n\n const walletsBridges = createMemo(() => getUniqueBridges(props.walletsList), null, {\n equals: bridgesIsEqual\n });\n\n const atWalletSupportFeatures = createMemo(\n () =>\n props.walletsList.find(wallet => wallet.appName === AT_WALLET_APP_NAME)\n ?.isSupportRequiredFeatures ?? false,\n null\n );\n\n const getUniversalLink = (): string => {\n if (!universalLink()) {\n setUniversalLink(connector.connect(walletsBridges(), props.additionalRequest));\n }\n return universalLink()!;\n };\n\n setLastSelectedWalletInfo({ openMethod: 'universal-link' });\n\n const [isCopiedShown, setIsCopiedShown] = createSignal<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n\n const onCopy = async (): Promise<void> => {\n if (isCopiedShown() !== undefined) {\n clearTimeout(isCopiedShown());\n }\n\n await copyToClipboard(getUniversalLink());\n const timeoutId = setTimeout(() => setIsCopiedShown(undefined), 1500);\n setIsCopiedShown(timeoutId);\n };\n\n const onSelectUniversal = (): void => {\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToWallet(\n getUniversalLink(),\n undefined,\n {\n returnStrategy: appState.returnStrategy,\n forceRedirect: forceRedirect\n },\n (method: 'universal-link' | 'custom-deeplink') => {\n setLastSelectedWalletInfo({\n openMethod: method\n });\n }\n );\n };\n\n const onSelectTelegram = (): void => {\n setUniversalLink(null);\n\n const atWallet = props.walletsList.find(wallet => wallet.appName === AT_WALLET_APP_NAME);\n if (!atWallet || !isWalletInfoRemote(atWallet)) {\n throw new TonConnectUIError('@wallet bot not found in the wallets list');\n }\n\n const walletLink = connector.connect(\n {\n bridgeUrl: atWallet.bridgeUrl,\n universalLink: atWallet.universalLink\n },\n props.additionalRequest\n );\n\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n redirectToTelegram(walletLink, {\n returnStrategy: appState.returnStrategy,\n twaReturnUrl: appState.twaReturnUrl,\n forceRedirect: forceRedirect\n });\n };\n\n const onOpenQR = (): void => {\n setShowQR(true);\n setLastSelectedWalletInfo({\n openMethod: 'qrcode'\n });\n };\n\n const onCloseQR = (): void => {\n setShowQR(false);\n setLastSelectedWalletInfo({\n openMethod: 'universal-link'\n });\n };\n\n const supportedWallets = createMemo(\n () => walletsList().filter(wallet => wallet.isSupportRequiredFeatures),\n null\n );\n\n const visibleWallets = createMemo(() => supportedWallets().slice(0, 3), null);\n\n const fourWalletsItem = createMemo(\n () =>\n walletsList()\n .filter(wallet => !visibleWallets().find(w => w.appName === wallet.appName))\n .slice(0, 4),\n null\n );\n\n return (\n <div data-tc-wallets-modal-universal-mobile=\"true\">\n <Show when={showQR()}>\n <StyledLeftActionButton icon=\"arrow\" onClick={onCloseQR} />\n <MobileUniversalQR\n universalLink={getUniversalLink()}\n isCopiedShown={isCopiedShown()}\n onOpenLink={onSelectUniversal}\n onCopy={onCopy}\n />\n </Show>\n <Show when={!showQR()}>\n <StyledLeftActionButton icon={<QRIcon />} onClick={onOpenQR} />\n <H1Styled translationKey=\"walletModal.mobileUniversalModal.connectYourWallet\">\n Connect your TON wallet\n </H1Styled>\n <Show when={atWalletSupportFeatures()}>\n <H2Styled\n translationKey=\"walletModal.mobileUniversalModal.openWalletOnTelegramOrSelect\"\n maxWidth={320}\n >\n Use Wallet in Telegram or choose other application\n </H2Styled>\n <TelegramButtonStyled\n leftIcon={<AtWalletIcon />}\n rightIcon={<TGImageStyled src={IMG.TG} />}\n onClick={onSelectTelegram}\n scale=\"s\"\n >\n <Translation translationKey=\"walletModal.mobileUniversalModal.openWalletOnTelegram\">\n Connect Wallet in Telegram\n </Translation>\n </TelegramButtonStyled>\n </Show>\n <H2Styled\n translationKey=\"walletModal.mobileUniversalModal.chooseOtherApplication\"\n maxWidth={342}\n padding={'0 24px 8px 24px'}\n margin={'0'}\n >\n Choose other application\n </H2Styled>\n <WalletUlContainer>\n <For each={shouldShowMoreButton() ? visibleWallets() : supportedWallets()}>\n {wallet => (\n <li>\n <WalletItem\n icon={wallet.imageUrl}\n name={wallet.name}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n <Show when={shouldShowMoreButton()}>\n <li>\n <FourWalletsItem\n labelLine1=\"View all\"\n labelLine2=\"wallets\"\n images={fourWalletsItem().map(i => i.imageUrl)}\n onClick={() => props.onSelectAllWallets()}\n />\n </li>\n </Show>\n </WalletUlContainer>\n </Show>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2, QRCode, Text, Image } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nexport const DesktopUniversalModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 16px;\n`;\n\nexport const H2Styled = styled(H2)`\n max-width: 320px;\n margin-top: 2px;\n margin-bottom: 20px;\n`;\n\nexport const H2AvailableWalletsStyled = styled(H2)`\n margin-bottom: 16px;\n`;\n\nexport const QRCodeStyled = styled(QRCode)`\n margin-bottom: 24px;\n`;\n\nexport const WalletsContainerStyled = styled.ul`\n display: flex;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n width: 100%;\n`;\n\nexport const ActionButtonStyled = styled(Button)<{ disableEventsAnimation?: boolean }>`\n position: relative;\n font-size: 16px;\n line-height: 20px;\n width: 100%;\n padding: 0 16px;\n height: 56px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n\n &:hover {\n ${props => (props.disableEventsAnimation ? 'transform: unset;' : '')}\n }\n\n &:active {\n ${props => (props.disableEventsAnimation ? 'transform: unset;' : '')}\n }\n`;\n\nexport const PopupWrapperStyled = styled.ul`\n position: absolute;\n bottom: 100%;\n left: 0;\n margin: 0;\n padding: 8px;\n width: 188px;\n transform: translateY(-16px);\n\n background-color: ${props => props.theme!.colors.background.primary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n`;\n\nexport const ExtensionLiStyled = styled.li`\n padding: 8px;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n cursor: pointer;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 24px;\n height: 24px;\n\n border-radius: 6px;\n`;\n\nexport const GetWalletStyled = styled.div`\n margin-top: 23px;\n margin-bottom: 1px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { Component, createMemo, createSignal, For } from 'solid-js';\nimport {\n DesktopUniversalModalStyled,\n H2AvailableWalletsStyled,\n H2Styled,\n QRCodeStyled,\n WalletsContainerStyled\n} from './style';\nimport { ConnectAdditionalRequest } from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { FourWalletsItem, H1, WalletLabeledItem } from 'src/app/components';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { IMG } from 'src/app/env/IMG';\n\nimport { addReturnStrategy } from 'src/app/utils/url-strategy-helpers';\nimport { bridgesIsEqual, getUniqueBridges } from 'src/app/utils/bridge';\n\ninterface DesktopUniversalModalProps {\n additionalRequest: ConnectAdditionalRequest;\n\n walletsList: UIWalletInfo[];\n\n onSelect: (walletInfo: UIWalletInfo) => void;\n\n onSelectAllWallets: () => void;\n}\n\nexport const DesktopUniversalModal: Component<DesktopUniversalModalProps> = props => {\n const [popupOpened, setPopupOpened] = createSignal(false);\n const connector = appState.connector;\n\n const walletsBridges = createMemo(() => getUniqueBridges(props.walletsList), null, {\n equals: bridgesIsEqual\n });\n\n setLastSelectedWalletInfo({ openMethod: 'qrcode' });\n const request = createMemo(() => connector.connect(walletsBridges(), props.additionalRequest));\n\n const supportedWallets = createMemo(\n () => props.walletsList.filter(wallet => wallet.isSupportRequiredFeatures),\n null\n );\n\n const visibleWallets = createMemo(() => supportedWallets().slice(0, 3), null);\n\n const fourWalletsItem = createMemo(\n () =>\n props.walletsList\n .filter(wallet => !visibleWallets().find(w => w.appName === wallet.appName))\n .slice(0, 4),\n null\n );\n\n return (\n <DesktopUniversalModalStyled\n onClick={() => setPopupOpened(false)}\n data-tc-wallets-modal-universal-desktop=\"true\"\n >\n <H1 translationKey=\"walletModal.desktopUniversalModal.connectYourWallet\">\n Connect your wallet\n </H1>\n <H2Styled translationKey=\"walletModal.desktopUniversalModal.scan\">\n Scan with your mobile wallet\n </H2Styled>\n <QRCodeStyled\n sourceUrl={addReturnStrategy(request()!, 'none')}\n disableCopy={popupOpened()}\n imageUrl={IMG.TON}\n />\n <H2AvailableWalletsStyled translationKey=\"walletModal.desktopUniversalModal.availableWallets\">\n Available wallets\n </H2AvailableWalletsStyled>\n <WalletsContainerStyled>\n <For each={visibleWallets()}>\n {wallet => (\n <li>\n <WalletLabeledItem\n wallet={wallet}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n <FourWalletsItem\n labelLine1=\"View all\"\n labelLine2=\"wallets\"\n images={fourWalletsItem().map(i => i.imageUrl)}\n onClick={() => props.onSelectAllWallets()}\n />\n </WalletsContainerStyled>\n </DesktopUniversalModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, ErrorIcon, H1, H2, IconButton, Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const H1Styled = styled(H1)`\n max-width: 288px;\n margin: 0 auto 38px;\n`;\n\nexport const DesktopFeatureNotSupportModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const TitleStyled = styled(H1)`\n text-align: center;\n font-size: 20px;\n line-height: 28px;\n`;\n\nexport const DescriptionStyled = styled(Text)`\n margin-top: 12px;\n margin-bottom: 24px;\n text-align: center;\n max-width: 360px;\n font-weight: 400;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const RestoreWalletLinkStyled = styled.button`\n background: transparent;\n border: none;\n padding: 0;\n margin: 0;\n color: ${props => props.theme!.colors.accent};\n text-decoration: underline;\n cursor: pointer;\n font: inherit;\n`;\n\nexport const Spacer = styled.div`\n margin-bottom: 46px;\n`;\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-bottom: 16px;\n`;\n\nexport const WalletsContainerStyled = styled.ul`\n display: flex;\n gap: 8px;\n margin-bottom: 24px;\n list-style: none;\n padding: 0;\n`;\n\nexport const DisconnectButtonStyled = styled(Button)`\n max-width: 320px;\n width: 100%;\n height: 48px;\n font-size: 16px;\n line-height: 20px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n margin-bottom: 28px;\n`;\n\nexport const BodyTextStyled = styled(H2)`\n color: ${props => props.theme!.colors.text.secondary};\n text-align: center;\n margin-bottom: 20px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n justify-content: center;\n gap: 8px;\n padding-bottom: 31px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { H1, H3, IconButton, Text } from 'src/app/components';\n\nexport const RestoreInfoModalStyled = styled.div`\n margin: 0 8px 16px 8px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-bottom: 18px;\n text-align: center;\n`;\n\nexport const StepBlock = styled.div`\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const IconWrapper = styled.div`\n margin-bottom: 12px;\n`;\n\nexport const H3Styled = styled(H3)`\n text-align: center;\n margin-bottom: 4px;\n`;\n\nexport const TextStyled = styled(Text)`\n text-align: center;\n max-width: 352px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const CircleNumber = styled.div`\n width: 44px;\n height: 44px;\n border-radius: 20px;\n background-color: ${props => props.theme?.colors.icon.secondary};\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 12px;\n font-weight: 700;\n font-size: 22px;\n color: ${props => props.theme?.colors.text.primary};\n`;\n","import { Component } from 'solid-js';\nimport {\n RestoreInfoModalStyled,\n StyledIconButton,\n H1Styled,\n StepBlock,\n H3Styled,\n TextStyled,\n CircleNumber\n} from './style';\nimport { ScrollContainer } from 'src/app/components';\n\ninterface RestoreInfoModalProps {\n onBackClick: () => void;\n}\n\nexport const RestoreInfoModal: Component<RestoreInfoModalProps> = props => {\n return (\n <RestoreInfoModalStyled data-tc-wallets-modal-restore=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={props.onBackClick} />\n <H1Styled translationKey=\"walletModal.restoreInfoModal.title\">Restore</H1Styled>\n\n <ScrollContainer>\n <StepBlock>\n <CircleNumber>1</CircleNumber>\n <H3Styled translationKey=\"walletModal.restoreModal.step1.title\">\n Find your current recovery phrase\n </H3Styled>\n <TextStyled translationKey=\"walletModal.restoreModal.step1.text\">\n Open your wallet settings and locate the recovery phrase\n </TextStyled>\n </StepBlock>\n\n <StepBlock>\n <CircleNumber>2</CircleNumber>\n <H3Styled translationKey=\"walletModal.restoreModal.step2.title\">\n Copy your recovery phrase\n </H3Styled>\n <TextStyled translationKey=\"walletModal.restoreModal.step2.text\">\n Write it down or copy it to a safe place\n </TextStyled>\n </StepBlock>\n\n <StepBlock>\n <CircleNumber>3</CircleNumber>\n <H3Styled translationKey=\"walletModal.restoreModal.step3.title\">\n Restore in a supported wallet from the list below\n </H3Styled>\n <TextStyled translationKey=\"walletModal.restoreModal.step3.text\">\n Enter the recovery phrase to access your wallet\n </TextStyled>\n </StepBlock>\n </ScrollContainer>\n </RestoreInfoModalStyled>\n );\n};\n","import {\n Component,\n createMemo,\n createSignal,\n // For,\n Match,\n // Show,\n Switch\n} from 'solid-js';\nimport {\n DesktopFeatureNotSupportModalStyled,\n TitleStyled,\n DescriptionStyled,\n // WalletsContainerStyled,\n ErrorIconStyled,\n DisconnectButtonStyled,\n // RestoreWalletLinkStyled,\n StyledIconButton,\n BodyTextStyled,\n Spacer,\n ButtonsContainerStyled,\n H1Styled\n} from './style';\n\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport {\n // FourWalletsItem,\n // WalletLabeledItem,\n Button,\n Link,\n LinkIcon\n} from 'src/app/components';\nimport { checkRequiredWalletFeatures, Wallet } from '@tonconnect/sdk';\nimport { RestoreInfoModal } from './restore-info-modal';\nimport { ChooseSupportedFeatureWalletsModal } from 'src/models/wallets-modal';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\n\ninterface DesktopFeatureNotSupportModalProps {\n walletsList: UIWalletInfo[];\n currentWallet: Wallet;\n walletsModalState: ChooseSupportedFeatureWalletsModal;\n onSelect: (walletInfo: UIWalletInfo) => void;\n onSelectAllWallets: () => void;\n onDisconnect: () => Promise<void>;\n onClose: () => void;\n}\n\nexport const DesktopFeatureNotSupportModal: Component<\n DesktopFeatureNotSupportModalProps\n> = props => {\n const [selectedWallet, setSelectedWallet] = createSignal<UIWalletInfo | null>(null);\n const [infoModalOpen, setInfoModalOpen] = createSignal(false);\n\n // const supportedWallets = createMemo(() => {\n // const requiredFeature = props.walletsModalState.requiredFeature;\n // const requiredFeatures = requiredFeature\n // ? { [requiredFeature.featureName]: requiredFeature.value }\n // : {};\n //\n // return props.walletsList.filter(\n // wallet =>\n // wallet.isSupportRequiredFeatures &&\n // wallet.features &&\n // checkRequiredWalletFeatures(wallet.features, requiredFeatures)\n // );\n // });\n\n const currentWalletUI = createMemo(() =>\n props.walletsList.find(\n wallet =>\n wallet.appName === props.currentWallet.device.appName ||\n wallet.name === props.currentWallet.device.appName\n )\n );\n\n const currentWalletName = createMemo(() => {\n const appName = currentWalletUI()?.appName ?? props.currentWallet.device.appName;\n if (appName === AT_WALLET_APP_NAME) {\n return 'Wallet in Telegram';\n }\n\n return currentWalletUI()?.name ?? props.currentWallet.device.appName;\n });\n\n const currentWalletVersionNotSupported = createMemo(() => {\n const currentWalletUIVar = currentWalletUI();\n if (!currentWalletUIVar?.features) {\n return false;\n }\n\n const requiredFeature = props.walletsModalState.requiredFeature;\n const requiredFeatures = requiredFeature\n ? { [requiredFeature.featureName]: requiredFeature.value }\n : {};\n\n const validInList = checkRequiredWalletFeatures(\n currentWalletUIVar.features,\n requiredFeatures\n );\n\n const validCurrentWallet = checkRequiredWalletFeatures(\n props.currentWallet.device.features,\n requiredFeatures\n );\n\n return validInList && !validCurrentWallet;\n });\n\n // const visibleWallets = createMemo(() => supportedWallets().slice(0, 3), null);\n\n // const fourWalletsItem = createMemo(\n // () =>\n // supportedWallets()\n // .filter(wallet => !visibleWallets().find(w => w.appName === wallet.appName))\n // .slice(0, 4),\n // null\n // );\n //\n // const handleSelect = (wallet: UIWalletInfo): void => {\n // setSelectedWallet(wallet);\n // };\n\n const handleDisconnect = async (): Promise<void> => {\n await props.onDisconnect();\n props.onSelect(selectedWallet()!);\n };\n\n return (\n <DesktopFeatureNotSupportModalStyled>\n <Switch>\n <Match when={infoModalOpen()}>\n <RestoreInfoModal onBackClick={() => setInfoModalOpen(false)} />\n </Match>\n <Match when={selectedWallet()}>\n <Spacer />\n <DesktopFeatureNotSupportModalStyled>\n <StyledIconButton icon=\"arrow\" onClick={() => setSelectedWallet(null)} />\n <TitleStyled translationKey=\"walletModal.featureNotSupported.disconnect.title\">\n Confirm Disconnect\n </TitleStyled>\n\n <DescriptionStyled\n translationKey=\"walletModal.featureNotSupported.disconnect.description\"\n translationValues={{ name: selectedWallet()!.name }}\n >\n You will be disconnected from your current wallet and redirected to\n connect {selectedWallet()?.name}.\n </DescriptionStyled>\n\n <DisconnectButtonStyled onClick={() => handleDisconnect()}>\n <Translation translationKey=\"walletModal.featureNotSupported.disconnect.button\">\n Disconnect\n </Translation>\n </DisconnectButtonStyled>\n </DesktopFeatureNotSupportModalStyled>\n </Match>\n <Match when={currentWalletVersionNotSupported()}>\n <H1Styled>{currentWalletName()}</H1Styled>\n <ErrorIconStyled size=\"s\" />\n <BodyTextStyled\n translationKey=\"walletModal.featureNotSupported.version.description\"\n translationValues={{ name: currentWalletName() }}\n >\n Your current version of {currentWalletName()} or wallet contract type\n doesn't support the required features. Please update it to continue.\n </BodyTextStyled>\n\n <ButtonsContainerStyled>\n <Link href={currentWalletUI()!.aboutUrl} blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation\n translationKey=\"walletModal.featureNotSupported.version.updateButton\"\n translationValues={{ name: currentWalletName() }}\n >\n Update {currentWalletName()}\n </Translation>\n </Button>\n </Link>\n <Link href=\"https://tonkeeper.helpscoutdocs.com/article/102-w5\" blank>\n <Button leftIcon={<LinkIcon />}>\n <Translation translationKey=\"walletModal.featureNotSupported.version.aboutW5\">\n About W5\n </Translation>\n </Button>\n </Link>\n </ButtonsContainerStyled>\n </Match>\n <Match when={true}>\n <Spacer />\n\n <ErrorIconStyled size=\"s\" />\n\n <TitleStyled\n translationKey=\"walletModal.featureNotSupported.wallet.title\"\n translationValues={{ name: currentWalletName() }}\n >\n {currentWalletName()} doesn’t support the requested action\n </TitleStyled>\n\n <Spacer />\n {/*<DescriptionStyled>*/}\n {/* <Translation translationKey=\"walletModal.featureNotSupported.wallet.description\">*/}\n {/* Install a supported wallet from the list below, restore it with your*/}\n {/* recovery phrase, then connect it and try again.*/}\n {/* </Translation>*/}\n {/* */}\n {/* <RestoreWalletLinkStyled onClick={() => setInfoModalOpen(true)}>*/}\n {/* <Translation translationKey=\"walletModal.featureNotSupported.wallet.info\">*/}\n {/* Learn how to restore your wallet*/}\n {/* </Translation>*/}\n {/* </RestoreWalletLinkStyled>*/}\n {/*</DescriptionStyled>*/}\n\n {/*<WalletsContainerStyled>*/}\n {/* <For each={visibleWallets()}>*/}\n {/* {wallet => (*/}\n {/* <li>*/}\n {/* <WalletLabeledItem*/}\n {/* wallet={wallet}*/}\n {/* onClick={() => handleSelect(wallet)}*/}\n {/* />*/}\n {/* </li>*/}\n {/* )}*/}\n {/* </For>*/}\n {/* <Show when={fourWalletsItem().length > 0}>*/}\n {/* <FourWalletsItem*/}\n {/* labelLine1=\"View all\"*/}\n {/* labelLine2=\"wallets\"*/}\n {/* images={fourWalletsItem().map(i => i.imageUrl)}*/}\n {/* onClick={() => props.onSelectAllWallets()}*/}\n {/* />*/}\n {/* </Show>*/}\n {/*</WalletsContainerStyled>*/}\n </Match>\n </Switch>\n </DesktopFeatureNotSupportModalStyled>\n );\n};\n","import {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyInjected,\n WalletMissingRequiredFeaturesError,\n TonConnectError,\n Wallet,\n WalletInfoRemote,\n checkRequiredWalletFeatures,\n WalletInfo\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { getWalletsModalIsOpened, walletsModalState } from 'src/app/state/modals-state';\nimport { H1Styled, LoaderContainerStyled, StyledModal } from './style';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { applyWalletsListConfiguration, eqWalletName } from 'src/app/utils/wallets';\nimport { isMobile, updateIsMobile } from 'src/app/hooks/isMobile';\nimport { AllWalletsListModal } from 'src/app/views/modals/wallets-modal/all-wallets-list-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { LoadableReady } from 'src/models/loadable';\nimport { UIWalletInfo } from 'src/app/models/ui-wallet-info';\nimport { AT_WALLET_APP_NAME } from 'src/app/env/AT_WALLET_APP_NAME';\nimport { DesktopConnectionModal } from 'src/app/views/modals/wallets-modal/desktop-connection-modal';\nimport { InfoModal } from 'src/app/views/modals/wallets-modal/info-modal';\nimport { MobileConnectionModal } from 'src/app/views/modals/wallets-modal/mobile-connection-modal';\nimport { MobileUniversalModal } from 'src/app/views/modals/wallets-modal/mobile-universal-modal';\nimport { DesktopUniversalModal } from 'src/app/views/modals/wallets-modal/desktop-universal-modal';\nimport { Dynamic } from 'solid-js/web';\nimport { WalletsModalCloseReason } from 'src/models';\nimport { DesktopFeatureNotSupportModal } from './feature-not-supoprt-modal';\nimport { widgetController } from 'src/app/widget-controller';\nimport { ChooseSupportedFeatureWalletsModal } from 'src/models/wallets-modal';\n\nexport const WalletsModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n createEffect(() => {\n if (getWalletsModalIsOpened()) {\n updateIsMobile();\n } else {\n setSelectedWalletInfo(null);\n setSelectedTab('universal');\n setInfoTab(false);\n }\n });\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext);\n const [fetchedWalletsList] = createResource(() => tonConnectUI!.getWallets());\n\n const [selectedWalletInfo, setSelectedWalletInfo] = createSignal<UIWalletInfo | null>(null);\n const [selectedWalletError, setSelectedWalletError] = createSignal<\n 'missing-features' | 'not-supported' | null\n >(null);\n const [selectedTab, setSelectedTab] = createSignal<'universal' | 'all-wallets'>('universal');\n const [infoTab, setInfoTab] = createSignal(false);\n\n const walletsModalIsWalletNotSupportFeature = createMemo(() => {\n const state = walletsModalState();\n return 'type' in state && state.type === 'wallet-not-support-feature';\n });\n\n const walletsList = createMemo<UIWalletInfo[] | null>(() => {\n if (fetchedWalletsList.state !== 'ready') {\n return null;\n }\n\n let walletsList = applyWalletsListConfiguration(\n fetchedWalletsList(),\n appState.walletsListConfiguration\n );\n\n const injectedWallets: WalletInfo[] = walletsList.filter(isWalletInfoCurrentlyInjected);\n const notInjectedWallets = walletsList.filter(w => !isWalletInfoCurrentlyInjected(w));\n walletsList = (injectedWallets || []).concat(notInjectedWallets);\n\n const preferredWalletAppName = appState.preferredWalletAppName;\n const preferredWallet = walletsList.find(item =>\n eqWalletName(item, preferredWalletAppName)\n );\n const someWalletsWithSameName =\n walletsList.filter(item => eqWalletName(item, preferredWalletAppName)).length >= 2;\n if (preferredWalletAppName && preferredWallet && !someWalletsWithSameName) {\n walletsList = [\n { ...preferredWallet, isPreferred: true } as WalletInfo & {\n isPreferred?: boolean;\n }\n ].concat(walletsList.filter(item => !eqWalletName(item, preferredWalletAppName)));\n }\n\n const atWallet = walletsList.find(item => eqWalletName(item, AT_WALLET_APP_NAME));\n if (atWallet) {\n walletsList = [atWallet].concat(\n walletsList.filter(item => !eqWalletName(item, AT_WALLET_APP_NAME))\n );\n }\n\n const walletsFeaturesRequested =\n tonConnectUI?.walletsRequiredFeatures ?? tonConnectUI?.walletsPreferredFeatures;\n\n const uiWallets = walletsList.map(wallet => ({\n ...wallet,\n isSupportRequiredFeatures: walletsFeaturesRequested\n ? checkRequiredWalletFeatures(wallet.features ?? [], walletsFeaturesRequested)\n : true\n }));\n\n return uiWallets;\n });\n\n const additionalRequestLoading = (): boolean =>\n appState.connectRequestParameters?.state === 'loading';\n\n const additionalRequest = createMemo(() => {\n if (additionalRequestLoading()) {\n return undefined;\n }\n\n return (appState.connectRequestParameters as LoadableReady<ConnectAdditionalRequest>)\n ?.value;\n });\n\n const onClose = (closeReason: WalletsModalCloseReason): void => {\n tonConnectUI!.closeModal(closeReason);\n };\n\n const unsubscribe = connector.onStatusChange(\n (wallet: Wallet | null) => {\n if (wallet) {\n onClose('wallet-selected');\n }\n },\n err => {\n if (err instanceof WalletMissingRequiredFeaturesError) {\n const errorAppName = err.cause.connectEvent.device.appName.toLowerCase();\n const wallet = walletsList()?.find(w => w.appName.toLowerCase() === errorAppName);\n\n if (!wallet) {\n throw new TonConnectError('Wallet not found');\n }\n\n const walletErrorType = wallet.isSupportRequiredFeatures\n ? 'missing-features'\n : 'not-supported';\n setSelectedWalletError(walletErrorType);\n setSelectedWalletInfo(wallet);\n }\n }\n );\n\n const onSelectAllWallets = (): void => {\n setSelectedTab('all-wallets');\n };\n\n const onSelectUniversal = (): void => {\n setSelectedTab('universal');\n };\n\n const onSelectWallet = (wallet: UIWalletInfo): void => {\n setSelectedWalletInfo(wallet);\n widgetController.openWalletsModal();\n };\n\n const clearSelectedWalletInfo = (): void => {\n setSelectedWalletInfo(null);\n setSelectedWalletError(null);\n };\n\n onCleanup(() => {\n setSelectedWalletInfo(null);\n setSelectedWalletError(null);\n setInfoTab(false);\n });\n\n onCleanup(unsubscribe);\n\n return (\n <StyledModal\n opened={getWalletsModalIsOpened()}\n enableAndroidBackHandler={appState.enableAndroidBackHandler}\n onClose={() => onClose('action-cancelled')}\n onClickQuestion={() => setInfoTab(v => !v)}\n showFooter={!walletsModalIsWalletNotSupportFeature()}\n data-tc-wallets-modal-container=\"true\"\n >\n <Show when={infoTab()}>\n <InfoModal onBackClick={() => setInfoTab(false)} />\n </Show>\n\n <Show when={!infoTab()}>\n <Show when={additionalRequestLoading() || !walletsList()}>\n <H1Styled translationKey=\"walletModal.loading\">\n Wallets list is loading\n </H1Styled>\n <LoaderContainerStyled>\n <LoaderIcon size=\"m\" />\n </LoaderContainerStyled>\n </Show>\n\n <Show when={!additionalRequestLoading() && walletsList()}>\n <Switch>\n <Match when={walletsModalIsWalletNotSupportFeature()}>\n <DesktopFeatureNotSupportModal\n walletsList={walletsList()!}\n currentWallet={tonConnectUI?.wallet as Wallet}\n onSelect={onSelectWallet}\n onSelectAllWallets={onSelectAllWallets}\n onDisconnect={() => connector.disconnect()}\n walletsModalState={\n walletsModalState() as ChooseSupportedFeatureWalletsModal\n }\n onClose={() => onClose('action-cancelled')}\n />\n </Match>\n <Match when={selectedWalletInfo()}>\n <Dynamic\n component={\n isMobile() ? MobileConnectionModal : DesktopConnectionModal\n }\n wallet={selectedWalletInfo()! as WalletInfoRemote}\n additionalRequest={additionalRequest()}\n onBackClick={clearSelectedWalletInfo}\n defaultError={selectedWalletError()}\n />\n </Match>\n <Match when={selectedTab() === 'universal'}>\n <Dynamic\n component={\n isMobile() ? MobileUniversalModal : DesktopUniversalModal\n }\n onSelect={setSelectedWalletInfo}\n walletsList={walletsList()!}\n additionalRequest={additionalRequest()!}\n onSelectAllWallets={onSelectAllWallets}\n />\n </Match>\n <Match when={selectedTab() === 'all-wallets'}>\n <AllWalletsListModal\n walletsList={walletsList()!}\n featureCheckMode={\n tonConnectUI?.walletsRequiredFeatures ? 'strict' : 'soft'\n }\n onBack={onSelectUniversal}\n onSelect={setSelectedWalletInfo}\n />\n </Match>\n </Switch>\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, LoaderIcon, Text } from 'src/app/components';\n\nexport const ActionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 8px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 16px;\n`;\n\nexport const TextStyled = styled(Text)`\n font-weight: 510;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n max-width: 250px;\n\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n min-width: 112px;\n margin-top: 32px;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 16px;\n width: 16px;\n`;\n\nexport const ButtonStyled = styled(Button)`\n margin-top: 32px;\n`;\n","import { Component, createEffect, createSignal, JSXElement, Show, useContext } from 'solid-js';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ActionModalStyled,\n ButtonStyled,\n H1Styled,\n LoaderButtonStyled,\n LoaderIconStyled,\n TextStyled\n} from './style';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { isTelegramUrl } from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { action } from 'src/app/state/modals-state';\nimport { isInTMA } from 'src/app/utils/tma-api';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\n\ninterface ActionModalProps extends WithDataAttributes {\n headerTranslationKey: string;\n headerTranslationValues?: Record<string, string>;\n icon: JSXElement;\n textTranslationKey?: string;\n textTranslationValues?: Record<string, string>;\n onClose: () => void;\n showButton?: 'close' | 'open-wallet';\n}\n\nexport const ActionModal: Component<ActionModalProps> = props => {\n const dataAttrs = useDataAttributes(props);\n const tonConnectUI = useContext(TonConnectUiContext);\n const [firstClick, setFirstClick] = createSignal(true);\n const [sent, setSent] = createSignal(false);\n const [signed, setSigned] = createSignal(false);\n const [canceled, setCanceled] = createSignal(false);\n\n createEffect(() => {\n const currentAction = action();\n\n setSent(\n !!currentAction &&\n (('sent' in currentAction && currentAction.sent) ||\n currentAction.name === 'transaction-sent')\n );\n setSigned(\n !!currentAction &&\n (('signed' in currentAction && currentAction.signed) ||\n currentAction.name === 'data-signed')\n );\n setCanceled(\n !!currentAction &&\n (currentAction.name === 'transaction-canceled' ||\n currentAction.name === 'sign-data-canceled')\n );\n });\n\n let universalLink: string | undefined;\n if (\n tonConnectUI?.wallet &&\n 'universalLink' in tonConnectUI.wallet &&\n (tonConnectUI.wallet.openMethod === 'universal-link' ||\n (isTelegramUrl(tonConnectUI.wallet.universalLink) && isInTMA()))\n ) {\n universalLink = tonConnectUI.wallet.universalLink;\n }\n\n let deepLink: string | undefined;\n if (\n tonConnectUI?.wallet &&\n 'deepLink' in tonConnectUI.wallet &&\n (tonConnectUI.wallet.openMethod === 'custom-deeplink' ||\n (isTelegramUrl(tonConnectUI.wallet.deepLink) && isInTMA()))\n ) {\n deepLink = tonConnectUI.wallet.deepLink;\n }\n\n const onOpenWallet = (): void => {\n const currentAction = action()!;\n const returnStrategy =\n 'returnStrategy' in currentAction\n ? currentAction.returnStrategy\n : appState.returnStrategy;\n\n const forceRedirect = !firstClick();\n setFirstClick(false);\n\n if (isTelegramUrl(universalLink)) {\n redirectToTelegram(universalLink, {\n returnStrategy: returnStrategy,\n twaReturnUrl:\n 'twaReturnUrl' in currentAction\n ? currentAction.twaReturnUrl\n : appState.twaReturnUrl,\n forceRedirect: forceRedirect\n });\n } else {\n redirectToWallet(\n universalLink!,\n deepLink,\n {\n returnStrategy: returnStrategy,\n forceRedirect: forceRedirect\n },\n () => {}\n );\n }\n };\n\n return (\n <ActionModalStyled {...dataAttrs}>\n {props.icon}\n <H1Styled\n translationKey={props.headerTranslationKey}\n translationValues={props.headerTranslationValues}\n />\n <TextStyled\n translationKey={props.textTranslationKey}\n translationValues={props.textTranslationValues}\n />\n <Show\n when={\n !sent() &&\n !signed() &&\n !canceled() &&\n ((props.showButton === 'open-wallet' && universalLink) ||\n props.showButton !== 'open-wallet')\n }\n >\n <LoaderButtonStyled disabled={true} data-tc-connect-button-loading=\"true\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={sent() || signed()}>\n <Show when={props.showButton !== 'open-wallet'}>\n <ButtonStyled onClick={() => props.onClose()}>\n <Translation translationKey=\"common.close\">Close</Translation>\n </ButtonStyled>\n </Show>\n <Show when={props.showButton === 'open-wallet' && universalLink}>\n <ButtonStyled onClick={onOpenWallet}>\n <Translation translationKey=\"common.openWallet\">Open wallet</Translation>\n </ButtonStyled>\n </Show>\n </Show>\n </ActionModalStyled>\n );\n};\n","import { Component, useContext } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmTransactionModalProps {\n onClose: () => void;\n}\n\nexport const ConfirmTransactionModal: Component<ConfirmTransactionModalProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = (): string =>\n tonConnectUI!.wallet && 'name' in tonConnectUI!.wallet\n ? tonConnectUI!.wallet.name\n : t('common.yourWallet', {}, 'Your wallet');\n\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.confirmTransaction.header\"\n headerTranslationValues={{ name: name() }}\n textTranslationKey=\"actionModal.confirmTransaction.text\"\n icon={<LoaderIcon size=\"m\" />}\n onClose={() => props.onClose()}\n showButton=\"open-wallet\"\n data-tc-confirm-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIcon } from 'src/app/components';\n\ninterface TransactionCanceledModalProps {\n onClose: () => void;\n}\n\nexport const TransactionCanceledModal: Component<TransactionCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionCanceled.header\"\n textTranslationKey=\"actionModal.transactionCanceled.text\"\n icon={<ErrorIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-transaction-canceled-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIcon } from 'src/app/components';\n\ninterface TransactionSentModalProps {\n onClose: () => void;\n}\n\nexport const TransactionSentModal: Component<TransactionSentModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionSent.header\"\n textTranslationKey=\"actionModal.transactionSent.text\"\n icon={<SuccessIcon size=\"m\" />}\n showButton=\"open-wallet\"\n onClose={() => props.onClose()}\n data-tc-transaction-sent-modal=\"true\"\n />\n );\n};\n","import { Component, useContext } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmSignDataModalProps {\n onClose: () => void;\n}\n\nexport const ConfirmSignDataModal: Component<ConfirmSignDataModalProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = (): string =>\n tonConnectUI!.wallet && 'name' in tonConnectUI!.wallet\n ? tonConnectUI!.wallet.name\n : t('common.yourWallet', {}, 'Your wallet');\n\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.signData.header\"\n headerTranslationValues={{ name: name() }}\n textTranslationKey=\"actionModal.signData.text\"\n icon={<LoaderIcon size=\"m\" />}\n onClose={() => props.onClose()}\n showButton=\"open-wallet\"\n data-tc-sign-data-confirm-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIcon } from 'src/app/components';\n\ninterface SignDataCanceledModalProps {\n onClose: () => void;\n}\n\nexport const SignDataCanceledModal: Component<SignDataCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.signDataCanceled.header\"\n icon={<ErrorIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-sign-data-canceled-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIcon } from 'src/app/components';\n\ninterface DataSignedModalProps {\n onClose: () => void;\n}\n\nexport const DataSignedModal: Component<DataSignedModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.dataSigned.header\"\n icon={<SuccessIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-data-signed-modal=\"true\"\n />\n );\n};\n","import { Component, Match, Switch } from 'solid-js';\nimport { Modal } from 'src/app/components';\nimport { appState } from 'src/app/state/app.state';\nimport { action, setAction } from 'src/app/state/modals-state';\nimport { ConfirmTransactionModal } from 'src/app/views/modals/actions-modal/confirm-transaction-modal';\nimport { TransactionCanceledModal } from 'src/app/views/modals/actions-modal/transaction-canceled-modal';\nimport { TransactionSentModal } from 'src/app/views/modals/actions-modal/transaction-sent-modal';\nimport { ConfirmSignDataModal } from './confirm-sign-data-modal';\nimport { SignDataCanceledModal } from './sign-data-canceled-modal';\nimport { DataSignedModal } from './data-signed-modal';\n\nexport const ActionsModal: Component = () => {\n return (\n <Modal\n opened={action() !== null && action()?.openModal === true}\n enableAndroidBackHandler={appState.enableAndroidBackHandler}\n onClose={() => setAction(null)}\n showFooter={false}\n data-tc-actions-modal-container=\"true\"\n >\n <Switch>\n <Match when={action()!.name === 'transaction-sent'}>\n <TransactionSentModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'transaction-canceled'}>\n <TransactionCanceledModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'confirm-transaction'}>\n <ConfirmTransactionModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'data-signed'}>\n <DataSignedModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'sign-data-canceled'}>\n <SignDataCanceledModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'confirm-sign-data'}>\n <ConfirmSignDataModal onClose={() => setAction(null)} />\n </Match>\n </Switch>\n </Modal>\n );\n};\n","import { ConnectAdditionalRequest } from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createSignal,\n onCleanup,\n Show,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n getSingleWalletModalIsOpened,\n getSingleWalletModalWalletInfo\n} from 'src/app/state/modals-state';\nimport { H1Styled, LoaderContainerStyled, StyledModal } from './style';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { isMobile, updateIsMobile } from 'src/app/hooks/isMobile';\nimport { LoaderIcon } from 'src/app/components';\nimport { LoadableReady } from 'src/models/loadable';\nimport { DesktopConnectionModal } from 'src/app/views/modals/wallets-modal/desktop-connection-modal';\nimport { InfoModal } from 'src/app/views/modals/wallets-modal/info-modal';\nimport { MobileConnectionModal } from 'src/app/views/modals/wallets-modal/mobile-connection-modal';\nimport { Dynamic } from 'solid-js/web';\nimport { WalletsModalCloseReason } from 'src/models';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\n\nexport const SingleWalletModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n createEffect(() => {\n if (getSingleWalletModalIsOpened()) {\n updateIsMobile();\n }\n });\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [infoTab, setInfoTab] = createSignal(false);\n\n const additionalRequestLoading = (): boolean =>\n appState.connectRequestParameters?.state === 'loading';\n\n const additionalRequest = createMemo(() => {\n if (additionalRequestLoading()) {\n return undefined;\n }\n\n return (appState.connectRequestParameters as LoadableReady<ConnectAdditionalRequest>)\n ?.value;\n });\n\n const onClose = (closeReason: WalletsModalCloseReason): void => {\n tonConnectUI.closeSingleWalletModal(closeReason);\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (wallet) {\n onClose('wallet-selected');\n }\n });\n\n onCleanup(unsubscribe);\n\n onCleanup(() => {\n setInfoTab(false);\n });\n\n return (\n <StyledModal\n opened={getSingleWalletModalIsOpened()}\n enableAndroidBackHandler={appState.enableAndroidBackHandler}\n onClose={() => onClose('action-cancelled')}\n onClickQuestion={() => setInfoTab(v => !v)}\n showFooter={true}\n data-tc-wallets-modal-container=\"true\"\n >\n <Show when={infoTab()}>\n <InfoModal onBackClick={() => setInfoTab(false)} />\n </Show>\n\n <Show when={!infoTab()}>\n <Show when={additionalRequestLoading()}>\n <H1Styled translationKey=\"walletModal.loading\">\n Wallets list is loading\n </H1Styled>\n <LoaderContainerStyled>\n <LoaderIcon size=\"m\" />\n </LoaderContainerStyled>\n </Show>\n\n <Show when={!additionalRequestLoading()}>\n <Dynamic\n component={isMobile() ? MobileConnectionModal : DesktopConnectionModal}\n wallet={getSingleWalletModalWalletInfo()!} // TODO: remove non-null assertion\n additionalRequest={additionalRequest()}\n onBackClick={() => {}}\n backDisabled={true}\n />\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import './global.d.ts';\nimport { Show } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport { Dynamic, Portal } from 'solid-js/web';\nimport { ThemeProvider } from 'solid-styled-components';\nimport { i18nDictionary } from 'src/app/i18n';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { themeState } from 'src/app/state/theme-state';\nimport { GlobalStyles, globalStylesTag } from 'src/app/styles/global-styles';\nimport { AccountButton } from 'src/app/views/account-button';\nimport { ActionsModal, WalletsModal } from 'src/app/views/modals';\nimport './styles/style.d.ts';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { createI18nContext, I18nContext } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { defineStylesRoot, fixMobileSafariActiveTransition } from 'src/app/utils/web-api';\nimport { SingleWalletModal } from 'src/app/views/modals/wallets-modal/single-wallet-modal';\n\nexport type AppProps = {\n tonConnectUI: TonConnectUI;\n};\n\nconst App: Component<AppProps> = props => {\n const translations = createI18nContext(i18nDictionary, appState.language);\n\n defineStylesRoot();\n fixMobileSafariActiveTransition();\n\n return (\n <I18nContext.Provider value={translations}>\n <TonConnectUiContext.Provider value={props.tonConnectUI}>\n <ConnectorContext.Provider value={appState.connector}>\n <GlobalStyles />\n <ThemeProvider theme={themeState}>\n <Show when={appState.buttonRootId}>\n <Portal mount={document.getElementById(appState.buttonRootId!)!}>\n <AccountButton />\n </Portal>\n </Show>\n <Dynamic component={globalStylesTag}>\n <WalletsModal />\n <SingleWalletModal />\n <ActionsModal />\n </Dynamic>\n </ThemeProvider>\n </ConnectorContext.Provider>\n </TonConnectUiContext.Provider>\n </I18nContext.Provider>\n );\n};\n\nexport default App;\n","import { render } from 'solid-js/web';\n\nimport {\n Action,\n lastSelectedWalletInfo,\n setAction,\n setLastSelectedWalletInfo,\n setSingleWalletModalState,\n setWalletsModalState\n} from 'src/app/state/modals-state';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport App from './App';\nimport { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\nimport { WalletsModalCloseReason } from 'src/models';\nimport { WalletInfoRemote, WalletNotSupportFeatureError } from '@tonconnect/sdk';\n\nexport const widgetController = {\n openWalletsModal: (): void =>\n void setTimeout(() =>\n setWalletsModalState({\n status: 'opened',\n closeReason: null\n })\n ),\n closeWalletsModal: (reason: WalletsModalCloseReason): void =>\n void setTimeout(() =>\n setWalletsModalState({\n status: 'closed',\n closeReason: reason\n })\n ),\n openSingleWalletModal: (walletInfo: WalletInfoRemote): void => {\n void setTimeout(() =>\n setSingleWalletModalState({\n status: 'opened',\n closeReason: null,\n walletInfo: walletInfo\n })\n );\n },\n closeSingleWalletModal: (reason: WalletsModalCloseReason): void =>\n void setTimeout(() =>\n setSingleWalletModalState({\n status: 'closed',\n closeReason: reason\n })\n ),\n openWalletNotSupportFeatureModal: (cause: WalletNotSupportFeatureError['cause']): void =>\n void setTimeout(() =>\n setWalletsModalState({\n status: 'opened',\n closeReason: null,\n type: 'wallet-not-support-feature',\n requiredFeature: cause.requiredFeature\n })\n ),\n setAction: (action: Action): void => void setTimeout(() => setAction(action)),\n clearAction: (): void => void setTimeout(() => setAction(null)),\n getSelectedWalletInfo: ():\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null => lastSelectedWalletInfo(),\n removeSelectedWalletInfo: (): void => setLastSelectedWalletInfo(null),\n renderApp: (root: string, tonConnectUI: TonConnectUI): (() => void) =>\n render(\n () => <App tonConnectUI={tonConnectUI} />,\n document.getElementById(root) as HTMLElement\n )\n};\n","import { setLastSelectedWalletInfo, walletsModalState } from 'src/app/state/modals-state';\nimport { createEffect } from 'solid-js';\nimport {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyEmbedded,\n ITonConnect,\n WalletInfoCurrentlyEmbedded\n} from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { widgetController } from 'src/app/widget-controller';\nimport { WalletsModal, WalletsModalCloseReason, WalletsModalState } from 'src/models/wallets-modal';\nimport { isInTMA, sendExpand } from 'src/app/utils/tma-api';\nimport { TonConnectUITracker } from 'src/tracker/ton-connect-ui-tracker';\n\ninterface WalletsModalManagerCreateOptions {\n /**\n * TonConnect instance.\n */\n connector: ITonConnect;\n\n /**\n * Set connect request parameters callback.\n */\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n */\n tracker: TonConnectUITracker;\n}\n\n/**\n * Manages the modal window state.\n */\nexport class WalletsModalManager implements WalletsModal {\n /**\n * TonConnect instance.\n * @internal\n */\n private readonly connector: ITonConnect;\n\n /**\n * Callback to call when the connection parameters are received.\n * @internal\n */\n private readonly setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * List of subscribers to the modal window state changes.\n * @internal\n */\n private consumers: Array<(state: WalletsModalState) => void> = [];\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n * @internal\n */\n private readonly tracker: TonConnectUITracker;\n\n /**\n * Current modal window state.\n */\n public state: WalletsModalState = walletsModalState();\n\n constructor(options: WalletsModalManagerCreateOptions) {\n this.connector = options.connector;\n this.tracker = options.tracker;\n this.setConnectRequestParametersCallback = options.setConnectRequestParametersCallback;\n\n createEffect(() => {\n const state = walletsModalState();\n this.state = state;\n this.consumers.forEach(consumer => consumer(state));\n });\n }\n\n /**\n * Opens the modal window.\n */\n public async open(): Promise<void> {\n this.tracker.trackConnectionStarted();\n const walletsList = await this.connector.getWallets();\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n\n if (embeddedWallet) {\n return this.connectEmbeddedWallet(embeddedWallet);\n } else {\n return this.openWalletsModal();\n }\n }\n\n /**\n * Closes the modal window.\n * @default 'action-cancelled'\n */\n public close(reason: WalletsModalCloseReason = 'action-cancelled'): void {\n if (reason === 'action-cancelled') {\n this.tracker.trackConnectionError('Connection was cancelled');\n }\n widgetController.closeWalletsModal(reason);\n }\n\n /**\n * Subscribe to the modal window state changes, returns unsubscribe function.\n */\n public onStateChange(onChange: (state: WalletsModalState) => void): () => void {\n this.consumers.push(onChange);\n\n return () => {\n this.consumers = this.consumers.filter(consumer => consumer !== onChange);\n };\n }\n\n /**\n * Initiates a connection with an embedded wallet.\n * @param embeddedWallet - Information about the embedded wallet to connect to.\n * @internal\n */\n private connectEmbeddedWallet(embeddedWallet: WalletInfoCurrentlyEmbedded): void {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.setConnectRequestParametersCallback(connect);\n } else {\n connect(additionalRequest?.value);\n }\n }\n\n /**\n * Opens the modal window to connect to an external wallet, and waits when modal window is opened.\n * @internal\n */\n private async openWalletsModal(): Promise<void> {\n if (isInTMA()) {\n sendExpand();\n }\n\n widgetController.openWalletsModal();\n\n return new Promise<void>(resolve => {\n const unsubscribe = this.onStateChange(state => {\n const { status } = state;\n if (status === 'opened') {\n unsubscribe();\n resolve();\n }\n });\n });\n }\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createEffect } from 'solid-js';\nimport { action, Action } from 'src/app/state/modals-state';\n\ninterface TransactionModalManagerCreateOptions {\n /**\n * TonConnect instance.\n */\n connector: ITonConnect;\n}\n\n/**\n * Manages the transaction modal window state.\n */\nexport class TransactionModalManager {\n /**\n * TonConnect instance.\n * @internal\n */\n private readonly connector: ITonConnect;\n\n /**\n * List of subscribers to the modal window state changes.\n * @internal\n */\n private consumers: Array<(action: Action | null) => void> = [];\n\n constructor(options: TransactionModalManagerCreateOptions) {\n this.connector = options.connector;\n\n createEffect(() => {\n const currentAction = action();\n this.consumers.forEach(consumer => consumer(currentAction));\n });\n }\n\n /**\n * Subscribe to the modal window state changes, returns unsubscribe function.\n */\n public onStateChange(consumer: (action: Action | null) => void): () => void {\n this.consumers.push(consumer);\n\n return () => {\n this.consumers = this.consumers.filter(c => c !== consumer);\n };\n }\n}\n","import { setLastSelectedWalletInfo, singleWalletModalState } from 'src/app/state/modals-state';\nimport { createEffect } from 'solid-js';\nimport {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyEmbedded,\n isWalletInfoRemote,\n ITonConnect,\n WalletInfoCurrentlyEmbedded,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { widgetController } from 'src/app/widget-controller';\nimport { SingleWalletModal, SingleWalletModalState } from 'src/models/single-wallet-modal';\nimport { isInTMA, sendExpand } from 'src/app/utils/tma-api';\nimport { TonConnectUIError } from 'src/errors';\nimport { applyWalletsListConfiguration, eqWalletName } from 'src/app/utils/wallets';\nimport { TonConnectUITracker } from 'src/tracker/ton-connect-ui-tracker';\nimport { WalletsModalCloseReason } from 'src/models';\n\ninterface SingleWalletModalManagerCreateOptions {\n /**\n * TonConnect instance.\n */\n connector: ITonConnect;\n\n /**\n * Set connect request parameters callback.\n */\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n */\n tracker: TonConnectUITracker;\n}\n\n/**\n * Manages the modal window state.\n */\nexport class SingleWalletModalManager implements SingleWalletModal {\n /**\n * TonConnect instance.\n * @internal\n */\n private readonly connector: ITonConnect;\n\n /**\n * Callback to call when the connection parameters are received.\n * @internal\n */\n private readonly setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => void;\n\n /**\n * List of subscribers to the modal window state changes.\n * @internal\n */\n private consumers: Array<(state: SingleWalletModalState) => void> = [];\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n * @internal\n */\n private readonly tracker: TonConnectUITracker;\n\n /**\n * Current modal window state.\n */\n public state: SingleWalletModalState = singleWalletModalState();\n\n constructor(options: SingleWalletModalManagerCreateOptions) {\n this.connector = options.connector;\n this.tracker = options.tracker;\n this.setConnectRequestParametersCallback = options.setConnectRequestParametersCallback;\n\n createEffect(() => {\n const state = singleWalletModalState();\n this.state = state;\n this.consumers.forEach(consumer => consumer(state));\n });\n }\n\n /**\n * Opens the modal window with the specified wallet.\n * @param wallet - Wallet app name.\n * @throws TonConnectUIError if the specified wallet is not found.\n */\n public async open(wallet: string): Promise<void> {\n this.tracker.trackConnectionStarted();\n\n const fetchedWalletsList = await this.connector.getWallets();\n const walletsList = applyWalletsListConfiguration(\n fetchedWalletsList,\n appState.walletsListConfiguration\n );\n\n // TODO: move to ITonConnect\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n const isEmbeddedWalletExist = !!embeddedWallet;\n if (isEmbeddedWalletExist) {\n return this.connectEmbeddedWallet(embeddedWallet);\n }\n\n // TODO: move to ITonConnect\n const externalWallets = walletsList.filter(isWalletInfoRemote);\n const externalWallet = externalWallets.find(walletInfo => eqWalletName(walletInfo, wallet));\n const isExternalWalletExist = !!externalWallet;\n if (isExternalWalletExist) {\n return this.openSingleWalletModal(externalWallet);\n }\n\n const error = `Trying to open modal window with unknown wallet \"${wallet}\".`;\n this.tracker.trackConnectionError(error);\n throw new TonConnectUIError(error);\n }\n\n /**\n * Closes the modal window.\n * @default 'action-cancelled'\n */\n public close(reason: WalletsModalCloseReason = 'action-cancelled'): void {\n if (reason === 'action-cancelled') {\n this.tracker.trackConnectionError('Connection was cancelled');\n }\n widgetController.closeSingleWalletModal('action-cancelled');\n }\n\n /**\n * Subscribe to the modal window state changes, returns unsubscribe function.\n */\n public onStateChange(onChange: (state: SingleWalletModalState) => void): () => void {\n this.consumers.push(onChange);\n\n return () => {\n this.consumers = this.consumers.filter(consumer => consumer !== onChange);\n };\n }\n\n /**\n * Initiates a connection with an embedded wallet.\n * @param embeddedWallet - Information about the embedded wallet to connect to.\n * @internal\n */\n private connectEmbeddedWallet(embeddedWallet: WalletInfoCurrentlyEmbedded): void {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.setConnectRequestParametersCallback(connect);\n } else {\n connect(additionalRequest?.value);\n }\n }\n\n /**\n * Opens the modal window to connect to a specified wallet, and waits when modal window is opened.\n */\n public async openSingleWalletModal(wallet: WalletInfoRemote): Promise<void> {\n if (isInTMA()) {\n sendExpand();\n }\n\n widgetController.openSingleWalletModal(wallet);\n\n return new Promise<void>(resolve => {\n const unsubscribe = this.onStateChange(state => {\n const { status } = state;\n if (status === 'opened') {\n unsubscribe();\n resolve();\n }\n });\n });\n }\n}\n","import {\n createConnectionCompletedEvent,\n createConnectionErrorEvent,\n createConnectionRestoringCompletedEvent,\n createConnectionRestoringErrorEvent,\n createConnectionRestoringStartedEvent,\n createConnectionStartedEvent,\n createDisconnectionEvent,\n createRequestVersionEvent,\n createResponseVersionEvent,\n createTransactionSentForSignatureEvent,\n createTransactionSignedEvent,\n createTransactionSigningFailedEvent,\n UserActionEvent\n} from './types';\nimport {\n BrowserEventDispatcher,\n createDataSentForSignatureEvent,\n createDataSignedEvent,\n createDataSigningFailedEvent,\n createVersionInfo,\n EventDispatcher,\n ResponseVersionEvent,\n Version,\n WithoutVersion\n} from '@tonconnect/sdk';\n\nexport type TonConnectUITrackerOptions = {\n /**\n * Event dispatcher to track user actions.\n * @default new BrowserEventDispatcher()\n */\n eventDispatcher?: EventDispatcher<UserActionEvent> | null;\n /**\n * TonConnect UI version.\n */\n tonConnectUiVersion: string;\n};\n\n/**\n * Tracker for TonConnectUI user actions, such as transaction signing, connection, etc.\n *\n * List of events:\n * * `connection-started`: when a user starts connecting a wallet.\n * * `connection-completed`: when a user successfully connected a wallet.\n * * `connection-error`: when a user cancels a connection or there is an error during the connection process.\n * * `connection-restoring-started`: when the dApp starts restoring a connection.\n * * `connection-restoring-completed`: when the dApp successfully restores a connection.\n * * `connection-restoring-error`: when the dApp fails to restore a connection.\n * * `disconnection`: when a user starts disconnecting a wallet.\n * * `transaction-sent-for-signature`: when a user sends a transaction for signature.\n * * `transaction-signed`: when a user successfully signs a transaction.\n * * `transaction-signing-failed`: when a user cancels transaction signing or there is an error during the signing process.\n * * `sign-data-request-initiated`: when a user initiates a data signing request.\n * * `sign-data-request-completed`: when a user successfully signs data.\n * * `sign-data-request-failed`: when a user cancels data signing or there is an error during the signing process.\n *\n * If you want to track user actions, you can subscribe to the window events with prefix `ton-connect-ui-`:\n *\n * @example\n * window.addEventListener('ton-connect-ui-transaction-sent-for-signature', (event) => {\n * console.log('Transaction init', event.detail);\n * });\n *\n * @internal\n */\nexport class TonConnectUITracker {\n /**\n * Event prefix for user actions.\n * @private\n */\n private readonly eventPrefix = 'ton-connect-ui-';\n\n /**\n * TonConnect UI version.\n */\n private readonly tonConnectUiVersion: string;\n\n /**\n * TonConnect SDK version.\n */\n private tonConnectSdkVersion: string | null = null;\n\n /**\n * Version of the library.\n */\n get version(): Version {\n return createVersionInfo({\n ton_connect_sdk_lib: this.tonConnectSdkVersion,\n ton_connect_ui_lib: this.tonConnectUiVersion\n });\n }\n\n /**\n * Event dispatcher to track user actions. By default, it uses `window.dispatchEvent` for browser environment.\n * @private\n */\n private readonly eventDispatcher: EventDispatcher<UserActionEvent>;\n\n constructor(options: TonConnectUITrackerOptions) {\n this.eventDispatcher = options?.eventDispatcher ?? new BrowserEventDispatcher();\n this.tonConnectUiVersion = options.tonConnectUiVersion;\n\n this.init().catch();\n }\n\n /**\n * Called once when the tracker is created and request version other libraries.\n */\n private async init(): Promise<void> {\n try {\n await this.setRequestVersionHandler();\n this.tonConnectSdkVersion = await this.requestTonConnectSdkVersion();\n } catch (e) {}\n }\n\n /**\n * Set request version handler.\n * @private\n */\n private async setRequestVersionHandler(): Promise<void> {\n await this.eventDispatcher.addEventListener('ton-connect-ui-request-version', async () => {\n await this.eventDispatcher.dispatchEvent(\n 'ton-connect-ui-response-version',\n createResponseVersionEvent(this.tonConnectUiVersion)\n );\n });\n }\n\n /**\n * Request TonConnect SDK version.\n * @private\n */\n private async requestTonConnectSdkVersion(): Promise<string> {\n return new Promise(async (resolve, reject) => {\n try {\n await this.eventDispatcher.addEventListener(\n 'ton-connect-response-version',\n (event: CustomEvent<ResponseVersionEvent>) => {\n resolve(event.detail.version);\n },\n { once: true }\n );\n await this.eventDispatcher.dispatchEvent(\n 'ton-connect-request-version',\n createRequestVersionEvent()\n );\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * Emit user action event to the window.\n * @param eventDetails\n * @private\n */\n private dispatchUserActionEvent(eventDetails: UserActionEvent): void {\n try {\n this.eventDispatcher\n ?.dispatchEvent(`${this.eventPrefix}${eventDetails.type}`, eventDetails)\n .catch();\n } catch (e) {}\n }\n\n /**\n * Track connection init event.\n * @param args\n */\n public trackConnectionStarted(\n ...args: WithoutVersion<Parameters<typeof createConnectionStartedEvent>>\n ): void {\n try {\n const event = createConnectionStartedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection success event.\n * @param args\n */\n public trackConnectionCompleted(\n ...args: WithoutVersion<Parameters<typeof createConnectionCompletedEvent>>\n ): void {\n try {\n const event = createConnectionCompletedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection error event.\n * @param args\n */\n public trackConnectionError(\n ...args: WithoutVersion<Parameters<typeof createConnectionErrorEvent>>\n ): void {\n try {\n const event = createConnectionErrorEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection restoring init event.\n * @param args\n */\n public trackConnectionRestoringStarted(\n ...args: WithoutVersion<Parameters<typeof createConnectionRestoringStartedEvent>>\n ): void {\n try {\n const event = createConnectionRestoringStartedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection restoring success event.\n * @param args\n */\n public trackConnectionRestoringCompleted(\n ...args: WithoutVersion<Parameters<typeof createConnectionRestoringCompletedEvent>>\n ): void {\n try {\n const event = createConnectionRestoringCompletedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track connection restoring error event.\n * @param args\n */\n public trackConnectionRestoringError(\n ...args: WithoutVersion<Parameters<typeof createConnectionRestoringErrorEvent>>\n ): void {\n try {\n const event = createConnectionRestoringErrorEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track disconnect event.\n * @param args\n */\n public trackDisconnection(\n ...args: WithoutVersion<Parameters<typeof createDisconnectionEvent>>\n ): void {\n try {\n const event = createDisconnectionEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track transaction init event.\n * @param args\n */\n public trackTransactionSentForSignature(\n ...args: WithoutVersion<Parameters<typeof createTransactionSentForSignatureEvent>>\n ): void {\n try {\n const event = createTransactionSentForSignatureEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track transaction signed event.\n * @param args\n */\n public trackTransactionSigned(\n ...args: WithoutVersion<Parameters<typeof createTransactionSignedEvent>>\n ): void {\n try {\n const event = createTransactionSignedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track transaction error event.\n * @param args\n */\n public trackTransactionSigningFailed(\n ...args: WithoutVersion<Parameters<typeof createTransactionSigningFailedEvent>>\n ): void {\n try {\n const event = createTransactionSigningFailedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track data sent for signature event.\n * @param args\n */\n public trackDataSentForSignature(\n ...args: WithoutVersion<Parameters<typeof createDataSentForSignatureEvent>>\n ): void {\n try {\n const event = createDataSentForSignatureEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track data signed event.\n * @param args\n */\n public trackDataSigned(\n ...args: WithoutVersion<Parameters<typeof createDataSignedEvent>>\n ): void {\n try {\n const event = createDataSignedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n\n /**\n * Track data signing error event.\n * @param args\n */\n public trackDataSigningFailed(\n ...args: WithoutVersion<Parameters<typeof createDataSigningFailedEvent>>\n ): void {\n try {\n const event = createDataSigningFailedEvent(this.version, ...args);\n this.dispatchUserActionEvent(event);\n } catch (e) {}\n }\n}\n","declare const TON_CONNECT_UI_VERSION: string;\n\nexport const tonConnectUiVersion: string = TON_CONNECT_UI_VERSION;\n","import type {\n Account,\n ConnectAdditionalRequest,\n RequiredFeatures,\n SignDataPayload,\n SignDataResponse,\n WalletInfoCurrentlyEmbedded\n} from '@tonconnect/sdk';\nimport {\n isTelegramUrl,\n isWalletInfoCurrentlyEmbedded,\n ITonConnect,\n SendTransactionRequest,\n SendTransactionResponse,\n TonConnect,\n TonConnectError,\n Wallet,\n WalletInfo,\n WalletNotSupportFeatureError\n} from '@tonconnect/sdk';\nimport { widgetController } from 'src/app/widget-controller';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { TonConnectUiCreateOptions } from 'src/models/ton-connect-ui-create-options';\nimport { PreferredWalletStorage, WalletInfoStorage } from 'src/storage';\nimport {\n createMacrotaskAsync,\n getSystemTheme,\n preloadImages,\n subscribeToThemeChange\n} from 'src/app/utils/web-api';\nimport { TonConnectUiOptions } from 'src/models/ton-connect-ui-options';\nimport { setBorderRadius, setColors, setTheme } from 'src/app/state/theme-state';\nimport { mergeOptions } from 'src/app/utils/options';\nimport { appState, setAppState } from 'src/app/state/app.state';\nimport { unwrap } from 'solid-js/store';\nimport { Action, setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { ActionConfiguration, StrictActionConfiguration } from 'src/models/action-configuration';\nimport { ConnectedWallet, WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\nimport { applyWalletsListConfiguration, eqWalletName } from 'src/app/utils/wallets';\nimport { uniq } from 'src/app/utils/array';\nimport { Loadable } from 'src/models/loadable';\nimport { WalletsModalManager } from 'src/managers/wallets-modal-manager';\nimport { TransactionModalManager } from 'src/managers/transaction-modal-manager';\nimport { WalletsModal, WalletsModalCloseReason, WalletsModalState } from 'src/models/wallets-modal';\nimport { isInTMA, sendExpand } from 'src/app/utils/tma-api';\nimport { redirectToTelegram, redirectToWallet } from 'src/app/utils/url-strategy-helpers';\nimport { SingleWalletModalManager } from 'src/managers/single-wallet-modal-manager';\nimport { SingleWalletModal, SingleWalletModalState } from 'src/models/single-wallet-modal';\nimport { TonConnectUITracker } from 'src/tracker/ton-connect-ui-tracker';\nimport { tonConnectUiVersion } from 'src/constants/version';\nimport { ReturnStrategy } from './models';\n\nexport class TonConnectUI {\n public static getWallets(): Promise<WalletInfo[]> {\n return TonConnect.getWallets();\n }\n\n private readonly walletInfoStorage = new WalletInfoStorage();\n\n private readonly preferredWalletStorage = new PreferredWalletStorage();\n\n /**\n * Emits user action event to the EventDispatcher. By default, it uses `window.dispatchEvent` for browser environment.\n * @private\n */\n private readonly tracker: TonConnectUITracker;\n\n private walletInfo: WalletInfoWithOpenMethod | null = null;\n\n private systemThemeChangeUnsubscribe: (() => void) | null = null;\n\n private actionsConfiguration?: ActionConfiguration;\n\n private readonly walletsList: Promise<WalletInfo[]>;\n\n private _walletsRequiredFeatures?: RequiredFeatures;\n\n public get walletsRequiredFeatures(): RequiredFeatures | undefined {\n return this._walletsRequiredFeatures;\n }\n\n private _walletsPreferredFeatures?: RequiredFeatures;\n\n public get walletsPreferredFeatures(): RequiredFeatures | undefined {\n return this._walletsPreferredFeatures;\n }\n\n private connectRequestParametersCallback?: (\n parameters: ConnectAdditionalRequest | undefined\n ) => void;\n\n /**\n * TonConnect instance.\n */\n public readonly connector: ITonConnect;\n\n /**\n * Manages the modal window state.\n */\n public readonly modal: WalletsModal;\n\n /**\n * Manages the single wallet modal window state.\n * TODO: make it public when interface will be ready for external usage.\n */\n private readonly singleWalletModal: SingleWalletModal;\n\n /**\n * Manages the transaction modal window state.\n * TODO: make it public when interface will be ready for external usage.\n */\n private readonly transactionModal: TransactionModalManager;\n\n /**\n * Promise that resolves after end of th connection restoring process (promise will fire after `onStatusChange`,\n * so you can get actual information about wallet and session after when promise resolved).\n * Resolved value `true`/`false` indicates if the session was restored successfully.\n */\n public readonly connectionRestored = Promise.resolve(false);\n\n /**\n * Current connection status.\n */\n public get connected(): boolean {\n return this.connector.connected;\n }\n\n /**\n * Current connected account or null.\n */\n public get account(): Account | null {\n return this.connector.account;\n }\n\n /**\n * Curren connected wallet app and its info or null.\n */\n public get wallet(): Wallet | (Wallet & WalletInfoWithOpenMethod) | null {\n if (!this.connector.wallet) {\n return null;\n }\n\n return {\n ...this.connector.wallet,\n ...this.walletInfo\n };\n }\n\n /**\n * Set and apply new UI options. Object with partial options should be passed. Passed options will be merged with current options.\n * @param options\n */\n public set uiOptions(options: TonConnectUiOptions) {\n this.checkButtonRootExist(options.buttonRootId);\n\n this.actionsConfiguration = options.actionsConfiguration;\n\n if ('walletsRequiredFeatures' in options) {\n this._walletsRequiredFeatures = options.walletsRequiredFeatures;\n }\n\n if ('walletsPreferredFeatures' in options) {\n this._walletsPreferredFeatures = options.walletsPreferredFeatures;\n }\n\n if (options.uiPreferences?.theme) {\n if (options.uiPreferences?.theme !== 'SYSTEM') {\n this.systemThemeChangeUnsubscribe?.();\n setTheme(options.uiPreferences.theme, options.uiPreferences.colorsSet);\n } else {\n setTheme(getSystemTheme(), options.uiPreferences.colorsSet);\n\n if (!this.systemThemeChangeUnsubscribe) {\n this.systemThemeChangeUnsubscribe = subscribeToThemeChange(setTheme);\n }\n }\n } else {\n if (options.uiPreferences?.colorsSet) {\n setColors(options.uiPreferences.colorsSet);\n }\n }\n\n if (options.uiPreferences?.borderRadius) {\n setBorderRadius(options.uiPreferences.borderRadius);\n }\n\n setAppState(state => {\n const merged = mergeOptions(\n {\n ...(options.language && { language: options.language }),\n ...(!!options.actionsConfiguration?.returnStrategy && {\n returnStrategy: options.actionsConfiguration.returnStrategy\n }),\n ...(!!options.actionsConfiguration?.twaReturnUrl && {\n twaReturnUrl: options.actionsConfiguration.twaReturnUrl\n }),\n ...(!!options.walletsListConfiguration && {\n walletsListConfiguration: options.walletsListConfiguration\n })\n },\n unwrap(state)\n );\n\n if (options.buttonRootId !== undefined) {\n merged.buttonRootId = options.buttonRootId;\n }\n\n if (options.enableAndroidBackHandler !== undefined) {\n merged.enableAndroidBackHandler = options.enableAndroidBackHandler;\n }\n\n return merged;\n });\n }\n\n // TODO: `actionsConfiguration.twaReturnUrl` is used only in `connectWallet` method, but it's not used in `sendTransaction` method, NEED TO FIX IT\n constructor(options?: TonConnectUiCreateOptions) {\n if (options && 'connector' in options && options.connector) {\n this.connector = options.connector;\n } else if (options && 'manifestUrl' in options && options.manifestUrl) {\n this.connector = new TonConnect({\n manifestUrl: options.manifestUrl,\n eventDispatcher: options.eventDispatcher,\n walletsRequiredFeatures: options.walletsRequiredFeatures\n });\n } else {\n throw new TonConnectUIError(\n 'You have to specify a `manifestUrl` or a `connector` in the options.'\n );\n }\n\n this.tracker = new TonConnectUITracker({\n eventDispatcher: options?.eventDispatcher,\n tonConnectUiVersion: tonConnectUiVersion\n });\n\n this.modal = new WalletsModalManager({\n connector: this.connector,\n tracker: this.tracker,\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => {\n this.connectRequestParametersCallback = callback;\n }\n });\n\n this.singleWalletModal = new SingleWalletModalManager({\n connector: this.connector,\n tracker: this.tracker,\n setConnectRequestParametersCallback: (\n callback: (parameters?: ConnectAdditionalRequest) => void\n ) => {\n this.connectRequestParametersCallback = callback;\n }\n });\n\n this.transactionModal = new TransactionModalManager({\n connector: this.connector\n });\n\n this._walletsRequiredFeatures = options.walletsRequiredFeatures;\n\n this._walletsPreferredFeatures = options.walletsPreferredFeatures;\n\n this.walletsList = this.getWallets();\n\n this.walletsList.then(list => preloadImages(uniq(list.map(item => item.imageUrl))));\n\n const rootId = this.normalizeWidgetRoot(options?.widgetRootId);\n\n this.subscribeToWalletChange();\n\n if (options?.restoreConnection !== false) {\n this.connectionRestored = createMacrotaskAsync(async () => {\n this.tracker.trackConnectionRestoringStarted();\n await this.connector.restoreConnection();\n\n if (!this.connector.connected) {\n this.tracker.trackConnectionRestoringError('Connection was not restored');\n this.walletInfoStorage.removeWalletInfo();\n } else {\n this.tracker.trackConnectionRestoringCompleted(this.wallet);\n }\n\n return this.connector.connected;\n });\n }\n\n this.uiOptions = mergeOptions(options, { uiPreferences: { theme: 'SYSTEM' } });\n const preferredWalletName = this.preferredWalletStorage.getPreferredWalletAppName();\n setAppState({\n connector: this.connector,\n preferredWalletAppName: preferredWalletName\n });\n\n widgetController.renderApp(rootId, this);\n }\n\n /**\n * Use it to customize ConnectRequest and add `tonProof` payload.\n * You can call it multiply times to set updated tonProof payload if previous one is outdated.\n * If `connectRequestParameters.state === 'loading'` loader will appear instead of the qr code in the wallets modal.\n * If `connectRequestParameters.state` was changed to 'ready' or it's value has been changed, QR will be re-rendered.\n */\n public setConnectRequestParameters(\n connectRequestParameters: Loadable<ConnectAdditionalRequest> | undefined | null\n ): void {\n setAppState({ connectRequestParameters });\n if (connectRequestParameters?.state === 'ready' || !connectRequestParameters) {\n this.connectRequestParametersCallback?.(connectRequestParameters?.value);\n }\n }\n\n /**\n * Returns available wallets list.\n */\n public async getWallets(): Promise<WalletInfo[]> {\n return this.connector.getWallets();\n }\n\n /**\n * Subscribe to connection status change.\n * @return function which has to be called to unsubscribe.\n */\n public onStatusChange(\n callback: (wallet: ConnectedWallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): ReturnType<ITonConnect['onStatusChange']> {\n return this.connector.onStatusChange(async wallet => {\n if (wallet) {\n const lastSelectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n\n callback({\n ...wallet,\n ...(lastSelectedWalletInfo || this.walletInfoStorage.getWalletInfo())!\n });\n } else {\n callback(wallet);\n }\n }, errorsHandler);\n }\n\n /**\n * Opens the modal window, returns a promise that resolves after the modal window is opened.\n */\n public async openModal(): Promise<void> {\n return this.modal.open();\n }\n\n /**\n * Closes the modal window.\n */\n public closeModal(reason?: WalletsModalCloseReason): void {\n this.modal.close(reason);\n }\n\n /**\n * Subscribe to the modal window state changes, returns a function which has to be called to unsubscribe.\n */\n public onModalStateChange(onChange: (state: WalletsModalState) => void): () => void {\n return this.modal.onStateChange(onChange);\n }\n\n /**\n * Returns current modal window state.\n */\n public get modalState(): WalletsModalState {\n return this.modal.state;\n }\n\n /**\n * Opens the single wallet modal window, returns a promise that resolves after the modal window is opened.\n * @experimental\n */\n public async openSingleWalletModal(wallet: string): Promise<void> {\n return this.singleWalletModal.open(wallet);\n }\n\n /**\n * Close the single wallet modal window.\n * @experimental\n */\n public closeSingleWalletModal(closeReason?: WalletsModalCloseReason): void {\n this.singleWalletModal.close(closeReason);\n }\n\n /**\n * Subscribe to the single wallet modal window state changes, returns a function which has to be called to unsubscribe.\n * @experimental\n */\n public onSingleWalletModalStateChange(\n onChange: (state: SingleWalletModalState) => void\n ): () => void {\n return this.singleWalletModal.onStateChange(onChange);\n }\n\n /**\n * Returns current single wallet modal window state.\n * @experimental\n */\n public get singleWalletModalState(): SingleWalletModalState {\n return this.singleWalletModal.state;\n }\n\n /**\n * @deprecated Use `tonConnectUI.openModal()` instead. Will be removed in the next major version.\n * Opens the modal window and handles a wallet connection.\n * @return Connected wallet.\n * @throws TonConnectUIError if connection was aborted.\n */\n public async connectWallet(): Promise<ConnectedWallet> {\n const walletsList = await this.getWallets();\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n\n if (embeddedWallet) {\n return await this.connectEmbeddedWallet(embeddedWallet);\n } else {\n return await this.connectExternalWallet();\n }\n }\n\n /**\n * Disconnect wallet and clean localstorage.\n */\n public disconnect(): Promise<void> {\n this.tracker.trackDisconnection(this.wallet, 'dapp');\n\n widgetController.clearAction();\n widgetController.removeSelectedWalletInfo();\n this.walletInfoStorage.removeWalletInfo();\n return this.connector.disconnect();\n }\n\n /**\n * Opens the modal window and handles the transaction sending.\n * @param tx transaction to send.\n * @param options modal and notifications behaviour settings. Default is show only 'before' modal and all notifications.\n */\n public async sendTransaction(\n tx: SendTransactionRequest,\n options?: ActionConfiguration & { onRequestSent?: (redirectToWallet: () => void) => void }\n ): Promise<SendTransactionResponse> {\n this.tracker.trackTransactionSentForSignature(this.wallet, tx);\n\n if (!this.connected) {\n this.tracker.trackTransactionSigningFailed(this.wallet, tx, 'Wallet was not connected');\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n if (isInTMA()) {\n sendExpand();\n }\n\n const { notifications, modals, returnStrategy, twaReturnUrl } =\n this.getModalsAndNotificationsConfiguration(options);\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n sent: false\n });\n\n const abortController = new AbortController();\n\n const onRequestSent = (): void => {\n if (abortController.signal.aborted) {\n return;\n }\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n sent: true\n });\n\n this.redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl\n });\n\n let firstClick = true;\n const redirectToWallet = () => {\n if (abortController.signal.aborted) {\n return;\n }\n\n const forceRedirect = !firstClick;\n firstClick = false;\n\n this.redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl,\n forceRedirect,\n });\n }\n\n options?.onRequestSent?.(redirectToWallet);\n };\n\n const unsubscribe = this.onTransactionModalStateChange(action => {\n if (action?.openModal) {\n return;\n }\n\n unsubscribe();\n if (!action) {\n abortController.abort();\n }\n });\n\n try {\n const result = await this.waitForSendTransaction(\n {\n transaction: tx,\n signal: abortController.signal\n },\n onRequestSent\n );\n\n this.tracker.trackTransactionSigned(this.wallet, tx, result);\n\n widgetController.setAction({\n name: 'transaction-sent',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n if (e instanceof WalletNotSupportFeatureError) {\n widgetController.clearAction();\n widgetController.openWalletNotSupportFeatureModal(e.cause);\n\n throw e;\n }\n\n widgetController.setAction({\n name: 'transaction-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n } finally {\n unsubscribe();\n }\n }\n\n /**\n * Signs the data and returns the signature.\n * @param data data to sign.\n */\n public async signData(\n data: SignDataPayload,\n options?: { onRequestSent?: (redirectToWallet: () => void) => void } \n ): Promise<SignDataResponse> {\n this.tracker.trackDataSentForSignature(this.wallet, data);\n\n if (!this.connected) {\n this.tracker.trackDataSigningFailed(this.wallet, data, 'Wallet was not connected');\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n if (isInTMA()) {\n sendExpand();\n }\n\n const { notifications, modals, returnStrategy, twaReturnUrl } =\n this.getModalsAndNotificationsConfiguration();\n\n widgetController.setAction({\n name: 'confirm-sign-data',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n signed: false\n });\n\n const abortController = new AbortController();\n\n const onRequestSent = (): void => {\n if (abortController.signal.aborted) {\n return;\n }\n\n widgetController.setAction({\n name: 'confirm-sign-data',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before'),\n signed: true\n });\n\n this.redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl\n });\n\n let firstClick = true;\n const redirectToWallet = () => {\n if (abortController.signal.aborted) {\n return;\n }\n\n const forceRedirect = !firstClick;\n firstClick = false;\n\n this.redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl,\n forceRedirect,\n });\n }\n\n options?.onRequestSent?.(redirectToWallet);\n };\n\n const unsubscribe = this.onTransactionModalStateChange(action => {\n if (action?.openModal) {\n return;\n }\n\n unsubscribe();\n if (!action) {\n abortController.abort();\n }\n });\n\n try {\n const result = await this.waitForSignData(\n {\n data,\n signal: new AbortController().signal\n },\n onRequestSent\n );\n\n this.tracker.trackDataSigned(this.wallet, data, result);\n\n widgetController.setAction({\n name: 'data-signed',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n if (e instanceof WalletNotSupportFeatureError) {\n widgetController.clearAction();\n widgetController.openWalletNotSupportFeatureModal(e.cause);\n\n throw e;\n }\n\n widgetController.setAction({\n name: 'sign-data-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n } finally {\n unsubscribe();\n }\n }\n\n private redirectAfterRequestSent({\n returnStrategy,\n twaReturnUrl,\n forceRedirect, \n }: {\n returnStrategy: ReturnStrategy;\n twaReturnUrl?: `${string}://${string}`;\n forceRedirect?: boolean;\n }): void {\n if (\n this.walletInfo &&\n 'universalLink' in this.walletInfo &&\n (this.walletInfo.openMethod === 'universal-link' ||\n this.walletInfo.openMethod === 'custom-deeplink')\n ) {\n if (isTelegramUrl(this.walletInfo.universalLink)) {\n redirectToTelegram(this.walletInfo.universalLink, {\n returnStrategy,\n twaReturnUrl: twaReturnUrl || appState.twaReturnUrl,\n forceRedirect: forceRedirect || false\n });\n } else {\n redirectToWallet(\n this.walletInfo.universalLink,\n this.walletInfo.deepLink,\n {\n returnStrategy,\n forceRedirect: forceRedirect || false\n },\n () => {}\n );\n }\n }\n }\n\n /**\n * TODO: remove in the next major version.\n * Initiates a connection with an embedded wallet, awaits its completion, and returns the connected wallet information.\n * @param embeddedWallet - Information about the embedded wallet to connect to.\n * @throws Error if the connection process fails.\n * @internal\n */\n private async connectEmbeddedWallet(\n embeddedWallet: WalletInfoCurrentlyEmbedded\n ): Promise<ConnectedWallet> {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.connectRequestParametersCallback = connect;\n } else {\n connect(additionalRequest?.value);\n }\n\n return await this.waitForWalletConnection({\n ignoreErrors: false\n });\n }\n\n /**\n * TODO: remove in the next major version.\n * Initiates the connection process for an external wallet by opening the wallet modal\n * and returns the connected wallet information upon successful connection.\n * @throws Error if the user cancels the connection process or if the connection process fails.\n * @internal\n */\n private async connectExternalWallet(): Promise<ConnectedWallet> {\n const abortController = new AbortController();\n\n widgetController.openWalletsModal();\n\n const unsubscribe = this.onModalStateChange(state => {\n const { status, closeReason } = state;\n if (status === 'opened') {\n return;\n }\n\n unsubscribe();\n if (closeReason === 'action-cancelled') {\n abortController.abort();\n }\n });\n\n return await this.waitForWalletConnection({\n ignoreErrors: true,\n signal: abortController.signal\n });\n }\n\n /**\n * TODO: remove in the next major version.\n * Waits for a wallet connection based on provided options, returning connected wallet information.\n * @param options - Configuration for connection statuses and errors handling.\n * @options.ignoreErrors - If true, ignores errors during waiting, waiting continues until a valid wallet connects. Default is false.\n * @options.abortSignal - Optional AbortSignal for external cancellation. Throws TonConnectUIError if aborted.\n * @throws TonConnectUIError if waiting is aborted or no valid wallet connection is received and ignoreErrors is false.\n * @internal\n */\n private async waitForWalletConnection(\n options: WaitWalletConnectionOptions\n ): Promise<ConnectedWallet> {\n return new Promise((resolve, reject) => {\n this.tracker.trackConnectionStarted();\n const { ignoreErrors = false, signal = null } = options;\n\n if (signal && signal.aborted) {\n this.tracker.trackConnectionError('Connection was cancelled');\n return reject(new TonConnectUIError('Wallet was not connected'));\n }\n\n const onStatusChangeHandler = async (wallet: ConnectedWallet | null): Promise<void> => {\n if (!wallet) {\n this.tracker.trackConnectionError('Connection was cancelled');\n\n if (ignoreErrors) {\n // skip empty wallet status changes to avoid aborting the process\n return;\n }\n\n unsubscribe();\n reject(new TonConnectUIError('Wallet was not connected'));\n } else {\n this.tracker.trackConnectionCompleted(wallet);\n\n unsubscribe();\n resolve(wallet);\n }\n };\n\n const onErrorsHandler = (reason: TonConnectError): void => {\n this.tracker.trackConnectionError(reason.message);\n\n if (ignoreErrors) {\n // skip errors to avoid aborting the process\n return;\n }\n\n unsubscribe();\n reject(reason);\n };\n\n const unsubscribe = this.onStatusChange(\n (wallet: ConnectedWallet | null) => onStatusChangeHandler(wallet),\n (reason: TonConnectError) => onErrorsHandler(reason)\n );\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n (): void => {\n unsubscribe();\n reject(new TonConnectUIError('Wallet was not connected'));\n },\n { once: true }\n );\n }\n });\n }\n\n /**\n * Waits for a transaction to be sent based on provided options, returning the transaction response.\n * @param options - Configuration for transaction statuses and errors handling.\n * @options.transaction - Transaction to send.\n * @options.ignoreErrors - If true, ignores errors during waiting, waiting continues until a valid transaction is sent. Default is false.\n * @options.abortSignal - Optional AbortSignal for external cancellation. Throws TonConnectUIError if aborted.\n * @param onRequestSent (optional) will be called after the transaction is sent to the wallet.\n * @throws TonConnectUIError if waiting is aborted or no valid transaction response is received and ignoreErrors is false.\n * @internal\n */\n private async waitForSendTransaction(\n options: WaitSendTransactionOptions,\n onRequestSent?: () => void\n ): Promise<SendTransactionResponse> {\n return new Promise((resolve, reject) => {\n const { transaction, signal } = options;\n\n if (signal.aborted) {\n this.tracker.trackTransactionSigningFailed(\n this.wallet,\n transaction,\n 'Transaction was cancelled'\n );\n return reject(new TonConnectUIError('Transaction was not sent'));\n }\n\n const onTransactionHandler = async (\n transaction: SendTransactionResponse\n ): Promise<void> => {\n resolve(transaction);\n };\n\n const onErrorsHandler = (reason: TonConnectError): void => {\n reject(reason);\n };\n\n const onCanceledHandler = (): void => {\n this.tracker.trackTransactionSigningFailed(\n this.wallet,\n transaction,\n 'Transaction was cancelled'\n );\n reject(new TonConnectUIError('Transaction was not sent'));\n };\n\n signal.addEventListener('abort', onCanceledHandler, { once: true });\n\n this.connector\n .sendTransaction(transaction, { onRequestSent: onRequestSent, signal: signal })\n .then(result => {\n signal.removeEventListener('abort', onCanceledHandler);\n return onTransactionHandler(result);\n })\n .catch(reason => {\n signal.removeEventListener('abort', onCanceledHandler);\n return onErrorsHandler(reason);\n });\n });\n }\n\n /**\n * Waits for a transaction to be sent based on provided options, returning the transaction response.\n * @param options - Configuration for transaction statuses and errors handling.\n * @options.transaction - Transaction to send.\n * @options.ignoreErrors - If true, ignores errors during waiting, waiting continues until a valid transaction is sent. Default is false.\n * @options.abortSignal - Optional AbortSignal for external cancellation. Throws TonConnectUIError if aborted.\n * @param onRequestSent (optional) will be called after the transaction is sent to the wallet.\n * @throws TonConnectUIError if waiting is aborted or no valid transaction response is received and ignoreErrors is false.\n * @internal\n */\n private async waitForSignData(\n options: WaitSignDataOptions,\n onRequestSent?: () => void\n ): Promise<SignDataResponse> {\n return new Promise((resolve, reject) => {\n const { data, signal } = options;\n\n if (signal.aborted) {\n this.tracker.trackDataSigningFailed(this.wallet, data, 'SignData was cancelled');\n return reject(new TonConnectUIError('SignData was not sent'));\n }\n\n const onSignHandler = async (data: SignDataResponse): Promise<void> => {\n resolve(data);\n };\n\n const onErrorsHandler = (reason: TonConnectError): void => {\n reject(reason);\n };\n\n const onCanceledHandler = (): void => {\n this.tracker.trackDataSigningFailed(this.wallet, data, 'SignData was cancelled');\n reject(new TonConnectUIError('SignData was not sent'));\n };\n\n signal.addEventListener('abort', onCanceledHandler, { once: true });\n\n this.connector\n .signData(data, { onRequestSent: onRequestSent, signal: signal })\n .then(result => {\n // signal.removeEventListener('abort', onCanceledHandler);\n return onSignHandler(result);\n })\n .catch(reason => {\n // signal.removeEventListener('abort', onCanceledHandler);\n return onErrorsHandler(reason);\n });\n });\n }\n\n /**\n * Subscribe to the transaction modal window state changes, returns a function which has to be called to unsubscribe.\n * @internal\n */\n private onTransactionModalStateChange(onChange: (action: Action | null) => void): () => void {\n return this.transactionModal.onStateChange(onChange);\n }\n\n private subscribeToWalletChange(): void {\n // TODO: possible memory leak here, check it\n this.connector.onStatusChange(async wallet => {\n if (wallet) {\n await this.updateWalletInfo(wallet);\n this.setPreferredWalletAppName(this.walletInfo?.appName || wallet.device.appName);\n } else {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n private setPreferredWalletAppName(value: string): void {\n this.preferredWalletStorage.setPreferredWalletAppName(value);\n setAppState({ preferredWalletAppName: value });\n }\n\n private async getSelectedWalletInfo(wallet: Wallet): Promise<WalletInfoWithOpenMethod | null> {\n let lastSelectedWalletInfo = widgetController.getSelectedWalletInfo();\n\n if (!lastSelectedWalletInfo) {\n return null;\n }\n\n let fullLastSelectedWalletInfo: WalletInfoWithOpenMethod;\n if (!('name' in lastSelectedWalletInfo)) {\n const walletsList = applyWalletsListConfiguration(\n await this.walletsList,\n appState.walletsListConfiguration\n );\n const walletInfo = walletsList.find(item => eqWalletName(item, wallet.device.appName));\n\n if (!walletInfo) {\n throw new TonConnectUIError(\n `Cannot find WalletInfo for the '${wallet.device.appName}' wallet`\n );\n }\n\n fullLastSelectedWalletInfo = {\n ...walletInfo,\n ...lastSelectedWalletInfo\n };\n } else {\n fullLastSelectedWalletInfo = lastSelectedWalletInfo;\n }\n\n return fullLastSelectedWalletInfo;\n }\n\n private async updateWalletInfo(wallet: Wallet): Promise<void> {\n const selectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n if (selectedWalletInfo) {\n this.walletInfo = selectedWalletInfo;\n this.walletInfoStorage.setWalletInfo(selectedWalletInfo);\n return;\n }\n\n const storedWalletInfo = this.walletInfoStorage.getWalletInfo();\n if (storedWalletInfo) {\n this.walletInfo = storedWalletInfo;\n return;\n }\n\n this.walletInfo =\n (await this.walletsList).find(walletInfo =>\n eqWalletName(walletInfo, wallet.device.appName)\n ) || null;\n }\n\n private normalizeWidgetRoot(rootId: string | undefined): string {\n if (!rootId || !document.getElementById(rootId)) {\n rootId = 'tc-widget-root';\n const rootElement = document.createElement('div');\n rootElement.id = rootId;\n document.body.appendChild(rootElement);\n }\n\n return rootId;\n }\n\n private checkButtonRootExist(buttonRootId: string | null | undefined): void | never {\n if (buttonRootId == null) {\n return;\n }\n\n if (!document.getElementById(buttonRootId)) {\n throw new TonConnectUIError(`${buttonRootId} element not found in the document.`);\n }\n }\n\n private getModalsAndNotificationsConfiguration(\n options?: ActionConfiguration\n ): StrictActionConfiguration {\n const allActions: StrictActionConfiguration['notifications'] = [\n 'before',\n 'success',\n 'error'\n ];\n\n let notifications: StrictActionConfiguration['notifications'] = allActions;\n if (\n this.actionsConfiguration?.notifications &&\n this.actionsConfiguration?.notifications !== 'all'\n ) {\n notifications = this.actionsConfiguration.notifications;\n }\n\n if (options?.notifications) {\n if (options.notifications === 'all') {\n notifications = allActions;\n } else {\n notifications = options.notifications;\n }\n }\n\n let modals: StrictActionConfiguration['modals'] = ['before'];\n if (this.actionsConfiguration?.modals) {\n if (this.actionsConfiguration.modals === 'all') {\n modals = allActions;\n } else {\n modals = this.actionsConfiguration.modals;\n }\n }\n if (options?.modals) {\n if (options.modals === 'all') {\n modals = allActions;\n } else {\n modals = options.modals;\n }\n }\n\n const returnStrategy =\n options?.returnStrategy || this.actionsConfiguration?.returnStrategy || 'back';\n\n const twaReturnUrl = options?.twaReturnUrl || this.actionsConfiguration?.twaReturnUrl;\n\n let skipRedirectToWallet =\n options?.skipRedirectToWallet ||\n this.actionsConfiguration?.skipRedirectToWallet ||\n 'ios';\n\n // TODO: refactor this check after testing\n if (isInTMA()) {\n skipRedirectToWallet = 'never';\n }\n\n return {\n notifications,\n modals,\n returnStrategy,\n twaReturnUrl,\n skipRedirectToWallet\n };\n }\n}\n\ntype WaitWalletConnectionOptions = {\n ignoreErrors?: boolean;\n signal?: AbortSignal | null;\n};\n\ntype WaitSendTransactionOptions = {\n transaction: SendTransactionRequest;\n signal: AbortSignal;\n};\n\ntype WaitSignDataOptions = {\n data: SignDataPayload;\n signal: AbortSignal;\n};\n"],"names":["a","Transition","s","value","c","p","error","lookup","e","i","children","o","n","t","dispose","template","document","l","h","unwrap","THEME","u","r","className","css","GlobalStyles","globalStylesTag","disableScrollClass","usingMouseClass","body","addEventListener","classList","add","event","key","remove","Styles","createGlobalStyles","_$createComponent","_a","getWindow","_b","_c","Image","props","imgRef","image","setImage","createSignal","createEffect","img","window","src","alt","setAttribute","class","complete","removeEventListener","borders","ButtonStyled","Button","dataAttrs","useDataAttributes","_$mergeProps","appearance","onClick","onMouseEnter","onMouseLeave","ref","disabled","scale","leftIcon","rightIcon","_$memo","el","clickOutside","accessor","contains","target","onCleanup","escPressed","_","onKeyPress","activeElement","blur","androidBackHandler","config","isEnabled","onClose","userOSIsAndroid","getUserAgent","os","history","pushState","ROUTE_STATE","popstateHandler","preventDefault","once","createMacrotask","state","ROUTE_STATE_KEY","back","rotationDegrees","left","top","right","bottom","ArrowIcon","theme","useTheme","fill","colors","icon","secondary","direction","Svg","styled","svgDirection","_tmpl$","_$effect","_$setAttribute","CloseIcon","IconButton","clickOutsideDirective","keyPressed","keyPressedDirective","androidBackHandlerDirective","Modal","opened","disableScroll","enableScroll","duration","isDevice","animate","opacity","firstElementChild","transform","done","backgroundAnimation","contentAnimation","Promise","all","finished","then","_$use","enableAndroidBackHandler","_$insert","onClickQuestion","showFooter","_$className","cn","ModalWrapperClass","borderRadius","background","tint","media","TabBar","groupName","Math","floor","random","selectedTabIndex","onSelectedTabIndexChange","tab1","tab2","QrCodeWrapper","ImageStyled","qrcode","typeNumber","errorCorrectionLevel","min","max","unicodeMap","shift","_num","num","_this","data","QRCode","qrCodeCanvasRef","qrCodeWrapperRef","imageRef","copyButtonOpened","setCopyButtonOpened","picSize","setPicSize","picSizeDefault","cellSize","qr","addData","sourceUrl","make","innerHTML","createSvgTag","qrSize","clientWidth","round","qrNormalSize","imgSize","ceil","imgSizeDefault","imgOffset","toPx","style","height","width","timeoutId","onCopyClick","copyToClipboard","clearTimeout","setTimeout","imageUrl","easing","disableCopy","TextStyled","Text","inputs","useI18n","textRef","color","text","primary","mergeProps","fontSize","fontWeight","lineHeight","cursor","getComputedStyle","translationKey","translationValues","toString","ImageContainer","div","WalletImage","badge","WalletItem","ctxRef","adjustLetterSpacing","name","querySelector","scrollWidth","spacing","minSpacing","step","letterSpacing","onMount","badgeUrl","secondLine","secondLineColorPrimary","H1Styled","H1","H2Styled","H2","H3Styled","H3","TonIcon","SuccessIcon","size","success","constant","white","_tmpl$2","_tmpl$3","ErrorIcon","LoaderIcon","tertiary","rotateAnimation","keyframes","svgClass","TonConnectBrand","DARK","black","QuestionIcon","BrowserIcon","MobileIcon","DesktopIcon","RetryIcon","accent","LinkIcon","WalletIcon","SecurityIcon","PersonalityIcon","SwapIcon","AtWalletIcon","CopyLightIcon","QRIcon","FourWalletsItem","labelLine1","labelLine2","index","images","WalletLabeledItem","walletsSecondLine","wallet","appName","AT_WALLET_APP_NAME","undefined","isPreferred","isWalletInfoCurrentlyInjected","IMG","TG","ScrollContainer","scrolled","setScrolled","onScroll","scrollTop","offset","isMobile","maxHeight","windowHeight","Link","attributes","blank","rel","href","CopyIcon","DisconnectIcon","hoverBorders","MenuItemText","AccountButtonDropdown","tonConnectUi","useContext","TonConnectUiContext","isCopiedShown","setIsCopiedShown","onCopy","userFriendlyAddress","toUserFriendlyAddress","account","address","chain","CHAIN","TESTNET","onDisconnect","disconnect","Notification","header","LoaderIconStyled","ConfirmOperationNotification","tonConnectUI","ErrorIconStyled","ErrorTransactionNotification","SuccessTransactionNotification","action","openedNotifications","timeoutIds","ErrorSignDataNotification","SuccessSignDataNotification","Notifications","useOpenedNotifications","openedNotification","NotificationClass","LoaderButtonStyled","computePosition","platform","min$1","max$1","side","placement","overflow","x","y","win","g","f","R","E","AccountButton","connector","ConnectorContext","isOpened","setIsOpened","setAccount","restoringProcess","setRestoringProcess","dropDownRef","floating","setFloating","anchor","setAnchor","position","useFloating","whileElementsMounted","autoUpdate","middleware","flip","normalizedAddress","acc","slice","connectionRestored","unsubscribe","onStatusChange","clickToButton","clickToDropdown","openModal","connectButton","foreground","v","_$untrack","_$getOwner","strategy","StyledIconButton","ExclamationIcon","AllWalletsListModal","errorSupportOpened","setErrorSupportOpened","onErrorClick","handleSelectWallet","isSupportRequiredFeatures","featureCheckMode","onSelect","walletsList","filter","supportsMobile","supportedWallets","unsupportedWallets","onBack","length","BodyStyled","QRCodeStyled","ButtonsContainerStyled","FooterButton","LoaderStyled","BodyTextStyled","Translation","DesktopConnectionModal","mode","setMode","connectionErrored","setConnectionErrored","defaultError","universalLink","setUniversalLink","firstClick","setFirstClick","WalletMissingRequiredFeaturesError","generateUniversalLink","connect","bridgeUrl","additionalRequest","untrack","supportsDesktop","onClickMobile","setLastSelectedWalletInfo","openMethod","onClickDesktop","isTelegramUrl","onClickTelegram","forceRedirect","redirectToWallet","deepLink","returnStrategy","appState","method","redirectToTelegram","twaReturnUrl","onClickExtension","jsBridgeKey","supportsExtension","backDisabled","onBackClick","aboutUrl","addReturnStrategy","InfoModal","InfoBlockIconClass","LINKS","GET_A_WALLET","actionButtonBorderRadius","ButtonsWrapper","ActionButton","MobileConnectionQR","walletInfo","onOpenLink","MobileConnectionModal","showQR","setShowQR","createMemo","alwaysForceRedirect","onRetry","currentUniversalLink","onOpenQR","onCloseQR","MobileUniversalQR","TON","MobileUniversalModal","w","shouldShowMoreButton","walletsBridges","getUniqueBridges","equals","bridgesIsEqual","atWalletSupportFeatures","find","getUniversalLink","onSelectUniversal","onSelectTelegram","atWallet","isWalletInfoRemote","TonConnectUIError","walletLink","visibleWallets","fourWalletsItem","map","onSelectAllWallets","DesktopUniversalModal","popupOpened","setPopupOpened","request","RestoreInfoModal","DesktopFeatureNotSupportModal","selectedWallet","setSelectedWallet","infoModalOpen","setInfoModalOpen","currentWalletUI","currentWallet","device","currentWalletName","currentWalletVersionNotSupported","currentWalletUIVar","features","requiredFeature","walletsModalState","requiredFeatures","featureName","validInList","checkRequiredWalletFeatures","validCurrentWallet","handleDisconnect","WalletsModal","locale","language","getWalletsModalIsOpened","updateIsMobile","setSelectedWalletInfo","setSelectedTab","setInfoTab","fetchedWalletsList","createResource","getWallets","selectedWalletInfo","selectedWalletError","setSelectedWalletError","selectedTab","infoTab","walletsModalIsWalletNotSupportFeature","type","applyWalletsListConfiguration","walletsListConfiguration","injectedWallets","notInjectedWallets","concat","preferredWalletAppName","preferredWallet","item","eqWalletName","someWalletsWithSameName","walletsFeaturesRequested","walletsRequiredFeatures","walletsPreferredFeatures","uiWallets","additionalRequestLoading","connectRequestParameters","closeReason","closeModal","err","errorAppName","cause","connectEvent","toLowerCase","TonConnectError","walletErrorType","onSelectWallet","widgetController","openWalletsModal","clearSelectedWalletInfo","ActionModal","sent","setSent","signed","setSigned","canceled","setCanceled","currentAction","isInTMA","onOpenWallet","headerTranslationKey","headerTranslationValues","textTranslationKey","textTranslationValues","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ConfirmSignDataModal","SignDataCanceledModal","DataSignedModal","ActionsModal","setAction","SingleWalletModal","getSingleWalletModalIsOpened","closeSingleWalletModal","getSingleWalletModalWalletInfo","App","translations","createI18nContext","i18nDictionary","defineStylesRoot","fixMobileSafariActiveTransition","themeState","buttonRootId","getElementById","setWalletsModalState","status","closeWalletsModal","reason","openSingleWalletModal","setSingleWalletModalState","openWalletNotSupportFeatureModal","clearAction","getSelectedWalletInfo","lastSelectedWalletInfo","removeSelectedWalletInfo","renderApp","root","render","_d","_e","notifications","transaction","_f"],"mappings":"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"}
|