@ixo/editor 6.32.1 → 6.34.0

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 (526) hide show
  1. package/dist/BidConfig-YLGSEIOS.js +154 -0
  2. package/dist/BidConfig-YLGSEIOS.js.map +1 -0
  3. package/dist/BidFlowDetail-TJCJBJZZ.js +365 -0
  4. package/dist/BidFlowDetail-TJCJBJZZ.js.map +1 -0
  5. package/dist/CalendarEventCreateConfig-J2LU6LJO.js +155 -0
  6. package/dist/CalendarEventCreateConfig-J2LU6LJO.js.map +1 -0
  7. package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js +174 -0
  8. package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js.map +1 -0
  9. package/dist/CalendarEventListConfig-GQNNF4ZB.js +116 -0
  10. package/dist/CalendarEventListConfig-GQNNF4ZB.js.map +1 -0
  11. package/dist/CalendarEventListFlowDetail-SSRTOXIX.js +58 -0
  12. package/dist/CalendarEventListFlowDetail-SSRTOXIX.js.map +1 -0
  13. package/dist/CalendarEventUpdateConfig-KACZA6GH.js +133 -0
  14. package/dist/CalendarEventUpdateConfig-KACZA6GH.js.map +1 -0
  15. package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js +155 -0
  16. package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js.map +1 -0
  17. package/dist/ClaimConfig-3HKPGK55.js +200 -0
  18. package/dist/ClaimConfig-3HKPGK55.js.map +1 -0
  19. package/dist/ClaimFlowDetail-UVEQMEI5.js +641 -0
  20. package/dist/ClaimFlowDetail-UVEQMEI5.js.map +1 -0
  21. package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js +149 -0
  22. package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js.map +1 -0
  23. package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js +647 -0
  24. package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js.map +1 -0
  25. package/dist/CollectionUsersConfig-RI2X3YY2.js +271 -0
  26. package/dist/CollectionUsersConfig-RI2X3YY2.js.map +1 -0
  27. package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js +1276 -0
  28. package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js.map +1 -0
  29. package/dist/CredentialStoreConfig-G66AQDGZ.js +75 -0
  30. package/dist/CredentialStoreConfig-G66AQDGZ.js.map +1 -0
  31. package/dist/CredentialStoreFlowDetail-FL7QAM3S.js +99 -0
  32. package/dist/CredentialStoreFlowDetail-FL7QAM3S.js.map +1 -0
  33. package/dist/DesignPodConfig-LJ7H2CZ6.js +8 -0
  34. package/dist/DesignPodConfig-LJ7H2CZ6.js.map +1 -0
  35. package/dist/DesignPodFlowDetail-JHJWGNVY.js +309 -0
  36. package/dist/DesignPodFlowDetail-JHJWGNVY.js.map +1 -0
  37. package/dist/DomainCardPreviewConfig-Q3X5M4WF.js +37 -0
  38. package/dist/DomainCardPreviewConfig-Q3X5M4WF.js.map +1 -0
  39. package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js +131 -0
  40. package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js.map +1 -0
  41. package/dist/DomainIndexerLookupConfig-N4VONQUY.js +41 -0
  42. package/dist/DomainIndexerLookupConfig-N4VONQUY.js.map +1 -0
  43. package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js +70 -0
  44. package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js.map +1 -0
  45. package/dist/DomainSignConfig-XFIXROVK.js +47 -0
  46. package/dist/DomainSignConfig-XFIXROVK.js.map +1 -0
  47. package/dist/DomainSignFlowDetail-BXZ6JBPR.js +206 -0
  48. package/dist/DomainSignFlowDetail-BXZ6JBPR.js.map +1 -0
  49. package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js +101 -0
  50. package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js.map +1 -0
  51. package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js +147 -0
  52. package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js.map +1 -0
  53. package/dist/EmailSendConfig-YEGZ5Q77.js +215 -0
  54. package/dist/EmailSendConfig-YEGZ5Q77.js.map +1 -0
  55. package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js +150 -0
  56. package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js.map +1 -0
  57. package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js +120 -0
  58. package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js.map +1 -0
  59. package/dist/EntitySingleSelectionConfig-DL57KNKM.js +30 -0
  60. package/dist/EntitySingleSelectionConfig-DL57KNKM.js.map +1 -0
  61. package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js +118 -0
  62. package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js.map +1 -0
  63. package/dist/EntityTransferConfig-JVZ3H35B.js +62 -0
  64. package/dist/EntityTransferConfig-JVZ3H35B.js.map +1 -0
  65. package/dist/EntityTransferFlowDetail-XEXM34XB.js +132 -0
  66. package/dist/EntityTransferFlowDetail-XEXM34XB.js.map +1 -0
  67. package/dist/EvalEngineConfig-CHC4IRN3.js +464 -0
  68. package/dist/EvalEngineConfig-CHC4IRN3.js.map +1 -0
  69. package/dist/EvalEngineFlowDetail-PUFRNO4U.js +4291 -0
  70. package/dist/EvalEngineFlowDetail-PUFRNO4U.js.map +1 -0
  71. package/dist/EvaluateBidConfig-OE4CM43G.js +151 -0
  72. package/dist/EvaluateBidConfig-OE4CM43G.js.map +1 -0
  73. package/dist/EvaluateBidFlowDetail-2S2N4YTW.js +564 -0
  74. package/dist/EvaluateBidFlowDetail-2S2N4YTW.js.map +1 -0
  75. package/dist/EvaluateClaimConfig-3D4F5LHU.js +297 -0
  76. package/dist/EvaluateClaimConfig-3D4F5LHU.js.map +1 -0
  77. package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js +2237 -0
  78. package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js.map +1 -0
  79. package/dist/FormSubmitConfig-UFZYMLUN.js +59 -0
  80. package/dist/FormSubmitConfig-UFZYMLUN.js.map +1 -0
  81. package/dist/FormSubmitFlowDetail-IAHDJS6P.js +169 -0
  82. package/dist/FormSubmitFlowDetail-IAHDJS6P.js.map +1 -0
  83. package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js +166 -0
  84. package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js.map +1 -0
  85. package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js +88 -0
  86. package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js.map +1 -0
  87. package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js +88 -0
  88. package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js.map +1 -0
  89. package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js +83 -0
  90. package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js.map +1 -0
  91. package/dist/GovernanceConfigConfig-V3WM4WBP.js +30 -0
  92. package/dist/GovernanceConfigConfig-V3WM4WBP.js.map +1 -0
  93. package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js +267 -0
  94. package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js.map +1 -0
  95. package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js +113 -0
  96. package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js.map +1 -0
  97. package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js +144 -0
  98. package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js.map +1 -0
  99. package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js +72 -0
  100. package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js.map +1 -0
  101. package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js +104 -0
  102. package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js.map +1 -0
  103. package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js +68 -0
  104. package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js.map +1 -0
  105. package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js +78 -0
  106. package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js.map +1 -0
  107. package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js +98 -0
  108. package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js.map +1 -0
  109. package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js +94 -0
  110. package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js.map +1 -0
  111. package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js +96 -0
  112. package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js.map +1 -0
  113. package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js +68 -0
  114. package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js.map +1 -0
  115. package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js +93 -0
  116. package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js.map +1 -0
  117. package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js +84 -0
  118. package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js.map +1 -0
  119. package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js +104 -0
  120. package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js.map +1 -0
  121. package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js +42 -0
  122. package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js.map +1 -0
  123. package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js +240 -0
  124. package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js.map +1 -0
  125. package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js +69 -0
  126. package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js.map +1 -0
  127. package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js +71 -0
  128. package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js.map +1 -0
  129. package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js +130 -0
  130. package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js.map +1 -0
  131. package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js +42 -0
  132. package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js.map +1 -0
  133. package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js +165 -0
  134. package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js.map +1 -0
  135. package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js +123 -0
  136. package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js.map +1 -0
  137. package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js +84 -0
  138. package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js.map +1 -0
  139. package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js +111 -0
  140. package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js.map +1 -0
  141. package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js +66 -0
  142. package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js.map +1 -0
  143. package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js +133 -0
  144. package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js.map +1 -0
  145. package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js +42 -0
  146. package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js.map +1 -0
  147. package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js +182 -0
  148. package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js.map +1 -0
  149. package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js +155 -0
  150. package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js.map +1 -0
  151. package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js +56 -0
  152. package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js.map +1 -0
  153. package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js +117 -0
  154. package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js.map +1 -0
  155. package/dist/HarvestConfig-AIGOGBFR.js +56 -0
  156. package/dist/HarvestConfig-AIGOGBFR.js.map +1 -0
  157. package/dist/HarvestFlowDetail-X3RUH3X3.js +131 -0
  158. package/dist/HarvestFlowDetail-X3RUH3X3.js.map +1 -0
  159. package/dist/HttpRequestConfig-OQEJIIJY.js +194 -0
  160. package/dist/HttpRequestConfig-OQEJIIJY.js.map +1 -0
  161. package/dist/HttpRequestFlowDetail-JVLV533Z.js +116 -0
  162. package/dist/HttpRequestFlowDetail-JVLV533Z.js.map +1 -0
  163. package/dist/IdentityCreateConfig-ZBUOJ6AL.js +94 -0
  164. package/dist/IdentityCreateConfig-ZBUOJ6AL.js.map +1 -0
  165. package/dist/IdentityCreateFlowDetail-WGKO43IH.js +83 -0
  166. package/dist/IdentityCreateFlowDetail-WGKO43IH.js.map +1 -0
  167. package/dist/IidCreateConfig-RRV2DYXI.js +75 -0
  168. package/dist/IidCreateConfig-RRV2DYXI.js.map +1 -0
  169. package/dist/IidCreateFlowDetail-6M32S6XS.js +57 -0
  170. package/dist/IidCreateFlowDetail-6M32S6XS.js.map +1 -0
  171. package/dist/KycVerifyConfig-VCG65K5K.js +65 -0
  172. package/dist/KycVerifyConfig-VCG65K5K.js.map +1 -0
  173. package/dist/KycVerifyFlowDetail-EWOMXSD3.js +421 -0
  174. package/dist/KycVerifyFlowDetail-EWOMXSD3.js.map +1 -0
  175. package/dist/ListDomainFlowsConfig-3JZEPTOJ.js +37 -0
  176. package/dist/ListDomainFlowsConfig-3JZEPTOJ.js.map +1 -0
  177. package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js +257 -0
  178. package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js.map +1 -0
  179. package/dist/LoadBatchesConfig-IMODIWRT.js +38 -0
  180. package/dist/LoadBatchesConfig-IMODIWRT.js.map +1 -0
  181. package/dist/LoadBatchesFlowDetail-GB24T76O.js +101 -0
  182. package/dist/LoadBatchesFlowDetail-GB24T76O.js.map +1 -0
  183. package/dist/MatrixDmConfig-NBII27CS.js +120 -0
  184. package/dist/MatrixDmConfig-NBII27CS.js.map +1 -0
  185. package/dist/MatrixRegisterConfig-N2U4FBYF.js +62 -0
  186. package/dist/MatrixRegisterConfig-N2U4FBYF.js.map +1 -0
  187. package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js +86 -0
  188. package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js.map +1 -0
  189. package/dist/MemberMultiSelectConfig-E7WUB2WD.js +30 -0
  190. package/dist/MemberMultiSelectConfig-E7WUB2WD.js.map +1 -0
  191. package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js +392 -0
  192. package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js.map +1 -0
  193. package/dist/OracleConfig-R7TDTTKN.js +56 -0
  194. package/dist/OracleConfig-R7TDTTKN.js.map +1 -0
  195. package/dist/OracleConfigureOracleConfig-QFF74X3N.js +198 -0
  196. package/dist/OracleConfigureOracleConfig-QFF74X3N.js.map +1 -0
  197. package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js +255 -0
  198. package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js.map +1 -0
  199. package/dist/OracleContractConfig-PHY5L7W2.js +38 -0
  200. package/dist/OracleContractConfig-PHY5L7W2.js.map +1 -0
  201. package/dist/OracleContractFlowDetail-M3PM4AU4.js +78 -0
  202. package/dist/OracleContractFlowDetail-M3PM4AU4.js.map +1 -0
  203. package/dist/OracleDeployConfig-QBG76ATZ.js +10 -0
  204. package/dist/OracleDeployConfig-QBG76ATZ.js.map +1 -0
  205. package/dist/OracleDeployFlowDetail-WKTMD2AD.js +231 -0
  206. package/dist/OracleDeployFlowDetail-WKTMD2AD.js.map +1 -0
  207. package/dist/OracleDeploySetupConfig-75XPGFJQ.js +10 -0
  208. package/dist/OracleDeploySetupConfig-75XPGFJQ.js.map +1 -0
  209. package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js +165 -0
  210. package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js.map +1 -0
  211. package/dist/OracleDeployStartConfig-NA6GZ4VQ.js +10 -0
  212. package/dist/OracleDeployStartConfig-NA6GZ4VQ.js.map +1 -0
  213. package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js +89 -0
  214. package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js.map +1 -0
  215. package/dist/OracleFlowDetail-5JCJK3GH.js +76 -0
  216. package/dist/OracleFlowDetail-5JCJK3GH.js.map +1 -0
  217. package/dist/OraclePromptConfig-YBRESISH.js +39 -0
  218. package/dist/OraclePromptConfig-YBRESISH.js.map +1 -0
  219. package/dist/OraclePromptFlowDetail-O3XNK7HY.js +112 -0
  220. package/dist/OraclePromptFlowDetail-O3XNK7HY.js.map +1 -0
  221. package/dist/OracleStoreConfigConfig-TUZWTJMA.js +134 -0
  222. package/dist/OracleStoreConfigConfig-TUZWTJMA.js.map +1 -0
  223. package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js +99 -0
  224. package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js.map +1 -0
  225. package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js +198 -0
  226. package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js.map +1 -0
  227. package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js +220 -0
  228. package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js.map +1 -0
  229. package/dist/OracleStoreSecretsConfig-PQMF7LFT.js +191 -0
  230. package/dist/OracleStoreSecretsConfig-PQMF7LFT.js.map +1 -0
  231. package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js +197 -0
  232. package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js.map +1 -0
  233. package/dist/ProposalCreateConfig-U5IHZNT7.js +161 -0
  234. package/dist/ProposalCreateConfig-U5IHZNT7.js.map +1 -0
  235. package/dist/ProposalCreateFlowDetail-4VZZPAWH.js +235 -0
  236. package/dist/ProposalCreateFlowDetail-4VZZPAWH.js.map +1 -0
  237. package/dist/ProposalVoteConfig-MH4MU7SL.js +150 -0
  238. package/dist/ProposalVoteConfig-MH4MU7SL.js.map +1 -0
  239. package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js +280 -0
  240. package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js.map +1 -0
  241. package/dist/ProtocolSelectConfig-S5U3P6K7.js +48 -0
  242. package/dist/ProtocolSelectConfig-S5U3P6K7.js.map +1 -0
  243. package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js +116 -0
  244. package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js.map +1 -0
  245. package/dist/RetireConfig-MV37WWZ6.js +59 -0
  246. package/dist/RetireConfig-MV37WWZ6.js.map +1 -0
  247. package/dist/RetireFlowDetail-VZ5O4SXI.js +147 -0
  248. package/dist/RetireFlowDetail-VZ5O4SXI.js.map +1 -0
  249. package/dist/SandboxProvisionConfig-ZGG4IRHM.js +46 -0
  250. package/dist/SandboxProvisionConfig-ZGG4IRHM.js.map +1 -0
  251. package/dist/SandboxProvisionFlowDetail-RUY64INV.js +79 -0
  252. package/dist/SandboxProvisionFlowDetail-RUY64INV.js.map +1 -0
  253. package/dist/WalletFundConfig-CMM3EP3B.js +117 -0
  254. package/dist/WalletFundConfig-CMM3EP3B.js.map +1 -0
  255. package/dist/WalletFundFlowDetail-TXWCZA4K.js +279 -0
  256. package/dist/WalletFundFlowDetail-TXWCZA4K.js.map +1 -0
  257. package/dist/WalletGenerateAndFundConfig-364RSEND.js +10 -0
  258. package/dist/WalletGenerateAndFundConfig-364RSEND.js.map +1 -0
  259. package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js +54 -0
  260. package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js.map +1 -0
  261. package/dist/WalletGenerateConfig-YYLCS65G.js +10 -0
  262. package/dist/WalletGenerateConfig-YYLCS65G.js.map +1 -0
  263. package/dist/WalletGenerateFlowDetail-CQCNDGJA.js +53 -0
  264. package/dist/WalletGenerateFlowDetail-CQCNDGJA.js.map +1 -0
  265. package/dist/XeroContactCreateConfig-OWG5PA3B.js +102 -0
  266. package/dist/XeroContactCreateConfig-OWG5PA3B.js.map +1 -0
  267. package/dist/XeroContactCreateFlowDetail-6MAINCF6.js +127 -0
  268. package/dist/XeroContactCreateFlowDetail-6MAINCF6.js.map +1 -0
  269. package/dist/XeroInvoiceCreateConfig-O74RUSZM.js +403 -0
  270. package/dist/XeroInvoiceCreateConfig-O74RUSZM.js.map +1 -0
  271. package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js +631 -0
  272. package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js.map +1 -0
  273. package/dist/XeroInvoiceListConfig-UR3GONBJ.js +113 -0
  274. package/dist/XeroInvoiceListConfig-UR3GONBJ.js.map +1 -0
  275. package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js +58 -0
  276. package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js.map +1 -0
  277. package/dist/XeroPaymentCreateConfig-RPMAIK6E.js +116 -0
  278. package/dist/XeroPaymentCreateConfig-RPMAIK6E.js.map +1 -0
  279. package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js +573 -0
  280. package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js.map +1 -0
  281. package/dist/action-manifest.json +2091 -393
  282. package/dist/chunk-2GAYKKTL.js +9 -0
  283. package/dist/chunk-2GAYKKTL.js.map +1 -0
  284. package/dist/chunk-2WPEATI7.js +315 -0
  285. package/dist/chunk-2WPEATI7.js.map +1 -0
  286. package/dist/chunk-3O42FYT3.js +3333 -0
  287. package/dist/chunk-3O42FYT3.js.map +1 -0
  288. package/dist/chunk-3TUYY4HK.js +20 -0
  289. package/dist/chunk-3TUYY4HK.js.map +1 -0
  290. package/dist/chunk-3XSLBJYI.js +554 -0
  291. package/dist/chunk-3XSLBJYI.js.map +1 -0
  292. package/dist/chunk-4DGCCXD6.js +710 -0
  293. package/dist/chunk-4DGCCXD6.js.map +1 -0
  294. package/dist/chunk-4NAFQF6V.js +11 -0
  295. package/dist/chunk-4NAFQF6V.js.map +1 -0
  296. package/dist/chunk-4PONO4US.js +799 -0
  297. package/dist/chunk-4PONO4US.js.map +1 -0
  298. package/dist/chunk-4TMOIK5M.js +21 -0
  299. package/dist/chunk-4TMOIK5M.js.map +1 -0
  300. package/dist/chunk-5IH3VC5I.js +102 -0
  301. package/dist/chunk-5IH3VC5I.js.map +1 -0
  302. package/dist/chunk-5NTKDOP6.js +89 -0
  303. package/dist/chunk-5NTKDOP6.js.map +1 -0
  304. package/dist/chunk-5O2SFRGU.js +18 -0
  305. package/dist/chunk-5O2SFRGU.js.map +1 -0
  306. package/dist/chunk-632JLECF.js +55 -0
  307. package/dist/chunk-632JLECF.js.map +1 -0
  308. package/dist/chunk-676HDB7K.js +95 -0
  309. package/dist/chunk-676HDB7K.js.map +1 -0
  310. package/dist/chunk-6ESTNTSH.js +223 -0
  311. package/dist/chunk-6ESTNTSH.js.map +1 -0
  312. package/dist/chunk-6GKJR52N.js +15 -0
  313. package/dist/chunk-6GKJR52N.js.map +1 -0
  314. package/dist/chunk-6L4ZIKYU.js +23 -0
  315. package/dist/chunk-6L4ZIKYU.js.map +1 -0
  316. package/dist/chunk-76YX5R4L.js +11 -0
  317. package/dist/chunk-76YX5R4L.js.map +1 -0
  318. package/dist/chunk-7J3GFMN3.js +32 -0
  319. package/dist/chunk-7J3GFMN3.js.map +1 -0
  320. package/dist/chunk-7LSARC2G.js +102 -0
  321. package/dist/chunk-7LSARC2G.js.map +1 -0
  322. package/dist/chunk-7W7UUUIE.js +609 -0
  323. package/dist/chunk-7W7UUUIE.js.map +1 -0
  324. package/dist/chunk-7ZLW7H37.js +21 -0
  325. package/dist/chunk-7ZLW7H37.js.map +1 -0
  326. package/dist/chunk-AAZHI22G.js +18 -0
  327. package/dist/chunk-AAZHI22G.js.map +1 -0
  328. package/dist/chunk-ACNE455I.js +76 -0
  329. package/dist/chunk-ACNE455I.js.map +1 -0
  330. package/dist/chunk-BKLSSLPZ.js +27 -0
  331. package/dist/chunk-BKLSSLPZ.js.map +1 -0
  332. package/dist/chunk-BZ7UPUTY.js +417 -0
  333. package/dist/chunk-BZ7UPUTY.js.map +1 -0
  334. package/dist/chunk-CGFAICUE.js +28 -0
  335. package/dist/chunk-CGFAICUE.js.map +1 -0
  336. package/dist/chunk-CMCEWQ3C.js +19 -0
  337. package/dist/chunk-CMCEWQ3C.js.map +1 -0
  338. package/dist/chunk-CP4UV436.js +41 -0
  339. package/dist/chunk-CP4UV436.js.map +1 -0
  340. package/dist/chunk-D2CQPNQG.js +27508 -0
  341. package/dist/chunk-D2CQPNQG.js.map +1 -0
  342. package/dist/chunk-DIQRZP7Z.js +51 -0
  343. package/dist/chunk-DIQRZP7Z.js.map +1 -0
  344. package/dist/chunk-EBFFDDAS.js +13 -0
  345. package/dist/chunk-EBFFDDAS.js.map +1 -0
  346. package/dist/chunk-EGVS23DR.js +85 -0
  347. package/dist/chunk-EGVS23DR.js.map +1 -0
  348. package/dist/chunk-EKBQ7K4N.js +15 -0
  349. package/dist/chunk-EKBQ7K4N.js.map +1 -0
  350. package/dist/chunk-EKQCZRAN.js +24 -0
  351. package/dist/chunk-EKQCZRAN.js.map +1 -0
  352. package/dist/chunk-EYKZIZ5J.js +48 -0
  353. package/dist/chunk-EYKZIZ5J.js.map +1 -0
  354. package/dist/{chunk-NEOPTPDF.js → chunk-F4PTFXZH.js} +11554 -22046
  355. package/dist/chunk-F4PTFXZH.js.map +1 -0
  356. package/dist/chunk-FFYZXA75.js +58 -0
  357. package/dist/chunk-FFYZXA75.js.map +1 -0
  358. package/dist/chunk-GFGDHPZ2.js +22 -0
  359. package/dist/chunk-GFGDHPZ2.js.map +1 -0
  360. package/dist/chunk-GR3CDFID.js +18 -0
  361. package/dist/chunk-GR3CDFID.js.map +1 -0
  362. package/dist/chunk-GR4SIU32.js +104 -0
  363. package/dist/chunk-GR4SIU32.js.map +1 -0
  364. package/dist/chunk-H5E46IIS.js +18 -0
  365. package/dist/chunk-H5E46IIS.js.map +1 -0
  366. package/dist/chunk-HFHVAMZL.js +22 -0
  367. package/dist/chunk-HFHVAMZL.js.map +1 -0
  368. package/dist/chunk-HRRI4BLF.js +4456 -0
  369. package/dist/chunk-HRRI4BLF.js.map +1 -0
  370. package/dist/chunk-HT6L7A5M.js +12 -0
  371. package/dist/chunk-HT6L7A5M.js.map +1 -0
  372. package/dist/chunk-I2FPFISM.js +301 -0
  373. package/dist/chunk-I2FPFISM.js.map +1 -0
  374. package/dist/chunk-IADAQJDH.js +28 -0
  375. package/dist/chunk-IADAQJDH.js.map +1 -0
  376. package/dist/chunk-IBOBCMQQ.js +99 -0
  377. package/dist/chunk-IBOBCMQQ.js.map +1 -0
  378. package/dist/chunk-IFWKRCFF.js +56 -0
  379. package/dist/chunk-IFWKRCFF.js.map +1 -0
  380. package/dist/chunk-IH4T7V4C.js +40 -0
  381. package/dist/chunk-IH4T7V4C.js.map +1 -0
  382. package/dist/chunk-IIIZZ4E4.js +1679 -0
  383. package/dist/chunk-IIIZZ4E4.js.map +1 -0
  384. package/dist/chunk-ILSFU3WD.js +83 -0
  385. package/dist/chunk-ILSFU3WD.js.map +1 -0
  386. package/dist/chunk-IX3VBV3L.js +43 -0
  387. package/dist/chunk-IX3VBV3L.js.map +1 -0
  388. package/dist/chunk-JBBFSORW.js +846 -0
  389. package/dist/chunk-JBBFSORW.js.map +1 -0
  390. package/dist/chunk-JIDTNKKL.js +1183 -0
  391. package/dist/chunk-JIDTNKKL.js.map +1 -0
  392. package/dist/chunk-JSPE6NGZ.js +22 -0
  393. package/dist/chunk-JSPE6NGZ.js.map +1 -0
  394. package/dist/chunk-JVROGQ7Q.js +150 -0
  395. package/dist/chunk-JVROGQ7Q.js.map +1 -0
  396. package/dist/chunk-K4WUMWNJ.js +32 -0
  397. package/dist/chunk-K4WUMWNJ.js.map +1 -0
  398. package/dist/chunk-K74XQ4Q5.js +11 -0
  399. package/dist/chunk-K74XQ4Q5.js.map +1 -0
  400. package/dist/chunk-KLLMJ4U3.js +22 -0
  401. package/dist/chunk-KLLMJ4U3.js.map +1 -0
  402. package/dist/chunk-LTKVCJ2E.js +27 -0
  403. package/dist/chunk-LTKVCJ2E.js.map +1 -0
  404. package/dist/chunk-M36DJTFZ.js +34 -0
  405. package/dist/chunk-M36DJTFZ.js.map +1 -0
  406. package/dist/chunk-MHM52LCJ.js +154 -0
  407. package/dist/chunk-MHM52LCJ.js.map +1 -0
  408. package/dist/chunk-MQCDMHRZ.js +59 -0
  409. package/dist/chunk-MQCDMHRZ.js.map +1 -0
  410. package/dist/chunk-N3ORMGAI.js +348 -0
  411. package/dist/chunk-N3ORMGAI.js.map +1 -0
  412. package/dist/chunk-NCSGIRRQ.js +28 -0
  413. package/dist/chunk-NCSGIRRQ.js.map +1 -0
  414. package/dist/chunk-NIXT2SBH.js +1423 -0
  415. package/dist/chunk-NIXT2SBH.js.map +1 -0
  416. package/dist/chunk-NJAII6CO.js +148 -0
  417. package/dist/chunk-NJAII6CO.js.map +1 -0
  418. package/dist/chunk-NKE4TL43.js +92 -0
  419. package/dist/chunk-NKE4TL43.js.map +1 -0
  420. package/dist/chunk-NZ7AXA7B.js +1 -0
  421. package/dist/chunk-NZ7AXA7B.js.map +1 -0
  422. package/dist/chunk-OCAYEGI2.js +26 -0
  423. package/dist/chunk-OCAYEGI2.js.map +1 -0
  424. package/dist/chunk-OMLI45ER.js +90 -0
  425. package/dist/chunk-OMLI45ER.js.map +1 -0
  426. package/dist/chunk-P7OBLJAG.js +88 -0
  427. package/dist/chunk-P7OBLJAG.js.map +1 -0
  428. package/dist/chunk-PAY3CBWL.js +2321 -0
  429. package/dist/chunk-PAY3CBWL.js.map +1 -0
  430. package/dist/chunk-PFF6VY35.js +257 -0
  431. package/dist/chunk-PFF6VY35.js.map +1 -0
  432. package/dist/chunk-PYNDJDWZ.js +1758 -0
  433. package/dist/chunk-PYNDJDWZ.js.map +1 -0
  434. package/dist/chunk-QDQ6UMMN.js +53 -0
  435. package/dist/chunk-QDQ6UMMN.js.map +1 -0
  436. package/dist/chunk-QGT3G2XG.js +24 -0
  437. package/dist/chunk-QGT3G2XG.js.map +1 -0
  438. package/dist/chunk-QZYCJ2GZ.js +55 -0
  439. package/dist/chunk-QZYCJ2GZ.js.map +1 -0
  440. package/dist/chunk-REZ7RFSA.js +124 -0
  441. package/dist/chunk-REZ7RFSA.js.map +1 -0
  442. package/dist/chunk-RRYBAE6E.js +2449 -0
  443. package/dist/chunk-RRYBAE6E.js.map +1 -0
  444. package/dist/chunk-RWUZOB62.js +34 -0
  445. package/dist/chunk-RWUZOB62.js.map +1 -0
  446. package/dist/chunk-SB5UCPZH.js +116 -0
  447. package/dist/chunk-SB5UCPZH.js.map +1 -0
  448. package/dist/chunk-SEJJ7CRI.js +99 -0
  449. package/dist/chunk-SEJJ7CRI.js.map +1 -0
  450. package/dist/chunk-SHBFGRPV.js +45 -0
  451. package/dist/chunk-SHBFGRPV.js.map +1 -0
  452. package/dist/chunk-SOFJ4GC5.js +45 -0
  453. package/dist/chunk-SOFJ4GC5.js.map +1 -0
  454. package/dist/chunk-STH2HPZK.js +44 -0
  455. package/dist/chunk-STH2HPZK.js.map +1 -0
  456. package/dist/chunk-TK3JNKME.js +28 -0
  457. package/dist/chunk-TK3JNKME.js.map +1 -0
  458. package/dist/chunk-TMONHFE3.js +46 -0
  459. package/dist/chunk-TMONHFE3.js.map +1 -0
  460. package/dist/chunk-TR4KO3AG.js +44 -0
  461. package/dist/chunk-TR4KO3AG.js.map +1 -0
  462. package/dist/chunk-TS2LNBF2.js +68 -0
  463. package/dist/chunk-TS2LNBF2.js.map +1 -0
  464. package/dist/chunk-UZUMBFPP.js +26 -0
  465. package/dist/chunk-UZUMBFPP.js.map +1 -0
  466. package/dist/chunk-VRZ5LMOW.js +176 -0
  467. package/dist/chunk-VRZ5LMOW.js.map +1 -0
  468. package/dist/chunk-WLGGY6Z6.js +75 -0
  469. package/dist/chunk-WLGGY6Z6.js.map +1 -0
  470. package/dist/chunk-WO7V6ZNC.js +11 -0
  471. package/dist/chunk-WO7V6ZNC.js.map +1 -0
  472. package/dist/chunk-WXSENSRP.js +64 -0
  473. package/dist/chunk-WXSENSRP.js.map +1 -0
  474. package/dist/chunk-XEKBZ2SA.js +19 -0
  475. package/dist/chunk-XEKBZ2SA.js.map +1 -0
  476. package/dist/chunk-XPBKU3JX.js +61 -0
  477. package/dist/chunk-XPBKU3JX.js.map +1 -0
  478. package/dist/chunk-XRYXBXWH.js +24 -0
  479. package/dist/chunk-XRYXBXWH.js.map +1 -0
  480. package/dist/chunk-XVA7QRVH.js +22 -0
  481. package/dist/chunk-XVA7QRVH.js.map +1 -0
  482. package/dist/chunk-YCTHHBSS.js +37 -0
  483. package/dist/chunk-YCTHHBSS.js.map +1 -0
  484. package/dist/chunk-YHPWD5NE.js +70 -0
  485. package/dist/chunk-YHPWD5NE.js.map +1 -0
  486. package/dist/chunk-YLNEKJQ5.js +126 -0
  487. package/dist/chunk-YLNEKJQ5.js.map +1 -0
  488. package/dist/chunk-YN4CEKCF.js +73 -0
  489. package/dist/chunk-YN4CEKCF.js.map +1 -0
  490. package/dist/chunk-YYNMESIF.js +17 -0
  491. package/dist/chunk-YYNMESIF.js.map +1 -0
  492. package/dist/chunk-Z6PRMCV6.js +1 -0
  493. package/dist/chunk-Z6PRMCV6.js.map +1 -0
  494. package/dist/chunk-ZDNW6VQG.js +11 -0
  495. package/dist/chunk-ZDNW6VQG.js.map +1 -0
  496. package/dist/chunk-ZP4D73DO.js +36 -0
  497. package/dist/chunk-ZP4D73DO.js.map +1 -0
  498. package/dist/chunk-ZUATADUV.js +26 -0
  499. package/dist/chunk-ZUATADUV.js.map +1 -0
  500. package/dist/{connections-1NtNQrsY.d.ts → connections-CEcurtWI.d.ts} +74 -9
  501. package/dist/core/index.cjs +14041 -6973
  502. package/dist/core/index.cjs.map +1 -1
  503. package/dist/core/index.d.ts +422 -138
  504. package/dist/core/index.js +425 -183
  505. package/dist/core/index.js.map +1 -1
  506. package/dist/flow-vnext/index.cjs +2842 -0
  507. package/dist/flow-vnext/index.cjs.map +1 -0
  508. package/dist/flow-vnext/index.d.ts +3 -0
  509. package/dist/flow-vnext/index.js +119 -0
  510. package/dist/flow-vnext/index.js.map +1 -0
  511. package/dist/{graphql-client-Bn0tN049.d.ts → graphql-client-B2tREsx6.d.ts} +3 -1
  512. package/dist/index-b9xxXGFs.d.ts +1230 -0
  513. package/dist/index.d.ts +5 -3
  514. package/dist/index.js +202 -37
  515. package/dist/index.js.map +1 -1
  516. package/dist/legacy-BpgIqaQ5.d.ts +14 -0
  517. package/dist/mantine/index.d.ts +7 -4
  518. package/dist/mantine/index.js +84 -30
  519. package/dist/mantine/index.js.map +1 -1
  520. package/dist/{runtime-BFwvCQDF.d.ts → types-Dqk5MTfW.d.ts} +6096 -5386
  521. package/package.json +12 -2
  522. package/dist/chunk-5JF23UP3.js +0 -59687
  523. package/dist/chunk-5JF23UP3.js.map +0 -1
  524. package/dist/chunk-A4CWC4AG.js +0 -374
  525. package/dist/chunk-A4CWC4AG.js.map +0 -1
  526. package/dist/chunk-NEOPTPDF.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/evaluateBid/EvaluateBidFlowDetail.tsx"],"sourcesContent":["import { useRunRuntimeReader } from '@/mantine/hooks/useRunRuntimeReader';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ActionIcon, Badge, Box, Button, Divider, Group, Loader, Stack, Text, UnstyledButton } from '@mantine/core';\nimport { DismissibleAlert as Alert } from '@/mantine/components/Base/DismissibleAlert';\nimport { IconArrowLeft, IconCheck, IconFilter } from '@tabler/icons-react';\nimport { useBlocknoteHandlers, useTranslate, type Bid, type IUserMatrixProfile } from '@/mantine/context/BlocknoteContext';\nimport { resolveReferences } from '@/mantine/utils/referenceResolver';\nimport type { ActionTypeFlowProps } from '../../actionTypeUI';\nimport { ActAsGroupSection, actAsGroupReady, actAsGroupRuntimeInputs, emptyActAsGroupState, type ActAsGroupState } from '../_shared/groupExecution/ActAsGroupSection';\nimport { GroupProposalStatus } from '../_shared/groupExecution/GroupProposalStatus';\nimport { parseEvaluateBidActionInputs } from './types';\nimport type { EvaluateBidRuntimeInputs } from '@/core/lib/actionRegistry/actions/evaluateBid/types';\nimport BaseTextArea from '@/mantine/components/Base/BaseTextArea';\nimport BaseSelect from '@/mantine/components/Base/BaseSelect';\nimport BaseNumberInput from '@/mantine/components/Base/BaseNumberInput';\nimport BaseTextInput from '@/mantine/components/Base/BaseTextInput';\nimport ListItemContainer from '@/mantine/blocks/list/ListItemContainer';\nimport { actionAlertStyles } from '../../alertStyles';\nimport { CollapsibleSection } from '@/mantine/components/CollapsibleSection';\nimport { DownloadCsvButton, DownloadZipButton, buildBidRows, bidAnswers, buildExportBundle, exportFileNames } from '../_shared/dataExport';\nimport { ReadableKeyValues } from '../_shared/ReadableKeyValues';\nimport { downloadArrayAsCsv, downloadBlob, rowsToCsv } from '@/core/utils/files';\nimport { getBidStatusInfo, type BidStatusContext, type BidStatusKey } from '@/mantine/utils/bidStatus';\nimport { fetchAllBids, dedupeBids, describeBidsPagingStop } from '../_shared/bids/fetchAllBids';\nimport { sortBidsForReview } from '../_shared/bids/sortBids';\nimport type { CollectionGrantee } from '@/core/lib/actionRegistry/actions/collectionUsers/types';\n\n// Helper functions moved from bid block\nfunction getRoleColor(role: string): string {\n const r = String(role || '').toLowerCase();\n if (r === 'service_agent' || r === 'sa') return 'blue';\n if (r === 'evaluation_agent' || r === 'ea') return 'green';\n return 'gray';\n}\n\nfunction getRoleLabel(role: string, translate: (key: string, opts?: { defaultValue?: string }) => string): string {\n const r = String(role || '').toLowerCase();\n if (r === 'service_agent' || r === 'sa') return translate('actionTypes.bid.flow.role.contributor', { defaultValue: 'Contributor' });\n if (r === 'evaluation_agent' || r === 'ea') return translate('actionTypes.bid.flow.role.evaluator', { defaultValue: 'Evaluator' });\n return role || translate('actionTypes.evaluateBid.flow.role.unknown', { defaultValue: 'Unknown' });\n}\n\ntype FilterTab = 'all' | 'pending' | 'approved' | 'rejected';\n\nconst USDC_DENOM = 'ibc/6BBE9BD4246F8E04948D5A4EEE7164B2630263B9EBB5E7DC5F0A46C62A2FF97B';\nconst IXO_DENOM = 'uixo';\nconst CUSTOM_DENOM = '__custom__';\n// On-chain denoms are 6-decimal micro units. The approve-evaluator consumer\n// handler (agent-authz.ts grantEvaluatorAuthz) expects maxAmounts already in\n// base units and applies no conversion, so the human amount entered here must be\n// scaled by 10^DECIMALS — mirrors EvaluateClaimFlowDetail / BidViewPanel.\nconst DECIMALS = 6;\n\ntype PaymentRow = {\n id: string;\n denom: string | null;\n customDenom: string;\n amount: number | string;\n};\n\nconst createPaymentRow = (): PaymentRow => ({\n id: `payment-${Math.random().toString(36).slice(2, 9)}`,\n denom: IXO_DENOM,\n customDenom: '',\n amount: '',\n});\n\nfunction getTimeAgo(dateString: string): string {\n if (!dateString) return '';\n try {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n if (diffMins < 1) return 'just now';\n if (diffMins < 60) return `${diffMins}m ago`;\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) return `${diffHours}h ago`;\n const diffDays = Math.floor(diffHours / 24);\n if (diffDays < 30) return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;\n const diffMonths = Math.floor(diffDays / 30);\n return `${diffMonths} month${diffMonths > 1 ? 's' : ''} ago`;\n } catch {\n return dateString;\n }\n}\n\nfunction truncateAddress(address: string): string {\n if (!address) return '';\n if (address.length <= 14) return address;\n return `${address.slice(0, 8)}...${address.slice(-3)}`;\n}\n\n// Status resolution lives in `@/mantine/utils/bidStatus` so the list badges,\n// the filter tabs and the CSV export all read the same rules. The previous\n// local version looked only at `bid.data.status` — a field the submitted survey\n// answers never carry — so every bid rendered and exported as Pending even\n// after it had been approved and the grant issued.\nfunction getBidStatus(\n bid: Bid,\n translate: (key: string, opts?: { defaultValue?: string }) => string,\n context: BidStatusContext\n): { label: string; key: BidStatusKey; color: string } {\n const info = getBidStatusInfo(bid, context);\n const labels: Record<BidStatusKey, string> = {\n approved: translate('actionTypes.evaluateBid.flow.status.approved', { defaultValue: 'Approved' }),\n rejected: translate('actionTypes.evaluateBid.flow.status.rejected', { defaultValue: 'Rejected' }),\n pending: translate('actionTypes.evaluateBid.flow.status.pending', { defaultValue: 'Pending' }),\n };\n return { label: labels[info.key], key: info.key, color: info.color };\n}\n\nexport const EvaluateBidFlowDetail: React.FC<ActionTypeFlowProps<EvaluateBidRuntimeInputs>> = ({\n inputs,\n editor,\n block,\n runtime,\n isDisabled,\n provideSigningHandler,\n unlockSigning,\n registerRuntimeInputs,\n executeAction,\n}) => {\n const [actAs, setActAs] = useState<ActAsGroupState>(emptyActAsGroupState());\n const t = useTranslate();\n const handlers = useBlocknoteHandlers();\n const handlersRef = useRef(handlers);\n useEffect(() => {\n handlersRef.current = handlers;\n }, [handlers]);\n const parsed = useMemo(() => parseEvaluateBidActionInputs(inputs), [inputs]);\n const editorDocument = editor?.document || [];\n const runtimeReader = useRunRuntimeReader(editor);\n const resolveOpts = useMemo(() => ({ yRuntime: runtimeReader }), [runtimeReader]);\n const deedDid = resolveReferences(parsed.deedDid, editorDocument, resolveOpts).trim();\n const collectionId = resolveReferences(parsed.collectionId, editorDocument, resolveOpts).trim();\n\n const [bids, setBids] = useState<Bid[]>([]);\n const [selectedBidId, setSelectedBidId] = useState<string>('');\n const [decision, setDecision] = useState<'approve' | 'reject' | ''>('');\n const [loadingBids, setLoadingBids] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [rejectReason, setRejectReason] = useState('');\n const [adminAddress, setAdminAddress] = useState('');\n const [activeFilter, setActiveFilter] = useState<FilterTab>('pending');\n const [paymentRows, setPaymentRows] = useState<PaymentRow[]>([createPaymentRow()]);\n const [profilesByDid, setProfilesByDid] = useState<Record<string, IUserMatrixProfile>>({});\n const [grantees, setGrantees] = useState<CollectionGrantee[]>([]);\n\n const selectedBid = useMemo(() => bids.find((bid) => bid.id === selectedBidId) || null, [bids, selectedBidId]);\n\n // Live authz grants on the collection. A bid has no evaluation record of its\n // own — an existing grant in the bid's role is the only durable evidence that\n // it was approved in an earlier session, so the status of every bid in this\n // list depends on having these loaded.\n const statusContext = useMemo<BidStatusContext>(() => ({ grantees }), [grantees]);\n\n const statusCounts = useMemo(() => {\n const counts: Record<BidStatusKey, number> = { approved: 0, rejected: 0, pending: 0 };\n for (const bid of bids) counts[getBidStatusInfo(bid, statusContext).key] += 1;\n return counts;\n }, [bids, statusContext]);\n\n // Undecided first, then newest — the service returns insertion order, which\n // buries the bids that still need a decision behind long-settled ones.\n const filteredBids = useMemo(() => {\n const ordered = sortBidsForReview(bids, statusContext);\n if (activeFilter === 'all') return ordered;\n return ordered.filter((bid) => getBidStatus(bid, t, statusContext).key === activeFilter);\n }, [bids, activeFilter, t, statusContext]);\n\n /** Optional host capability — absent hosts simply export/render without grant state. */\n const fetchGrantees = useCallback(\n async (adminAddressForList: string): Promise<CollectionGrantee[]> => {\n const listGrantees = (\n handlersRef.current as unknown as {\n collectionUsers?: { list?: (params: { granterAdminAddress: string; collectionId: string }) => Promise<{ grantees: CollectionGrantee[] }> };\n }\n ).collectionUsers?.list;\n if (typeof listGrantees !== 'function' || !adminAddressForList) return [];\n try {\n const result = await listGrantees({ granterAdminAddress: adminAddressForList, collectionId });\n return Array.isArray(result?.grantees) ? result.grantees : [];\n } catch {\n return [];\n }\n },\n [collectionId]\n );\n\n const refreshBids = useCallback(async () => {\n if (!deedDid || !collectionId) return;\n const handlers = handlersRef.current;\n\n setLoadingBids(true);\n setError(null);\n try {\n // Pages through the bot's 10-bid response rather than showing only the first page.\n const [bidsResult, collectionsResponse] = await Promise.all([fetchAllBids(handlers.queryBids, { collectionId, entityDid: deedDid }), handlers.getClaimCollections(deedDid)]);\n const fetchedBids = dedupeBids(bidsResult.bids);\n setBids(fetchedBids);\n const pagingNote = describeBidsPagingStop(bidsResult);\n if (pagingNote) setError(pagingNote);\n if (selectedBidId && !fetchedBids.some((bid) => bid.id === selectedBidId)) {\n setSelectedBidId('');\n }\n const resolvedAdmin = collectionsResponse?.collections?.find?.((c: any) => c?.id === collectionId)?.admin || collectionsResponse?.adminAddress || '';\n setAdminAddress(resolvedAdmin);\n setGrantees(await fetchGrantees(resolvedAdmin));\n } catch (err) {\n setBids([]);\n setAdminAddress('');\n setGrantees([]);\n setError(err instanceof Error ? err.message : t('actionTypes.evaluateBid.flow.errors.loadBids', { defaultValue: 'Failed to load bids' }));\n } finally {\n setLoadingBids(false);\n }\n }, [deedDid, collectionId, selectedBidId, fetchGrantees]);\n\n useEffect(() => {\n setSelectedBidId('');\n setRejectReason('');\n setError(null);\n }, [deedDid, collectionId]);\n\n useEffect(() => {\n setDecision('');\n setRejectReason('');\n setPaymentRows([createPaymentRow()]);\n }, [selectedBidId]);\n\n useEffect(() => {\n if (!deedDid || !collectionId) return;\n refreshBids();\n }, [deedDid, collectionId, refreshBids]);\n\n // IXO-4066 — export all submitted bids with their status and each account's\n // current grant state. Grants are refreshed at download time so the export\n // reflects the collection now rather than when the list last loaded.\n const bidRowOptions = useCallback(\n (freshGrantees: CollectionGrantee[]) => ({\n namesByDid: Object.fromEntries(Object.entries(profilesByDid).map(([did, profile]) => [did, profile?.displayname || ''])),\n grantees: freshGrantees,\n }),\n [profilesByDid]\n );\n\n const downloadBidsCsv = useCallback(\n async (subset: Bid[], filename: string) => {\n const freshGrantees = (await fetchGrantees(adminAddress)) || grantees;\n downloadArrayAsCsv(buildBidRows(subset, freshGrantees, bidRowOptions(freshGrantees)), { filename });\n },\n [adminAddress, fetchGrantees, grantees, bidRowOptions]\n );\n\n const downloadBidsZip = useCallback(\n async (subset: Bid[], names: { csv: string; manifest: string; zip: string }) => {\n const handlers = handlersRef.current;\n const freshGrantees = (await fetchGrantees(adminAddress)) || grantees;\n const fetchMedia = handlers.fetchClaimMedia ? (url: string) => handlers.fetchClaimMedia!(url, { entityDid: deedDid }) : undefined;\n\n const { blob, mediaTotal, mediaFailed } = await buildExportBundle({\n records: subset.map((bid) => ({\n recordId: bid.id,\n answers: bidAnswers(bid),\n manifest: {\n bidId: bid.id,\n did: bid.did,\n address: bid.address,\n role: bid.role,\n created: bid.created,\n status: getBidStatusInfo(bid, { grantees: freshGrantees }).key,\n },\n })),\n fetchMedia,\n renderCsv: (answersByBidId) => rowsToCsv(buildBidRows(subset, freshGrantees, { ...bidRowOptions(freshGrantees), answersByBidId })),\n csvName: names.csv,\n manifestName: names.manifest,\n });\n\n downloadBlob(blob, names.zip);\n if (mediaFailed > 0) {\n setError(`${mediaFailed} of ${mediaTotal} media files could not be downloaded — see downloadStatus in ${names.manifest}.`);\n }\n },\n [adminAddress, fetchGrantees, grantees, bidRowOptions, deedDid]\n );\n\n const handleDownloadBidsCsv = useCallback(() => downloadBidsCsv(bids, exportFileNames.bids(collectionId).csv), [downloadBidsCsv, bids, collectionId]);\n const handleDownloadBidsZip = useCallback(() => downloadBidsZip(bids, exportFileNames.bids(collectionId)), [downloadBidsZip, bids, collectionId]);\n\n useEffect(() => {\n let mounted = true;\n const dids = Array.from(new Set(bids.map((bid) => bid.did).filter(Boolean)));\n const missing = dids.filter((did) => !profilesByDid[did]);\n if (missing.length === 0)\n return () => {\n mounted = false;\n };\n\n const loadProfiles = async () => {\n const handlers = handlersRef.current;\n const results = await Promise.all(\n missing.map(async (did) => {\n try {\n const profile = await handlers.getMatrixInfoPerDid(did);\n return [did, profile] as const;\n } catch {\n return [did, null] as const;\n }\n })\n );\n\n if (!mounted) return;\n setProfilesByDid((prev) => {\n const next = { ...prev };\n results.forEach(([did, profile]) => {\n if (profile) {\n next[did] = profile;\n }\n });\n return next;\n });\n };\n\n loadProfiles();\n return () => {\n mounted = false;\n };\n }, [bids, profilesByDid]);\n\n const addPaymentRow = useCallback(() => {\n setPaymentRows((prev) => [...prev, createPaymentRow()]);\n }, []);\n\n const removePaymentRow = useCallback((id: string) => {\n setPaymentRows((prev) => (prev.length === 1 ? prev : prev.filter((row) => row.id !== id)));\n }, []);\n\n const updatePaymentRow = useCallback((id: string, patch: Partial<PaymentRow>) => {\n setPaymentRows((prev) => prev.map((row) => (row.id === id ? { ...row, ...patch } : row)));\n }, []);\n\n const buildMaxAmounts = useCallback(() => {\n return paymentRows\n .map((row) => {\n const denom = row.denom === CUSTOM_DENOM ? row.customDenom.trim() : row.denom || '';\n const amount = Number(row.amount);\n if (!denom || !Number.isFinite(amount) || amount <= 0) return null;\n // Scale the human amount to on-chain base units (the consumer does not convert).\n return { denom, amount: (amount * Math.pow(10, DECIMALS)).toString() };\n })\n .filter((entry): entry is { denom: string; amount: string } => !!entry);\n }, [paymentRows]);\n\n // Wire registerRuntimeInputs — push selections to parent for diff resolver\n useEffect(() => {\n if (!registerRuntimeInputs) return;\n if (!selectedBid) {\n registerRuntimeInputs({ bidId: '', decision: '', role: '', applicantDid: '', applicantAddress: '', adminAddress: '' });\n return;\n }\n const selectedRole = String(selectedBid.role || '').toLowerCase();\n const selectedBidIsEvaluator = selectedRole === 'evaluation_agent' || selectedRole === 'ea';\n registerRuntimeInputs({\n bidId: selectedBid.id,\n decision: decision || '',\n role: selectedBid.role,\n applicantDid: selectedBid.did,\n applicantAddress: selectedBid.address,\n adminAddress,\n rejectReason: decision === 'reject' ? (selectedBidIsEvaluator ? rejectReason : rejectReason.trim() || 'Rejected') : undefined,\n maxAmounts: selectedBidIsEvaluator ? JSON.stringify(buildMaxAmounts()) : undefined,\n });\n }, [registerRuntimeInputs, selectedBid, decision, adminAddress, rejectReason, buildMaxAmounts]);\n\n // Wire unlockSigning — enable slider based on validation state\n useEffect(() => {\n if (!unlockSigning) return;\n if (!selectedBid || !decision) {\n unlockSigning(false);\n return;\n }\n const selectedRole = String(selectedBid.role || '').toLowerCase();\n const selectedBidIsEvaluator = selectedRole === 'evaluation_agent' || selectedRole === 'ea';\n if (decision === 'approve') {\n unlockSigning(!!adminAddress && actAsGroupReady(actAs));\n } else if (decision === 'reject') {\n unlockSigning((!selectedBidIsEvaluator || !!rejectReason.trim()) && actAsGroupReady(actAs));\n } else {\n unlockSigning(false);\n }\n }, [unlockSigning, selectedBid, decision, adminAddress, rejectReason, actAs]);\n\n // Wire provideSigningHandler — execution logic triggered by slide-to-sign\n useEffect(() => {\n if (!provideSigningHandler || !selectedBid || !decision) return;\n provideSigningHandler(async () => {\n const selectedRole = String(selectedBid.role || '').toLowerCase();\n const selectedBidIsEvaluator = selectedRole === 'evaluation_agent' || selectedRole === 'ea';\n\n if (!executeAction) {\n setError('Shared action executor is unavailable');\n return;\n }\n\n setSubmitting(true);\n setError(null);\n\n try {\n const outcome = await executeAction({\n runtimeInputs: {\n ...actAsGroupRuntimeInputs(actAs),\n decision,\n bidId: selectedBid.id,\n collectionId,\n deedDid,\n role: selectedBid.role,\n applicantDid: selectedBid.did,\n applicantAddress: selectedBid.address,\n adminAddress,\n maxAmounts: selectedBidIsEvaluator ? JSON.stringify(buildMaxAmounts()) : '[]',\n reason: decision === 'reject' ? (selectedBidIsEvaluator ? rejectReason : rejectReason.trim() || 'Rejected') : '',\n },\n });\n\n if (!outcome.success) throw new Error(outcome.error || t('actionTypes.evaluateBid.flow.errors.evaluationFailed', { defaultValue: 'Bid evaluation failed' }));\n\n setSelectedBidId('');\n setDecision('');\n setRejectReason('');\n await refreshBids();\n } catch (err) {\n const message = err instanceof Error ? err.message : t('actionTypes.evaluateBid.flow.errors.evaluateFailed', { defaultValue: 'Failed to evaluate bid' });\n setError(message);\n } finally {\n setSubmitting(false);\n }\n });\n }, [provideSigningHandler, selectedBid, decision, adminAddress, rejectReason, collectionId, deedDid, buildMaxAmounts, refreshBids, executeAction]);\n\n // ── Detail View (slide-in per bid item) ──\n if (selectedBid) {\n const bidStatus = getBidStatus(selectedBid, t, statusContext);\n const bidRole = String(selectedBid.role || '').toLowerCase();\n const bidIsEvaluator = bidRole === 'evaluation_agent' || bidRole === 'ea';\n const selectedBidProfile = profilesByDid[selectedBid.did];\n const selectedDisplayName = selectedBidProfile?.displayname || selectedBid.did || selectedBid.address;\n const selectedAvatarLabel = (selectedBidProfile?.displayname || selectedBid.did || selectedBid.address || '?')[0]?.toUpperCase();\n let bidData: any = null;\n try {\n bidData = typeof selectedBid.data === 'string' ? JSON.parse(selectedBid.data) : selectedBid.data;\n } catch {\n // ignore\n }\n\n return (\n <Stack gap=\"md\">\n {/* Back header */}\n <Group gap=\"xs\" align=\"center\">\n <ActionIcon variant=\"subtle\" color=\"gray\" size=\"sm\" onClick={() => setSelectedBidId('')}>\n <IconArrowLeft size={16} />\n </ActionIcon>\n <Text fw={500} size=\"sm\" truncate style={{ flex: 1, minWidth: 0 }}>\n {t('actionTypes.evaluateBid.flow.bidNumber', { id: selectedBid.id, defaultValue: `Bid #${selectedBid.id}` })}\n </Text>\n <DownloadCsvButton onDownload={() => downloadBidsCsv([selectedBid], exportFileNames.bid(selectedBid.id).csv)} label=\"Download bid CSV\" onError={setError} />\n <DownloadZipButton onDownload={() => downloadBidsZip([selectedBid], exportFileNames.bid(selectedBid.id))} label=\"Download bid + media (ZIP)\" onError={setError} />\n </Group>\n\n {/* Bidder info header */}\n <Group gap={16} align=\"center\" style={{ width: '100%' }}>\n <Box\n style={{\n width: 40,\n height: 40,\n borderRadius: '50%',\n background: 'var(--mantine-color-neutralColor-4)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n fontSize: 16,\n fontWeight: 500,\n color: 'var(--mantine-color-dimmed)',\n backgroundImage: selectedBidProfile?.avatarUrl ? `url(${selectedBidProfile.avatarUrl})` : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n }}\n >\n {selectedBidProfile?.avatarUrl ? null : selectedAvatarLabel}\n </Box>\n <Stack gap={0} style={{ flex: 1, minWidth: 0 }}>\n <Text fw={500} size=\"md\" truncate>\n {selectedDisplayName}\n </Text>\n <Text size=\"xs\" c=\"dimmed\" truncate>\n {truncateAddress(selectedBid.address)}\n </Text>\n </Stack>\n <Stack gap={0} align=\"flex-end\" style={{ flexShrink: 0 }}>\n <Text fw={500} size=\"md\" c={bidStatus.color === 'green' ? 'green' : bidStatus.color === 'red' ? 'red' : undefined}>\n {bidStatus.color === 'green' && <IconCheck size={14} style={{ verticalAlign: 'middle', marginRight: 4 }} />}\n {bidStatus.label}\n </Text>\n <Text size=\"xs\" c=\"dimmed\">\n {getTimeAgo(selectedBid.created || '')}\n </Text>\n </Stack>\n </Group>\n\n <CollapsibleSection title={t('actionTypes.evaluateBid.flow.section.details', { defaultValue: 'Details' })}>\n <Stack gap=\"xs\">\n <Group justify=\"space-between\">\n <Text size=\"xs\" c=\"dimmed\">\n Bid ID\n </Text>\n <Text size=\"xs\" truncate>\n {selectedBid.id}\n </Text>\n </Group>\n <Group justify=\"space-between\">\n <Text size=\"xs\" c=\"dimmed\">\n Collection\n </Text>\n <Text size=\"xs\">{selectedBid.collection || collectionId}</Text>\n </Group>\n <Group justify=\"space-between\">\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateBid.flow.details.role', { defaultValue: 'Role' })}\n </Text>\n <Badge size=\"xs\" variant=\"light\" color={getRoleColor(selectedBid.role)}>\n {getRoleLabel(selectedBid.role, t)}\n </Badge>\n </Group>\n <Group justify=\"space-between\">\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateBid.flow.details.address', { defaultValue: 'Address' })}\n </Text>\n <Text size=\"xs\">{selectedBid.address}</Text>\n </Group>\n </Stack>\n </CollapsibleSection>\n\n <CollapsibleSection title={t('actionTypes.evaluateBid.flow.section.inputs', { defaultValue: 'Inputs' })}>\n {bidData && typeof bidData === 'object' && Object.keys(bidData).length > 0 ? (\n <ReadableKeyValues data={bidData as Record<string, unknown>} />\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateBid.flow.noInputData', { defaultValue: 'No input data available.' })}\n </Text>\n )}\n </CollapsibleSection>\n\n {/* Decision selector */}\n <BaseSelect\n label={t('actionTypes.evaluateClaim.flow.decision.label', { defaultValue: 'Decision' })}\n placeholder={t('actionTypes.evaluateClaim.flow.decision.placeholder', { defaultValue: 'Select decision' })}\n value={decision || null}\n onChange={(value) => setDecision((value as 'approve' | 'reject') || '')}\n data={[\n { value: 'approve', label: t('actionTypes.evaluateClaim.flow.decision.approve', { defaultValue: 'Approve' }) },\n { value: 'reject', label: t('actionTypes.evaluateClaim.flow.decision.reject', { defaultValue: 'Reject' }) },\n ]}\n disabled={isDisabled || submitting}\n />\n\n {/* Collapsible: Evaluation — shown when decision requires extra inputs */}\n {decision && (decision === 'reject' || (decision === 'approve' && bidIsEvaluator)) && (\n <CollapsibleSection title={t('actionTypes.evaluateClaim.flow.section.evaluation', { defaultValue: 'Evaluation' })} defaultOpen>\n <Stack gap=\"md\">\n {/* Reason field — shown when rejecting */}\n {decision === 'reject' && (\n <Stack gap={4}>\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateBid.flow.reason', { defaultValue: 'Reason' })}{' '}\n {bidIsEvaluator && (\n <Text span c=\"red\" size=\"xs\">\n *\n </Text>\n )}\n </Text>\n <BaseTextArea\n placeholder={t('actionTypes.evaluateBid.flow.startTyping', { defaultValue: 'Start Typing' })}\n value={rejectReason}\n onChange={(event) => setRejectReason(event.currentTarget.value)}\n minRows={2}\n disabled={isDisabled || submitting}\n />\n </Stack>\n )}\n\n {/* Payment section — shown when approving evaluator bids */}\n {decision === 'approve' && bidIsEvaluator && (\n <>\n <Divider color=\"color-mix(in srgb, var(--mantine-color-text) 6%, transparent)\" />\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateBid.flow.paymentLabel', { defaultValue: 'Payment (used as evaluator max amount)' })}\n </Text>\n {paymentRows.map((row, index) => (\n <Stack key={row.id} gap={8}>\n <Group justify=\"space-between\" align=\"center\">\n <Text size=\"sm\">{t('actionTypes.evaluateClaim.flow.payment.token', { index: index + 1, defaultValue: `Token ${index + 1}` })}</Text>\n <Group gap=\"xs\">\n {paymentRows.length > 1 && (\n <Button variant=\"subtle\" size=\"compact-xs\" color=\"red\" onClick={() => removePaymentRow(row.id)} disabled={isDisabled || submitting}>\n {t('actionTypes.evaluateClaim.flow.payment.remove', { defaultValue: 'Remove' })}\n </Button>\n )}\n </Group>\n </Group>\n <BaseSelect\n value={row.denom}\n onChange={(value) => updatePaymentRow(row.id, { denom: value })}\n data={[\n { value: IXO_DENOM, label: 'IXO' },\n { value: USDC_DENOM, label: 'USDC' },\n { value: CUSTOM_DENOM, label: t('actionTypes.evaluateClaim.flow.payment.custom', { defaultValue: 'Custom' }) },\n ]}\n clearable={false}\n disabled={isDisabled || submitting}\n />\n {row.denom === CUSTOM_DENOM && (\n <BaseTextInput\n placeholder={t('actionTypes.evaluateClaim.flow.payment.customDenomPlaceholder', { defaultValue: 'Custom denom (e.g. ibc/... or uixo)' })}\n value={row.customDenom}\n onChange={(event) => updatePaymentRow(row.id, { customDenom: event.currentTarget.value })}\n disabled={isDisabled || submitting}\n />\n )}\n <BaseNumberInput\n min={0}\n value={row.amount}\n onChange={(value) => updatePaymentRow(row.id, { amount: value })}\n placeholder={t('actionTypes.evaluateClaim.flow.payment.amountPlaceholder', { defaultValue: 'Amount' })}\n disabled={isDisabled || submitting}\n />\n </Stack>\n ))}\n <Button variant=\"light\" size=\"xs\" onClick={addPaymentRow} disabled={isDisabled || submitting}>\n {t('actionTypes.evaluateClaim.flow.payment.addPayment', { defaultValue: 'Add Payment' })}\n </Button>\n </>\n )}\n </Stack>\n </CollapsibleSection>\n )}\n\n {error && (\n <Alert color=\"red\" styles={actionAlertStyles}>\n {error}\n </Alert>\n )}\n </Stack>\n );\n }\n\n // ── List View ──\n // Pending is the only tab that is always meaningful: the bids service removes\n // a bid from its query response as soon as it is decided, so this block only\n // ever sees undecided bids. A non-pending status here means the on-chain\n // grant and the service disagree — the grant exists but the bid was never\n // closed out — which is worth being able to look at, hence the conditional\n // tabs. They stay hidden when there is nothing in them rather than inviting a\n // click that always lands on an empty list.\n const filterTabs: { value: FilterTab; label: string }[] = [\n { value: 'pending', label: t('actionTypes.evaluateBid.flow.status.pending', { defaultValue: 'Pending' }) },\n ...(statusCounts.approved > 0 ? [{ value: 'approved' as FilterTab, label: t('actionTypes.evaluateBid.flow.status.approved', { defaultValue: 'Approved' }) }] : []),\n ...(statusCounts.rejected > 0 ? [{ value: 'rejected' as FilterTab, label: t('actionTypes.evaluateBid.flow.status.rejected', { defaultValue: 'Rejected' }) }] : []),\n ...(statusCounts.approved > 0 || statusCounts.rejected > 0\n ? [{ value: 'all' as FilterTab, label: t('actionTypes.evaluateBid.flow.status.all', { defaultValue: 'All' }) }]\n : []),\n ];\n\n return (\n <Stack gap=\"md\">\n <GroupProposalStatus editor={editor} block={block} runtime={runtime} />\n {runtime?.state !== 'awaiting_readback' && <ActAsGroupSection value={actAs} onChange={setActAs} isDisabled={isDisabled} actionLabel=\"decide this application\" />}\n {!deedDid || !collectionId ? (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n {t('actionTypes.shared.errors.configRequired', {\n defaultValue: 'Configure {{did}} and {{claimCollection}} in template mode before running this action.',\n did: 'DID',\n claimCollection: 'claim collection',\n })}\n </Alert>\n ) : (\n <>\n {/* Filter tabs */}\n <Group justify=\"space-between\" align=\"center\">\n <Group gap={0}>\n {filterTabs.map((tab) => (\n <UnstyledButton\n key={tab.value}\n onClick={() => setActiveFilter(tab.value)}\n px={12}\n py={6}\n style={{\n borderRadius: 8,\n background: activeFilter === tab.value ? 'color-mix(in srgb, var(--mantine-color-text) 10%, transparent)' : 'transparent',\n transition: 'background 150ms ease',\n }}\n >\n <Text size=\"sm\" fw={500} c={activeFilter === tab.value ? 'var(--mantine-color-text)' : 'dimmed'}>\n {tab.label}\n </Text>\n </UnstyledButton>\n ))}\n </Group>\n <Group gap={4}>\n <DownloadCsvButton onDownload={handleDownloadBidsCsv} disabled={loadingBids || bids.length === 0} label=\"Download bids CSV\" onError={setError} />\n <DownloadZipButton onDownload={handleDownloadBidsZip} disabled={loadingBids || bids.length === 0} label=\"Download bids + media (ZIP)\" onError={setError} />\n <ActionIcon variant=\"subtle\" color=\"gray\" size=\"sm\">\n <IconFilter size={16} />\n </ActionIcon>\n </Group>\n </Group>\n\n {/* Loading */}\n {loadingBids && (\n <Group gap=\"xs\" justify=\"center\" py=\"md\">\n <Loader size=\"xs\" />\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateBid.flow.loadingBids', { defaultValue: 'Loading bids...' })}\n </Text>\n </Group>\n )}\n\n {/* Empty state */}\n {!loadingBids && filteredBids.length === 0 && (\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\" py=\"md\">\n {bids.length === 0\n ? t('actionTypes.evaluateBid.flow.empty.allCollections', { defaultValue: 'No bids available for this collection.' })\n : t('actionTypes.evaluateBid.flow.empty.filtered', { filter: activeFilter, defaultValue: `No ${activeFilter} bids found.` })}\n </Text>\n )}\n\n {/* Bid list */}\n {filteredBids.length > 0 && (\n <Stack gap={12}>\n {filteredBids.map((bid) => {\n const status = getBidStatus(bid, t, statusContext);\n const profile = profilesByDid[bid.did];\n const displayName = profile?.displayname || bid.did || bid.address;\n const avatarLabel = (profile?.displayname || bid.did || bid.address || '?')[0]?.toUpperCase();\n return (\n <ListItemContainer key={bid.id} isChecked={false} onClick={() => setSelectedBidId(bid.id)}>\n <Group gap={16} align=\"center\" style={{ flex: 1, minWidth: 0 }}>\n {/* Avatar */}\n <Box\n style={{\n width: 32,\n height: 32,\n borderRadius: '50%',\n background: 'var(--mantine-color-neutralColor-4)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n fontSize: 14,\n fontWeight: 500,\n color: 'var(--mantine-color-dimmed)',\n backgroundImage: profile?.avatarUrl ? `url(${profile.avatarUrl})` : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n }}\n >\n {profile?.avatarUrl ? null : avatarLabel}\n </Box>\n {/* Name + address */}\n <Stack gap={0} style={{ flex: 1, minWidth: 0 }}>\n <Text fw={500} size=\"md\" truncate style={{ lineHeight: 1.5 }}>\n {displayName}\n </Text>\n <Text size=\"xs\" c=\"dimmed\" truncate>\n {truncateAddress(bid.address)}\n </Text>\n </Stack>\n </Group>\n {/* Status + time */}\n <Stack gap={0} align=\"flex-end\" style={{ flexShrink: 0, minWidth: 80 }}>\n <Text fw={500} size=\"md\" c={status.color === 'green' ? 'green' : status.color === 'red' ? 'red' : undefined} style={{ lineHeight: 1.5 }}>\n {status.color === 'green' && <IconCheck size={14} style={{ verticalAlign: 'middle', marginRight: 2 }} />}\n {status.label}\n </Text>\n <Text size=\"xs\" c=\"dimmed\">\n {getTimeAgo(bid.created || '')}\n </Text>\n </Stack>\n </ListItemContainer>\n );\n })}\n </Stack>\n )}\n </>\n )}\n\n {error && (\n <Alert color=\"red\" styles={actionAlertStyles}>\n {error}\n </Alert>\n )}\n </Stack>\n );\n};\n"],"mappings":"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","names":["handlers"]}
@@ -0,0 +1,297 @@
1
+ import {
2
+ parseEvaluateClaimActionInputs,
3
+ serializeEvaluateClaimActionInputs
4
+ } from "./chunk-DIQRZP7Z.js";
5
+ import {
6
+ formatCollectionOptionLabel
7
+ } from "./chunk-EKBQ7K4N.js";
8
+ import {
9
+ BasePrimaryButton
10
+ } from "./chunk-K74XQ4Q5.js";
11
+ import {
12
+ DataInput
13
+ } from "./chunk-4PONO4US.js";
14
+ import "./chunk-XPBKU3JX.js";
15
+ import {
16
+ BaseSelect
17
+ } from "./chunk-4NAFQF6V.js";
18
+ import "./chunk-NZ7AXA7B.js";
19
+ import {
20
+ extractSurveyAnswerSchema
21
+ } from "./chunk-F4PTFXZH.js";
22
+ import "./chunk-IH4T7V4C.js";
23
+ import "./chunk-PYNDJDWZ.js";
24
+ import "./chunk-NIXT2SBH.js";
25
+ import "./chunk-JIDTNKKL.js";
26
+ import "./chunk-JVROGQ7Q.js";
27
+ import "./chunk-IIIZZ4E4.js";
28
+ import "./chunk-HT6L7A5M.js";
29
+ import "./chunk-N3ORMGAI.js";
30
+ import "./chunk-NCSGIRRQ.js";
31
+ import {
32
+ actionAlertStyles
33
+ } from "./chunk-6GKJR52N.js";
34
+ import "./chunk-EBFFDDAS.js";
35
+ import {
36
+ useBlocknoteHandlers,
37
+ useTranslate
38
+ } from "./chunk-4DGCCXD6.js";
39
+ import "./chunk-7W7UUUIE.js";
40
+ import "./chunk-TS2LNBF2.js";
41
+
42
+ // src/mantine/blocks/action/actionTypes/evaluateClaim/EvaluateClaimConfig.tsx
43
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
44
+ import { Alert, Button, Group, Loader, Stack, Switch, Text } from "@mantine/core";
45
+ var EvaluateClaimConfig = ({ inputs, onInputsChange, editor, blockId }) => {
46
+ const t = useTranslate();
47
+ const handlers = useBlocknoteHandlers();
48
+ const [local, setLocal] = useState(() => parseEvaluateClaimActionInputs(inputs));
49
+ const [collections, setCollections] = useState([]);
50
+ const [loadingCollections, setLoadingCollections] = useState(false);
51
+ const [error, setError] = useState(null);
52
+ const localRef = useRef(local);
53
+ useEffect(() => {
54
+ localRef.current = local;
55
+ }, [local]);
56
+ useEffect(() => {
57
+ const parsed = parseEvaluateClaimActionInputs(inputs);
58
+ setLocal(parsed);
59
+ localRef.current = parsed;
60
+ }, [inputs]);
61
+ const update = useCallback(
62
+ (patch) => {
63
+ const updated = { ...localRef.current, ...patch };
64
+ localRef.current = updated;
65
+ setLocal(updated);
66
+ onInputsChange(serializeEvaluateClaimActionInputs(updated));
67
+ },
68
+ [onInputsChange]
69
+ );
70
+ const [schemaLoading, setSchemaLoading] = useState(false);
71
+ const [schemaError, setSchemaError] = useState(null);
72
+ const fetchGenRef = useRef(0);
73
+ const materialiseSurveySchema = useCallback(
74
+ async (deedDid, collectionId) => {
75
+ if (!deedDid || !collectionId) return;
76
+ const gen = ++fetchGenRef.current;
77
+ setSchemaLoading(true);
78
+ setSchemaError(null);
79
+ try {
80
+ const result = await handlers.getDeedSurveyTemplate(deedDid, collectionId);
81
+ if (gen !== fetchGenRef.current) return;
82
+ const surveySchema = extractSurveyAnswerSchema(result?.surveyTemplate);
83
+ update({ surveyAnswersSchema: surveySchema });
84
+ if (surveySchema.length === 0) {
85
+ setSchemaError(
86
+ t("actionTypes.evaluateClaim.config.surveyHasNoQuestions", {
87
+ defaultValue: "Survey has no recognised questions \u2014 downstream blocks will only see baseline evaluation fields."
88
+ })
89
+ );
90
+ }
91
+ } catch (err) {
92
+ if (gen !== fetchGenRef.current) return;
93
+ setSchemaError(err instanceof Error ? err.message : t("actionTypes.shared.errors.surveyTemplateLoad", { defaultValue: "Failed to load survey template" }));
94
+ update({ surveyAnswersSchema: [] });
95
+ } finally {
96
+ if (gen === fetchGenRef.current) setSchemaLoading(false);
97
+ }
98
+ },
99
+ [handlers, update]
100
+ );
101
+ useEffect(() => {
102
+ if (local.deedDid.trim() && local.collectionId && local.surveyAnswersSchema.length === 0 && !schemaLoading) {
103
+ void materialiseSurveySchema(local.deedDid.trim(), local.collectionId);
104
+ }
105
+ }, [local.deedDid, local.collectionId]);
106
+ const fetchCollections = useCallback(async () => {
107
+ const deedDid = local.deedDid.trim();
108
+ if (!deedDid) {
109
+ setError(t("actionTypes.shared.errors.didRequired", { defaultValue: "Please enter a {{did}} first", did: "DID" }));
110
+ return;
111
+ }
112
+ const persisted = { ...local, deedDid };
113
+ setLocal(persisted);
114
+ onInputsChange(serializeEvaluateClaimActionInputs(persisted));
115
+ setLoadingCollections(true);
116
+ setError(null);
117
+ try {
118
+ const response = await handlers.getClaimCollections(deedDid);
119
+ const fetched = response?.collections || [];
120
+ setCollections(fetched);
121
+ if (fetched.length === 0) {
122
+ setError(
123
+ t("actionTypes.shared.errors.noCollections", { defaultValue: "No {{claimCollections}} found for this {{did}}", claimCollections: "claim collections", did: "DID" })
124
+ );
125
+ }
126
+ } catch (err) {
127
+ setCollections([]);
128
+ setError(
129
+ err instanceof Error ? err.message : t("actionTypes.shared.errors.fetchCollections", { defaultValue: "Failed to fetch {{claimCollections}}", claimCollections: "claim collections" })
130
+ );
131
+ } finally {
132
+ setLoadingCollections(false);
133
+ }
134
+ }, [handlers, local, onInputsChange, update]);
135
+ useEffect(() => {
136
+ if (local.deedDid.trim() && local.collectionId && collections.length === 0 && !loadingCollections) {
137
+ void fetchCollections();
138
+ }
139
+ }, [local.deedDid, local.collectionId]);
140
+ const unlistedCollectionId = local.collectionId && collections.length > 0 && !collections.some((c) => c.id === local.collectionId) ? local.collectionId : "";
141
+ const collectionOptions = useMemo(() => {
142
+ const options = collections.map((collection) => ({
143
+ value: collection.id,
144
+ label: formatCollectionOptionLabel(collection)
145
+ }));
146
+ if (unlistedCollectionId) options.unshift({ value: unlistedCollectionId, label: `#${unlistedCollectionId}` });
147
+ return options;
148
+ }, [collections, unlistedCollectionId]);
149
+ const updateXeroDefaults = useCallback(
150
+ (patch) => {
151
+ update({ xeroInvoiceDefaults: { ...localRef.current.xeroInvoiceDefaults, ...patch } });
152
+ },
153
+ [update]
154
+ );
155
+ return /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(
156
+ DataInput,
157
+ {
158
+ label: "DID",
159
+ placeholder: t("actionTypes.shared.didPlaceholder", { defaultValue: "Enter deed {{did}}", did: "DID" }),
160
+ description: t("actionTypes.shared.didDescription", {
161
+ defaultValue: "The {{did}} identifier for fetching {{claimCollections}}.",
162
+ did: "DID",
163
+ claimCollections: "claim collections"
164
+ }),
165
+ value: local.deedDid,
166
+ onChange: (value) => update({ deedDid: value }),
167
+ editorDocument: editor?.document || [],
168
+ currentBlockId: blockId,
169
+ required: true
170
+ }
171
+ ), /* @__PURE__ */ React.createElement(
172
+ Button,
173
+ {
174
+ size: "xs",
175
+ variant: "subtle",
176
+ onClick: () => {
177
+ const entityDid = handlers.getEntityDid();
178
+ if (entityDid) update({ deedDid: entityDid });
179
+ }
180
+ },
181
+ t("actionTypes.shared.useCurrentEntity", { defaultValue: "Use Current {{entity}}", entity: "Entity" })
182
+ ), /* @__PURE__ */ React.createElement(BasePrimaryButton, { onClick: fetchCollections, disabled: !local.deedDid.trim() || loadingCollections }, loadingCollections ? /* @__PURE__ */ React.createElement(Loader, { size: "xs", color: "dark" }) : t("actionTypes.shared.getCollections", { defaultValue: "Get {{collections}}", collections: "Collections" })), error && /* @__PURE__ */ React.createElement(Alert, { color: "red", styles: actionAlertStyles }, error), unlistedCollectionId && /* @__PURE__ */ React.createElement(Alert, { color: "yellow", styles: actionAlertStyles }, t("actionTypes.shared.errors.collectionNotListed", {
183
+ defaultValue: "Saved collection #{{collectionId}} was not returned for this {{did}}. It has been kept \u2014 re-check the {{did}} or pick another collection to change it.",
184
+ collectionId: unlistedCollectionId,
185
+ did: "DID"
186
+ })), collectionOptions.length > 0 && /* @__PURE__ */ React.createElement(
187
+ BaseSelect,
188
+ {
189
+ label: "Claim Collection",
190
+ placeholder: t("actionTypes.shared.collectionPlaceholder", { defaultValue: "Select a collection" }),
191
+ value: local.collectionId || null,
192
+ onChange: (value) => {
193
+ const next = value || "";
194
+ update({ collectionId: next, surveyAnswersSchema: [] });
195
+ },
196
+ data: collectionOptions,
197
+ required: true,
198
+ searchable: true
199
+ }
200
+ ), local.collectionId && /* @__PURE__ */ React.createElement(Stack, { gap: 4 }, schemaLoading && /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, t("actionTypes.shared.loadingSurveySchema", { defaultValue: "Loading survey schema..." })), !schemaLoading && local.surveyAnswersSchema.length > 0 && /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, t("actionTypes.evaluateClaim.config.outputsPrefix", { defaultValue: "Outputs" }), " ", /* @__PURE__ */ React.createElement("code", null, "surveyAnswers"), " ", t("actionTypes.evaluateClaim.config.outputsWith", { defaultValue: "with" }), " ", local.surveyAnswersSchema.length, " ", t("actionTypes.evaluateClaim.config.typedField", {
201
+ count: local.surveyAnswersSchema.length,
202
+ defaultValue: local.surveyAnswersSchema.length === 1 ? "typed field" : "typed fields"
203
+ }), ". ", t("actionTypes.evaluateClaim.config.listenerBlocksCanReference", { defaultValue: "Listener blocks can reference" }), " ", /* @__PURE__ */ React.createElement("code", null, "$", "{", "thisBlock.output.surveyAnswers.<field>", "}"), "."), schemaError && /* @__PURE__ */ React.createElement(Alert, { color: "yellow", styles: actionAlertStyles }, schemaError)), local.collectionId && /* @__PURE__ */ React.createElement(Stack, { gap: "xs" }, /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 600, mt: "md" }, t("actionTypes.evaluateClaim.config.xeroSectionTitle", { defaultValue: "{{xero}} bookkeeping (optional)", xero: "Xero" })), /* @__PURE__ */ React.createElement(
204
+ Switch,
205
+ {
206
+ label: t("actionTypes.evaluateClaim.config.xeroOracleInvoiceOnApprove", { defaultValue: "{{xero}} oracle invoice on approval", xero: "Xero" }),
207
+ description: t("actionTypes.evaluateClaim.config.xeroOracleInvoiceOnApproveDescription", {
208
+ defaultValue: "Create a {{xero}} draft invoice via the contracted {{xero}}-oracle when a claim is approved.",
209
+ xero: "Xero"
210
+ }),
211
+ checked: local.xeroOracleInvoiceOnApprove,
212
+ onChange: (event) => update({ xeroOracleInvoiceOnApprove: event.currentTarget.checked })
213
+ }
214
+ ), local.xeroOracleInvoiceOnApprove && /* @__PURE__ */ React.createElement(Stack, { gap: "xs", mt: 4 }, /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, t("actionTypes.evaluateClaim.config.xeroInvoiceDefaultsDescription", {
215
+ defaultValue: "Optional invoice defaults pinned into the oracle payload. Anything left empty is extracted from the claim material; Status defaults to Draft."
216
+ })), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
217
+ BaseSelect,
218
+ {
219
+ label: t("actionTypes.evaluateClaim.config.xeroInvoiceType", { defaultValue: "Type" }),
220
+ data: [
221
+ { value: "ACCREC", label: "Sale (ACCREC)" },
222
+ { value: "ACCPAY", label: "Bill (ACCPAY)" }
223
+ ],
224
+ value: local.xeroInvoiceDefaults.Type || "ACCREC",
225
+ onChange: (value) => updateXeroDefaults({ Type: value || "ACCREC" })
226
+ }
227
+ ), /* @__PURE__ */ React.createElement(
228
+ BaseSelect,
229
+ {
230
+ label: t("actionTypes.evaluateClaim.config.xeroInvoiceStatus", { defaultValue: "Status" }),
231
+ data: [
232
+ { value: "DRAFT", label: "Draft" },
233
+ { value: "SUBMITTED", label: "Submitted" }
234
+ ],
235
+ value: local.xeroInvoiceDefaults.Status || "DRAFT",
236
+ onChange: (value) => updateXeroDefaults({ Status: value || "DRAFT" })
237
+ }
238
+ )), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
239
+ DataInput,
240
+ {
241
+ label: t("actionTypes.evaluateClaim.config.xeroCurrencyCode", { defaultValue: "Currency (optional)" }),
242
+ placeholder: "USD",
243
+ value: local.xeroInvoiceDefaults.CurrencyCode,
244
+ onChange: (value) => updateXeroDefaults({ CurrencyCode: value }),
245
+ editorDocument: editor?.document || [],
246
+ currentBlockId: blockId
247
+ }
248
+ ), /* @__PURE__ */ React.createElement(
249
+ DataInput,
250
+ {
251
+ label: t("actionTypes.evaluateClaim.config.xeroTenantId", { defaultValue: "{{xero}} org (optional)", xero: "Xero" }),
252
+ value: local.xeroInvoiceDefaults.tenant_id,
253
+ onChange: (value) => updateXeroDefaults({ tenant_id: value }),
254
+ editorDocument: editor?.document || [],
255
+ currentBlockId: blockId
256
+ }
257
+ )), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
258
+ DataInput,
259
+ {
260
+ label: t("actionTypes.evaluateClaim.config.xeroContactId", { defaultValue: "Contact ID (optional)" }),
261
+ description: t("actionTypes.evaluateClaim.config.xeroContactIdDescription", {
262
+ defaultValue: "{{xero}} ContactID (UUID). Preferred over Contact name.",
263
+ xero: "Xero"
264
+ }),
265
+ value: local.xeroInvoiceDefaults.ContactID,
266
+ onChange: (value) => updateXeroDefaults({ ContactID: value }),
267
+ editorDocument: editor?.document || [],
268
+ currentBlockId: blockId
269
+ }
270
+ ), /* @__PURE__ */ React.createElement(
271
+ DataInput,
272
+ {
273
+ label: t("actionTypes.evaluateClaim.config.xeroContactName", { defaultValue: "Contact name (optional)" }),
274
+ value: local.xeroInvoiceDefaults.ContactName,
275
+ onChange: (value) => updateXeroDefaults({ ContactName: value }),
276
+ editorDocument: editor?.document || [],
277
+ currentBlockId: blockId
278
+ }
279
+ )), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
280
+ DataInput,
281
+ {
282
+ label: t("actionTypes.evaluateClaim.config.xeroAccountCode", { defaultValue: "Account code (optional)" }),
283
+ description: t("actionTypes.evaluateClaim.config.xeroAccountCodeDescription", {
284
+ defaultValue: "Chart-of-accounts code applied to every invoice line. Defaults to 200 (Sales)."
285
+ }),
286
+ placeholder: "200",
287
+ value: local.xeroInvoiceDefaults.AccountCode,
288
+ onChange: (value) => updateXeroDefaults({ AccountCode: value }),
289
+ editorDocument: editor?.document || [],
290
+ currentBlockId: blockId
291
+ }
292
+ )))));
293
+ };
294
+ export {
295
+ EvaluateClaimConfig
296
+ };
297
+ //# sourceMappingURL=EvaluateClaimConfig-3D4F5LHU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/evaluateClaim/EvaluateClaimConfig.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Alert, Button, Group, Loader, Stack, Switch, Text } from '@mantine/core';\nimport { DataInput } from '@/mantine/components/DataInput';\nimport BaseSelect from '@/mantine/components/Base/BaseSelect';\nimport BasePrimaryButton from '@/mantine/components/Base/BasePrimaryButton';\nimport type { ActionTypeConfigProps } from '../../actionTypeUI';\nimport { parseEvaluateClaimActionInputs, serializeEvaluateClaimActionInputs, type EvaluateClaimActionInputs, type XeroInvoiceDefaultsInputs } from './types';\nimport { useBlocknoteHandlers, useTranslate, type ClaimCollection } from '@/mantine/context/BlocknoteContext';\nimport { actionAlertStyles } from '../../alertStyles';\nimport { formatCollectionOptionLabel } from '../../collectionLabel';\nimport { extractSurveyAnswerSchema } from '@/core/lib/actionRegistry/actions/claim/surveySchema';\n\nexport const EvaluateClaimConfig: React.FC<ActionTypeConfigProps> = ({ inputs, onInputsChange, editor, blockId }) => {\n const t = useTranslate();\n const handlers = useBlocknoteHandlers();\n const [local, setLocal] = useState<EvaluateClaimActionInputs>(() => parseEvaluateClaimActionInputs(inputs));\n const [collections, setCollections] = useState<ClaimCollection[]>([]);\n const [loadingCollections, setLoadingCollections] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Mirrors `local` so async fetch callbacks merge against the freshest state\n // — without this, a survey fetch resolving after the user switches\n // collections would clobber the new collectionId. Same trick as ClaimConfig.\n const localRef = useRef(local);\n useEffect(() => {\n localRef.current = local;\n }, [local]);\n\n useEffect(() => {\n const parsed = parseEvaluateClaimActionInputs(inputs);\n setLocal(parsed);\n localRef.current = parsed;\n }, [inputs]);\n\n const update = useCallback(\n (patch: Partial<EvaluateClaimActionInputs>) => {\n const updated = { ...localRef.current, ...patch };\n localRef.current = updated;\n setLocal(updated);\n onInputsChange(serializeEvaluateClaimActionInputs(updated));\n },\n [onInputsChange]\n );\n\n const [schemaLoading, setSchemaLoading] = useState(false);\n const [schemaError, setSchemaError] = useState<string | null>(null);\n // Generation counter — discards results from stale fetches when the user\n // switches collection mid-flight.\n const fetchGenRef = useRef(0);\n\n /**\n * Fetch the survey template for the picked collection and materialise its\n * answer schema into inputs. Drives the dynamic outputSchema so downstream\n * blocks can reference `${evalBlock.output.surveyAnswers.<field>}`.\n */\n const materialiseSurveySchema = useCallback(\n async (deedDid: string, collectionId: string) => {\n if (!deedDid || !collectionId) return;\n const gen = ++fetchGenRef.current;\n setSchemaLoading(true);\n setSchemaError(null);\n try {\n const result = await handlers.getDeedSurveyTemplate(deedDid, collectionId);\n if (gen !== fetchGenRef.current) return;\n const surveySchema = extractSurveyAnswerSchema(result?.surveyTemplate);\n update({ surveyAnswersSchema: surveySchema });\n if (surveySchema.length === 0) {\n setSchemaError(\n t('actionTypes.evaluateClaim.config.surveyHasNoQuestions', {\n defaultValue: 'Survey has no recognised questions — downstream blocks will only see baseline evaluation fields.',\n })\n );\n }\n } catch (err) {\n if (gen !== fetchGenRef.current) return;\n setSchemaError(err instanceof Error ? err.message : t('actionTypes.shared.errors.surveyTemplateLoad', { defaultValue: 'Failed to load survey template' }));\n update({ surveyAnswersSchema: [] });\n } finally {\n if (gen === fetchGenRef.current) setSchemaLoading(false);\n }\n },\n [handlers, update]\n );\n\n // Auto-materialise when a collection is set but no schema has been\n // persisted yet (covers freshly-loaded blocks and prior-fetch failures).\n useEffect(() => {\n if (local.deedDid.trim() && local.collectionId && local.surveyAnswersSchema.length === 0 && !schemaLoading) {\n void materialiseSurveySchema(local.deedDid.trim(), local.collectionId);\n }\n }, [local.deedDid, local.collectionId]);\n\n const fetchCollections = useCallback(async () => {\n const deedDid = local.deedDid.trim();\n if (!deedDid) {\n setError(t('actionTypes.shared.errors.didRequired', { defaultValue: 'Please enter a {{did}} first', did: 'DID' }));\n return;\n }\n\n const persisted = { ...local, deedDid };\n setLocal(persisted);\n onInputsChange(serializeEvaluateClaimActionInputs(persisted));\n\n setLoadingCollections(true);\n setError(null);\n try {\n const response = await handlers.getClaimCollections(deedDid);\n const fetched = response?.collections || [];\n setCollections(fetched);\n\n if (fetched.length === 0) {\n setError(\n t('actionTypes.shared.errors.noCollections', { defaultValue: 'No {{claimCollections}} found for this {{did}}', claimCollections: 'claim collections', did: 'DID' })\n );\n }\n\n // Deliberately NOT clearing `collectionId` when the fetched list does not\n // contain it. A read that comes back short — indexer lag, a paginated\n // response, a transient empty result — is not evidence the saved\n // collection is gone, and this fetch auto-runs on every panel open. The\n // id is kept and the mismatch surfaced (`unlistedCollectionId`) so the\n // author decides, instead of silently destroying saved configuration.\n } catch (err) {\n setCollections([]);\n setError(\n err instanceof Error\n ? err.message\n : t('actionTypes.shared.errors.fetchCollections', { defaultValue: 'Failed to fetch {{claimCollections}}', claimCollections: 'claim collections' })\n );\n } finally {\n setLoadingCollections(false);\n }\n }, [handlers, local, onInputsChange, update]);\n\n // On open, auto-load the collection list when one is already chosen so the\n // saved selection is visible. The id persists in inputs but the options are\n // fetched (not stored) — without this the dropdown stays hidden on reopen and\n // the step looks unconfigured.\n useEffect(() => {\n if (local.deedDid.trim() && local.collectionId && collections.length === 0 && !loadingCollections) {\n void fetchCollections();\n }\n }, [local.deedDid, local.collectionId]);\n\n // The saved collection is configured but absent from the fetched list. Kept\n // (never auto-cleared) and shown as a selectable option so the picker still\n // reflects the real saved value.\n const unlistedCollectionId = local.collectionId && collections.length > 0 && !collections.some((c) => c.id === local.collectionId) ? local.collectionId : '';\n\n const collectionOptions = useMemo(() => {\n const options = collections.map((collection) => ({\n value: collection.id,\n label: formatCollectionOptionLabel(collection),\n }));\n if (unlistedCollectionId) options.unshift({ value: unlistedCollectionId, label: `#${unlistedCollectionId}` });\n return options;\n }, [collections, unlistedCollectionId]);\n\n const updateXeroDefaults = useCallback(\n (patch: Partial<XeroInvoiceDefaultsInputs>) => {\n update({ xeroInvoiceDefaults: { ...localRef.current.xeroInvoiceDefaults, ...patch } });\n },\n [update]\n );\n\n return (\n <Stack gap=\"md\">\n <DataInput\n label=\"DID\"\n placeholder={t('actionTypes.shared.didPlaceholder', { defaultValue: 'Enter deed {{did}}', did: 'DID' })}\n description={t('actionTypes.shared.didDescription', {\n defaultValue: 'The {{did}} identifier for fetching {{claimCollections}}.',\n did: 'DID',\n claimCollections: 'claim collections',\n })}\n value={local.deedDid}\n onChange={(value) => update({ deedDid: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n required\n />\n\n <Button\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => {\n const entityDid = handlers.getEntityDid();\n if (entityDid) update({ deedDid: entityDid });\n }}\n >\n {t('actionTypes.shared.useCurrentEntity', { defaultValue: 'Use Current {{entity}}', entity: 'Entity' })}\n </Button>\n\n <BasePrimaryButton onClick={fetchCollections} disabled={!local.deedDid.trim() || loadingCollections}>\n {loadingCollections ? <Loader size=\"xs\" color=\"dark\" /> : t('actionTypes.shared.getCollections', { defaultValue: 'Get {{collections}}', collections: 'Collections' })}\n </BasePrimaryButton>\n\n {error && (\n <Alert color=\"red\" styles={actionAlertStyles}>\n {error}\n </Alert>\n )}\n\n {unlistedCollectionId && (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n {t('actionTypes.shared.errors.collectionNotListed', {\n defaultValue: 'Saved collection #{{collectionId}} was not returned for this {{did}}. It has been kept — re-check the {{did}} or pick another collection to change it.',\n collectionId: unlistedCollectionId,\n did: 'DID',\n })}\n </Alert>\n )}\n\n {collectionOptions.length > 0 && (\n <BaseSelect\n label=\"Claim Collection\"\n placeholder={t('actionTypes.shared.collectionPlaceholder', { defaultValue: 'Select a collection' })}\n value={local.collectionId || null}\n onChange={(value) => {\n const next = value || '';\n // Clear the stale schema; the auto-materialise effect picks up\n // the new collection and refetches.\n update({ collectionId: next, surveyAnswersSchema: [] });\n }}\n data={collectionOptions}\n required\n searchable\n />\n )}\n\n {local.collectionId && (\n <Stack gap={4}>\n {schemaLoading && (\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.shared.loadingSurveySchema', { defaultValue: 'Loading survey schema...' })}\n </Text>\n )}\n {!schemaLoading && local.surveyAnswersSchema.length > 0 && (\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateClaim.config.outputsPrefix', { defaultValue: 'Outputs' })} <code>surveyAnswers</code>{' '}\n {t('actionTypes.evaluateClaim.config.outputsWith', { defaultValue: 'with' })} {local.surveyAnswersSchema.length}{' '}\n {t('actionTypes.evaluateClaim.config.typedField', {\n count: local.surveyAnswersSchema.length,\n defaultValue: local.surveyAnswersSchema.length === 1 ? 'typed field' : 'typed fields',\n })}\n . {t('actionTypes.evaluateClaim.config.listenerBlocksCanReference', { defaultValue: 'Listener blocks can reference' })}{' '}\n <code>\n ${'{'}thisBlock.output.surveyAnswers.&lt;field&gt;{'}'}\n </code>\n .\n </Text>\n )}\n {schemaError && (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n {schemaError}\n </Alert>\n )}\n </Stack>\n )}\n\n {local.collectionId && (\n <Stack gap=\"xs\">\n <Text size=\"sm\" fw={600} mt=\"md\">\n {t('actionTypes.evaluateClaim.config.xeroSectionTitle', { defaultValue: '{{xero}} bookkeeping (optional)', xero: 'Xero' })}\n </Text>\n <Switch\n label={t('actionTypes.evaluateClaim.config.xeroOracleInvoiceOnApprove', { defaultValue: '{{xero}} oracle invoice on approval', xero: 'Xero' })}\n description={t('actionTypes.evaluateClaim.config.xeroOracleInvoiceOnApproveDescription', {\n defaultValue: 'Create a {{xero}} draft invoice via the contracted {{xero}}-oracle when a claim is approved.',\n xero: 'Xero',\n })}\n checked={local.xeroOracleInvoiceOnApprove}\n onChange={(event) => update({ xeroOracleInvoiceOnApprove: event.currentTarget.checked })}\n />\n {local.xeroOracleInvoiceOnApprove && (\n <Stack gap=\"xs\" mt={4}>\n <Text size=\"xs\" c=\"dimmed\">\n {t('actionTypes.evaluateClaim.config.xeroInvoiceDefaultsDescription', {\n defaultValue: 'Optional invoice defaults pinned into the oracle payload. Anything left empty is extracted from the claim material; Status defaults to Draft.',\n })}\n </Text>\n <Group grow>\n <BaseSelect\n label={t('actionTypes.evaluateClaim.config.xeroInvoiceType', { defaultValue: 'Type' })}\n data={[\n { value: 'ACCREC', label: 'Sale (ACCREC)' },\n { value: 'ACCPAY', label: 'Bill (ACCPAY)' },\n ]}\n value={local.xeroInvoiceDefaults.Type || 'ACCREC'}\n onChange={(value) => updateXeroDefaults({ Type: value || 'ACCREC' })}\n />\n <BaseSelect\n label={t('actionTypes.evaluateClaim.config.xeroInvoiceStatus', { defaultValue: 'Status' })}\n data={[\n { value: 'DRAFT', label: 'Draft' },\n { value: 'SUBMITTED', label: 'Submitted' },\n ]}\n value={local.xeroInvoiceDefaults.Status || 'DRAFT'}\n onChange={(value) => updateXeroDefaults({ Status: value || 'DRAFT' })}\n />\n </Group>\n <Group grow>\n <DataInput\n label={t('actionTypes.evaluateClaim.config.xeroCurrencyCode', { defaultValue: 'Currency (optional)' })}\n placeholder=\"USD\"\n value={local.xeroInvoiceDefaults.CurrencyCode}\n onChange={(value) => updateXeroDefaults({ CurrencyCode: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n />\n <DataInput\n label={t('actionTypes.evaluateClaim.config.xeroTenantId', { defaultValue: '{{xero}} org (optional)', xero: 'Xero' })}\n value={local.xeroInvoiceDefaults.tenant_id}\n onChange={(value) => updateXeroDefaults({ tenant_id: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n />\n </Group>\n <Group grow>\n <DataInput\n label={t('actionTypes.evaluateClaim.config.xeroContactId', { defaultValue: 'Contact ID (optional)' })}\n description={t('actionTypes.evaluateClaim.config.xeroContactIdDescription', {\n defaultValue: '{{xero}} ContactID (UUID). Preferred over Contact name.',\n xero: 'Xero',\n })}\n value={local.xeroInvoiceDefaults.ContactID}\n onChange={(value) => updateXeroDefaults({ ContactID: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n />\n <DataInput\n label={t('actionTypes.evaluateClaim.config.xeroContactName', { defaultValue: 'Contact name (optional)' })}\n value={local.xeroInvoiceDefaults.ContactName}\n onChange={(value) => updateXeroDefaults({ ContactName: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n />\n </Group>\n <Group grow>\n <DataInput\n label={t('actionTypes.evaluateClaim.config.xeroAccountCode', { defaultValue: 'Account code (optional)' })}\n description={t('actionTypes.evaluateClaim.config.xeroAccountCodeDescription', {\n defaultValue: 'Chart-of-accounts code applied to every invoice line. Defaults to 200 (Sales).',\n })}\n placeholder=\"200\"\n value={local.xeroInvoiceDefaults.AccountCode}\n onChange={(value) => updateXeroDefaults({ AccountCode: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n />\n </Group>\n </Stack>\n )}\n </Stack>\n )}\n </Stack>\n );\n};\n"],"mappings":"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","names":[]}