@n1xyz/wallet-widget 0.0.29 → 0.0.30

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 (131) hide show
  1. package/README.md +89 -11
  2. package/dist/Logic/sessionManager.js +8 -8
  3. package/dist/Logic/sessionManager.js.map +1 -1
  4. package/dist/Logic/transactionManager.d.ts +0 -22
  5. package/dist/Logic/transactionManager.js +0 -189
  6. package/dist/Logic/transactionManager.js.map +1 -1
  7. package/dist/Logic/utils.d.ts +3 -7
  8. package/dist/Logic/utils.js +3 -186
  9. package/dist/Logic/utils.js.map +1 -1
  10. package/dist/Modal/LoadingFallback.js +1 -1
  11. package/dist/Modal/LoadingFallback.js.map +1 -1
  12. package/dist/Modal/N1WalletModal.d.ts +1 -1
  13. package/dist/Modal/N1WalletModal.js +50 -205
  14. package/dist/Modal/N1WalletModal.js.map +1 -1
  15. package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +1 -1
  16. package/dist/Modal/NordFlow/NordFlow.js +44 -17
  17. package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
  18. package/dist/Modal/NordFlow/components/ChainButton.d.ts +5 -2
  19. package/dist/Modal/NordFlow/components/ChainButton.js +16 -13
  20. package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -1
  21. package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +2 -1
  22. package/dist/Modal/NordFlow/components/EVMChainsButton.js +11 -9
  23. package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -1
  24. package/dist/Modal/NordFlow/components/Header.d.ts +3 -1
  25. package/dist/Modal/NordFlow/components/Header.js +38 -4
  26. package/dist/Modal/NordFlow/components/Header.js.map +1 -1
  27. package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -1
  28. package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -1
  29. package/dist/Modal/NordFlow/components/MoreButton.d.ts +1 -1
  30. package/dist/Modal/NordFlow/components/MoreButton.js +4 -4
  31. package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -1
  32. package/dist/Modal/NordFlow/components/TransactionTable.d.ts +1 -1
  33. package/dist/Modal/NordFlow/components/TransactionTable.js +11 -11
  34. package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
  35. package/dist/Modal/NordFlow/components/WaitingMessage.d.ts +3 -1
  36. package/dist/Modal/NordFlow/components/WaitingMessage.js +14 -3
  37. package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -1
  38. package/dist/Modal/NordFlow/components/index.d.ts +0 -1
  39. package/dist/Modal/NordFlow/components/index.js +0 -1
  40. package/dist/Modal/NordFlow/components/index.js.map +1 -1
  41. package/dist/Modal/NordFlow/constants.js +12 -48
  42. package/dist/Modal/NordFlow/constants.js.map +1 -1
  43. package/dist/Modal/NordFlow/context/DepositContext.js +112 -41
  44. package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -1
  45. package/dist/Modal/NordFlow/context/FlowContext.d.ts +1 -0
  46. package/dist/Modal/NordFlow/context/FlowContext.js +99 -6
  47. package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -1
  48. package/dist/Modal/NordFlow/context/WalletConnectContext.js +76 -20
  49. package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -1
  50. package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -1
  51. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +2 -1
  52. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +26 -7
  53. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +1 -1
  54. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -1
  55. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -15
  56. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
  57. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +103 -54
  58. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +1 -1
  59. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.d.ts +1 -2
  60. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js +284 -60
  61. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +1 -1
  62. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +2 -2
  63. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +1 -1
  64. package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js +97 -110
  65. package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +1 -1
  66. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +10 -8
  67. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +1 -1
  68. package/dist/Modal/NordFlow/screens/index.d.ts +5 -9
  69. package/dist/Modal/NordFlow/screens/index.js +5 -9
  70. package/dist/Modal/NordFlow/screens/index.js.map +1 -1
  71. package/dist/Modal/NordFlow/types.d.ts +13 -3
  72. package/dist/Modal/NordFlow/types.js +4 -3
  73. package/dist/Modal/NordFlow/types.js.map +1 -1
  74. package/dist/Modal/NordFlow/utils/depositStorage.d.ts +4 -0
  75. package/dist/Modal/NordFlow/utils/depositStorage.js +48 -0
  76. package/dist/Modal/NordFlow/utils/depositStorage.js.map +1 -0
  77. package/dist/Modal/NordFlow/utils/nordUtils.d.ts +1 -1
  78. package/dist/Modal/NordFlow/utils/nordUtils.js +1 -1
  79. package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -1
  80. package/dist/Provider/LazyWalletProvider.d.ts +1 -1
  81. package/dist/Provider/LazyWalletProvider.js +38 -38
  82. package/dist/Provider/LazyWalletProvider.js.map +1 -1
  83. package/dist/Provider/N1WalletProvider.d.ts +2 -1
  84. package/dist/Provider/N1WalletProvider.js +85 -82
  85. package/dist/Provider/N1WalletProvider.js.map +1 -1
  86. package/dist/Provider/ShadowRootWrapper.d.ts +1 -1
  87. package/dist/Provider/WalletErrorBoundary.d.ts +9 -2
  88. package/dist/Provider/WalletErrorBoundary.js +19 -1
  89. package/dist/Provider/WalletErrorBoundary.js.map +1 -1
  90. package/dist/Provider/hooks/useNordUserInitialization.js +87 -35
  91. package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
  92. package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +1 -1
  93. package/dist/Provider/icons/ConnectionDotsSVG.d.ts +1 -1
  94. package/dist/Provider/icons/MetamaskIcon.d.ts +1 -1
  95. package/dist/Provider/icons/PhantomIcon.d.ts +1 -1
  96. package/dist/Provider/icons/UserIcon.d.ts +1 -1
  97. package/dist/Provider/icons/WalletConnectIcon.d.ts +1 -1
  98. package/dist/Provider/types.d.ts +18 -16
  99. package/dist/Provider/types.js +8 -2
  100. package/dist/Provider/types.js.map +1 -1
  101. package/dist/WidgetButton/N1ConnectButton.d.ts +1 -1
  102. package/dist/WidgetButton/N1ConnectButton.js +29 -10
  103. package/dist/WidgetButton/N1ConnectButton.js.map +1 -1
  104. package/dist/components/Logo.d.ts +2 -1
  105. package/dist/components/Logo.js +5 -2
  106. package/dist/components/Logo.js.map +1 -1
  107. package/dist/components/QRCodeLoader.d.ts +1 -1
  108. package/dist/components/QRCodeLoader.js +1 -1
  109. package/dist/components/QRCodeLoader.js.map +1 -1
  110. package/dist/components/logos/EVMChainsGroup.js +1 -1
  111. package/dist/components/logos/EVMChainsGroup.js.map +1 -1
  112. package/dist/components/logos/MoreChainsGroup.js +1 -1
  113. package/dist/components/logos/MoreChainsGroup.js.map +1 -1
  114. package/dist/components/logos/index.d.ts +0 -2
  115. package/dist/components/logos/index.js +0 -2
  116. package/dist/components/logos/index.js.map +1 -1
  117. package/dist/config/solana.d.ts +3 -15
  118. package/dist/config/solana.js +6 -29
  119. package/dist/config/solana.js.map +1 -1
  120. package/dist/embedded-main-css.d.ts +1 -1
  121. package/dist/embedded-main-css.js +1 -1
  122. package/dist/embedded-main-css.js.map +1 -1
  123. package/dist/index.d.ts +2 -0
  124. package/dist/index.js +2 -0
  125. package/dist/index.js.map +1 -1
  126. package/dist/main.css +2 -2
  127. package/dist/polyfills/windowEthereumGuard.d.ts +6 -0
  128. package/dist/polyfills/windowEthereumGuard.js +28 -0
  129. package/dist/polyfills/windowEthereumGuard.js.map +1 -0
  130. package/package.json +26 -11
  131. package/dist/utils/dynamicImports.d.ts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositStorage.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/depositStorage.ts"],"names":[],"mappings":"AAEA,IAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEnD,IAAM,UAAU,GAAG;IACjB,OAAA,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAA1D,CAA0D,CAAC;AAE7D,IAAM,MAAM,GAAG,UAAC,OAAe;IAC7B,OAAA,UAAG,uBAAuB,SAAG,OAAO,CAAC,WAAW,EAAE,CAAE;AAApD,CAAoD,CAAC;AAEvD,MAAM,UAAU,qBAAqB,CACnC,OAAkC,EAClC,MAA2B;IAE3B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAkC;IAElC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;IAChD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAkC;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import { StoredDepositRecord } from '../types';\n\nconst LAST_DEPOSIT_KEY_PREFIX = 'n1_last_deposit_';\n\nconst getStorage = () =>\n typeof window === 'undefined' ? null : window.localStorage;\n\nconst getKey = (address: string) =>\n `${LAST_DEPOSIT_KEY_PREFIX}${address.toLowerCase()}`;\n\nexport function saveLastDepositRecord(\n address: string | null | undefined,\n record: StoredDepositRecord\n) {\n if (!address || !record || !record.transactionId) {\n return;\n }\n\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n storage.setItem(getKey(address), JSON.stringify(record));\n}\n\nexport function readLastDepositRecord(\n address: string | null | undefined\n): StoredDepositRecord | null {\n if (!address) {\n return null;\n }\n\n const storage = getStorage();\n if (!storage) {\n return null;\n }\n\n try {\n const raw = storage.getItem(getKey(address));\n if (!raw) {\n return null;\n }\n return JSON.parse(raw) as StoredDepositRecord;\n } catch {\n storage.removeItem(getKey(address));\n return null;\n }\n}\n\nexport function clearLastDepositRecord(address: string | null | undefined) {\n if (!address) {\n return;\n }\n\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n storage.removeItem(getKey(address));\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { NordUser } from '@n1xyz/nord-ts';
1
+ import type { NordUser } from '@n1xyz/nord-ts';
2
2
  /**
3
3
  * Format a Nord transaction for display
4
4
  *
@@ -30,7 +30,7 @@ export function getTokenBalance(nordUser, tokenSymbol) {
30
30
  * @returns Whether Nord is properly configured
31
31
  */
32
32
  export function isNordConfigured(nord) {
33
- return !!nord && !!nord.webServerUrl && !!nord.solanaProgramId;
33
+ return !!nord && !!nord.webServerUrl && (!!nord.solanaConnection || !!nord.protonClient);
34
34
  }
35
35
  /**
36
36
  * Format an amount with the appropriate number of decimal places
@@ -1 +1 @@
1
- {"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,UAAsB,EACtB,QAAoB;IADpB,2BAAA,EAAA,cAAsB;IACtB,yBAAA,EAAA,YAAoB;IAEpB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE5D,OAAO,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAE,CAAC;AACjG,CAAC","sourcesContent":["import { NordUser } from '@n1xyz/nord-ts';\n\n/**\n * Format a Nord transaction for display\n *\n * @param tx Transaction object\n * @returns Formatted transaction ID\n */\nexport function formatNordTransaction(tx: any): string {\n return tx.id\n ? tx.id.substring(0, 8) + '...' + tx.id.substring(tx.id.length - 8)\n : 'Unknown';\n}\n\n/**\n * Get token balance for a specific token\n *\n * @param nordUser NordUser instance\n * @param tokenSymbol Token symbol\n * @returns Token balance\n */\nexport function getTokenBalance(\n nordUser: NordUser | null,\n tokenSymbol: string\n): number {\n if (!nordUser || !nordUser.balances || !nordUser.balances[tokenSymbol]) {\n return 0;\n }\n\n const tokenBalances = nordUser.balances[tokenSymbol];\n return tokenBalances.reduce((total, balance) => total + balance.balance, 0);\n}\n\n/**\n * Check if Nord is properly configured\n *\n * @param nord Nord instance\n * @returns Whether Nord is properly configured\n */\nexport function isNordConfigured(nord: any): boolean {\n return !!nord && !!nord.webServerUrl && !!nord.solanaProgramId;\n}\n\n/**\n * Format an amount with the appropriate number of decimal places\n *\n * @param amount Amount to format\n * @param decimals Number of decimal places\n * @returns Formatted amount\n */\nexport function formatAmount(\n amount: number | string,\n decimals: number = 2\n): string {\n const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;\n return numAmount.toFixed(decimals);\n}\n\n/**\n * Shorten an address for display\n *\n * @param address Address to shorten\n * @param startChars Number of characters to show at the start\n * @param endChars Number of characters to show at the end\n * @returns Shortened address\n */\nexport function shortenAddress(\n address: string,\n startChars: number = 6,\n endChars: number = 4\n): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n\n return `${address.substring(0, startChars)}...${address.substring(address.length - endChars)}`;\n}\n"]}
1
+ {"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,UAAsB,EACtB,QAAoB;IADpB,2BAAA,EAAA,cAAsB;IACtB,yBAAA,EAAA,YAAoB;IAEpB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE5D,OAAO,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAE,CAAC;AACjG,CAAC","sourcesContent":["import type { NordUser } from '@n1xyz/nord-ts';\n\n/**\n * Format a Nord transaction for display\n *\n * @param tx Transaction object\n * @returns Formatted transaction ID\n */\nexport function formatNordTransaction(tx: any): string {\n return tx.id\n ? tx.id.substring(0, 8) + '...' + tx.id.substring(tx.id.length - 8)\n : 'Unknown';\n}\n\n/**\n * Get token balance for a specific token\n *\n * @param nordUser NordUser instance\n * @param tokenSymbol Token symbol\n * @returns Token balance\n */\nexport function getTokenBalance(\n nordUser: NordUser | null,\n tokenSymbol: string\n): number {\n if (!nordUser || !nordUser.balances || !nordUser.balances[tokenSymbol]) {\n return 0;\n }\n\n const tokenBalances = nordUser.balances[tokenSymbol];\n return tokenBalances.reduce((total, balance) => total + balance.balance, 0);\n}\n\n/**\n * Check if Nord is properly configured\n *\n * @param nord Nord instance\n * @returns Whether Nord is properly configured\n */\nexport function isNordConfigured(nord: any): boolean {\n return !!nord && !!nord.webServerUrl && (!!nord.solanaConnection || !!nord.protonClient);\n}\n\n/**\n * Format an amount with the appropriate number of decimal places\n *\n * @param amount Amount to format\n * @param decimals Number of decimal places\n * @returns Formatted amount\n */\nexport function formatAmount(\n amount: number | string,\n decimals: number = 2\n): string {\n const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;\n return numAmount.toFixed(decimals);\n}\n\n/**\n * Shorten an address for display\n *\n * @param address Address to shorten\n * @param startChars Number of characters to show at the start\n * @param endChars Number of characters to show at the end\n * @returns Shortened address\n */\nexport function shortenAddress(\n address: string,\n startChars: number = 6,\n endChars: number = 4\n): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n\n return `${address.substring(0, startChars)}...${address.substring(address.length - endChars)}`;\n}\n"]}
@@ -1 +1 @@
1
- export declare function LazyWalletProvider({ children }: any): JSX.Element;
1
+ export declare function LazyWalletProvider({ children }: any): import("react/jsx-runtime").JSX.Element;
@@ -45,22 +45,21 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
45
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
46
  }
47
47
  };
48
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
48
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
49
49
  import { useCallback, useEffect, useRef, useState } from 'react';
50
50
  import { useN1WalletContext, useN1WalletInternalContext } from './hooks';
51
- import { N1SessionMode } from './types';
52
51
  import { logger } from '../utils/logger';
53
52
  function DynamicContextConsumer(_a) {
54
53
  var children = _a.children;
55
54
  var _b = useState(null), DynamicContext = _b[0], setDynamicContext = _b[1];
56
55
  var showAuthFlowRef = useRef(null);
56
+ var primaryWalletStateRef = useRef(null);
57
57
  // Use refs to track previous values and prevent unnecessary updates
58
58
  var prevPrimaryWalletRef = useRef(null);
59
59
  var prevHandleLogOutRef = useRef(null);
60
60
  var prevSdkHasLoadedRef = useRef(null);
61
- var _c = useN1WalletInternalContext(), setDynamicWallet = _c.setDynamicWallet, setDynamicHandleLogOut = _c.setDynamicHandleLogOut, setDynamicSdkHasLoaded = _c.setDynamicSdkHasLoaded, setAddress = _c.setAddress, setShowDynamicWidget = _c.setShowDynamicWidget;
62
- var address = useN1WalletContext().address;
63
- var _d = useState(''), oldAddress = _d[0], setOldAddress = _d[1];
61
+ var _c = useN1WalletInternalContext(), setDynamicWallet = _c.setDynamicWallet, setDynamicHandleLogOut = _c.setDynamicHandleLogOut, setDynamicSdkHasLoaded = _c.setDynamicSdkHasLoaded, setAddress = _c.setAddress, setShowDynamicWidget = _c.setShowDynamicWidget, setStartClosingLogin = _c.setStartClosingLogin;
62
+ var setShowLogin = useN1WalletContext().setShowLogin;
64
63
  // Load the Dynamic context only once
65
64
  useEffect(function () {
66
65
  var isMounted = true;
@@ -90,10 +89,25 @@ function DynamicContextConsumer(_a) {
90
89
  var _a = DynamicContext(), primaryWallet = _a.primaryWallet, sdkHasLoaded = _a.sdkHasLoaded, setShowAuthFlow = _a.setShowAuthFlow, handleLogOut = _a.handleLogOut;
91
90
  // Store setShowAuthFlow in ref to avoid re-renders - only when it changes
92
91
  useEffect(function () {
93
- if (setShowAuthFlow !== showAuthFlowRef.current) {
94
- showAuthFlowRef.current = setShowAuthFlow;
92
+ if (!setShowAuthFlow) {
93
+ showAuthFlowRef.current = null;
94
+ return;
95
95
  }
96
- }, [setShowAuthFlow]);
96
+ var proxiedSetShowAuthFlow = function (show) {
97
+ setShowAuthFlow(show);
98
+ if (!show && !primaryWalletStateRef.current) {
99
+ logger.debug('Dynamic auth flow closed before wallet connection; closing modal');
100
+ setShowLogin(false);
101
+ setStartClosingLogin(true);
102
+ }
103
+ };
104
+ showAuthFlowRef.current = proxiedSetShowAuthFlow;
105
+ return function () {
106
+ if (showAuthFlowRef.current === proxiedSetShowAuthFlow) {
107
+ showAuthFlowRef.current = null;
108
+ }
109
+ };
110
+ }, [setShowAuthFlow, setShowLogin, setStartClosingLogin]);
97
111
  // Set the dynamic wallet and address when the primary wallet changes
98
112
  // Use deep comparison to prevent unnecessary updates
99
113
  useEffect(function () {
@@ -102,6 +116,7 @@ function DynamicContextConsumer(_a) {
102
116
  return;
103
117
  }
104
118
  prevPrimaryWalletRef.current = primaryWallet;
119
+ primaryWalletStateRef.current = primaryWallet;
105
120
  if (primaryWallet) {
106
121
  setDynamicWallet(primaryWallet);
107
122
  setAddress(primaryWallet.address);
@@ -129,13 +144,13 @@ function DynamicContextConsumer(_a) {
129
144
  };
130
145
  return _jsx(DynamicComponent, {});
131
146
  }
132
- var getSettings = function (darkMode) { return ({
147
+ var getSettings = function () { return ({
133
148
  initialAuthenticationMode: 'connect-only',
134
149
  environmentId: '61fe6031-545b-4e27-bc05-03c8a09f190b',
135
150
  silentAuthentication: true,
136
151
  silentAuth: true,
137
152
  theme: {
138
- mode: darkMode ? 'dark' : 'light',
153
+ mode: 'dark',
139
154
  },
140
155
  events: {
141
156
  onAuthSuccess: function (args) {
@@ -146,42 +161,27 @@ var getSettings = function (darkMode) { return ({
146
161
  function LazyInternal(props) {
147
162
  var _this = this;
148
163
  var _a = useState(null), Provider = _a[0], setProvider = _a[1];
149
- var _b = useState([]), walletConnectors = _b[0], setWalletConnectors = _b[1];
150
- var _c = useN1WalletInternalContext(), darkMode = _c.darkMode, sessionMode = _c.sessionMode;
151
- // Use a ref to track the previous session mode
152
- var prevSessionModeRef = useRef(null);
164
+ var _b = useState(null), DynamicWidgetComponent = _b[0], setDynamicWidgetComponent = _b[1];
165
+ var _c = useState([]), walletConnectors = _c[0], setWalletConnectors = _c[1];
153
166
  useEffect(function () {
154
- // Skip if the session mode hasn't changed
155
- if (sessionMode === prevSessionModeRef.current) {
156
- return;
157
- }
158
- prevSessionModeRef.current = sessionMode;
159
167
  var loadDynamicDeps = function () { return __awaiter(_this, void 0, void 0, function () {
160
- var _a, DynamicContextProvider_1, SolanaWalletConnectors, error_1;
161
- return __generator(this, function (_b) {
162
- switch (_b.label) {
168
+ var _a, _b, DynamicContextProvider_1, DynamicWidget_1, SolanaWalletConnectors, error_1;
169
+ return __generator(this, function (_c) {
170
+ switch (_c.label) {
163
171
  case 0:
164
- _b.trys.push([0, 2, , 3]);
172
+ _c.trys.push([0, 2, , 3]);
165
173
  return [4 /*yield*/, Promise.all([
166
174
  import('@dynamic-labs/sdk-react-core'),
167
175
  import('@dynamic-labs/solana'),
168
176
  ])];
169
177
  case 1:
170
- _a = _b.sent(), DynamicContextProvider_1 = _a[0].DynamicContextProvider, SolanaWalletConnectors = _a[1].SolanaWalletConnectors;
178
+ _a = _c.sent(), _b = _a[0], DynamicContextProvider_1 = _b.DynamicContextProvider, DynamicWidget_1 = _b.DynamicWidget, SolanaWalletConnectors = _a[1].SolanaWalletConnectors;
171
179
  setProvider(function () { return DynamicContextProvider_1; });
172
- if (sessionMode === N1SessionMode.Nord) {
173
- // Only use Solana wallet connectors for Nord mode
174
- setWalletConnectors([SolanaWalletConnectors]);
175
- }
176
- else {
177
- // Use all wallet connectors for NTS mode
178
- setWalletConnectors([
179
- SolanaWalletConnectors,
180
- ]);
181
- }
180
+ setDynamicWidgetComponent(function () { return DynamicWidget_1; });
181
+ setWalletConnectors([SolanaWalletConnectors]);
182
182
  return [3 /*break*/, 3];
183
183
  case 2:
184
- error_1 = _b.sent();
184
+ error_1 = _c.sent();
185
185
  logger.error('Failed to load Dynamic dependencies:', error_1);
186
186
  return [3 /*break*/, 3];
187
187
  case 3: return [2 /*return*/];
@@ -189,13 +189,13 @@ function LazyInternal(props) {
189
189
  });
190
190
  }); };
191
191
  loadDynamicDeps();
192
- }, [sessionMode]);
192
+ }, []);
193
193
  // Memoize the dynamic settings to prevent unnecessary re-renders
194
- var dynamicSettings = useCallback(function () { return (__assign(__assign({}, getSettings(darkMode)), { walletConnectors: walletConnectors })); }, [darkMode, walletConnectors]);
194
+ var dynamicSettings = useCallback(function () { return (__assign(__assign({}, getSettings()), { walletConnectors: walletConnectors })); }, [walletConnectors]);
195
195
  if (!Provider || walletConnectors.length === 0) {
196
196
  return null;
197
197
  }
198
- return (_jsx(Provider, { settings: dynamicSettings(), theme: darkMode ? 'dark' : 'light', children: _jsx(DynamicContextConsumer, { children: props.children }) }));
198
+ return (_jsxs(Provider, { settings: dynamicSettings(), theme: "dark", children: [_jsx(DynamicContextConsumer, { children: props.children }), DynamicWidgetComponent ? _jsx(DynamicWidgetComponent, {}) : null] }));
199
199
  }
200
200
  export function LazyWalletProvider(_a) {
201
201
  var children = _a.children;
@@ -1 +1 @@
1
- {"version":3,"file":"LazyWalletProvider.js","sourceRoot":"","sources":["../../src/Provider/LazyWalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from './hooks';\nimport { N1SessionMode } from './types';\nimport { logger } from '../utils/logger';\n\nfunction DynamicContextConsumer({ children }: { children: any }) {\n const [DynamicContext, setDynamicContext] = useState<any>(null);\n const showAuthFlowRef = useRef<((show: boolean) => void) | null>(null);\n\n // Use refs to track previous values and prevent unnecessary updates\n const prevPrimaryWalletRef = useRef<any>(null);\n const prevHandleLogOutRef = useRef<any>(null);\n const prevSdkHasLoadedRef = useRef<boolean | null>(null);\n\n const {\n setDynamicWallet,\n setDynamicHandleLogOut,\n setDynamicSdkHasLoaded,\n setAddress,\n setShowDynamicWidget,\n } = useN1WalletInternalContext();\n\n const {\n address\n } = useN1WalletContext();\n\n const [oldAddress, setOldAddress] = useState<string>('');\n\n\n // Load the Dynamic context only once\n useEffect(() => {\n let isMounted = true;\n import('@dynamic-labs/sdk-react-core').then(({ useDynamicContext }) => {\n if (isMounted) {\n setDynamicContext(() => useDynamicContext);\n }\n });\n return () => {\n isMounted = false;\n };\n }, []);\n\n // Set up a stable widget function that uses the ref - only once\n useEffect(() => {\n const stableShowWidget = (show: boolean) => {\n if (showAuthFlowRef.current) {\n showAuthFlowRef.current(show);\n }\n };\n\n setShowDynamicWidget(() => stableShowWidget);\n }, [setShowDynamicWidget]);\n\n if (!DynamicContext) {\n return <>{children}</>;\n }\n\n const DynamicComponent = () => {\n const { primaryWallet, sdkHasLoaded, setShowAuthFlow, handleLogOut } =\n DynamicContext();\n\n // Store setShowAuthFlow in ref to avoid re-renders - only when it changes\n useEffect(() => {\n if (setShowAuthFlow !== showAuthFlowRef.current) {\n showAuthFlowRef.current = setShowAuthFlow;\n }\n }, [setShowAuthFlow]);\n\n // Set the dynamic wallet and address when the primary wallet changes\n // Use deep comparison to prevent unnecessary updates\n useEffect(() => {\n \n // Skip if the wallet hasn't actually changed\n if (primaryWallet === prevPrimaryWalletRef.current) {\n return;\n }\n\n prevPrimaryWalletRef.current = primaryWallet;\n\n if (primaryWallet) {\n setDynamicWallet(primaryWallet);\n setAddress(primaryWallet.address);\n } else {\n setDynamicWallet(null);\n setAddress('');\n }\n }, [primaryWallet, setDynamicWallet, setAddress]);\n\n // Set the logout handler when it changes - only when it actually changes\n useEffect(() => {\n if (handleLogOut && handleLogOut !== prevHandleLogOutRef.current) {\n prevHandleLogOutRef.current = handleLogOut;\n setDynamicHandleLogOut(() => handleLogOut);\n }\n }, [handleLogOut, setDynamicHandleLogOut]);\n\n // Set the SDK loaded flag when it changes - only when it actually changes\n useEffect(() => {\n if (sdkHasLoaded !== prevSdkHasLoadedRef.current) {\n prevSdkHasLoadedRef.current = sdkHasLoaded;\n setDynamicSdkHasLoaded(sdkHasLoaded);\n }\n }, [sdkHasLoaded, setDynamicSdkHasLoaded]);\n\n return <>{children}</>;\n };\n\n return <DynamicComponent />;\n}\n\nconst getSettings = (darkMode: boolean) => ({\n initialAuthenticationMode: 'connect-only',\n environmentId: '61fe6031-545b-4e27-bc05-03c8a09f190b',\n silentAuthentication: true,\n silentAuth: true,\n theme: {\n mode: darkMode ? 'dark' : 'light',\n },\n events: {\n onAuthSuccess: (args: any) => {\n logger.debug('onAuthSuccess was called', args);\n },\n },\n});\n\nfunction LazyInternal(props: { children: any }) {\n const [Provider, setProvider] = useState<any>(null);\n const [walletConnectors, setWalletConnectors] = useState<any[]>([]);\n const { darkMode, sessionMode } = useN1WalletInternalContext();\n\n // Use a ref to track the previous session mode\n const prevSessionModeRef = useRef<N1SessionMode | null>(null);\n\n useEffect(() => {\n // Skip if the session mode hasn't changed\n if (sessionMode === prevSessionModeRef.current) {\n return;\n }\n\n prevSessionModeRef.current = sessionMode;\n\n const loadDynamicDeps = async () => {\n try {\n const [\n { DynamicContextProvider },\n { SolanaWalletConnectors },\n ] = await Promise.all([\n import('@dynamic-labs/sdk-react-core'),\n import('@dynamic-labs/solana'),\n ]);\n\n setProvider(() => DynamicContextProvider);\n\n if (sessionMode === N1SessionMode.Nord) {\n // Only use Solana wallet connectors for Nord mode\n setWalletConnectors([SolanaWalletConnectors]);\n } else {\n // Use all wallet connectors for NTS mode\n setWalletConnectors([\n SolanaWalletConnectors,\n ]);\n }\n } catch (error) {\n logger.error('Failed to load Dynamic dependencies:', error);\n }\n };\n\n loadDynamicDeps();\n }, [sessionMode]);\n\n // Memoize the dynamic settings to prevent unnecessary re-renders\n const dynamicSettings = useCallback(\n () => ({\n ...getSettings(darkMode),\n walletConnectors,\n }),\n [darkMode, walletConnectors]\n );\n\n if (!Provider || walletConnectors.length === 0) {\n return null;\n }\n\n return (\n <Provider settings={dynamicSettings()} theme={darkMode ? 'dark' : 'light'}>\n <DynamicContextConsumer>{props.children}</DynamicContextConsumer>\n </Provider>\n );\n}\n\nexport function LazyWalletProvider({ children }: any) {\n return <LazyInternal>{children}</LazyInternal>;\n}\n"]}
1
+ {"version":3,"file":"LazyWalletProvider.js","sourceRoot":"","sources":["../../src/Provider/LazyWalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from './hooks';\nimport { logger } from '../utils/logger';\n\nfunction DynamicContextConsumer({ children }: { children: any }) {\n const [DynamicContext, setDynamicContext] = useState<any>(null);\n const showAuthFlowRef = useRef<((show: boolean) => void) | null>(null);\n const primaryWalletStateRef = useRef<any>(null);\n\n // Use refs to track previous values and prevent unnecessary updates\n const prevPrimaryWalletRef = useRef<any>(null);\n const prevHandleLogOutRef = useRef<any>(null);\n const prevSdkHasLoadedRef = useRef<boolean | null>(null);\n\n const {\n setDynamicWallet,\n setDynamicHandleLogOut,\n setDynamicSdkHasLoaded,\n setAddress,\n setShowDynamicWidget,\n setStartClosingLogin,\n } = useN1WalletInternalContext();\n\n const {\n setShowLogin,\n } = useN1WalletContext();\n\n\n // Load the Dynamic context only once\n useEffect(() => {\n let isMounted = true;\n import('@dynamic-labs/sdk-react-core').then(({ useDynamicContext }) => {\n if (isMounted) {\n setDynamicContext(() => useDynamicContext);\n }\n });\n return () => {\n isMounted = false;\n };\n }, []);\n\n // Set up a stable widget function that uses the ref - only once\n useEffect(() => {\n const stableShowWidget = (show: boolean) => {\n if (showAuthFlowRef.current) {\n showAuthFlowRef.current(show);\n }\n };\n\n setShowDynamicWidget(() => stableShowWidget);\n }, [setShowDynamicWidget]);\n\n if (!DynamicContext) {\n return <>{children}</>;\n }\n\n const DynamicComponent = () => {\n const { primaryWallet, sdkHasLoaded, setShowAuthFlow, handleLogOut } =\n DynamicContext();\n\n // Store setShowAuthFlow in ref to avoid re-renders - only when it changes\n useEffect(() => {\n if (!setShowAuthFlow) {\n showAuthFlowRef.current = null;\n return;\n }\n\n const proxiedSetShowAuthFlow = (show: boolean) => {\n setShowAuthFlow(show);\n\n if (!show && !primaryWalletStateRef.current) {\n logger.debug(\n 'Dynamic auth flow closed before wallet connection; closing modal'\n );\n setShowLogin(false);\n setStartClosingLogin(true);\n }\n };\n\n showAuthFlowRef.current = proxiedSetShowAuthFlow;\n\n return () => {\n if (showAuthFlowRef.current === proxiedSetShowAuthFlow) {\n showAuthFlowRef.current = null;\n }\n };\n }, [setShowAuthFlow, setShowLogin, setStartClosingLogin]);\n\n // Set the dynamic wallet and address when the primary wallet changes\n // Use deep comparison to prevent unnecessary updates\n useEffect(() => {\n \n // Skip if the wallet hasn't actually changed\n if (primaryWallet === prevPrimaryWalletRef.current) {\n return;\n }\n\n prevPrimaryWalletRef.current = primaryWallet;\n primaryWalletStateRef.current = primaryWallet;\n\n if (primaryWallet) {\n setDynamicWallet(primaryWallet);\n setAddress(primaryWallet.address);\n } else {\n setDynamicWallet(null);\n setAddress('');\n }\n }, [primaryWallet, setDynamicWallet, setAddress]);\n\n // Set the logout handler when it changes - only when it actually changes\n useEffect(() => {\n if (handleLogOut && handleLogOut !== prevHandleLogOutRef.current) {\n prevHandleLogOutRef.current = handleLogOut;\n setDynamicHandleLogOut(() => handleLogOut);\n }\n }, [handleLogOut, setDynamicHandleLogOut]);\n\n // Set the SDK loaded flag when it changes - only when it actually changes\n useEffect(() => {\n if (sdkHasLoaded !== prevSdkHasLoadedRef.current) {\n prevSdkHasLoadedRef.current = sdkHasLoaded;\n setDynamicSdkHasLoaded(sdkHasLoaded);\n }\n }, [sdkHasLoaded, setDynamicSdkHasLoaded]);\n\n return <>{children}</>;\n };\n\n return <DynamicComponent />;\n}\n\nconst getSettings = () => ({\n initialAuthenticationMode: 'connect-only',\n environmentId: '61fe6031-545b-4e27-bc05-03c8a09f190b',\n silentAuthentication: true,\n silentAuth: true,\n theme: {\n mode: 'dark',\n },\n events: {\n onAuthSuccess: (args: any) => {\n logger.debug('onAuthSuccess was called', args);\n },\n },\n});\n\nfunction LazyInternal(props: { children: any }) {\n const [Provider, setProvider] = useState<any>(null);\n const [DynamicWidgetComponent, setDynamicWidgetComponent] = useState<any>(null);\n const [walletConnectors, setWalletConnectors] = useState<any[]>([]);\n\n useEffect(() => {\n\n const loadDynamicDeps = async () => {\n try {\n const [\n { DynamicContextProvider, DynamicWidget },\n { SolanaWalletConnectors },\n ] = await Promise.all([\n import('@dynamic-labs/sdk-react-core'),\n import('@dynamic-labs/solana'),\n ]);\n\n setProvider(() => DynamicContextProvider);\n setDynamicWidgetComponent(() => DynamicWidget);\n setWalletConnectors([SolanaWalletConnectors]);\n } catch (error) {\n logger.error('Failed to load Dynamic dependencies:', error);\n }\n };\n\n loadDynamicDeps();\n }, []);\n\n // Memoize the dynamic settings to prevent unnecessary re-renders\n const dynamicSettings = useCallback(\n () => ({\n ...getSettings(),\n walletConnectors,\n }),\n [walletConnectors]\n );\n\n if (!Provider || walletConnectors.length === 0) {\n return null;\n }\n\n return (\n <Provider settings={dynamicSettings()} theme=\"dark\">\n <DynamicContextConsumer>{props.children}</DynamicContextConsumer>\n {DynamicWidgetComponent ? <DynamicWidgetComponent /> : null}\n </Provider>\n );\n}\n\nexport function LazyWalletProvider({ children }: any) {\n return <LazyInternal>{children}</LazyInternal>;\n}\n"]}
@@ -1,2 +1,3 @@
1
+ import '../polyfills/windowEthereumGuard';
1
2
  import { N1WalletProviderProps } from './types';
2
- export declare function N1WalletProvider({ children, providedSessionMode, appId, darkMode, onError, faucetUrl, nord, colorOverrides, skipFinalScreen, }: N1WalletProviderProps): JSX.Element;
3
+ export declare function N1WalletProvider({ children, providedSessionMode, appId, onError, nord, colorOverrides, skipFinalScreen, }: N1WalletProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -47,7 +47,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
47
47
  }
48
48
  };
49
49
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
50
- import React, { Suspense, useCallback, useEffect, useState } from 'react';
50
+ import '../polyfills/windowEthereumGuard';
51
+ import React, { Suspense, useCallback, useEffect, useRef, useState } from 'react';
51
52
  import root from 'react-shadow';
52
53
  import { N1WalletModal } from '../Modal/N1WalletModal';
53
54
  import { NordProvider } from '../Modal/NordFlow/context';
@@ -71,83 +72,41 @@ function NordWrapper(_a) {
71
72
  }
72
73
  export function N1WalletProvider(_a) {
73
74
  var _this = this;
74
- var children = _a.children, providedSessionMode = _a.providedSessionMode, appId = _a.appId, _b = _a.darkMode, darkMode = _b === void 0 ? true : _b, onError = _a.onError, faucetUrl = _a.faucetUrl, nord = _a.nord, colorOverrides = _a.colorOverrides, skipFinalScreen = _a.skipFinalScreen;
75
- var _c = useState(false), isConnected = _c[0], setIsConnected = _c[1];
76
- var _d = useState(null), ntsInterface = _d[0], setNtsInterface = _d[1];
77
- var _e = useState(null), sessionPubKey = _e[0], setSessionPubKey = _e[1];
78
- var _f = useState(null), walletPubKey = _f[0], setWalletPubKey = _f[1];
79
- var _g = useState(null), userChain = _g[0], setUserChain = _g[1];
80
- var _h = useState(''), username = _h[0], setUsername = _h[1];
81
- var _j = useState(null), signMessageWithSessionKey = _j[0], setSignMessageWithSessionKey = _j[1];
82
- var _k = useState(null), signMessageWithWalletKey = _k[0], setSignMessageWithWalletKey = _k[1];
83
- var _l = useState(null), signTransactionWithWalletKey = _l[0], setSignTransactionWithWalletKey = _l[1];
84
- var _m = useState(false), loading = _m[0], setLoading = _m[1];
85
- var _o = useState(N1ModalViewMode.Connect), viewMode = _o[0], setViewMode = _o[1];
86
- var _p = useState(null), nordUser = _p[0], setNordUser = _p[1];
75
+ var children = _a.children, providedSessionMode = _a.providedSessionMode, appId = _a.appId, onError = _a.onError, nord = _a.nord, colorOverrides = _a.colorOverrides, skipFinalScreen = _a.skipFinalScreen;
76
+ var _b = useState(false), isConnected = _b[0], setIsConnected = _b[1];
77
+ var _c = useState(null), sessionPubKey = _c[0], setSessionPubKey = _c[1];
78
+ var _d = useState(null), walletPubKey = _d[0], setWalletPubKey = _d[1];
79
+ var _e = useState(null), userChain = _e[0], setUserChain = _e[1];
80
+ var _f = useState(''), username = _f[0], setUsername = _f[1];
81
+ var _g = useState(null), signMessageWithSessionKey = _g[0], setSignMessageWithSessionKey = _g[1];
82
+ var _h = useState(null), signMessageWithWalletKey = _h[0], setSignMessageWithWalletKey = _h[1];
83
+ var _j = useState(null), signTransactionWithWalletKey = _j[0], setSignTransactionWithWalletKey = _j[1];
84
+ var _k = useState(false), loading = _k[0], setLoading = _k[1];
85
+ var _l = useState(N1ModalViewMode.Automatic), viewMode = _l[0], setViewMode = _l[1];
86
+ var _m = useState(null), nordUser = _m[0], setNordUser = _m[1];
87
87
  // dynamic
88
- var _q = useState([]), balances = _q[0], setBalances = _q[1];
89
- var _r = useState(''), chain = _r[0], setChain = _r[1];
90
- var _s = useState(null), dynamicSdkHasLoaded = _s[0], setDynamicSdkHasLoaded = _s[1];
91
- var _t = useState(null), sessionMode = _t[0], setSessionMode = _t[1];
92
- var _u = useState(false), showLogin = _u[0], setShowLogin = _u[1];
93
- var _v = useState(false), startClosingLogin = _v[0], setStartClosingLogin = _v[1];
94
- var _w = useState(false), showSidebar = _w[0], setShowSidebar = _w[1];
95
- var _x = useState(null), showDynamicWidget = _x[0], setShowDynamicWidget = _x[1];
88
+ var _o = useState([]), balances = _o[0], setBalances = _o[1];
89
+ var _p = useState(''), chain = _p[0], setChain = _p[1];
90
+ var _q = useState(null), dynamicSdkHasLoaded = _q[0], setDynamicSdkHasLoaded = _q[1];
91
+ var _r = useState(false), showLogin = _r[0], setShowLoginState = _r[1];
92
+ var _s = useState(false), startClosingLogin = _s[0], setStartClosingLogin = _s[1];
93
+ var _t = useState(null), showDynamicWidget = _t[0], setShowDynamicWidget = _t[1];
94
+ var _u = useState(0), depositFlowRequestId = _u[0], setDepositFlowRequestId = _u[1];
95
+ var nextOpenAllowedAtRef = useRef(0);
96
96
  // dynamic
97
- var _y = useState(''), address = _y[0], setAddress = _y[1];
98
- var _z = useState(''), oldAddress = _z[0], setOldAddress = _z[1];
99
- var _0 = useState(null), dynamicHandleLogOut = _0[0], setDynamicHandleLogOut = _0[1];
100
- var _1 = useState(null), dynamicWallet = _1[0], setDynamicWallet = _1[1];
101
- // Combine SDK loading and initialization into a single effect
97
+ var _v = useState(''), address = _v[0], setAddress = _v[1];
98
+ var _w = useState(null), dynamicHandleLogOut = _w[0], setDynamicHandleLogOut = _w[1];
99
+ var _x = useState(null), dynamicWallet = _x[0], setDynamicWallet = _x[1];
100
+ var sessionMode = N1SessionMode.Nord;
102
101
  useEffect(function () {
103
- var mounted = true;
104
- // Set the session mode from props
105
- setSessionMode(providedSessionMode);
106
- if (providedSessionMode === N1SessionMode.Nord) {
107
- return;
102
+ if (providedSessionMode !== N1SessionMode.Nord) {
103
+ logger.warn("Only Nord session mode is supported. Received ".concat(providedSessionMode, ", defaulting to Nord."));
108
104
  }
109
- // Load the appropriate SDK
110
- var loadSDK = function () { return __awaiter(_this, void 0, void 0, function () {
111
- var NTSInterface, error_1;
112
- return __generator(this, function (_a) {
113
- switch (_a.label) {
114
- case 0:
115
- // eslint-disable-next-line no-console
116
- logger.debug('Loading NTS SDK');
117
- _a.label = 1;
118
- case 1:
119
- _a.trys.push([1, 3, , 4]);
120
- return [4 /*yield*/, import('@n1xyz/nts-sdk')];
121
- case 2:
122
- NTSInterface = (_a.sent()).NTSInterface;
123
- if (mounted) {
124
- // eslint-disable-next-line no-console
125
- logger.debug('NTS SDK loaded successfully');
126
- setNtsInterface(new NTSInterface(process.env.NTS_URL));
127
- }
128
- return [3 /*break*/, 4];
129
- case 3:
130
- error_1 = _a.sent();
131
- if (mounted) {
132
- // eslint-disable-next-line no-console
133
- logger.error('Error loading NTS SDK:', error_1);
134
- }
135
- return [3 /*break*/, 4];
136
- case 4: return [2 /*return*/];
137
- }
138
- });
139
- }); };
140
- loadSDK();
141
- return function () {
142
- mounted = false;
143
- };
144
- }, [providedSessionMode, onError]);
145
- // Separate effect to handle loading state based on both SDKs
105
+ }, [providedSessionMode]);
146
106
  useEffect(function () {
147
- var isDynamicReady = dynamicSdkHasLoaded || providedSessionMode === N1SessionMode.Nord;
148
- var isNtsReady = ntsInterface || providedSessionMode === N1SessionMode.Nord;
149
- setLoading(!isDynamicReady || !isNtsReady);
150
- }, [dynamicSdkHasLoaded, ntsInterface, providedSessionMode]);
107
+ var isDynamicReady = Boolean(dynamicSdkHasLoaded);
108
+ setLoading(!isDynamicReady);
109
+ }, [dynamicSdkHasLoaded, setLoading]);
151
110
  var handleError = useCallback(function (error) {
152
111
  onError === null || onError === void 0 ? void 0 : onError(error);
153
112
  }, [onError]);
@@ -170,6 +129,53 @@ export function N1WalletProvider(_a) {
170
129
  }
171
130
  });
172
131
  }
132
+ var blockModalReopen = useCallback(function (duration) {
133
+ if (duration === void 0) { duration = 600; }
134
+ var unblockAt = Date.now() + duration;
135
+ logger.debug('blockModalReopen invoked', { duration: duration, unblockAt: unblockAt });
136
+ nextOpenAllowedAtRef.current = Date.now() + duration;
137
+ }, []);
138
+ var setShowLogin = useCallback(function (next) {
139
+ setShowLoginState(function (prev) {
140
+ logger.debug('setShowLogin invoked', {
141
+ next: next,
142
+ prev: prev,
143
+ now: Date.now(),
144
+ nextOpenAllowed: nextOpenAllowedAtRef.current,
145
+ });
146
+ if (next === prev) {
147
+ return prev;
148
+ }
149
+ if (next) {
150
+ logger.debug('setShowLogin opening request stack trace', {
151
+ stack: new Error('setShowLogin stack').stack,
152
+ });
153
+ if (Date.now() < nextOpenAllowedAtRef.current) {
154
+ logger.debug('setShowLogin blocked by cooldown', {
155
+ next: next,
156
+ prev: prev,
157
+ });
158
+ return prev;
159
+ }
160
+ logger.debug('setShowLogin opening modal');
161
+ return true;
162
+ }
163
+ logger.debug('setShowLogin closing modal');
164
+ blockModalReopen();
165
+ return false;
166
+ });
167
+ }, [blockModalReopen]);
168
+ var startDepositFlow = useCallback(function () {
169
+ if (!nordUser || !nordUser.sessionId) {
170
+ logger.warn('startDepositFlow called without an authenticated Nord session; falling back to regular flow');
171
+ setShowLogin(true);
172
+ return false;
173
+ }
174
+ setStartClosingLogin(false);
175
+ setDepositFlowRequestId(function (prev) { return prev + 1; });
176
+ setShowLogin(true);
177
+ return true;
178
+ }, [nordUser, setShowLogin, setStartClosingLogin]);
173
179
  // Create the wallet context value
174
180
  var walletContextValue = {
175
181
  address: address,
@@ -177,10 +183,11 @@ export function N1WalletProvider(_a) {
177
183
  balances: balances,
178
184
  chain: chain,
179
185
  isConnected: isConnected,
180
- ntsInterface: ntsInterface,
181
186
  sessionMode: sessionMode,
182
187
  sessionPubKey: sessionPubKey,
183
188
  setShowLogin: setShowLogin,
189
+ startDepositFlow: startDepositFlow,
190
+ setViewMode: setViewMode,
184
191
  showLogin: showLogin,
185
192
  signMessageWithSessionKey: signMessageWithSessionKey,
186
193
  signMessageWithWalletKey: signMessageWithWalletKey,
@@ -190,7 +197,6 @@ export function N1WalletProvider(_a) {
190
197
  viewMode: viewMode,
191
198
  walletPubKey: walletPubKey,
192
199
  throwTestError: throwTestError,
193
- faucetUrl: faucetUrl,
194
200
  nord: nord,
195
201
  nordUser: nordUser,
196
202
  };
@@ -209,10 +215,8 @@ export function N1WalletProvider(_a) {
209
215
  setDynamicWallet: setDynamicWallet,
210
216
  setIsConnected: setIsConnected,
211
217
  setLoading: setLoading,
212
- setNtsInterface: setNtsInterface,
213
- setSessionMode: setSessionMode,
218
+ blockModalReopen: blockModalReopen,
214
219
  setSessionPubKey: setSessionPubKey,
215
- setShowSidebar: setShowSidebar,
216
220
  setSignMessageWithSessionKey: setSignMessageWithSessionKey,
217
221
  setSignMessageWithWalletKey: setSignMessageWithWalletKey,
218
222
  setSignTransactionWithWalletKey: setSignTransactionWithWalletKey,
@@ -221,15 +225,14 @@ export function N1WalletProvider(_a) {
221
225
  setUserChain: setUserChain,
222
226
  setViewMode: setViewMode,
223
227
  setWalletPubKey: setWalletPubKey,
224
- showSidebar: showSidebar,
225
228
  startClosingLogin: startClosingLogin,
226
229
  showDynamicWidget: showDynamicWidget,
227
230
  setShowDynamicWidget: setShowDynamicWidget,
228
- darkMode: darkMode,
229
231
  sessionMode: sessionMode,
230
- faucetUrl: faucetUrl,
231
232
  setNordUser: setNordUser,
233
+ depositFlowRequestId: depositFlowRequestId,
232
234
  };
233
- return (_jsx(WalletErrorBoundary, { onError: handleError, children: _jsx(N1WalletContext.Provider, { value: walletContextValue, children: _jsx(N1InternalWalletContext.Provider, { value: __assign(__assign({}, internalWalletContextValue), { skipFinalScreen: skipFinalScreen }), children: sessionMode === N1SessionMode.Nord ? (_jsx(NordWrapper, { children: _jsx(NordProvider, { children: _jsxs(_Fragment, { children: [children, _jsxs(root.div, { children: [_jsx("style", { children: injectedCss }), _jsx(N1WalletModal, {})] }), _jsx(Suspense, { fallback: null, children: _jsx(LazyWalletProvider, {}) })] }) }) })) : (_jsxs(_Fragment, { children: [children, _jsxs(root.div, { children: [_jsx("style", { children: injectedCss }), _jsx(N1WalletModal, {})] }), _jsx(Suspense, { fallback: null, children: _jsx(LazyWalletProvider, {}) })] })) }) }) }));
235
+ var ModalContent = function () { return (_jsxs(root.div, { children: [_jsx("style", { children: injectedCss }), _jsx(N1WalletModal, {})] })); };
236
+ return (_jsx(WalletErrorBoundary, { onError: handleError, children: _jsx(N1WalletContext.Provider, { value: walletContextValue, children: _jsx(N1InternalWalletContext.Provider, { value: __assign(__assign({}, internalWalletContextValue), { skipFinalScreen: skipFinalScreen }), children: _jsx(NordWrapper, { children: _jsx(NordProvider, { children: _jsxs(_Fragment, { children: [children, _jsx(Suspense, { fallback: _jsx(ModalContent, {}), children: _jsx(LazyWalletProvider, { children: _jsx(ModalContent, {}) }) })] }) }) }) }) }) }));
234
237
  }
235
238
  //# sourceMappingURL=N1WalletProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"N1WalletProvider.js","sourceRoot":"","sources":["../../src/Provider/N1WalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React, { Suspense, useCallback, useEffect, useState } from 'react';\nimport root from 'react-shadow';\nimport { N1WalletModal } from '../Modal/N1WalletModal';\nimport { NordProvider } from '../Modal/NordFlow/context';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport { logger } from '../utils/logger';\nimport WalletErrorBoundary from './WalletErrorBoundary';\nimport { N1InternalWalletContext, N1WalletContext } from './context';\nimport { useNordUserInitialization } from './hooks/useNordUserInitialization';\nimport {\n Balance,\n N1ModalViewMode,\n N1SessionMode,\n N1WalletProviderProps,\n} from './types';\n\nconst LazyWalletProvider = React.lazy(() =>\n import('./LazyWalletProvider').then((mod) => ({\n default: mod.LazyWalletProvider,\n }))\n);\n\nimport mainCss from '../embedded-main-css';\n\nfunction NordWrapper({ children }: { children: React.ReactNode }) {\n\n // Use the extracted hook for NordUser initialization\n useNordUserInitialization();\n return (\n <>\n {children}\n </>\n )\n}\n\nexport function N1WalletProvider({\n children,\n providedSessionMode,\n appId,\n darkMode = true,\n onError,\n faucetUrl,\n nord,\n colorOverrides,\n skipFinalScreen,\n}: N1WalletProviderProps) {\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const [ntsInterface, setNtsInterface] = useState<any>(null);\n const [sessionPubKey, setSessionPubKey] = useState<Uint8Array | null>(null);\n const [walletPubKey, setWalletPubKey] = useState<Uint8Array | null>(null);\n const [userChain, setUserChain] = useState<string | null>(null);\n const [username, setUsername] = useState<string>('');\n const [signMessageWithSessionKey, setSignMessageWithSessionKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signMessageWithWalletKey, setSignMessageWithWalletKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signTransactionWithWalletKey, setSignTransactionWithWalletKey] =\n useState<((transaction: any) => Promise<any>) | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [viewMode, setViewMode] = useState<N1ModalViewMode>(\n N1ModalViewMode.Connect\n );\n const [nordUser, setNordUser] = useState<any>(null);\n\n // dynamic\n const [balances, setBalances] = useState<Balance[]>([]);\n const [chain, setChain] = useState<string>('');\n const [dynamicSdkHasLoaded, setDynamicSdkHasLoaded] = useState<any>(null);\n const [sessionMode, setSessionMode] = useState<N1SessionMode | null>(null);\n\n const [showLogin, setShowLogin] = useState<boolean>(false);\n const [startClosingLogin, setStartClosingLogin] = useState<boolean>(false);\n const [showSidebar, setShowSidebar] = useState<boolean>(false);\n const [showDynamicWidget, setShowDynamicWidget] = useState<any>(null);\n\n // dynamic\n const [address, setAddress] = useState<string>('');\n const [oldAddress, setOldAddress] = useState<string>('');\n const [dynamicHandleLogOut, setDynamicHandleLogOut] = useState<any>(null);\n const [dynamicWallet, setDynamicWallet] = useState<any>(null);\n\n // Combine SDK loading and initialization into a single effect\n useEffect(() => {\n let mounted = true;\n\n // Set the session mode from props\n setSessionMode(providedSessionMode);\n if (providedSessionMode === N1SessionMode.Nord) {\n return\n }\n\n // Load the appropriate SDK\n const loadSDK = async () => {\n // eslint-disable-next-line no-console\n logger.debug('Loading NTS SDK');\n\n try {\n const { NTSInterface } = await import('@n1xyz/nts-sdk');\n if (mounted) {\n // eslint-disable-next-line no-console\n logger.debug('NTS SDK loaded successfully');\n setNtsInterface(new NTSInterface(process.env.NTS_URL!));\n }\n } catch (error) {\n if (mounted) {\n // eslint-disable-next-line no-console\n logger.error('Error loading NTS SDK:', error);\n }\n }\n };\n\n loadSDK();\n\n return () => {\n mounted = false;\n };\n }, [providedSessionMode, onError]);\n\n // Separate effect to handle loading state based on both SDKs\n useEffect(() => {\n const isDynamicReady =\n dynamicSdkHasLoaded || providedSessionMode === N1SessionMode.Nord;\n const isNtsReady =\n ntsInterface || providedSessionMode === N1SessionMode.Nord;\n\n setLoading(!isDynamicReady || !isNtsReady);\n }, [dynamicSdkHasLoaded, ntsInterface, providedSessionMode]);\n\n const handleError = useCallback(\n (error: WalletError) => {\n onError?.(error);\n },\n [onError]\n );\n\n const throwTestError = async () => {\n handleError(\n new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Test error: No compatible wallet was found'\n )\n );\n };\n\n // Prepare CSS with color overrides if provided\n let injectedCss = mainCss;\n if (Array.isArray(colorOverrides) && colorOverrides.length > 0) {\n // Apply all color overrides in order\n colorOverrides.forEach(({ color, replacement }) => {\n if (color && replacement) {\n // Replace all instances, case-insensitive\n const regex = new RegExp(color.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gi');\n injectedCss = injectedCss.replace(regex, replacement);\n }\n });\n }\n\n // Create the wallet context value\n const walletContextValue = {\n address,\n appId,\n balances,\n chain,\n isConnected,\n ntsInterface,\n sessionMode,\n sessionPubKey,\n setShowLogin,\n showLogin,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n userChain,\n username,\n viewMode,\n walletPubKey,\n throwTestError,\n faucetUrl,\n nord,\n nordUser,\n };\n\n // Create the internal wallet context value\n const internalWalletContextValue = {\n dynamicHandleLogOut,\n dynamicWallet,\n loading,\n dynamicSdkHasLoaded,\n handleError,\n setDynamicSdkHasLoaded,\n setAddress,\n setBalances,\n setChain,\n setDynamicHandleLogOut,\n setDynamicWallet,\n setIsConnected,\n setLoading,\n setNtsInterface,\n setSessionMode,\n setSessionPubKey,\n setShowSidebar,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUsername,\n setUserChain,\n setViewMode,\n setWalletPubKey,\n showSidebar,\n startClosingLogin,\n showDynamicWidget,\n setShowDynamicWidget,\n darkMode,\n sessionMode,\n faucetUrl,\n setNordUser,\n };\n\n return (\n <WalletErrorBoundary onError={handleError}>\n <N1WalletContext.Provider value={walletContextValue}>\n <N1InternalWalletContext.Provider\n value={{\n ...internalWalletContextValue,\n skipFinalScreen, // make available to modal context tree\n }}\n >\n {sessionMode === N1SessionMode.Nord ? (\n <NordWrapper>\n <NordProvider>\n <>\n {children}\n <root.div>\n <style>{injectedCss}</style>\n <N1WalletModal />\n </root.div>\n <Suspense fallback={null}>\n <LazyWalletProvider />\n </Suspense>\n </>\n </NordProvider>\n </NordWrapper>\n ) : (\n <>\n {children}\n <root.div>\n <style>{injectedCss}</style>\n <N1WalletModal />\n </root.div>\n <Suspense fallback={null}>\n <LazyWalletProvider />\n </Suspense>\n </>\n )}\n </N1InternalWalletContext.Provider>\n </N1WalletContext.Provider>\n </WalletErrorBoundary>\n );\n}\n"]}
1
+ {"version":3,"file":"N1WalletProvider.js","sourceRoot":"","sources":["../../src/Provider/N1WalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport '../polyfills/windowEthereumGuard';\n\nimport React, { Suspense, useCallback, useEffect, useRef, useState } from 'react';\nimport root from 'react-shadow';\nimport { N1WalletModal } from '../Modal/N1WalletModal';\nimport { NordProvider } from '../Modal/NordFlow/context';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport { logger } from '../utils/logger';\nimport WalletErrorBoundary from './WalletErrorBoundary';\nimport { N1InternalWalletContext, N1WalletContext } from './context';\nimport { useNordUserInitialization } from './hooks/useNordUserInitialization';\nimport {\n Balance,\n N1ModalViewMode,\n N1SessionMode,\n N1WalletProviderProps,\n} from './types';\n\nconst LazyWalletProvider = React.lazy(() =>\n import('./LazyWalletProvider').then((mod) => ({\n default: mod.LazyWalletProvider,\n }))\n);\n\nimport mainCss from '../embedded-main-css';\n\nfunction NordWrapper({ children }: { children: React.ReactNode }) {\n\n // Use the extracted hook for NordUser initialization\n useNordUserInitialization();\n return (\n <>\n {children}\n </>\n )\n}\n\nexport function N1WalletProvider({\n children,\n providedSessionMode,\n appId,\n onError,\n nord,\n colorOverrides,\n skipFinalScreen,\n}: N1WalletProviderProps) {\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const [sessionPubKey, setSessionPubKey] = useState<Uint8Array | null>(null);\n const [walletPubKey, setWalletPubKey] = useState<Uint8Array | null>(null);\n const [userChain, setUserChain] = useState<string | null>(null);\n const [username, setUsername] = useState<string>('');\n const [signMessageWithSessionKey, setSignMessageWithSessionKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signMessageWithWalletKey, setSignMessageWithWalletKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signTransactionWithWalletKey, setSignTransactionWithWalletKey] =\n useState<((transaction: any) => Promise<any>) | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [viewMode, setViewMode] = useState<N1ModalViewMode>(\n N1ModalViewMode.Automatic\n );\n const [nordUser, setNordUser] = useState<any>(null);\n\n // dynamic\n const [balances, setBalances] = useState<Balance[]>([]);\n const [chain, setChain] = useState<string>('');\n const [dynamicSdkHasLoaded, setDynamicSdkHasLoaded] = useState<any>(null);\n\n const [showLogin, setShowLoginState] = useState<boolean>(false);\n const [startClosingLogin, setStartClosingLogin] = useState<boolean>(false);\n const [showDynamicWidget, setShowDynamicWidget] = useState<any>(null);\n const [depositFlowRequestId, setDepositFlowRequestId] = useState(0);\n const nextOpenAllowedAtRef = useRef(0);\n\n // dynamic\n const [address, setAddress] = useState<string>('');\n const [dynamicHandleLogOut, setDynamicHandleLogOut] = useState<any>(null);\n const [dynamicWallet, setDynamicWallet] = useState<any>(null);\n const sessionMode = N1SessionMode.Nord;\n\n useEffect(() => {\n if (providedSessionMode !== N1SessionMode.Nord) {\n logger.warn(\n `Only Nord session mode is supported. Received ${providedSessionMode}, defaulting to Nord.`\n );\n }\n }, [providedSessionMode]);\n\n useEffect(() => {\n const isDynamicReady = Boolean(dynamicSdkHasLoaded);\n setLoading(!isDynamicReady);\n }, [dynamicSdkHasLoaded, setLoading]);\n\n const handleError = useCallback(\n (error: WalletError) => {\n onError?.(error);\n },\n [onError]\n );\n\n const throwTestError = async () => {\n handleError(\n new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Test error: No compatible wallet was found'\n )\n );\n };\n\n // Prepare CSS with color overrides if provided\n let injectedCss = mainCss;\n if (Array.isArray(colorOverrides) && colorOverrides.length > 0) {\n // Apply all color overrides in order\n colorOverrides.forEach(({ color, replacement }) => {\n if (color && replacement) {\n // Replace all instances, case-insensitive\n const regex = new RegExp(color.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gi');\n injectedCss = injectedCss.replace(regex, replacement);\n }\n });\n }\n\n const blockModalReopen = useCallback((duration: number = 600) => {\n const unblockAt = Date.now() + duration;\n logger.debug('blockModalReopen invoked', { duration, unblockAt });\n nextOpenAllowedAtRef.current = Date.now() + duration;\n }, []);\n\n const setShowLogin = useCallback(\n (next: boolean) => {\n setShowLoginState((prev) => {\n logger.debug('setShowLogin invoked', {\n next,\n prev,\n now: Date.now(),\n nextOpenAllowed: nextOpenAllowedAtRef.current,\n });\n\n if (next === prev) {\n return prev;\n }\n\n if (next) {\n logger.debug('setShowLogin opening request stack trace', {\n stack: new Error('setShowLogin stack').stack,\n });\n if (Date.now() < nextOpenAllowedAtRef.current) {\n logger.debug('setShowLogin blocked by cooldown', {\n next,\n prev,\n });\n return prev;\n }\n logger.debug('setShowLogin opening modal');\n return true;\n }\n\n logger.debug('setShowLogin closing modal');\n blockModalReopen();\n return false;\n });\n },\n [blockModalReopen]\n );\n\n const startDepositFlow = useCallback(() => {\n if (!nordUser || !nordUser.sessionId) {\n logger.warn(\n 'startDepositFlow called without an authenticated Nord session; falling back to regular flow'\n );\n setShowLogin(true);\n return false;\n }\n\n setStartClosingLogin(false);\n setDepositFlowRequestId((prev) => prev + 1);\n setShowLogin(true);\n return true;\n }, [nordUser, setShowLogin, setStartClosingLogin]);\n\n // Create the wallet context value\n const walletContextValue = {\n address,\n appId,\n balances,\n chain,\n isConnected,\n sessionMode,\n sessionPubKey,\n setShowLogin,\n startDepositFlow,\n setViewMode,\n showLogin,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n userChain,\n username,\n viewMode,\n walletPubKey,\n throwTestError,\n nord,\n nordUser,\n };\n\n // Create the internal wallet context value\n const internalWalletContextValue = {\n dynamicHandleLogOut,\n dynamicWallet,\n loading,\n dynamicSdkHasLoaded,\n handleError,\n setDynamicSdkHasLoaded,\n setAddress,\n setBalances,\n setChain,\n setDynamicHandleLogOut,\n setDynamicWallet,\n setIsConnected,\n setLoading,\n blockModalReopen,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUsername,\n setUserChain,\n setViewMode,\n setWalletPubKey,\n startClosingLogin,\n showDynamicWidget,\n setShowDynamicWidget,\n sessionMode,\n setNordUser,\n depositFlowRequestId,\n };\n\n const ModalContent = () => (\n <root.div>\n <style>{injectedCss}</style>\n <N1WalletModal />\n </root.div>\n );\n\n return (\n <WalletErrorBoundary onError={handleError}>\n <N1WalletContext.Provider value={walletContextValue}>\n <N1InternalWalletContext.Provider\n value={{\n ...internalWalletContextValue,\n skipFinalScreen, // make available to modal context tree\n }}\n >\n <NordWrapper>\n <NordProvider>\n <>\n {children}\n <Suspense fallback={<ModalContent />}>\n <LazyWalletProvider>\n <ModalContent />\n </LazyWalletProvider>\n </Suspense>\n </>\n </NordProvider>\n </NordWrapper>\n </N1InternalWalletContext.Provider>\n </N1WalletContext.Provider>\n </WalletErrorBoundary>\n );\n}\n"]}
@@ -3,5 +3,5 @@ interface ShadowRootWrapperProps {
3
3
  children: React.ReactNode;
4
4
  injectedCss: string;
5
5
  }
6
- export declare function ShadowRootWrapper({ children, injectedCss }: ShadowRootWrapperProps): JSX.Element;
6
+ export declare function ShadowRootWrapper({ children, injectedCss }: ShadowRootWrapperProps): import("react/jsx-runtime").JSX.Element;
7
7
  export {};
@@ -1,10 +1,17 @@
1
1
  import React from 'react';
2
2
  import { WalletError } from '../errors/types';
3
- declare class WalletErrorBoundary extends React.Component<{
3
+ type WalletErrorBoundaryProps = {
4
4
  children: React.ReactNode;
5
5
  onError: (error: WalletError) => void;
6
- }> {
6
+ };
7
+ type WalletErrorBoundaryState = {
8
+ hasError: boolean;
9
+ };
10
+ declare class WalletErrorBoundary extends React.Component<WalletErrorBoundaryProps, WalletErrorBoundaryState> {
11
+ state: WalletErrorBoundaryState;
12
+ static getDerivedStateFromError(): WalletErrorBoundaryState;
7
13
  componentDidCatch(error: Error): void;
14
+ componentDidUpdate(prevProps: WalletErrorBoundaryProps, prevState: WalletErrorBoundaryState): void;
8
15
  render(): React.ReactNode;
9
16
  }
10
17
  export default WalletErrorBoundary;