@dropfi/xrpl-react 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -22,24 +22,61 @@ function useXrplReact() {
22
22
  react.useEffect(() => {
23
23
  if (typeof window === 'undefined')
24
24
  return;
25
- const xrpl = window.xrpl;
26
- if (!xrpl)
27
- return;
28
- const handleSelectedNetwork = (val) => setNetwork(val);
29
- const handleSelectedAddress = (val) => setAddress(val);
30
- const handleConnectedAccounts = (val) => setConnectedAccounts(val);
31
- // 1) attach listeners
32
- xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
33
- xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);
34
- xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
35
- // 2) then initialize
36
- xrpl.initialize?.();
37
- setInitialized(true);
38
- return () => {
39
- xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
40
- xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);
41
- xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
25
+ const POLL_INTERVAL_MS = 100;
26
+ const POLL_MAX_ATTEMPTS = 50; // 5 seconds total
27
+ let cancelled = false;
28
+ let attempt = 0;
29
+ const runInit = (xrpl) => {
30
+ if (!xrpl)
31
+ return;
32
+ const handleSelectedNetwork = (val) => setNetwork(val);
33
+ const handleSelectedAddress = (val) => setAddress(val);
34
+ const handleConnectedAccounts = (val) => setConnectedAccounts(val);
35
+ // 1) Sync current snapshot in case provider was already populated (e.g. from another tab or race)
36
+ if (xrpl.selectedAddress)
37
+ setAddress(xrpl.selectedAddress);
38
+ if (Array.isArray(xrpl.connectedAccounts) && xrpl.connectedAccounts.length > 0) {
39
+ setConnectedAccounts(xrpl.connectedAccounts);
40
+ }
41
+ if (xrpl.network)
42
+ setNetwork(xrpl.network);
43
+ // 2) Attach listeners
44
+ xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
45
+ xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);
46
+ xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
47
+ // 3) Request latest state from extension (will emit events and update snapshot)
48
+ xrpl.initialize?.();
49
+ setInitialized(true);
50
+ return () => {
51
+ xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
52
+ xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);
53
+ xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
54
+ };
55
+ };
56
+ const poll = () => {
57
+ if (cancelled)
58
+ return;
59
+ const xrpl = window.xrpl;
60
+ if (xrpl?.isDropFi) {
61
+ const teardown = runInit(xrpl);
62
+ return () => {
63
+ cancelled = true;
64
+ teardown?.();
65
+ };
66
+ }
67
+ attempt += 1;
68
+ if (attempt < POLL_MAX_ATTEMPTS) {
69
+ const id = window.setTimeout(poll, POLL_INTERVAL_MS);
70
+ return () => {
71
+ cancelled = true;
72
+ window.clearTimeout(id);
73
+ };
74
+ }
75
+ return () => {
76
+ cancelled = true;
77
+ };
42
78
  };
79
+ return poll();
43
80
  }, []);
44
81
  const connect = async () => {
45
82
  setIsConnecting(true);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const xrpl = window.xrpl;\n if (!xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n // 1) attach listeners\n xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n // 2) then initialize\n xrpl.initialize?.();\n setInitialized(true);\n\n return () => {\n xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["createContext","_jsx","useContext","useState","useEffect","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const POLL_INTERVAL_MS = 100;\n const POLL_MAX_ATTEMPTS = 50; // 5 seconds total\n\n let cancelled = false;\n let attempt = 0;\n\n const runInit = (xrpl: typeof window.xrpl) => {\n if (!xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n // 1) Sync current snapshot in case provider was already populated (e.g. from another tab or race)\n if (xrpl.selectedAddress) setAddress(xrpl.selectedAddress);\n if (Array.isArray(xrpl.connectedAccounts) && xrpl.connectedAccounts.length > 0) {\n setConnectedAccounts(xrpl.connectedAccounts);\n }\n if (xrpl.network) setNetwork(xrpl.network);\n\n // 2) Attach listeners\n xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n // 3) Request latest state from extension (will emit events and update snapshot)\n xrpl.initialize?.();\n setInitialized(true);\n\n return () => {\n xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n };\n\n const poll = () => {\n if (cancelled) return;\n const xrpl = window.xrpl;\n if (xrpl?.isDropFi) {\n const teardown = runInit(xrpl);\n return () => {\n cancelled = true;\n teardown?.();\n };\n }\n attempt += 1;\n if (attempt < POLL_MAX_ATTEMPTS) {\n const id = window.setTimeout(poll, POLL_INTERVAL_MS);\n return () => {\n cancelled = true;\n window.clearTimeout(id);\n };\n }\n return () => {\n cancelled = true;\n };\n };\n\n return poll();\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["createContext","_jsx","useContext","useState","useEffect","useMemo"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -20,24 +20,61 @@ function useXrplReact() {
20
20
  useEffect(() => {
21
21
  if (typeof window === 'undefined')
22
22
  return;
23
- const xrpl = window.xrpl;
24
- if (!xrpl)
25
- return;
26
- const handleSelectedNetwork = (val) => setNetwork(val);
27
- const handleSelectedAddress = (val) => setAddress(val);
28
- const handleConnectedAccounts = (val) => setConnectedAccounts(val);
29
- // 1) attach listeners
30
- xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
31
- xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);
32
- xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
33
- // 2) then initialize
34
- xrpl.initialize?.();
35
- setInitialized(true);
36
- return () => {
37
- xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
38
- xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);
39
- xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
23
+ const POLL_INTERVAL_MS = 100;
24
+ const POLL_MAX_ATTEMPTS = 50; // 5 seconds total
25
+ let cancelled = false;
26
+ let attempt = 0;
27
+ const runInit = (xrpl) => {
28
+ if (!xrpl)
29
+ return;
30
+ const handleSelectedNetwork = (val) => setNetwork(val);
31
+ const handleSelectedAddress = (val) => setAddress(val);
32
+ const handleConnectedAccounts = (val) => setConnectedAccounts(val);
33
+ // 1) Sync current snapshot in case provider was already populated (e.g. from another tab or race)
34
+ if (xrpl.selectedAddress)
35
+ setAddress(xrpl.selectedAddress);
36
+ if (Array.isArray(xrpl.connectedAccounts) && xrpl.connectedAccounts.length > 0) {
37
+ setConnectedAccounts(xrpl.connectedAccounts);
38
+ }
39
+ if (xrpl.network)
40
+ setNetwork(xrpl.network);
41
+ // 2) Attach listeners
42
+ xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
43
+ xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);
44
+ xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
45
+ // 3) Request latest state from extension (will emit events and update snapshot)
46
+ xrpl.initialize?.();
47
+ setInitialized(true);
48
+ return () => {
49
+ xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
50
+ xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);
51
+ xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
52
+ };
53
+ };
54
+ const poll = () => {
55
+ if (cancelled)
56
+ return;
57
+ const xrpl = window.xrpl;
58
+ if (xrpl?.isDropFi) {
59
+ const teardown = runInit(xrpl);
60
+ return () => {
61
+ cancelled = true;
62
+ teardown?.();
63
+ };
64
+ }
65
+ attempt += 1;
66
+ if (attempt < POLL_MAX_ATTEMPTS) {
67
+ const id = window.setTimeout(poll, POLL_INTERVAL_MS);
68
+ return () => {
69
+ cancelled = true;
70
+ window.clearTimeout(id);
71
+ };
72
+ }
73
+ return () => {
74
+ cancelled = true;
75
+ };
40
76
  };
77
+ return poll();
41
78
  }, []);
42
79
  const connect = async () => {
43
80
  setIsConnecting(true);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const xrpl = window.xrpl;\n if (!xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n // 1) attach listeners\n xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n // 2) then initialize\n xrpl.initialize?.();\n setInitialized(true);\n\n return () => {\n xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["_jsx"],"mappings":";;;AAUO,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC;AAOhE,MAAM,YAAY,GAAgC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAI;AAC9E,IAAA,OAAOA,GAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EAAG,QAAQ,GAAwB;AACrF;;SChBgB,YAAY,GAAA;AAC1B,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;IAGpE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAsB;IAC5D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC;IACxE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAS,SAAS,CAAC;IACzD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACvD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAEvD,SAAS,CAAC,MAAK;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;QAEX,MAAM,qBAAqB,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,CAAC;QAC9D,MAAM,qBAAqB,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,CAAC;QAC9D,MAAM,uBAAuB,GAAG,CAAC,GAAa,KAAK,oBAAoB,CAAC,GAAG,CAAC;;QAG5E,IAAI,CAAC,EAAE,GAAG,sBAAsB,EAAE,qBAAqB,CAAC;QACxD,IAAI,CAAC,EAAE,GAAG,sBAAsB,EAAE,qBAAqB,CAAC;QACxD,IAAI,CAAC,EAAE,GAAG,wBAAwB,EAAE,uBAAuB,CAAC;;AAG5D,QAAA,IAAI,CAAC,UAAU,IAAI;QACnB,cAAc,CAAC,IAAI,CAAC;AAEpB,QAAA,OAAO,MAAK;YACV,IAAI,CAAC,GAAG,GAAG,sBAAsB,EAAE,qBAAqB,CAAC;YACzD,IAAI,CAAC,GAAG,GAAG,sBAAsB,EAAE,qBAAqB,CAAC;YACzD,IAAI,CAAC,GAAG,GAAG,wBAAwB,EAAE,uBAAuB,CAAC;AAC/D,SAAC;KACF,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,OAAO,GAAG,YAAW;QACzB,eAAe,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,IAAI;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YAC5C,UAAU,CAAC,QAAQ,CAAC;AACpB,YAAA,OAAO,QAAQ;;QACf,OAAO,GAAQ,EAAE;AACjB,YAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACrB,YAAA,MAAM,GAAG;;gBACD;YACR,eAAe,CAAC,KAAK,CAAC;;AAE1B,KAAC;AAED,IAAA,MAAM,UAAU,GAAG,YAAW;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzD,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACrC,UAAU,CAAC,SAAS,CAAC;AACvB,KAAC;AAED,IAAA,MAAM,eAAe,GAAG,OAAO,EAAO,KAAI;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzD,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC9C,KAAC;AAED,IAAA,MAAM,aAAa,GAAG,OAAO,OAAe,KAAI;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzD,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACjD,KAAC;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,OAAe,KAAI;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAClD,IAAI,GAAG,CAAC,KAAK;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,QAAA,OAAO,GAAG;AACZ,KAAC;AAED,IAAA,OAAO,OAAO,CACZ,OAAO;QACL,OAAO;AACP,QAAA,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACtD,OAAO;QACP,UAAU;QACV,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,OAAO;QACP,KAAK;QACL,YAAY;QACZ,WAAW;QACX,WAAW;AACZ,KAAA,CAAC,EACF,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CACxE;AACH;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const POLL_INTERVAL_MS = 100;\n const POLL_MAX_ATTEMPTS = 50; // 5 seconds total\n\n let cancelled = false;\n let attempt = 0;\n\n const runInit = (xrpl: typeof window.xrpl) => {\n if (!xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n // 1) Sync current snapshot in case provider was already populated (e.g. from another tab or race)\n if (xrpl.selectedAddress) setAddress(xrpl.selectedAddress);\n if (Array.isArray(xrpl.connectedAccounts) && xrpl.connectedAccounts.length > 0) {\n setConnectedAccounts(xrpl.connectedAccounts);\n }\n if (xrpl.network) setNetwork(xrpl.network);\n\n // 2) Attach listeners\n xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n // 3) Request latest state from extension (will emit events and update snapshot)\n xrpl.initialize?.();\n setInitialized(true);\n\n return () => {\n xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n };\n\n const poll = () => {\n if (cancelled) return;\n const xrpl = window.xrpl;\n if (xrpl?.isDropFi) {\n const teardown = runInit(xrpl);\n return () => {\n cancelled = true;\n teardown?.();\n };\n }\n attempt += 1;\n if (attempt < POLL_MAX_ATTEMPTS) {\n const id = window.setTimeout(poll, POLL_INTERVAL_MS);\n return () => {\n cancelled = true;\n window.clearTimeout(id);\n };\n }\n return () => {\n cancelled = true;\n };\n };\n\n return poll();\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["_jsx"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dropfi/xrpl-react",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "React provider and hook for XRPL dApps using DropFi wallet",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",