@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.
- package/dist/{chunk-GT4R5SDI.mjs → chunk-63DQOYRW.mjs} +2 -2
- package/dist/{chunk-I3EOCKF6.mjs → chunk-VXA4UKJU.mjs} +19 -78
- package/dist/chunk-VXA4UKJU.mjs.map +1 -0
- package/dist/{chunk-K73JTEJQ.mjs → chunk-YG4RDLYA.mjs} +5 -3
- package/dist/chunk-YG4RDLYA.mjs.map +1 -0
- package/dist/form.d.mts +68 -59
- package/dist/form.mjs +4 -9
- package/dist/form.mjs.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/jsoncomponent.d.mts +22 -0
- package/dist/jsoncomponent.mjs +42 -0
- package/dist/jsoncomponent.mjs.map +1 -0
- package/dist/plugins.mjs +3 -3
- package/dist/wallet.mjs +4 -4
- package/package.json +10 -3
- package/dist/chunk-I3EOCKF6.mjs.map +0 -1
- package/dist/chunk-K73JTEJQ.mjs.map +0 -1
- /package/dist/{chunk-GT4R5SDI.mjs.map → chunk-63DQOYRW.mjs.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getStyle } from './chunk-
|
|
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-
|
|
76
|
+
//# sourceMappingURL=chunk-63DQOYRW.mjs.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AIem } from './chunk-NPQ7GCFM.mjs';
|
|
2
|
-
import { DialogStore } from './chunk-
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
533
|
+
return /* @__PURE__ */ React2.createElement(Icon, { icon: "bxs:error", width: "18", height: "18", style: { color: "#FFA500" } });
|
|
535
534
|
}
|
|
536
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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
|
-
|
|
772
|
+
walletRpcStore.switchOrAddChain(chainId != null ? chainId : 4689);
|
|
780
773
|
} catch (error) {
|
|
781
|
-
|
|
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__ */
|
|
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__ */
|
|
1044
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, rootStore2.providers.map((store) => {
|
|
1104
1045
|
const Component = store.provider;
|
|
1105
|
-
return /* @__PURE__ */
|
|
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-
|
|
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-
|
|
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 {
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
124
|
-
|
|
125
|
-
|
|
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
|
|
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-
|
|
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
|
|
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
|
|
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;
|