@dappworks/kit 0.4.235 → 0.4.236

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.
@@ -1,4 +1,4 @@
1
- import { getStyle } from './chunk-K73JTEJQ.mjs';
1
+ import { getStyle } from './chunk-YG4RDLYA.mjs';
2
2
  import { useStore, rootStore } from './chunk-XSGTWROT.mjs';
3
3
  import { __spreadValues, __spreadProps } from './chunk-R4SQKVDQ.mjs';
4
4
  import React from 'react';
@@ -73,4 +73,4 @@ var DialogStore = class _DialogStore {
73
73
 
74
74
  export { DialogStore };
75
75
  //# sourceMappingURL=out.js.map
76
- //# sourceMappingURL=chunk-GT4R5SDI.mjs.map
76
+ //# sourceMappingURL=chunk-63DQOYRW.mjs.map
@@ -1,12 +1,12 @@
1
1
  import { AIem } from './chunk-NPQ7GCFM.mjs';
2
- import { DialogStore } from './chunk-GT4R5SDI.mjs';
2
+ import { DialogStore } from './chunk-63DQOYRW.mjs';
3
3
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
4
4
  import { RootStore, rootStore } from './chunk-XSGTWROT.mjs';
5
5
  import { helper } from './chunk-R4N52NI2.mjs';
6
6
  import { __spreadProps, __spreadValues } from './chunk-R4SQKVDQ.mjs';
7
7
  import { observable, makeAutoObservable } from 'mobx';
8
8
  import BigNumber2 from 'bignumber.js';
9
- import React3, { useEffect } from 'react';
9
+ import React2, { useEffect } from 'react';
10
10
  import { useRouter } from 'next/router.js';
11
11
  import { observer } from 'mobx-react-lite';
12
12
  import { toHex, createWalletClient, custom, publicActions } from 'viem';
@@ -16,7 +16,6 @@ import { getDefaultConfig, useConnectModal } from '@rainbow-me/rainbowkit';
16
16
  import { Icon } from '@iconify/react';
17
17
  import { iopayWallet, metaMaskWallet, walletConnectWallet, okxWallet, binanceWallet, safeWallet, gateWallet } from '@rainbow-me/rainbowkit/wallets';
18
18
  import SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';
19
- import { Card, Input } from '@nextui-org/react';
20
19
 
21
20
  //@ts-ignore
22
21
  observable();
@@ -525,15 +524,15 @@ var WalletRpcStore = class {
525
524
  }
526
525
  scoreIcon(score) {
527
526
  if (score < 0) {
528
- return /* @__PURE__ */ React3.createElement(Icon, { icon: "codicon:error", width: "18", height: "18", style: { color: "#FF0000" } });
527
+ return /* @__PURE__ */ React2.createElement(Icon, { icon: "codicon:error", width: "18", height: "18", style: { color: "#FF0000" } });
529
528
  }
530
529
  if (score < 1) {
531
- return /* @__PURE__ */ React3.createElement(Icon, { icon: "icon-park-solid:check-one", width: "18", height: "18", style: { color: "#289726" } });
530
+ return /* @__PURE__ */ React2.createElement(Icon, { icon: "icon-park-solid:check-one", width: "18", height: "18", style: { color: "#289726" } });
532
531
  }
533
532
  if (score < 2) {
534
- return /* @__PURE__ */ React3.createElement(Icon, { icon: "bxs:error", width: "18", height: "18", style: { color: "#FFA500" } });
533
+ return /* @__PURE__ */ React2.createElement(Icon, { icon: "bxs:error", width: "18", height: "18", style: { color: "#FFA500" } });
535
534
  }
536
- return /* @__PURE__ */ React3.createElement(Icon, { icon: "codicon:error", width: "18", height: "18", style: { color: "#FF0000" } });
535
+ return /* @__PURE__ */ React2.createElement(Icon, { icon: "codicon:error", width: "18", height: "18", style: { color: "#FF0000" } });
537
536
  }
538
537
  get wallet() {
539
538
  return RootStore.Get(WalletStore);
@@ -598,23 +597,25 @@ var WalletHistoryStore = class {
598
597
  }
599
598
  };
600
599
  var SuccessTxDialog = observer((props) => {
601
- return /* @__PURE__ */ React3.createElement("div", { className: "flex-col gap-4 py-10" }, /* @__PURE__ */ React3.createElement("div", { className: "w-full flex items-center justify-center" }, /* @__PURE__ */ React3.createElement(Icon, { icon: "icon-park-solid:check-one", width: "48", height: "48", className: "text-green-500" })), /* @__PURE__ */ React3.createElement("div", { className: "text-2xl font-[900] text-center mt-4" }, props.msg), /* @__PURE__ */ React3.createElement(
600
+ return /* @__PURE__ */ React2.createElement("div", { className: "flex-col gap-4 py-10" }, /* @__PURE__ */ React2.createElement("div", { className: "w-full flex items-center justify-center" }, /* @__PURE__ */ React2.createElement(Icon, { icon: "icon-park-solid:check-one", width: "48", height: "48", className: "text-green-500" })), /* @__PURE__ */ React2.createElement("div", { className: "text-2xl font-[900] text-center mt-4" }, props.msg), /* @__PURE__ */ React2.createElement(
602
601
  "div",
603
602
  {
604
603
  className: "flex items-center justify-center text-green-500 text-sm mt-6 gap-2 cursor-pointer hover:text-green-600 transition",
605
604
  onClick: (e) => window.open(`https://iotexscan.io/tx/${props.hash}`, "_blank")
606
605
  },
607
606
  "View on IoTeXScan ",
608
- /* @__PURE__ */ React3.createElement(Icon, { icon: "material-symbols:chip-extraction-rounded", width: "18", height: "18" })
607
+ /* @__PURE__ */ React2.createElement(Icon, { icon: "material-symbols:chip-extraction-rounded", width: "18", height: "18" })
609
608
  ));
610
609
  });
611
610
  var ShowSuccessTxDialog = ({ msg, hash }) => {
612
611
  RootStore.Get(DialogStore).setData({
613
612
  title: "",
614
- content: /* @__PURE__ */ React3.createElement(SuccessTxDialog, { msg, hash }),
613
+ content: /* @__PURE__ */ React2.createElement(SuccessTxDialog, { msg, hash }),
615
614
  isOpen: true
616
615
  });
617
616
  };
617
+
618
+ // module/Wallet/index.tsx
618
619
  var WalletStore = class _WalletStore {
619
620
  constructor(args) {
620
621
  this.sid = "wallet";
@@ -677,14 +678,6 @@ var WalletStore = class _WalletStore {
677
678
  switchChain: switchChainAsync,
678
679
  disconnect
679
680
  });
680
- useEffect(() => {
681
- const needAdd = localStorage.getItem("wallet.add.chainId");
682
- if (needAdd) {
683
- RootStore.Get(WalletRpcStore).addToMetamaskById(Number(needAdd)).then((res) => {
684
- localStorage.removeItem("wallet.add.chainId");
685
- });
686
- }
687
- }, []);
688
681
  useEffect(() => {
689
682
  RootStore.Get(WalletHistoryStore).set({ isRender: true });
690
683
  this.set({
@@ -752,9 +745,9 @@ var WalletStore = class _WalletStore {
752
745
  return { account };
753
746
  }
754
747
  async prepare(chainId) {
755
- RootStore.Get(WalletRpcStore);
748
+ const walletRpcStore = RootStore.Get(WalletRpcStore);
756
749
  return new Promise(async (res, rej) => {
757
- var _a, _b, _c, _d, _e, _f, _g, _h;
750
+ var _a, _b;
758
751
  try {
759
752
  if (this.account) {
760
753
  if ((!chainId || Number((_a = this.chain) == null ? void 0 : _a.id) == Number(chainId)) && this.walletClient) {
@@ -776,61 +769,9 @@ var WalletStore = class _WalletStore {
776
769
  }, 1e3);
777
770
  if (chainId != ((_b = this.chain) == null ? void 0 : _b.id)) {
778
771
  try {
779
- await this.walletClient.switchChain({ id: chainId });
772
+ walletRpcStore.switchOrAddChain(chainId != null ? chainId : 4689);
780
773
  } catch (error) {
781
- console.log(error.message);
782
- if ((_c = error == null ? void 0 : error.message) == null ? void 0 : _c.includes("wallet_addEthereumChain")) {
783
- const chain = RootStore.Get(WalletConfigStore).supportedChains.find((i) => i.id == chainId);
784
- try {
785
- await RootStore.Get(WalletRpcStore).addToMetamaskById(chainId);
786
- await this.walletClient.switchChain({ id: chainId });
787
- } catch (error2) {
788
- RootStore.Get(DialogStore).setData({
789
- isOpen: true,
790
- title: "Chain Addition Failed",
791
- size: "2xl",
792
- content: /* @__PURE__ */ React3.createElement("div", null, /* @__PURE__ */ React3.createElement(Card, { className: "p-2" }, /* @__PURE__ */ React3.createElement("div", { className: "p-2 flex items-center justify-center gap-4" }, /* @__PURE__ */ React3.createElement("div", { className: "text-yellow-500 text-sm" }, "We encountered an issue while adding the chain. This might be caused by a compatibility issue with your current plugin. Please try adding the chain manually or review your plugin settings to ensure compatibility."))), /* @__PURE__ */ React3.createElement("div", { className: "flex flex-col gap-4 my-4" }, /* @__PURE__ */ React3.createElement(
793
- Input,
794
- {
795
- label: "Network Name",
796
- value: chain.name,
797
- startContent: /* @__PURE__ */ React3.createElement(Icon, { icon: "fluent:rename-24-filled", width: "20", height: "20" })
798
- }
799
- ), /* @__PURE__ */ React3.createElement(
800
- Input,
801
- {
802
- label: "Network RPC",
803
- value: (_e = (_d = chain.rpcUrls.default) == null ? void 0 : _d.http) == null ? void 0 : _e[0],
804
- startContent: /* @__PURE__ */ React3.createElement(Icon, { icon: "material-symbols:link", width: "20", height: "20" })
805
- }
806
- ), /* @__PURE__ */ React3.createElement(
807
- Input,
808
- {
809
- label: "Chain ID",
810
- value: chain.id.toString(),
811
- startContent: /* @__PURE__ */ React3.createElement(Icon, { icon: "f7:grid-circle-fill", width: "20", height: "20" })
812
- }
813
- ), /* @__PURE__ */ React3.createElement(
814
- Input,
815
- {
816
- label: "Native Currency Symbol",
817
- value: (_f = chain.nativeCurrency) == null ? void 0 : _f.symbol,
818
- startContent: /* @__PURE__ */ React3.createElement(Icon, { icon: "mingcute:coin-fill", width: "20", height: "20" })
819
- }
820
- ), /* @__PURE__ */ React3.createElement(
821
- Input,
822
- {
823
- label: "Block Explorer URL",
824
- value: (_h = (_g = chain.blockExplorers) == null ? void 0 : _g.default) == null ? void 0 : _h.url,
825
- startContent: /* @__PURE__ */ React3.createElement(Icon, { icon: "material-symbols:explore", width: "20", height: "20" })
826
- }
827
- )))
828
- });
829
- console.log(error2.message);
830
- }
831
- } else {
832
- rej(error);
833
- }
774
+ rej(error);
834
775
  }
835
776
  }
836
777
  } else {
@@ -1047,7 +988,7 @@ var AutoMan = class {
1047
988
  console.log({ autoUpdate });
1048
989
  autoUpdate.forEach((i) => !i.loading.value && i.call());
1049
990
  }, [wallet.updateTicker, router.asPath]);
1050
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null);
991
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null);
1051
992
  });
1052
993
  }
1053
994
  static use(stores, promises) {
@@ -1100,12 +1041,12 @@ var AutoMan = class {
1100
1041
  };
1101
1042
  var AppProvider = observer(({ children }) => {
1102
1043
  const rootStore2 = RootStore.init();
1103
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, rootStore2.providers.map((store) => {
1044
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, rootStore2.providers.map((store) => {
1104
1045
  const Component = store.provider;
1105
- return /* @__PURE__ */ React3.createElement(Component, { rootStore: rootStore2, key: store.sid });
1046
+ return /* @__PURE__ */ React2.createElement(Component, { rootStore: rootStore2, key: store.sid });
1106
1047
  }), children && children);
1107
1048
  });
1108
1049
 
1109
1050
  export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageListState, StorageState, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore };
1110
1051
  //# sourceMappingURL=out.js.map
1111
- //# sourceMappingURL=chunk-I3EOCKF6.mjs.map
1052
+ //# sourceMappingURL=chunk-VXA4UKJU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberState.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../store/standard/StorageListState.ts","../store/standard/ObjectPool.ts","../module/AutoMain/index.tsx","../module/Wallet/index.tsx","../module/Wallet/walletPluginStore.tsx","../module/Wallet/walletConfigStore.ts","../module/Wallet/SuccessTxDialog/index.tsx","../module/AppProvider.tsx"],"names":["BigNumber","makeAutoObservable","useEffect","observer","useConnectModal","Icon","React","_a","promise","rootStore"],"mappings":"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","sourcesContent":["import { observable } from \"mobx\";\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T;\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T; func: T; loading: boolean; errorRetry: number };\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(\n cls: ContractClass<T>,\n ): (args: { args: Partial<T>; id?: string; select?: { [key in keyof Partial<T>]: boolean }; unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any;\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false;\n //@ts-ignore\n if (i[1].lazy) return false;\n if (select && !select[i[0]]) return false;\n if (unselect && unselect[i[0]]) return false;\n return true;\n })\n .map((i) => {\n const hook = instance[i[0]];\n return hook;\n });\n\n await Promise.all(hooks.map((i) => i.call()));\n };\n if (id) {\n //@ts-ignore\n this.entities[id] = instance;\n }\n } else {\n instance = this.entities[id!];\n }\n\n await instance.refresh();\n return instance;\n };\n } catch (e) {\n throw e;\n }\n }\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\";\n }\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue, lazy }: { func: T; defaultValue?: Awaited<U>; lazy?: boolean }): PromiseHookData<T, U> {\n let context;\n const call = (args) => {\n context.loading = true;\n if (!context._call) {\n context._call = func(args)\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null;\n return i;\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue;\n context._call = null;\n context.loading = false;\n throw i;\n });\n }\n\n return context._call;\n };\n const get = async (args: any) => {\n if (!context.value) {\n return call(args);\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: \"promiseHook\",\n _value: defaultValue,\n get value() {\n return context[\"_value\"];\n },\n set value(val) {\n context[\"_value\"] = val;\n },\n get,\n lazy,\n\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value;\n },\n toString() {\n return context.value;\n },\n });\n }\n\n return context;\n }\n}\n","import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n // this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n // this.format = helper.number.toPrecisionFloor(this.format);\n // this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from \"mobx\";\n\nexport class StorageState<T> {\n key: string;\n value: T | any = null;\n default: T | any = null;\n constructor(args: Partial<StorageState<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n load() {\n try {\n if (typeof window == 'undefined') return\n const value = window?.localStorage?.getItem(this.key);\n this.value = StorageState.safeParse(value);\n if (this.value == null) {\n this.value = this.default;\n }\n return this.value;\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n save(value?: T) {\n try {\n if (typeof window == 'undefined') return\n if (value !== null || value !== undefined) {\n this.value = value;\n }\n window?.localStorage.setItem(this.key, JSON.stringify(value));\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n setValue(value?: T) {\n this.save(value);\n }\n\n clear() {\n try {\n if (typeof window == 'undefined') return\n window?.localStorage.removeItem(this.key);\n } catch (error) {\n return null;\n }\n }\n}\n","import { makeAutoObservable } from \"mobx\";\n\nimport { helper } from \"../../lib/helper\";\nimport { _ } from \"../../lib/lodash\";\n\nexport class StorageListState<T = any> {\n key: string;\n list: T[] = [];\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n constructor(args: { key: string; }) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n\n load() {\n try {\n const value = localStorage.getItem(this.key);\n if (value) {\n this.list = StorageListState.safeParse(value);\n }\n return StorageListState.safeParse(value)\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n\n push(value: T) {\n this.list.push(value);\n this.save();\n }\n\n remove(index: number) {\n this.list.splice(index, 1);\n this.save();\n }\n\n private save() {\n try {\n localStorage.setItem(this.key, JSON.stringify(this.list));\n } catch (error) {\n }\n }\n\n clear() {\n try {\n localStorage.removeItem(this.key);\n this.list = [];\n } catch (error) {\n }\n }\n}\n","\n\nexport class ObjectPool {\n static pool: { [key: string]: any } = {};\n\n static get<T extends (...args: any[]) => any, U = ReturnType<T>>(key: string, func: T): U {\n if (!ObjectPool.pool[key]) {\n ObjectPool.pool[key] = func();\n }\n return ObjectPool.pool[key];\n }\n}","import { useEffect } from 'react';\nimport { useRouter } from 'next/router.js';\nimport { observer } from 'mobx-react-lite';\nimport { RootStore, rootStore } from '../../store';\nimport { Store } from \"../../store/standard/base\";\nimport { WalletStore } from '../Wallet';\nimport React from 'react';\n\nexport class AutoMan implements Store {\n sid = 'AutoMan';\n stype = 'Plugin';\n autoObservable?: boolean | undefined;\n\n provider = observer(() => {\n const wallet = RootStore.Get(WalletStore);\n const router = useRouter();\n useEffect(() => {\n console.log('automan proverider')\n // @ts-ignore\n const stores = Object.values(rootStore.instance).filter((i) => i._active > 0);\n //@ts-ignore\n const promise: PromiseState<any>[] = stores.reduce((p, c) => {\n //@ts-ignore\n const promise = Object.values(c).filter((i: PromiseState<any>) => !!i?.call);\n //@ts-ignore\n return [...p, ...promise];\n }, []);\n const autoUpdate = promise.filter((i) => i.autoUpdate);\n console.log({ autoUpdate });\n\n autoUpdate.forEach((i) => !i.loading.value && i.call());\n }, [wallet.updateTicker, router.asPath]);\n return <></>;\n });\n\n static use<T extends { [Key in keyof T]: Store }, U extends { [Key in keyof T]: T[Key] extends Store ? { [K in keyof T[Key]]?: any } : never }>(stores: T, promises?: U) {\n useEffect(() => {\n Object.keys(stores).forEach((storeName) => {\n const store = stores[storeName];\n Object.keys(store).forEach((key) => {\n const i = store[key];\n //@ts-ignore\n if (!!i?.getOrCall && (i.autoInit || !!promises?.[storeName][key])) {\n if (!store._active) store._active = 0;\n store._active += 1;\n i.getOrCall();\n }\n });\n });\n\n return () => {\n Object.values(stores).forEach((store) => {\n //@ts-ignore\n if (!store._active) store._active = 0;\n //@ts-ignore\n store._active -= 1;\n //@ts-ignore\n if (store.autoClean !== false && !store._active > 0) {\n //@ts-ignore\n Object.entries(store)\n //@ts-ignore\n .filter(([key, i]) => !!i?.value)\n .forEach(([key, i]) => {\n console.log('clean', key);\n //@ts-ignore\n i.value = null;\n });\n }\n });\n\n if (!!promises) {\n //@ts-ignore\n Object.entries(promises).forEach(([storaName, promise]) => {\n const store = stores[storaName];\n //@ts-ignore\n Object.keys(promise).forEach((key) => {\n const promise = store[key];\n console.log('clean', key);\n if (!promise) return\n if (!promise._active) promise._active = 0;\n\n promise._active -= 1;\n //@ts-ignore\n if (!promise._active > 0) {\n promise.value = null;\n }\n });\n });\n }\n };\n }, []);\n return stores;\n }\n}\n","import React from 'react';\nimport { useEffect } from \"react\";\nimport { Store } from \"../../store/standard/base\";\nimport { PublicClient, type HttpTransport, WalletClient, TransactionReceipt, createWalletClient, custom, publicActions, SwitchChainErrorType, UserRejectedRequestError } from \"viem\";\nimport { PromiseHook } from '../../store/standard/PromiseHook';\nimport { AddressMode, WalletTransactionHistoryType } from \"./type\";\nimport EventEmitter from \"events\";\nimport { SwitchChainMutateAsync } from \"wagmi/query\";\nimport { Config, useAccount, useConnect, useDisconnect, useReconnect, useSwitchChain, useWalletClient, } from \"wagmi\";\nimport { Chain, useConnectModal, WalletDetailsParams } from '@rainbow-me/rainbowkit';\nimport { RootStore } from \"../../store\";\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletHistoryStore, WalletRpcStore } from './walletPluginStore';\nimport SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';\nimport { ShowSuccessTxDialog } from './SuccessTxDialog'\nimport { WalletConfigStore } from \"./walletConfigStore\";\nimport { AIem } from \"../../aiem\";\nimport { helper } from \"../../lib/helper\";\nimport { iotex } from \"viem/chains\";\n\nexport class WalletStore implements Store {\n sid = 'wallet';\n autoObservable = true;\n account: `0x${string}` = null;\n isSuccessDialogOpen = false;\n // isInSafeApp = false;\n get isInSafeApp() {\n return RootStore.Get(WalletConfigStore).isInSafeApp\n }\n isConnect = false;\n walletClient: WalletClient;\n event = new EventEmitter();\n switchChain: SwitchChainMutateAsync<Config, unknown> | undefined;\n updateTicker = 0;\n addressMode: AddressMode = '0x';\n isIoTeXChain: boolean = false;\n setAddressMode(mode: AddressMode) {\n this.addressMode = mode;\n localStorage.setItem('addressMode', mode);\n }\n get accountFormat() {\n return this.account ? helper.address.convertAddress(this.addressMode, this.account) : '-';\n }\n get connectAccountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 11, '...') : '-';\n }\n get accountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 16, '...') : '-';\n }\n get supportedChains() {\n return RootStore.Get(WalletConfigStore).supportedChains\n }\n chain: Chain | undefined;\n openConnectModal: any;\n disconnect: any;\n balance = PromiseHook.wrap({\n func: async () => {\n if (!this.publicClient || !this.account) return helper.number.warpBigNumber('0');\n const balance = await this.publicClient.getBalance({\n address: this.account,\n });\n if (balance) {\n return helper.number.warpBigNumber(balance?.toString() ?? '0');\n }\n },\n });\n\n constructor(args?: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n use() {\n // const { data: walletClient, isSuccess } = useWalletClient();\n const { chain, address, isConnected } = useAccount();\n const { switchChainAsync } = useSwitchChain();\n const { openConnectModal } = useConnectModal();\n const { connect } = useConnect();\n const { disconnect } = useDisconnect();\n const walletConfigStore = RootStore.Get(WalletConfigStore);\n this.set({\n //@ts-ignore\n connect,\n // @ts-ignore \n // walletClient,\n openConnectModal,\n switchChain: switchChainAsync,\n disconnect\n })\n\n useEffect(() => {\n RootStore.Get(WalletHistoryStore).set({ isRender: true })\n this.set({\n isConnect: isConnected,\n account: address,\n chain,\n })\n if (chain?.id == 4689) {\n this.isIoTeXChain = true\n } else {\n this.isIoTeXChain = false\n }\n walletConfigStore.set({\n isConnect: isConnected,\n })\n if (this.account) {\n this.updateTicker++;\n walletConfigStore.set({\n walletUpdateTick: this.updateTicker,\n })\n this.event.emit('walletAccount:ready');\n }\n this.useWalletClientWithCompatibleMode()\n }, [address, isConnected, chain])\n\n useEffect(() => {\n setTimeout(() => {\n this.balance.call()\n }, 1500)\n }, [this.updateTicker])\n }\n\n private useWalletClientWithCompatibleMode() {\n if (RootStore.Get(WalletConfigStore).compatibleMode) {\n if (this.account) {\n this.walletClient = createWalletClient({\n account: this.account,\n chain: this.chain,\n transport: custom(window.ethereum!)\n }).extend(publicActions)\n }\n console.log(this.walletClient, 'this.walletClientxxx')\n }\n }\n\n useWalletClientWithoutCompatibleMode() {\n const { data: walletClient } = useWalletClient()\n this.set({\n walletClient\n })\n }\n\n //always return or return default chain\n get publicClient(): PublicClient<HttpTransport, Chain, any, any> {\n if (this.chain && this.supportedChains.some(i => i.id === this.chain.id)) {\n if (this.chain.id == 4689) {\n return AIem.PubClient('4689', { rpcUrls: { default: { http: [RootStore.Get(WalletRpcStore).curRpc.value] } }, multicall: true })\n }\n return AIem.PubClient(this.chain.id.toString())\n } else {\n return AIem.PubClient('4689')\n }\n }\n\n set(args: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n toJSON() {\n const { account } = this;\n return { account };\n }\n\n async prepare(chainId?: number): Promise<WalletStore> {\n const walletRpcStore = RootStore.Get(WalletRpcStore)\n return new Promise<WalletStore>(async (res, rej) => {\n try {\n if (this.account) {\n if ((!chainId || (Number(this.chain?.id) == Number(chainId))) && this.walletClient) {\n res(this);\n }\n const interval = setInterval(() => {\n if (this.chain?.id == chainId) {\n try {\n console.log('useWalletClientWithCompatibleMode')\n this.useWalletClientWithCompatibleMode()\n res(this);\n } catch (error) {\n console.log(error, 'myerror')\n rej(error);\n }\n clearInterval(interval);\n }\n }, 1000);\n\n if (chainId != this.chain?.id) {\n try {\n walletRpcStore.switchOrAddChain(chainId ?? 4689)\n } catch (error) {\n rej(error)\n }\n }\n } else {\n this.openConnectModal();\n const interval = setInterval(() => {\n if (this.account) {\n clearInterval(interval);\n res(this);\n }\n }, 1000);\n }\n } catch (error) {\n rej(error);\n }\n });\n }\n\n\n async waitForTransactionReceipt({ hash }) {\n // https://github.com/wevm/wagmi/discussions/3463#discussioncomment-8139187\n if (this.isInSafeApp) {\n // console.log('isInSafeApp', this.isInSafeApp);\n const sdk = new SafeAppsSDK();\n while (true) {\n const queued = await sdk.txs.getBySafeTxHash(hash);\n if (queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS || queued.txStatus === TransactionStatus.AWAITING_EXECUTION || queued.txStatus === TransactionStatus.CANCELLED) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash: queued.txHash! as `0x${string}` });\n }\n }\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash });\n }\n }\n\n static async SendTx(...args: Parameters<WalletStore['sendTx']>) {\n return RootStore.Get(WalletStore).sendTx(...args);\n }\n static async SendRawTx(...args: Parameters<WalletStore['sendRawTx']>) {\n return RootStore.Get(WalletStore).sendRawTx(...args);\n }\n async sendTx({\n chainId,\n tx,\n autoAlert = true,\n loadingText,\n successText,\n onError,\n historyItem,\n showSuccessDialog = false,\n }: {\n chainId: number | string;\n tx: any;\n autoAlert?: boolean;\n loadingText?: string;\n successText?: string;\n showSuccessDialog?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n onError?: (error: any) => void;\n }) {\n const toast = RootStore.Get(ToastPlugin);\n let hash;\n const historyStore = RootStore.Get(WalletHistoryStore)\n try {\n if (loadingText) toast.loading(loadingText);\n if (!chainId) throw new Error('chainId, address, data is required');\n await RootStore.Get(WalletStore).prepare(Number(chainId));\n hash = await tx();\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: hash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n const receipt = await this.waitForTransactionReceipt({ hash });\n if (receipt.status == 'success') {\n toast.dismiss();\n toast.success('The transaction was successful');\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n } else {\n toast.dismiss();\n toast.error('The transaction failed');\n historyStore.updateHistoryStatusByTx(hash, 'fail');\n }\n if (successText) toast.success(successText);\n this.updateTicker++;\n return receipt;\n } catch (error) {\n console.log(error);\n toast.dismiss();\n if (autoAlert) {\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n console.log('sendTx', error?.message);\n if (error?.message?.includes('rejected') || String(error).toLowerCase().includes('rejected') || String(error).toLowerCase().includes('denied')) {\n toast.error('User rejected transaction');\n // onError?.(error);\n return;\n }\n if (error?.message?.includes('The Transaction may not be processed on a block yet') || error?.message?.includes('could not be found')) {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n toast.success('The transaction was successful');\n return;\n }\n\n if (msg) {\n // toast.error(msg as unknown as string);\n onError?.(new Error(msg as unknown as string || 'Transaction failed'));\n } else {\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n // toast.error(messageArr[0]);\n onError?.(new Error(messageArr[0] || 'Transaction failed'));\n }\n } else {\n // toast.error(String(error?.message || error));\n onError?.(new Error(error?.message || 'Transaction failed'));\n }\n }\n } else {\n onError?.(error);\n throw error;\n }\n }\n }\n async sendRawTx({\n chainId,\n address,\n data,\n value = '0',\n autoAlert = true,\n onSended,\n onSuccess,\n onError,\n historyItem,\n loadingText,\n showSuccessDialog = false,\n }: {\n loadingText?: string;\n chainId: number | string;\n address: string;\n data: string | null;\n value?: string;\n autoRefresh?: boolean;\n autoAlert?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n showTransactionSubmitDialog?: boolean;\n showSuccessDialog?: boolean;\n onSended?: ({ res }: { res: TransactionReceipt }) => void;\n onSuccess?: ({ res }: { res: TransactionReceipt }) => void;\n onError?: (error: any) => void;\n }): Promise<TransactionReceipt | undefined> {\n chainId = Number(chainId);\n const toast = RootStore.Get(ToastPlugin);\n try {\n if (!chainId || !address) throw new Error('chainId, address, is required');\n await RootStore.Get(WalletStore).prepare(chainId);\n if (loadingText) toast.loading(loadingText);\n const historyStore = RootStore.Get(WalletHistoryStore)\n // @ts-ignore\n const hash = await this.walletClient.sendTransaction({\n account: this.account,\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n });\n let receipt = await this.waitForTransactionReceipt({ hash });\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: receipt.transactionHash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n onSended ? onSended({ res: receipt }) : null;\n if (receipt.status == 'success') {\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'success');\n }\n onSuccess && onSuccess({ res: receipt });\n toast.dismiss();\n toast.success('The transaction was successful');\n } else {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'fail');\n }\n onError && onError?.(new Error('The transaction failed'));\n toast.dismiss();\n toast.error('The transaction failed');\n }\n return receipt;\n } catch (error) {\n console.log(error, 'xty')\n toast.dismiss();\n onError?.(error)\n console.log(error.message);\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n // Details: Transaction was rejected\n if (error?.message?.includes('rejected') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('rejected') || String(error).toLowerCase().includes('user denied')) {\n autoAlert && toast.error('User rejected transaction');\n return;\n }\n if (error?.message?.includes('Price slippage check')) {\n autoAlert && toast.error('The latest pool price has changed, please try to increase the slippage tolerance or reload the page.');\n return;\n }\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n // toast.error(messageArr[0]);\n onError?.(new Error(messageArr[0] ?? 'Transaction failed'));\n return;\n }\n }\n\n // if (msg) {\n // autoAlert && toast.error(msg as unknown as string);\n // } else {\n // autoAlert && toast.error(String(error.message));\n // }\n if (!autoAlert) {\n onError?.(error);\n throw error;\n }\n }\n }\n}","import React from 'react';\nimport { Icon } from \"@iconify/react\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\nimport { StorageState } from '../../store/standard/StorageState';\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletTransactionHistoryType } from \"./type\";\nimport { WalletStore } from \".\";\nimport { helper } from \"../../lib/helper\";\nimport { Chain, toHex } from 'viem';\nimport { WalletConfigStore } from './walletConfigStore';\n\nconst defaultRPCList = [\n { name: 'https://babel-api.fastblocks.io', latency: 0, height: 0, custom: false },\n { name: 'https://babel-api.mainnet.iotex.one', latency: 0, height: 0, },\n { name: 'https://babel-api.mainnet.iotex.io', latency: 0, height: 0, },\n { name: 'https://iotex-network.rpc.thirdweb.com', latency: 0, height: 0, },\n { name: 'https://iotexrpc.com', latency: 0, height: 0, },\n { name: 'https://iotex.api.onfinality.io/public', latency: 0, height: 0, },\n { name: 'https://rpc.ankr.com/iotex', latency: 0, height: 0, },\n]\nexport class WalletRpcStore implements Store {\n sid = 'WalletPluginStore';\n autoObservable = true\n curRpc = new StorageState({ default: 'https://babel-api.mainnet.iotex.one', key: 'curRPC-v2', value: 'https://babel-api.mainnet.iotex.one' });\n isAutoSelectRpc = new StorageState({ key: 'isAutoSelectRpc', default: true });\n customRpc = '';\n rpcList = new StorageState({ key: 'customRpcList-v2', default: defaultRPCList, value: [] })\n showCustomRpc = false;\n get currentRpc() {\n console.log(this.rpcList.value?.find(i => i.name == this.curRpc))\n return this.rpcList.value?.find(i => i.name == this.curRpc.value) || null\n }\n addCustomRpc() {\n const item = { name: this.customRpc, latency: 0, height: 0, custom: true }\n if (defaultRPCList.find(i => i.name === item.name)) {\n return RootStore.Get(ToastPlugin).error('Rpc already exists')\n }\n if (this.rpcList.value) {\n this.rpcList.save([...this.rpcList.value, item])\n this.refresh()\n return\n }\n this.rpcList.save([...defaultRPCList, item])\n this.refresh()\n }\n async addToMetamask(url) {\n try {\n if (typeof window == 'undefined') return;\n await window?.ethereum?.request({\n method: 'wallet_addEthereumChain',\n params: [{\n chainId: `0x${(4689).toString(16)}`,\n chainName: 'IoTeX Mainnet',\n nativeCurrency: {\n name: 'IoTeX',\n symbol: 'IOTX',\n decimals: 18,\n },\n rpcUrls: [url],\n blockExplorerUrls: ['https://iotexscan.io'],\n }]\n });\n RootStore.Get(ToastPlugin).success('Network added');\n console.log('Network added');\n } catch (error) {\n console.error('Failed to add network', error);\n }\n }\n async switchOrAddChain(chainId: number) {\n return new Promise(async (resolve, reject) => {\n try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: toHex(chainId) }],\n });\n resolve(true)\n } catch (switchError) {\n if (switchError.code === 4902) {\n try {\n await this.addToMetamaskById(chainId)\n } catch (addError) {\n reject(addError)\n }\n } else {\n reject(switchError)\n }\n }\n })\n }\n async addToMetamaskById(id: number) {\n return new Promise(async (resolve, reject) => {\n try {\n if (typeof window == 'undefined') return;\n const chain = RootStore.Get(WalletConfigStore).supportedChains.find(i => i.id == id)\n const res = await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{\n \"chainId\": toHex(chain.id),\n \"chainName\": chain.name,\n \"nativeCurrency\": {\n \"name\": chain.nativeCurrency.name,\n \"symbol\": chain.nativeCurrency.symbol,\n \"decimals\": chain.nativeCurrency.decimals,\n },\n \"rpcUrls\": JSON.parse(JSON.stringify(chain.rpcUrls.default.http)),\n \"blockExplorerUrls\": [chain.blockExplorers.default.url],\n }]\n });\n console.log(res)\n resolve(res)\n } catch (switchError) {\n reject(false)\n }\n })\n }\n refresh() {\n this.showCustomRpc = false\n this.customRpc = ''\n setTimeout(() => {\n this.testRpc()\n }, 500)\n }\n latencyColor(latency: number) {\n if (latency < 0) {\n return 'text-red-500'\n }\n if (latency < 1) {\n return 'text-green-500'\n }\n if (latency < 2) {\n return 'text-yellow-500'\n }\n return 'text-red-500'\n }\n async testRpcFunction(url: string): Promise<{ url: string, lentency: number, height: number }> {\n const start = performance.now();\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_getBlockByNumber',\n params: [\"latest\", false],\n id: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Error from server: ${response.status}`);\n }\n const res = await response.json();\n console.log(res)\n const end = performance.now();\n return { url, lentency: Number(helper.number.numberFormat(((end - start) / 1000), '0.000', { fallback: '-1' })), height: parseInt(res.result.number, 16) };\n } catch (error) {\n console.error('RPC Latency Test Failed:', error);\n return { url, lentency: -1, height: -1 };\n }\n }\n testRpc() {\n this.rpcList?.value.forEach(i => {\n this.testRpcFunction(i.name).then(res => {\n i.latency = res.lentency\n i.height = res.height\n })\n })\n this.rpcList.save(this.rpcList.value)\n }\n removeRpc(name: string) {\n this.rpcList.save(this.rpcList.value.filter(i => i.name !== name))\n }\n scoreIcon(score: number) {\n if (score < 0) {\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n if (score < 1) {\n return <Icon icon=\"icon-park-solid:check-one\" width=\"18\" height=\"18\" style={{ color: \"#289726\" }} />\n }\n if (score < 2) {\n return <Icon icon=\"bxs:error\" width=\"18\" height=\"18\" style={{ color: \"#FFA500\" }} />\n }\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n get wallet() {\n return RootStore.Get(WalletStore)\n }\n // debounceAutoSelectRpc = pDebounce(this.autoSelectRpc, 3000)\n async autoSelectRpc() {\n console.log('autoSelectRpc')\n for (let i = 0; i < this.rpcList.value.length; i++) {\n const item = this.rpcList.value[i]\n const res = await this.testRpcFunction(item.name)\n if (res.lentency != -1 || res.height > 0) {\n this.curRpc.save(item.name)\n break;\n }\n }\n }\n}\n\nexport class WalletHistoryStore implements Store {\n sid = 'WalletHistoryStore';\n isRender = false\n autoObservable = true\n set(params: Partial<WalletHistoryStore>) {\n Object.assign(this, params);\n }\n private history = new StorageState<WalletTransactionHistoryType[] | null>({ value: [], key: 'history' });\n get historyList(): WalletTransactionHistoryType[] {\n if (this.isRender) {\n return this.history.value\n }\n return []\n }\n recordHistory(item: WalletTransactionHistoryType) {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n value = [item];\n } else {\n value = [...value, item];\n }\n this.history.setValue(value);\n }\n updateHistoryStatusByTx(tx: string | null, status: 'loading' | 'success' | 'fail') {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n return;\n }\n value = value.map((i) => {\n if (i.tx == tx) {\n i.status = status;\n return i;\n }\n if (!tx) {\n i.status = status;\n }\n return i;\n });\n this.history.setValue(value);\n }\n clearHistory() {\n this.history.setValue(null);\n }\n}\n","import { Chain, Wallet, useConnectModal, getDefaultConfig, WalletDetailsParams } from \"@rainbow-me/rainbowkit\";\nimport { walletConnectWallet, metaMaskWallet, iopayWallet, okxWallet, binanceWallet, safeWallet, gateWallet } from \"@rainbow-me/rainbowkit/wallets\";\nimport { iotex } from \"viem/chains\";\nimport { ObjectPool, Store } from \"../..\";\n\nexport class WalletConfigStore implements Store {\n sid = \"WalletConfigStore\";\n autoObservable = true;\n\n appName = \"Dappkit\";\n projectId = \"b69e844f38265667350efd78e3e1a5fb\";\n // @ts-ignore\n supportedChains: Chain[];\n defaultChainId = 4689;\n updateTicker = 1;\n walletUpdateTick = 0;\n isConnect = false;\n isInSafeApp = false;\n // This mode to resolve and walletClient and nextui in some extreme cases cause page infinite redraw bugs\n compatibleMode = true;\n\n constructor(args: Partial<WalletConfigStore>) {\n Object.assign(this, args);\n }\n\n set(params: Partial<WalletConfigStore>) {\n Object.assign(this, params);\n this.updateTicker += 1;\n }\n\n get reconnectOnMount() {\n if (!this.compatibleMode) return true;\n\n if (!this.isConnect && this.walletUpdateTick == 0) {\n return true;\n }\n if (!this.isConnect && this.walletUpdateTick != 0) {\n return false;\n }\n if (this.isConnect) {\n return true;\n }\n }\n\n get rainbowKitConfig() {\n return ObjectPool.get(`rainbowKitConfig-${this.supportedChains?.map((i) => i.id).join(\"-\")}`, () => {\n return getDefaultConfig({\n appName: this.appName,\n projectId: this.projectId,\n //@ts-ignore\n chains: this.supportedChains,\n wallets: [\n {\n groupName: \"Recommended\",\n wallets: [iopayWallet, metaMaskWallet],\n },\n {\n groupName: \"Others\",\n wallets: [metaMaskWallet, walletConnectWallet, iopayWallet, okxWallet, binanceWallet, safeWallet, gateWallet],\n },\n ],\n });\n });\n }\n}\n","import { Icon } from \"@iconify/react\";\nimport { observer } from \"mobx-react-lite\";\nimport React from \"react\";\nimport { RootStore } from \"../../../store\";\nimport { DialogStore } from \"../../../module/Dialog\";\ninterface IProps {\n msg: string,\n hash: string,\n}\n\nconst SuccessTxDialog = observer((props: IProps) => {\n return <div className='flex-col gap-4 py-10'>\n <div className='w-full flex items-center justify-center'>\n <Icon icon=\"icon-park-solid:check-one\" width=\"48\" height=\"48\" className='text-green-500' /></div>\n <div className='text-2xl font-[900] text-center mt-4'>{props.msg}</div>\n <div className='flex items-center justify-center text-green-500 text-sm mt-6 gap-2 cursor-pointer hover:text-green-600 transition'\n onClick={e => window.open(`https://iotexscan.io/tx/${props.hash}`, '_blank')}>View on IoTeXScan <Icon icon=\"material-symbols:chip-extraction-rounded\" width=\"18\" height=\"18\" /></div>\n </div>\n})\nexport const ShowSuccessTxDialog = ({ msg, hash }) => {\n RootStore.Get(DialogStore).setData({\n title: '',\n content: <SuccessTxDialog msg={msg} hash={hash} />,\n isOpen: true,\n })\n}","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})"]}
@@ -93,12 +93,14 @@ var primary_default = {
93
93
  var getStyle = (theme, key) => {
94
94
  switch (theme) {
95
95
  case "default":
96
- return _.get(default_default, key);
96
+ return _.get(default_default, key) || {};
97
97
  case "primary":
98
- return _.get(primary_default, key);
98
+ return _.get(primary_default, key) || {};
99
+ default:
100
+ return {};
99
101
  }
100
102
  };
101
103
 
102
104
  export { getStyle };
103
105
  //# sourceMappingURL=out.js.map
104
- //# sourceMappingURL=chunk-K73JTEJQ.mjs.map
106
+ //# sourceMappingURL=chunk-YG4RDLYA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../themes/default.json","../themes/primary.json","../themes/index.ts"],"names":[],"mappings":";;;;;AAAA;AAAA,EACE,OAAS;AAAA,IACP,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAe;AAAA,IACb,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,kBAAoB;AAAA,IAClB,qBAAuB;AAAA,MACrB,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,MACZ,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,IACtB,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,IACN,WAAa;AAAA,EACf;AACF;;;ACzCA;AAAA,EACE,OAAS;AAAA,IACP,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAe;AAAA,IACb,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,kBAAoB;AAAA,IAClB,qBAAuB;AAAA,MACrB,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,MACZ,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,IACtB,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,IACN,WAAa;AAAA,EACf;AACF;;;ACnCO,IAAM,WAAW,CAAC,OAAkB,QAAsB;AAC/D,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,EAAE,IAAI,iBAAc,GAAG,KAAK,CAAC;AAAA,IACtC,KAAK;AACH,aAAO,EAAE,IAAI,iBAAc,GAAG,KAAK,CAAC;AAAA,IACtC;AACE,aAAO,CAAC;AAAA,EACZ;AACF","sourcesContent":["{\n \"Modal\": {\n \"classNames\": {\n \"base\": \"\"\n }\n },\n \"InputWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"TextareaWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"DatePickerWidget\": {\n \"dateInputClassNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"SelectWidget\": {\n \"classNames\": {\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"MultipleSelectWidget\": {\n \"classNames\": {\n \"base\": \"w-full\",\n \"trigger\": \"min-h-12 py-1\",\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"CheckboxWidget\": {\n \"classNames\": {\n \"base\": \"m-0 flex items-center justify-start w-full cursor-pointer rounded-lg gap-2 p-[13px] bg-content2\"\n }\n },\n \"Card\": {\n \"className\": \"\"\n }\n}\n","{\n \"Modal\": {\n \"classNames\": {\n \"base\": \"dark:bg-[#09090B] border dark:border-[#2c2c2c] rounded-lg shadow-md\"\n }\n },\n \"InputWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent\"\n }\n },\n \"TextareaWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent\"\n }\n },\n \"DatePickerWidget\": {\n \"dateInputClassNames\": {\n \"inputWrapper\": \"rounded-lg bg-transparent border dark:border-[#2c2c2c] hover:bg-default-50\"\n }\n },\n \"SelectWidget\": {\n \"classNames\": {\n \"trigger\": \"rounded-lg bg-transparent shadow-none border dark:border-[#2c2c2c] data-[hover=true]:bg-default-50\",\n \"popoverContent\": \"rounded-lg shadow-md border border-[#F4F4F5] dark:border-[#3e3e3e]\"\n }\n },\n \"MultipleSelectWidget\": {\n \"classNames\": {\n \"base\": \"w-full\",\n \"trigger\": \"min-h-12 py-1 rounded-lg bg-transparent shadow-none border dark:border-[#2c2c2c] data-[hover=true]:bg-default-50\",\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"CheckboxWidget\": {\n \"classNames\": {\n \"base\": \"m-0 flex items-center justify-start w-full cursor-pointer rounded-lg gap-2 p-[13px] bg-transparent border dark:border-[#2c2c2c]\"\n }\n },\n \"Card\": {\n \"className\": \"dark:bg-[#09090B]\"\n }\n}\n","import { _ } from \"../lib/lodash\";\nimport defaultTheme from \"./default.json\";\nimport primaryTheme from \"./primary.json\";\n\nexport type ThemeType = \"default\" | \"primary\";\nexport type StyleKeyType = keyof typeof defaultTheme;\n\nexport const getStyle = (theme: ThemeType, key: StyleKeyType) => {\n switch (theme) {\n case \"default\":\n return _.get(defaultTheme, key) || {};\n case \"primary\":\n return _.get(primaryTheme, key) || {};\n default:\n return {};\n }\n};\n"]}
package/dist/form.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React$1, { Dispatch, SetStateAction, ReactNode } from 'react';
2
- import { TabsProps, ButtonProps, CheckboxProps, SlotsToClasses, InputSlots, InputProps, SelectSlots, SelectProps, SelectedItems, DatePickerProps, ModalSlots } from '@nextui-org/react';
2
+ import { ButtonProps, TabsProps, CheckboxProps, SlotsToClasses, InputSlots, InputProps, SelectSlots, SelectProps, SelectedItems, DatePickerProps, ModalSlots } from '@nextui-org/react';
3
3
  import { UiSchema, RJSFSchema, WidgetProps, Widget } from '@rjsf/utils';
4
4
  import * as _rjsf_validator_ajv8_lib_validator from '@rjsf/validator-ajv8/lib/validator';
5
5
  import Form, { IChangeEvent } from '@rjsf/core';
@@ -47,65 +47,18 @@ declare class JSONSchemaValue<T> {
47
47
  reset(): void;
48
48
  }
49
49
 
50
- type LayoutType = 'TabLayout' | 'GridLayout' | 'ListLayout' | 'SimpleLayout';
51
- type FieldLayoutType<T, F extends keyof T> = Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;
52
- type SubmitButtonProps<T> = ButtonProps & {
53
- onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void;
50
+ declare const COMPONENTS: {
51
+ GridLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
52
+ TabLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
53
+ ListLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
54
+ SimpleLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
54
55
  };
55
- type CombFormsCustomRender<T> = (formStates: {
56
- [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;
57
- }) => React$1.ReactNode;
58
- type CombFormsCustomRenderMap<T> = {
59
- Top?: CombFormsCustomRender<T>;
60
- SubmitButtonBefore?: CombFormsCustomRender<T>;
61
- SubmitButtonAfter?: CombFormsCustomRender<T>;
62
- };
63
- type SubformCustomRender<T> = (formKey: FormKey<T>, formState: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => React$1.ReactNode;
64
- type SubformCustomRenderMap<T> = {
65
- Top?: SubformCustomRender<T>;
66
- SubmitButtonBefore?: SubformCustomRender<T>;
67
- SubmitButtonAfter?: SubformCustomRender<T>;
68
- };
69
- type FormLayoutType<T, L> = L extends 'TabLayout' | 'ListLayout' | 'SimpleLayout' ? {
70
- [F in keyof T]?: {
71
- title?: string;
72
- titleBoxCss?: string;
73
- fieldLayout?: FieldLayoutType<T, F>;
74
- submitButtonProps?: SubmitButtonProps<T>;
75
- customRender?: SubformCustomRenderMap<T>;
76
- };
77
- } : L extends 'GridLayout' ? {
78
- [F in keyof T]?: {
79
- title?: string;
80
- titleBoxCss?: string;
81
- fieldLayout?: FieldLayoutType<T, F>;
82
- colSpan?: number;
83
- cardCss?: string;
84
- submitButtonProps?: SubmitButtonProps<T>;
85
- customRender?: SubformCustomRenderMap<T>;
86
- };
87
- } : never;
88
- type LayoutConfigType<T, L> = L extends 'TabLayout' ? {
89
- $type: 'TabLayout';
90
- $tabsProps?: TabsProps;
91
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
92
- } & FormLayoutType<T, L> : L extends 'GridLayout' ? {
93
- $type: 'GridLayout';
94
- $gridColumn?: number;
95
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
96
- } & FormLayoutType<T, L> : L extends 'ListLayout' ? {
97
- $type: 'ListLayout';
98
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
99
- } & FormLayoutType<T, L> : L extends 'SimpleLayout' ? {
100
- $type: 'SimpleLayout';
101
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
102
- } & FormLayoutType<T, L> : never;
103
56
  type FormDataType = {
104
57
  [key: string]: {
105
58
  [key: string]: string | number | boolean | Record<string, string | number | boolean>;
106
59
  };
107
60
  };
108
- type FormConfigType<T> = {
61
+ type FormConfigType<T extends FormDataType> = {
109
62
  [F in keyof T]?: {
110
63
  [X in keyof T[F]]?: {
111
64
  title?: string;
@@ -120,15 +73,71 @@ type FormConfigType<T> = {
120
73
  } & UiSchema;
121
74
  };
122
75
  };
123
- type FormKey<T = FormDataType> = keyof T;
124
- type FormDataOfKey<T = FormDataType> = T[FormKey<T>];
125
- type JSONFormProps<T = FormDataType> = {
76
+ type SubmitButtonProps<T extends FormDataType> = ButtonProps & {
77
+ onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void;
78
+ };
79
+ type CombFormsCustomRender<T extends FormDataType> = (formStates: {
80
+ [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;
81
+ }) => React$1.ReactNode;
82
+ type CombFormsCustomRenderMap<T extends FormDataType> = {
83
+ Top?: CombFormsCustomRender<T>;
84
+ SubmitButtonBefore?: CombFormsCustomRender<T>;
85
+ SubmitButtonAfter?: CombFormsCustomRender<T>;
86
+ };
87
+ type SubformCustomRender<T extends FormDataType> = (formKey: FormKey<T>, formState: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => React$1.ReactNode;
88
+ type SubformCustomRenderMap<T extends FormDataType> = {
89
+ Top?: SubformCustomRender<T>;
90
+ SubmitButtonBefore?: SubformCustomRender<T>;
91
+ SubmitButtonAfter?: SubformCustomRender<T>;
92
+ };
93
+ type SubformLayoutBaseConfig<T extends FormDataType, F extends keyof T> = {
94
+ title?: string;
95
+ titleBoxCss?: string;
96
+ fieldLayout?: Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;
97
+ submitButtonProps?: SubmitButtonProps<T>;
98
+ customRender?: SubformCustomRenderMap<T>;
99
+ };
100
+ interface LayoutConfigMap<T extends FormDataType> {
101
+ GridLayout: {
102
+ $type: 'GridLayout';
103
+ $gridColumn?: number;
104
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
105
+ } & {
106
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F> & {
107
+ colSpan?: number;
108
+ cardCss?: string;
109
+ };
110
+ };
111
+ TabLayout: {
112
+ $type: 'TabLayout';
113
+ $tabsProps?: TabsProps;
114
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
115
+ } & {
116
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F>;
117
+ };
118
+ ListLayout: {
119
+ $type: 'ListLayout';
120
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
121
+ } & {
122
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F>;
123
+ };
124
+ SimpleLayout: {
125
+ $type: 'SimpleLayout';
126
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
127
+ } & {
128
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F>;
129
+ };
130
+ }
131
+ type LayoutType = keyof typeof COMPONENTS;
132
+ type LayoutConfigType<T extends FormDataType, L extends LayoutType> = LayoutConfigMap<T>[L];
133
+ type FormKey<T extends FormDataType> = keyof T;
134
+ type FormDataOfKey<T extends FormDataType> = T[FormKey<T>];
135
+ type JSONFormProps<T extends FormDataType> = {
126
136
  className?: string;
127
137
  theme?: ThemeType;
128
138
  formData: T;
129
139
  formConfig?: FormConfigType<T>;
130
140
  layoutConfig?: LayoutConfigType<T, LayoutType>;
131
- children?: any;
132
141
  onBatchSubmit?: (data: T, setLoading: Dispatch<SetStateAction<boolean>>) => void;
133
142
  onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;
134
143
  onChange?: (data: Partial<T>) => void;
@@ -372,4 +381,4 @@ declare function getSimpleFormData<T>(data: T, metadata: {
372
381
  [key: string]: any;
373
382
  } & Partial<JSONSchemaFormState<any>>, config: Partial<FormModalStore>, onSet?: (v: T, form: JSONSchemaFormState<T, UiSchema>) => T, theme?: ThemeType): Promise<T>;
374
383
 
375
- export { CheckboxWidget, type CheckboxWidgetProps, type CheckboxWidgetUIOptions, ComplexFormModalStore, DatePickerWidget, type DatePickerWidgetProps, type DatePickerWidgetUIOptions, EditorWidget, type EditorWidgetProps, type EditorWidgetUIOptions, type FieldLayoutType, type FormConfigType, type FormDataOfKey, type FormDataType, type FormKey, type FormLayoutType, FormModalStore, InputWidget, type InputWidgetProps, type InputWidgetUIOptions, JSONForm, type JSONFormProps, JSONSchemaForm, type LayoutConfigType, type LayoutType, MultipleSelectWidget, type MultipleSelectWidgetProps, type MultipleSelectWidgetUIOptions, SelectWidget, type SelectWidgetProps, type SelectWidgetUIOptions, TextareaWidget, type TextareaWidgetProps, type TextareaWidgetUIOptions, getComplexFormData, getFormData, getFormState, getSimpleFormData };
384
+ export { CheckboxWidget, type CheckboxWidgetProps, type CheckboxWidgetUIOptions, ComplexFormModalStore, DatePickerWidget, type DatePickerWidgetProps, type DatePickerWidgetUIOptions, EditorWidget, type EditorWidgetProps, type EditorWidgetUIOptions, type FormConfigType, type FormDataOfKey, type FormDataType, type FormKey, FormModalStore, InputWidget, type InputWidgetProps, type InputWidgetUIOptions, JSONForm, type JSONFormProps, JSONSchemaForm, type LayoutConfigType, type LayoutType, MultipleSelectWidget, type MultipleSelectWidgetProps, type MultipleSelectWidgetUIOptions, SelectWidget, type SelectWidgetProps, type SelectWidgetUIOptions, TextareaWidget, type TextareaWidgetProps, type TextareaWidgetUIOptions, getComplexFormData, getFormData, getFormState, getSimpleFormData };
package/dist/form.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { getStyle } from './chunk-K73JTEJQ.mjs';
1
+ import { getStyle } from './chunk-YG4RDLYA.mjs';
2
2
  import { useStore, RootStore } from './chunk-XSGTWROT.mjs';
3
3
  import { helper } from './chunk-R4N52NI2.mjs';
4
4
  import { _ } from './chunk-K7LFG5BA.mjs';
@@ -1017,7 +1017,7 @@ var TabLayout = (props) => {
1017
1017
  };
1018
1018
 
1019
1019
  // components/JSONForm/index.tsx
1020
- var components = {
1020
+ var COMPONENTS = {
1021
1021
  GridLayout,
1022
1022
  TabLayout,
1023
1023
  ListLayout,
@@ -1026,13 +1026,8 @@ var components = {
1026
1026
  var JSONForm = (props) => {
1027
1027
  var _a;
1028
1028
  const type = ((_a = props.layoutConfig) == null ? void 0 : _a.$type) || "SimpleLayout";
1029
- const Component = components[type];
1030
- return /* @__PURE__ */ React7.createElement(
1031
- "div",
1032
- { className: props.className },
1033
- // @ts-ignore
1034
- /* @__PURE__ */ React7.createElement(Component, __spreadValues({}, props))
1035
- );
1029
+ const Comp = COMPONENTS[type];
1030
+ return /* @__PURE__ */ React7.createElement("div", { className: props.className }, /* @__PURE__ */ React7.createElement(Comp, __spreadValues({}, props)));
1036
1031
  };
1037
1032
  function TextareaWidget(props) {
1038
1033
  var _a;