@sundaeswap/wallet-lite 0.0.3 → 0.0.4

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.
Files changed (143) hide show
  1. package/dist/cjs/@types/events.js +27 -0
  2. package/dist/cjs/@types/events.js.map +1 -0
  3. package/dist/cjs/@types/index.js +28 -0
  4. package/dist/cjs/@types/index.js.map +1 -0
  5. package/dist/cjs/@types/observer.js +6 -0
  6. package/dist/cjs/@types/observer.js.map +1 -0
  7. package/dist/cjs/classes/WalletBalanceMap.class.js +140 -0
  8. package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -0
  9. package/dist/cjs/classes/WalletObserver.class.js +719 -0
  10. package/dist/cjs/classes/WalletObserver.class.js.map +1 -0
  11. package/dist/cjs/classes/WalletObserverEvent.js +93 -0
  12. package/dist/cjs/classes/WalletObserverEvent.js.map +1 -0
  13. package/dist/cjs/index.js +119 -0
  14. package/dist/cjs/index.js.map +1 -0
  15. package/dist/cjs/react-components/RenderWallet.js +22 -0
  16. package/dist/cjs/react-components/RenderWallet.js.map +1 -0
  17. package/dist/cjs/react-components/RenderWalletHandles.js +145 -0
  18. package/dist/cjs/react-components/RenderWalletHandles.js.map +1 -0
  19. package/dist/cjs/react-components/RenderWalletPeerConnect.js +73 -0
  20. package/dist/cjs/react-components/RenderWalletPeerConnect.js.map +1 -0
  21. package/dist/cjs/react-components/RenderWalletState.js +74 -0
  22. package/dist/cjs/react-components/RenderWalletState.js.map +1 -0
  23. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +59 -0
  24. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -0
  25. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js +70 -0
  26. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js.map +1 -0
  27. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +33 -0
  28. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +1 -0
  29. package/dist/cjs/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js +27 -0
  30. package/dist/cjs/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js.map +1 -0
  31. package/dist/cjs/react-components/WalletObserverProvider/hooks/useSyncWalletFunction.js +146 -0
  32. package/dist/cjs/react-components/WalletObserverProvider/hooks/useSyncWalletFunction.js.map +1 -0
  33. package/dist/cjs/react-components/WalletObserverProvider/index.js +14 -0
  34. package/dist/cjs/react-components/WalletObserverProvider/index.js.map +1 -0
  35. package/dist/cjs/react-components/contexts/observer/context.js +25 -0
  36. package/dist/cjs/react-components/contexts/observer/context.js.map +1 -0
  37. package/dist/cjs/react-components/contexts/observer/index.js +28 -0
  38. package/dist/cjs/react-components/contexts/observer/index.js.map +1 -0
  39. package/dist/cjs/react-components/contexts/observer/types.js +6 -0
  40. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -0
  41. package/dist/cjs/react-components/hooks/useAvailableExtensions.js +94 -0
  42. package/dist/cjs/react-components/hooks/useAvailableExtensions.js.map +1 -0
  43. package/dist/cjs/react-components/hooks/useWalletObserver.js +35 -0
  44. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -0
  45. package/dist/cjs/utils/comparisons.js +58 -0
  46. package/dist/cjs/utils/comparisons.js.map +1 -0
  47. package/dist/cjs/utils/hashing.js +34 -0
  48. package/dist/cjs/utils/hashing.js.map +1 -0
  49. package/dist/esm/@types/events.js +23 -0
  50. package/dist/esm/@types/events.js.map +1 -0
  51. package/dist/esm/@types/index.js +3 -0
  52. package/dist/esm/@types/index.js.map +1 -0
  53. package/dist/esm/@types/observer.js +2 -0
  54. package/dist/esm/@types/observer.js.map +1 -0
  55. package/dist/esm/classes/WalletBalanceMap.class.js +90 -0
  56. package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -0
  57. package/dist/esm/classes/WalletObserver.class.js +380 -0
  58. package/dist/esm/classes/WalletObserver.class.js.map +1 -0
  59. package/dist/esm/classes/WalletObserverEvent.js +78 -0
  60. package/dist/esm/classes/WalletObserverEvent.js.map +1 -0
  61. package/dist/esm/index.js +24 -0
  62. package/dist/esm/index.js.map +1 -0
  63. package/dist/esm/react-components/RenderWallet.js +17 -0
  64. package/dist/esm/react-components/RenderWallet.js.map +1 -0
  65. package/dist/esm/react-components/RenderWalletHandles.js +80 -0
  66. package/dist/esm/react-components/RenderWalletHandles.js.map +1 -0
  67. package/dist/esm/react-components/RenderWalletPeerConnect.js +45 -0
  68. package/dist/esm/react-components/RenderWalletPeerConnect.js.map +1 -0
  69. package/dist/esm/react-components/RenderWalletState.js +52 -0
  70. package/dist/esm/react-components/RenderWalletState.js.map +1 -0
  71. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +45 -0
  72. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -0
  73. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js +60 -0
  74. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js.map +1 -0
  75. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +27 -0
  76. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +1 -0
  77. package/dist/esm/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js +22 -0
  78. package/dist/esm/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js.map +1 -0
  79. package/dist/esm/react-components/WalletObserverProvider/hooks/useSyncWalletFunction.js +73 -0
  80. package/dist/esm/react-components/WalletObserverProvider/hooks/useSyncWalletFunction.js.map +1 -0
  81. package/dist/esm/react-components/WalletObserverProvider/index.js +2 -0
  82. package/dist/esm/react-components/WalletObserverProvider/index.js.map +1 -0
  83. package/dist/esm/react-components/contexts/observer/context.js +18 -0
  84. package/dist/esm/react-components/contexts/observer/context.js.map +1 -0
  85. package/dist/esm/react-components/contexts/observer/index.js +3 -0
  86. package/dist/esm/react-components/contexts/observer/index.js.map +1 -0
  87. package/dist/esm/react-components/contexts/observer/types.js +2 -0
  88. package/dist/esm/react-components/contexts/observer/types.js.map +1 -0
  89. package/dist/esm/react-components/hooks/useAvailableExtensions.js +55 -0
  90. package/dist/esm/react-components/hooks/useAvailableExtensions.js.map +1 -0
  91. package/dist/esm/react-components/hooks/useWalletObserver.js +31 -0
  92. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -0
  93. package/dist/esm/utils/comparisons.js +32 -0
  94. package/dist/esm/utils/comparisons.js.map +1 -0
  95. package/dist/esm/utils/hashing.js +28 -0
  96. package/dist/esm/utils/hashing.js.map +1 -0
  97. package/dist/types/@types/events.d.ts +42 -0
  98. package/dist/types/@types/events.d.ts.map +1 -0
  99. package/dist/types/@types/observer.d.ts +71 -0
  100. package/dist/types/@types/observer.d.ts.map +1 -0
  101. package/dist/types/classes/WalletBalanceMap.class.d.ts +57 -0
  102. package/dist/types/classes/WalletBalanceMap.class.d.ts.map +1 -0
  103. package/dist/types/classes/WalletObserver.class.d.ts +149 -0
  104. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -0
  105. package/dist/types/classes/WalletObserverEvent.d.ts +44 -0
  106. package/dist/types/classes/WalletObserverEvent.d.ts.map +1 -0
  107. package/dist/types/index.d.ts +22 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/react-components/RenderWallet.d.ts +16 -0
  110. package/dist/types/react-components/RenderWallet.d.ts.map +1 -0
  111. package/dist/types/react-components/RenderWalletHandles.d.ts +21 -0
  112. package/dist/types/react-components/RenderWalletHandles.d.ts.map +1 -0
  113. package/dist/types/react-components/RenderWalletPeerConnect.d.ts +19 -0
  114. package/dist/types/react-components/RenderWalletPeerConnect.d.ts.map +1 -0
  115. package/dist/types/react-components/RenderWalletState.d.ts +19 -0
  116. package/dist/types/react-components/RenderWalletState.d.ts.map +1 -0
  117. package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts +12 -0
  118. package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -0
  119. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.d.ts +13 -0
  120. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.d.ts.map +1 -0
  121. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts +12 -0
  122. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts.map +1 -0
  123. package/dist/types/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.d.ts +12 -0
  124. package/dist/types/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.d.ts.map +1 -0
  125. package/dist/types/react-components/WalletObserverProvider/hooks/useSyncWalletFunction.d.ts +34 -0
  126. package/dist/types/react-components/WalletObserverProvider/hooks/useSyncWalletFunction.d.ts.map +1 -0
  127. package/dist/types/react-components/WalletObserverProvider/index.d.ts +2 -0
  128. package/dist/types/react-components/WalletObserverProvider/index.d.ts.map +1 -0
  129. package/dist/types/react-components/contexts/observer/context.d.ts +13 -0
  130. package/dist/types/react-components/contexts/observer/context.d.ts.map +1 -0
  131. package/dist/types/react-components/contexts/observer/index.d.ts +3 -0
  132. package/dist/types/react-components/contexts/observer/index.d.ts.map +1 -0
  133. package/dist/types/react-components/contexts/observer/types.d.ts +67 -0
  134. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -0
  135. package/dist/types/react-components/hooks/useAvailableExtensions.d.ts +17 -0
  136. package/dist/types/react-components/hooks/useAvailableExtensions.d.ts.map +1 -0
  137. package/dist/types/react-components/hooks/useWalletObserver.d.ts +9 -0
  138. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -0
  139. package/dist/types/utils/comparisons.d.ts +10 -0
  140. package/dist/types/utils/comparisons.d.ts.map +1 -0
  141. package/dist/types/utils/hashing.d.ts +19 -0
  142. package/dist/types/utils/hashing.d.ts.map +1 -0
  143. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import { getEventKey } from "../utils/hashing.js";
5
+
6
+ /**
7
+ * The base class for the WalletObserver class. This handles
8
+ * the event-based tracking for all internal hooks.
9
+ */
10
+ export class WalletObserverEvent {
11
+ constructor() {
12
+ _defineProperty(this, "_eventTarget", void 0);
13
+ _defineProperty(this, "_handlers", new Map());
14
+ /**
15
+ * Dispatches an event.
16
+ *
17
+ * @template E - The event type.
18
+ * @param {E} event - The event to dispatch.
19
+ * @param {EWalletObserverEventValues[E]} [data] - The data to pass with the event.
20
+ */
21
+ _defineProperty(this, "dispatch", (event, data) => {
22
+ this._eventTarget.dispatchEvent(new CustomEvent(event, {
23
+ detail: data
24
+ }));
25
+ });
26
+ /**
27
+ * Adds an event listener.
28
+ *
29
+ * @template E - The event type.
30
+ * @param {E} event - The event to listen for.
31
+ * @param {TWalletObserverEventFunction<E>} callback - The callback function to execute when the event is triggered.
32
+ * @returns {void}
33
+ */
34
+ _defineProperty(this, "addEventListener", (event, callback) => {
35
+ const key = getEventKey(event, callback);
36
+
37
+ // Ensure no duplicate handlers.
38
+ if (this._handlers.has(key)) {
39
+ const func = this._handlers.get(key);
40
+ if (func) {
41
+ return;
42
+ }
43
+ }
44
+ const handler = e => {
45
+ callback(e?.detail);
46
+ };
47
+ this._handlers.set(key, handler);
48
+ this._eventTarget.addEventListener(event, handler);
49
+ });
50
+ /**
51
+ * Removes an event listener.
52
+ *
53
+ * @template E - The event type.
54
+ * @param {E} event - The event to remove the listener from.
55
+ * @param {TWalletObserverEventFunction<E>} callback - The callback function to remove.
56
+ * @param {boolean | EventListenerOptions} [options] - Additional options for removing the listener.
57
+ */
58
+ _defineProperty(this, "removeEventListener", (event, callback, options) => {
59
+ const key = getEventKey(event, callback);
60
+ const func = this._handlers.get(key);
61
+ if (func) {
62
+ this._handlers.delete(key);
63
+ this._eventTarget.removeEventListener(event, func, options);
64
+ }
65
+ });
66
+ this._eventTarget = new EventTarget();
67
+ }
68
+ /**
69
+ * Queries the currently registered events. This is useful
70
+ * if you want to expose these and remove any.
71
+ *
72
+ * @returns {Map<string, Function>} - A map of registered event handlers.
73
+ */
74
+ eventList() {
75
+ return this._handlers;
76
+ }
77
+ }
78
+ //# sourceMappingURL=WalletObserverEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletObserverEvent.js","names":["getEventKey","WalletObserverEvent","constructor","_defineProperty","Map","event","data","_eventTarget","dispatchEvent","CustomEvent","detail","callback","key","_handlers","has","func","get","handler","e","set","addEventListener","options","delete","removeEventListener","EventTarget","eventList"],"sources":["../../../src/classes/WalletObserverEvent.ts"],"sourcesContent":["import {\n EWalletObserverEventValues,\n TWalletObserverEventFunction,\n} from \"../@types/events.js\";\nimport { getEventKey } from \"../utils/hashing.js\";\n\n/**\n * The base class for the WalletObserver class. This handles\n * the event-based tracking for all internal hooks.\n */\nexport class WalletObserverEvent {\n private _eventTarget: EventTarget;\n private _handlers: Map<string, Function> = new Map();\n\n constructor() {\n this._eventTarget = new EventTarget();\n }\n\n /**\n * Dispatches an event.\n *\n * @template E - The event type.\n * @param {E} event - The event to dispatch.\n * @param {EWalletObserverEventValues[E]} [data] - The data to pass with the event.\n */\n dispatch = <E extends keyof EWalletObserverEventValues>(\n event: E,\n data?: EWalletObserverEventValues[E]\n ) => {\n this._eventTarget.dispatchEvent(\n new CustomEvent(event as string, { detail: data })\n );\n };\n\n /**\n * Adds an event listener.\n *\n * @template E - The event type.\n * @param {E} event - The event to listen for.\n * @param {TWalletObserverEventFunction<E>} callback - The callback function to execute when the event is triggered.\n * @returns {void}\n */\n addEventListener = <E extends keyof EWalletObserverEventValues>(\n event: E,\n callback: TWalletObserverEventFunction<E>\n ): void => {\n const key = getEventKey(event, callback);\n\n // Ensure no duplicate handlers.\n if (this._handlers.has(key)) {\n const func = this._handlers.get(key);\n if (func) {\n return;\n }\n }\n\n const handler = (e: Event) => {\n callback((e as CustomEvent)?.detail);\n };\n\n this._handlers.set(key, handler);\n this._eventTarget.addEventListener(event as string, handler);\n };\n\n /**\n * Removes an event listener.\n *\n * @template E - The event type.\n * @param {E} event - The event to remove the listener from.\n * @param {TWalletObserverEventFunction<E>} callback - The callback function to remove.\n * @param {boolean | EventListenerOptions} [options] - Additional options for removing the listener.\n */\n removeEventListener = <E extends keyof EWalletObserverEventValues>(\n event: E,\n callback: TWalletObserverEventFunction<E>,\n options?: boolean | EventListenerOptions\n ) => {\n const key = getEventKey(event, callback);\n const func = this._handlers.get(key);\n\n if (func) {\n this._handlers.delete(key);\n this._eventTarget.removeEventListener(\n event as string,\n func as unknown as EventListenerOrEventListenerObject,\n options\n );\n }\n };\n\n /**\n * Queries the currently registered events. This is useful\n * if you want to expose these and remove any.\n *\n * @returns {Map<string, Function>} - A map of registered event handlers.\n */\n eventList(): Map<string, Function> {\n return this._handlers;\n }\n}\n"],"mappings":";;;AAIA,SAASA,WAAW,QAAQ,qBAAqB;;AAEjD;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,CAAC;EAI/BC,WAAWA,CAAA,EAAG;IAAAC,eAAA;IAAAA,eAAA,oBAF6B,IAAIC,GAAG,CAAC,CAAC;IAMpD;AACF;AACA;AACA;AACA;AACA;AACA;IANED,eAAA,mBAOW,CACTE,KAAQ,EACRC,IAAoC,KACjC;MACH,IAAI,CAACC,YAAY,CAACC,aAAa,CAC7B,IAAIC,WAAW,CAACJ,KAAK,EAAY;QAAEK,MAAM,EAAEJ;MAAK,CAAC,CACnD,CAAC;IACH,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPEH,eAAA,2BAQmB,CACjBE,KAAQ,EACRM,QAAyC,KAChC;MACT,MAAMC,GAAG,GAAGZ,WAAW,CAACK,KAAK,EAAEM,QAAQ,CAAC;;MAExC;MACA,IAAI,IAAI,CAACE,SAAS,CAACC,GAAG,CAACF,GAAG,CAAC,EAAE;QAC3B,MAAMG,IAAI,GAAG,IAAI,CAACF,SAAS,CAACG,GAAG,CAACJ,GAAG,CAAC;QACpC,IAAIG,IAAI,EAAE;UACR;QACF;MACF;MAEA,MAAME,OAAO,GAAIC,CAAQ,IAAK;QAC5BP,QAAQ,CAAEO,CAAC,EAAkBR,MAAM,CAAC;MACtC,CAAC;MAED,IAAI,CAACG,SAAS,CAACM,GAAG,CAACP,GAAG,EAAEK,OAAO,CAAC;MAChC,IAAI,CAACV,YAAY,CAACa,gBAAgB,CAACf,KAAK,EAAYY,OAAO,CAAC;IAC9D,CAAC;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPEd,eAAA,8BAQsB,CACpBE,KAAQ,EACRM,QAAyC,EACzCU,OAAwC,KACrC;MACH,MAAMT,GAAG,GAAGZ,WAAW,CAACK,KAAK,EAAEM,QAAQ,CAAC;MACxC,MAAMI,IAAI,GAAG,IAAI,CAACF,SAAS,CAACG,GAAG,CAACJ,GAAG,CAAC;MAEpC,IAAIG,IAAI,EAAE;QACR,IAAI,CAACF,SAAS,CAACS,MAAM,CAACV,GAAG,CAAC;QAC1B,IAAI,CAACL,YAAY,CAACgB,mBAAmB,CACnClB,KAAK,EACLU,IAAI,EACJM,OACF,CAAC;MACH;IACF,CAAC;IAzEC,IAAI,CAACd,YAAY,GAAG,IAAIiB,WAAW,CAAC,CAAC;EACvC;EA0EA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAA,EAA0B;IACjC,OAAO,IAAI,CAACZ,SAAS;EACvB;AACF","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Types.
3
+ */
4
+ export * as EventTypes from "./@types/events.js";
5
+ export * as ObserverTypes from "./@types/observer.js";
6
+
7
+ /**
8
+ * Core Components.
9
+ */
10
+ export { WalletBalanceMap } from "./classes/WalletBalanceMap.class.js";
11
+ export { WalletObserver } from "./classes/WalletObserver.class.js";
12
+
13
+ /**
14
+ * React Components.
15
+ */
16
+ export * from "./react-components/contexts/observer/types.js";
17
+ export { useAvailableExtensions } from "./react-components/hooks/useAvailableExtensions.js";
18
+ export { useWalletObserver } from "./react-components/hooks/useWalletObserver.js";
19
+ export * from "./react-components/RenderWallet.js";
20
+ export * from "./react-components/RenderWalletHandles.js";
21
+ export * from "./react-components/RenderWalletPeerConnect.js";
22
+ export * from "./react-components/RenderWalletState.js";
23
+ export { default as WalletObserverProvider } from "./react-components/WalletObserverProvider/index.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["EventTypes","ObserverTypes","WalletBalanceMap","WalletObserver","useAvailableExtensions","useWalletObserver","default","WalletObserverProvider"],"sources":["../../src/index.ts"],"sourcesContent":["/**\n * Types.\n */\nexport * as EventTypes from \"./@types/events.js\";\nexport * as ObserverTypes from \"./@types/observer.js\";\n\n/**\n * Core Components.\n */\nexport { WalletBalanceMap } from \"./classes/WalletBalanceMap.class.js\";\nexport { WalletObserver } from \"./classes/WalletObserver.class.js\";\n\n/**\n * React Components.\n */\nexport * from \"./react-components/contexts/observer/types.js\";\nexport { useAvailableExtensions } from \"./react-components/hooks/useAvailableExtensions.js\";\nexport { useWalletObserver } from \"./react-components/hooks/useWalletObserver.js\";\nexport * from \"./react-components/RenderWallet.js\";\nexport * from \"./react-components/RenderWalletHandles.js\";\nexport * from \"./react-components/RenderWalletPeerConnect.js\";\nexport * from \"./react-components/RenderWalletState.js\";\nexport { default as WalletObserverProvider } from \"./react-components/WalletObserverProvider/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,UAAU,MAAM,oBAAoB;AAChD,OAAO,KAAKC,aAAa,MAAM,sBAAsB;;AAErD;AACA;AACA;AACA,SAASC,gBAAgB,QAAQ,qCAAqC;AACtE,SAASC,cAAc,QAAQ,mCAAmC;;AAElE;AACA;AACA;AACA,cAAc,+CAA+C;AAC7D,SAASC,sBAAsB,QAAQ,oDAAoD;AAC3F,SAASC,iBAAiB,QAAQ,+CAA+C;AACjF,cAAc,oCAAoC;AAClD,cAAc,2CAA2C;AACzD,cAAc,+CAA+C;AAC7D,cAAc,yCAAyC;AACvD,SAASC,OAAO,IAAIC,sBAAsB,QAAQ,oDAAoD","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ import { useWalletObserver } from "./hooks/useWalletObserver.js";
2
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * This component is responsible for rendering just the wallet state
5
+ * that is returned from syncWallet. It is the basics. Other components
6
+ * compose on this and include state for Handles, PeerConnect (CIP-45),
7
+ * and syncing state (RenderWalletState).
8
+ */
9
+ export const RenderWallet = ({
10
+ render
11
+ }) => {
12
+ const state = useWalletObserver();
13
+ return /*#__PURE__*/_jsx(_Fragment, {
14
+ children: render(state)
15
+ });
16
+ };
17
+ //# sourceMappingURL=RenderWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderWallet.js","names":["useWalletObserver","Fragment","_Fragment","jsx","_jsx","RenderWallet","render","state","children"],"sources":["../../../src/react-components/RenderWallet.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactNode } from \"react\";\n\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\n\nexport type TRenderWalletFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>>;\n\nexport type TRenderWalletFunction = (\n state: TRenderWalletFunctionState<any>\n) => JSX.Element | ReactNode;\n\nexport interface IRenderWalletProps {\n render: TRenderWalletFunction;\n}\n\n/**\n * This component is responsible for rendering just the wallet state\n * that is returned from syncWallet. It is the basics. Other components\n * compose on this and include state for Handles, PeerConnect (CIP-45),\n * and syncing state (RenderWalletState).\n */\nexport const RenderWallet: FC<IRenderWalletProps> = ({ render }) => {\n const state = useWalletObserver();\n\n return <>{render(state)}</>;\n};\n"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,8BAA8B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAcjE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAoC,GAAGA,CAAC;EAAEC;AAAO,CAAC,KAAK;EAClE,MAAMC,KAAK,GAAGP,iBAAiB,CAAC,CAAC;EAEjC,oBAAOI,IAAA,CAAAF,SAAA;IAAAM,QAAA,EAAGF,MAAM,CAACC,KAAK;EAAC,CAAG,CAAC;AAC7B,CAAC","ignoreList":[]}
@@ -0,0 +1,80 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import { useWalletObserver } from "./hooks/useWalletObserver.js";
3
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
4
+ /**
5
+ * This component is the same as RenderWallet, but supports
6
+ * fetching and updating wallet Handles with their extra
7
+ * metadata.
8
+ */
9
+ export const RenderWalletHandles = ({
10
+ render
11
+ }) => {
12
+ const state = useWalletObserver();
13
+ const [loadingHandles, setLoadingHandles] = useState(true);
14
+ const [handles, setHandles] = useState(new Map());
15
+ const syncHandles = useCallback(async () => {
16
+ const handles = state.balance.getHandles();
17
+ if (handles.size === 0) {
18
+ return handles;
19
+ }
20
+ const {
21
+ default: HandleClient,
22
+ HandleClientContext,
23
+ KoraLabsProvider
24
+ } = await import("@koralabs/adahandle-sdk");
25
+ const context = state.network === 1 ? HandleClientContext.MAINNET : HandleClientContext.PREVIEW;
26
+
27
+ // @ts-ignore Type isn't exported from default.
28
+ const sdk = new HandleClient({
29
+ context,
30
+ provider: new KoraLabsProvider(context)
31
+ });
32
+
33
+ // Restore once SDK updated
34
+ const walletHandles = [...handles.entries()];
35
+ const walletHandleDataArray = await sdk.provider().getAllDataBatch(walletHandles.map(([key]) => ({
36
+ value: key.slice(56)
37
+ })));
38
+ walletHandles.forEach(([key, asset]) => {
39
+ const matchingData = walletHandleDataArray.find(({
40
+ hex
41
+ }) => hex === key.slice(56));
42
+ handles.set(key, asset.withMetadata({
43
+ ...matchingData,
44
+ ...asset.metadata,
45
+ decimals: 0
46
+ }).withAmount(1n));
47
+ });
48
+ return handles;
49
+ }, [state.balance]);
50
+ useEffect(() => {
51
+ setLoadingHandles(true);
52
+ syncHandles().then(newHandles => {
53
+ setHandles(prevHandles => {
54
+ let handleMetadataChanged = false;
55
+ if (newHandles.size !== prevHandles?.size) {
56
+ handleMetadataChanged = true;
57
+ } else {
58
+ for (const [key, val] of newHandles) {
59
+ if (!prevHandles.has(key) || prevHandles.get(key)?.amount !== val?.amount) {
60
+ handleMetadataChanged = true;
61
+ }
62
+ }
63
+ }
64
+ if (!handleMetadataChanged) {
65
+ return prevHandles;
66
+ }
67
+ return newHandles;
68
+ });
69
+ setLoadingHandles(false);
70
+ });
71
+ }, [syncHandles, setLoadingHandles, setHandles]);
72
+ return /*#__PURE__*/_jsx(_Fragment, {
73
+ children: render({
74
+ ...state,
75
+ handles,
76
+ loadingHandles
77
+ })
78
+ });
79
+ };
80
+ //# sourceMappingURL=RenderWalletHandles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderWalletHandles.js","names":["useCallback","useEffect","useState","useWalletObserver","Fragment","_Fragment","jsx","_jsx","RenderWalletHandles","render","state","loadingHandles","setLoadingHandles","handles","setHandles","Map","syncHandles","balance","getHandles","size","default","HandleClient","HandleClientContext","KoraLabsProvider","context","network","MAINNET","PREVIEW","sdk","provider","walletHandles","entries","walletHandleDataArray","getAllDataBatch","map","key","value","slice","forEach","asset","matchingData","find","hex","set","withMetadata","metadata","decimals","withAmount","then","newHandles","prevHandles","handleMetadataChanged","val","has","get","amount","children"],"sources":["../../../src/react-components/RenderWalletHandles.tsx"],"sourcesContent":["import type { IHandle } from \"@koralabs/adahandle-sdk\";\nimport { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactNode, useCallback, useEffect, useState } from \"react\";\n\nimport { TAssetAmountMap } from \"../@types/observer.js\";\nimport { THandleMetadata } from \"./contexts/observer/index.js\";\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\n\nexport type IWalletHandles<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = {\n handles: TAssetAmountMap<THandleMetadata<AssetMetadata>>;\n loadingHandles: boolean;\n};\n\nexport type TRenderWalletHandlesFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> & IWalletHandles;\n\nexport type TRenderWalletHandlesFunction = (\n state: TRenderWalletHandlesFunctionState\n) => JSX.Element | ReactNode;\n\nexport interface IRenderWalletHandlesProps {\n render: TRenderWalletHandlesFunction;\n}\n\n/**\n * This component is the same as RenderWallet, but supports\n * fetching and updating wallet Handles with their extra\n * metadata.\n */\nexport const RenderWalletHandles: FC<IRenderWalletHandlesProps> = ({\n render,\n}) => {\n const state = useWalletObserver<THandleMetadata>();\n const [loadingHandles, setLoadingHandles] = useState(true);\n const [handles, setHandles] = useState<TAssetAmountMap<THandleMetadata>>(\n new Map()\n );\n\n const syncHandles = useCallback<\n () => Promise<TAssetAmountMap<THandleMetadata>>\n >(async () => {\n const handles: TAssetAmountMap<THandleMetadata> =\n state.balance.getHandles();\n\n if (handles.size === 0) {\n return handles;\n }\n\n const {\n default: HandleClient,\n HandleClientContext,\n KoraLabsProvider,\n } = await import(\"@koralabs/adahandle-sdk\");\n const context =\n state.network === 1\n ? HandleClientContext.MAINNET\n : HandleClientContext.PREVIEW;\n\n // @ts-ignore Type isn't exported from default.\n const sdk = new HandleClient({\n context,\n provider: new KoraLabsProvider(context),\n });\n\n // Restore once SDK updated\n const walletHandles = [...handles.entries()];\n const walletHandleDataArray: IHandle[] = await sdk\n .provider()\n .getAllDataBatch(\n walletHandles.map(([key]) => ({ value: key.slice(56) }))\n );\n\n walletHandles.forEach(([key, asset]) => {\n const matchingData = walletHandleDataArray.find(\n ({ hex }) => hex === key.slice(56)\n ) as IHandle;\n\n handles.set(\n key,\n asset\n .withMetadata({\n ...matchingData,\n ...asset.metadata,\n decimals: 0,\n })\n .withAmount(1n)\n );\n });\n\n return handles;\n }, [state.balance]);\n\n useEffect(() => {\n setLoadingHandles(true);\n syncHandles().then((newHandles) => {\n setHandles((prevHandles) => {\n let handleMetadataChanged = false;\n\n if (newHandles.size !== prevHandles?.size) {\n handleMetadataChanged = true;\n } else {\n for (const [key, val] of newHandles) {\n if (\n !prevHandles.has(key) ||\n prevHandles.get(key)?.amount !== val?.amount\n ) {\n handleMetadataChanged = true;\n }\n }\n }\n\n if (!handleMetadataChanged) {\n return prevHandles;\n }\n\n return newHandles;\n });\n\n setLoadingHandles(false);\n });\n }, [syncHandles, setLoadingHandles, setHandles]);\n\n return (\n <>\n {render({\n ...state,\n handles,\n loadingHandles,\n })}\n </>\n );\n};\n"],"mappings":"AAEA,SAAwBA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAIvE,SAASC,iBAAiB,QAAQ,8BAA8B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAqBjE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAkD,GAAGA,CAAC;EACjEC;AACF,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAGP,iBAAiB,CAAkB,CAAC;EAClD,MAAM,CAACQ,cAAc,EAAEC,iBAAiB,CAAC,GAAGV,QAAQ,CAAC,IAAI,CAAC;EAC1D,MAAM,CAACW,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CACpC,IAAIa,GAAG,CAAC,CACV,CAAC;EAED,MAAMC,WAAW,GAAGhB,WAAW,CAE7B,YAAY;IACZ,MAAMa,OAAyC,GAC7CH,KAAK,CAACO,OAAO,CAACC,UAAU,CAAC,CAAC;IAE5B,IAAIL,OAAO,CAACM,IAAI,KAAK,CAAC,EAAE;MACtB,OAAON,OAAO;IAChB;IAEA,MAAM;MACJO,OAAO,EAAEC,YAAY;MACrBC,mBAAmB;MACnBC;IACF,CAAC,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC;IAC3C,MAAMC,OAAO,GACXd,KAAK,CAACe,OAAO,KAAK,CAAC,GACfH,mBAAmB,CAACI,OAAO,GAC3BJ,mBAAmB,CAACK,OAAO;;IAEjC;IACA,MAAMC,GAAG,GAAG,IAAIP,YAAY,CAAC;MAC3BG,OAAO;MACPK,QAAQ,EAAE,IAAIN,gBAAgB,CAACC,OAAO;IACxC,CAAC,CAAC;;IAEF;IACA,MAAMM,aAAa,GAAG,CAAC,GAAGjB,OAAO,CAACkB,OAAO,CAAC,CAAC,CAAC;IAC5C,MAAMC,qBAAgC,GAAG,MAAMJ,GAAG,CAC/CC,QAAQ,CAAC,CAAC,CACVI,eAAe,CACdH,aAAa,CAACI,GAAG,CAAC,CAAC,CAACC,GAAG,CAAC,MAAM;MAAEC,KAAK,EAAED,GAAG,CAACE,KAAK,CAAC,EAAE;IAAE,CAAC,CAAC,CACzD,CAAC;IAEHP,aAAa,CAACQ,OAAO,CAAC,CAAC,CAACH,GAAG,EAAEI,KAAK,CAAC,KAAK;MACtC,MAAMC,YAAY,GAAGR,qBAAqB,CAACS,IAAI,CAC7C,CAAC;QAAEC;MAAI,CAAC,KAAKA,GAAG,KAAKP,GAAG,CAACE,KAAK,CAAC,EAAE,CACnC,CAAY;MAEZxB,OAAO,CAAC8B,GAAG,CACTR,GAAG,EACHI,KAAK,CACFK,YAAY,CAAC;QACZ,GAAGJ,YAAY;QACf,GAAGD,KAAK,CAACM,QAAQ;QACjBC,QAAQ,EAAE;MACZ,CAAC,CAAC,CACDC,UAAU,CAAC,EAAE,CAClB,CAAC;IACH,CAAC,CAAC;IAEF,OAAOlC,OAAO;EAChB,CAAC,EAAE,CAACH,KAAK,CAACO,OAAO,CAAC,CAAC;EAEnBhB,SAAS,CAAC,MAAM;IACdW,iBAAiB,CAAC,IAAI,CAAC;IACvBI,WAAW,CAAC,CAAC,CAACgC,IAAI,CAAEC,UAAU,IAAK;MACjCnC,UAAU,CAAEoC,WAAW,IAAK;QAC1B,IAAIC,qBAAqB,GAAG,KAAK;QAEjC,IAAIF,UAAU,CAAC9B,IAAI,KAAK+B,WAAW,EAAE/B,IAAI,EAAE;UACzCgC,qBAAqB,GAAG,IAAI;QAC9B,CAAC,MAAM;UACL,KAAK,MAAM,CAAChB,GAAG,EAAEiB,GAAG,CAAC,IAAIH,UAAU,EAAE;YACnC,IACE,CAACC,WAAW,CAACG,GAAG,CAAClB,GAAG,CAAC,IACrBe,WAAW,CAACI,GAAG,CAACnB,GAAG,CAAC,EAAEoB,MAAM,KAAKH,GAAG,EAAEG,MAAM,EAC5C;cACAJ,qBAAqB,GAAG,IAAI;YAC9B;UACF;QACF;QAEA,IAAI,CAACA,qBAAqB,EAAE;UAC1B,OAAOD,WAAW;QACpB;QAEA,OAAOD,UAAU;MACnB,CAAC,CAAC;MAEFrC,iBAAiB,CAAC,KAAK,CAAC;IAC1B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACI,WAAW,EAAEJ,iBAAiB,EAAEE,UAAU,CAAC,CAAC;EAEhD,oBACEP,IAAA,CAAAF,SAAA;IAAAmD,QAAA,EACG/C,MAAM,CAAC;MACN,GAAGC,KAAK;MACRG,OAAO;MACPF;IACF,CAAC;EAAC,CACF,CAAC;AAEP,CAAC","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ import { useEffect, useMemo, useRef, useState } from "react";
2
+ import { ErrorBoundary } from "react-error-boundary";
3
+ import { useWalletObserver } from "./hooks/useWalletObserver.js";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ /**
6
+ * This component is responsible for generating CIP-45 utilities
7
+ * and exposing them to the render function, including a QR Code
8
+ * element that can be placed in the consuming app.
9
+ */
10
+ export const RenderWalletPeerConnect = ({
11
+ render
12
+ }) => {
13
+ const state = useWalletObserver();
14
+ const [peerConnect, setPeerConnect] = useState();
15
+ const [error, setError] = useState();
16
+ const qrCode = useRef(null);
17
+ useEffect(() => {
18
+ if (!state.observer) {
19
+ return;
20
+ }
21
+ state.observer.getCip45Instance().then(res => setPeerConnect(res)).catch(e => setError(e.message));
22
+ }, [state.observer, state.ready, setPeerConnect, setError]);
23
+ useEffect(() => {
24
+ if (peerConnect && qrCode.current) {
25
+ peerConnect.instance.generateQRCode(qrCode.current);
26
+ }
27
+ }, [peerConnect, qrCode]);
28
+ const memoizedState = useMemo(() => ({
29
+ ...state,
30
+ peerConnect,
31
+ QRCodeElement: /*#__PURE__*/_jsx("div", {
32
+ ref: qrCode
33
+ })
34
+ }), [state, peerConnect]);
35
+ if (!memoizedState.peerConnect) {
36
+ return null;
37
+ }
38
+ return /*#__PURE__*/_jsx(ErrorBoundary, {
39
+ fallback: /*#__PURE__*/_jsx("p", {
40
+ children: error
41
+ }),
42
+ children: render(memoizedState)
43
+ });
44
+ };
45
+ //# sourceMappingURL=RenderWalletPeerConnect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderWalletPeerConnect.js","names":["useEffect","useMemo","useRef","useState","ErrorBoundary","useWalletObserver","jsx","_jsx","RenderWalletPeerConnect","render","state","peerConnect","setPeerConnect","error","setError","qrCode","observer","getCip45Instance","then","res","catch","e","message","ready","current","instance","generateQRCode","memoizedState","QRCodeElement","ref","fallback","children"],"sources":["../../../src/react-components/RenderWalletPeerConnect.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport {\n FC,\n MutableRefObject,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { TGetPeerConnectInstance } from \"../@types/observer.js\";\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\n\nexport type TRenderWalletPeerConnectFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> & {\n peerConnect?: ReturnType<TGetPeerConnectInstance>;\n QRCodeElement: ReactNode;\n};\n\nexport type TRenderWalletPeerConnectFunction = (\n state: TRenderWalletPeerConnectFunctionState\n) => ReactNode;\n\nexport interface IRenderWalletPeerConnectProps {\n render: TRenderWalletPeerConnectFunction;\n}\n\n/**\n * This component is responsible for generating CIP-45 utilities\n * and exposing them to the render function, including a QR Code\n * element that can be placed in the consuming app.\n */\nexport const RenderWalletPeerConnect: FC<IRenderWalletPeerConnectProps> = ({\n render,\n}) => {\n const state = useWalletObserver();\n const [peerConnect, setPeerConnect] =\n useState<ReturnType<TGetPeerConnectInstance>>();\n const [error, setError] = useState<string>();\n const qrCode = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!state.observer) {\n return;\n }\n\n state.observer\n .getCip45Instance()\n .then((res) => setPeerConnect(res))\n .catch((e) => setError((e as Error).message));\n }, [state.observer, state.ready, setPeerConnect, setError]);\n\n useEffect(() => {\n if (peerConnect && qrCode.current) {\n peerConnect.instance.generateQRCode(qrCode.current);\n }\n }, [peerConnect, qrCode]);\n\n const memoizedState = useMemo(\n () => ({\n ...state,\n peerConnect,\n QRCodeElement: <div ref={qrCode as MutableRefObject<HTMLDivElement>} />,\n }),\n [state, peerConnect]\n );\n\n if (!memoizedState.peerConnect) {\n return null;\n }\n\n return (\n <ErrorBoundary fallback={<p>{error}</p>}>\n {render(memoizedState)}\n </ErrorBoundary>\n );\n};\n"],"mappings":"AACA,SAIEA,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,aAAa,QAAQ,sBAAsB;AAGpD,SAASC,iBAAiB,QAAQ,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBjE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAA0D,GAAGA,CAAC;EACzEC;AACF,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAGL,iBAAiB,CAAC,CAAC;EACjC,MAAM,CAACM,WAAW,EAAEC,cAAc,CAAC,GACjCT,QAAQ,CAAsC,CAAC;EACjD,MAAM,CAACU,KAAK,EAAEC,QAAQ,CAAC,GAAGX,QAAQ,CAAS,CAAC;EAC5C,MAAMY,MAAM,GAAGb,MAAM,CAAiB,IAAI,CAAC;EAE3CF,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,KAAK,CAACM,QAAQ,EAAE;MACnB;IACF;IAEAN,KAAK,CAACM,QAAQ,CACXC,gBAAgB,CAAC,CAAC,CAClBC,IAAI,CAAEC,GAAG,IAAKP,cAAc,CAACO,GAAG,CAAC,CAAC,CAClCC,KAAK,CAAEC,CAAC,IAAKP,QAAQ,CAAEO,CAAC,CAAWC,OAAO,CAAC,CAAC;EACjD,CAAC,EAAE,CAACZ,KAAK,CAACM,QAAQ,EAAEN,KAAK,CAACa,KAAK,EAAEX,cAAc,EAAEE,QAAQ,CAAC,CAAC;EAE3Dd,SAAS,CAAC,MAAM;IACd,IAAIW,WAAW,IAAII,MAAM,CAACS,OAAO,EAAE;MACjCb,WAAW,CAACc,QAAQ,CAACC,cAAc,CAACX,MAAM,CAACS,OAAO,CAAC;IACrD;EACF,CAAC,EAAE,CAACb,WAAW,EAAEI,MAAM,CAAC,CAAC;EAEzB,MAAMY,aAAa,GAAG1B,OAAO,CAC3B,OAAO;IACL,GAAGS,KAAK;IACRC,WAAW;IACXiB,aAAa,eAAErB,IAAA;MAAKsB,GAAG,EAAEd;IAA2C,CAAE;EACxE,CAAC,CAAC,EACF,CAACL,KAAK,EAAEC,WAAW,CACrB,CAAC;EAED,IAAI,CAACgB,aAAa,CAAChB,WAAW,EAAE;IAC9B,OAAO,IAAI;EACb;EAEA,oBACEJ,IAAA,CAACH,aAAa;IAAC0B,QAAQ,eAAEvB,IAAA;MAAAwB,QAAA,EAAIlB;IAAK,CAAI,CAAE;IAAAkB,QAAA,EACrCtB,MAAM,CAACkB,aAAa;EAAC,CACT,CAAC;AAEpB,CAAC","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ import { useEffect, useState } from "react";
2
+ import { EWalletObserverEvents } from "../@types/events.js";
3
+ import { useWalletObserver } from "./hooks/useWalletObserver.js";
4
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
5
+ /**
6
+ * This component is the same as RenderWallet, but will
7
+ * trigger a re-render every time the WalletObserver performs
8
+ * a sync or connection operation. Useful for displaying
9
+ * internal operation states of the wallet.
10
+ */
11
+ export const RenderWalletState = ({
12
+ render
13
+ }) => {
14
+ const state = useWalletObserver();
15
+ const [connecting, setConnecting] = useState(false);
16
+ const [syncing, setSyncing] = useState(false);
17
+ useEffect(() => {
18
+ if (!state.observer) {
19
+ return;
20
+ }
21
+ const setConnectingStart = () => {
22
+ setConnecting(true);
23
+ };
24
+ const setConnectingEnd = () => {
25
+ setConnecting(false);
26
+ };
27
+ const setSyncingStart = () => {
28
+ setSyncing(true);
29
+ };
30
+ const setSyncingEnd = () => {
31
+ setSyncing(false);
32
+ };
33
+ state.observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_START, setConnectingStart);
34
+ state.observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_END, setConnectingEnd);
35
+ state.observer.addEventListener(EWalletObserverEvents.SYNCING_WALLET_START, setSyncingStart);
36
+ state.observer.addEventListener(EWalletObserverEvents.SYNCING_WALLET_END, setSyncingEnd);
37
+ return () => {
38
+ state.observer.removeEventListener(EWalletObserverEvents.CONNECT_WALLET_START, setConnectingStart);
39
+ state.observer.removeEventListener(EWalletObserverEvents.CONNECT_WALLET_END, setConnectingEnd);
40
+ state.observer.removeEventListener(EWalletObserverEvents.SYNCING_WALLET_START, setSyncingStart);
41
+ state.observer.removeEventListener(EWalletObserverEvents.SYNCING_WALLET_END, setSyncingEnd);
42
+ };
43
+ }, [state.observer, setConnecting, setSyncing]);
44
+ return /*#__PURE__*/_jsx(_Fragment, {
45
+ children: render({
46
+ ...state,
47
+ connectingWallet: connecting,
48
+ syncingWallet: syncing
49
+ })
50
+ });
51
+ };
52
+ //# sourceMappingURL=RenderWalletState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderWalletState.js","names":["useEffect","useState","EWalletObserverEvents","useWalletObserver","Fragment","_Fragment","jsx","_jsx","RenderWalletState","render","state","connecting","setConnecting","syncing","setSyncing","observer","setConnectingStart","setConnectingEnd","setSyncingStart","setSyncingEnd","addEventListener","CONNECT_WALLET_START","CONNECT_WALLET_END","SYNCING_WALLET_START","SYNCING_WALLET_END","removeEventListener","children","connectingWallet","syncingWallet"],"sources":["../../../src/react-components/RenderWalletState.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactNode, useEffect, useState } from \"react\";\n\nimport { EWalletObserverEvents } from \"../@types/events.js\";\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\n\nexport type TRenderWalletStateFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> & {\n connectingWallet: boolean;\n syncingWallet: boolean;\n};\n\nexport type TRenderWalletStateFunction = (\n state: TRenderWalletStateFunctionState\n) => JSX.Element | ReactNode;\n\nexport interface IRenderWalletStateProps {\n render: TRenderWalletStateFunction;\n}\n\n/**\n * This component is the same as RenderWallet, but will\n * trigger a re-render every time the WalletObserver performs\n * a sync or connection operation. Useful for displaying\n * internal operation states of the wallet.\n */\nexport const RenderWalletState: FC<IRenderWalletStateProps> = ({ render }) => {\n const state = useWalletObserver();\n const [connecting, setConnecting] = useState(false);\n const [syncing, setSyncing] = useState(false);\n\n useEffect(() => {\n if (!state.observer) {\n return;\n }\n\n const setConnectingStart = () => {\n setConnecting(true);\n };\n const setConnectingEnd = () => {\n setConnecting(false);\n };\n const setSyncingStart = () => {\n setSyncing(true);\n };\n const setSyncingEnd = () => {\n setSyncing(false);\n };\n\n state.observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n state.observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n state.observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n state.observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n\n return () => {\n state.observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n };\n }, [state.observer, setConnecting, setSyncing]);\n\n return (\n <>\n {render({\n ...state,\n connectingWallet: connecting,\n syncingWallet: syncing,\n })}\n </>\n );\n};\n"],"mappings":"AACA,SAAwBA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE1D,SAASC,qBAAqB,QAAQ,qBAAqB;AAC3D,SAASC,iBAAiB,QAAQ,8BAA8B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAiBjE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAA8C,GAAGA,CAAC;EAAEC;AAAO,CAAC,KAAK;EAC5E,MAAMC,KAAK,GAAGP,iBAAiB,CAAC,CAAC;EACjC,MAAM,CAACQ,UAAU,EAAEC,aAAa,CAAC,GAAGX,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAACY,OAAO,EAAEC,UAAU,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAE7CD,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,KAAK,CAACK,QAAQ,EAAE;MACnB;IACF;IAEA,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;MAC/BJ,aAAa,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,MAAMK,gBAAgB,GAAGA,CAAA,KAAM;MAC7BL,aAAa,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAMM,eAAe,GAAGA,CAAA,KAAM;MAC5BJ,UAAU,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,MAAMK,aAAa,GAAGA,CAAA,KAAM;MAC1BL,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC;IAEDJ,KAAK,CAACK,QAAQ,CAACK,gBAAgB,CAC7BlB,qBAAqB,CAACmB,oBAAoB,EAC1CL,kBACF,CAAC;IACDN,KAAK,CAACK,QAAQ,CAACK,gBAAgB,CAC7BlB,qBAAqB,CAACoB,kBAAkB,EACxCL,gBACF,CAAC;IACDP,KAAK,CAACK,QAAQ,CAACK,gBAAgB,CAC7BlB,qBAAqB,CAACqB,oBAAoB,EAC1CL,eACF,CAAC;IACDR,KAAK,CAACK,QAAQ,CAACK,gBAAgB,CAC7BlB,qBAAqB,CAACsB,kBAAkB,EACxCL,aACF,CAAC;IAED,OAAO,MAAM;MACXT,KAAK,CAACK,QAAQ,CAACU,mBAAmB,CAChCvB,qBAAqB,CAACmB,oBAAoB,EAC1CL,kBACF,CAAC;MACDN,KAAK,CAACK,QAAQ,CAACU,mBAAmB,CAChCvB,qBAAqB,CAACoB,kBAAkB,EACxCL,gBACF,CAAC;MACDP,KAAK,CAACK,QAAQ,CAACU,mBAAmB,CAChCvB,qBAAqB,CAACqB,oBAAoB,EAC1CL,eACF,CAAC;MACDR,KAAK,CAACK,QAAQ,CAACU,mBAAmB,CAChCvB,qBAAqB,CAACsB,kBAAkB,EACxCL,aACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACT,KAAK,CAACK,QAAQ,EAAEH,aAAa,EAAEE,UAAU,CAAC,CAAC;EAE/C,oBACEP,IAAA,CAAAF,SAAA;IAAAqB,QAAA,EACGjB,MAAM,CAAC;MACN,GAAGC,KAAK;MACRiB,gBAAgB,EAAEhB,UAAU;MAC5BiB,aAAa,EAAEf;IACjB,CAAC;EAAC,CACF,CAAC;AAEP,CAAC","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ import { useMemo } from "react";
2
+ import { WalletObserverContext } from "../contexts/observer/index.js";
3
+ import { useProviderEventListeners } from "./hooks/effects/useProviderEventListeners.js";
4
+ import { useProviderRefreshInterval } from "./hooks/effects/useProviderRefreshInterval.js";
5
+ import { useProviderWalletObserverRef } from "./hooks/useProviderWalletObserverRef.js";
6
+ import { useWalletObserverState } from "./hooks/useSyncWalletFunction.js";
7
+
8
+ /**
9
+ * The main context provider component. This handles setting up all the initial
10
+ * state, handlers, and side effects with a new WalletObserver class.
11
+ *
12
+ * @param {IWalletObserverProviderProps} [options]
13
+ * @returns {FC<PropsWithChildren<IWalletObserverProviderProps>>}
14
+ */
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ const WalletObserverProvider = ({
17
+ children,
18
+ options
19
+ }) => {
20
+ const observerRef = useProviderWalletObserverRef(options?.observerOptions);
21
+ const {
22
+ syncWallet,
23
+ ...reactiveState
24
+ } = useWalletObserverState(observerRef.current);
25
+ useProviderEventListeners(observerRef.current, syncWallet);
26
+ useProviderRefreshInterval(observerRef.current, syncWallet, options?.refreshInterval);
27
+
28
+ // Memoize the context value
29
+ const contextValue = useMemo(() => ({
30
+ observerRef: observerRef,
31
+ refreshInterval: options?.refreshInterval || 30000,
32
+ state: {
33
+ ...reactiveState,
34
+ mainAddress: reactiveState.usedAddresses?.[0],
35
+ observer: observerRef.current,
36
+ syncWallet
37
+ }
38
+ }), [options, syncWallet, reactiveState]);
39
+ return /*#__PURE__*/_jsx(WalletObserverContext.Provider, {
40
+ value: contextValue,
41
+ children: children
42
+ });
43
+ };
44
+ export default WalletObserverProvider;
45
+ //# sourceMappingURL=WalletObserverProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletObserverProvider.js","names":["useMemo","WalletObserverContext","useProviderEventListeners","useProviderRefreshInterval","useProviderWalletObserverRef","useWalletObserverState","jsx","_jsx","WalletObserverProvider","children","options","observerRef","observerOptions","syncWallet","reactiveState","current","refreshInterval","contextValue","state","mainAddress","usedAddresses","observer","Provider","value"],"sources":["../../../../src/react-components/WalletObserverProvider/WalletObserverProvider.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useMemo } from \"react\";\n\nimport {\n IWalletObserverProviderProps,\n IWalletObserverState,\n WalletObserverContext,\n} from \"../contexts/observer/index.js\";\nimport { useProviderEventListeners } from \"./hooks/effects/useProviderEventListeners.js\";\nimport { useProviderRefreshInterval } from \"./hooks/effects/useProviderRefreshInterval.js\";\nimport { useProviderWalletObserverRef } from \"./hooks/useProviderWalletObserverRef.js\";\nimport { useWalletObserverState } from \"./hooks/useSyncWalletFunction.js\";\n\n/**\n * The main context provider component. This handles setting up all the initial\n * state, handlers, and side effects with a new WalletObserver class.\n *\n * @param {IWalletObserverProviderProps} [options]\n * @returns {FC<PropsWithChildren<IWalletObserverProviderProps>>}\n */\nconst WalletObserverProvider: FC<\n PropsWithChildren<IWalletObserverProviderProps>\n> = ({ children, options }) => {\n const observerRef = useProviderWalletObserverRef(options?.observerOptions);\n const { syncWallet, ...reactiveState } = useWalletObserverState(\n observerRef.current\n );\n\n useProviderEventListeners(observerRef.current, syncWallet);\n useProviderRefreshInterval(\n observerRef.current,\n syncWallet,\n options?.refreshInterval\n );\n\n // Memoize the context value\n const contextValue: IWalletObserverState = useMemo(\n () => ({\n observerRef: observerRef,\n refreshInterval: options?.refreshInterval || 30000,\n state: {\n ...reactiveState,\n mainAddress: reactiveState.usedAddresses?.[0],\n observer: observerRef.current,\n syncWallet,\n },\n }),\n [options, syncWallet, reactiveState]\n );\n\n return (\n <WalletObserverContext.Provider value={contextValue}>\n {children}\n </WalletObserverContext.Provider>\n );\n};\n\nexport default WalletObserverProvider;\n"],"mappings":"AAAA,SAAgCA,OAAO,QAAQ,OAAO;AAEtD,SAGEC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,yBAAyB,QAAQ,8CAA8C;AACxF,SAASC,0BAA0B,QAAQ,+CAA+C;AAC1F,SAASC,4BAA4B,QAAQ,yCAAyC;AACtF,SAASC,sBAAsB,QAAQ,kCAAkC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAC,GAAA,IAAAC,IAAA;AAOA,MAAMC,sBAEL,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAQ,CAAC,KAAK;EAC7B,MAAMC,WAAW,GAAGP,4BAA4B,CAACM,OAAO,EAAEE,eAAe,CAAC;EAC1E,MAAM;IAAEC,UAAU;IAAE,GAAGC;EAAc,CAAC,GAAGT,sBAAsB,CAC7DM,WAAW,CAACI,OACd,CAAC;EAEDb,yBAAyB,CAACS,WAAW,CAACI,OAAO,EAAEF,UAAU,CAAC;EAC1DV,0BAA0B,CACxBQ,WAAW,CAACI,OAAO,EACnBF,UAAU,EACVH,OAAO,EAAEM,eACX,CAAC;;EAED;EACA,MAAMC,YAAkC,GAAGjB,OAAO,CAChD,OAAO;IACLW,WAAW,EAAEA,WAAW;IACxBK,eAAe,EAAEN,OAAO,EAAEM,eAAe,IAAI,KAAK;IAClDE,KAAK,EAAE;MACL,GAAGJ,aAAa;MAChBK,WAAW,EAAEL,aAAa,CAACM,aAAa,GAAG,CAAC,CAAC;MAC7CC,QAAQ,EAAEV,WAAW,CAACI,OAAO;MAC7BF;IACF;EACF,CAAC,CAAC,EACF,CAACH,OAAO,EAAEG,UAAU,EAAEC,aAAa,CACrC,CAAC;EAED,oBACEP,IAAA,CAACN,qBAAqB,CAACqB,QAAQ;IAACC,KAAK,EAAEN,YAAa;IAAAR,QAAA,EACjDA;EAAQ,CACqB,CAAC;AAErC,CAAC;AAED,eAAeD,sBAAsB","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ import { useEffect } from "react";
2
+ import { EWalletObserverEvents } from "../../../../@types/events.js";
3
+ /**
4
+ * Internal use only. This is run in every WalletObserverProvider
5
+ * component on initial mount. It adds all relevant event listeners
6
+ * to the WalletObserver class.
7
+ *
8
+ * @param observer
9
+ * @param syncWallet
10
+ * @param hooks
11
+ */
12
+ export const useProviderEventListeners = (observer, syncWallet, hooks) => {
13
+ /**
14
+ * Add user-defined hooks into the event stream.
15
+ */
16
+ useEffect(() => {
17
+ if (!hooks) {
18
+ return;
19
+ }
20
+ const setConnectingStart = () => {
21
+ hooks?.onConnectWalletStart?.();
22
+ };
23
+ const setConnectingEnd = () => {
24
+ hooks?.onConnectWalletEnd?.();
25
+ };
26
+ const setSyncingStart = () => {
27
+ hooks?.onSyncWalletStart?.();
28
+ };
29
+ const setSyncingEnd = () => {
30
+ hooks?.onSyncWalletEnd?.();
31
+ };
32
+ observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_START, setConnectingStart);
33
+ observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_END, setConnectingEnd);
34
+ observer.addEventListener(EWalletObserverEvents.SYNCING_WALLET_START, setSyncingStart);
35
+ observer.addEventListener(EWalletObserverEvents.SYNCING_WALLET_END, setSyncingEnd);
36
+ return () => {
37
+ observer.removeEventListener(EWalletObserverEvents.CONNECT_WALLET_START, setConnectingStart);
38
+ observer.removeEventListener(EWalletObserverEvents.CONNECT_WALLET_END, setConnectingEnd);
39
+ observer.removeEventListener(EWalletObserverEvents.SYNCING_WALLET_START, setSyncingStart);
40
+ observer.removeEventListener(EWalletObserverEvents.SYNCING_WALLET_END, setSyncingEnd);
41
+ };
42
+ }, [observer, hooks]);
43
+
44
+ /**
45
+ * Ensure the wallet syncs on connect and disconnect.
46
+ */
47
+ useEffect(() => {
48
+ window.addEventListener("focus", () => {
49
+ syncWallet;
50
+ });
51
+ observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_END, syncWallet);
52
+ observer.addEventListener(EWalletObserverEvents.DISCONNECT, syncWallet);
53
+ return () => {
54
+ window.addEventListener("focus", syncWallet);
55
+ observer.removeEventListener(EWalletObserverEvents.CONNECT_WALLET_END, syncWallet);
56
+ observer.removeEventListener(EWalletObserverEvents.DISCONNECT, syncWallet);
57
+ };
58
+ }, [observer, syncWallet]);
59
+ };
60
+ //# sourceMappingURL=useProviderEventListeners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderEventListeners.js","names":["useEffect","EWalletObserverEvents","useProviderEventListeners","observer","syncWallet","hooks","setConnectingStart","onConnectWalletStart","setConnectingEnd","onConnectWalletEnd","setSyncingStart","onSyncWalletStart","setSyncingEnd","onSyncWalletEnd","addEventListener","CONNECT_WALLET_START","CONNECT_WALLET_END","SYNCING_WALLET_START","SYNCING_WALLET_END","removeEventListener","window","DISCONNECT"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { EWalletObserverEvents } from \"../../../../@types/events.js\";\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\nimport { TWalletProviderHooks } from \"../../../contexts/observer/index.js\";\n\n/**\n * Internal use only. This is run in every WalletObserverProvider\n * component on initial mount. It adds all relevant event listeners\n * to the WalletObserver class.\n *\n * @param observer\n * @param syncWallet\n * @param hooks\n */\nexport const useProviderEventListeners = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n hooks?: TWalletProviderHooks\n) => {\n /**\n * Add user-defined hooks into the event stream.\n */\n useEffect(() => {\n if (!hooks) {\n return;\n }\n\n const setConnectingStart = () => {\n hooks?.onConnectWalletStart?.();\n };\n const setConnectingEnd = () => {\n hooks?.onConnectWalletEnd?.();\n };\n const setSyncingStart = () => {\n hooks?.onSyncWalletStart?.();\n };\n const setSyncingEnd = () => {\n hooks?.onSyncWalletEnd?.();\n };\n\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n\n return () => {\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n };\n }, [observer, hooks]);\n\n /**\n * Ensure the wallet syncs on connect and disconnect.\n */\n useEffect(() => {\n window.addEventListener(\"focus\", () => {\n syncWallet;\n });\n\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n syncWallet\n );\n\n observer.addEventListener(EWalletObserverEvents.DISCONNECT, syncWallet);\n\n return () => {\n window.addEventListener(\"focus\", syncWallet);\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n syncWallet\n );\n\n observer.removeEventListener(\n EWalletObserverEvents.DISCONNECT,\n syncWallet\n );\n };\n }, [observer, syncWallet]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,qBAAqB,QAAQ,8BAA8B;AAIpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAGA,CACvCC,QAAwB,EACxBC,UAA+B,EAC/BC,KAA4B,KACzB;EACH;AACF;AACA;EACEL,SAAS,CAAC,MAAM;IACd,IAAI,CAACK,KAAK,EAAE;MACV;IACF;IAEA,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;MAC/BD,KAAK,EAAEE,oBAAoB,GAAG,CAAC;IACjC,CAAC;IACD,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;MAC7BH,KAAK,EAAEI,kBAAkB,GAAG,CAAC;IAC/B,CAAC;IACD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5BL,KAAK,EAAEM,iBAAiB,GAAG,CAAC;IAC9B,CAAC;IACD,MAAMC,aAAa,GAAGA,CAAA,KAAM;MAC1BP,KAAK,EAAEQ,eAAe,GAAG,CAAC;IAC5B,CAAC;IAEDV,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACc,oBAAoB,EAC1CT,kBACF,CAAC;IACDH,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACe,kBAAkB,EACxCR,gBACF,CAAC;IACDL,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACgB,oBAAoB,EAC1CP,eACF,CAAC;IACDP,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACiB,kBAAkB,EACxCN,aACF,CAAC;IAED,OAAO,MAAM;MACXT,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACc,oBAAoB,EAC1CT,kBACF,CAAC;MACDH,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACe,kBAAkB,EACxCR,gBACF,CAAC;MACDL,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACgB,oBAAoB,EAC1CP,eACF,CAAC;MACDP,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACiB,kBAAkB,EACxCN,aACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACT,QAAQ,EAAEE,KAAK,CAAC,CAAC;;EAErB;AACF;AACA;EACEL,SAAS,CAAC,MAAM;IACdoB,MAAM,CAACN,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACrCV,UAAU;IACZ,CAAC,CAAC;IAEFD,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACe,kBAAkB,EACxCZ,UACF,CAAC;IAEDD,QAAQ,CAACW,gBAAgB,CAACb,qBAAqB,CAACoB,UAAU,EAAEjB,UAAU,CAAC;IAEvE,OAAO,MAAM;MACXgB,MAAM,CAACN,gBAAgB,CAAC,OAAO,EAAEV,UAAU,CAAC;MAC5CD,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACe,kBAAkB,EACxCZ,UACF,CAAC;MAEDD,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACoB,UAAU,EAChCjB,UACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACD,QAAQ,EAAEC,UAAU,CAAC,CAAC;AAC5B,CAAC","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ import { useEffect } from "react";
2
+ /**
3
+ * Internal use only. This hook is responsible for attaching
4
+ * a refresh interval to the WalletObserver. If set to 0, then
5
+ * the refresh interval is not attached.
6
+ *
7
+ * @param observer
8
+ * @param refreshInterval
9
+ * @param syncWallet
10
+ */
11
+ export const useProviderRefreshInterval = (observer, syncWallet, refreshInterval) => {
12
+ useEffect(() => {
13
+ if (!refreshInterval) {
14
+ return;
15
+ }
16
+ const interval = setInterval(() => {
17
+ if (!observer.getActiveWallet()) {
18
+ return;
19
+ }
20
+ syncWallet();
21
+ }, refreshInterval);
22
+ return () => {
23
+ clearInterval(interval);
24
+ };
25
+ }, [refreshInterval, syncWallet, observer]);
26
+ };
27
+ //# sourceMappingURL=useProviderRefreshInterval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderRefreshInterval.js","names":["useEffect","useProviderRefreshInterval","observer","syncWallet","refreshInterval","interval","setInterval","getActiveWallet","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(() => {\n if (!observer.getActiveWallet()) {\n return;\n }\n\n syncWallet();\n }, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAIjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGA,CACxCC,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,KACrB;EACHJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACI,eAAe,EAAE;MACpB;IACF;IAEA,MAAMC,QAAQ,GAAGC,WAAW,CAAC,MAAM;MACjC,IAAI,CAACJ,QAAQ,CAACK,eAAe,CAAC,CAAC,EAAE;QAC/B;MACF;MAEAJ,UAAU,CAAC,CAAC;IACd,CAAC,EAAEC,eAAe,CAAC;IAEnB,OAAO,MAAM;MACXI,aAAa,CAACH,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACD,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import { useRef } from "react";
2
+ import { WalletObserver } from "../../../classes/WalletObserver.class.js";
3
+
4
+ /**
5
+ * Internal use only. This hook is responsible for initiating the
6
+ * WalletObserver instance once, and assigning it to a ref.
7
+ *
8
+ * @param {TWalletObserverOptions} [options]
9
+ * @returns {MutableRefObject<WalletObserver>}
10
+ */
11
+ export const useProviderWalletObserverRef = options => {
12
+ // Use ref to store the observer instance, ensuring it's created only once
13
+ const observerRef = useRef(null);
14
+
15
+ // Initialize observer only once
16
+ if (observerRef.current === null) {
17
+ const observer = new WalletObserver(options);
18
+ observerRef.current = observer;
19
+ }
20
+ return observerRef;
21
+ };
22
+ //# sourceMappingURL=useProviderWalletObserverRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderWalletObserverRef.js","names":["useRef","WalletObserver","useProviderWalletObserverRef","options","observerRef","current","observer"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.ts"],"sourcesContent":["import { MutableRefObject, useRef } from \"react\";\n\nimport { TWalletObserverOptions } from \"../../../@types/observer.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for initiating the\n * WalletObserver instance once, and assigning it to a ref.\n *\n * @param {TWalletObserverOptions} [options]\n * @returns {MutableRefObject<WalletObserver>}\n */\nexport const useProviderWalletObserverRef = (\n options?: TWalletObserverOptions\n): MutableRefObject<WalletObserver> => {\n // Use ref to store the observer instance, ensuring it's created only once\n const observerRef = useRef<WalletObserver | null>(null);\n\n // Initialize observer only once\n if (observerRef.current === null) {\n const observer = new WalletObserver(options);\n observerRef.current = observer;\n }\n\n return observerRef as MutableRefObject<WalletObserver>;\n};\n"],"mappings":"AAAA,SAA2BA,MAAM,QAAQ,OAAO;AAGhD,SAASC,cAAc,QAAQ,0CAA0C;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,4BAA4B,GACvCC,OAAgC,IACK;EACrC;EACA,MAAMC,WAAW,GAAGJ,MAAM,CAAwB,IAAI,CAAC;;EAEvD;EACA,IAAII,WAAW,CAACC,OAAO,KAAK,IAAI,EAAE;IAChC,MAAMC,QAAQ,GAAG,IAAIL,cAAc,CAACE,OAAO,CAAC;IAC5CC,WAAW,CAACC,OAAO,GAAGC,QAAQ;EAChC;EAEA,OAAOF,WAAW;AACpB,CAAC","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ import { AssetAmount } from "@sundaeswap/asset";
2
+ import { useCallback, useRef, useState } from "react";
3
+ import { WalletBalanceMap } from "../../../classes/WalletBalanceMap.class.js";
4
+ import { WalletObserver } from "../../../classes/WalletObserver.class.js";
5
+ import { areAssetMapsEqual } from "../../../utils/comparisons.js";
6
+ /**
7
+ * Internal use only. The main action that sync WalletObserver api responses with
8
+ * the React context of the WalletObserverProvider.
9
+ *
10
+ * @param {WalletObserver} observer
11
+ */
12
+ export const useWalletObserverState = observer => {
13
+ const prevActiveWallet = useRef();
14
+ const [activeWallet, setActiveWallet] = useState();
15
+ const [adaBalance, setAdaBalance] = useState(new AssetAmount(0n));
16
+ const [handleMetadata, setHandleMetadata] = useState(new Map());
17
+ const [balance, setBalance] = useState(new WalletBalanceMap(observer));
18
+ const [network, setNetwork] = useState();
19
+ const [usedAddresses, setUsedAddresses] = useState([]);
20
+ const [unusedAddresses, setUnusedAddresses] = useState([]);
21
+ const [ready, setReady] = useState(false);
22
+ const [isCip45, setIsCip45] = useState(false);
23
+ const syncWallet = useCallback(async () => {
24
+ if (observer.isSyncing()) {
25
+ return;
26
+ }
27
+ const newWallet = observer.getActiveWallet();
28
+ if (!newWallet) {
29
+ setAdaBalance(new AssetAmount(0n));
30
+ setBalance(new WalletBalanceMap(observer));
31
+ setUsedAddresses([]);
32
+ setUnusedAddresses([]);
33
+ setActiveWallet(undefined);
34
+ setNetwork(undefined);
35
+ return;
36
+ }
37
+ prevActiveWallet.current = newWallet;
38
+ setActiveWallet(prevWallet => newWallet === prevWallet ? prevWallet : newWallet);
39
+ const freshData = await observer.sync();
40
+ const newAdaBalance = freshData.balanceMap.get(WalletObserver.ADA_ASSET_ID);
41
+ if (newAdaBalance) {
42
+ setAdaBalance(prevBalance => prevBalance.amount === newAdaBalance.amount ? prevBalance : newAdaBalance);
43
+ }
44
+ setBalance(prevBalance => areAssetMapsEqual(prevBalance, freshData.balanceMap) ? prevBalance : freshData.balanceMap);
45
+ setUsedAddresses(prevValue => JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses) ? prevValue : freshData.usedAddresses);
46
+ setUnusedAddresses(prevValue => JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses) ? prevValue : freshData.unusedAddresses);
47
+ setNetwork(prevValue => prevValue === freshData.network ? prevValue : freshData.network);
48
+ setReady(true);
49
+ setIsCip45(newWallet.includes("p2p"));
50
+ }, [observer]);
51
+ return {
52
+ activeWallet,
53
+ setActiveWallet,
54
+ adaBalance,
55
+ setAdaBalance,
56
+ balance,
57
+ setBalance,
58
+ handles: handleMetadata,
59
+ setHandles: setHandleMetadata,
60
+ isCip45,
61
+ setIsCip45,
62
+ network,
63
+ setNetwork,
64
+ unusedAddresses,
65
+ setUnusedAddresses,
66
+ usedAddresses,
67
+ setUsedAddresses,
68
+ syncWallet,
69
+ ready,
70
+ setReady
71
+ };
72
+ };
73
+ //# sourceMappingURL=useSyncWalletFunction.js.map