@orderly.network/react-app 3.0.0-beta.0 → 3.0.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/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useBootstrap.ts","../src/hooks/getOrderExecutionReportMsg.ts","../src/hooks/useExecutionReport.tsx","../src/hooks/useUILocale.ts","../src/provider/appConfigContext.tsx","../src/provider/appConfigProvider.tsx","../src/hooks/useAssetconvertEvent.ts","../src/hooks/useCurrentChainId.ts","../src/hooks/useLinkDevice.ts","../src/hooks/useSettleEvent.ts","../src/hooks/useWalletConnectError.ts","../src/hooks/useWalletEvent.ts","../src/hooks/useWalletStateHandle.ts","../src/provider/appStateContext.tsx","../src/provider/appStateProvider.tsx","../src/provider/orderlyAppProvider.tsx","../src/hooks/useDataTap.ts","../src/common/useOrderEntryFormErrorMsg.ts","../src/hooks/useCanTrade.ts"],"names":["useEffect","i18n","capitalizeString","transSymbolformString","AlgoOrderRootType","parseNumber","OrderStatus","useEventEmitter","useSymbolsInfo","useRef","useOrderlyContext","useLocalStorage","useAudioPlayer","useDebouncedCallback","data","toast","jsx","useTranslation","useLocaleCode","useMemo","LocaleEnum","enUS","zhCN","createContext","useContext","useWS","getTimestamp","useStorageChain","useState","useChains","useConfig","useWalletConnector","useAccount","useScreen","parseJSON","useSettleSubscription","useStorageLedgerAddress","modal","useSessionStorage","useWalletSubscription","WALLET_KEY","SDKError","useKeyStore","useTrack","namespace","parseChainIdToNumber","AccountStatusEnum","ABSTRACT_CHAIN_ID_MAP","windowGuard","ChainNamespace","praseChainIdToNumber","TrackerEventName","useTrackingInstance","useRestrictedInfo","OrderlyThemeProvider","jsxs","OrderlyConfigProvider","OrderlyPluginProvider","UILocaleProvider","TooltipProvider","ModalProvider","Toaster","ERROR_MSG_CODES","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["import { useEffect } from \"react\";\n\nexport const useBootstrap = () => {\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API, OrderStatus, OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { parseNumber } from \"@orderly.network/ui\";\nimport {\n capitalizeString,\n transSymbolformString,\n} from \"@orderly.network/utils\";\n\nfunction getDisplaySide(side: string) {\n if (side === \"BUY\") {\n return i18n.t(\"common.buy\");\n } else if (side === \"SELL\") {\n return i18n.t(\"common.sell\");\n }\n return capitalizeString(side);\n}\n\ntype AlgoOrderFieldChanges = Partial<\n Record<OrderType, Partial<Record<keyof API.AlgoOrder, boolean>>>\n>;\n\nexport function getOrderExecutionReportMsg(\n data: (API.AlgoOrder | API.Order) & {\n fieldChanges?: AlgoOrderFieldChanges;\n },\n symbolsInfo: any,\n) {\n const { symbol, side, quantity, client_order_id, fieldChanges } = data;\n const total_executed_quantity =\n \"total_executed_quantity\" in data ? data.total_executed_quantity : 0;\n const status = \"status\" in data ? data.status : data.algo_status;\n const getSymbolInfo = symbolsInfo[symbol];\n const base_dp = getSymbolInfo(\"base_dp\");\n const quote_dp = getSymbolInfo(\"quote_dp\");\n const displaySide = getDisplaySide(side);\n const displaySymbol = transSymbolformString(symbol);\n const displayQuantity =\n \"algo_type\" in data && data.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n ? i18n.t(\"tpsl.entirePosition\")\n : base_dp === undefined\n ? quantity\n : parseNumber(quantity, { dp: base_dp });\n\n let title = \"\";\n let msg = \"\";\n switch (status) {\n case OrderStatus.NEW:\n const isScaledOrder = client_order_id?.startsWith(\"scaled_\");\n // if client_order_id is scaled order, show the scaled order message\n if (isScaledOrder) {\n title = i18n.t(\"orders.status.scaledSubOrderOpened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n } else {\n title = i18n.t(\"orders.status.opened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n }\n\n break;\n case OrderStatus.FILLED:\n case OrderStatus.PARTIAL_FILLED:\n const displayTotalExecutedQuantity =\n base_dp === undefined\n ? total_executed_quantity\n : parseNumber(total_executed_quantity, { dp: base_dp });\n title = i18n.t(\"orders.status.filled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayTotalExecutedQuantity} / ${displayQuantity}`;\n break;\n case OrderStatus.CANCELLED:\n title = i18n.t(\"orders.status.canceled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REJECTED:\n title = i18n.t(\"orders.status.rejected.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REPLACED:\n const { algo_type, activated_price } = data as API.AlgoOrder;\n if (algo_type === AlgoOrderRootType.TRAILING_STOP) {\n const fieldChange =\n fieldChanges?.[AlgoOrderRootType.TRAILING_STOP] || {};\n // when trailing stop order is activated, and extreme_price will also changed\n if (\n fieldChange.is_activated &&\n fieldChange.extreme_price &&\n activated_price\n ) {\n title = i18n.t(\"orders.trailingStop.activated\");\n msg = `${displaySymbol} @${activated_price}`;\n } else if (fieldChange.extreme_price) {\n // if extreme_price is changed, skip show the message\n title = \"\";\n msg = \"\";\n }\n } else {\n title = i18n.t(\"orders.status.replaced.toast.title\");\n msg = `${side} ${displaySymbol} ${total_executed_quantity} / ${displayQuantity}`;\n }\n\n break;\n default:\n break;\n }\n\n return {\n title,\n msg,\n status,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from \"react\";\nimport {\n useSymbolsInfo,\n useEventEmitter,\n useDebouncedCallback,\n useAudioPlayer,\n useLocalStorage,\n useOrderlyContext,\n} from \"@orderly.network/hooks\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getOrderExecutionReportMsg } from \"./getOrderExecutionReportMsg\";\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nexport const ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nexport const useExecutionReport = () => {\n const ee = useEventEmitter();\n\n const symbolsInfo = useSymbolsInfo();\n const symbolsInfoRef = useRef({});\n\n const { notification } = useOrderlyContext();\n\n useEffect(() => {\n symbolsInfoRef.current = symbolsInfo;\n }, [symbolsInfo]);\n\n const orderFilledConfig = notification?.orderFilled;\n const soundOptions = orderFilledConfig?.soundOptions;\n\n const defaultSoundValue =\n orderFilledConfig?.defaultSoundValue ?? soundOptions?.[0]?.value;\n\n const [selectedSoundValue] = useLocalStorage<string | null>(\n ORDERLY_ORDER_SOUND_OPTION_KEY,\n defaultSoundValue ?? null,\n );\n\n const selectedOption =\n soundOptions?.find((option) => option.value === selectedSoundValue) ??\n soundOptions?.[0];\n\n const src =\n (soundOptions && soundOptions.length ? selectedOption?.media : undefined) ??\n orderFilledConfig?.media ??\n \"\";\n\n const [soundAutoPlay] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n orderFilledConfig?.defaultOpen ?? false,\n );\n\n const { play: playOrderFilledSound } = useAudioPlayer(src, {\n enabled: soundAutoPlay,\n volume: 1,\n });\n\n const handler = useDebouncedCallback((data: any) => {\n const showToast = (data: any) => {\n const { title, msg, status } = getOrderExecutionReportMsg(\n data,\n symbolsInfoRef.current,\n );\n const isFilled =\n status === OrderStatus.FILLED || status === OrderStatus.PARTIAL_FILLED;\n if (isFilled) {\n playOrderFilledSound();\n }\n // only show latest msg for same order type\n const orderType = data.algo_type || data.type;\n if (title && msg) {\n toast.success(\n <div>\n {title}\n <br />\n <div className=\"orderly-text-white/[0.54] orderly-text-xs\">\n {msg}\n </div>\n </div>,\n { id: orderType },\n );\n }\n };\n showToast(data);\n }, 100);\n\n useEffect(() => {\n ee.on(\"orders:changed\", handler);\n return () => {\n ee.off(\"orders:changed\", handler);\n handler.cancel();\n };\n }, [ee, handler]);\n};\n","import { useMemo } from \"react\";\nimport {\n useTranslation,\n useLocaleCode,\n LocaleEnum,\n} from \"@orderly.network/i18n\";\nimport { Locale } from \"@orderly.network/ui\";\nimport { enUS, zhCN, ja, es, ko, vi, de, fr, nl } from \"date-fns/locale\";\n\nexport function useUILocale() {\n const { t } = useTranslation();\n const localeCode = useLocaleCode();\n\n return useMemo<Locale>(() => {\n const calendarLocale = {\n [LocaleEnum.en]: enUS,\n [LocaleEnum.zh]: zhCN,\n // [LocaleEnum.ja]: ja,\n // [LocaleEnum.es]: es,\n // [LocaleEnum.ko]: ko,\n // [LocaleEnum.vi]: vi,\n // [LocaleEnum.de]: de,\n // [LocaleEnum.fr]: fr,\n // [LocaleEnum.nl]: nl,\n };\n return {\n locale: localeCode,\n dialog: {\n ok: t(\"common.ok\"),\n cancel: t(\"common.cancel\"),\n },\n modal: {\n confirm: t(\"common.confirm\"),\n cancel: t(\"common.cancel\"),\n },\n pagination: {\n morePages: t(\"ui.pagination.morePages\"),\n rowsPerPage: t(\"ui.pagination.rowsPerPage\"),\n },\n picker: {\n selectDate: t(\"ui.picker.selectDate\"),\n dayPicker: calendarLocale[localeCode as keyof typeof calendarLocale],\n },\n empty: {\n description: t(\"ui.empty.description\"),\n },\n } as const;\n }, [t, localeCode]);\n}\n","import { createContext, useContext } from \"react\";\nimport { AppLogos } from \"../types\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigContext = createContext({} as ThemeContextState);\n\nexport const useAppConfig = () => {\n return useContext(AppConfigContext);\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { AppLogos } from \"../types\";\nimport { AppConfigContext } from \"./appConfigContext\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigProvider: FC<\n PropsWithChildren<{ appIcons?: AppLogos; brokerName: string }>\n> = (props) => {\n return (\n <AppConfigContext.Provider value={props}>\n {props.children}\n </AppConfigContext.Provider>\n );\n};\n","import { useEffect } from \"react\";\nimport { useWS } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useAssetconvertEvent = () => {\n const ws = useWS();\n const { t } = useTranslation();\n useEffect(() => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"assetconvert\",\n event: \"subscribe\",\n topic: \"assetconvert\",\n ts: getTimestamp(),\n },\n {\n onMessage(data) {\n if (data.convertId) {\n toast.success(t(\"transfer.convert.completed\"));\n }\n },\n },\n );\n return () => unsubscribe();\n }, []);\n};\n","import { useEffect, useState } from \"react\";\nimport {\n Chains,\n useChains,\n useConfig,\n useStorageChain,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { Chain, NetworkId } from \"@orderly.network/types\";\ntype ReturnChain = Pick<Chain, \"id\"> & Partial<Omit<Chain, \"id\">>;\n\nexport type DefaultChain =\n | {\n mainnet?: ReturnChain;\n testnet?: ReturnChain;\n }\n | ((networkId: NetworkId, chains: Chains) => ReturnChain)\n | undefined;\n\nexport function useCurrentChainId(defaultChain?: DefaultChain) {\n const { storageChain, setStorageChain } = useStorageChain();\n const [currentChainId, setCurrentChainId] = useState<number | undefined>();\n\n const [chains] = useChains();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { connectedChain } = useWalletConnector();\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId?.(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n let fallbackChain: Partial<Chain> | undefined;\n\n const firstChain =\n networkId === \"mainnet\" ? chains.mainnet?.[0] : chains.testnet?.[0];\n\n if (typeof defaultChain === \"function\") {\n fallbackChain = defaultChain(networkId, chains);\n } else if (typeof defaultChain === \"object\") {\n fallbackChain =\n networkId === \"mainnet\"\n ? defaultChain?.mainnet\n : defaultChain?.testnet;\n }\n\n const chainId = fallbackChain?.id || firstChain?.network_infos?.chain_id;\n if (!chainId) return;\n\n if (storageChain) {\n setCurrentChainId?.(storageChain.chainId);\n } else {\n setStorageChain(chainId);\n setCurrentChainId?.(chainId);\n \n }\n }\n }, [\n connectedChain,\n chains,\n currentChainId,\n networkId,\n setCurrentChainId,\n defaultChain,\n ]);\n\n return [currentChainId, setCurrentChainId] as const;\n}\n","import { useCallback, useEffect } from \"react\";\nimport {\n parseJSON,\n useAccount,\n useConfig,\n useLocalStorage,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\n\ntype DecodedData = {\n /** secret key */\n k: string;\n /* timestamp */\n t: number;\n /** address */\n a: string;\n /** chain id */\n i: number;\n /** chain namespace */\n n: ChainNamespace;\n};\n\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport function useLinkDevice() {\n const { connectedChain, disconnect } = useWalletConnector();\n const [_, setLinkDeviceStorage] = useLocalStorage(\n \"orderly_link_device\",\n {} as LinkDeviceStorage,\n );\n\n const { account } = useAccount();\n const { isMobile } = useScreen();\n const configStore = useConfig();\n\n const onDisconnect = async (label: string) => {\n // The cache must be cleared first, otherwise it will be auto connect wallet\n localStorage.removeItem(WALLET_KEY);\n await account.disconnect();\n await disconnect({ label });\n };\n\n useEffect(() => {\n const linkData = getLinkDeviceData();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n if (linkData && walletInfo) {\n // clear connect data when link device\n onDisconnect(walletInfo.label);\n }\n }, []);\n\n const linkDevice = async () => {\n const linkData = getLinkDeviceData();\n if (!linkData) return;\n\n const { address, secretKey, chainId, chainNamespace } = linkData;\n const isSuccess = await account.importOrderlyKey({\n address,\n secretKey,\n chainNamespace,\n });\n if (!isSuccess) return;\n setLinkDeviceStorage({\n chainId,\n chainNamespace,\n });\n\n const url = new URL(window.location.href);\n url.searchParams.delete(\"link\");\n // use set instead of append, because the param possibly in the url\n url.searchParams.set(\"utm_medium\", \"qrcode\");\n const decodedUrl = decodeURIComponent(url.toString());\n history.replaceState(null, \"\", decodedUrl);\n };\n\n useEffect(() => {\n if (isMobile && !connectedChain) {\n linkDevice();\n }\n }, [account, connectedChain, isMobile]);\n\n const autoLinkDevice = async () => {\n // this can't use the value returned by useLocalStorage here, because it will trigger extra state change\n const { chainId, chainNamespace } = getLinkDeviceStorage() || {};\n if (isMobile && !connectedChain && chainId && chainNamespace) {\n const address = account.keyStore.getAddress();\n const orderlyKey = account.keyStore.getOrderlyKey();\n const accountId = account.keyStore.getAccountId(address!);\n const res = await account.checkOrderlyKey(\n address!,\n orderlyKey!,\n accountId!,\n );\n if (res) {\n configStore.set(\"chainNamespace\", chainNamespace);\n }\n }\n };\n\n // persist status when refresh page\n useEffect(() => {\n autoLinkDevice();\n }, [account, isMobile, connectedChain]);\n\n return { linkDevice };\n}\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n\nexport function getLinkDeviceData() {\n const url = new URL(window.location.href);\n const link = url.searchParams.get(\"link\");\n\n if (!link) return;\n\n const {\n a: address,\n k: secretKey,\n i: chainId,\n n: chainNamespace,\n } = decodeBase64(link) || {};\n\n if (address && secretKey && chainId && chainNamespace) {\n return {\n address,\n secretKey,\n chainId,\n chainNamespace,\n };\n }\n}\n\nfunction decodeBase64(base64: string) {\n try {\n const data = JSON.parse(window.atob(base64)) as DecodedData;\n console.log(\"decodeBase64\", data);\n const currentTime = Math.floor(Date.now() / 1000);\n const expiredTime = data.t;\n\n if (!expiredTime || currentTime > expiredTime) {\n console.error(\"Orderly key has expired.\");\n return;\n }\n\n return data;\n } catch (error) {\n console.error(\"Invalid or expired orderly key.\");\n }\n}\n","import { useSettleSubscription } from \"@orderly.network/hooks\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport function useSettleEvent() {\n const { t } = useTranslation();\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n // console.log(\"settle ws: \", data);\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(t(\"settle.settlement.completed\"));\n break;\n case \"FAILED\":\n toast.error(t(\"settle.settlement.failed\"));\n break;\n default:\n break;\n }\n },\n });\n}\n","import { useEffect } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useStorageLedgerAddress } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { LedgerWalletKey } from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\n\nexport function useWalletConnectError() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n const { setLedgerAddress } = useStorageLedgerAddress();\n\n useEffect(() => {\n const handleConnectError = (data: { message: string }) => {\n toast.error(data.message);\n };\n\n const handleLedgerError = (data: {\n userAddress: string;\n message: string;\n }) => {\n window.setTimeout(() => {\n modal\n .confirm({\n title: t(\"connector.ledger.signMessageFailed\"),\n content: t(\"connector.ledger.signMessageFailed.description\"),\n size: \"sm\",\n onOk: async () => {\n console.log(\"-- use ledger\", true);\n setLedgerAddress(data.userAddress);\n\n return Promise.resolve();\n },\n okLabel: t(\"common.ok\"),\n onCancel: async () => {\n toast.error(data.message);\n return Promise.resolve();\n },\n cancelLabel: t(\"common.no\"),\n })\n .then((res) => {\n console.log(\"-- dialog res\", res);\n });\n });\n };\n\n ee.on(\"wallet:connect-error\", handleConnectError);\n ee.on(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n\n return () => {\n ee.off(\"wallet:connect-error\", handleConnectError);\n ee.off(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n };\n }, [ee, t]);\n\n return {};\n}\n","import { useRef } from \"react\";\nimport {\n useEventEmitter,\n useSessionStorage,\n useWalletSubscription,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\n\nexport function useWalletEvent() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n\n const recordRef = useRef<Record<number, boolean>>({});\n\n const [record, setRecord] = useSessionStorage(\n \"orderly_wallet_change_id\",\n {} as Record<number, boolean>,\n );\n\n recordRef.current = record;\n\n useWalletSubscription({\n onMessage: (data: any) => {\n console.log(\"wallet:changed\", data);\n const { id, side, transStatus } = data;\n let showToast = true;\n\n // DEPOSIT and WITHDRAW will push twice COMPLETED and FAILED event\n if (\n [\"DEPOSIT\", \"WITHDRAW\"].includes(side) &&\n [\"COMPLETED\", \"FAILED\"].includes(transStatus)\n ) {\n const isPushed = !!recordRef.current[id];\n if (!isPushed) {\n recordRef.current[id] = true;\n setRecord((prev: Record<number, boolean>) => ({\n ...prev,\n [id]: true,\n }));\n }\n showToast = !isPushed;\n }\n\n if (transStatus === \"COMPLETED\" && showToast) {\n let msg = `${capitalizeString(side)} completed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.completed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.completed\");\n }\n\n toast.success(msg);\n } else if (transStatus === \"FAILED\" && showToast) {\n let msg = `${capitalizeString(side)} failed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.failed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.failed\");\n }\n toast.error(msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useConfig,\n useEventEmitter,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport {\n useAccount,\n useChains,\n useKeyStore,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n SDKError,\n ChainNamespace,\n NetworkId,\n TrackerEventName,\n ABSTRACT_CHAIN_ID_MAP,\n} from \"@orderly.network/types\";\nimport {\n parseChainIdToNumber,\n praseChainIdToNumber,\n windowGuard,\n} from \"@orderly.network/utils\";\nimport { getLinkDeviceData } from \"./useLinkDevice\";\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport const useWalletStateHandle = (options: {\n // onChainChanged?: (chainId: number, isTestnet: boolean) => void;\n currentChainId?: number;\n}) => {\n const {\n wallet: connectedWallet,\n connect,\n connectedChain,\n disconnect,\n namespace,\n } = useWalletConnector();\n //\n // console.log(\"🔗 wallet state handle\", {\n // connectedWallet,\n // connectedChain,\n // namespace,\n // });\n\n if (typeof connect !== \"function\") {\n throw new SDKError(\"Please provide a wallet connector provider\");\n }\n\n const ee = useEventEmitter();\n const isManualConnect = useRef<boolean>(false);\n const brokerId = useConfig(\"brokerId\");\n const { account, state: accountState } = useAccount();\n const keyStore = useKeyStore();\n const networkId = useConfig(\"networkId\") as NetworkId;\n const [chains, { checkChainSupport }] = useChains();\n const { storageChain, setStorageChain } = useStorageChain();\n\n const [unsupported, setUnsupported] = useState(false);\n const { track, setTrackUserId } = useTrack();\n\n // current connected wallet address\n const currentWalletAddress = useMemo<string | undefined>(() => {\n return connectedWallet?.accounts?.[0]?.address;\n }, [connectedWallet]);\n\n // current connected chain id\n const currentChain = useMemo<\n { id: number; namespace: string } | undefined\n >(() => {\n const id = connectedWallet?.chains?.[0]?.id;\n const namespace = connectedWallet?.chains?.[0]?.namespace as string;\n if (typeof id === \"undefined\") return undefined;\n return {\n id: parseChainIdToNumber(id),\n namespace,\n };\n }, [connectedWallet]);\n\n useEffect(() => {\n if (\n accountState.status >= AccountStatusEnum.EnableTrading &&\n account.accountId\n ) {\n setTrackUserId(account.accountId!);\n }\n }, [account, accountState]);\n\n useEffect(() => {\n if (!connectedChain) {\n setUnsupported(false);\n return;\n }\n\n let isSupported = checkChainSupport(\n connectedChain.id,\n networkId,\n // networkId === \"testnet\" ? chains.testnet : chains.mainnet\n );\n if (\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain.id as string)) &&\n connectedWallet?.label !== \"AGW\"\n ) {\n isSupported = false;\n }\n\n setUnsupported(!isSupported);\n }, [connectedChain, chains, checkChainSupport, networkId, connectedWallet]);\n\n useEffect(() => {\n // if (unsupported) return;\n\n windowGuard(() => {\n const localAddress = keyStore.getAddress();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n\n /**\n * if locale address is exist, restore account state\n */\n if (connectedChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (\n localAddress &&\n account.address !== localAddress &&\n walletInfo.label\n ) {\n connect({\n autoSelect: {\n label: walletInfo.label,\n disableModals: true,\n },\n }).then(\n (res) => {\n console.log(\"silent connect wallet successes\", res);\n },\n (error) => console.log(\"connect error\", error),\n );\n }\n });\n }, [connectedWallet, account.address, storageChain?.namespace]);\n\n /**\n * handle wallet connection\n */\n useEffect(() => {\n if (\n connectedWallet === null &&\n accountState.status > AccountStatusEnum.NotConnected &&\n !accountState.validating\n ) {\n account.disconnect();\n return;\n }\n\n if (unsupported || !connectedChain) return;\n if (isManualConnect.current) return;\n\n const linkData = getLinkDeviceData();\n\n // updateAccount(currentWalletAddress!, connectedWallet!, currentChainId!);\n /**\n * switch account\n */\n if (\n !!currentWalletAddress &&\n currentWalletAddress !== account.address &&\n !linkData\n ) {\n account.setAddress(currentWalletAddress, {\n provider: connectedWallet?.provider,\n chain: {\n id: praseChainIdToNumber(currentChain!.id),\n namespace: currentChain!.namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: connectedWallet?.label ?? \"\",\n },\n additionalInfo: connectedWallet?.additionalInfo ?? {},\n });\n track(TrackerEventName.walletConnect, {\n wallet: connectedWallet?.label ?? \"\",\n network: currentChain!.namespace.toUpperCase() as ChainNamespace,\n });\n\n // save wallet connector info to local storage\n windowGuard(() => {\n localStorage.setItem(\n WALLET_KEY,\n JSON.stringify({\n label: connectedWallet?.label ?? \"\",\n }),\n );\n setStorageChain(currentChain!.id);\n });\n }\n\n /**\n * switch chainId\n */\n if (currentChain?.id !== account.chainId) {\n account.switchChainId(currentChain?.id!);\n\n // emit chain changed event\n // options.onChainChanged?.(currentChainId!, isTestnet(networkId));\n }\n }, [\n connectedWallet,\n connectedChain,\n currentWalletAddress,\n currentChain,\n account.address,\n accountState,\n account.chainId,\n unsupported,\n ]);\n\n /**\n * User manually connects to wallet\n */\n const connectWallet = async (): Promise<{\n wallet?: WalletState;\n status?: AccountStatusEnum;\n wrongNetwork?: boolean;\n } | null> => {\n isManualConnect.current = true;\n // const walletState = await connect();\n\n return connect({ chainId: options.currentChainId })\n .then(async (walletState) => {\n if (\n Array.isArray(walletState) &&\n walletState.length > 0 &&\n walletState[0] &&\n walletState[0].accounts.length > 0\n ) {\n const wallet = walletState[0];\n const chainId = praseChainIdToNumber(wallet.chains[0].id);\n\n if (!checkChainSupport(chainId, networkId)) {\n return {\n wrongNetwork: true,\n };\n }\n //\n if (!account) {\n throw new Error(\"account is not initialized\");\n }\n // clear link device data when connect wallt\n if (\n accountState.status ===\n AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n }\n\n const status = await account.setAddress(wallet.accounts[0].address, {\n provider: wallet.provider,\n chain: {\n id: praseChainIdToNumber(wallet.chains[0].id),\n namespace:\n wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: wallet.label,\n },\n // label: ,\n });\n track(TrackerEventName.walletConnect, {\n wallet: wallet.label,\n network: wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n });\n console.log(\"-- xxxxxx status\", status);\n\n return { wallet, status, wrongNetwork: false };\n }\n\n return null;\n })\n .finally(() => {\n isManualConnect.current = false;\n });\n };\n\n return {\n connectWallet,\n wrongNetwork: unsupported,\n };\n};\n","import React, { createContext, useContext } from \"react\";\nimport { RestrictedInfoReturns } from \"@orderly.network/hooks\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\" | \"/perp\";\n name: string;\n};\n\nexport type WidgetConfigs = {\n scanQRCode?: {\n onSuccess?: (url: string) => void;\n };\n subAccount?: {\n /** @deprecated The number of custom sub-accounts needs to be configured in sync with the backend. If you’re not sure about it, please don’t set this value. */\n maxSubAccountCount: number;\n };\n withdraw?: {\n /**\n * Control the \"withdraw to other wallet\" feature.\n * - `true` / `undefined`: enable external wallet trigger & management.\n * - `false`: only show the connected wallet address without external\n * wallet selector or add-wallet dialog.\n */\n enableWithdrawToExternalWallet?: boolean;\n };\n};\n\nexport type AppContextState = {\n connectWallet: ReturnType<typeof useWalletStateHandle>[\"connectWallet\"];\n /**\n * Whether the current network is not supported\n */\n wrongNetwork: boolean;\n disabledConnect: boolean;\n currentChainId: number | undefined;\n setCurrentChainId: (chainId: number | undefined) => void;\n onChainChanged?: (\n chainId: number,\n state: { isTestnet: boolean; isWalletConnected: boolean },\n ) => void;\n // networkStatus: ReturnType<typeof useAppState>[\"networkStatus\"];\n restrictedInfo: RestrictedInfoReturns;\n showAnnouncement: boolean;\n setShowAnnouncement: (show: boolean) => void;\n onRouteChange?: (option: RouteOption) => void;\n widgetConfigs?: WidgetConfigs;\n initialized: boolean;\n};\n\nexport const AppStateContext = createContext<AppContextState>({\n setCurrentChainId: (chainId?: number) => {},\n restrictedInfo: {},\n setShowAnnouncement: (show: boolean) => {},\n} as AppContextState);\n\nexport const useAppContext = () => {\n return useContext(AppStateContext);\n};\n","import { FC, PropsWithChildren, useState, useMemo, useEffect } from \"react\";\nimport {\n RestrictedInfoOptions,\n useRestrictedInfo,\n useTrackingInstance,\n} from \"@orderly.network/hooks\";\nimport { useAssetconvertEvent } from \"../hooks/useAssetconvertEvent\";\nimport { DefaultChain, useCurrentChainId } from \"../hooks/useCurrentChainId\";\nimport { useLinkDevice } from \"../hooks/useLinkDevice\";\nimport { useSettleEvent } from \"../hooks/useSettleEvent\";\nimport { useWalletConnectError } from \"../hooks/useWalletConnectError\";\nimport { useWalletEvent } from \"../hooks/useWalletEvent\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\nimport { AppContextState, AppStateContext } from \"./appStateContext\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\";\n name: string;\n};\n\nexport type AppStateProviderProps = {\n defaultChain?: DefaultChain;\n restrictedInfo?: RestrictedInfoOptions;\n} & Pick<AppContextState, \"onChainChanged\" | \"onRouteChange\" | \"widgetConfigs\">;\n\nexport const AppStateProvider: FC<PropsWithChildren<AppStateProviderProps>> = (\n props,\n) => {\n const [showAnnouncement, setShowAnnouncement] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [currentChainId, setCurrentChainId] = useCurrentChainId(\n props.defaultChain,\n );\n useLinkDevice();\n useTrackingInstance();\n\n const { connectWallet, wrongNetwork } = useWalletStateHandle({\n // onChainChanged: props.onChainChanged,\n currentChainId,\n });\n\n useWalletEvent();\n useSettleEvent();\n useAssetconvertEvent();\n useWalletConnectError();\n\n const restrictedInfo = useRestrictedInfo(props.restrictedInfo);\n\n const disabledConnect = restrictedInfo.restrictedOpen;\n\n useEffect(() => {\n setInitialized(true);\n }, []);\n\n const memoizedValue = useMemo<AppContextState>(\n () => ({\n connectWallet,\n wrongNetwork,\n currentChainId,\n setCurrentChainId,\n onChainChanged: props.onChainChanged,\n disabledConnect,\n restrictedInfo,\n showAnnouncement,\n setShowAnnouncement,\n onRouteChange: props.onRouteChange,\n widgetConfigs: props.widgetConfigs,\n initialized,\n }),\n [\n connectWallet,\n currentChainId,\n disabledConnect,\n props.onChainChanged,\n restrictedInfo,\n setCurrentChainId,\n showAnnouncement,\n wrongNetwork,\n props.onRouteChange,\n props.widgetConfigs,\n initialized,\n ],\n );\n\n return (\n <AppStateContext.Provider value={memoizedValue}>\n {props.children}\n </AppStateContext.Provider>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { OrderlyConfigProvider, useTrack } from \"@orderly.network/hooks\";\nimport {\n LocaleProvider as UILocaleProvider,\n ModalProvider,\n OrderlyPluginProvider,\n OrderlyThemeProvider,\n Toaster,\n TooltipProvider,\n} from \"@orderly.network/ui\";\nimport { OrderlyThemeProviderProps } from \"@orderly.network/ui\";\nimport { useBootstrap } from \"../hooks/useBootstrap\";\nimport { useExecutionReport } from \"../hooks/useExecutionReport\";\nimport { useUILocale } from \"../hooks/useUILocale\";\nimport { OrderlyAppConfig } from \"../types\";\nimport { AppConfigProvider } from \"./appConfigProvider\";\nimport { AppStateProvider, AppStateProviderProps } from \"./appStateProvider\";\n\nexport type OrderlyAppProviderProps = PropsWithChildren<\n OrderlyAppConfig & AppStateProviderProps & OrderlyThemeProviderProps\n>;\n\n// Cannot be called outside of Provider because useExecutionReport requires useOrderlyContext.\nconst ExecutionReportListener: React.FC = () => {\n useExecutionReport();\n return null;\n};\n\nconst OrderlyAppProvider: React.FC<OrderlyAppProviderProps> = (props) => {\n const {\n // dateFormatting,\n components,\n appIcons,\n plugins,\n onChainChanged,\n defaultChain,\n widgetConfigs,\n ...configProps\n } = props;\n\n useTrack();\n useBootstrap();\n\n const uiLocale = useUILocale();\n\n return (\n <AppConfigProvider appIcons={appIcons} brokerName={props.brokerName!}>\n <OrderlyThemeProvider\n // dateFormatting={dateFormatting}\n components={components}\n overrides={props.overrides}\n >\n <OrderlyConfigProvider {...configProps}>\n <OrderlyPluginProvider plugins={plugins ?? []}>\n <ExecutionReportListener />\n <AppStateProvider\n onChainChanged={onChainChanged}\n defaultChain={defaultChain}\n restrictedInfo={props.restrictedInfo}\n onRouteChange={props.onRouteChange}\n widgetConfigs={widgetConfigs}\n >\n <UILocaleProvider locale={uiLocale}>\n <TooltipProvider delayDuration={300}>\n <ModalProvider>{props.children}</ModalProvider>\n </TooltipProvider>\n </UILocaleProvider>\n </AppStateProvider>\n </OrderlyPluginProvider>\n <Toaster />\n </OrderlyConfigProvider>\n </OrderlyThemeProvider>\n </AppConfigProvider>\n );\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n OrderlyAppProvider.displayName = \"OrderlyAppProvider\";\n}\n\nexport { OrderlyAppProvider };\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport const useDataTap = <T = any>(\n data: T,\n options?: {\n skip?: false;\n fallbackData?: T;\n accountStatus?: AccountStatusEnum;\n },\n): T | null => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n /**\n * ignore\n */\n if (options?.skip) {\n return data;\n }\n\n if (wrongNetwork || disabledConnect) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n\n if (typeof options?.accountStatus !== \"undefined\") {\n if (state.status < options.accountStatus) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n }\n\n // return wrongNetwork\n // ? typeof options?.fallbackData !== \"undefined\"\n // ? options.fallbackData\n // : null\n // : data;\n //\n return data;\n};\n","import { useCallback } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationItem,\n OrderValidationResult,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\ntype Keys = keyof OrderValidationResult;\ntype ErrorType = Partial<OrderValidationItem[\"type\"]>;\n\nexport function useOrderEntryFormErrorMsg(\n errors: OrderValidationResult | null,\n) {\n const { t } = useTranslation();\n\n const getMessage = (\n key: Keys,\n type: ErrorType,\n params: {\n value?: string | number;\n min?: string | number;\n max?: string | number;\n },\n ) => {\n const { value, min, max } = params || {};\n const map: Partial<Record<Keys, Partial<Record<ErrorType, string>>>> = {\n quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_price: {\n required: t(\"orderEntry.orderPrice.error.required\"),\n min: t(\"orderEntry.orderPrice.error.min\", { value }),\n max: t(\"orderEntry.orderPrice.error.max\", { value }),\n },\n trigger_price: {\n required: t(\"orderEntry.triggerPrice.error.required\"),\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n tp_trigger_price: {\n required: t(\"tpsl.validate.tpTriggerPrice.error.required\"),\n min: t(\"orderEntry.tpTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.tpTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMax\"),\n },\n sl_trigger_price: {\n required: t(\"tpsl.validate.slTriggerPrice.error.required\"),\n min: t(\"orderEntry.slTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.slTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMax\"),\n [ERROR_MSG_CODES.SL_PRICE_WARNING]: t(\n \"tpsl.validate.slTriggerPrice.warning.closeToLiqPrice\",\n ),\n [ERROR_MSG_CODES.SL_PRICE_ERROR]: t(\n \"tpsl.validate.slTriggerPrice.error.crossLiqPrice\",\n ),\n },\n tp_order_price: {\n required: t(\"tpsl.validate.tpOrderPrice.error.required\"),\n min: t(\"tpsl.validate.tpOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.tpOrderPrice.error.max\", { value }),\n },\n sl_order_price: {\n required: t(\"tpsl.validate.slOrderPrice.error.required\"),\n min: t(\"tpsl.validate.slOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.slOrderPrice.error.max\", { value }),\n },\n total: {\n min: t(\"orderEntry.total.error.min\", { value }),\n },\n // not show form input tooltip\n // slippage: {\n // max: t(\"orderEntry.slippage.error.max\"),\n // },\n start_price: {\n required: t(\"orderEntry.startPrice.error.required\"),\n min: t(\"orderEntry.startPrice.error.min\", { value }),\n max: t(\"orderEntry.startPrice.error.max\", { value }),\n },\n end_price: {\n required: t(\"orderEntry.endPrice.error.required\"),\n min: t(\"orderEntry.endPrice.error.min\", { value }),\n max: t(\"orderEntry.endPrice.error.max\", { value }),\n },\n total_orders: {\n required: t(\"orderEntry.totalOrders.error.required\"),\n range: t(\"orderEntry.totalOrders.error.range\"),\n },\n skew: {\n required: t(\"orderEntry.skew.error.required\"),\n min: t(\"orderEntry.skew.error.min\", { value }),\n max: t(\"orderEntry.skew.error.max\", { value }),\n },\n activated_price: {\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n callback_value: {\n required: t(\"orderEntry.callbackValue.error.required\"),\n min: t(\"orderEntry.callbackValue.error.min\", { value }),\n range: t(\"orderEntry.callbackValue.error.range\", {\n min,\n max,\n }),\n },\n callback_rate: {\n required: t(\"orderEntry.callbackRate.error.required\"),\n range: t(\"orderEntry.callbackRate.error.range\", {\n min,\n max,\n }),\n },\n };\n\n return map[key]?.[type] || \"\";\n };\n\n const getErrorMsg = useCallback(\n (key: Keys, customValue?: string) => {\n const { type, value, min, max } = errors?.[key] || ({} as any);\n if (type) {\n return getMessage(key, type, { value: customValue || value, min, max });\n }\n return \"\";\n },\n [errors],\n );\n\n return {\n getErrorMsg,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport function useCanTrade() {\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n return canTrade;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useBootstrap.ts","../src/hooks/getOrderExecutionReportMsg.ts","../src/hooks/useExecutionReport.tsx","../src/hooks/useUILocale.ts","../src/provider/appConfigContext.tsx","../src/provider/appConfigProvider.tsx","../src/hooks/useAssetconvertEvent.ts","../src/hooks/useCurrentChainId.ts","../src/hooks/useLinkDevice.ts","../src/hooks/useSettleEvent.ts","../src/hooks/useWalletConnectError.ts","../src/hooks/useWalletEvent.ts","../src/hooks/useWalletStateHandle.ts","../src/provider/appStateContext.tsx","../src/provider/appStateProvider.tsx","../src/provider/orderlyAppProvider.tsx","../src/hooks/useDataTap.ts","../src/common/useOrderEntryFormErrorMsg.ts","../src/hooks/useCanTrade.ts"],"names":["useEffect","i18n","capitalizeString","transSymbolformString","AlgoOrderRootType","parseNumber","OrderStatus","useEventEmitter","useSymbolsInfo","useRef","useOrderlyContext","useLocalStorage","useAudioPlayer","useDebouncedCallback","data","toast","jsx","useTranslation","useLocaleCode","useMemo","LocaleEnum","enUS","zhCN","createContext","useContext","useWS","getTimestamp","useStorageChain","useState","useChains","useConfig","useWalletConnector","useAccount","useScreen","parseJSON","useSettleSubscription","useStorageLedgerAddress","modal","useSessionStorage","useWalletSubscription","WALLET_KEY","SDKError","useKeyStore","useTrack","namespace","parseChainIdToNumber","AccountStatusEnum","ABSTRACT_CHAIN_ID_MAP","windowGuard","ChainNamespace","praseChainIdToNumber","TrackerEventName","useTrackingInstance","useRestrictedInfo","OrderlyThemeProvider","jsxs","OrderlyConfigProvider","OrderlyPluginProvider","UILocaleProvider","TooltipProvider","ModalProvider","Toaster","ERROR_MSG_CODES","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["import { useEffect } from \"react\";\n\nexport const useBootstrap = () => {\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API, OrderStatus, OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { parseNumber } from \"@orderly.network/ui\";\nimport {\n capitalizeString,\n transSymbolformString,\n} from \"@orderly.network/utils\";\n\nfunction getDisplaySide(side: string) {\n if (side === \"BUY\") {\n return i18n.t(\"common.buy\");\n } else if (side === \"SELL\") {\n return i18n.t(\"common.sell\");\n }\n return capitalizeString(side);\n}\n\ntype AlgoOrderFieldChanges = Partial<\n Record<OrderType, Partial<Record<keyof API.AlgoOrder, boolean>>>\n>;\n\nexport function getOrderExecutionReportMsg(\n data: (API.AlgoOrder | API.Order) & {\n fieldChanges?: AlgoOrderFieldChanges;\n },\n symbolsInfo: any,\n) {\n const { symbol, side, quantity, client_order_id, fieldChanges } = data;\n const total_executed_quantity =\n \"total_executed_quantity\" in data ? data.total_executed_quantity : 0;\n const status = \"status\" in data ? data.status : data.algo_status;\n const getSymbolInfo = symbolsInfo[symbol];\n const base_dp = getSymbolInfo(\"base_dp\");\n const quote_dp = getSymbolInfo(\"quote_dp\");\n const displaySide = getDisplaySide(side);\n const displaySymbol = transSymbolformString(symbol);\n const displayQuantity =\n \"algo_type\" in data && data.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n ? i18n.t(\"tpsl.entirePosition\")\n : base_dp === undefined\n ? quantity\n : parseNumber(quantity, { dp: base_dp });\n\n let title = \"\";\n let msg = \"\";\n switch (status) {\n case OrderStatus.NEW:\n const isScaledOrder = client_order_id?.startsWith(\"scaled_\");\n // if client_order_id is scaled order, show the scaled order message\n if (isScaledOrder) {\n title = i18n.t(\"orders.status.scaledSubOrderOpened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n } else {\n title = i18n.t(\"orders.status.opened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n }\n\n break;\n case OrderStatus.FILLED:\n case OrderStatus.PARTIAL_FILLED:\n const displayTotalExecutedQuantity =\n base_dp === undefined\n ? total_executed_quantity\n : parseNumber(total_executed_quantity, { dp: base_dp });\n title = i18n.t(\"orders.status.filled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayTotalExecutedQuantity} / ${displayQuantity}`;\n break;\n case OrderStatus.CANCELLED:\n title = i18n.t(\"orders.status.canceled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REJECTED:\n title = i18n.t(\"orders.status.rejected.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REPLACED:\n const { algo_type, activated_price } = data as API.AlgoOrder;\n if (algo_type === AlgoOrderRootType.TRAILING_STOP) {\n const fieldChange =\n fieldChanges?.[AlgoOrderRootType.TRAILING_STOP] || {};\n // when trailing stop order is activated, and extreme_price will also changed\n if (\n fieldChange.is_activated &&\n fieldChange.extreme_price &&\n activated_price\n ) {\n title = i18n.t(\"orders.trailingStop.activated\");\n msg = `${displaySymbol} @${activated_price}`;\n } else if (fieldChange.extreme_price) {\n // if extreme_price is changed, skip show the message\n title = \"\";\n msg = \"\";\n }\n } else {\n title = i18n.t(\"orders.status.replaced.toast.title\");\n msg = `${side} ${displaySymbol} ${total_executed_quantity} / ${displayQuantity}`;\n }\n\n break;\n default:\n break;\n }\n\n return {\n title,\n msg,\n status,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from \"react\";\nimport {\n useSymbolsInfo,\n useEventEmitter,\n useDebouncedCallback,\n useAudioPlayer,\n useLocalStorage,\n useOrderlyContext,\n} from \"@orderly.network/hooks\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getOrderExecutionReportMsg } from \"./getOrderExecutionReportMsg\";\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nexport const ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nexport const useExecutionReport = () => {\n const ee = useEventEmitter();\n\n const symbolsInfo = useSymbolsInfo();\n const symbolsInfoRef = useRef({});\n\n const { notification } = useOrderlyContext();\n\n useEffect(() => {\n symbolsInfoRef.current = symbolsInfo;\n }, [symbolsInfo]);\n\n const orderFilledConfig = notification?.orderFilled;\n const soundOptions = orderFilledConfig?.soundOptions;\n\n const defaultSoundValue =\n orderFilledConfig?.defaultSoundValue ?? soundOptions?.[0]?.value;\n\n const [selectedSoundValue] = useLocalStorage<string | null>(\n ORDERLY_ORDER_SOUND_OPTION_KEY,\n defaultSoundValue ?? null,\n );\n\n const selectedOption =\n soundOptions?.find((option) => option.value === selectedSoundValue) ??\n soundOptions?.[0];\n\n const src =\n (soundOptions && soundOptions.length ? selectedOption?.media : undefined) ??\n orderFilledConfig?.media ??\n \"\";\n\n const [soundAutoPlay] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n orderFilledConfig?.defaultOpen ?? false,\n );\n\n const { play: playOrderFilledSound } = useAudioPlayer(src, {\n enabled: soundAutoPlay,\n volume: 1,\n });\n\n const handler = useDebouncedCallback((data: any) => {\n const showToast = (data: any) => {\n const { title, msg, status } = getOrderExecutionReportMsg(\n data,\n symbolsInfoRef.current,\n );\n const isFilled =\n status === OrderStatus.FILLED || status === OrderStatus.PARTIAL_FILLED;\n if (isFilled) {\n playOrderFilledSound();\n }\n // only show latest msg for same order type\n const orderType = data.algo_type || data.type;\n if (title && msg) {\n toast.success(\n <div>\n {title}\n <br />\n <div className=\"orderly-text-white/[0.54] orderly-text-xs\">\n {msg}\n </div>\n </div>,\n { id: orderType },\n );\n }\n };\n showToast(data);\n }, 100);\n\n useEffect(() => {\n ee.on(\"orders:changed\", handler);\n return () => {\n ee.off(\"orders:changed\", handler);\n handler.cancel();\n };\n }, [ee, handler]);\n};\n","import { useMemo } from \"react\";\nimport {\n useTranslation,\n useLocaleCode,\n LocaleEnum,\n} from \"@orderly.network/i18n\";\nimport { Locale } from \"@orderly.network/ui\";\nimport { enUS, zhCN, ja, es, ko, vi, de, fr, nl } from \"date-fns/locale\";\n\nexport function useUILocale() {\n const { t } = useTranslation();\n const localeCode = useLocaleCode();\n\n return useMemo<Locale>(() => {\n const calendarLocale = {\n [LocaleEnum.en]: enUS,\n [LocaleEnum.zh]: zhCN,\n // [LocaleEnum.ja]: ja,\n // [LocaleEnum.es]: es,\n // [LocaleEnum.ko]: ko,\n // [LocaleEnum.vi]: vi,\n // [LocaleEnum.de]: de,\n // [LocaleEnum.fr]: fr,\n // [LocaleEnum.nl]: nl,\n };\n return {\n locale: localeCode,\n dialog: {\n ok: t(\"common.ok\"),\n cancel: t(\"common.cancel\"),\n },\n modal: {\n confirm: t(\"common.confirm\"),\n cancel: t(\"common.cancel\"),\n },\n pagination: {\n morePages: t(\"ui.pagination.morePages\"),\n rowsPerPage: t(\"ui.pagination.rowsPerPage\"),\n },\n picker: {\n selectDate: t(\"ui.picker.selectDate\"),\n dayPicker: calendarLocale[localeCode as keyof typeof calendarLocale],\n },\n empty: {\n description: t(\"ui.empty.description\"),\n },\n } as const;\n }, [t, localeCode]);\n}\n","import { createContext, useContext } from \"react\";\nimport { AppLogos } from \"../types\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigContext = createContext({} as ThemeContextState);\n\nexport const useAppConfig = () => {\n return useContext(AppConfigContext);\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { AppLogos } from \"../types\";\nimport { AppConfigContext } from \"./appConfigContext\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigProvider: FC<\n PropsWithChildren<{ appIcons?: AppLogos; brokerName: string }>\n> = (props) => {\n return (\n <AppConfigContext.Provider value={props}>\n {props.children}\n </AppConfigContext.Provider>\n );\n};\n","import { useEffect } from \"react\";\nimport { useWS } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useAssetconvertEvent = () => {\n const ws = useWS();\n const { t } = useTranslation();\n useEffect(() => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"assetconvert\",\n event: \"subscribe\",\n topic: \"assetconvert\",\n ts: getTimestamp(),\n },\n {\n onMessage(data) {\n if (data.convertId) {\n toast.success(t(\"transfer.convert.completed\"));\n }\n },\n },\n );\n return () => unsubscribe();\n }, []);\n};\n","import { useEffect, useState } from \"react\";\nimport {\n Chains,\n useChains,\n useConfig,\n useStorageChain,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { Chain, NetworkId } from \"@orderly.network/types\";\ntype ReturnChain = Pick<Chain, \"id\"> & Partial<Omit<Chain, \"id\">>;\n\nexport type DefaultChain =\n | {\n mainnet?: ReturnChain;\n testnet?: ReturnChain;\n }\n | ((networkId: NetworkId, chains: Chains) => ReturnChain)\n | undefined;\n\nexport function useCurrentChainId(defaultChain?: DefaultChain) {\n const { storageChain, setStorageChain } = useStorageChain();\n const [currentChainId, setCurrentChainId] = useState<number | undefined>();\n\n const [chains] = useChains();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { connectedChain } = useWalletConnector();\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId?.(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n let fallbackChain: Partial<Chain> | undefined;\n\n const firstChain =\n networkId === \"mainnet\" ? chains.mainnet?.[0] : chains.testnet?.[0];\n\n if (typeof defaultChain === \"function\") {\n fallbackChain = defaultChain(networkId, chains);\n } else if (typeof defaultChain === \"object\") {\n fallbackChain =\n networkId === \"mainnet\"\n ? defaultChain?.mainnet\n : defaultChain?.testnet;\n }\n\n const chainId = fallbackChain?.id || firstChain?.network_infos?.chain_id;\n if (!chainId) return;\n\n if (storageChain) {\n setCurrentChainId?.(storageChain.chainId);\n } else {\n setStorageChain(chainId);\n setCurrentChainId?.(chainId);\n \n }\n }\n }, [\n connectedChain,\n chains,\n currentChainId,\n networkId,\n setCurrentChainId,\n defaultChain,\n ]);\n\n return [currentChainId, setCurrentChainId] as const;\n}\n","import { useCallback, useEffect } from \"react\";\nimport {\n parseJSON,\n useAccount,\n useConfig,\n useLocalStorage,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\n\ntype DecodedData = {\n /** secret key */\n k: string;\n /* timestamp */\n t: number;\n /** address */\n a: string;\n /** chain id */\n i: number;\n /** chain namespace */\n n: ChainNamespace;\n};\n\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport function useLinkDevice() {\n const { connectedChain, disconnect } = useWalletConnector();\n const [_, setLinkDeviceStorage] = useLocalStorage(\n \"orderly_link_device\",\n {} as LinkDeviceStorage,\n );\n\n const { account } = useAccount();\n const { isMobile } = useScreen();\n const configStore = useConfig();\n\n const onDisconnect = async (label: string) => {\n // The cache must be cleared first, otherwise it will be auto connect wallet\n localStorage.removeItem(WALLET_KEY);\n await account.disconnect();\n await disconnect({ label });\n };\n\n useEffect(() => {\n const linkData = getLinkDeviceData();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n if (linkData && walletInfo) {\n // clear connect data when link device\n onDisconnect(walletInfo.label);\n }\n }, []);\n\n const linkDevice = async () => {\n const linkData = getLinkDeviceData();\n if (!linkData) return;\n\n const { address, secretKey, chainId, chainNamespace } = linkData;\n const isSuccess = await account.importOrderlyKey({\n address,\n secretKey,\n chainNamespace,\n });\n if (!isSuccess) return;\n setLinkDeviceStorage({\n chainId,\n chainNamespace,\n });\n\n const url = new URL(window.location.href);\n url.searchParams.delete(\"link\");\n // use set instead of append, because the param possibly in the url\n url.searchParams.set(\"utm_medium\", \"qrcode\");\n const decodedUrl = decodeURIComponent(url.toString());\n history.replaceState(null, \"\", decodedUrl);\n };\n\n useEffect(() => {\n if (isMobile && !connectedChain) {\n linkDevice();\n }\n }, [account, connectedChain, isMobile]);\n\n const autoLinkDevice = async () => {\n // this can't use the value returned by useLocalStorage here, because it will trigger extra state change\n const { chainId, chainNamespace } = getLinkDeviceStorage() || {};\n if (isMobile && !connectedChain && chainId && chainNamespace) {\n const address = account.keyStore.getAddress();\n const orderlyKey = account.keyStore.getOrderlyKey();\n const accountId = account.keyStore.getAccountId(address!);\n const res = await account.checkOrderlyKey(\n address!,\n orderlyKey!,\n accountId!,\n );\n if (res) {\n configStore.set(\"chainNamespace\", chainNamespace);\n }\n }\n };\n\n // persist status when refresh page\n useEffect(() => {\n autoLinkDevice();\n }, [account, isMobile, connectedChain]);\n\n return { linkDevice };\n}\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n\nexport function getLinkDeviceData() {\n const url = new URL(window.location.href);\n const link = url.searchParams.get(\"link\");\n\n if (!link) return;\n\n const {\n a: address,\n k: secretKey,\n i: chainId,\n n: chainNamespace,\n } = decodeBase64(link) || {};\n\n if (address && secretKey && chainId && chainNamespace) {\n return {\n address,\n secretKey,\n chainId,\n chainNamespace,\n };\n }\n}\n\nfunction decodeBase64(base64: string) {\n try {\n const data = JSON.parse(window.atob(base64)) as DecodedData;\n console.log(\"decodeBase64\", data);\n const currentTime = Math.floor(Date.now() / 1000);\n const expiredTime = data.t;\n\n if (!expiredTime || currentTime > expiredTime) {\n console.error(\"Orderly key has expired.\");\n return;\n }\n\n return data;\n } catch (error) {\n console.error(\"Invalid or expired orderly key.\");\n }\n}\n","import { useSettleSubscription } from \"@orderly.network/hooks\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport function useSettleEvent() {\n const { t } = useTranslation();\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n // console.log(\"settle ws: \", data);\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(t(\"settle.settlement.completed\"));\n break;\n case \"FAILED\":\n toast.error(t(\"settle.settlement.failed\"));\n break;\n default:\n break;\n }\n },\n });\n}\n","import { useEffect } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useStorageLedgerAddress } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { LedgerWalletKey } from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\n\nexport function useWalletConnectError() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n const { setLedgerAddress } = useStorageLedgerAddress();\n\n useEffect(() => {\n const handleConnectError = (data: { message: string }) => {\n toast.error(data.message);\n };\n\n const handleLedgerError = (data: {\n userAddress: string;\n message: string;\n }) => {\n window.setTimeout(() => {\n modal\n .confirm({\n title: t(\"connector.ledger.signMessageFailed\"),\n content: t(\"connector.ledger.signMessageFailed.description\"),\n size: \"sm\",\n onOk: async () => {\n console.log(\"-- use ledger\", true);\n setLedgerAddress(data.userAddress);\n\n return Promise.resolve();\n },\n okLabel: t(\"common.ok\"),\n onCancel: async () => {\n toast.error(data.message);\n return Promise.resolve();\n },\n cancelLabel: t(\"common.no\"),\n })\n .then((res) => {\n console.log(\"-- dialog res\", res);\n });\n });\n };\n\n ee.on(\"wallet:connect-error\", handleConnectError);\n ee.on(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n\n return () => {\n ee.off(\"wallet:connect-error\", handleConnectError);\n ee.off(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n };\n }, [ee, t]);\n\n return {};\n}\n","import { useRef } from \"react\";\nimport {\n useEventEmitter,\n useSessionStorage,\n useWalletSubscription,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\n\nexport function useWalletEvent() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n\n const recordRef = useRef<Record<number, boolean>>({});\n\n const [record, setRecord] = useSessionStorage(\n \"orderly_wallet_change_id\",\n {} as Record<number, boolean>,\n );\n\n recordRef.current = record;\n\n useWalletSubscription({\n onMessage: (data: any) => {\n console.log(\"wallet:changed\", data);\n const { id, side, transStatus } = data;\n let showToast = true;\n\n // DEPOSIT and WITHDRAW will push twice COMPLETED and FAILED event\n if (\n [\"DEPOSIT\", \"WITHDRAW\"].includes(side) &&\n [\"COMPLETED\", \"FAILED\"].includes(transStatus)\n ) {\n const isPushed = !!recordRef.current[id];\n if (!isPushed) {\n recordRef.current[id] = true;\n setRecord((prev: Record<number, boolean>) => ({\n ...prev,\n [id]: true,\n }));\n }\n showToast = !isPushed;\n }\n\n if (transStatus === \"COMPLETED\" && showToast) {\n let msg = `${capitalizeString(side)} completed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.completed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.completed\");\n }\n\n toast.success(msg);\n } else if (transStatus === \"FAILED\" && showToast) {\n let msg = `${capitalizeString(side)} failed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.failed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.failed\");\n }\n toast.error(msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useConfig,\n useEventEmitter,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport {\n useAccount,\n useChains,\n useKeyStore,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n SDKError,\n ChainNamespace,\n NetworkId,\n TrackerEventName,\n ABSTRACT_CHAIN_ID_MAP,\n} from \"@orderly.network/types\";\nimport {\n parseChainIdToNumber,\n praseChainIdToNumber,\n windowGuard,\n} from \"@orderly.network/utils\";\nimport { getLinkDeviceData } from \"./useLinkDevice\";\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport const useWalletStateHandle = (options: {\n // onChainChanged?: (chainId: number, isTestnet: boolean) => void;\n currentChainId?: number;\n}) => {\n const {\n wallet: connectedWallet,\n connect,\n connectedChain,\n disconnect,\n namespace,\n } = useWalletConnector();\n //\n // console.log(\"🔗 wallet state handle\", {\n // connectedWallet,\n // connectedChain,\n // namespace,\n // });\n\n if (typeof connect !== \"function\") {\n throw new SDKError(\"Please provide a wallet connector provider\");\n }\n\n const ee = useEventEmitter();\n const isManualConnect = useRef<boolean>(false);\n const brokerId = useConfig(\"brokerId\");\n const { account, state: accountState } = useAccount();\n const keyStore = useKeyStore();\n const networkId = useConfig(\"networkId\") as NetworkId;\n const [chains, { checkChainSupport }] = useChains();\n const { storageChain, setStorageChain } = useStorageChain();\n\n const [unsupported, setUnsupported] = useState(false);\n const { track, setTrackUserId } = useTrack();\n\n // current connected wallet address\n const currentWalletAddress = useMemo<string | undefined>(() => {\n return connectedWallet?.accounts?.[0]?.address;\n }, [connectedWallet]);\n\n // current connected chain id\n const currentChain = useMemo<\n { id: number; namespace: string } | undefined\n >(() => {\n const id = connectedWallet?.chains?.[0]?.id;\n const namespace = connectedWallet?.chains?.[0]?.namespace as string;\n if (typeof id === \"undefined\") return undefined;\n return {\n id: parseChainIdToNumber(id),\n namespace,\n };\n }, [connectedWallet]);\n\n useEffect(() => {\n if (\n accountState.status >= AccountStatusEnum.EnableTrading &&\n account.accountId\n ) {\n setTrackUserId(account.accountId!);\n }\n }, [account, accountState]);\n\n useEffect(() => {\n if (!connectedChain) {\n setUnsupported(false);\n return;\n }\n\n let isSupported = checkChainSupport(\n connectedChain.id,\n networkId,\n // networkId === \"testnet\" ? chains.testnet : chains.mainnet\n );\n if (\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain.id as string)) &&\n connectedWallet?.label !== \"AGW\"\n ) {\n isSupported = false;\n }\n\n setUnsupported(!isSupported);\n }, [connectedChain, chains, checkChainSupport, networkId, connectedWallet]);\n\n useEffect(() => {\n // if (unsupported) return;\n\n windowGuard(() => {\n const localAddress = keyStore.getAddress();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n\n /**\n * if locale address is exist, restore account state\n */\n if (connectedChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (\n localAddress &&\n account.address !== localAddress &&\n walletInfo.label\n ) {\n connect({\n autoSelect: {\n label: walletInfo.label,\n disableModals: true,\n },\n }).then(\n (res) => {\n console.log(\"silent connect wallet successes\", res);\n },\n (error) => console.log(\"connect error\", error),\n );\n }\n });\n }, [connectedWallet, account.address, storageChain?.namespace]);\n\n /**\n * handle wallet connection\n */\n useEffect(() => {\n if (\n connectedWallet === null &&\n accountState.status > AccountStatusEnum.NotConnected &&\n !accountState.validating\n ) {\n account.disconnect();\n return;\n }\n\n if (unsupported || !connectedChain) return;\n if (isManualConnect.current) return;\n\n const linkData = getLinkDeviceData();\n\n // updateAccount(currentWalletAddress!, connectedWallet!, currentChainId!);\n /**\n * switch account\n */\n if (\n !!currentWalletAddress &&\n currentWalletAddress !== account.address &&\n !linkData\n ) {\n account.setAddress(currentWalletAddress, {\n provider: connectedWallet?.provider,\n chain: {\n id: praseChainIdToNumber(currentChain!.id),\n namespace: currentChain!.namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: connectedWallet?.label ?? \"\",\n },\n additionalInfo: connectedWallet?.additionalInfo ?? {},\n });\n track(TrackerEventName.walletConnect, {\n wallet: connectedWallet?.label ?? \"\",\n network: currentChain!.namespace.toUpperCase() as ChainNamespace,\n });\n\n // save wallet connector info to local storage\n windowGuard(() => {\n localStorage.setItem(\n WALLET_KEY,\n JSON.stringify({\n label: connectedWallet?.label ?? \"\",\n }),\n );\n setStorageChain(currentChain!.id);\n });\n }\n\n /**\n * switch chainId\n */\n if (currentChain?.id !== account.chainId) {\n account.switchChainId(currentChain?.id!);\n\n // emit chain changed event\n // options.onChainChanged?.(currentChainId!, isTestnet(networkId));\n }\n }, [\n connectedWallet,\n connectedChain,\n currentWalletAddress,\n currentChain,\n account.address,\n accountState,\n account.chainId,\n unsupported,\n ]);\n\n /**\n * User manually connects to wallet\n */\n const connectWallet = async (): Promise<{\n wallet?: WalletState;\n status?: AccountStatusEnum;\n wrongNetwork?: boolean;\n } | null> => {\n isManualConnect.current = true;\n // const walletState = await connect();\n\n return connect({ chainId: options.currentChainId })\n .then(async (walletState) => {\n if (\n Array.isArray(walletState) &&\n walletState.length > 0 &&\n walletState[0] &&\n walletState[0].accounts.length > 0\n ) {\n const wallet = walletState[0];\n const chainId = praseChainIdToNumber(wallet.chains[0].id);\n\n if (!checkChainSupport(chainId, networkId)) {\n return {\n wrongNetwork: true,\n };\n }\n //\n if (!account) {\n throw new Error(\"account is not initialized\");\n }\n // clear link device data when connect wallt\n if (\n accountState.status ===\n AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n }\n\n const status = await account.setAddress(wallet.accounts[0].address, {\n provider: wallet.provider,\n chain: {\n id: praseChainIdToNumber(wallet.chains[0].id),\n namespace:\n wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: wallet.label,\n },\n // label: ,\n });\n track(TrackerEventName.walletConnect, {\n wallet: wallet.label,\n network: wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n });\n console.log(\"-- xxxxxx status\", status);\n\n return { wallet, status, wrongNetwork: false };\n }\n\n return null;\n })\n .finally(() => {\n isManualConnect.current = false;\n });\n };\n\n return {\n connectWallet,\n wrongNetwork: unsupported,\n };\n};\n","import React, { createContext, useContext } from \"react\";\nimport { RestrictedInfoReturns } from \"@orderly.network/hooks\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\" | \"/perp\";\n name: string;\n};\n\nexport type WidgetConfigs = {\n scanQRCode?: {\n onSuccess?: (url: string) => void;\n };\n subAccount?: {\n /** @deprecated The number of custom sub-accounts needs to be configured in sync with the backend. If you’re not sure about it, please don’t set this value. */\n maxSubAccountCount: number;\n };\n withdraw?: {\n /**\n * Control the \"withdraw to other wallet\" feature.\n * - `true` / `undefined`: enable external wallet trigger & management.\n * - `false`: only show the connected wallet address without external\n * wallet selector or add-wallet dialog.\n */\n enableWithdrawToExternalWallet?: boolean;\n };\n};\n\nexport type AppContextState = {\n connectWallet: ReturnType<typeof useWalletStateHandle>[\"connectWallet\"];\n /**\n * Whether the current network is not supported\n */\n wrongNetwork: boolean;\n disabledConnect: boolean;\n currentChainId: number | undefined;\n setCurrentChainId: (chainId: number | undefined) => void;\n onChainChanged?: (\n chainId: number,\n state: { isTestnet: boolean; isWalletConnected: boolean },\n ) => void;\n // networkStatus: ReturnType<typeof useAppState>[\"networkStatus\"];\n restrictedInfo: RestrictedInfoReturns;\n showAnnouncement: boolean;\n setShowAnnouncement: (show: boolean) => void;\n onRouteChange?: (option: RouteOption) => void;\n widgetConfigs?: WidgetConfigs;\n initialized: boolean;\n};\n\nexport const AppStateContext = createContext<AppContextState>({\n setCurrentChainId: (chainId?: number) => {},\n restrictedInfo: {},\n setShowAnnouncement: (show: boolean) => {},\n} as AppContextState);\n\nexport const useAppContext = () => {\n return useContext(AppStateContext);\n};\n","import { FC, PropsWithChildren, useState, useMemo, useEffect } from \"react\";\nimport {\n RestrictedInfoOptions,\n useRestrictedInfo,\n useTrackingInstance,\n} from \"@orderly.network/hooks\";\nimport { useAssetconvertEvent } from \"../hooks/useAssetconvertEvent\";\nimport { DefaultChain, useCurrentChainId } from \"../hooks/useCurrentChainId\";\nimport { useLinkDevice } from \"../hooks/useLinkDevice\";\nimport { useSettleEvent } from \"../hooks/useSettleEvent\";\nimport { useWalletConnectError } from \"../hooks/useWalletConnectError\";\nimport { useWalletEvent } from \"../hooks/useWalletEvent\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\nimport { AppContextState, AppStateContext } from \"./appStateContext\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\";\n name: string;\n};\n\nexport type AppStateProviderProps = {\n defaultChain?: DefaultChain;\n restrictedInfo?: RestrictedInfoOptions;\n} & Pick<AppContextState, \"onChainChanged\" | \"onRouteChange\" | \"widgetConfigs\">;\n\nexport const AppStateProvider: FC<PropsWithChildren<AppStateProviderProps>> = (\n props,\n) => {\n const [showAnnouncement, setShowAnnouncement] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [currentChainId, setCurrentChainId] = useCurrentChainId(\n props.defaultChain,\n );\n useLinkDevice();\n useTrackingInstance();\n\n const { connectWallet, wrongNetwork } = useWalletStateHandle({\n // onChainChanged: props.onChainChanged,\n currentChainId,\n });\n\n useWalletEvent();\n useSettleEvent();\n useAssetconvertEvent();\n useWalletConnectError();\n\n const restrictedInfo = useRestrictedInfo(props.restrictedInfo);\n\n const disabledConnect = restrictedInfo.restrictedOpen;\n\n useEffect(() => {\n setInitialized(true);\n }, []);\n\n const memoizedValue = useMemo<AppContextState>(\n () => ({\n connectWallet,\n wrongNetwork,\n currentChainId,\n setCurrentChainId,\n onChainChanged: props.onChainChanged,\n disabledConnect,\n restrictedInfo,\n showAnnouncement,\n setShowAnnouncement,\n onRouteChange: props.onRouteChange,\n widgetConfigs: props.widgetConfigs,\n initialized,\n }),\n [\n connectWallet,\n currentChainId,\n disabledConnect,\n props.onChainChanged,\n restrictedInfo,\n setCurrentChainId,\n showAnnouncement,\n wrongNetwork,\n props.onRouteChange,\n props.widgetConfigs,\n initialized,\n ],\n );\n\n return (\n <AppStateContext.Provider value={memoizedValue}>\n {props.children}\n </AppStateContext.Provider>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { OrderlyConfigProvider, useTrack } from \"@orderly.network/hooks\";\nimport {\n LocaleProvider as UILocaleProvider,\n ModalProvider,\n OrderlyPluginProvider,\n OrderlyThemeProvider,\n Toaster,\n TooltipProvider,\n} from \"@orderly.network/ui\";\nimport { OrderlyThemeProviderProps } from \"@orderly.network/ui\";\nimport { useBootstrap } from \"../hooks/useBootstrap\";\nimport { useExecutionReport } from \"../hooks/useExecutionReport\";\nimport { useUILocale } from \"../hooks/useUILocale\";\nimport { OrderlyAppConfig } from \"../types\";\nimport { AppConfigProvider } from \"./appConfigProvider\";\nimport { AppStateProvider, AppStateProviderProps } from \"./appStateProvider\";\n\nexport type OrderlyAppProviderProps = PropsWithChildren<\n OrderlyAppConfig & AppStateProviderProps & OrderlyThemeProviderProps\n>;\n\n// Cannot be called outside of Provider because useExecutionReport requires useOrderlyContext.\nconst ExecutionReportListener: React.FC = () => {\n useExecutionReport();\n return null;\n};\n\nconst OrderlyAppProvider: React.FC<OrderlyAppProviderProps> = (props) => {\n const {\n // dateFormatting,\n components,\n appIcons,\n plugins,\n onChainChanged,\n defaultChain,\n widgetConfigs,\n ...configProps\n } = props;\n\n useTrack();\n useBootstrap();\n\n const uiLocale = useUILocale();\n\n return (\n <AppConfigProvider appIcons={appIcons} brokerName={props.brokerName!}>\n <OrderlyThemeProvider\n // dateFormatting={dateFormatting}\n components={components}\n overrides={props.overrides}\n >\n <OrderlyConfigProvider {...configProps}>\n <OrderlyPluginProvider plugins={plugins ?? []}>\n <ExecutionReportListener />\n <AppStateProvider\n onChainChanged={onChainChanged}\n defaultChain={defaultChain}\n restrictedInfo={props.restrictedInfo}\n onRouteChange={props.onRouteChange}\n widgetConfigs={widgetConfigs}\n >\n <UILocaleProvider locale={uiLocale}>\n <TooltipProvider delayDuration={300}>\n <ModalProvider>{props.children}</ModalProvider>\n </TooltipProvider>\n </UILocaleProvider>\n </AppStateProvider>\n </OrderlyPluginProvider>\n <Toaster />\n </OrderlyConfigProvider>\n </OrderlyThemeProvider>\n </AppConfigProvider>\n );\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n OrderlyAppProvider.displayName = \"OrderlyAppProvider\";\n}\n\nexport { OrderlyAppProvider };\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport const useDataTap = <T = any>(\n data: T,\n options?: {\n skip?: false;\n fallbackData?: T;\n accountStatus?: AccountStatusEnum;\n },\n): T | null => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n /**\n * ignore\n */\n if (options?.skip) {\n return data;\n }\n\n if (wrongNetwork || disabledConnect) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n\n if (typeof options?.accountStatus !== \"undefined\") {\n if (state.status < options.accountStatus) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n }\n\n // return wrongNetwork\n // ? typeof options?.fallbackData !== \"undefined\"\n // ? options.fallbackData\n // : null\n // : data;\n //\n return data;\n};\n","import { useCallback } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationItem,\n OrderValidationResult,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\ntype Keys = keyof OrderValidationResult;\ntype ErrorType = Partial<OrderValidationItem[\"type\"]>;\n\nexport function useOrderEntryFormErrorMsg(\n errors: OrderValidationResult | null,\n) {\n const { t } = useTranslation();\n\n const getMessage = (\n key: Keys,\n type: ErrorType,\n params: {\n value?: string | number;\n min?: string | number;\n max?: string | number;\n },\n ) => {\n const { value, min, max } = params || {};\n const map: Partial<Record<Keys, Partial<Record<ErrorType, string>>>> = {\n quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_price: {\n required: t(\"orderEntry.orderPrice.error.required\"),\n min: t(\"orderEntry.orderPrice.error.min\", { value }),\n max: t(\"orderEntry.orderPrice.error.max\", { value }),\n },\n trigger_price: {\n required: t(\"orderEntry.triggerPrice.error.required\"),\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n tp_trigger_price: {\n required: t(\"tpsl.validate.tpTriggerPrice.error.required\"),\n min: t(\"orderEntry.tpTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.tpTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMax\"),\n },\n sl_trigger_price: {\n required: t(\"tpsl.validate.slTriggerPrice.error.required\"),\n min: t(\"orderEntry.slTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.slTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMax\"),\n [ERROR_MSG_CODES.SL_PRICE_WARNING]: t(\n \"tpsl.validate.slTriggerPrice.warning.closeToLiqPrice\",\n ),\n [ERROR_MSG_CODES.SL_PRICE_ERROR]: t(\n \"tpsl.validate.slTriggerPrice.error.crossLiqPrice\",\n ),\n },\n tp_order_price: {\n required: t(\"tpsl.validate.tpOrderPrice.error.required\"),\n min: t(\"tpsl.validate.tpOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.tpOrderPrice.error.max\", { value }),\n },\n sl_order_price: {\n required: t(\"tpsl.validate.slOrderPrice.error.required\"),\n min: t(\"tpsl.validate.slOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.slOrderPrice.error.max\", { value }),\n },\n total: {\n min: t(\"orderEntry.total.error.min\", { value }),\n },\n // not show form input tooltip\n // slippage: {\n // max: t(\"orderEntry.slippage.error.max\"),\n // },\n start_price: {\n required: t(\"orderEntry.startPrice.error.required\"),\n min: t(\"orderEntry.startPrice.error.min\", { value }),\n max: t(\"orderEntry.startPrice.error.max\", { value }),\n },\n end_price: {\n required: t(\"orderEntry.endPrice.error.required\"),\n min: t(\"orderEntry.endPrice.error.min\", { value }),\n max: t(\"orderEntry.endPrice.error.max\", { value }),\n },\n total_orders: {\n required: t(\"orderEntry.totalOrders.error.required\"),\n range: t(\"orderEntry.totalOrders.error.range\"),\n },\n skew: {\n required: t(\"orderEntry.skew.error.required\"),\n min: t(\"orderEntry.skew.error.min\", { value }),\n max: t(\"orderEntry.skew.error.max\", { value }),\n },\n activated_price: {\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n callback_value: {\n required: t(\"orderEntry.callbackValue.error.required\"),\n min: t(\"orderEntry.callbackValue.error.min\", { value }),\n range: t(\"orderEntry.callbackValue.error.range\", {\n min,\n max,\n }),\n },\n callback_rate: {\n required: t(\"orderEntry.callbackRate.error.required\"),\n range: t(\"orderEntry.callbackRate.error.range\", {\n min,\n max,\n }),\n },\n };\n\n return map[key]?.[type] || \"\";\n };\n\n const getErrorMsg = useCallback(\n (key: Keys, customValue?: string) => {\n const { type, value, min, max } = errors?.[key] || ({} as any);\n if (type) {\n return getMessage(key, type, { value: customValue || value, min, max });\n }\n return \"\";\n },\n [errors],\n );\n\n return {\n getErrorMsg,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport function useCanTrade() {\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n return canTrade;\n}\n"]}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useBootstrap.ts","../src/hooks/getOrderExecutionReportMsg.ts","../src/hooks/useExecutionReport.tsx","../src/hooks/useUILocale.ts","../src/provider/appConfigContext.tsx","../src/provider/appConfigProvider.tsx","../src/hooks/useAssetconvertEvent.ts","../src/hooks/useCurrentChainId.ts","../src/hooks/useLinkDevice.ts","../src/hooks/useSettleEvent.ts","../src/hooks/useWalletConnectError.ts","../src/hooks/useWalletEvent.ts","../src/hooks/useWalletStateHandle.ts","../src/provider/appStateContext.tsx","../src/provider/appStateProvider.tsx","../src/provider/orderlyAppProvider.tsx","../src/hooks/useDataTap.ts","../src/common/useOrderEntryFormErrorMsg.ts","../src/hooks/useCanTrade.ts"],"names":["useEffect","data","OrderStatus","jsx","useTranslation","toast","useWalletConnector","useLocalStorage","useConfig","useEventEmitter","useRef","capitalizeString","WALLET_KEY","useAccount","useChains","useStorageChain","useState","useMemo","namespace","createContext","useContext","useTrack","jsxs","UILocaleProvider","useCallback","AccountStatusEnum"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useEffect } from \"react\";\n\nexport const useBootstrap = () => {\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API, OrderStatus, OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { parseNumber } from \"@orderly.network/ui\";\nimport {\n capitalizeString,\n transSymbolformString,\n} from \"@orderly.network/utils\";\n\nfunction getDisplaySide(side: string) {\n if (side === \"BUY\") {\n return i18n.t(\"common.buy\");\n } else if (side === \"SELL\") {\n return i18n.t(\"common.sell\");\n }\n return capitalizeString(side);\n}\n\ntype AlgoOrderFieldChanges = Partial<\n Record<OrderType, Partial<Record<keyof API.AlgoOrder, boolean>>>\n>;\n\nexport function getOrderExecutionReportMsg(\n data: (API.AlgoOrder | API.Order) & {\n fieldChanges?: AlgoOrderFieldChanges;\n },\n symbolsInfo: any,\n) {\n const { symbol, side, quantity, client_order_id, fieldChanges } = data;\n const total_executed_quantity =\n \"total_executed_quantity\" in data ? data.total_executed_quantity : 0;\n const status = \"status\" in data ? data.status : data.algo_status;\n const getSymbolInfo = symbolsInfo[symbol];\n const base_dp = getSymbolInfo(\"base_dp\");\n const quote_dp = getSymbolInfo(\"quote_dp\");\n const displaySide = getDisplaySide(side);\n const displaySymbol = transSymbolformString(symbol);\n const displayQuantity =\n \"algo_type\" in data && data.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n ? i18n.t(\"tpsl.entirePosition\")\n : base_dp === undefined\n ? quantity\n : parseNumber(quantity, { dp: base_dp });\n\n let title = \"\";\n let msg = \"\";\n switch (status) {\n case OrderStatus.NEW:\n const isScaledOrder = client_order_id?.startsWith(\"scaled_\");\n // if client_order_id is scaled order, show the scaled order message\n if (isScaledOrder) {\n title = i18n.t(\"orders.status.scaledSubOrderOpened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n } else {\n title = i18n.t(\"orders.status.opened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n }\n\n break;\n case OrderStatus.FILLED:\n case OrderStatus.PARTIAL_FILLED:\n const displayTotalExecutedQuantity =\n base_dp === undefined\n ? total_executed_quantity\n : parseNumber(total_executed_quantity, { dp: base_dp });\n title = i18n.t(\"orders.status.filled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayTotalExecutedQuantity} / ${displayQuantity}`;\n break;\n case OrderStatus.CANCELLED:\n title = i18n.t(\"orders.status.canceled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REJECTED:\n title = i18n.t(\"orders.status.rejected.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REPLACED:\n const { algo_type, activated_price } = data as API.AlgoOrder;\n if (algo_type === AlgoOrderRootType.TRAILING_STOP) {\n const fieldChange =\n fieldChanges?.[AlgoOrderRootType.TRAILING_STOP] || {};\n // when trailing stop order is activated, and extreme_price will also changed\n if (\n fieldChange.is_activated &&\n fieldChange.extreme_price &&\n activated_price\n ) {\n title = i18n.t(\"orders.trailingStop.activated\");\n msg = `${displaySymbol} @${activated_price}`;\n } else if (fieldChange.extreme_price) {\n // if extreme_price is changed, skip show the message\n title = \"\";\n msg = \"\";\n }\n } else {\n title = i18n.t(\"orders.status.replaced.toast.title\");\n msg = `${side} ${displaySymbol} ${total_executed_quantity} / ${displayQuantity}`;\n }\n\n break;\n default:\n break;\n }\n\n return {\n title,\n msg,\n status,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from \"react\";\nimport {\n useSymbolsInfo,\n useEventEmitter,\n useDebouncedCallback,\n useAudioPlayer,\n useLocalStorage,\n useOrderlyContext,\n} from \"@orderly.network/hooks\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getOrderExecutionReportMsg } from \"./getOrderExecutionReportMsg\";\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nexport const ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nexport const useExecutionReport = () => {\n const ee = useEventEmitter();\n\n const symbolsInfo = useSymbolsInfo();\n const symbolsInfoRef = useRef({});\n\n const { notification } = useOrderlyContext();\n\n useEffect(() => {\n symbolsInfoRef.current = symbolsInfo;\n }, [symbolsInfo]);\n\n const orderFilledConfig = notification?.orderFilled;\n const soundOptions = orderFilledConfig?.soundOptions;\n\n const defaultSoundValue =\n orderFilledConfig?.defaultSoundValue ?? soundOptions?.[0]?.value;\n\n const [selectedSoundValue] = useLocalStorage<string | null>(\n ORDERLY_ORDER_SOUND_OPTION_KEY,\n defaultSoundValue ?? null,\n );\n\n const selectedOption =\n soundOptions?.find((option) => option.value === selectedSoundValue) ??\n soundOptions?.[0];\n\n const src =\n (soundOptions && soundOptions.length ? selectedOption?.media : undefined) ??\n orderFilledConfig?.media ??\n \"\";\n\n const [soundAutoPlay] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n orderFilledConfig?.defaultOpen ?? false,\n );\n\n const { play: playOrderFilledSound } = useAudioPlayer(src, {\n enabled: soundAutoPlay,\n volume: 1,\n });\n\n const handler = useDebouncedCallback((data: any) => {\n const showToast = (data: any) => {\n const { title, msg, status } = getOrderExecutionReportMsg(\n data,\n symbolsInfoRef.current,\n );\n const isFilled =\n status === OrderStatus.FILLED || status === OrderStatus.PARTIAL_FILLED;\n if (isFilled) {\n playOrderFilledSound();\n }\n // only show latest msg for same order type\n const orderType = data.algo_type || data.type;\n if (title && msg) {\n toast.success(\n <div>\n {title}\n <br />\n <div className=\"orderly-text-white/[0.54] orderly-text-xs\">\n {msg}\n </div>\n </div>,\n { id: orderType },\n );\n }\n };\n showToast(data);\n }, 100);\n\n useEffect(() => {\n ee.on(\"orders:changed\", handler);\n return () => {\n ee.off(\"orders:changed\", handler);\n handler.cancel();\n };\n }, [ee, handler]);\n};\n","import { useMemo } from \"react\";\nimport {\n useTranslation,\n useLocaleCode,\n LocaleEnum,\n} from \"@orderly.network/i18n\";\nimport { Locale } from \"@orderly.network/ui\";\nimport { enUS, zhCN, ja, es, ko, vi, de, fr, nl } from \"date-fns/locale\";\n\nexport function useUILocale() {\n const { t } = useTranslation();\n const localeCode = useLocaleCode();\n\n return useMemo<Locale>(() => {\n const calendarLocale = {\n [LocaleEnum.en]: enUS,\n [LocaleEnum.zh]: zhCN,\n // [LocaleEnum.ja]: ja,\n // [LocaleEnum.es]: es,\n // [LocaleEnum.ko]: ko,\n // [LocaleEnum.vi]: vi,\n // [LocaleEnum.de]: de,\n // [LocaleEnum.fr]: fr,\n // [LocaleEnum.nl]: nl,\n };\n return {\n locale: localeCode,\n dialog: {\n ok: t(\"common.ok\"),\n cancel: t(\"common.cancel\"),\n },\n modal: {\n confirm: t(\"common.confirm\"),\n cancel: t(\"common.cancel\"),\n },\n pagination: {\n morePages: t(\"ui.pagination.morePages\"),\n rowsPerPage: t(\"ui.pagination.rowsPerPage\"),\n },\n picker: {\n selectDate: t(\"ui.picker.selectDate\"),\n dayPicker: calendarLocale[localeCode as keyof typeof calendarLocale],\n },\n empty: {\n description: t(\"ui.empty.description\"),\n },\n } as const;\n }, [t, localeCode]);\n}\n","import { createContext, useContext } from \"react\";\nimport { AppLogos } from \"../types\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigContext = createContext({} as ThemeContextState);\n\nexport const useAppConfig = () => {\n return useContext(AppConfigContext);\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { AppLogos } from \"../types\";\nimport { AppConfigContext } from \"./appConfigContext\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigProvider: FC<\n PropsWithChildren<{ appIcons?: AppLogos; brokerName: string }>\n> = (props) => {\n return (\n <AppConfigContext.Provider value={props}>\n {props.children}\n </AppConfigContext.Provider>\n );\n};\n","import { useEffect } from \"react\";\nimport { useWS } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useAssetconvertEvent = () => {\n const ws = useWS();\n const { t } = useTranslation();\n useEffect(() => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"assetconvert\",\n event: \"subscribe\",\n topic: \"assetconvert\",\n ts: getTimestamp(),\n },\n {\n onMessage(data) {\n if (data.convertId) {\n toast.success(t(\"transfer.convert.completed\"));\n }\n },\n },\n );\n return () => unsubscribe();\n }, []);\n};\n","import { useEffect, useState } from \"react\";\nimport {\n Chains,\n useChains,\n useConfig,\n useStorageChain,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { Chain, NetworkId } from \"@orderly.network/types\";\ntype ReturnChain = Pick<Chain, \"id\"> & Partial<Omit<Chain, \"id\">>;\n\nexport type DefaultChain =\n | {\n mainnet?: ReturnChain;\n testnet?: ReturnChain;\n }\n | ((networkId: NetworkId, chains: Chains) => ReturnChain)\n | undefined;\n\nexport function useCurrentChainId(defaultChain?: DefaultChain) {\n const { storageChain, setStorageChain } = useStorageChain();\n const [currentChainId, setCurrentChainId] = useState<number | undefined>();\n\n const [chains] = useChains();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { connectedChain } = useWalletConnector();\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId?.(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n let fallbackChain: Partial<Chain> | undefined;\n\n const firstChain =\n networkId === \"mainnet\" ? chains.mainnet?.[0] : chains.testnet?.[0];\n\n if (typeof defaultChain === \"function\") {\n fallbackChain = defaultChain(networkId, chains);\n } else if (typeof defaultChain === \"object\") {\n fallbackChain =\n networkId === \"mainnet\"\n ? defaultChain?.mainnet\n : defaultChain?.testnet;\n }\n\n const chainId = fallbackChain?.id || firstChain?.network_infos?.chain_id;\n if (!chainId) return;\n\n if (storageChain) {\n setCurrentChainId?.(storageChain.chainId);\n } else {\n setStorageChain(chainId);\n setCurrentChainId?.(chainId);\n \n }\n }\n }, [\n connectedChain,\n chains,\n currentChainId,\n networkId,\n setCurrentChainId,\n defaultChain,\n ]);\n\n return [currentChainId, setCurrentChainId] as const;\n}\n","import { useCallback, useEffect } from \"react\";\nimport {\n parseJSON,\n useAccount,\n useConfig,\n useLocalStorage,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\n\ntype DecodedData = {\n /** secret key */\n k: string;\n /* timestamp */\n t: number;\n /** address */\n a: string;\n /** chain id */\n i: number;\n /** chain namespace */\n n: ChainNamespace;\n};\n\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport function useLinkDevice() {\n const { connectedChain, disconnect } = useWalletConnector();\n const [_, setLinkDeviceStorage] = useLocalStorage(\n \"orderly_link_device\",\n {} as LinkDeviceStorage,\n );\n\n const { account } = useAccount();\n const { isMobile } = useScreen();\n const configStore = useConfig();\n\n const onDisconnect = async (label: string) => {\n // The cache must be cleared first, otherwise it will be auto connect wallet\n localStorage.removeItem(WALLET_KEY);\n await account.disconnect();\n await disconnect({ label });\n };\n\n useEffect(() => {\n const linkData = getLinkDeviceData();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n if (linkData && walletInfo) {\n // clear connect data when link device\n onDisconnect(walletInfo.label);\n }\n }, []);\n\n const linkDevice = async () => {\n const linkData = getLinkDeviceData();\n if (!linkData) return;\n\n const { address, secretKey, chainId, chainNamespace } = linkData;\n const isSuccess = await account.importOrderlyKey({\n address,\n secretKey,\n chainNamespace,\n });\n if (!isSuccess) return;\n setLinkDeviceStorage({\n chainId,\n chainNamespace,\n });\n\n const url = new URL(window.location.href);\n url.searchParams.delete(\"link\");\n // use set instead of append, because the param possibly in the url\n url.searchParams.set(\"utm_medium\", \"qrcode\");\n const decodedUrl = decodeURIComponent(url.toString());\n history.replaceState(null, \"\", decodedUrl);\n };\n\n useEffect(() => {\n if (isMobile && !connectedChain) {\n linkDevice();\n }\n }, [account, connectedChain, isMobile]);\n\n const autoLinkDevice = async () => {\n // this can't use the value returned by useLocalStorage here, because it will trigger extra state change\n const { chainId, chainNamespace } = getLinkDeviceStorage() || {};\n if (isMobile && !connectedChain && chainId && chainNamespace) {\n const address = account.keyStore.getAddress();\n const orderlyKey = account.keyStore.getOrderlyKey();\n const accountId = account.keyStore.getAccountId(address!);\n const res = await account.checkOrderlyKey(\n address!,\n orderlyKey!,\n accountId!,\n );\n if (res) {\n configStore.set(\"chainNamespace\", chainNamespace);\n }\n }\n };\n\n // persist status when refresh page\n useEffect(() => {\n autoLinkDevice();\n }, [account, isMobile, connectedChain]);\n\n return { linkDevice };\n}\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n\nexport function getLinkDeviceData() {\n const url = new URL(window.location.href);\n const link = url.searchParams.get(\"link\");\n\n if (!link) return;\n\n const {\n a: address,\n k: secretKey,\n i: chainId,\n n: chainNamespace,\n } = decodeBase64(link) || {};\n\n if (address && secretKey && chainId && chainNamespace) {\n return {\n address,\n secretKey,\n chainId,\n chainNamespace,\n };\n }\n}\n\nfunction decodeBase64(base64: string) {\n try {\n const data = JSON.parse(window.atob(base64)) as DecodedData;\n console.log(\"decodeBase64\", data);\n const currentTime = Math.floor(Date.now() / 1000);\n const expiredTime = data.t;\n\n if (!expiredTime || currentTime > expiredTime) {\n console.error(\"Orderly key has expired.\");\n return;\n }\n\n return data;\n } catch (error) {\n console.error(\"Invalid or expired orderly key.\");\n }\n}\n","import { useSettleSubscription } from \"@orderly.network/hooks\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport function useSettleEvent() {\n const { t } = useTranslation();\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n // console.log(\"settle ws: \", data);\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(t(\"settle.settlement.completed\"));\n break;\n case \"FAILED\":\n toast.error(t(\"settle.settlement.failed\"));\n break;\n default:\n break;\n }\n },\n });\n}\n","import { useEffect } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useStorageLedgerAddress } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { LedgerWalletKey } from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\n\nexport function useWalletConnectError() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n const { setLedgerAddress } = useStorageLedgerAddress();\n\n useEffect(() => {\n const handleConnectError = (data: { message: string }) => {\n toast.error(data.message);\n };\n\n const handleLedgerError = (data: {\n userAddress: string;\n message: string;\n }) => {\n window.setTimeout(() => {\n modal\n .confirm({\n title: t(\"connector.ledger.signMessageFailed\"),\n content: t(\"connector.ledger.signMessageFailed.description\"),\n size: \"sm\",\n onOk: async () => {\n console.log(\"-- use ledger\", true);\n setLedgerAddress(data.userAddress);\n\n return Promise.resolve();\n },\n okLabel: t(\"common.ok\"),\n onCancel: async () => {\n toast.error(data.message);\n return Promise.resolve();\n },\n cancelLabel: t(\"common.no\"),\n })\n .then((res) => {\n console.log(\"-- dialog res\", res);\n });\n });\n };\n\n ee.on(\"wallet:connect-error\", handleConnectError);\n ee.on(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n\n return () => {\n ee.off(\"wallet:connect-error\", handleConnectError);\n ee.off(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n };\n }, [ee, t]);\n\n return {};\n}\n","import { useRef } from \"react\";\nimport {\n useEventEmitter,\n useSessionStorage,\n useWalletSubscription,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\n\nexport function useWalletEvent() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n\n const recordRef = useRef<Record<number, boolean>>({});\n\n const [record, setRecord] = useSessionStorage(\n \"orderly_wallet_change_id\",\n {} as Record<number, boolean>,\n );\n\n recordRef.current = record;\n\n useWalletSubscription({\n onMessage: (data: any) => {\n console.log(\"wallet:changed\", data);\n const { id, side, transStatus } = data;\n let showToast = true;\n\n // DEPOSIT and WITHDRAW will push twice COMPLETED and FAILED event\n if (\n [\"DEPOSIT\", \"WITHDRAW\"].includes(side) &&\n [\"COMPLETED\", \"FAILED\"].includes(transStatus)\n ) {\n const isPushed = !!recordRef.current[id];\n if (!isPushed) {\n recordRef.current[id] = true;\n setRecord((prev: Record<number, boolean>) => ({\n ...prev,\n [id]: true,\n }));\n }\n showToast = !isPushed;\n }\n\n if (transStatus === \"COMPLETED\" && showToast) {\n let msg = `${capitalizeString(side)} completed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.completed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.completed\");\n }\n\n toast.success(msg);\n } else if (transStatus === \"FAILED\" && showToast) {\n let msg = `${capitalizeString(side)} failed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.failed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.failed\");\n }\n toast.error(msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useConfig,\n useEventEmitter,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport {\n useAccount,\n useChains,\n useKeyStore,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n SDKError,\n ChainNamespace,\n NetworkId,\n TrackerEventName,\n ABSTRACT_CHAIN_ID_MAP,\n} from \"@orderly.network/types\";\nimport {\n parseChainIdToNumber,\n praseChainIdToNumber,\n windowGuard,\n} from \"@orderly.network/utils\";\nimport { getLinkDeviceData } from \"./useLinkDevice\";\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport const useWalletStateHandle = (options: {\n // onChainChanged?: (chainId: number, isTestnet: boolean) => void;\n currentChainId?: number;\n}) => {\n const {\n wallet: connectedWallet,\n connect,\n connectedChain,\n disconnect,\n namespace,\n } = useWalletConnector();\n //\n // console.log(\"🔗 wallet state handle\", {\n // connectedWallet,\n // connectedChain,\n // namespace,\n // });\n\n if (typeof connect !== \"function\") {\n throw new SDKError(\"Please provide a wallet connector provider\");\n }\n\n const ee = useEventEmitter();\n const isManualConnect = useRef<boolean>(false);\n const brokerId = useConfig(\"brokerId\");\n const { account, state: accountState } = useAccount();\n const keyStore = useKeyStore();\n const networkId = useConfig(\"networkId\") as NetworkId;\n const [chains, { checkChainSupport }] = useChains();\n const { storageChain, setStorageChain } = useStorageChain();\n\n const [unsupported, setUnsupported] = useState(false);\n const { track, setTrackUserId } = useTrack();\n\n // current connected wallet address\n const currentWalletAddress = useMemo<string | undefined>(() => {\n return connectedWallet?.accounts?.[0]?.address;\n }, [connectedWallet]);\n\n // current connected chain id\n const currentChain = useMemo<\n { id: number; namespace: string } | undefined\n >(() => {\n const id = connectedWallet?.chains?.[0]?.id;\n const namespace = connectedWallet?.chains?.[0]?.namespace as string;\n if (typeof id === \"undefined\") return undefined;\n return {\n id: parseChainIdToNumber(id),\n namespace,\n };\n }, [connectedWallet]);\n\n useEffect(() => {\n if (\n accountState.status >= AccountStatusEnum.EnableTrading &&\n account.accountId\n ) {\n setTrackUserId(account.accountId!);\n }\n }, [account, accountState]);\n\n useEffect(() => {\n if (!connectedChain) {\n setUnsupported(false);\n return;\n }\n\n let isSupported = checkChainSupport(\n connectedChain.id,\n networkId,\n // networkId === \"testnet\" ? chains.testnet : chains.mainnet\n );\n if (\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain.id as string)) &&\n connectedWallet?.label !== \"AGW\"\n ) {\n isSupported = false;\n }\n\n setUnsupported(!isSupported);\n }, [connectedChain, chains, checkChainSupport, networkId, connectedWallet]);\n\n useEffect(() => {\n // if (unsupported) return;\n\n windowGuard(() => {\n const localAddress = keyStore.getAddress();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n\n /**\n * if locale address is exist, restore account state\n */\n if (connectedChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (\n localAddress &&\n account.address !== localAddress &&\n walletInfo.label\n ) {\n connect({\n autoSelect: {\n label: walletInfo.label,\n disableModals: true,\n },\n }).then(\n (res) => {\n console.log(\"silent connect wallet successes\", res);\n },\n (error) => console.log(\"connect error\", error),\n );\n }\n });\n }, [connectedWallet, account.address, storageChain?.namespace]);\n\n /**\n * handle wallet connection\n */\n useEffect(() => {\n if (\n connectedWallet === null &&\n accountState.status > AccountStatusEnum.NotConnected &&\n !accountState.validating\n ) {\n account.disconnect();\n return;\n }\n\n if (unsupported || !connectedChain) return;\n if (isManualConnect.current) return;\n\n const linkData = getLinkDeviceData();\n\n // updateAccount(currentWalletAddress!, connectedWallet!, currentChainId!);\n /**\n * switch account\n */\n if (\n !!currentWalletAddress &&\n currentWalletAddress !== account.address &&\n !linkData\n ) {\n account.setAddress(currentWalletAddress, {\n provider: connectedWallet?.provider,\n chain: {\n id: praseChainIdToNumber(currentChain!.id),\n namespace: currentChain!.namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: connectedWallet?.label ?? \"\",\n },\n additionalInfo: connectedWallet?.additionalInfo ?? {},\n });\n track(TrackerEventName.walletConnect, {\n wallet: connectedWallet?.label ?? \"\",\n network: currentChain!.namespace.toUpperCase() as ChainNamespace,\n });\n\n // save wallet connector info to local storage\n windowGuard(() => {\n localStorage.setItem(\n WALLET_KEY,\n JSON.stringify({\n label: connectedWallet?.label ?? \"\",\n }),\n );\n setStorageChain(currentChain!.id);\n });\n }\n\n /**\n * switch chainId\n */\n if (currentChain?.id !== account.chainId) {\n account.switchChainId(currentChain?.id!);\n\n // emit chain changed event\n // options.onChainChanged?.(currentChainId!, isTestnet(networkId));\n }\n }, [\n connectedWallet,\n connectedChain,\n currentWalletAddress,\n currentChain,\n account.address,\n accountState,\n account.chainId,\n unsupported,\n ]);\n\n /**\n * User manually connects to wallet\n */\n const connectWallet = async (): Promise<{\n wallet?: WalletState;\n status?: AccountStatusEnum;\n wrongNetwork?: boolean;\n } | null> => {\n isManualConnect.current = true;\n // const walletState = await connect();\n\n return connect({ chainId: options.currentChainId })\n .then(async (walletState) => {\n if (\n Array.isArray(walletState) &&\n walletState.length > 0 &&\n walletState[0] &&\n walletState[0].accounts.length > 0\n ) {\n const wallet = walletState[0];\n const chainId = praseChainIdToNumber(wallet.chains[0].id);\n\n if (!checkChainSupport(chainId, networkId)) {\n return {\n wrongNetwork: true,\n };\n }\n //\n if (!account) {\n throw new Error(\"account is not initialized\");\n }\n // clear link device data when connect wallt\n if (\n accountState.status ===\n AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n }\n\n const status = await account.setAddress(wallet.accounts[0].address, {\n provider: wallet.provider,\n chain: {\n id: praseChainIdToNumber(wallet.chains[0].id),\n namespace:\n wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: wallet.label,\n },\n // label: ,\n });\n track(TrackerEventName.walletConnect, {\n wallet: wallet.label,\n network: wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n });\n console.log(\"-- xxxxxx status\", status);\n\n return { wallet, status, wrongNetwork: false };\n }\n\n return null;\n })\n .finally(() => {\n isManualConnect.current = false;\n });\n };\n\n return {\n connectWallet,\n wrongNetwork: unsupported,\n };\n};\n","import React, { createContext, useContext } from \"react\";\nimport { RestrictedInfoReturns } from \"@orderly.network/hooks\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\" | \"/perp\";\n name: string;\n};\n\nexport type WidgetConfigs = {\n scanQRCode?: {\n onSuccess?: (url: string) => void;\n };\n subAccount?: {\n /** @deprecated The number of custom sub-accounts needs to be configured in sync with the backend. If you’re not sure about it, please don’t set this value. */\n maxSubAccountCount: number;\n };\n withdraw?: {\n /**\n * Control the \"withdraw to other wallet\" feature.\n * - `true` / `undefined`: enable external wallet trigger & management.\n * - `false`: only show the connected wallet address without external\n * wallet selector or add-wallet dialog.\n */\n enableWithdrawToExternalWallet?: boolean;\n };\n};\n\nexport type AppContextState = {\n connectWallet: ReturnType<typeof useWalletStateHandle>[\"connectWallet\"];\n /**\n * Whether the current network is not supported\n */\n wrongNetwork: boolean;\n disabledConnect: boolean;\n currentChainId: number | undefined;\n setCurrentChainId: (chainId: number | undefined) => void;\n onChainChanged?: (\n chainId: number,\n state: { isTestnet: boolean; isWalletConnected: boolean },\n ) => void;\n // networkStatus: ReturnType<typeof useAppState>[\"networkStatus\"];\n restrictedInfo: RestrictedInfoReturns;\n showAnnouncement: boolean;\n setShowAnnouncement: (show: boolean) => void;\n onRouteChange?: (option: RouteOption) => void;\n widgetConfigs?: WidgetConfigs;\n initialized: boolean;\n};\n\nexport const AppStateContext = createContext<AppContextState>({\n setCurrentChainId: (chainId?: number) => {},\n restrictedInfo: {},\n setShowAnnouncement: (show: boolean) => {},\n} as AppContextState);\n\nexport const useAppContext = () => {\n return useContext(AppStateContext);\n};\n","import { FC, PropsWithChildren, useState, useMemo, useEffect } from \"react\";\nimport {\n RestrictedInfoOptions,\n useRestrictedInfo,\n useTrackingInstance,\n} from \"@orderly.network/hooks\";\nimport { useAssetconvertEvent } from \"../hooks/useAssetconvertEvent\";\nimport { DefaultChain, useCurrentChainId } from \"../hooks/useCurrentChainId\";\nimport { useLinkDevice } from \"../hooks/useLinkDevice\";\nimport { useSettleEvent } from \"../hooks/useSettleEvent\";\nimport { useWalletConnectError } from \"../hooks/useWalletConnectError\";\nimport { useWalletEvent } from \"../hooks/useWalletEvent\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\nimport { AppContextState, AppStateContext } from \"./appStateContext\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\";\n name: string;\n};\n\nexport type AppStateProviderProps = {\n defaultChain?: DefaultChain;\n restrictedInfo?: RestrictedInfoOptions;\n} & Pick<AppContextState, \"onChainChanged\" | \"onRouteChange\" | \"widgetConfigs\">;\n\nexport const AppStateProvider: FC<PropsWithChildren<AppStateProviderProps>> = (\n props,\n) => {\n const [showAnnouncement, setShowAnnouncement] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [currentChainId, setCurrentChainId] = useCurrentChainId(\n props.defaultChain,\n );\n useLinkDevice();\n useTrackingInstance();\n\n const { connectWallet, wrongNetwork } = useWalletStateHandle({\n // onChainChanged: props.onChainChanged,\n currentChainId,\n });\n\n useWalletEvent();\n useSettleEvent();\n useAssetconvertEvent();\n useWalletConnectError();\n\n const restrictedInfo = useRestrictedInfo(props.restrictedInfo);\n\n const disabledConnect = restrictedInfo.restrictedOpen;\n\n useEffect(() => {\n setInitialized(true);\n }, []);\n\n const memoizedValue = useMemo<AppContextState>(\n () => ({\n connectWallet,\n wrongNetwork,\n currentChainId,\n setCurrentChainId,\n onChainChanged: props.onChainChanged,\n disabledConnect,\n restrictedInfo,\n showAnnouncement,\n setShowAnnouncement,\n onRouteChange: props.onRouteChange,\n widgetConfigs: props.widgetConfigs,\n initialized,\n }),\n [\n connectWallet,\n currentChainId,\n disabledConnect,\n props.onChainChanged,\n restrictedInfo,\n setCurrentChainId,\n showAnnouncement,\n wrongNetwork,\n props.onRouteChange,\n props.widgetConfigs,\n initialized,\n ],\n );\n\n return (\n <AppStateContext.Provider value={memoizedValue}>\n {props.children}\n </AppStateContext.Provider>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { OrderlyConfigProvider, useTrack } from \"@orderly.network/hooks\";\nimport {\n LocaleProvider as UILocaleProvider,\n ModalProvider,\n OrderlyPluginProvider,\n OrderlyThemeProvider,\n Toaster,\n TooltipProvider,\n} from \"@orderly.network/ui\";\nimport { OrderlyThemeProviderProps } from \"@orderly.network/ui\";\nimport { useBootstrap } from \"../hooks/useBootstrap\";\nimport { useExecutionReport } from \"../hooks/useExecutionReport\";\nimport { useUILocale } from \"../hooks/useUILocale\";\nimport { OrderlyAppConfig } from \"../types\";\nimport { AppConfigProvider } from \"./appConfigProvider\";\nimport { AppStateProvider, AppStateProviderProps } from \"./appStateProvider\";\n\nexport type OrderlyAppProviderProps = PropsWithChildren<\n OrderlyAppConfig & AppStateProviderProps & OrderlyThemeProviderProps\n>;\n\n// Cannot be called outside of Provider because useExecutionReport requires useOrderlyContext.\nconst ExecutionReportListener: React.FC = () => {\n useExecutionReport();\n return null;\n};\n\nconst OrderlyAppProvider: React.FC<OrderlyAppProviderProps> = (props) => {\n const {\n // dateFormatting,\n components,\n appIcons,\n plugins,\n onChainChanged,\n defaultChain,\n widgetConfigs,\n ...configProps\n } = props;\n\n useTrack();\n useBootstrap();\n\n const uiLocale = useUILocale();\n\n return (\n <AppConfigProvider appIcons={appIcons} brokerName={props.brokerName!}>\n <OrderlyThemeProvider\n // dateFormatting={dateFormatting}\n components={components}\n overrides={props.overrides}\n >\n <OrderlyConfigProvider {...configProps}>\n <OrderlyPluginProvider plugins={plugins ?? []}>\n <ExecutionReportListener />\n <AppStateProvider\n onChainChanged={onChainChanged}\n defaultChain={defaultChain}\n restrictedInfo={props.restrictedInfo}\n onRouteChange={props.onRouteChange}\n widgetConfigs={widgetConfigs}\n >\n <UILocaleProvider locale={uiLocale}>\n <TooltipProvider delayDuration={300}>\n <ModalProvider>{props.children}</ModalProvider>\n </TooltipProvider>\n </UILocaleProvider>\n </AppStateProvider>\n </OrderlyPluginProvider>\n <Toaster />\n </OrderlyConfigProvider>\n </OrderlyThemeProvider>\n </AppConfigProvider>\n );\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n OrderlyAppProvider.displayName = \"OrderlyAppProvider\";\n}\n\nexport { OrderlyAppProvider };\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport const useDataTap = <T = any>(\n data: T,\n options?: {\n skip?: false;\n fallbackData?: T;\n accountStatus?: AccountStatusEnum;\n },\n): T | null => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n /**\n * ignore\n */\n if (options?.skip) {\n return data;\n }\n\n if (wrongNetwork || disabledConnect) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n\n if (typeof options?.accountStatus !== \"undefined\") {\n if (state.status < options.accountStatus) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n }\n\n // return wrongNetwork\n // ? typeof options?.fallbackData !== \"undefined\"\n // ? options.fallbackData\n // : null\n // : data;\n //\n return data;\n};\n","import { useCallback } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationItem,\n OrderValidationResult,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\ntype Keys = keyof OrderValidationResult;\ntype ErrorType = Partial<OrderValidationItem[\"type\"]>;\n\nexport function useOrderEntryFormErrorMsg(\n errors: OrderValidationResult | null,\n) {\n const { t } = useTranslation();\n\n const getMessage = (\n key: Keys,\n type: ErrorType,\n params: {\n value?: string | number;\n min?: string | number;\n max?: string | number;\n },\n ) => {\n const { value, min, max } = params || {};\n const map: Partial<Record<Keys, Partial<Record<ErrorType, string>>>> = {\n quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_price: {\n required: t(\"orderEntry.orderPrice.error.required\"),\n min: t(\"orderEntry.orderPrice.error.min\", { value }),\n max: t(\"orderEntry.orderPrice.error.max\", { value }),\n },\n trigger_price: {\n required: t(\"orderEntry.triggerPrice.error.required\"),\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n tp_trigger_price: {\n required: t(\"tpsl.validate.tpTriggerPrice.error.required\"),\n min: t(\"orderEntry.tpTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.tpTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMax\"),\n },\n sl_trigger_price: {\n required: t(\"tpsl.validate.slTriggerPrice.error.required\"),\n min: t(\"orderEntry.slTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.slTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMax\"),\n [ERROR_MSG_CODES.SL_PRICE_WARNING]: t(\n \"tpsl.validate.slTriggerPrice.warning.closeToLiqPrice\",\n ),\n [ERROR_MSG_CODES.SL_PRICE_ERROR]: t(\n \"tpsl.validate.slTriggerPrice.error.crossLiqPrice\",\n ),\n },\n tp_order_price: {\n required: t(\"tpsl.validate.tpOrderPrice.error.required\"),\n min: t(\"tpsl.validate.tpOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.tpOrderPrice.error.max\", { value }),\n },\n sl_order_price: {\n required: t(\"tpsl.validate.slOrderPrice.error.required\"),\n min: t(\"tpsl.validate.slOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.slOrderPrice.error.max\", { value }),\n },\n total: {\n min: t(\"orderEntry.total.error.min\", { value }),\n },\n // not show form input tooltip\n // slippage: {\n // max: t(\"orderEntry.slippage.error.max\"),\n // },\n start_price: {\n required: t(\"orderEntry.startPrice.error.required\"),\n min: t(\"orderEntry.startPrice.error.min\", { value }),\n max: t(\"orderEntry.startPrice.error.max\", { value }),\n },\n end_price: {\n required: t(\"orderEntry.endPrice.error.required\"),\n min: t(\"orderEntry.endPrice.error.min\", { value }),\n max: t(\"orderEntry.endPrice.error.max\", { value }),\n },\n total_orders: {\n required: t(\"orderEntry.totalOrders.error.required\"),\n range: t(\"orderEntry.totalOrders.error.range\"),\n },\n skew: {\n required: t(\"orderEntry.skew.error.required\"),\n min: t(\"orderEntry.skew.error.min\", { value }),\n max: t(\"orderEntry.skew.error.max\", { value }),\n },\n activated_price: {\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n callback_value: {\n required: t(\"orderEntry.callbackValue.error.required\"),\n min: t(\"orderEntry.callbackValue.error.min\", { value }),\n range: t(\"orderEntry.callbackValue.error.range\", {\n min,\n max,\n }),\n },\n callback_rate: {\n required: t(\"orderEntry.callbackRate.error.required\"),\n range: t(\"orderEntry.callbackRate.error.range\", {\n min,\n max,\n }),\n },\n };\n\n return map[key]?.[type] || \"\";\n };\n\n const getErrorMsg = useCallback(\n (key: Keys, customValue?: string) => {\n const { type, value, min, max } = errors?.[key] || ({} as any);\n if (type) {\n return getMessage(key, type, { value: customValue || value, min, max });\n }\n return \"\";\n },\n [errors],\n );\n\n return {\n getErrorMsg,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport function useCanTrade() {\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n return canTrade;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useBootstrap.ts","../src/hooks/getOrderExecutionReportMsg.ts","../src/hooks/useExecutionReport.tsx","../src/hooks/useUILocale.ts","../src/provider/appConfigContext.tsx","../src/provider/appConfigProvider.tsx","../src/hooks/useAssetconvertEvent.ts","../src/hooks/useCurrentChainId.ts","../src/hooks/useLinkDevice.ts","../src/hooks/useSettleEvent.ts","../src/hooks/useWalletConnectError.ts","../src/hooks/useWalletEvent.ts","../src/hooks/useWalletStateHandle.ts","../src/provider/appStateContext.tsx","../src/provider/appStateProvider.tsx","../src/provider/orderlyAppProvider.tsx","../src/hooks/useDataTap.ts","../src/common/useOrderEntryFormErrorMsg.ts","../src/hooks/useCanTrade.ts"],"names":["useEffect","data","OrderStatus","jsx","useTranslation","toast","useWalletConnector","useLocalStorage","useConfig","useEventEmitter","useRef","capitalizeString","WALLET_KEY","useAccount","useChains","useStorageChain","useState","useMemo","namespace","createContext","useContext","useTrack","jsxs","UILocaleProvider","useCallback","AccountStatusEnum"],"mappings":";;;;;;;;;;AAEO,IAAM,eAAe,MAAM;AAChC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,CAAgB,MAAA,CAAO,SAAS,MAAM,CAAA;AAC/D,IAAA,MAAM,OAAA,GAAU,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AACtC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,YAAA,CAAa,OAAA,CAAQ,iBAAiB,OAAO,CAAA;AAAA,IAC/C;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AACP,CAAA;ACDA,SAAS,eAAe,IAAA,EAAc;AACpC,EAAA,IAAI,SAAS,KAAA,EAAO;AAClB,IAAA,OAAO,IAAA,CAAK,EAAE,YAAY,CAAA;AAAA,EAC5B,CAAA,MAAA,IAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,OAAO,IAAA,CAAK,EAAE,aAAa,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,iBAAiB,IAAI,CAAA;AAC9B;AAMO,SAAS,0BAAA,CACd,MAGA,WAAA,EACA;AACA,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,eAAA,EAAiB,cAAa,GAAI,IAAA;AAClE,EAAA,MAAM,uBAAA,GACJ,yBAAA,IAA6B,IAAA,GAAO,IAAA,CAAK,uBAAA,GAA0B,CAAA;AACrE,EAAA,MAAM,MAAA,GAAS,QAAA,IAAY,IAAA,GAAO,IAAA,CAAK,SAAS,IAAA,CAAK,WAAA;AACrD,EAAA,MAAM,aAAA,GAAgB,YAAY,MAAM,CAAA;AACxC,EAAA,MAAM,OAAA,GAAU,cAAc,SAAS,CAAA;AACvC,EAAiB,cAAc,UAAU;AACzC,EAAA,MAAM,WAAA,GAAc,eAAe,IAAI,CAAA;AACvC,EAAA,MAAM,aAAA,GAAgB,sBAAsB,MAAM,CAAA;AAClD,EAAA,MAAM,kBACJ,WAAA,IAAe,IAAA,IAAQ,KAAK,SAAA,KAAc,iBAAA,CAAkB,mBACxD,IAAA,CAAK,CAAA,CAAE,qBAAqB,CAAA,GAC5B,OAAA,KAAY,SACV,QAAA,GACA,WAAA,CAAY,UAAU,EAAE,EAAA,EAAI,SAAS,CAAA;AAE7C,EAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,EAAA,IAAI,GAAA,GAAM,EAAA;AACV,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,WAAA,CAAY,GAAA;AACf,MAAA,MAAM,aAAA,GAAgB,eAAA,EAAiB,UAAA,CAAW,SAAS,CAAA;AAE3D,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,gDAAgD,CAAA;AAC/D,QAAA,GAAA,GAAM,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,aAAa,IAAI,eAAe,CAAA,CAAA;AAAA,MAC1D,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,kCAAkC,CAAA;AACjD,QAAA,GAAA,GAAM,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,aAAa,IAAI,eAAe,CAAA,CAAA;AAAA,MAC1D;AAEA,MAAA;AAAA,IACF,KAAK,WAAA,CAAY,MAAA;AAAA,IACjB,KAAK,WAAA,CAAY,cAAA;AACf,MAAA,MAAM,4BAAA,GACJ,YAAY,MAAA,GACR,uBAAA,GACA,YAAY,uBAAA,EAAyB,EAAE,EAAA,EAAI,OAAA,EAAS,CAAA;AAC1D,MAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,kCAAkC,CAAA;AACjD,MAAA,GAAA,GAAM,GAAG,WAAW,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,EAAI,4BAA4B,MAAM,eAAe,CAAA,CAAA;AAC1F,MAAA;AAAA,IACF,KAAK,WAAA,CAAY,SAAA;AACf,MAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,oCAAoC,CAAA;AACnD,MAAA,GAAA,GAAM,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,aAAa,IAAI,eAAe,CAAA,CAAA;AACxD,MAAA;AAAA,IACF,KAAK,WAAA,CAAY,QAAA;AACf,MAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,oCAAoC,CAAA;AACnD,MAAA,GAAA,GAAM,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,aAAa,IAAI,eAAe,CAAA,CAAA;AACxD,MAAA;AAAA,IACF,KAAK,WAAA,CAAY,QAAA;AACf,MAAA,MAAM,EAAE,SAAA,EAAW,eAAA,EAAgB,GAAI,IAAA;AACvC,MAAA,IAAI,SAAA,KAAc,kBAAkB,aAAA,EAAe;AACjD,QAAA,MAAM,WAAA,GACJ,YAAA,GAAe,iBAAA,CAAkB,aAAa,KAAK,EAAC;AAEtD,QAAA,IACE,WAAA,CAAY,YAAA,IACZ,WAAA,CAAY,aAAA,IACZ,eAAA,EACA;AACA,UAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,+BAA+B,CAAA;AAC9C,UAAA,GAAA,GAAM,CAAA,EAAG,aAAa,CAAA,EAAA,EAAK,eAAe,CAAA,CAAA;AAAA,QAC5C,CAAA,MAAA,IAAW,YAAY,aAAA,EAAe;AAEpC,UAAA,KAAA,GAAQ,EAAA;AACR,UAAA,GAAA,GAAM,EAAA;AAAA,QACR;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,IAAA,CAAK,EAAE,oCAAoC,CAAA;AACnD,QAAA,GAAA,GAAM,GAAG,IAAI,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,EAAI,uBAAuB,MAAM,eAAe,CAAA,CAAA;AAAA,MAChF;AAEA,MAAA;AAEA;AAGJ,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF;AACF;AC/FO,IAAM,6BAAA,GAAgC,2BAAA;AACtC,IAAM,8BAAA,GAAiC,4BAAA;AAEvC,IAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,KAAK,eAAA,EAAgB;AAE3B,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,EAAE,CAAA;AAEhC,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,iBAAA,EAAkB;AAE3C,EAAAA,UAAU,MAAM;AACd,IAAA,cAAA,CAAe,OAAA,GAAU,WAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,oBAAoB,YAAA,EAAc,WAAA;AACxC,EAAA,MAAM,eAAe,iBAAA,EAAmB,YAAA;AAExC,EAAA,MAAM,iBAAA,GACJ,iBAAA,EAAmB,iBAAA,IAAqB,YAAA,GAAe,CAAC,CAAA,EAAG,KAAA;AAE7D,EAAA,MAAM,CAAC,kBAAkB,CAAA,GAAI,eAAA;AAAA,IAC3B,8BAAA;AAAA,IACA,iBAAA,IAAqB;AAAA,GACvB;AAEA,EAAA,MAAM,cAAA,GACJ,YAAA,EAAc,IAAA,CAAK,CAAC,MAAA,KAAW,OAAO,KAAA,KAAU,kBAAkB,CAAA,IAClE,YAAA,GAAe,CAAC,CAAA;AAElB,EAAA,MAAM,GAAA,GAAA,CACH,gBAAgB,YAAA,CAAa,MAAA,GAAS,gBAAgB,KAAA,GAAQ,MAAA,KAC/D,mBAAmB,KAAA,IACnB,EAAA;AAEF,EAAA,MAAM,CAAC,aAAa,CAAA,GAAI,eAAA;AAAA,IACtB,6BAAA;AAAA,IACA,mBAAmB,WAAA,IAAe;AAAA,GACpC;AAEA,EAAA,MAAM,EAAE,IAAA,EAAM,oBAAA,EAAqB,GAAI,eAAe,GAAA,EAAK;AAAA,IACzD,OAAA,EAAS,aAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,CAAC,IAAA,KAAc;AAClD,IAAA,MAAM,SAAA,GAAY,CAACC,KAAAA,KAAc;AAC/B,MAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAK,MAAA,EAAO,GAAI,0BAAA;AAAA,QAC7BA,KAAAA;AAAA,QACA,cAAA,CAAe;AAAA,OACjB;AACA,MAAA,MAAM,QAAA,GACJ,MAAA,KAAWC,WAAAA,CAAY,MAAA,IAAU,WAAWA,WAAAA,CAAY,cAAA;AAC1D,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,oBAAA,EAAqB;AAAA,MACvB;AAEA,MAAA,MAAM,SAAA,GAAYD,KAAAA,CAAK,SAAA,IAAaA,KAAAA,CAAK,IAAA;AACzC,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,KAAA,CAAM,OAAA;AAAA,+BACH,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,YAAA,KAAA;AAAA,gCACA,IAAA,EAAA,EAAG,CAAA;AAAA,4BACJ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACZ,QAAA,EAAA,GAAA,EACH;AAAA,WAAA,EACF,CAAA;AAAA,UACA,EAAE,IAAI,SAAA;AAAU,SAClB;AAAA,MACF;AAAA,IACF,CAAA;AACA,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,EAChB,GAAG,GAAG,CAAA;AAEN,EAAAD,UAAU,MAAM;AACd,IAAA,EAAA,CAAG,EAAA,CAAG,kBAAkB,OAAO,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAA,EAAA,CAAG,GAAA,CAAI,kBAAkB,OAAO,CAAA;AAChC,MAAA,OAAA,CAAQ,MAAA,EAAO;AAAA,IACjB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,EAAA,EAAI,OAAO,CAAC,CAAA;AAClB,CAAA;ACtFO,SAAS,WAAA,GAAc;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,aAAa,aAAA,EAAc;AAEjC,EAAA,OAAO,QAAgB,MAAM;AAC3B,IAAA,MAAM,cAAA,GAAiB;AAAA,MACrB,CAAC,UAAA,CAAW,EAAE,GAAG,IAAA;AAAA,MACjB,CAAC,UAAA,CAAW,EAAE,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQnB;AACA,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,UAAA;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,EAAA,EAAI,EAAE,WAAW,CAAA;AAAA,QACjB,MAAA,EAAQ,EAAE,eAAe;AAAA,OAC3B;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAE,gBAAgB,CAAA;AAAA,QAC3B,MAAA,EAAQ,EAAE,eAAe;AAAA,OAC3B;AAAA,MACA,UAAA,EAAY;AAAA,QACV,SAAA,EAAW,EAAE,yBAAyB,CAAA;AAAA,QACtC,WAAA,EAAa,EAAE,2BAA2B;AAAA,OAC5C;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,EAAE,sBAAsB,CAAA;AAAA,QACpC,SAAA,EAAW,eAAe,UAAyC;AAAA,OACrE;AAAA,MACA,KAAA,EAAO;AAAA,QACL,WAAA,EAAa,EAAE,sBAAsB;AAAA;AACvC,KACF;AAAA,EACF,CAAA,EAAG,CAAC,CAAA,EAAG,UAAU,CAAC,CAAA;AACpB;ACxCO,IAAM,gBAAA,GAAmB,aAAA,CAAc,EAAuB,CAAA;AAE9D,IAAM,eAAe,MAAM;AAChC,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACpC;ACHO,IAAM,iBAAA,GAET,CAAC,KAAA,KAAU;AACb,EAAA,uBACEG,IAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,KAAA,EAC/B,gBAAM,QAAA,EACT,CAAA;AAEJ,CAAA;ACXO,IAAM,uBAAuB,MAAM;AACxC,EAAA,MAAM,KAAK,KAAA,EAAM;AACjB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIC,cAAAA,EAAe;AAC7B,EAAAJ,UAAU,MAAM;AACd,IAAA,MAAM,cAAc,EAAA,CAAG,gBAAA;AAAA,MACrB;AAAA,QACE,EAAA,EAAI,cAAA;AAAA,QACJ,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO,cAAA;AAAA,QACP,IAAI,YAAA;AAAa,OACnB;AAAA,MACA;AAAA,QACE,UAAU,IAAA,EAAM;AACd,UAAA,IAAI,KAAK,SAAA,EAAW;AAClB,YAAAK,KAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,4BAA4B,CAAC,CAAA;AAAA,UAC/C;AAAA,QACF;AAAA;AACF,KACF;AACA,IAAA,OAAO,MAAM,WAAA,EAAY;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AACP,CAAA;ACRO,SAAS,kBAAkB,YAAA,EAA6B;AAC7D,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAI,eAAA,EAAgB;AAC1D,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA,EAA6B;AAEzE,EAAA,MAAM,CAAC,MAAM,CAAA,GAAI,SAAA,EAAU;AAC3B,EAAA,MAAM,SAAA,GAAY,UAAU,WAAW,CAAA;AAEvC,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,kBAAA,EAAmB;AAE9C,EAAAL,UAAU,MAAM;AACd,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,iBAAA;AAAA,QACE,OAAO,eAAe,EAAA,KAAO,QAAA,GACzB,eAAe,EAAA,GACf,QAAA,CAAS,eAAe,EAAE;AAAA,OAChC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAI,CAAC,CAAC,cAAA,EAAgB;AACtB,MAAA,IAAI,aAAA;AAEJ,MAAA,MAAM,UAAA,GACJ,cAAc,SAAA,GAAY,MAAA,CAAO,UAAU,CAAC,CAAA,GAAI,MAAA,CAAO,OAAA,GAAU,CAAC,CAAA;AAEpE,MAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,QAAA,aAAA,GAAgB,YAAA,CAAa,WAAW,MAAM,CAAA;AAAA,MAChD,CAAA,MAAA,IAAW,OAAO,YAAA,KAAiB,QAAA,EAAU;AAC3C,QAAA,aAAA,GACE,SAAA,KAAc,SAAA,GACV,YAAA,EAAc,OAAA,GACd,YAAA,EAAc,OAAA;AAAA,MACtB;AAEA,MAAA,MAAM,OAAA,GAAU,aAAA,EAAe,EAAA,IAAM,UAAA,EAAY,aAAA,EAAe,QAAA;AAChE,MAAA,IAAI,CAAC,OAAA,EAAS;AAEd,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,iBAAA,GAAoB,aAAa,OAAO,CAAA;AAAA,MAC1C,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,OAAO,CAAA;AACvB,QAAA,iBAAA,GAAoB,OAAO,CAAA;AAAA,MAE7B;AAAA,IACF;AAAA,EACF,CAAA,EAAG;AAAA,IACD,cAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,CAAC,gBAAgB,iBAAiB,CAAA;AAC3C;AC9CA,IAAM,UAAA,GAAa,qBAAA;AAEZ,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAM,EAAE,cAAA,EAAgB,UAAA,EAAW,GAAIM,kBAAAA,EAAmB;AAC1D,EAAA,MAAM,CAAC,CAAA,EAAG,oBAAoB,CAAA,GAAIC,eAAAA;AAAA,IAChC,qBAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,UAAA,EAAW;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,SAAA,EAAU;AAC/B,EAAA,MAAM,cAAcC,SAAAA,EAAU;AAE9B,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAkB;AAE5C,IAAA,YAAA,CAAa,WAAW,UAAU,CAAA;AAClC,IAAA,MAAM,QAAQ,UAAA,EAAW;AACzB,IAAA,MAAM,UAAA,CAAW,EAAE,KAAA,EAAO,CAAA;AAAA,EAC5B,CAAA;AAEA,EAAAR,UAAU,MAAM;AACd,IAAA,MAAM,WAAW,iBAAA,EAAkB;AACnC,IAAA,MAAM,aAAa,IAAA,CAAK,KAAA,CAAM,aAAa,OAAA,CAAQ,UAAU,KAAK,IAAI,CAAA;AACtE,IAAA,IAAI,YAAY,UAAA,EAAY;AAE1B,MAAA,YAAA,CAAa,WAAW,KAAK,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,MAAM,WAAW,iBAAA,EAAkB;AACnC,IAAA,IAAI,CAAC,QAAA,EAAU;AAEf,IAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,OAAA,EAAS,gBAAe,GAAI,QAAA;AACxD,IAAA,MAAM,SAAA,GAAY,MAAM,OAAA,CAAQ,gBAAA,CAAiB;AAAA,MAC/C,OAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,oBAAA,CAAqB;AAAA,MACnB,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAA,CAAO,SAAS,IAAI,CAAA;AACxC,IAAA,GAAA,CAAI,YAAA,CAAa,OAAO,MAAM,CAAA;AAE9B,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,YAAA,EAAc,QAAQ,CAAA;AAC3C,IAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,GAAA,CAAI,QAAA,EAAU,CAAA;AACpD,IAAA,OAAA,CAAQ,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,UAAU,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,QAAA,IAAY,CAAC,cAAA,EAAgB;AAC/B,MAAA,UAAA,EAAW;AAAA,IACb;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,cAAA,EAAgB,QAAQ,CAAC,CAAA;AAEtC,EAAA,MAAM,iBAAiB,YAAY;AAEjC,IAAA,MAAM,EAAE,OAAA,EAAS,cAAA,EAAe,GAAI,oBAAA,MAA0B,EAAC;AAC/D,IAAA,IAAI,QAAA,IAAY,CAAC,cAAA,IAAkB,OAAA,IAAW,cAAA,EAAgB;AAC5D,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,QAAA,CAAS,UAAA,EAAW;AAC5C,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,QAAA,CAAS,aAAA,EAAc;AAClD,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,QAAA,CAAS,YAAA,CAAa,OAAQ,CAAA;AACxD,MAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,eAAA;AAAA,QACxB,OAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,WAAA,CAAY,GAAA,CAAI,kBAAkB,cAAc,CAAA;AAAA,MAClD;AAAA,IACF;AAAA,EACF,CAAA;AAGA,EAAAA,UAAU,MAAM;AACd,IAAA,cAAA,EAAe;AAAA,EACjB,CAAA,EAAG,CAAC,OAAA,EAAS,QAAA,EAAU,cAAc,CAAC,CAAA;AAEtC,EAAA,OAAO,EAAE,UAAA,EAAW;AACtB;AAEA,SAAS,oBAAA,GAAuB;AAC9B,EAAA,IAAI;AACF,IAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,OAAA,CAAQ,qBAAqB,CAAA;AACpE,IAAA,MAAM,IAAA,GAAO,iBAAA,GAAoB,SAAA,CAAU,iBAAiB,CAAA,GAAI,IAAA;AAChE,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,GAAA,EAAK;AAAA,EAEd;AACF;AAEO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAA,CAAO,SAAS,IAAI,CAAA;AACxC,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA;AAExC,EAAA,IAAI,CAAC,IAAA,EAAM;AAEX,EAAA,MAAM;AAAA,IACJ,CAAA,EAAG,OAAA;AAAA,IACH,CAAA,EAAG,SAAA;AAAA,IACH,CAAA,EAAG,OAAA;AAAA,IACH,CAAA,EAAG;AAAA,GACL,GAAI,YAAA,CAAa,IAAI,CAAA,IAAK,EAAC;AAE3B,EAAA,IAAI,OAAA,IAAW,SAAA,IAAa,OAAA,IAAW,cAAA,EAAgB;AACrD,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,MAAA,EAAgB;AACpC,EAAA,IAAI;AACF,IAAA,MAAM,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,MAAM,CAAC,CAAA;AAE3C,IAAA,MAAM,cAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAChD,IAAA,MAAM,cAAc,IAAA,CAAK,CAAA;AAEzB,IAAA,IAAI,CAAC,WAAA,IAAe,WAAA,GAAc,WAAA,EAAa;AAE7C,MAAA;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AAAA,EAEhB;AACF;AC5JO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAII,cAAAA,EAAe;AAE7B,EAAA,qBAAA,CAAsB;AAAA,IACpB,SAAA,EAAW,CAAC,IAAA,KAAc;AACxB,MAAA,MAAM,EAAE,QAAO,GAAI,IAAA;AAInB,MAAA,QAAQ,MAAA;AAAQ,QACd,KAAK,WAAA;AACH,UAAAC,KAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,6BAA6B,CAAC,CAAA;AAC9C,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAAA,KAAAA,CAAM,KAAA,CAAM,CAAA,CAAE,0BAA0B,CAAC,CAAA;AACzC,UAAA;AAEA;AACJ,IACF;AAAA,GACD,CAAA;AACH;AClBO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAID,cAAAA,EAAe;AAC7B,EAAA,MAAM,KAAKK,eAAAA,EAAgB;AAC3B,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,uBAAA,EAAwB;AAErD,EAAAT,UAAU,MAAM;AACd,IAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAA8B;AACxD,MAAAK,KAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAGrB;AACJ,MAAA,MAAA,CAAO,WAAW,MAAM;AACtB,QAAA,KAAA,CACG,OAAA,CAAQ;AAAA,UACP,KAAA,EAAO,EAAE,oCAAoC,CAAA;AAAA,UAC7C,OAAA,EAAS,EAAE,gDAAgD,CAAA;AAAA,UAC3D,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,YAAY;AAEhB,YAAA,gBAAA,CAAiB,KAAK,WAAW,CAAA;AAEjC,YAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,UACzB,CAAA;AAAA,UACA,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,UACtB,UAAU,YAAY;AACpB,YAAAA,KAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AACxB,YAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,UACzB,CAAA;AAAA,UACA,WAAA,EAAa,EAAE,WAAW;AAAA,SAC3B,CAAA,CACA,IAAA,CAAK,CAAC,GAAA,KAAQ;AAAA,QAEf,CAAC,CAAA;AAAA,MACL,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,EAAA,CAAG,EAAA,CAAG,wBAAwB,kBAAkB,CAAA;AAChD,IAAA,EAAA,CAAG,EAAA,CAAG,yCAAyC,iBAAiB,CAAA;AAEhE,IAAA,OAAO,MAAM;AACX,MAAA,EAAA,CAAG,GAAA,CAAI,wBAAwB,kBAAkB,CAAA;AACjD,MAAA,EAAA,CAAG,GAAA,CAAI,yCAAyC,iBAAiB,CAAA;AAAA,IACnE,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,EAAA,EAAI,CAAC,CAAC,CAAA;AAEV,EAAA,OAAO,EAAC;AACV;AC9CO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAID,cAAAA,EAAe;AAC7B,EAAA,MAAM,KAAKK,eAAAA,EAAgB;AAE3B,EAAA,MAAM,SAAA,GAAYC,MAAAA,CAAgC,EAAE,CAAA;AAEpD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,iBAAA;AAAA,IAC1B,0BAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AAEpB,EAAA,qBAAA,CAAsB;AAAA,IACpB,SAAA,EAAW,CAAC,IAAA,KAAc;AAExB,MAAA,MAAM,EAAE,EAAA,EAAI,IAAA,EAAM,WAAA,EAAY,GAAI,IAAA;AAClC,MAAA,IAAI,SAAA,GAAY,IAAA;AAGhB,MAAA,IACE,CAAC,SAAA,EAAW,UAAU,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,IACrC,CAAC,WAAA,EAAa,QAAQ,CAAA,CAAE,QAAA,CAAS,WAAW,CAAA,EAC5C;AACA,QAAA,MAAM,QAAA,GAAW,CAAC,CAAC,SAAA,CAAU,QAAQ,EAAE,CAAA;AACvC,QAAA,IAAI,CAAC,QAAA,EAAU;AACb,UAAA,SAAA,CAAU,OAAA,CAAQ,EAAE,CAAA,GAAI,IAAA;AACxB,UAAA,SAAA,CAAU,CAAC,IAAA,MAAmC;AAAA,YAC5C,GAAG,IAAA;AAAA,YACH,CAAC,EAAE,GAAG;AAAA,WACR,CAAE,CAAA;AAAA,QACJ;AACA,QAAA,SAAA,GAAY,CAAC,QAAA;AAAA,MACf;AAEA,MAAA,IAAI,WAAA,KAAgB,eAAe,SAAA,EAAW;AAC5C,QAAA,IAAI,GAAA,GAAM,CAAA,EAAGC,gBAAAA,CAAiB,IAAI,CAAC,CAAA,UAAA,CAAA;AAEnC,QAAA,IAAI,SAAS,SAAA,EAAW;AACtB,UAAA,GAAA,GAAM,EAAE,4BAA4B,CAAA;AAAA,QACtC,CAAA,MAAA,IAAW,SAAS,UAAA,EAAY;AAC9B,UAAA,GAAA,GAAM,EAAE,6BAA6B,CAAA;AAAA,QACvC;AAEA,QAAAN,KAAAA,CAAM,QAAQ,GAAG,CAAA;AAAA,MACnB,CAAA,MAAA,IAAW,WAAA,KAAgB,QAAA,IAAY,SAAA,EAAW;AAChD,QAAA,IAAI,GAAA,GAAM,CAAA,EAAGM,gBAAAA,CAAiB,IAAI,CAAC,CAAA,OAAA,CAAA;AAEnC,QAAA,IAAI,SAAS,SAAA,EAAW;AACtB,UAAA,GAAA,GAAM,EAAE,yBAAyB,CAAA;AAAA,QACnC,CAAA,MAAA,IAAW,SAAS,UAAA,EAAY;AAC9B,UAAA,GAAA,GAAM,EAAE,0BAA0B,CAAA;AAAA,QACpC;AACA,QAAAN,KAAAA,CAAM,MAAM,GAAG,CAAA;AAAA,MACjB;AAEA,MAAA,EAAA,CAAG,IAAA,CAAK,kBAAkB,IAAI,CAAA;AAAA,IAChC;AAAA,GACD,CAAA;AACH;ACxCA,IAAMO,WAAAA,GAAa,qBAAA;AAEZ,IAAM,oBAAA,GAAuB,CAAC,OAAA,KAG/B;AACJ,EAAA,MAAM;AAAA,IACJ,MAAA,EAAQ,eAAA;AAAA,IACR,OAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACEN,kBAAAA,EAAmB;AAQvB,EAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,IAAA,MAAM,IAAI,SAAS,4CAA4C,CAAA;AAAA,EACjE;AAEA,EAAWG,eAAAA;AACX,EAAA,MAAM,eAAA,GAAkBC,OAAgB,KAAK,CAAA;AAC7C,EAAiBF,UAAU,UAAU;AACrC,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,KAAiBK,UAAAA,EAAW;AACpD,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,SAAA,GAAYL,UAAU,WAAW,CAAA;AACvC,EAAA,MAAM,CAAC,MAAA,EAAQ,EAAE,iBAAA,EAAmB,IAAIM,SAAAA,EAAU;AAClD,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAIC,eAAAA,EAAgB;AAE1D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,EAAE,KAAA,EAAO,cAAA,EAAe,GAAI,QAAA,EAAS;AAG3C,EAAA,MAAM,oBAAA,GAAuBC,QAA4B,MAAM;AAC7D,IAAA,OAAO,eAAA,EAAiB,QAAA,GAAW,CAAC,CAAA,EAAG,OAAA;AAAA,EACzC,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAGpB,EAAA,MAAM,YAAA,GAAeA,QAEnB,MAAM;AACN,IAAA,MAAM,EAAA,GAAK,eAAA,EAAiB,MAAA,GAAS,CAAC,CAAA,EAAG,EAAA;AACzC,IAAA,MAAMC,UAAAA,GAAY,eAAA,EAAiB,MAAA,GAAS,CAAC,CAAA,EAAG,SAAA;AAChD,IAAA,IAAI,OAAO,EAAA,KAAO,WAAA,EAAa,OAAO,MAAA;AACtC,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,qBAAqB,EAAE,CAAA;AAAA,MAC3B,SAAA,EAAAA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAAlB,UAAU,MAAM;AACd,IAAA,IACE,YAAA,CAAa,MAAA,IAAU,iBAAA,CAAkB,aAAA,IACzC,QAAQ,SAAA,EACR;AACA,MAAA,cAAA,CAAe,QAAQ,SAAU,CAAA;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,YAAY,CAAC,CAAA;AAE1B,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,WAAA,GAAc,iBAAA;AAAA,MAChB,cAAA,CAAe,EAAA;AAAA,MACf;AAAA;AAAA,KAEF;AACA,IAAA,IACE,qBAAA,CAAsB,IAAI,QAAA,CAAS,cAAA,CAAe,EAAY,CAAC,CAAA,IAC/D,eAAA,EAAiB,KAAA,KAAU,KAAA,EAC3B;AACA,MAAA,WAAA,GAAc,KAAA;AAAA,IAChB;AAEA,IAAA,cAAA,CAAe,CAAC,WAAW,CAAA;AAAA,EAC7B,GAAG,CAAC,cAAA,EAAgB,QAAQ,iBAAA,EAAmB,SAAA,EAAW,eAAe,CAAC,CAAA;AAE1E,EAAAA,UAAU,MAAM;AAGd,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,MAAM,YAAA,GAAe,SAAS,UAAA,EAAW;AACzC,MAAA,MAAM,aAAa,IAAA,CAAK,KAAA,CAAM,aAAa,OAAA,CAAQY,WAAU,KAAK,IAAI,CAAA;AAKtE,MAAA,IAAI,cAAA,EAAgB,SAAA,KAAc,cAAA,CAAe,MAAA,EAAQ;AACvD,QAAA;AAAA,MACF;AACA,MAAA,IAAI,YAAA,EAAc,SAAA,KAAc,cAAA,CAAe,MAAA,EAAQ;AACrD,QAAA;AAAA,MACF;AACA,MAAA,IACE,YAAA,IACA,OAAA,CAAQ,OAAA,KAAY,YAAA,IACpB,WAAW,KAAA,EACX;AACA,QAAA,OAAA,CAAQ;AAAA,UACN,UAAA,EAAY;AAAA,YACV,OAAO,UAAA,CAAW,KAAA;AAAA,YAClB,aAAA,EAAe;AAAA;AACjB,SACD,CAAA,CAAE,IAAA;AAAA,UACD,CAAC,GAAA,KAAQ;AAAA,UAET,CAAA;AAAA,UACA,CAAC,KAAA,KAAU;AAAA,SACb;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,GAAG,CAAC,eAAA,EAAiB,QAAQ,OAAA,EAAS,YAAA,EAAc,SAAS,CAAC,CAAA;AAK9D,EAAAZ,UAAU,MAAM;AACd,IAAA,IACE,eAAA,KAAoB,QACpB,YAAA,CAAa,MAAA,GAAS,kBAAkB,YAAA,IACxC,CAAC,aAAa,UAAA,EACd;AACA,MAAA,OAAA,CAAQ,UAAA,EAAW;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,WAAA,IAAe,CAAC,cAAA,EAAgB;AACpC,IAAA,IAAI,gBAAgB,OAAA,EAAS;AAE7B,IAAA,MAAM,WAAW,iBAAA,EAAkB;AAMnC,IAAA,IACE,CAAC,CAAC,oBAAA,IACF,yBAAyB,OAAA,CAAQ,OAAA,IACjC,CAAC,QAAA,EACD;AACA,MAAA,OAAA,CAAQ,WAAW,oBAAA,EAAsB;AAAA,QACvC,UAAU,eAAA,EAAiB,QAAA;AAAA,QAC3B,KAAA,EAAO;AAAA,UACL,EAAA,EAAI,oBAAA,CAAqB,YAAA,CAAc,EAAE,CAAA;AAAA,UACzC,SAAA,EAAW,YAAA,CAAc,SAAA,CAAU,WAAA;AAAY,SACjD;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,iBAAiB,KAAA,IAAS;AAAA,SAClC;AAAA,QACA,cAAA,EAAgB,eAAA,EAAiB,cAAA,IAAkB;AAAC,OACrD,CAAA;AACD,MAAA,KAAA,CAAM,iBAAiB,aAAA,EAAe;AAAA,QACpC,MAAA,EAAQ,iBAAiB,KAAA,IAAS,EAAA;AAAA,QAClC,OAAA,EAAS,YAAA,CAAc,SAAA,CAAU,WAAA;AAAY,OAC9C,CAAA;AAGD,MAAA,WAAA,CAAY,MAAM;AAChB,QAAA,YAAA,CAAa,OAAA;AAAA,UACXY,WAAAA;AAAA,UACA,KAAK,SAAA,CAAU;AAAA,YACb,KAAA,EAAO,iBAAiB,KAAA,IAAS;AAAA,WAClC;AAAA,SACH;AACA,QAAA,eAAA,CAAgB,aAAc,EAAE,CAAA;AAAA,MAClC,CAAC,CAAA;AAAA,IACH;AAKA,IAAA,IAAI,YAAA,EAAc,EAAA,KAAO,OAAA,CAAQ,OAAA,EAAS;AACxC,MAAA,OAAA,CAAQ,aAAA,CAAc,cAAc,EAAG,CAAA;AAAA,IAIzC;AAAA,EACF,CAAA,EAAG;AAAA,IACD,eAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA,CAAQ,OAAA;AAAA,IACR,YAAA;AAAA,IACA,OAAA,CAAQ,OAAA;AAAA,IACR;AAAA,GACD,CAAA;AAKD,EAAA,MAAM,gBAAgB,YAIT;AACX,IAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAG1B,IAAA,OAAO,OAAA,CAAQ,EAAE,OAAA,EAAS,OAAA,CAAQ,gBAAgB,CAAA,CAC/C,IAAA,CAAK,OAAO,WAAA,KAAgB;AAC3B,MAAA,IACE,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,IACzB,YAAY,MAAA,GAAS,CAAA,IACrB,WAAA,CAAY,CAAC,KACb,WAAA,CAAY,CAAC,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EACjC;AACA,QAAA,MAAM,MAAA,GAAS,YAAY,CAAC,CAAA;AAC5B,QAAA,MAAM,UAAU,oBAAA,CAAqB,MAAA,CAAO,MAAA,CAAO,CAAC,EAAE,EAAE,CAAA;AAExD,QAAA,IAAI,CAAC,iBAAA,CAAkB,OAAA,EAAS,SAAS,CAAA,EAAG;AAC1C,UAAA,OAAO;AAAA,YACL,YAAA,EAAc;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,QAC9C;AAEA,QAAA,IACE,YAAA,CAAa,MAAA,KACb,iBAAA,CAAkB,6BAAA,EAClB;AACA,UAAA,YAAA,CAAa,WAAW,qBAAqB,CAAA;AAC7C,UAAA,MAAM,QAAQ,UAAA,EAAW;AAAA,QAC3B;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,UAAA,CAAW,OAAO,QAAA,CAAS,CAAC,EAAE,OAAA,EAAS;AAAA,UAClE,UAAU,MAAA,CAAO,QAAA;AAAA,UACjB,KAAA,EAAO;AAAA,YACL,IAAI,oBAAA,CAAqB,MAAA,CAAO,MAAA,CAAO,CAAC,EAAE,EAAE,CAAA;AAAA,YAC5C,WACE,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,CAAE,UAAU,WAAA;AAAY,WAC3C;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,MAAM,MAAA,CAAO;AAAA;AACf;AAAA,SAED,CAAA;AACD,QAAA,KAAA,CAAM,iBAAiB,aAAA,EAAe;AAAA,UACpC,QAAQ,MAAA,CAAO,KAAA;AAAA,UACf,SAAS,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,CAAE,UAAU,WAAA;AAAY,SACjD,CAAA;AAGD,QAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,YAAA,EAAc,KAAA,EAAM;AAAA,MAC/C;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA,CACA,OAAA,CAAQ,MAAM;AACb,MAAA,eAAA,CAAgB,OAAA,GAAU,KAAA;AAAA,IAC5B,CAAC,CAAA;AAAA,EACL,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,aAAA;AAAA,IACA,YAAA,EAAc;AAAA,GAChB;AACF,CAAA;ACtPO,IAAM,kBAAkBO,aAAAA,CAA+B;AAAA,EAC5D,iBAAA,EAAmB,CAAC,OAAA,KAAqB;AAAA,EAAC,CAAA;AAAA,EAC1C,gBAAgB,EAAC;AAAA,EACjB,mBAAA,EAAqB,CAAC,IAAA,KAAkB;AAAA,EAAC;AAC3C,CAAoB,CAAA;AAEb,IAAM,gBAAgB,MAAM;AACjC,EAAA,OAAOC,WAAW,eAAe,CAAA;AACnC;ACjCO,IAAM,gBAAA,GAAiE,CAC5E,KAAA,KACG;AACH,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIJ,SAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,iBAAA;AAAA,IAC1C,KAAA,CAAM;AAAA,GACR;AACA,EAAA,aAAA,EAAc;AACd,EAAA,mBAAA,EAAoB;AAEpB,EAAA,MAAM,EAAE,aAAA,EAAe,YAAA,EAAa,GAAI,oBAAA,CAAqB;AAAA;AAAA,IAE3D;AAAA,GACD,CAAA;AAED,EAAA,cAAA,EAAe;AACf,EAAA,cAAA,EAAe;AACf,EAAA,oBAAA,EAAqB;AACrB,EAAA,qBAAA,EAAsB;AAEtB,EAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,KAAA,CAAM,cAAc,CAAA;AAE7D,EAAA,MAAM,kBAAkB,cAAA,CAAe,cAAA;AAEvC,EAAAhB,UAAU,MAAM;AACd,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgBiB,OAAAA;AAAA,IACpB,OAAO;AAAA,MACL,aAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAgB,KAAA,CAAM,cAAA;AAAA,MACtB,eAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,mBAAA;AAAA,MACA,eAAe,KAAA,CAAM,aAAA;AAAA,MACrB,eAAe,KAAA,CAAM,aAAA;AAAA,MACrB;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,aAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,KAAA,CAAM,cAAA;AAAA,MACN,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA,CAAM,aAAA;AAAA,MACN,KAAA,CAAM,aAAA;AAAA,MACN;AAAA;AACF,GACF;AAEA,EAAA,uBACEd,IAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,aAAA,EAC9B,gBAAM,QAAA,EACT,CAAA;AAEJ,CAAA;AClEA,IAAM,0BAAoC,MAAM;AAC9C,EAAA,kBAAA,EAAmB;AACnB,EAAA,OAAO,IAAA;AACT,CAAA;AAEA,IAAM,kBAAA,GAAwD,CAAC,KAAA,KAAU;AACvE,EAAA,MAAM;AAAA;AAAA,IAEJ,UAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAAkB,QAAAA,EAAS;AACT,EAAA,YAAA,EAAa;AAEb,EAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,EAAA,uBACElB,GAAAA,CAAC,iBAAA,EAAA,EAAkB,UAAoB,UAAA,EAAY,KAAA,CAAM,YACvD,QAAA,kBAAAA,GAAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MAEC,UAAA;AAAA,MACA,WAAW,KAAA,CAAM,SAAA;AAAA,MAEjB,QAAA,kBAAAmB,IAAAA,CAAC,qBAAA,EAAA,EAAuB,GAAG,WAAA,EACzB,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,qBAAA,EAAA,EAAsB,OAAA,EAAS,OAAA,IAAW,EAAC,EAC1C,QAAA,EAAA;AAAA,0BAAAnB,IAAC,uBAAA,EAAA,EAAwB,CAAA;AAAA,0BACzBA,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,cAAA;AAAA,cACA,YAAA;AAAA,cACA,gBAAgB,KAAA,CAAM,cAAA;AAAA,cACtB,eAAe,KAAA,CAAM,aAAA;AAAA,cACrB,aAAA;AAAA,cAEA,0BAAAA,GAAAA,CAACoB,cAAA,EAAA,EAAiB,MAAA,EAAQ,QAAA,EACxB,0BAAApB,GAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,GAAA,EAC9B,0BAAAA,GAAAA,CAAC,aAAA,EAAA,EAAe,QAAA,EAAA,KAAA,CAAM,QAAA,EAAS,GACjC,CAAA,EACF;AAAA;AAAA;AACF,SAAA,EACF,CAAA;AAAA,wBACAA,IAAC,OAAA,EAAA,EAAQ;AAAA,OAAA,EACX;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,EAAA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AACnC;AC1EO,IAAM,UAAA,GAAa,CACxB,IAAA,EACA,OAAA,KAKa;AACb,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAI,aAAA,EAAc;AACxD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIU,UAAAA,EAAW;AAI7B,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,gBAAgB,eAAA,EAAiB;AACnC,IAAA,OAAO,OAAO,OAAA,EAAS,YAAA,KAAiB,WAAA,GACpC,QAAQ,YAAA,GACR,IAAA;AAAA,EACN;AAEA,EAAA,IAAI,OAAO,OAAA,EAAS,aAAA,KAAkB,WAAA,EAAa;AACjD,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,OAAA,CAAQ,aAAA,EAAe;AACxC,MAAA,OAAO,OAAO,OAAA,EAAS,YAAA,KAAiB,WAAA,GACpC,QAAQ,YAAA,GACR,IAAA;AAAA,IACN;AAAA,EACF;AAQA,EAAA,OAAO,IAAA;AACT;AC/BO,SAAS,0BACd,MAAA,EACA;AACA,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIT,cAAAA,EAAe;AAE7B,EAAA,MAAM,UAAA,GAAa,CACjB,GAAA,EACA,IAAA,EACA,MAAA,KAKG;AACH,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAK,GAAA,EAAI,GAAI,UAAU,EAAC;AACvC,IAAA,MAAM,GAAA,GAAiE;AAAA,MACrE,QAAA,EAAU;AAAA,QACR,QAAA,EAAU,EAAE,yCAAyC,CAAA;AAAA,QACrD,GAAA,EAAK,CAAA,CAAE,oCAAA,EAAsC,EAAE,OAAO,CAAA;AAAA,QACtD,GAAA,EAAK,CAAA,CAAE,oCAAA,EAAsC,EAAE,OAAO;AAAA,OACxD;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,EAAE,yCAAyC,CAAA;AAAA,QACrD,GAAA,EAAK,CAAA,CAAE,oCAAA,EAAsC,EAAE,OAAO,CAAA;AAAA,QACtD,GAAA,EAAK,CAAA,CAAE,oCAAA,EAAsC,EAAE,OAAO;AAAA,OACxD;AAAA,MACA,WAAA,EAAa;AAAA,QACX,QAAA,EAAU,EAAE,sCAAsC,CAAA;AAAA,QAClD,GAAA,EAAK,CAAA,CAAE,iCAAA,EAAmC,EAAE,OAAO,CAAA;AAAA,QACnD,GAAA,EAAK,CAAA,CAAE,iCAAA,EAAmC,EAAE,OAAO;AAAA,OACrD;AAAA,MACA,aAAA,EAAe;AAAA,QACb,QAAA,EAAU,EAAE,wCAAwC,CAAA;AAAA,QACpD,GAAA,EAAK,CAAA,CAAE,mCAAA,EAAqC,EAAE,OAAO,CAAA;AAAA,QACrD,GAAA,EAAK,CAAA,CAAE,mCAAA,EAAqC,EAAE,OAAO;AAAA,OACvD;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,QAAA,EAAU,EAAE,6CAA6C,CAAA;AAAA,QACzD,GAAA,EAAK,CAAA,CAAE,qCAAA,EAAuC,EAAE,OAAO,CAAA;AAAA,QACvD,GAAA,EAAK,CAAA,CAAE,qCAAA,EAAuC,EAAE,OAAO,CAAA;AAAA,QACvD,aAAA,EAAe,EAAE,kDAAkD,CAAA;AAAA,QACnE,aAAA,EAAe,EAAE,kDAAkD;AAAA,OACrE;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,QAAA,EAAU,EAAE,6CAA6C,CAAA;AAAA,QACzD,GAAA,EAAK,CAAA,CAAE,qCAAA,EAAuC,EAAE,OAAO,CAAA;AAAA,QACvD,GAAA,EAAK,CAAA,CAAE,qCAAA,EAAuC,EAAE,OAAO,CAAA;AAAA,QACvD,aAAA,EAAe,EAAE,kDAAkD,CAAA;AAAA,QACnE,aAAA,EAAe,EAAE,kDAAkD,CAAA;AAAA,QACnE,CAAC,eAAA,CAAgB,gBAAgB,GAAG,CAAA;AAAA,UAClC;AAAA,SACF;AAAA,QACA,CAAC,eAAA,CAAgB,cAAc,GAAG,CAAA;AAAA,UAChC;AAAA;AACF,OACF;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,EAAE,2CAA2C,CAAA;AAAA,QACvD,GAAA,EAAK,CAAA,CAAE,sCAAA,EAAwC,EAAE,OAAO,CAAA;AAAA,QACxD,GAAA,EAAK,CAAA,CAAE,sCAAA,EAAwC,EAAE,OAAO;AAAA,OAC1D;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,EAAE,2CAA2C,CAAA;AAAA,QACvD,GAAA,EAAK,CAAA,CAAE,sCAAA,EAAwC,EAAE,OAAO,CAAA;AAAA,QACxD,GAAA,EAAK,CAAA,CAAE,sCAAA,EAAwC,EAAE,OAAO;AAAA,OAC1D;AAAA,MACA,KAAA,EAAO;AAAA,QACL,GAAA,EAAK,CAAA,CAAE,4BAAA,EAA8B,EAAE,OAAO;AAAA,OAChD;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,EAAa;AAAA,QACX,QAAA,EAAU,EAAE,sCAAsC,CAAA;AAAA,QAClD,GAAA,EAAK,CAAA,CAAE,iCAAA,EAAmC,EAAE,OAAO,CAAA;AAAA,QACnD,GAAA,EAAK,CAAA,CAAE,iCAAA,EAAmC,EAAE,OAAO;AAAA,OACrD;AAAA,MACA,SAAA,EAAW;AAAA,QACT,QAAA,EAAU,EAAE,oCAAoC,CAAA;AAAA,QAChD,GAAA,EAAK,CAAA,CAAE,+BAAA,EAAiC,EAAE,OAAO,CAAA;AAAA,QACjD,GAAA,EAAK,CAAA,CAAE,+BAAA,EAAiC,EAAE,OAAO;AAAA,OACnD;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,QAAA,EAAU,EAAE,uCAAuC,CAAA;AAAA,QACnD,KAAA,EAAO,EAAE,oCAAoC;AAAA,OAC/C;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,QAAA,EAAU,EAAE,gCAAgC,CAAA;AAAA,QAC5C,GAAA,EAAK,CAAA,CAAE,2BAAA,EAA6B,EAAE,OAAO,CAAA;AAAA,QAC7C,GAAA,EAAK,CAAA,CAAE,2BAAA,EAA6B,EAAE,OAAO;AAAA,OAC/C;AAAA,MACA,eAAA,EAAiB;AAAA,QACf,GAAA,EAAK,CAAA,CAAE,mCAAA,EAAqC,EAAE,OAAO,CAAA;AAAA,QACrD,GAAA,EAAK,CAAA,CAAE,mCAAA,EAAqC,EAAE,OAAO;AAAA,OACvD;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,EAAE,yCAAyC,CAAA;AAAA,QACrD,GAAA,EAAK,CAAA,CAAE,oCAAA,EAAsC,EAAE,OAAO,CAAA;AAAA,QACtD,KAAA,EAAO,EAAE,sCAAA,EAAwC;AAAA,UAC/C,GAAA;AAAA,UACA;AAAA,SACD;AAAA,OACH;AAAA,MACA,aAAA,EAAe;AAAA,QACb,QAAA,EAAU,EAAE,wCAAwC,CAAA;AAAA,QACpD,KAAA,EAAO,EAAE,qCAAA,EAAuC;AAAA,UAC9C,GAAA;AAAA,UACA;AAAA,SACD;AAAA;AACH,KACF;AAEA,IAAA,OAAO,GAAA,CAAI,GAAG,CAAA,GAAI,IAAI,CAAA,IAAK,EAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,MAAM,WAAA,GAAcoB,WAAAA;AAAA,IAClB,CAAC,KAAW,WAAA,KAAyB;AACnC,MAAA,MAAM,EAAE,MAAM,KAAA,EAAO,GAAA,EAAK,KAAI,GAAI,MAAA,GAAS,GAAG,CAAA,IAAM,EAAC;AACrD,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,OAAO,UAAA,CAAW,KAAK,IAAA,EAAM,EAAE,OAAO,WAAA,IAAe,KAAA,EAAO,GAAA,EAAK,GAAA,EAAK,CAAA;AAAA,MACxE;AACA,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF;ACxIO,SAAS,WAAA,GAAc;AAC5B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIX,UAAAA,EAAW;AAE7B,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAI,aAAA,EAAc;AAExD,EAAA,MAAM,QAAA,GAAWI,QAAQ,MAAM;AAC7B,IAAA,OACE,CAAC,YAAA,IACD,CAAC,eAAA,KACA,KAAA,CAAM,WAAWQ,iBAAAA,CAAkB,aAAA,IAClC,KAAA,CAAM,MAAA,KAAWA,iBAAAA,CAAkB,6BAAA,CAAA;AAAA,EAEzC,GAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,YAAA,EAAc,eAAe,CAAC,CAAA;AAEhD,EAAA,OAAO,QAAA;AACT","file":"index.mjs","sourcesContent":["import { useEffect } from \"react\";\n\nexport const useBootstrap = () => {\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API, OrderStatus, OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { parseNumber } from \"@orderly.network/ui\";\nimport {\n capitalizeString,\n transSymbolformString,\n} from \"@orderly.network/utils\";\n\nfunction getDisplaySide(side: string) {\n if (side === \"BUY\") {\n return i18n.t(\"common.buy\");\n } else if (side === \"SELL\") {\n return i18n.t(\"common.sell\");\n }\n return capitalizeString(side);\n}\n\ntype AlgoOrderFieldChanges = Partial<\n Record<OrderType, Partial<Record<keyof API.AlgoOrder, boolean>>>\n>;\n\nexport function getOrderExecutionReportMsg(\n data: (API.AlgoOrder | API.Order) & {\n fieldChanges?: AlgoOrderFieldChanges;\n },\n symbolsInfo: any,\n) {\n const { symbol, side, quantity, client_order_id, fieldChanges } = data;\n const total_executed_quantity =\n \"total_executed_quantity\" in data ? data.total_executed_quantity : 0;\n const status = \"status\" in data ? data.status : data.algo_status;\n const getSymbolInfo = symbolsInfo[symbol];\n const base_dp = getSymbolInfo(\"base_dp\");\n const quote_dp = getSymbolInfo(\"quote_dp\");\n const displaySide = getDisplaySide(side);\n const displaySymbol = transSymbolformString(symbol);\n const displayQuantity =\n \"algo_type\" in data && data.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL\n ? i18n.t(\"tpsl.entirePosition\")\n : base_dp === undefined\n ? quantity\n : parseNumber(quantity, { dp: base_dp });\n\n let title = \"\";\n let msg = \"\";\n switch (status) {\n case OrderStatus.NEW:\n const isScaledOrder = client_order_id?.startsWith(\"scaled_\");\n // if client_order_id is scaled order, show the scaled order message\n if (isScaledOrder) {\n title = i18n.t(\"orders.status.scaledSubOrderOpened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n } else {\n title = i18n.t(\"orders.status.opened.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n }\n\n break;\n case OrderStatus.FILLED:\n case OrderStatus.PARTIAL_FILLED:\n const displayTotalExecutedQuantity =\n base_dp === undefined\n ? total_executed_quantity\n : parseNumber(total_executed_quantity, { dp: base_dp });\n title = i18n.t(\"orders.status.filled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayTotalExecutedQuantity} / ${displayQuantity}`;\n break;\n case OrderStatus.CANCELLED:\n title = i18n.t(\"orders.status.canceled.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REJECTED:\n title = i18n.t(\"orders.status.rejected.toast.title\");\n msg = `${displaySide} ${displaySymbol} ${displayQuantity}`;\n break;\n case OrderStatus.REPLACED:\n const { algo_type, activated_price } = data as API.AlgoOrder;\n if (algo_type === AlgoOrderRootType.TRAILING_STOP) {\n const fieldChange =\n fieldChanges?.[AlgoOrderRootType.TRAILING_STOP] || {};\n // when trailing stop order is activated, and extreme_price will also changed\n if (\n fieldChange.is_activated &&\n fieldChange.extreme_price &&\n activated_price\n ) {\n title = i18n.t(\"orders.trailingStop.activated\");\n msg = `${displaySymbol} @${activated_price}`;\n } else if (fieldChange.extreme_price) {\n // if extreme_price is changed, skip show the message\n title = \"\";\n msg = \"\";\n }\n } else {\n title = i18n.t(\"orders.status.replaced.toast.title\");\n msg = `${side} ${displaySymbol} ${total_executed_quantity} / ${displayQuantity}`;\n }\n\n break;\n default:\n break;\n }\n\n return {\n title,\n msg,\n status,\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef } from \"react\";\nimport {\n useSymbolsInfo,\n useEventEmitter,\n useDebouncedCallback,\n useAudioPlayer,\n useLocalStorage,\n useOrderlyContext,\n} from \"@orderly.network/hooks\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getOrderExecutionReportMsg } from \"./getOrderExecutionReportMsg\";\n\nexport const ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nexport const ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nexport const useExecutionReport = () => {\n const ee = useEventEmitter();\n\n const symbolsInfo = useSymbolsInfo();\n const symbolsInfoRef = useRef({});\n\n const { notification } = useOrderlyContext();\n\n useEffect(() => {\n symbolsInfoRef.current = symbolsInfo;\n }, [symbolsInfo]);\n\n const orderFilledConfig = notification?.orderFilled;\n const soundOptions = orderFilledConfig?.soundOptions;\n\n const defaultSoundValue =\n orderFilledConfig?.defaultSoundValue ?? soundOptions?.[0]?.value;\n\n const [selectedSoundValue] = useLocalStorage<string | null>(\n ORDERLY_ORDER_SOUND_OPTION_KEY,\n defaultSoundValue ?? null,\n );\n\n const selectedOption =\n soundOptions?.find((option) => option.value === selectedSoundValue) ??\n soundOptions?.[0];\n\n const src =\n (soundOptions && soundOptions.length ? selectedOption?.media : undefined) ??\n orderFilledConfig?.media ??\n \"\";\n\n const [soundAutoPlay] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n orderFilledConfig?.defaultOpen ?? false,\n );\n\n const { play: playOrderFilledSound } = useAudioPlayer(src, {\n enabled: soundAutoPlay,\n volume: 1,\n });\n\n const handler = useDebouncedCallback((data: any) => {\n const showToast = (data: any) => {\n const { title, msg, status } = getOrderExecutionReportMsg(\n data,\n symbolsInfoRef.current,\n );\n const isFilled =\n status === OrderStatus.FILLED || status === OrderStatus.PARTIAL_FILLED;\n if (isFilled) {\n playOrderFilledSound();\n }\n // only show latest msg for same order type\n const orderType = data.algo_type || data.type;\n if (title && msg) {\n toast.success(\n <div>\n {title}\n <br />\n <div className=\"orderly-text-white/[0.54] orderly-text-xs\">\n {msg}\n </div>\n </div>,\n { id: orderType },\n );\n }\n };\n showToast(data);\n }, 100);\n\n useEffect(() => {\n ee.on(\"orders:changed\", handler);\n return () => {\n ee.off(\"orders:changed\", handler);\n handler.cancel();\n };\n }, [ee, handler]);\n};\n","import { useMemo } from \"react\";\nimport {\n useTranslation,\n useLocaleCode,\n LocaleEnum,\n} from \"@orderly.network/i18n\";\nimport { Locale } from \"@orderly.network/ui\";\nimport { enUS, zhCN, ja, es, ko, vi, de, fr, nl } from \"date-fns/locale\";\n\nexport function useUILocale() {\n const { t } = useTranslation();\n const localeCode = useLocaleCode();\n\n return useMemo<Locale>(() => {\n const calendarLocale = {\n [LocaleEnum.en]: enUS,\n [LocaleEnum.zh]: zhCN,\n // [LocaleEnum.ja]: ja,\n // [LocaleEnum.es]: es,\n // [LocaleEnum.ko]: ko,\n // [LocaleEnum.vi]: vi,\n // [LocaleEnum.de]: de,\n // [LocaleEnum.fr]: fr,\n // [LocaleEnum.nl]: nl,\n };\n return {\n locale: localeCode,\n dialog: {\n ok: t(\"common.ok\"),\n cancel: t(\"common.cancel\"),\n },\n modal: {\n confirm: t(\"common.confirm\"),\n cancel: t(\"common.cancel\"),\n },\n pagination: {\n morePages: t(\"ui.pagination.morePages\"),\n rowsPerPage: t(\"ui.pagination.rowsPerPage\"),\n },\n picker: {\n selectDate: t(\"ui.picker.selectDate\"),\n dayPicker: calendarLocale[localeCode as keyof typeof calendarLocale],\n },\n empty: {\n description: t(\"ui.empty.description\"),\n },\n } as const;\n }, [t, localeCode]);\n}\n","import { createContext, useContext } from \"react\";\nimport { AppLogos } from \"../types\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigContext = createContext({} as ThemeContextState);\n\nexport const useAppConfig = () => {\n return useContext(AppConfigContext);\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { AppLogos } from \"../types\";\nimport { AppConfigContext } from \"./appConfigContext\";\n\nexport type ThemeContextState = {\n appIcons?: AppLogos;\n brokerName: string;\n};\n\nexport const AppConfigProvider: FC<\n PropsWithChildren<{ appIcons?: AppLogos; brokerName: string }>\n> = (props) => {\n return (\n <AppConfigContext.Provider value={props}>\n {props.children}\n </AppConfigContext.Provider>\n );\n};\n","import { useEffect } from \"react\";\nimport { useWS } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useAssetconvertEvent = () => {\n const ws = useWS();\n const { t } = useTranslation();\n useEffect(() => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"assetconvert\",\n event: \"subscribe\",\n topic: \"assetconvert\",\n ts: getTimestamp(),\n },\n {\n onMessage(data) {\n if (data.convertId) {\n toast.success(t(\"transfer.convert.completed\"));\n }\n },\n },\n );\n return () => unsubscribe();\n }, []);\n};\n","import { useEffect, useState } from \"react\";\nimport {\n Chains,\n useChains,\n useConfig,\n useStorageChain,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { Chain, NetworkId } from \"@orderly.network/types\";\ntype ReturnChain = Pick<Chain, \"id\"> & Partial<Omit<Chain, \"id\">>;\n\nexport type DefaultChain =\n | {\n mainnet?: ReturnChain;\n testnet?: ReturnChain;\n }\n | ((networkId: NetworkId, chains: Chains) => ReturnChain)\n | undefined;\n\nexport function useCurrentChainId(defaultChain?: DefaultChain) {\n const { storageChain, setStorageChain } = useStorageChain();\n const [currentChainId, setCurrentChainId] = useState<number | undefined>();\n\n const [chains] = useChains();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { connectedChain } = useWalletConnector();\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId?.(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n let fallbackChain: Partial<Chain> | undefined;\n\n const firstChain =\n networkId === \"mainnet\" ? chains.mainnet?.[0] : chains.testnet?.[0];\n\n if (typeof defaultChain === \"function\") {\n fallbackChain = defaultChain(networkId, chains);\n } else if (typeof defaultChain === \"object\") {\n fallbackChain =\n networkId === \"mainnet\"\n ? defaultChain?.mainnet\n : defaultChain?.testnet;\n }\n\n const chainId = fallbackChain?.id || firstChain?.network_infos?.chain_id;\n if (!chainId) return;\n\n if (storageChain) {\n setCurrentChainId?.(storageChain.chainId);\n } else {\n setStorageChain(chainId);\n setCurrentChainId?.(chainId);\n \n }\n }\n }, [\n connectedChain,\n chains,\n currentChainId,\n networkId,\n setCurrentChainId,\n defaultChain,\n ]);\n\n return [currentChainId, setCurrentChainId] as const;\n}\n","import { useCallback, useEffect } from \"react\";\nimport {\n parseJSON,\n useAccount,\n useConfig,\n useLocalStorage,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\n\ntype DecodedData = {\n /** secret key */\n k: string;\n /* timestamp */\n t: number;\n /** address */\n a: string;\n /** chain id */\n i: number;\n /** chain namespace */\n n: ChainNamespace;\n};\n\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport function useLinkDevice() {\n const { connectedChain, disconnect } = useWalletConnector();\n const [_, setLinkDeviceStorage] = useLocalStorage(\n \"orderly_link_device\",\n {} as LinkDeviceStorage,\n );\n\n const { account } = useAccount();\n const { isMobile } = useScreen();\n const configStore = useConfig();\n\n const onDisconnect = async (label: string) => {\n // The cache must be cleared first, otherwise it will be auto connect wallet\n localStorage.removeItem(WALLET_KEY);\n await account.disconnect();\n await disconnect({ label });\n };\n\n useEffect(() => {\n const linkData = getLinkDeviceData();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n if (linkData && walletInfo) {\n // clear connect data when link device\n onDisconnect(walletInfo.label);\n }\n }, []);\n\n const linkDevice = async () => {\n const linkData = getLinkDeviceData();\n if (!linkData) return;\n\n const { address, secretKey, chainId, chainNamespace } = linkData;\n const isSuccess = await account.importOrderlyKey({\n address,\n secretKey,\n chainNamespace,\n });\n if (!isSuccess) return;\n setLinkDeviceStorage({\n chainId,\n chainNamespace,\n });\n\n const url = new URL(window.location.href);\n url.searchParams.delete(\"link\");\n // use set instead of append, because the param possibly in the url\n url.searchParams.set(\"utm_medium\", \"qrcode\");\n const decodedUrl = decodeURIComponent(url.toString());\n history.replaceState(null, \"\", decodedUrl);\n };\n\n useEffect(() => {\n if (isMobile && !connectedChain) {\n linkDevice();\n }\n }, [account, connectedChain, isMobile]);\n\n const autoLinkDevice = async () => {\n // this can't use the value returned by useLocalStorage here, because it will trigger extra state change\n const { chainId, chainNamespace } = getLinkDeviceStorage() || {};\n if (isMobile && !connectedChain && chainId && chainNamespace) {\n const address = account.keyStore.getAddress();\n const orderlyKey = account.keyStore.getOrderlyKey();\n const accountId = account.keyStore.getAccountId(address!);\n const res = await account.checkOrderlyKey(\n address!,\n orderlyKey!,\n accountId!,\n );\n if (res) {\n configStore.set(\"chainNamespace\", chainNamespace);\n }\n }\n };\n\n // persist status when refresh page\n useEffect(() => {\n autoLinkDevice();\n }, [account, isMobile, connectedChain]);\n\n return { linkDevice };\n}\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n\nexport function getLinkDeviceData() {\n const url = new URL(window.location.href);\n const link = url.searchParams.get(\"link\");\n\n if (!link) return;\n\n const {\n a: address,\n k: secretKey,\n i: chainId,\n n: chainNamespace,\n } = decodeBase64(link) || {};\n\n if (address && secretKey && chainId && chainNamespace) {\n return {\n address,\n secretKey,\n chainId,\n chainNamespace,\n };\n }\n}\n\nfunction decodeBase64(base64: string) {\n try {\n const data = JSON.parse(window.atob(base64)) as DecodedData;\n console.log(\"decodeBase64\", data);\n const currentTime = Math.floor(Date.now() / 1000);\n const expiredTime = data.t;\n\n if (!expiredTime || currentTime > expiredTime) {\n console.error(\"Orderly key has expired.\");\n return;\n }\n\n return data;\n } catch (error) {\n console.error(\"Invalid or expired orderly key.\");\n }\n}\n","import { useSettleSubscription } from \"@orderly.network/hooks\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport function useSettleEvent() {\n const { t } = useTranslation();\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n // console.log(\"settle ws: \", data);\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(t(\"settle.settlement.completed\"));\n break;\n case \"FAILED\":\n toast.error(t(\"settle.settlement.failed\"));\n break;\n default:\n break;\n }\n },\n });\n}\n","import { useEffect } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useStorageLedgerAddress } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { LedgerWalletKey } from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\n\nexport function useWalletConnectError() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n const { setLedgerAddress } = useStorageLedgerAddress();\n\n useEffect(() => {\n const handleConnectError = (data: { message: string }) => {\n toast.error(data.message);\n };\n\n const handleLedgerError = (data: {\n userAddress: string;\n message: string;\n }) => {\n window.setTimeout(() => {\n modal\n .confirm({\n title: t(\"connector.ledger.signMessageFailed\"),\n content: t(\"connector.ledger.signMessageFailed.description\"),\n size: \"sm\",\n onOk: async () => {\n console.log(\"-- use ledger\", true);\n setLedgerAddress(data.userAddress);\n\n return Promise.resolve();\n },\n okLabel: t(\"common.ok\"),\n onCancel: async () => {\n toast.error(data.message);\n return Promise.resolve();\n },\n cancelLabel: t(\"common.no\"),\n })\n .then((res) => {\n console.log(\"-- dialog res\", res);\n });\n });\n };\n\n ee.on(\"wallet:connect-error\", handleConnectError);\n ee.on(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n\n return () => {\n ee.off(\"wallet:connect-error\", handleConnectError);\n ee.off(\"wallet:sign-message-with-ledger-error\", handleLedgerError);\n };\n }, [ee, t]);\n\n return {};\n}\n","import { useRef } from \"react\";\nimport {\n useEventEmitter,\n useSessionStorage,\n useWalletSubscription,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\n\nexport function useWalletEvent() {\n const { t } = useTranslation();\n const ee = useEventEmitter();\n\n const recordRef = useRef<Record<number, boolean>>({});\n\n const [record, setRecord] = useSessionStorage(\n \"orderly_wallet_change_id\",\n {} as Record<number, boolean>,\n );\n\n recordRef.current = record;\n\n useWalletSubscription({\n onMessage: (data: any) => {\n console.log(\"wallet:changed\", data);\n const { id, side, transStatus } = data;\n let showToast = true;\n\n // DEPOSIT and WITHDRAW will push twice COMPLETED and FAILED event\n if (\n [\"DEPOSIT\", \"WITHDRAW\"].includes(side) &&\n [\"COMPLETED\", \"FAILED\"].includes(transStatus)\n ) {\n const isPushed = !!recordRef.current[id];\n if (!isPushed) {\n recordRef.current[id] = true;\n setRecord((prev: Record<number, boolean>) => ({\n ...prev,\n [id]: true,\n }));\n }\n showToast = !isPushed;\n }\n\n if (transStatus === \"COMPLETED\" && showToast) {\n let msg = `${capitalizeString(side)} completed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.completed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.completed\");\n }\n\n toast.success(msg);\n } else if (transStatus === \"FAILED\" && showToast) {\n let msg = `${capitalizeString(side)} failed`;\n\n if (side === \"DEPOSIT\") {\n msg = t(\"transfer.deposit.failed\");\n } else if (side === \"WITHDRAW\") {\n msg = t(\"transfer.withdraw.failed\");\n }\n toast.error(msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useConfig,\n useEventEmitter,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport {\n useAccount,\n useChains,\n useKeyStore,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n SDKError,\n ChainNamespace,\n NetworkId,\n TrackerEventName,\n ABSTRACT_CHAIN_ID_MAP,\n} from \"@orderly.network/types\";\nimport {\n parseChainIdToNumber,\n praseChainIdToNumber,\n windowGuard,\n} from \"@orderly.network/utils\";\nimport { getLinkDeviceData } from \"./useLinkDevice\";\n\nconst WALLET_KEY = \"orderly:wallet-info\";\n\nexport const useWalletStateHandle = (options: {\n // onChainChanged?: (chainId: number, isTestnet: boolean) => void;\n currentChainId?: number;\n}) => {\n const {\n wallet: connectedWallet,\n connect,\n connectedChain,\n disconnect,\n namespace,\n } = useWalletConnector();\n //\n // console.log(\"🔗 wallet state handle\", {\n // connectedWallet,\n // connectedChain,\n // namespace,\n // });\n\n if (typeof connect !== \"function\") {\n throw new SDKError(\"Please provide a wallet connector provider\");\n }\n\n const ee = useEventEmitter();\n const isManualConnect = useRef<boolean>(false);\n const brokerId = useConfig(\"brokerId\");\n const { account, state: accountState } = useAccount();\n const keyStore = useKeyStore();\n const networkId = useConfig(\"networkId\") as NetworkId;\n const [chains, { checkChainSupport }] = useChains();\n const { storageChain, setStorageChain } = useStorageChain();\n\n const [unsupported, setUnsupported] = useState(false);\n const { track, setTrackUserId } = useTrack();\n\n // current connected wallet address\n const currentWalletAddress = useMemo<string | undefined>(() => {\n return connectedWallet?.accounts?.[0]?.address;\n }, [connectedWallet]);\n\n // current connected chain id\n const currentChain = useMemo<\n { id: number; namespace: string } | undefined\n >(() => {\n const id = connectedWallet?.chains?.[0]?.id;\n const namespace = connectedWallet?.chains?.[0]?.namespace as string;\n if (typeof id === \"undefined\") return undefined;\n return {\n id: parseChainIdToNumber(id),\n namespace,\n };\n }, [connectedWallet]);\n\n useEffect(() => {\n if (\n accountState.status >= AccountStatusEnum.EnableTrading &&\n account.accountId\n ) {\n setTrackUserId(account.accountId!);\n }\n }, [account, accountState]);\n\n useEffect(() => {\n if (!connectedChain) {\n setUnsupported(false);\n return;\n }\n\n let isSupported = checkChainSupport(\n connectedChain.id,\n networkId,\n // networkId === \"testnet\" ? chains.testnet : chains.mainnet\n );\n if (\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain.id as string)) &&\n connectedWallet?.label !== \"AGW\"\n ) {\n isSupported = false;\n }\n\n setUnsupported(!isSupported);\n }, [connectedChain, chains, checkChainSupport, networkId, connectedWallet]);\n\n useEffect(() => {\n // if (unsupported) return;\n\n windowGuard(() => {\n const localAddress = keyStore.getAddress();\n const walletInfo = JSON.parse(localStorage.getItem(WALLET_KEY) ?? \"{}\");\n\n /**\n * if locale address is exist, restore account state\n */\n if (connectedChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n return;\n }\n if (\n localAddress &&\n account.address !== localAddress &&\n walletInfo.label\n ) {\n connect({\n autoSelect: {\n label: walletInfo.label,\n disableModals: true,\n },\n }).then(\n (res) => {\n console.log(\"silent connect wallet successes\", res);\n },\n (error) => console.log(\"connect error\", error),\n );\n }\n });\n }, [connectedWallet, account.address, storageChain?.namespace]);\n\n /**\n * handle wallet connection\n */\n useEffect(() => {\n if (\n connectedWallet === null &&\n accountState.status > AccountStatusEnum.NotConnected &&\n !accountState.validating\n ) {\n account.disconnect();\n return;\n }\n\n if (unsupported || !connectedChain) return;\n if (isManualConnect.current) return;\n\n const linkData = getLinkDeviceData();\n\n // updateAccount(currentWalletAddress!, connectedWallet!, currentChainId!);\n /**\n * switch account\n */\n if (\n !!currentWalletAddress &&\n currentWalletAddress !== account.address &&\n !linkData\n ) {\n account.setAddress(currentWalletAddress, {\n provider: connectedWallet?.provider,\n chain: {\n id: praseChainIdToNumber(currentChain!.id),\n namespace: currentChain!.namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: connectedWallet?.label ?? \"\",\n },\n additionalInfo: connectedWallet?.additionalInfo ?? {},\n });\n track(TrackerEventName.walletConnect, {\n wallet: connectedWallet?.label ?? \"\",\n network: currentChain!.namespace.toUpperCase() as ChainNamespace,\n });\n\n // save wallet connector info to local storage\n windowGuard(() => {\n localStorage.setItem(\n WALLET_KEY,\n JSON.stringify({\n label: connectedWallet?.label ?? \"\",\n }),\n );\n setStorageChain(currentChain!.id);\n });\n }\n\n /**\n * switch chainId\n */\n if (currentChain?.id !== account.chainId) {\n account.switchChainId(currentChain?.id!);\n\n // emit chain changed event\n // options.onChainChanged?.(currentChainId!, isTestnet(networkId));\n }\n }, [\n connectedWallet,\n connectedChain,\n currentWalletAddress,\n currentChain,\n account.address,\n accountState,\n account.chainId,\n unsupported,\n ]);\n\n /**\n * User manually connects to wallet\n */\n const connectWallet = async (): Promise<{\n wallet?: WalletState;\n status?: AccountStatusEnum;\n wrongNetwork?: boolean;\n } | null> => {\n isManualConnect.current = true;\n // const walletState = await connect();\n\n return connect({ chainId: options.currentChainId })\n .then(async (walletState) => {\n if (\n Array.isArray(walletState) &&\n walletState.length > 0 &&\n walletState[0] &&\n walletState[0].accounts.length > 0\n ) {\n const wallet = walletState[0];\n const chainId = praseChainIdToNumber(wallet.chains[0].id);\n\n if (!checkChainSupport(chainId, networkId)) {\n return {\n wrongNetwork: true,\n };\n }\n //\n if (!account) {\n throw new Error(\"account is not initialized\");\n }\n // clear link device data when connect wallt\n if (\n accountState.status ===\n AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n }\n\n const status = await account.setAddress(wallet.accounts[0].address, {\n provider: wallet.provider,\n chain: {\n id: praseChainIdToNumber(wallet.chains[0].id),\n namespace:\n wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n },\n wallet: {\n name: wallet.label,\n },\n // label: ,\n });\n track(TrackerEventName.walletConnect, {\n wallet: wallet.label,\n network: wallet.chains[0].namespace.toUpperCase() as ChainNamespace,\n });\n console.log(\"-- xxxxxx status\", status);\n\n return { wallet, status, wrongNetwork: false };\n }\n\n return null;\n })\n .finally(() => {\n isManualConnect.current = false;\n });\n };\n\n return {\n connectWallet,\n wrongNetwork: unsupported,\n };\n};\n","import React, { createContext, useContext } from \"react\";\nimport { RestrictedInfoReturns } from \"@orderly.network/hooks\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\" | \"/perp\";\n name: string;\n};\n\nexport type WidgetConfigs = {\n scanQRCode?: {\n onSuccess?: (url: string) => void;\n };\n subAccount?: {\n /** @deprecated The number of custom sub-accounts needs to be configured in sync with the backend. If you’re not sure about it, please don’t set this value. */\n maxSubAccountCount: number;\n };\n withdraw?: {\n /**\n * Control the \"withdraw to other wallet\" feature.\n * - `true` / `undefined`: enable external wallet trigger & management.\n * - `false`: only show the connected wallet address without external\n * wallet selector or add-wallet dialog.\n */\n enableWithdrawToExternalWallet?: boolean;\n };\n};\n\nexport type AppContextState = {\n connectWallet: ReturnType<typeof useWalletStateHandle>[\"connectWallet\"];\n /**\n * Whether the current network is not supported\n */\n wrongNetwork: boolean;\n disabledConnect: boolean;\n currentChainId: number | undefined;\n setCurrentChainId: (chainId: number | undefined) => void;\n onChainChanged?: (\n chainId: number,\n state: { isTestnet: boolean; isWalletConnected: boolean },\n ) => void;\n // networkStatus: ReturnType<typeof useAppState>[\"networkStatus\"];\n restrictedInfo: RestrictedInfoReturns;\n showAnnouncement: boolean;\n setShowAnnouncement: (show: boolean) => void;\n onRouteChange?: (option: RouteOption) => void;\n widgetConfigs?: WidgetConfigs;\n initialized: boolean;\n};\n\nexport const AppStateContext = createContext<AppContextState>({\n setCurrentChainId: (chainId?: number) => {},\n restrictedInfo: {},\n setShowAnnouncement: (show: boolean) => {},\n} as AppContextState);\n\nexport const useAppContext = () => {\n return useContext(AppStateContext);\n};\n","import { FC, PropsWithChildren, useState, useMemo, useEffect } from \"react\";\nimport {\n RestrictedInfoOptions,\n useRestrictedInfo,\n useTrackingInstance,\n} from \"@orderly.network/hooks\";\nimport { useAssetconvertEvent } from \"../hooks/useAssetconvertEvent\";\nimport { DefaultChain, useCurrentChainId } from \"../hooks/useCurrentChainId\";\nimport { useLinkDevice } from \"../hooks/useLinkDevice\";\nimport { useSettleEvent } from \"../hooks/useSettleEvent\";\nimport { useWalletConnectError } from \"../hooks/useWalletConnectError\";\nimport { useWalletEvent } from \"../hooks/useWalletEvent\";\nimport { useWalletStateHandle } from \"../hooks/useWalletStateHandle\";\nimport { AppContextState, AppStateContext } from \"./appStateContext\";\n\nexport type RouteOption = {\n href: \"/portfolio\" | \"/portfolio/history\";\n name: string;\n};\n\nexport type AppStateProviderProps = {\n defaultChain?: DefaultChain;\n restrictedInfo?: RestrictedInfoOptions;\n} & Pick<AppContextState, \"onChainChanged\" | \"onRouteChange\" | \"widgetConfigs\">;\n\nexport const AppStateProvider: FC<PropsWithChildren<AppStateProviderProps>> = (\n props,\n) => {\n const [showAnnouncement, setShowAnnouncement] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [currentChainId, setCurrentChainId] = useCurrentChainId(\n props.defaultChain,\n );\n useLinkDevice();\n useTrackingInstance();\n\n const { connectWallet, wrongNetwork } = useWalletStateHandle({\n // onChainChanged: props.onChainChanged,\n currentChainId,\n });\n\n useWalletEvent();\n useSettleEvent();\n useAssetconvertEvent();\n useWalletConnectError();\n\n const restrictedInfo = useRestrictedInfo(props.restrictedInfo);\n\n const disabledConnect = restrictedInfo.restrictedOpen;\n\n useEffect(() => {\n setInitialized(true);\n }, []);\n\n const memoizedValue = useMemo<AppContextState>(\n () => ({\n connectWallet,\n wrongNetwork,\n currentChainId,\n setCurrentChainId,\n onChainChanged: props.onChainChanged,\n disabledConnect,\n restrictedInfo,\n showAnnouncement,\n setShowAnnouncement,\n onRouteChange: props.onRouteChange,\n widgetConfigs: props.widgetConfigs,\n initialized,\n }),\n [\n connectWallet,\n currentChainId,\n disabledConnect,\n props.onChainChanged,\n restrictedInfo,\n setCurrentChainId,\n showAnnouncement,\n wrongNetwork,\n props.onRouteChange,\n props.widgetConfigs,\n initialized,\n ],\n );\n\n return (\n <AppStateContext.Provider value={memoizedValue}>\n {props.children}\n </AppStateContext.Provider>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { OrderlyConfigProvider, useTrack } from \"@orderly.network/hooks\";\nimport {\n LocaleProvider as UILocaleProvider,\n ModalProvider,\n OrderlyPluginProvider,\n OrderlyThemeProvider,\n Toaster,\n TooltipProvider,\n} from \"@orderly.network/ui\";\nimport { OrderlyThemeProviderProps } from \"@orderly.network/ui\";\nimport { useBootstrap } from \"../hooks/useBootstrap\";\nimport { useExecutionReport } from \"../hooks/useExecutionReport\";\nimport { useUILocale } from \"../hooks/useUILocale\";\nimport { OrderlyAppConfig } from \"../types\";\nimport { AppConfigProvider } from \"./appConfigProvider\";\nimport { AppStateProvider, AppStateProviderProps } from \"./appStateProvider\";\n\nexport type OrderlyAppProviderProps = PropsWithChildren<\n OrderlyAppConfig & AppStateProviderProps & OrderlyThemeProviderProps\n>;\n\n// Cannot be called outside of Provider because useExecutionReport requires useOrderlyContext.\nconst ExecutionReportListener: React.FC = () => {\n useExecutionReport();\n return null;\n};\n\nconst OrderlyAppProvider: React.FC<OrderlyAppProviderProps> = (props) => {\n const {\n // dateFormatting,\n components,\n appIcons,\n plugins,\n onChainChanged,\n defaultChain,\n widgetConfigs,\n ...configProps\n } = props;\n\n useTrack();\n useBootstrap();\n\n const uiLocale = useUILocale();\n\n return (\n <AppConfigProvider appIcons={appIcons} brokerName={props.brokerName!}>\n <OrderlyThemeProvider\n // dateFormatting={dateFormatting}\n components={components}\n overrides={props.overrides}\n >\n <OrderlyConfigProvider {...configProps}>\n <OrderlyPluginProvider plugins={plugins ?? []}>\n <ExecutionReportListener />\n <AppStateProvider\n onChainChanged={onChainChanged}\n defaultChain={defaultChain}\n restrictedInfo={props.restrictedInfo}\n onRouteChange={props.onRouteChange}\n widgetConfigs={widgetConfigs}\n >\n <UILocaleProvider locale={uiLocale}>\n <TooltipProvider delayDuration={300}>\n <ModalProvider>{props.children}</ModalProvider>\n </TooltipProvider>\n </UILocaleProvider>\n </AppStateProvider>\n </OrderlyPluginProvider>\n <Toaster />\n </OrderlyConfigProvider>\n </OrderlyThemeProvider>\n </AppConfigProvider>\n );\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n OrderlyAppProvider.displayName = \"OrderlyAppProvider\";\n}\n\nexport { OrderlyAppProvider };\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport const useDataTap = <T = any>(\n data: T,\n options?: {\n skip?: false;\n fallbackData?: T;\n accountStatus?: AccountStatusEnum;\n },\n): T | null => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n /**\n * ignore\n */\n if (options?.skip) {\n return data;\n }\n\n if (wrongNetwork || disabledConnect) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n\n if (typeof options?.accountStatus !== \"undefined\") {\n if (state.status < options.accountStatus) {\n return typeof options?.fallbackData !== \"undefined\"\n ? options.fallbackData\n : null;\n }\n }\n\n // return wrongNetwork\n // ? typeof options?.fallbackData !== \"undefined\"\n // ? options.fallbackData\n // : null\n // : data;\n //\n return data;\n};\n","import { useCallback } from \"react\";\nimport {\n ERROR_MSG_CODES,\n OrderValidationItem,\n OrderValidationResult,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\ntype Keys = keyof OrderValidationResult;\ntype ErrorType = Partial<OrderValidationItem[\"type\"]>;\n\nexport function useOrderEntryFormErrorMsg(\n errors: OrderValidationResult | null,\n) {\n const { t } = useTranslation();\n\n const getMessage = (\n key: Keys,\n type: ErrorType,\n params: {\n value?: string | number;\n min?: string | number;\n max?: string | number;\n },\n ) => {\n const { value, min, max } = params || {};\n const map: Partial<Record<Keys, Partial<Record<ErrorType, string>>>> = {\n quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_quantity: {\n required: t(\"orderEntry.orderQuantity.error.required\"),\n min: t(\"orderEntry.orderQuantity.error.min\", { value }),\n max: t(\"orderEntry.orderQuantity.error.max\", { value }),\n },\n order_price: {\n required: t(\"orderEntry.orderPrice.error.required\"),\n min: t(\"orderEntry.orderPrice.error.min\", { value }),\n max: t(\"orderEntry.orderPrice.error.max\", { value }),\n },\n trigger_price: {\n required: t(\"orderEntry.triggerPrice.error.required\"),\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n tp_trigger_price: {\n required: t(\"tpsl.validate.tpTriggerPrice.error.required\"),\n min: t(\"orderEntry.tpTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.tpTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.tpTriggerPrice.error.priceErrorMax\"),\n },\n sl_trigger_price: {\n required: t(\"tpsl.validate.slTriggerPrice.error.required\"),\n min: t(\"orderEntry.slTriggerPrice.error.min\", { value }),\n max: t(\"orderEntry.slTriggerPrice.error.max\", { value }),\n priceErrorMin: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMin\"),\n priceErrorMax: t(\"tpsl.validate.slTriggerPrice.error.priceErrorMax\"),\n [ERROR_MSG_CODES.SL_PRICE_WARNING]: t(\n \"tpsl.validate.slTriggerPrice.warning.closeToLiqPrice\",\n ),\n [ERROR_MSG_CODES.SL_PRICE_ERROR]: t(\n \"tpsl.validate.slTriggerPrice.error.crossLiqPrice\",\n ),\n },\n tp_order_price: {\n required: t(\"tpsl.validate.tpOrderPrice.error.required\"),\n min: t(\"tpsl.validate.tpOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.tpOrderPrice.error.max\", { value }),\n },\n sl_order_price: {\n required: t(\"tpsl.validate.slOrderPrice.error.required\"),\n min: t(\"tpsl.validate.slOrderPrice.error.min\", { value }),\n max: t(\"tpsl.validate.slOrderPrice.error.max\", { value }),\n },\n total: {\n min: t(\"orderEntry.total.error.min\", { value }),\n },\n // not show form input tooltip\n // slippage: {\n // max: t(\"orderEntry.slippage.error.max\"),\n // },\n start_price: {\n required: t(\"orderEntry.startPrice.error.required\"),\n min: t(\"orderEntry.startPrice.error.min\", { value }),\n max: t(\"orderEntry.startPrice.error.max\", { value }),\n },\n end_price: {\n required: t(\"orderEntry.endPrice.error.required\"),\n min: t(\"orderEntry.endPrice.error.min\", { value }),\n max: t(\"orderEntry.endPrice.error.max\", { value }),\n },\n total_orders: {\n required: t(\"orderEntry.totalOrders.error.required\"),\n range: t(\"orderEntry.totalOrders.error.range\"),\n },\n skew: {\n required: t(\"orderEntry.skew.error.required\"),\n min: t(\"orderEntry.skew.error.min\", { value }),\n max: t(\"orderEntry.skew.error.max\", { value }),\n },\n activated_price: {\n min: t(\"orderEntry.triggerPrice.error.min\", { value }),\n max: t(\"orderEntry.triggerPrice.error.max\", { value }),\n },\n callback_value: {\n required: t(\"orderEntry.callbackValue.error.required\"),\n min: t(\"orderEntry.callbackValue.error.min\", { value }),\n range: t(\"orderEntry.callbackValue.error.range\", {\n min,\n max,\n }),\n },\n callback_rate: {\n required: t(\"orderEntry.callbackRate.error.required\"),\n range: t(\"orderEntry.callbackRate.error.range\", {\n min,\n max,\n }),\n },\n };\n\n return map[key]?.[type] || \"\";\n };\n\n const getErrorMsg = useCallback(\n (key: Keys, customValue?: string) => {\n const { type, value, min, max } = errors?.[key] || ({} as any);\n if (type) {\n return getMessage(key, type, { value: customValue || value, min, max });\n }\n return \"\";\n },\n [errors],\n );\n\n return {\n getErrorMsg,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"../provider/appStateContext\";\n\nexport function useCanTrade() {\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n return canTrade;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orderly.network/react-app",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.1",
|
|
4
4
|
"description": "Create React App with Orderly Network components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"date-fns": "^3.6.0",
|
|
21
|
-
"@orderly.network/
|
|
22
|
-
"@orderly.network/
|
|
23
|
-
"@orderly.network/
|
|
24
|
-
"@orderly.network/utils": "3.0.0-beta.
|
|
25
|
-
"@orderly.network/
|
|
21
|
+
"@orderly.network/hooks": "3.0.0-beta.1",
|
|
22
|
+
"@orderly.network/i18n": "3.0.0-beta.1",
|
|
23
|
+
"@orderly.network/types": "3.0.0-beta.1",
|
|
24
|
+
"@orderly.network/utils": "3.0.0-beta.1",
|
|
25
|
+
"@orderly.network/ui": "3.0.0-beta.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@babel/core": "^7.22.9",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"tailwindcss": "^3.4.4",
|
|
36
36
|
"tsup": "^8.5.1",
|
|
37
37
|
"typescript": "^5.1.6",
|
|
38
|
-
"tsconfig": "1.0.0-beta.
|
|
38
|
+
"tsconfig": "1.0.0-beta.1"
|
|
39
39
|
},
|
|
40
40
|
"react": ">=18",
|
|
41
41
|
"react-dom": ">=18",
|