@ixo/editor 6.33.0 → 6.35.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-U2SX5M7F.js +365 -0
  4. package/dist/BidFlowDetail-U2SX5M7F.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-I4OQSHAB.js +641 -0
  20. package/dist/ClaimFlowDetail-I4OQSHAB.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-LQHKB227.js +647 -0
  24. package/dist/CollectionLifecycleFlowDetail-LQHKB227.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-LHXVCCPQ.js +1276 -0
  28. package/dist/CollectionUsersFlowDetail-LHXVCCPQ.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-2EXGNBYC.js +564 -0
  74. package/dist/EvaluateBidFlowDetail-2EXGNBYC.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-QKHJVEDE.js +2237 -0
  78. package/dist/EvaluateClaimFlowDetail-QKHJVEDE.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-4TE6UCEB.js +83 -0
  166. package/dist/IdentityCreateFlowDetail-4TE6UCEB.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-HPVZAHVY.js +57 -0
  170. package/dist/IidCreateFlowDetail-HPVZAHVY.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-FEU43HML.js +421 -0
  174. package/dist/KycVerifyFlowDetail-FEU43HML.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-MIBXUEKC.js +255 -0
  198. package/dist/OracleConfigureOracleFlowDetail-MIBXUEKC.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-HQU3UKEB.js +220 -0
  228. package/dist/OracleStoreSecretsAndConfigFlowDetail-HQU3UKEB.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-5RXWQ3KA.js +197 -0
  232. package/dist/OracleStoreSecretsFlowDetail-5RXWQ3KA.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-2FCRCNYV.js +235 -0
  236. package/dist/ProposalCreateFlowDetail-2FCRCNYV.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-3TUYY4HK.js +20 -0
  285. package/dist/chunk-3TUYY4HK.js.map +1 -0
  286. package/dist/chunk-4DGCCXD6.js +710 -0
  287. package/dist/chunk-4DGCCXD6.js.map +1 -0
  288. package/dist/chunk-4NAFQF6V.js +11 -0
  289. package/dist/chunk-4NAFQF6V.js.map +1 -0
  290. package/dist/chunk-4PONO4US.js +799 -0
  291. package/dist/chunk-4PONO4US.js.map +1 -0
  292. package/dist/chunk-4TMOIK5M.js +21 -0
  293. package/dist/chunk-4TMOIK5M.js.map +1 -0
  294. package/dist/chunk-5E6Z6JJN.js +4456 -0
  295. package/dist/chunk-5E6Z6JJN.js.map +1 -0
  296. package/dist/chunk-5IH3VC5I.js +102 -0
  297. package/dist/chunk-5IH3VC5I.js.map +1 -0
  298. package/dist/chunk-5NTKDOP6.js +89 -0
  299. package/dist/chunk-5NTKDOP6.js.map +1 -0
  300. package/dist/chunk-5O2SFRGU.js +18 -0
  301. package/dist/chunk-5O2SFRGU.js.map +1 -0
  302. package/dist/chunk-632JLECF.js +55 -0
  303. package/dist/chunk-632JLECF.js.map +1 -0
  304. package/dist/chunk-676HDB7K.js +95 -0
  305. package/dist/chunk-676HDB7K.js.map +1 -0
  306. package/dist/chunk-6ESTNTSH.js +223 -0
  307. package/dist/chunk-6ESTNTSH.js.map +1 -0
  308. package/dist/chunk-6GKJR52N.js +15 -0
  309. package/dist/chunk-6GKJR52N.js.map +1 -0
  310. package/dist/chunk-6L4ZIKYU.js +23 -0
  311. package/dist/chunk-6L4ZIKYU.js.map +1 -0
  312. package/dist/chunk-76YX5R4L.js +11 -0
  313. package/dist/chunk-76YX5R4L.js.map +1 -0
  314. package/dist/chunk-7J3GFMN3.js +32 -0
  315. package/dist/chunk-7J3GFMN3.js.map +1 -0
  316. package/dist/chunk-7LSARC2G.js +102 -0
  317. package/dist/chunk-7LSARC2G.js.map +1 -0
  318. package/dist/chunk-7W7UUUIE.js +609 -0
  319. package/dist/chunk-7W7UUUIE.js.map +1 -0
  320. package/dist/chunk-7ZLW7H37.js +21 -0
  321. package/dist/chunk-7ZLW7H37.js.map +1 -0
  322. package/dist/chunk-AAZHI22G.js +18 -0
  323. package/dist/chunk-AAZHI22G.js.map +1 -0
  324. package/dist/chunk-ACNE455I.js +76 -0
  325. package/dist/chunk-ACNE455I.js.map +1 -0
  326. package/dist/chunk-BKLSSLPZ.js +27 -0
  327. package/dist/chunk-BKLSSLPZ.js.map +1 -0
  328. package/dist/chunk-BZ7UPUTY.js +417 -0
  329. package/dist/chunk-BZ7UPUTY.js.map +1 -0
  330. package/dist/chunk-CGFAICUE.js +28 -0
  331. package/dist/chunk-CGFAICUE.js.map +1 -0
  332. package/dist/chunk-CMCEWQ3C.js +19 -0
  333. package/dist/chunk-CMCEWQ3C.js.map +1 -0
  334. package/dist/chunk-CP4UV436.js +41 -0
  335. package/dist/chunk-CP4UV436.js.map +1 -0
  336. package/dist/chunk-DIQRZP7Z.js +51 -0
  337. package/dist/chunk-DIQRZP7Z.js.map +1 -0
  338. package/dist/chunk-EBFFDDAS.js +13 -0
  339. package/dist/chunk-EBFFDDAS.js.map +1 -0
  340. package/dist/chunk-EGVS23DR.js +85 -0
  341. package/dist/chunk-EGVS23DR.js.map +1 -0
  342. package/dist/chunk-EKBQ7K4N.js +15 -0
  343. package/dist/chunk-EKBQ7K4N.js.map +1 -0
  344. package/dist/chunk-EKQCZRAN.js +24 -0
  345. package/dist/chunk-EKQCZRAN.js.map +1 -0
  346. package/dist/chunk-EYKZIZ5J.js +48 -0
  347. package/dist/chunk-EYKZIZ5J.js.map +1 -0
  348. package/dist/{chunk-NEOPTPDF.js → chunk-F4PTFXZH.js} +11554 -22046
  349. package/dist/chunk-F4PTFXZH.js.map +1 -0
  350. package/dist/chunk-F5GTFCYV.js +3333 -0
  351. package/dist/chunk-F5GTFCYV.js.map +1 -0
  352. package/dist/chunk-FFYZXA75.js +58 -0
  353. package/dist/chunk-FFYZXA75.js.map +1 -0
  354. package/dist/chunk-GFGDHPZ2.js +22 -0
  355. package/dist/chunk-GFGDHPZ2.js.map +1 -0
  356. package/dist/chunk-GR3CDFID.js +18 -0
  357. package/dist/chunk-GR3CDFID.js.map +1 -0
  358. package/dist/chunk-GR4SIU32.js +104 -0
  359. package/dist/chunk-GR4SIU32.js.map +1 -0
  360. package/dist/chunk-H5E46IIS.js +18 -0
  361. package/dist/chunk-H5E46IIS.js.map +1 -0
  362. package/dist/chunk-HFHVAMZL.js +22 -0
  363. package/dist/chunk-HFHVAMZL.js.map +1 -0
  364. package/dist/chunk-HT6L7A5M.js +12 -0
  365. package/dist/chunk-HT6L7A5M.js.map +1 -0
  366. package/dist/chunk-I2FPFISM.js +301 -0
  367. package/dist/chunk-I2FPFISM.js.map +1 -0
  368. package/dist/chunk-IADAQJDH.js +28 -0
  369. package/dist/chunk-IADAQJDH.js.map +1 -0
  370. package/dist/chunk-IBOBCMQQ.js +99 -0
  371. package/dist/chunk-IBOBCMQQ.js.map +1 -0
  372. package/dist/chunk-IFWKRCFF.js +56 -0
  373. package/dist/chunk-IFWKRCFF.js.map +1 -0
  374. package/dist/chunk-IH4T7V4C.js +40 -0
  375. package/dist/chunk-IH4T7V4C.js.map +1 -0
  376. package/dist/chunk-IIIZZ4E4.js +1679 -0
  377. package/dist/chunk-IIIZZ4E4.js.map +1 -0
  378. package/dist/chunk-ILSFU3WD.js +83 -0
  379. package/dist/chunk-ILSFU3WD.js.map +1 -0
  380. package/dist/chunk-IX3VBV3L.js +43 -0
  381. package/dist/chunk-IX3VBV3L.js.map +1 -0
  382. package/dist/chunk-JB6ASLUJ.js +315 -0
  383. package/dist/chunk-JB6ASLUJ.js.map +1 -0
  384. package/dist/chunk-JBBFSORW.js +846 -0
  385. package/dist/chunk-JBBFSORW.js.map +1 -0
  386. package/dist/chunk-JIDTNKKL.js +1183 -0
  387. package/dist/chunk-JIDTNKKL.js.map +1 -0
  388. package/dist/chunk-JSPE6NGZ.js +22 -0
  389. package/dist/chunk-JSPE6NGZ.js.map +1 -0
  390. package/dist/chunk-JVROGQ7Q.js +150 -0
  391. package/dist/chunk-JVROGQ7Q.js.map +1 -0
  392. package/dist/chunk-K4WUMWNJ.js +32 -0
  393. package/dist/chunk-K4WUMWNJ.js.map +1 -0
  394. package/dist/chunk-K74XQ4Q5.js +11 -0
  395. package/dist/chunk-K74XQ4Q5.js.map +1 -0
  396. package/dist/chunk-KLLMJ4U3.js +22 -0
  397. package/dist/chunk-KLLMJ4U3.js.map +1 -0
  398. package/dist/chunk-LTKVCJ2E.js +27 -0
  399. package/dist/chunk-LTKVCJ2E.js.map +1 -0
  400. package/dist/chunk-M36DJTFZ.js +34 -0
  401. package/dist/chunk-M36DJTFZ.js.map +1 -0
  402. package/dist/chunk-MHM52LCJ.js +154 -0
  403. package/dist/chunk-MHM52LCJ.js.map +1 -0
  404. package/dist/chunk-MQCDMHRZ.js +59 -0
  405. package/dist/chunk-MQCDMHRZ.js.map +1 -0
  406. package/dist/chunk-MZIBZ5FY.js +554 -0
  407. package/dist/chunk-MZIBZ5FY.js.map +1 -0
  408. package/dist/chunk-N3ORMGAI.js +348 -0
  409. package/dist/chunk-N3ORMGAI.js.map +1 -0
  410. package/dist/chunk-NCSGIRRQ.js +28 -0
  411. package/dist/chunk-NCSGIRRQ.js.map +1 -0
  412. package/dist/chunk-NIXT2SBH.js +1423 -0
  413. package/dist/chunk-NIXT2SBH.js.map +1 -0
  414. package/dist/chunk-NJAII6CO.js +148 -0
  415. package/dist/chunk-NJAII6CO.js.map +1 -0
  416. package/dist/chunk-NKE4TL43.js +92 -0
  417. package/dist/chunk-NKE4TL43.js.map +1 -0
  418. package/dist/chunk-NZ7AXA7B.js +1 -0
  419. package/dist/chunk-NZ7AXA7B.js.map +1 -0
  420. package/dist/chunk-OCAYEGI2.js +26 -0
  421. package/dist/chunk-OCAYEGI2.js.map +1 -0
  422. package/dist/chunk-OMLI45ER.js +90 -0
  423. package/dist/chunk-OMLI45ER.js.map +1 -0
  424. package/dist/chunk-P7OBLJAG.js +88 -0
  425. package/dist/chunk-P7OBLJAG.js.map +1 -0
  426. package/dist/chunk-PAY3CBWL.js +2321 -0
  427. package/dist/chunk-PAY3CBWL.js.map +1 -0
  428. package/dist/chunk-PFF6VY35.js +257 -0
  429. package/dist/chunk-PFF6VY35.js.map +1 -0
  430. package/dist/chunk-PYNDJDWZ.js +1758 -0
  431. package/dist/chunk-PYNDJDWZ.js.map +1 -0
  432. package/dist/chunk-QDQ6UMMN.js +53 -0
  433. package/dist/chunk-QDQ6UMMN.js.map +1 -0
  434. package/dist/chunk-QGT3G2XG.js +24 -0
  435. package/dist/chunk-QGT3G2XG.js.map +1 -0
  436. package/dist/chunk-QZYCJ2GZ.js +55 -0
  437. package/dist/chunk-QZYCJ2GZ.js.map +1 -0
  438. package/dist/chunk-REZ7RFSA.js +124 -0
  439. package/dist/chunk-REZ7RFSA.js.map +1 -0
  440. package/dist/chunk-RRYBAE6E.js +2449 -0
  441. package/dist/chunk-RRYBAE6E.js.map +1 -0
  442. package/dist/chunk-RWUZOB62.js +34 -0
  443. package/dist/chunk-RWUZOB62.js.map +1 -0
  444. package/dist/chunk-SB5UCPZH.js +116 -0
  445. package/dist/chunk-SB5UCPZH.js.map +1 -0
  446. package/dist/chunk-SEJJ7CRI.js +99 -0
  447. package/dist/chunk-SEJJ7CRI.js.map +1 -0
  448. package/dist/chunk-SHBFGRPV.js +45 -0
  449. package/dist/chunk-SHBFGRPV.js.map +1 -0
  450. package/dist/chunk-SOFJ4GC5.js +45 -0
  451. package/dist/chunk-SOFJ4GC5.js.map +1 -0
  452. package/dist/chunk-STH2HPZK.js +44 -0
  453. package/dist/chunk-STH2HPZK.js.map +1 -0
  454. package/dist/chunk-TK3JNKME.js +28 -0
  455. package/dist/chunk-TK3JNKME.js.map +1 -0
  456. package/dist/chunk-TMONHFE3.js +46 -0
  457. package/dist/chunk-TMONHFE3.js.map +1 -0
  458. package/dist/chunk-TR4KO3AG.js +44 -0
  459. package/dist/chunk-TR4KO3AG.js.map +1 -0
  460. package/dist/chunk-TS2LNBF2.js +68 -0
  461. package/dist/chunk-TS2LNBF2.js.map +1 -0
  462. package/dist/chunk-UZUMBFPP.js +26 -0
  463. package/dist/chunk-UZUMBFPP.js.map +1 -0
  464. package/dist/chunk-VRZ5LMOW.js +176 -0
  465. package/dist/chunk-VRZ5LMOW.js.map +1 -0
  466. package/dist/chunk-WLGGY6Z6.js +75 -0
  467. package/dist/chunk-WLGGY6Z6.js.map +1 -0
  468. package/dist/chunk-WO7V6ZNC.js +11 -0
  469. package/dist/chunk-WO7V6ZNC.js.map +1 -0
  470. package/dist/chunk-WXSENSRP.js +64 -0
  471. package/dist/chunk-WXSENSRP.js.map +1 -0
  472. package/dist/chunk-XEKBZ2SA.js +19 -0
  473. package/dist/chunk-XEKBZ2SA.js.map +1 -0
  474. package/dist/chunk-XPBKU3JX.js +61 -0
  475. package/dist/chunk-XPBKU3JX.js.map +1 -0
  476. package/dist/chunk-XRYXBXWH.js +24 -0
  477. package/dist/chunk-XRYXBXWH.js.map +1 -0
  478. package/dist/chunk-XVA7QRVH.js +22 -0
  479. package/dist/chunk-XVA7QRVH.js.map +1 -0
  480. package/dist/chunk-XYXDY72K.js +27508 -0
  481. package/dist/chunk-XYXDY72K.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-A4CWC4AG.js +0 -374
  523. package/dist/chunk-A4CWC4AG.js.map +0 -1
  524. package/dist/chunk-NEOPTPDF.js.map +0 -1
  525. package/dist/chunk-VRCRDKN5.js +0 -59694
  526. package/dist/chunk-VRCRDKN5.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/collection/CollectionLifecycleFlowDetail.tsx","../src/core/lib/actionRegistry/actions/collection/failure.ts"],"sourcesContent":["import { useRunRuntimeReader } from '@/mantine/hooks/useRunRuntimeReader';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Badge, Box, Button, Group, Loader, Overlay, SegmentedControl, Stack, Text } from '@mantine/core';\nimport { DismissibleAlert as Alert } from '@/mantine/components/Base/DismissibleAlert';\nimport { DateTimePicker } from '@mantine/dates';\nimport { IconAlertCircle, IconCheck, IconRefresh } from '@tabler/icons-react';\nimport BaseNumberInput from '@/mantine/components/Base/BaseNumberInput';\nimport BaseSelect from '@/mantine/components/Base/BaseSelect';\nimport BaseTextInput from '@/mantine/components/Base/BaseTextInput';\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 { actionAlertStyles } from '../../alertStyles';\nimport { collectionLifecycleRuntimeError } from '@/core/lib/actionRegistry/actions/collection/failure';\nimport {\n type CollectionIntentOptions,\n type CollectionLifecycleRuntimeInputs,\n type CollectionOperation,\n type CollectionPayment,\n type CollectionState,\n CollectionStateEnum,\n type Payments,\n} from '@/core/lib/actionRegistry/actions/collection/types';\n\nconst LOG = '[collection.lifecycle]';\n\n// ---------------------------------------------------------------------------\n// Template inputs (configured in CollectionLifecycleConfig). Parsed defensively\n// — this track does not own the config shape, so read every field optionally.\n// ---------------------------------------------------------------------------\ninterface CollectionTemplateInputs {\n entity: string;\n protocol: string;\n collectionId: string;\n quota: string;\n startDate: string;\n endDate: string;\n payments?: Payments;\n intents?: CollectionIntentOptions;\n state?: CollectionStateEnum;\n}\n\nfunction parseTemplateInputs(json: string): CollectionTemplateInputs {\n try {\n const parsed = typeof json === 'string' ? (json ? JSON.parse(json) : {}) : json || {};\n return {\n entity: parsed?.entity || '',\n protocol: parsed?.protocol || '',\n collectionId: parsed?.collectionId || '',\n quota: parsed?.quota != null ? String(parsed.quota) : '',\n startDate: parsed?.startDate || '',\n endDate: parsed?.endDate || '',\n payments: parsed?.payments,\n intents: parsed?.intents,\n state: typeof parsed?.state === 'number' ? parsed.state : undefined,\n };\n } catch {\n return { entity: '', protocol: '', collectionId: '', quota: '', startDate: '', endDate: '' };\n }\n}\n\nconst STATE_LABELS: Record<number, string> = {\n [CollectionStateEnum.OPEN]: 'Open',\n [CollectionStateEnum.PAUSED]: 'Paused',\n [CollectionStateEnum.CLOSED]: 'Closed',\n};\n\nfunction stateLabel(state: CollectionStateEnum | undefined): string {\n if (state == null) return 'Unknown';\n return STATE_LABELS[state] ?? `State ${state}`;\n}\n\nfunction formatQuota(quota: string | undefined): string {\n if (quota == null || quota === '') return '—';\n if (quota === '0') return 'Unlimited';\n return quota;\n}\n\nfunction toNumberOrUndefined(value: string | number | undefined): number | undefined {\n if (value === '' || value == null) return undefined;\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\n// Date <-> ISO-8601 conversion for the DateTimePicker controls. State is kept as\n// ISO strings (what the run inputs and chain timestamps expect); the picker works\n// in Date objects. Mirrors the helpers in TtlTab.tsx.\nfunction isoToDate(iso: string): Date | null {\n if (!iso) return null;\n const d = new Date(iso);\n return isNaN(d.getTime()) ? null : d;\n}\n\nfunction dateToIso(value: Date | null): string {\n if (!value) return '';\n try {\n return value.toISOString();\n } catch {\n return '';\n }\n}\n\n// ---------------------------------------------------------------------------\n// Payments — structured editor model.\n//\n// Each of the four claim stages can carry an optional payout. The UI works in\n// DISPLAY units: a token (IXO | USDC) + a human-readable amount (e.g. \"10\",\n// \"0.5\"). The consumer handler (impacts-x-web collectionHandlers) converts the\n// display denom to its chain base denom (IXO→uixo, USDC→ibc/…) and multiplies\n// by 1e6, and overwrites every leg's `account` with the entity admin account —\n// so the UI sends `account: ''` and never sets micro amounts itself.\n//\n// On read-back, `output.payments` comes back in CHAIN denoms + micro amounts,\n// so seeding the form reverses that mapping (legToInput).\n// ---------------------------------------------------------------------------\ntype PaymentToken = 'IXO' | 'USDC';\nconst PAYMENT_TOKENS: PaymentToken[] = ['IXO', 'USDC'];\nconst USDC_IBC_DENOM = 'ibc/6BBE9BD4246F8E04948D5A4EEE7164B2630263B9EBB5E7DC5F0A46C62A2FF97B';\nconst MICRO = 1_000_000;\n\ntype PaymentLegKey = 'submission' | 'evaluation' | 'approval' | 'rejection';\nconst PAYMENT_LEGS: { key: PaymentLegKey; label: string; description: string }[] = [\n { key: 'submission', label: 'Submission', description: 'Paid when a claim is submitted.' },\n { key: 'evaluation', label: 'Evaluation', description: 'Paid to the evaluator per claim.' },\n { key: 'approval', label: 'Approval', description: 'Paid when a claim is approved.' },\n { key: 'rejection', label: 'Rejection', description: 'Paid when a claim is rejected.' },\n];\n\ninterface PaymentLegInput {\n token: PaymentToken;\n amount: string; // display amount; '' or '0' means no payout for this stage\n}\ntype PaymentsInput = Record<PaymentLegKey, PaymentLegInput>;\n\nfunction emptyPaymentsInput(): PaymentsInput {\n return {\n submission: { token: 'IXO', amount: '' },\n evaluation: { token: 'IXO', amount: '' },\n approval: { token: 'IXO', amount: '' },\n rejection: { token: 'IXO', amount: '' },\n };\n}\n\n// Reverse map: an on-chain CollectionPayment leg → the display input model.\nfunction legToInput(leg: CollectionPayment | undefined): PaymentLegInput {\n const coin = leg?.amount?.[0];\n if (!coin || !coin.amount || coin.amount === '0') return { token: 'IXO', amount: '' };\n let token: PaymentToken = 'IXO';\n let isMicro = false;\n if (coin.denom === 'uixo') {\n token = 'IXO';\n isMicro = true;\n } else if (coin.denom === USDC_IBC_DENOM || coin.denom.startsWith('ibc/')) {\n token = 'USDC';\n isMicro = true;\n } else if (coin.denom === 'USDC') {\n token = 'USDC';\n } else if (coin.denom === 'IXO') {\n token = 'IXO';\n }\n const raw = Number(coin.amount);\n if (!Number.isFinite(raw)) return { token, amount: '' };\n const display = isMicro ? raw / MICRO : raw;\n return { token, amount: String(display) };\n}\n\nfunction paymentsToInput(payments: Payments | undefined): PaymentsInput {\n if (!payments) return emptyPaymentsInput();\n return {\n submission: legToInput(payments.submission),\n evaluation: legToInput(payments.evaluation),\n approval: legToInput(payments.approval),\n rejection: legToInput(payments.rejection),\n };\n}\n\n// Forward map: a display leg → the contract CollectionPayment (display denom +\n// human amount; the consumer handles denom/×1e6 conversion and the account).\nfunction inputToLeg(leg: PaymentLegInput): CollectionPayment | undefined {\n const n = toNumberOrUndefined(leg.amount);\n if (n == null || n <= 0) return undefined;\n return { account: '', amount: [{ denom: leg.token, amount: leg.amount }] };\n}\n\nfunction inputToPayments(input: PaymentsInput): Payments | undefined {\n const payments: Payments = {\n submission: inputToLeg(input.submission),\n evaluation: inputToLeg(input.evaluation),\n approval: inputToLeg(input.approval),\n rejection: inputToLeg(input.rejection),\n };\n if (!payments.submission && !payments.evaluation && !payments.approval && !payments.rejection) {\n return undefined;\n }\n return payments;\n}\n\n/**\n * Single-block claim collection lifecycle execution UI (IXO-2578).\n *\n * `runtime` is the single source of truth — never mirrored to local state.\n * `runtime.output` always holds the full latest on-chain {@link CollectionState}\n * (IXO-2573); `runtime.output.collectionId` is the proof field that flips the\n * surface from create-mode → manage-mode.\n *\n * Two entry modes:\n * - No bound `collectionId` and no `output.collectionId` → create form.\n * - Bound `collectionId` (template literal or upstream ref) but empty output →\n * one-shot `refresh` on mount, then the manage surface.\n *\n * The shared executor owns durable runtime writes (running → completed/failed,\n * and `output` = re-fetched CollectionState). We only write runtime locally for\n * stale-state recovery and to surface a failure message.\n */\nexport const CollectionLifecycleFlowDetail: React.FC<ActionTypeFlowProps<CollectionLifecycleRuntimeInputs>> = ({\n inputs,\n editor,\n block,\n runtime,\n updateRuntime,\n isDisabled,\n provideSigningHandler,\n unlockSigning,\n registerRuntimeInputs,\n executeAction,\n}) => {\n const [actAs, setActAs] = useState<ActAsGroupState>(emptyActAsGroupState());\n const parsed = useMemo(() => parseTemplateInputs(inputs), [inputs]);\n const editorDocument = editor?.document || [];\n const runtimeReader = useRunRuntimeReader(editor);\n const resolveOpts = useMemo(() => ({ yRuntime: runtimeReader }), [runtimeReader]);\n\n // Resolve the optional bound collectionId (literal or {{block.output.collectionId}}).\n const boundCollectionId = useMemo(() => resolveReferences(parsed.collectionId || '', editorDocument, resolveOpts).trim(), [parsed.collectionId, editorDocument, resolveOpts]);\n\n // -------------------------------------------------------------------------\n // Derived runtime state — read directly from the Y.Map on every render.\n // -------------------------------------------------------------------------\n const output = (runtime.output as Partial<CollectionState> | undefined) || undefined;\n const outputCollectionId = (output?.collectionId as string) || '';\n // Effective collection: prefer the live on-chain output, fall back to the\n // template/upstream binding (manage-only mode before the first refresh).\n const effectiveCollectionId = outputCollectionId || boundCollectionId;\n\n const isRunning = runtime.state === 'running';\n const isFailed = runtime.state === 'failed';\n const errorMessage = runtime.error?.message || null;\n // Proof = a collectionId in output. `completed` without it is stale.\n const isCompletedWithProof = runtime.state === 'completed' && !!outputCollectionId;\n const isStale = runtime.state === 'completed' && !outputCollectionId;\n\n // Manage surface shows whenever we have an on-chain snapshot to render.\n const hasSnapshot = !!outputCollectionId;\n // Manage-only mode: a collectionId was bound up-front (existing collection).\n const isManageMode = !!boundCollectionId || hasSnapshot;\n // Create mode: no binding and no snapshot yet.\n const isCreateMode = !isManageMode;\n\n // -------------------------------------------------------------------------\n // Operation selection + per-op form state. These ARE genuinely ephemeral\n // local concerns (the user's in-progress selection before they sign), so\n // useState is correct here — they are not runtime/result state.\n // -------------------------------------------------------------------------\n const [operation, setOperation] = useState<CollectionOperation>(isCreateMode ? 'create' : 'updateState');\n\n // Once a create succeeds we are in manage mode; default the op to a manage op.\n useEffect(() => {\n if (hasSnapshot && operation === 'create') {\n setOperation('updateState');\n }\n }, [hasSnapshot, operation]);\n\n // Create-form fields (seeded from template config).\n const [createQuota, setCreateQuota] = useState<string>(parsed.quota || '0');\n const [createStartDate, setCreateStartDate] = useState<string>(parsed.startDate || '');\n const [createEndDate, setCreateEndDate] = useState<string>(parsed.endDate || '');\n const [createPayments, setCreatePayments] = useState<PaymentsInput>(() => paymentsToInput(parsed.payments));\n\n // Manage-op fields, seeded from the current on-chain snapshot when available.\n const [targetState, setTargetState] = useState<CollectionStateEnum>(output?.state ?? CollectionStateEnum.OPEN);\n const [editStartDate, setEditStartDate] = useState<string>('');\n const [editEndDate, setEditEndDate] = useState<string>('');\n const [editQuota, setEditQuota] = useState<string>('');\n const [editPayments, setEditPayments] = useState<PaymentsInput>(() => paymentsToInput(output?.payments));\n const [editIntentsJson, setEditIntentsJson] = useState<string>('');\n\n // Re-seed manage fields whenever a fresh snapshot lands (collectionId or the\n // mutable fields change). Guarded so we don't clobber an in-progress edit on\n // every render — we only re-seed when the snapshot identity actually changes.\n const seededFromRef = useRef<string>('');\n useEffect(() => {\n if (!hasSnapshot) return;\n const snapshotKey = JSON.stringify({\n id: outputCollectionId,\n s: output?.state,\n sd: output?.startDate,\n ed: output?.endDate,\n q: output?.quota,\n executedAt: runtime.executedAt,\n });\n if (seededFromRef.current === snapshotKey) return;\n seededFromRef.current = snapshotKey;\n setTargetState(output?.state ?? CollectionStateEnum.OPEN);\n setEditStartDate(output?.startDate || '');\n setEditEndDate(output?.endDate || '');\n setEditQuota(output?.quota != null ? String(output.quota) : '');\n setEditPayments(paymentsToInput(output?.payments));\n setEditIntentsJson(output?.intents ? JSON.stringify(output.intents, null, 2) : '');\n }, [hasSnapshot, outputCollectionId, output?.state, output?.startDate, output?.endDate, output?.quota, output?.payments, output?.intents, runtime.executedAt]);\n\n // -------------------------------------------------------------------------\n // Refresh-on-load: when a collectionId is bound but we have no snapshot yet,\n // run the read-only `refresh` op once to hydrate output. One-shot ref guard.\n // -------------------------------------------------------------------------\n const refreshOnLoadRef = useRef(false);\n const runRefresh = useCallback(async () => {\n if (!executeAction) {\n updateRuntime({ state: 'failed', error: { message: 'Shared action executor is unavailable', at: Date.now() } });\n return;\n }\n const collectionId = effectiveCollectionId;\n if (!collectionId) return;\n console.log(`${LOG} refresh →`, { collectionId });\n try {\n const outcome = await executeAction({ runtimeInputs: { operation: 'refresh', collectionId } as CollectionLifecycleRuntimeInputs });\n if (!outcome.success) {\n throw new Error(outcome.error || 'Failed to refresh collection state');\n }\n const payload = outcome.output as Partial<CollectionState> | undefined;\n if (!payload?.collectionId) {\n throw new Error('Refresh returned no collection state. Check the [collection:get] handler logs.');\n }\n console.log(`${LOG} refresh success`, { collectionId: payload.collectionId });\n } catch (err) {\n const failure = collectionLifecycleRuntimeError(err, { operation: 'refresh', collectionId });\n const message = failure.message;\n console.error(`${LOG} refresh failed`, { message });\n updateRuntime({ state: 'failed', error: failure });\n }\n }, [executeAction, effectiveCollectionId, updateRuntime]);\n\n useEffect(() => {\n if (refreshOnLoadRef.current) return;\n if (!boundCollectionId) return; // only manage-only mode auto-refreshes\n if (hasSnapshot) return; // already have state\n if (isRunning || isFailed) return; // don't fight an in-flight/failed run\n if (runtime.state === 'needs_verification') return; // ran-but-unproven — never auto-retry (H1)\n refreshOnLoadRef.current = true;\n console.log(`${LOG} refresh-on-load`, { boundCollectionId });\n runRefresh();\n }, [boundCollectionId, hasSnapshot, isRunning, isFailed, runtime.state, runRefresh]);\n\n // -------------------------------------------------------------------------\n // Durability: once a collection is created in this block (create-mode, i.e. no\n // template-bound id), persist its id into the block's saved inputs. The\n // executor blanks `output` at the start of every run and leaves it blank on\n // failure (see actionExecutor) — so without this, a failed follow-up op or a\n // page reload erases the only copy of the new id and drops the block back to\n // create-mode. Persisting flips the block to manage-mode permanently and lets\n // run()/refresh resolve the id from saved inputs even when `output` is empty.\n // -------------------------------------------------------------------------\n const persistedIdRef = useRef(false);\n useEffect(() => {\n if (boundCollectionId) return; // already bound via template — never overwrite\n if (!outputCollectionId) return; // nothing created yet\n if (!editor || !block) return;\n if (persistedIdRef.current) return;\n if (parsed.collectionId === outputCollectionId) return; // already saved\n persistedIdRef.current = true;\n try {\n const raw = inputs ? JSON.parse(inputs) : {};\n raw.collectionId = outputCollectionId;\n editor.updateBlock(block, { props: { ...block.props, inputs: JSON.stringify(raw) } });\n console.log(`${LOG} persisted collectionId to block inputs`, { collectionId: outputCollectionId });\n } catch (err) {\n persistedIdRef.current = false;\n console.warn(`${LOG} failed to persist collectionId to block inputs`, err);\n }\n }, [boundCollectionId, outputCollectionId, parsed.collectionId, inputs, editor, block]);\n\n // -------------------------------------------------------------------------\n // Per-operation validation → drives unlockSigning + inline errors.\n // -------------------------------------------------------------------------\n const currentCount = toNumberOrUndefined(output?.count) ?? 0;\n\n const validation = useMemo((): { ok: boolean; error?: string } => {\n if (operation === 'refresh') return { ok: true };\n\n if (operation === 'create') {\n if (!parsed.entity) return { ok: false, error: 'Entity (deed) DID is required — configure it in template mode.' };\n if (!parsed.protocol) return { ok: false, error: 'Protocol is required — configure it in template mode.' };\n const q = toNumberOrUndefined(createQuota);\n if (q == null || q < 0) return { ok: false, error: 'Quota must be 0 (unlimited) or a positive number.' };\n if (createStartDate && createEndDate && new Date(createEndDate) <= new Date(createStartDate)) {\n return { ok: false, error: 'End date must be after the start date.' };\n }\n return { ok: true };\n }\n\n // All manage ops need a target collection.\n if (!effectiveCollectionId) return { ok: false, error: 'No collection loaded yet.' };\n\n if (operation === 'updateState') {\n if (output?.state != null && output.state === targetState) return { ok: false, error: 'Collection is already in that state.' };\n return { ok: true };\n }\n\n if (operation === 'updateDates') {\n if (!editStartDate && !editEndDate) return { ok: false, error: 'Set at least one of start / end date.' };\n if (editStartDate && editEndDate && new Date(editEndDate) <= new Date(editStartDate)) {\n return { ok: false, error: 'End date must be after the start date.' };\n }\n return { ok: true };\n }\n\n if (operation === 'updateQuota') {\n const q = toNumberOrUndefined(editQuota);\n if (q == null || q < 0) return { ok: false, error: 'Quota must be 0 (unlimited) or a positive number.' };\n // 0 = unlimited is always allowed; otherwise quota must be >= submitted count.\n if (q !== 0 && q < currentCount) {\n return { ok: false, error: `Quota cannot be below the submitted count (${currentCount}). Use 0 for unlimited.` };\n }\n return { ok: true };\n }\n\n if (operation === 'updatePayments') {\n if (!inputToPayments(editPayments)) {\n return { ok: false, error: 'Set a payout amount for at least one claim stage.' };\n }\n return { ok: true };\n }\n\n if (operation === 'updateIntents') {\n if (!editIntentsJson.trim()) return { ok: false, error: 'Intents configuration is required.' };\n try {\n JSON.parse(editIntentsJson);\n } catch {\n return { ok: false, error: 'Intents must be valid JSON.' };\n }\n return { ok: true };\n }\n\n return { ok: false, error: 'Unsupported operation.' };\n }, [\n operation,\n parsed.entity,\n parsed.protocol,\n createQuota,\n createStartDate,\n createEndDate,\n effectiveCollectionId,\n output?.state,\n targetState,\n editStartDate,\n editEndDate,\n editQuota,\n currentCount,\n editPayments,\n editIntentsJson,\n ]);\n\n // -------------------------------------------------------------------------\n // Build the runtime inputs for the currently-selected operation.\n // -------------------------------------------------------------------------\n const buildRuntimeInputs = useCallback((): CollectionLifecycleRuntimeInputs => {\n // Every non-create op targets an existing collection. Pass the resolved id\n // explicitly so updates/refresh work for an in-session create (where the id\n // is only in `output`, not yet in the saved template inputs).\n const targetId = effectiveCollectionId || undefined;\n switch (operation) {\n case 'create':\n return {\n operation: 'create',\n quota: String(toNumberOrUndefined(createQuota) ?? 0),\n startDate: createStartDate || undefined,\n endDate: createEndDate || undefined,\n payments: inputToPayments(createPayments),\n intents: parsed.intents,\n state: parsed.state,\n };\n case 'updateState':\n return { operation: 'updateState', collectionId: targetId, state: targetState };\n case 'updateDates':\n return { operation: 'updateDates', collectionId: targetId, startDate: editStartDate || undefined, endDate: editEndDate || undefined };\n case 'updateQuota':\n return { operation: 'updateQuota', collectionId: targetId, quota: String(toNumberOrUndefined(editQuota) ?? 0) };\n case 'updatePayments':\n return { operation: 'updatePayments', collectionId: targetId, payments: inputToPayments(editPayments) };\n case 'updateIntents':\n return { operation: 'updateIntents', collectionId: targetId, intents: JSON.parse(editIntentsJson) as CollectionIntentOptions };\n case 'refresh':\n default:\n return { operation: 'refresh', collectionId: targetId };\n }\n }, [\n operation,\n effectiveCollectionId,\n createQuota,\n createStartDate,\n createEndDate,\n createPayments,\n parsed.intents,\n parsed.state,\n targetState,\n editStartDate,\n editEndDate,\n editQuota,\n editPayments,\n editIntentsJson,\n ]);\n\n // Push runtime inputs upward so the diff resolver (and executor merge) see the\n // current per-op selection. Guard parse errors so we never throw in an effect.\n useEffect(() => {\n if (!registerRuntimeInputs) return;\n try {\n registerRuntimeInputs(buildRuntimeInputs());\n } catch {\n // Invalid JSON in payments/intents — validation surfaces the error; push\n // only the operation so the slider stays locked.\n registerRuntimeInputs({ operation });\n }\n }, [registerRuntimeInputs, buildRuntimeInputs, operation]);\n\n // Unlock the slide-to-sign control only when the chosen op is valid.\n useEffect(() => {\n unlockSigning?.(!isDisabled && !isRunning && validation.ok && actAsGroupReady(actAs));\n }, [unlockSigning, isDisabled, isRunning, validation.ok]);\n\n // -------------------------------------------------------------------------\n // The signing handler the generic SlideToSign control invokes.\n // -------------------------------------------------------------------------\n const execute = useCallback(async () => {\n if (isDisabled || isRunning) return;\n if (!executeAction) {\n updateRuntime({ state: 'failed', error: { message: 'Shared action executor is unavailable', at: Date.now() } });\n return;\n }\n if (!validation.ok) {\n console.warn(`${LOG} refusing to execute — invalid inputs`, { operation, error: validation.error });\n return;\n }\n\n let runtimeInputs: CollectionLifecycleRuntimeInputs;\n try {\n runtimeInputs = buildRuntimeInputs();\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Invalid operation inputs';\n updateRuntime({ state: 'failed', error: { message, at: Date.now() } });\n return;\n }\n\n console.log(`${LOG} execute →`, { operation: runtimeInputs.operation, collectionId: effectiveCollectionId });\n try {\n const outcome = await executeAction({ runtimeInputs: { ...runtimeInputs, ...actAsGroupRuntimeInputs(actAs) } as CollectionLifecycleRuntimeInputs });\n if (!outcome.success) {\n throw new Error(outcome.error || `Collection ${runtimeInputs.operation} failed`);\n }\n const payload = outcome.output as Partial<CollectionState> | undefined;\n // Proof guard: every op (create or update) must read back a collection.\n if (!payload?.collectionId) {\n throw new Error('Action returned success without a collection state. Check the [collection] handler logs.');\n }\n console.log(`${LOG} execute success`, { operation: runtimeInputs.operation, collectionId: payload.collectionId, state: payload.state });\n } catch (err) {\n const failure = collectionLifecycleRuntimeError(err, runtimeInputs);\n const message = failure.message;\n console.error(`${LOG} execute failed`, { operation: runtimeInputs.operation, message });\n updateRuntime({ state: 'failed', error: failure });\n }\n }, [isDisabled, isRunning, executeAction, validation.ok, validation.error, operation, buildRuntimeInputs, effectiveCollectionId, updateRuntime]);\n\n // Re-arm the signing handler whenever execute identity changes.\n useEffect(() => {\n if (!provideSigningHandler) return;\n provideSigningHandler(execute);\n }, [provideSigningHandler, execute]);\n\n // Stale-state recovery: clear runtime to idle, allow Force Run.\n const handleReset = useCallback(() => {\n console.log(`${LOG} reset → idle`);\n refreshOnLoadRef.current = false;\n seededFromRef.current = '';\n updateRuntime({ state: 'idle', error: undefined, output: {} });\n }, [updateRuntime]);\n\n const handleForceRun = useCallback(() => {\n console.log(`${LOG} force run`);\n updateRuntime({ state: 'idle', error: undefined, output: {} });\n // Defer so the reset propagates through the Y.Map before we re-execute.\n setTimeout(() => {\n execute();\n }, 0);\n }, [updateRuntime, execute]);\n\n // Manual refresh used by the failure-recovery path and as a general action.\n const handleManualRefresh = useCallback(() => {\n refreshOnLoadRef.current = false;\n runRefresh();\n }, [runRefresh]);\n\n // -------------------------------------------------------------------------\n // Render\n // -------------------------------------------------------------------------\n const title = (block?.props?.title as string) || (isCreateMode ? 'Create Claim Collection' : 'Manage Claim Collection');\n const description = (block?.props?.description as string) || '';\n\n return (\n <Stack gap=\"md\" pos=\"relative\">\n <GroupProposalStatus editor={editor} block={block} runtime={runtime} />\n {runtime?.state !== 'awaiting_readback' && <ActAsGroupSection value={actAs} onChange={setActAs} isDisabled={isDisabled} actionLabel=\"update this collection\" />}\n <Stack gap={2}>\n <Text fw={600}>{title}</Text>\n {description && (\n <Text size=\"sm\" c=\"dimmed\">\n {description}\n </Text>\n )}\n </Stack>\n\n {/* Stale-completed recovery (completed with no collectionId proof). */}\n {isStale && (\n <Alert icon={<IconAlertCircle size={16} />} color=\"yellow\" title=\"Inconsistent State\">\n <Stack gap=\"xs\">\n <Text size=\"sm\">Block was marked completed but no collection state was recorded. This is stale state from a previous run — reset and re-run.</Text>\n <Group>\n <Button variant=\"outline\" size=\"xs\" onClick={handleReset}>\n Reset\n </Button>\n <Button variant=\"filled\" size=\"xs\" onClick={handleForceRun} disabled={!validation.ok}>\n Force Run Now\n </Button>\n </Group>\n </Stack>\n </Alert>\n )}\n\n {/* Failure recovery — output is wiped on failure, so offer a refresh. */}\n {isFailed && (\n <Alert icon={<IconAlertCircle size={16} />} color=\"red\" title=\"Action Failed\" styles={actionAlertStyles}>\n <Stack gap=\"xs\">\n {errorMessage && <Text size=\"sm\">{errorMessage}</Text>}\n <Group>\n <Button variant=\"outline\" size=\"xs\" onClick={handleReset}>\n Reset\n </Button>\n {!!effectiveCollectionId && (\n <Button variant=\"filled\" size=\"xs\" leftSection={<IconRefresh size={14} />} onClick={handleManualRefresh}>\n Refresh State\n </Button>\n )}\n </Group>\n </Stack>\n </Alert>\n )}\n\n {/* Manage-only mode waiting on the first refresh. */}\n {isManageMode && !hasSnapshot && !isRunning && !isFailed && (\n <Group gap=\"xs\">\n <Loader size={14} />\n <Text size=\"sm\" c=\"dimmed\">\n Loading collection {effectiveCollectionId ? `(${effectiveCollectionId})` : ''}…\n </Text>\n </Group>\n )}\n\n {/* Manage surface — stats strip + per-op controls. */}\n {hasSnapshot && (\n <Stack gap=\"md\">\n <StatsStrip output={output as CollectionState} />\n\n {isCompletedWithProof && (\n <Alert icon={<IconCheck size={16} />} color=\"green\" styles={actionAlertStyles}>\n Collection {outputCollectionId} synced — {stateLabel(output?.state)}.\n </Alert>\n )}\n\n <SegmentedControl\n fullWidth\n value={operation === 'create' ? 'updateState' : operation}\n onChange={(value) => setOperation(value as CollectionOperation)}\n disabled={isDisabled || isRunning}\n data={[\n { label: 'State', value: 'updateState' },\n { label: 'Dates', value: 'updateDates' },\n { label: 'Quota', value: 'updateQuota' },\n { label: 'Payments', value: 'updatePayments' },\n { label: 'Intents', value: 'updateIntents' },\n ]}\n />\n\n {operation === 'updateState' && (\n <SegmentedControl\n fullWidth\n value={String(targetState)}\n onChange={(value) => setTargetState(Number(value) as CollectionStateEnum)}\n disabled={isDisabled || isRunning}\n data={[\n { label: 'Open', value: String(CollectionStateEnum.OPEN) },\n { label: 'Paused', value: String(CollectionStateEnum.PAUSED) },\n { label: 'Closed', value: String(CollectionStateEnum.CLOSED) },\n ]}\n />\n )}\n\n {operation === 'updateDates' && (\n <Group grow align=\"flex-start\">\n <DateTimePicker\n label=\"Start date\"\n placeholder=\"Select start date and time\"\n valueFormat=\"DD MMM YYYY, HH:mm\"\n clearable\n value={isoToDate(editStartDate)}\n onChange={(date) => setEditStartDate(dateToIso(date))}\n disabled={isDisabled || isRunning}\n />\n <DateTimePicker\n label=\"End date\"\n placeholder=\"Select end date and time\"\n valueFormat=\"DD MMM YYYY, HH:mm\"\n clearable\n minDate={isoToDate(editStartDate) || undefined}\n value={isoToDate(editEndDate)}\n onChange={(date) => setEditEndDate(dateToIso(date))}\n disabled={isDisabled || isRunning}\n />\n </Group>\n )}\n\n {operation === 'updateQuota' && (\n <BaseNumberInput\n label=\"Quota (0 = unlimited)\"\n description={`Submitted count: ${currentCount}. Quota must be 0 or at least ${currentCount}.`}\n min={0}\n value={editQuota === '' ? '' : Number(editQuota)}\n onChange={(value) => setEditQuota(value === '' || value == null ? '' : String(value))}\n disabled={isDisabled || isRunning}\n />\n )}\n\n {operation === 'updatePayments' && <PaymentsEditor value={editPayments} onChange={setEditPayments} disabled={isDisabled || isRunning} />}\n\n {operation === 'updateIntents' && (\n <BaseTextInput\n label=\"Intents (JSON)\"\n placeholder='{\"allowed\":true}'\n value={editIntentsJson}\n onChange={(e) => setEditIntentsJson(e.currentTarget.value)}\n disabled={isDisabled || isRunning}\n />\n )}\n\n {!validation.ok && validation.error && (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n {validation.error}\n </Alert>\n )}\n </Stack>\n )}\n\n {/* Create form. */}\n {isCreateMode && !hasSnapshot && (\n <Stack gap=\"md\">\n {(!parsed.entity || !parsed.protocol) && (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n Configure the entity DID and protocol in template mode before creating a collection.\n </Alert>\n )}\n <BaseNumberInput\n label=\"Quota (0 = unlimited)\"\n min={0}\n value={createQuota === '' ? '' : Number(createQuota)}\n onChange={(value) => setCreateQuota(value === '' || value == null ? '' : String(value))}\n disabled={isDisabled || isRunning}\n />\n <Group grow align=\"flex-start\">\n <DateTimePicker\n label=\"Start date\"\n placeholder=\"Select start date and time\"\n valueFormat=\"DD MMM YYYY, HH:mm\"\n clearable\n value={isoToDate(createStartDate)}\n onChange={(date) => setCreateStartDate(dateToIso(date))}\n disabled={isDisabled || isRunning}\n />\n <DateTimePicker\n label=\"End date\"\n placeholder=\"Select end date and time\"\n valueFormat=\"DD MMM YYYY, HH:mm\"\n clearable\n minDate={isoToDate(createStartDate) || undefined}\n value={isoToDate(createEndDate)}\n onChange={(date) => setCreateEndDate(dateToIso(date))}\n disabled={isDisabled || isRunning}\n />\n </Group>\n <PaymentsEditor value={createPayments} onChange={setCreatePayments} disabled={isDisabled || isRunning} />\n {!validation.ok && validation.error && (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n {validation.error}\n </Alert>\n )}\n </Stack>\n )}\n\n {isDisabled && (\n <Text size=\"xs\" c=\"dimmed\">\n This block is currently disabled.\n </Text>\n )}\n\n {/* In-flight overlay — output is blanked during a run, so block reads of\n stale data behind a syncing veil rather than rendering a half state. */}\n {isRunning && (\n <Overlay color=\"var(--mantine-color-body)\" backgroundOpacity={0.6} blur={1} zIndex={5} radius=\"md\">\n <Group gap=\"xs\" justify=\"center\" h=\"100%\">\n <Loader size={16} />\n <Text size=\"sm\">Syncing collection state…</Text>\n </Group>\n </Overlay>\n )}\n </Stack>\n );\n};\n\n/**\n * Structured per-stage payout editor. Each claim stage (submission, evaluation,\n * approval, rejection) gets an optional amount + token (IXO | USDC). A blank or\n * zero amount means \"no payout for this stage\". The amount is in display units;\n * the consumer handler converts to the chain base denom and settles every leg\n * from the entity admin account.\n */\nconst PaymentsEditor: React.FC<{ value: PaymentsInput; onChange: (next: PaymentsInput) => void; disabled?: boolean }> = ({ value, onChange, disabled }) => {\n const setLeg = (key: PaymentLegKey, patch: Partial<PaymentLegInput>) => {\n onChange({ ...value, [key]: { ...value[key], ...patch } });\n };\n return (\n <Stack gap=\"sm\">\n <Stack gap={2}>\n <Text size=\"sm\" fw={500}>\n Payouts\n </Text>\n <Text size=\"xs\" c=\"dimmed\">\n Optional payout per claim stage, paid from the entity admin account. Leave blank for no payout.\n </Text>\n </Stack>\n {PAYMENT_LEGS.map(({ key, label, description }) => (\n <Group key={key} align=\"flex-end\" gap=\"sm\" wrap=\"nowrap\">\n <BaseNumberInput\n label={label}\n description={description}\n placeholder=\"0\"\n min={0}\n decimalScale={6}\n style={{ flex: 1 }}\n value={value[key].amount === '' ? '' : Number(value[key].amount)}\n onChange={(v) => setLeg(key, { amount: v === '' || v == null ? '' : String(v) })}\n disabled={disabled}\n />\n <BaseSelect\n label=\"Token\"\n w={110}\n allowDeselect={false}\n data={PAYMENT_TOKENS.map((t) => ({ value: t, label: t }))}\n value={value[key].token}\n onChange={(v) => setLeg(key, { token: (v as PaymentToken) || 'IXO' })}\n disabled={disabled}\n />\n </Group>\n ))}\n </Stack>\n );\n};\n\nconst StatsStrip: React.FC<{ output: CollectionState }> = ({ output }) => {\n return (\n <Box\n style={{\n border: '1px solid var(--mantine-color-neutralColor-6)',\n borderRadius: 8,\n padding: 12,\n background: 'var(--mantine-color-neutralColor-5)',\n }}\n >\n <Group justify=\"space-between\" wrap=\"wrap\" gap=\"md\">\n <Stat label=\"Collection\" value={output.collectionId} mono />\n <Stat label=\"State\" value={stateLabel(output.state)} badge stateValue={output.state} />\n <Stat label=\"Count\" value={String(output.count ?? '0')} />\n <Stat label=\"Quota\" value={formatQuota(output.quota)} />\n {output.startDate && <Stat label=\"Start\" value={output.startDate} />}\n {output.endDate && <Stat label=\"End\" value={output.endDate} />}\n </Group>\n </Box>\n );\n};\n\nconst Stat: React.FC<{ label: string; value: string; mono?: boolean; badge?: boolean; stateValue?: CollectionStateEnum }> = ({ label, value, mono, badge, stateValue }) => {\n const badgeColor = stateValue === CollectionStateEnum.OPEN ? 'green' : stateValue === CollectionStateEnum.PAUSED ? 'yellow' : 'red';\n return (\n <Stack gap={2} style={{ minWidth: 0 }}>\n <Text size=\"xs\" c=\"dimmed\">\n {label}\n </Text>\n {badge ? (\n <Badge color={badgeColor} variant=\"light\">\n {value}\n </Badge>\n ) : (\n <Text size=\"sm\" fw={600} style={mono ? { wordBreak: 'break-all', fontFamily: 'var(--mantine-font-family-monospace)' } : undefined}>\n {value}\n </Text>\n )}\n </Stack>\n );\n};\n\nexport default CollectionLifecycleFlowDetail;\n","import type { CollectionLifecycleRuntimeInputs, CollectionOperation } from './types';\n\nexport const ACTION_INPUT_REQUIRED_ERROR_CODE = 'ACTION_INPUT_REQUIRED';\n\nconst COLLECTION_MANAGE_OPERATIONS = new Set<CollectionOperation>(['refresh', 'updateState', 'updateDates', 'updateQuota', 'updatePayments', 'updateIntents']);\n\nexport interface CollectionLifecycleRuntimeError {\n message: string;\n at: number;\n code?: string;\n data?: {\n actionType: 'qi/collection.lifecycle';\n field: 'collectionId';\n operation: Exclude<CollectionOperation, 'create'>;\n };\n}\n\n/**\n * Preserve the safe, action-specific context a diagnostic oracle needs after\n * a failed collection run. Runtime inputs can contain sensitive values for\n * other actions, so the durable error records only the operation and missing\n * field rather than copying the complete attempted input object into Yjs.\n */\nexport function collectionLifecycleRuntimeError(\n error: unknown,\n runtimeInputs: Pick<CollectionLifecycleRuntimeInputs, 'operation' | 'collectionId'>,\n at = Date.now()\n): CollectionLifecycleRuntimeError {\n const message = error instanceof Error ? error.message : String(error || 'Collection lifecycle action failed');\n const operation = runtimeInputs.operation;\n const collectionId = String(runtimeInputs.collectionId || '').trim();\n const isMissingCollectionId = operation !== 'create' && COLLECTION_MANAGE_OPERATIONS.has(operation) && collectionId.length === 0 && message.includes('collectionId is required');\n\n if (!isMissingCollectionId) return { message, at };\n\n return {\n message,\n code: ACTION_INPUT_REQUIRED_ERROR_CODE,\n at,\n data: {\n actionType: 'qi/collection.lifecycle',\n field: 'collectionId',\n operation,\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,SAAS,aAAa,WAAW,SAAS,QAAQ,gBAAgB;AACzE,SAAS,OAAO,KAAK,QAAQ,OAAO,QAAQ,SAAS,kBAAkB,OAAO,YAAY;AAE1F,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB,WAAW,mBAAmB;;;ACHjD,IAAM,mCAAmC;AAEhD,IAAM,+BAA+B,oBAAI,IAAyB,CAAC,WAAW,eAAe,eAAe,eAAe,kBAAkB,eAAe,CAAC;AAmBtJ,SAAS,gCACd,OACA,eACA,KAAK,KAAK,IAAI,GACmB;AACjC,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,SAAS,oCAAoC;AAC7G,QAAM,YAAY,cAAc;AAChC,QAAM,eAAe,OAAO,cAAc,gBAAgB,EAAE,EAAE,KAAK;AACnE,QAAM,wBAAwB,cAAc,YAAY,6BAA6B,IAAI,SAAS,KAAK,aAAa,WAAW,KAAK,QAAQ,SAAS,0BAA0B;AAE/K,MAAI,CAAC,sBAAuB,QAAO,EAAE,SAAS,GAAG;AAEjD,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA,MAAM;AAAA,MACJ,YAAY;AAAA,MACZ,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACF;;;ADpBA,IAAM,MAAM;AAkBZ,SAAS,oBAAoB,MAAwC;AACnE,MAAI;AACF,UAAM,SAAS,OAAO,SAAS,WAAY,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,IAAK,QAAQ,CAAC;AACpF,WAAO;AAAA,MACL,QAAQ,QAAQ,UAAU;AAAA,MAC1B,UAAU,QAAQ,YAAY;AAAA,MAC9B,cAAc,QAAQ,gBAAgB;AAAA,MACtC,OAAO,QAAQ,SAAS,OAAO,OAAO,OAAO,KAAK,IAAI;AAAA,MACtD,WAAW,QAAQ,aAAa;AAAA,MAChC,SAAS,QAAQ,WAAW;AAAA,MAC5B,UAAU,QAAQ;AAAA,MAClB,SAAS,QAAQ;AAAA,MACjB,OAAO,OAAO,QAAQ,UAAU,WAAW,OAAO,QAAQ;AAAA,IAC5D;AAAA,EACF,QAAQ;AACN,WAAO,EAAE,QAAQ,IAAI,UAAU,IAAI,cAAc,IAAI,OAAO,IAAI,WAAW,IAAI,SAAS,GAAG;AAAA,EAC7F;AACF;AAEA,IAAM,eAAuC;AAAA,EAC3C,aAAyB,GAAG;AAAA,EAC5B,eAA2B,GAAG;AAAA,EAC9B,eAA2B,GAAG;AAChC;AAEA,SAAS,WAAW,OAAgD;AAClE,MAAI,SAAS,KAAM,QAAO;AAC1B,SAAO,aAAa,KAAK,KAAK,SAAS,KAAK;AAC9C;AAEA,SAAS,YAAY,OAAmC;AACtD,MAAI,SAAS,QAAQ,UAAU,GAAI,QAAO;AAC1C,MAAI,UAAU,IAAK,QAAO;AAC1B,SAAO;AACT;AAEA,SAAS,oBAAoB,OAAwD;AACnF,MAAI,UAAU,MAAM,SAAS,KAAM,QAAO;AAC1C,QAAM,IAAI,OAAO,KAAK;AACtB,SAAO,OAAO,SAAS,CAAC,IAAI,IAAI;AAClC;AAKA,SAAS,UAAU,KAA0B;AAC3C,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,IAAI,IAAI,KAAK,GAAG;AACtB,SAAO,MAAM,EAAE,QAAQ,CAAC,IAAI,OAAO;AACrC;AAEA,SAAS,UAAU,OAA4B;AAC7C,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI;AACF,WAAO,MAAM,YAAY;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAgBA,IAAM,iBAAiC,CAAC,OAAO,MAAM;AACrD,IAAM,iBAAiB;AACvB,IAAM,QAAQ;AAGd,IAAM,eAA6E;AAAA,EACjF,EAAE,KAAK,cAAc,OAAO,cAAc,aAAa,kCAAkC;AAAA,EACzF,EAAE,KAAK,cAAc,OAAO,cAAc,aAAa,mCAAmC;AAAA,EAC1F,EAAE,KAAK,YAAY,OAAO,YAAY,aAAa,iCAAiC;AAAA,EACpF,EAAE,KAAK,aAAa,OAAO,aAAa,aAAa,iCAAiC;AACxF;AAQA,SAAS,qBAAoC;AAC3C,SAAO;AAAA,IACL,YAAY,EAAE,OAAO,OAAO,QAAQ,GAAG;AAAA,IACvC,YAAY,EAAE,OAAO,OAAO,QAAQ,GAAG;AAAA,IACvC,UAAU,EAAE,OAAO,OAAO,QAAQ,GAAG;AAAA,IACrC,WAAW,EAAE,OAAO,OAAO,QAAQ,GAAG;AAAA,EACxC;AACF;AAGA,SAAS,WAAW,KAAqD;AACvE,QAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,MAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,KAAK,WAAW,IAAK,QAAO,EAAE,OAAO,OAAO,QAAQ,GAAG;AACpF,MAAI,QAAsB;AAC1B,MAAI,UAAU;AACd,MAAI,KAAK,UAAU,QAAQ;AACzB,YAAQ;AACR,cAAU;AAAA,EACZ,WAAW,KAAK,UAAU,kBAAkB,KAAK,MAAM,WAAW,MAAM,GAAG;AACzE,YAAQ;AACR,cAAU;AAAA,EACZ,WAAW,KAAK,UAAU,QAAQ;AAChC,YAAQ;AAAA,EACV,WAAW,KAAK,UAAU,OAAO;AAC/B,YAAQ;AAAA,EACV;AACA,QAAM,MAAM,OAAO,KAAK,MAAM;AAC9B,MAAI,CAAC,OAAO,SAAS,GAAG,EAAG,QAAO,EAAE,OAAO,QAAQ,GAAG;AACtD,QAAM,UAAU,UAAU,MAAM,QAAQ;AACxC,SAAO,EAAE,OAAO,QAAQ,OAAO,OAAO,EAAE;AAC1C;AAEA,SAAS,gBAAgB,UAA+C;AACtE,MAAI,CAAC,SAAU,QAAO,mBAAmB;AACzC,SAAO;AAAA,IACL,YAAY,WAAW,SAAS,UAAU;AAAA,IAC1C,YAAY,WAAW,SAAS,UAAU;AAAA,IAC1C,UAAU,WAAW,SAAS,QAAQ;AAAA,IACtC,WAAW,WAAW,SAAS,SAAS;AAAA,EAC1C;AACF;AAIA,SAAS,WAAW,KAAqD;AACvE,QAAM,IAAI,oBAAoB,IAAI,MAAM;AACxC,MAAI,KAAK,QAAQ,KAAK,EAAG,QAAO;AAChC,SAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,EAAE,OAAO,IAAI,OAAO,QAAQ,IAAI,OAAO,CAAC,EAAE;AAC3E;AAEA,SAAS,gBAAgB,OAA4C;AACnE,QAAM,WAAqB;AAAA,IACzB,YAAY,WAAW,MAAM,UAAU;AAAA,IACvC,YAAY,WAAW,MAAM,UAAU;AAAA,IACvC,UAAU,WAAW,MAAM,QAAQ;AAAA,IACnC,WAAW,WAAW,MAAM,SAAS;AAAA,EACvC;AACA,MAAI,CAAC,SAAS,cAAc,CAAC,SAAS,cAAc,CAAC,SAAS,YAAY,CAAC,SAAS,WAAW;AAC7F,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAmBO,IAAM,gCAAiG,CAAC;AAAA,EAC7G;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA0B,qBAAqB,CAAC;AAC1E,QAAM,SAAS,QAAQ,MAAM,oBAAoB,MAAM,GAAG,CAAC,MAAM,CAAC;AAClE,QAAM,iBAAiB,QAAQ,YAAY,CAAC;AAC5C,QAAM,gBAAgB,oBAAoB,MAAM;AAChD,QAAM,cAAc,QAAQ,OAAO,EAAE,UAAU,cAAc,IAAI,CAAC,aAAa,CAAC;AAGhF,QAAM,oBAAoB,QAAQ,MAAM,kBAAkB,OAAO,gBAAgB,IAAI,gBAAgB,WAAW,EAAE,KAAK,GAAG,CAAC,OAAO,cAAc,gBAAgB,WAAW,CAAC;AAK5K,QAAM,SAAU,QAAQ,UAAmD;AAC3E,QAAM,qBAAsB,QAAQ,gBAA2B;AAG/D,QAAM,wBAAwB,sBAAsB;AAEpD,QAAM,YAAY,QAAQ,UAAU;AACpC,QAAM,WAAW,QAAQ,UAAU;AACnC,QAAM,eAAe,QAAQ,OAAO,WAAW;AAE/C,QAAM,uBAAuB,QAAQ,UAAU,eAAe,CAAC,CAAC;AAChE,QAAM,UAAU,QAAQ,UAAU,eAAe,CAAC;AAGlD,QAAM,cAAc,CAAC,CAAC;AAEtB,QAAM,eAAe,CAAC,CAAC,qBAAqB;AAE5C,QAAM,eAAe,CAAC;AAOtB,QAAM,CAAC,WAAW,YAAY,IAAI,SAA8B,eAAe,WAAW,aAAa;AAGvG,YAAU,MAAM;AACd,QAAI,eAAe,cAAc,UAAU;AACzC,mBAAa,aAAa;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,CAAC;AAG3B,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiB,OAAO,SAAS,GAAG;AAC1E,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAiB,OAAO,aAAa,EAAE;AACrF,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAiB,OAAO,WAAW,EAAE;AAC/E,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAwB,MAAM,gBAAgB,OAAO,QAAQ,CAAC;AAG1G,QAAM,CAAC,aAAa,cAAc,IAAI,SAA8B,QAAQ,qBAAiC;AAC7G,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAiB,EAAE;AAC7D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiB,EAAE;AACzD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,EAAE;AACrD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAwB,MAAM,gBAAgB,QAAQ,QAAQ,CAAC;AACvG,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAiB,EAAE;AAKjE,QAAM,gBAAgB,OAAe,EAAE;AACvC,YAAU,MAAM;AACd,QAAI,CAAC,YAAa;AAClB,UAAM,cAAc,KAAK,UAAU;AAAA,MACjC,IAAI;AAAA,MACJ,GAAG,QAAQ;AAAA,MACX,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,GAAG,QAAQ;AAAA,MACX,YAAY,QAAQ;AAAA,IACtB,CAAC;AACD,QAAI,cAAc,YAAY,YAAa;AAC3C,kBAAc,UAAU;AACxB,mBAAe,QAAQ,qBAAiC;AACxD,qBAAiB,QAAQ,aAAa,EAAE;AACxC,mBAAe,QAAQ,WAAW,EAAE;AACpC,iBAAa,QAAQ,SAAS,OAAO,OAAO,OAAO,KAAK,IAAI,EAAE;AAC9D,oBAAgB,gBAAgB,QAAQ,QAAQ,CAAC;AACjD,uBAAmB,QAAQ,UAAU,KAAK,UAAU,OAAO,SAAS,MAAM,CAAC,IAAI,EAAE;AAAA,EACnF,GAAG,CAAC,aAAa,oBAAoB,QAAQ,OAAO,QAAQ,WAAW,QAAQ,SAAS,QAAQ,OAAO,QAAQ,UAAU,QAAQ,SAAS,QAAQ,UAAU,CAAC;AAM7J,QAAM,mBAAmB,OAAO,KAAK;AACrC,QAAM,aAAa,YAAY,YAAY;AACzC,QAAI,CAAC,eAAe;AAClB,oBAAc,EAAE,OAAO,UAAU,OAAO,EAAE,SAAS,yCAAyC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;AAC9G;AAAA,IACF;AACA,UAAM,eAAe;AACrB,QAAI,CAAC,aAAc;AACnB,YAAQ,IAAI,GAAG,GAAG,mBAAc,EAAE,aAAa,CAAC;AAChD,QAAI;AACF,YAAM,UAAU,MAAM,cAAc,EAAE,eAAe,EAAE,WAAW,WAAW,aAAa,EAAsC,CAAC;AACjI,UAAI,CAAC,QAAQ,SAAS;AACpB,cAAM,IAAI,MAAM,QAAQ,SAAS,oCAAoC;AAAA,MACvE;AACA,YAAM,UAAU,QAAQ;AACxB,UAAI,CAAC,SAAS,cAAc;AAC1B,cAAM,IAAI,MAAM,gFAAgF;AAAA,MAClG;AACA,cAAQ,IAAI,GAAG,GAAG,oBAAoB,EAAE,cAAc,QAAQ,aAAa,CAAC;AAAA,IAC9E,SAAS,KAAK;AACZ,YAAM,UAAU,gCAAgC,KAAK,EAAE,WAAW,WAAW,aAAa,CAAC;AAC3F,YAAM,UAAU,QAAQ;AACxB,cAAQ,MAAM,GAAG,GAAG,mBAAmB,EAAE,QAAQ,CAAC;AAClD,oBAAc,EAAE,OAAO,UAAU,OAAO,QAAQ,CAAC;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,eAAe,uBAAuB,aAAa,CAAC;AAExD,YAAU,MAAM;AACd,QAAI,iBAAiB,QAAS;AAC9B,QAAI,CAAC,kBAAmB;AACxB,QAAI,YAAa;AACjB,QAAI,aAAa,SAAU;AAC3B,QAAI,QAAQ,UAAU,qBAAsB;AAC5C,qBAAiB,UAAU;AAC3B,YAAQ,IAAI,GAAG,GAAG,oBAAoB,EAAE,kBAAkB,CAAC;AAC3D,eAAW;AAAA,EACb,GAAG,CAAC,mBAAmB,aAAa,WAAW,UAAU,QAAQ,OAAO,UAAU,CAAC;AAWnF,QAAM,iBAAiB,OAAO,KAAK;AACnC,YAAU,MAAM;AACd,QAAI,kBAAmB;AACvB,QAAI,CAAC,mBAAoB;AACzB,QAAI,CAAC,UAAU,CAAC,MAAO;AACvB,QAAI,eAAe,QAAS;AAC5B,QAAI,OAAO,iBAAiB,mBAAoB;AAChD,mBAAe,UAAU;AACzB,QAAI;AACF,YAAM,MAAM,SAAS,KAAK,MAAM,MAAM,IAAI,CAAC;AAC3C,UAAI,eAAe;AACnB,aAAO,YAAY,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,QAAQ,KAAK,UAAU,GAAG,EAAE,EAAE,CAAC;AACpF,cAAQ,IAAI,GAAG,GAAG,2CAA2C,EAAE,cAAc,mBAAmB,CAAC;AAAA,IACnG,SAAS,KAAK;AACZ,qBAAe,UAAU;AACzB,cAAQ,KAAK,GAAG,GAAG,mDAAmD,GAAG;AAAA,IAC3E;AAAA,EACF,GAAG,CAAC,mBAAmB,oBAAoB,OAAO,cAAc,QAAQ,QAAQ,KAAK,CAAC;AAKtF,QAAM,eAAe,oBAAoB,QAAQ,KAAK,KAAK;AAE3D,QAAM,aAAa,QAAQ,MAAuC;AAChE,QAAI,cAAc,UAAW,QAAO,EAAE,IAAI,KAAK;AAE/C,QAAI,cAAc,UAAU;AAC1B,UAAI,CAAC,OAAO,OAAQ,QAAO,EAAE,IAAI,OAAO,OAAO,sEAAiE;AAChH,UAAI,CAAC,OAAO,SAAU,QAAO,EAAE,IAAI,OAAO,OAAO,6DAAwD;AACzG,YAAM,IAAI,oBAAoB,WAAW;AACzC,UAAI,KAAK,QAAQ,IAAI,EAAG,QAAO,EAAE,IAAI,OAAO,OAAO,oDAAoD;AACvG,UAAI,mBAAmB,iBAAiB,IAAI,KAAK,aAAa,KAAK,IAAI,KAAK,eAAe,GAAG;AAC5F,eAAO,EAAE,IAAI,OAAO,OAAO,yCAAyC;AAAA,MACtE;AACA,aAAO,EAAE,IAAI,KAAK;AAAA,IACpB;AAGA,QAAI,CAAC,sBAAuB,QAAO,EAAE,IAAI,OAAO,OAAO,4BAA4B;AAEnF,QAAI,cAAc,eAAe;AAC/B,UAAI,QAAQ,SAAS,QAAQ,OAAO,UAAU,YAAa,QAAO,EAAE,IAAI,OAAO,OAAO,uCAAuC;AAC7H,aAAO,EAAE,IAAI,KAAK;AAAA,IACpB;AAEA,QAAI,cAAc,eAAe;AAC/B,UAAI,CAAC,iBAAiB,CAAC,YAAa,QAAO,EAAE,IAAI,OAAO,OAAO,wCAAwC;AACvG,UAAI,iBAAiB,eAAe,IAAI,KAAK,WAAW,KAAK,IAAI,KAAK,aAAa,GAAG;AACpF,eAAO,EAAE,IAAI,OAAO,OAAO,yCAAyC;AAAA,MACtE;AACA,aAAO,EAAE,IAAI,KAAK;AAAA,IACpB;AAEA,QAAI,cAAc,eAAe;AAC/B,YAAM,IAAI,oBAAoB,SAAS;AACvC,UAAI,KAAK,QAAQ,IAAI,EAAG,QAAO,EAAE,IAAI,OAAO,OAAO,oDAAoD;AAEvG,UAAI,MAAM,KAAK,IAAI,cAAc;AAC/B,eAAO,EAAE,IAAI,OAAO,OAAO,8CAA8C,YAAY,0BAA0B;AAAA,MACjH;AACA,aAAO,EAAE,IAAI,KAAK;AAAA,IACpB;AAEA,QAAI,cAAc,kBAAkB;AAClC,UAAI,CAAC,gBAAgB,YAAY,GAAG;AAClC,eAAO,EAAE,IAAI,OAAO,OAAO,oDAAoD;AAAA,MACjF;AACA,aAAO,EAAE,IAAI,KAAK;AAAA,IACpB;AAEA,QAAI,cAAc,iBAAiB;AACjC,UAAI,CAAC,gBAAgB,KAAK,EAAG,QAAO,EAAE,IAAI,OAAO,OAAO,qCAAqC;AAC7F,UAAI;AACF,aAAK,MAAM,eAAe;AAAA,MAC5B,QAAQ;AACN,eAAO,EAAE,IAAI,OAAO,OAAO,8BAA8B;AAAA,MAC3D;AACA,aAAO,EAAE,IAAI,KAAK;AAAA,IACpB;AAEA,WAAO,EAAE,IAAI,OAAO,OAAO,yBAAyB;AAAA,EACtD,GAAG;AAAA,IACD;AAAA,IACA,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAKD,QAAM,qBAAqB,YAAY,MAAwC;AAI7E,UAAM,WAAW,yBAAyB;AAC1C,YAAQ,WAAW;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,UACL,WAAW;AAAA,UACX,OAAO,OAAO,oBAAoB,WAAW,KAAK,CAAC;AAAA,UACnD,WAAW,mBAAmB;AAAA,UAC9B,SAAS,iBAAiB;AAAA,UAC1B,UAAU,gBAAgB,cAAc;AAAA,UACxC,SAAS,OAAO;AAAA,UAChB,OAAO,OAAO;AAAA,QAChB;AAAA,MACF,KAAK;AACH,eAAO,EAAE,WAAW,eAAe,cAAc,UAAU,OAAO,YAAY;AAAA,MAChF,KAAK;AACH,eAAO,EAAE,WAAW,eAAe,cAAc,UAAU,WAAW,iBAAiB,QAAW,SAAS,eAAe,OAAU;AAAA,MACtI,KAAK;AACH,eAAO,EAAE,WAAW,eAAe,cAAc,UAAU,OAAO,OAAO,oBAAoB,SAAS,KAAK,CAAC,EAAE;AAAA,MAChH,KAAK;AACH,eAAO,EAAE,WAAW,kBAAkB,cAAc,UAAU,UAAU,gBAAgB,YAAY,EAAE;AAAA,MACxG,KAAK;AACH,eAAO,EAAE,WAAW,iBAAiB,cAAc,UAAU,SAAS,KAAK,MAAM,eAAe,EAA6B;AAAA,MAC/H,KAAK;AAAA,MACL;AACE,eAAO,EAAE,WAAW,WAAW,cAAc,SAAS;AAAA,IAC1D;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,YAAU,MAAM;AACd,QAAI,CAAC,sBAAuB;AAC5B,QAAI;AACF,4BAAsB,mBAAmB,CAAC;AAAA,IAC5C,QAAQ;AAGN,4BAAsB,EAAE,UAAU,CAAC;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,uBAAuB,oBAAoB,SAAS,CAAC;AAGzD,YAAU,MAAM;AACd,oBAAgB,CAAC,cAAc,CAAC,aAAa,WAAW,MAAM,gBAAgB,KAAK,CAAC;AAAA,EACtF,GAAG,CAAC,eAAe,YAAY,WAAW,WAAW,EAAE,CAAC;AAKxD,QAAM,UAAU,YAAY,YAAY;AACtC,QAAI,cAAc,UAAW;AAC7B,QAAI,CAAC,eAAe;AAClB,oBAAc,EAAE,OAAO,UAAU,OAAO,EAAE,SAAS,yCAAyC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;AAC9G;AAAA,IACF;AACA,QAAI,CAAC,WAAW,IAAI;AAClB,cAAQ,KAAK,GAAG,GAAG,8CAAyC,EAAE,WAAW,OAAO,WAAW,MAAM,CAAC;AAClG;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AACF,sBAAgB,mBAAmB;AAAA,IACrC,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,oBAAc,EAAE,OAAO,UAAU,OAAO,EAAE,SAAS,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;AACrE;AAAA,IACF;AAEA,YAAQ,IAAI,GAAG,GAAG,mBAAc,EAAE,WAAW,cAAc,WAAW,cAAc,sBAAsB,CAAC;AAC3G,QAAI;AACF,YAAM,UAAU,MAAM,cAAc,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,wBAAwB,KAAK,EAAE,EAAsC,CAAC;AAClJ,UAAI,CAAC,QAAQ,SAAS;AACpB,cAAM,IAAI,MAAM,QAAQ,SAAS,cAAc,cAAc,SAAS,SAAS;AAAA,MACjF;AACA,YAAM,UAAU,QAAQ;AAExB,UAAI,CAAC,SAAS,cAAc;AAC1B,cAAM,IAAI,MAAM,0FAA0F;AAAA,MAC5G;AACA,cAAQ,IAAI,GAAG,GAAG,oBAAoB,EAAE,WAAW,cAAc,WAAW,cAAc,QAAQ,cAAc,OAAO,QAAQ,MAAM,CAAC;AAAA,IACxI,SAAS,KAAK;AACZ,YAAM,UAAU,gCAAgC,KAAK,aAAa;AAClE,YAAM,UAAU,QAAQ;AACxB,cAAQ,MAAM,GAAG,GAAG,mBAAmB,EAAE,WAAW,cAAc,WAAW,QAAQ,CAAC;AACtF,oBAAc,EAAE,OAAO,UAAU,OAAO,QAAQ,CAAC;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,YAAY,WAAW,eAAe,WAAW,IAAI,WAAW,OAAO,WAAW,oBAAoB,uBAAuB,aAAa,CAAC;AAG/I,YAAU,MAAM;AACd,QAAI,CAAC,sBAAuB;AAC5B,0BAAsB,OAAO;AAAA,EAC/B,GAAG,CAAC,uBAAuB,OAAO,CAAC;AAGnC,QAAM,cAAc,YAAY,MAAM;AACpC,YAAQ,IAAI,GAAG,GAAG,oBAAe;AACjC,qBAAiB,UAAU;AAC3B,kBAAc,UAAU;AACxB,kBAAc,EAAE,OAAO,QAAQ,OAAO,QAAW,QAAQ,CAAC,EAAE,CAAC;AAAA,EAC/D,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,iBAAiB,YAAY,MAAM;AACvC,YAAQ,IAAI,GAAG,GAAG,YAAY;AAC9B,kBAAc,EAAE,OAAO,QAAQ,OAAO,QAAW,QAAQ,CAAC,EAAE,CAAC;AAE7D,eAAW,MAAM;AACf,cAAQ;AAAA,IACV,GAAG,CAAC;AAAA,EACN,GAAG,CAAC,eAAe,OAAO,CAAC;AAG3B,QAAM,sBAAsB,YAAY,MAAM;AAC5C,qBAAiB,UAAU;AAC3B,eAAW;AAAA,EACb,GAAG,CAAC,UAAU,CAAC;AAKf,QAAM,QAAS,OAAO,OAAO,UAAqB,eAAe,4BAA4B;AAC7F,QAAM,cAAe,OAAO,OAAO,eAA0B;AAE7D,SACE,oCAAC,SAAM,KAAI,MAAK,KAAI,cAClB,oCAAC,uBAAoB,QAAgB,OAAc,SAAkB,GACpE,SAAS,UAAU,uBAAuB,oCAAC,qBAAkB,OAAO,OAAO,UAAU,UAAU,YAAwB,aAAY,0BAAyB,GAC7J,oCAAC,SAAM,KAAK,KACV,oCAAC,QAAK,IAAI,OAAM,KAAM,GACrB,eACC,oCAAC,QAAK,MAAK,MAAK,GAAE,YACf,WACH,CAEJ,GAGC,WACC,oCAAC,oBAAM,MAAM,oCAAC,mBAAgB,MAAM,IAAI,GAAI,OAAM,UAAS,OAAM,wBAC/D,oCAAC,SAAM,KAAI,QACT,oCAAC,QAAK,MAAK,QAAK,mIAA4H,GAC5I,oCAAC,aACC,oCAAC,UAAO,SAAQ,WAAU,MAAK,MAAK,SAAS,eAAa,OAE1D,GACA,oCAAC,UAAO,SAAQ,UAAS,MAAK,MAAK,SAAS,gBAAgB,UAAU,CAAC,WAAW,MAAI,eAEtF,CACF,CACF,CACF,GAID,YACC,oCAAC,oBAAM,MAAM,oCAAC,mBAAgB,MAAM,IAAI,GAAI,OAAM,OAAM,OAAM,iBAAgB,QAAQ,qBACpF,oCAAC,SAAM,KAAI,QACR,gBAAgB,oCAAC,QAAK,MAAK,QAAM,YAAa,GAC/C,oCAAC,aACC,oCAAC,UAAO,SAAQ,WAAU,MAAK,MAAK,SAAS,eAAa,OAE1D,GACC,CAAC,CAAC,yBACD,oCAAC,UAAO,SAAQ,UAAS,MAAK,MAAK,aAAa,oCAAC,eAAY,MAAM,IAAI,GAAI,SAAS,uBAAqB,eAEzG,CAEJ,CACF,CACF,GAID,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,YAC9C,oCAAC,SAAM,KAAI,QACT,oCAAC,UAAO,MAAM,IAAI,GAClB,oCAAC,QAAK,MAAK,MAAK,GAAE,YAAS,uBACL,wBAAwB,IAAI,qBAAqB,MAAM,IAAG,QAChF,CACF,GAID,eACC,oCAAC,SAAM,KAAI,QACT,oCAAC,cAAW,QAAmC,GAE9C,wBACC,oCAAC,oBAAM,MAAM,oCAAC,aAAU,MAAM,IAAI,GAAI,OAAM,SAAQ,QAAQ,qBAAmB,eACjE,oBAAmB,mBAAW,WAAW,QAAQ,KAAK,GAAE,GACtE,GAGF;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,OAAO,cAAc,WAAW,gBAAgB;AAAA,MAChD,UAAU,CAAC,UAAU,aAAa,KAA4B;AAAA,MAC9D,UAAU,cAAc;AAAA,MACxB,MAAM;AAAA,QACJ,EAAE,OAAO,SAAS,OAAO,cAAc;AAAA,QACvC,EAAE,OAAO,SAAS,OAAO,cAAc;AAAA,QACvC,EAAE,OAAO,SAAS,OAAO,cAAc;AAAA,QACvC,EAAE,OAAO,YAAY,OAAO,iBAAiB;AAAA,QAC7C,EAAE,OAAO,WAAW,OAAO,gBAAgB;AAAA,MAC7C;AAAA;AAAA,EACF,GAEC,cAAc,iBACb;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,OAAO,OAAO,WAAW;AAAA,MACzB,UAAU,CAAC,UAAU,eAAe,OAAO,KAAK,CAAwB;AAAA,MACxE,UAAU,cAAc;AAAA,MACxB,MAAM;AAAA,QACJ,EAAE,OAAO,QAAQ,OAAO,mBAA+B,EAAE;AAAA,QACzD,EAAE,OAAO,UAAU,OAAO,qBAAiC,EAAE;AAAA,QAC7D,EAAE,OAAO,UAAU,OAAO,qBAAiC,EAAE;AAAA,MAC/D;AAAA;AAAA,EACF,GAGD,cAAc,iBACb,oCAAC,SAAM,MAAI,MAAC,OAAM,gBAChB;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,WAAS;AAAA,MACT,OAAO,UAAU,aAAa;AAAA,MAC9B,UAAU,CAAC,SAAS,iBAAiB,UAAU,IAAI,CAAC;AAAA,MACpD,UAAU,cAAc;AAAA;AAAA,EAC1B,GACA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,WAAS;AAAA,MACT,SAAS,UAAU,aAAa,KAAK;AAAA,MACrC,OAAO,UAAU,WAAW;AAAA,MAC5B,UAAU,CAAC,SAAS,eAAe,UAAU,IAAI,CAAC;AAAA,MAClD,UAAU,cAAc;AAAA;AAAA,EAC1B,CACF,GAGD,cAAc,iBACb;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAa,oBAAoB,YAAY,iCAAiC,YAAY;AAAA,MAC1F,KAAK;AAAA,MACL,OAAO,cAAc,KAAK,KAAK,OAAO,SAAS;AAAA,MAC/C,UAAU,CAAC,UAAU,aAAa,UAAU,MAAM,SAAS,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,MACpF,UAAU,cAAc;AAAA;AAAA,EAC1B,GAGD,cAAc,oBAAoB,oCAAC,kBAAe,OAAO,cAAc,UAAU,iBAAiB,UAAU,cAAc,WAAW,GAErI,cAAc,mBACb;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,mBAAmB,EAAE,cAAc,KAAK;AAAA,MACzD,UAAU,cAAc;AAAA;AAAA,EAC1B,GAGD,CAAC,WAAW,MAAM,WAAW,SAC5B,oCAAC,oBAAM,OAAM,UAAS,QAAQ,qBAC3B,WAAW,KACd,CAEJ,GAID,gBAAgB,CAAC,eAChB,oCAAC,SAAM,KAAI,SACP,CAAC,OAAO,UAAU,CAAC,OAAO,aAC1B,oCAAC,oBAAM,OAAM,UAAS,QAAQ,qBAAmB,sFAEjD,GAEF;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO,gBAAgB,KAAK,KAAK,OAAO,WAAW;AAAA,MACnD,UAAU,CAAC,UAAU,eAAe,UAAU,MAAM,SAAS,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,MACtF,UAAU,cAAc;AAAA;AAAA,EAC1B,GACA,oCAAC,SAAM,MAAI,MAAC,OAAM,gBAChB;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,WAAS;AAAA,MACT,OAAO,UAAU,eAAe;AAAA,MAChC,UAAU,CAAC,SAAS,mBAAmB,UAAU,IAAI,CAAC;AAAA,MACtD,UAAU,cAAc;AAAA;AAAA,EAC1B,GACA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,WAAS;AAAA,MACT,SAAS,UAAU,eAAe,KAAK;AAAA,MACvC,OAAO,UAAU,aAAa;AAAA,MAC9B,UAAU,CAAC,SAAS,iBAAiB,UAAU,IAAI,CAAC;AAAA,MACpD,UAAU,cAAc;AAAA;AAAA,EAC1B,CACF,GACA,oCAAC,kBAAe,OAAO,gBAAgB,UAAU,mBAAmB,UAAU,cAAc,WAAW,GACtG,CAAC,WAAW,MAAM,WAAW,SAC5B,oCAAC,oBAAM,OAAM,UAAS,QAAQ,qBAC3B,WAAW,KACd,CAEJ,GAGD,cACC,oCAAC,QAAK,MAAK,MAAK,GAAE,YAAS,mCAE3B,GAKD,aACC,oCAAC,WAAQ,OAAM,6BAA4B,mBAAmB,KAAK,MAAM,GAAG,QAAQ,GAAG,QAAO,QAC5F,oCAAC,SAAM,KAAI,MAAK,SAAQ,UAAS,GAAE,UACjC,oCAAC,UAAO,MAAM,IAAI,GAClB,oCAAC,QAAK,MAAK,QAAK,gCAAyB,CAC3C,CACF,CAEJ;AAEJ;AASA,IAAM,iBAAkH,CAAC,EAAE,OAAO,UAAU,SAAS,MAAM;AACzJ,QAAM,SAAS,CAAC,KAAoB,UAAoC;AACtE,aAAS,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC;AAAA,EAC3D;AACA,SACE,oCAAC,SAAM,KAAI,QACT,oCAAC,SAAM,KAAK,KACV,oCAAC,QAAK,MAAK,MAAK,IAAI,OAAK,SAEzB,GACA,oCAAC,QAAK,MAAK,MAAK,GAAE,YAAS,iGAE3B,CACF,GACC,aAAa,IAAI,CAAC,EAAE,KAAK,OAAO,YAAY,MAC3C,oCAAC,SAAM,KAAU,OAAM,YAAW,KAAI,MAAK,MAAK,YAC9C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,aAAY;AAAA,MACZ,KAAK;AAAA,MACL,cAAc;AAAA,MACd,OAAO,EAAE,MAAM,EAAE;AAAA,MACjB,OAAO,MAAM,GAAG,EAAE,WAAW,KAAK,KAAK,OAAO,MAAM,GAAG,EAAE,MAAM;AAAA,MAC/D,UAAU,CAAC,MAAM,OAAO,KAAK,EAAE,QAAQ,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,MAC/E;AAAA;AAAA,EACF,GACA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,GAAG;AAAA,MACH,eAAe;AAAA,MACf,MAAM,eAAe,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE;AAAA,MACxD,OAAO,MAAM,GAAG,EAAE;AAAA,MAClB,UAAU,CAAC,MAAM,OAAO,KAAK,EAAE,OAAQ,KAAsB,MAAM,CAAC;AAAA,MACpE;AAAA;AAAA,EACF,CACF,CACD,CACH;AAEJ;AAEA,IAAM,aAAoD,CAAC,EAAE,OAAO,MAAM;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,QACT,YAAY;AAAA,MACd;AAAA;AAAA,IAEA,oCAAC,SAAM,SAAQ,iBAAgB,MAAK,QAAO,KAAI,QAC7C,oCAAC,QAAK,OAAM,cAAa,OAAO,OAAO,cAAc,MAAI,MAAC,GAC1D,oCAAC,QAAK,OAAM,SAAQ,OAAO,WAAW,OAAO,KAAK,GAAG,OAAK,MAAC,YAAY,OAAO,OAAO,GACrF,oCAAC,QAAK,OAAM,SAAQ,OAAO,OAAO,OAAO,SAAS,GAAG,GAAG,GACxD,oCAAC,QAAK,OAAM,SAAQ,OAAO,YAAY,OAAO,KAAK,GAAG,GACrD,OAAO,aAAa,oCAAC,QAAK,OAAM,SAAQ,OAAO,OAAO,WAAW,GACjE,OAAO,WAAW,oCAAC,QAAK,OAAM,OAAM,OAAO,OAAO,SAAS,CAC9D;AAAA,EACF;AAEJ;AAEA,IAAM,OAAsH,CAAC,EAAE,OAAO,OAAO,MAAM,OAAO,WAAW,MAAM;AACzK,QAAM,aAAa,8BAA0C,UAAU,gCAA4C,WAAW;AAC9H,SACE,oCAAC,SAAM,KAAK,GAAG,OAAO,EAAE,UAAU,EAAE,KAClC,oCAAC,QAAK,MAAK,MAAK,GAAE,YACf,KACH,GACC,QACC,oCAAC,SAAM,OAAO,YAAY,SAAQ,WAC/B,KACH,IAEA,oCAAC,QAAK,MAAK,MAAK,IAAI,KAAK,OAAO,OAAO,EAAE,WAAW,aAAa,YAAY,uCAAuC,IAAI,UACrH,KACH,CAEJ;AAEJ;AAEA,IAAO,wCAAQ;","names":[]}
@@ -0,0 +1,271 @@
1
+ import {
2
+ parseCollectionUsersActionInputs,
3
+ serializeCollectionUsersActionInputs
4
+ } from "./chunk-4TMOIK5M.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 "./chunk-F4PTFXZH.js";
20
+ import "./chunk-IH4T7V4C.js";
21
+ import "./chunk-PYNDJDWZ.js";
22
+ import "./chunk-NIXT2SBH.js";
23
+ import "./chunk-JIDTNKKL.js";
24
+ import "./chunk-JVROGQ7Q.js";
25
+ import {
26
+ getAction,
27
+ getEventsForBlock
28
+ } from "./chunk-IIIZZ4E4.js";
29
+ import "./chunk-HT6L7A5M.js";
30
+ import "./chunk-N3ORMGAI.js";
31
+ import "./chunk-NCSGIRRQ.js";
32
+ import {
33
+ actionAlertStyles
34
+ } from "./chunk-6GKJR52N.js";
35
+ import "./chunk-EBFFDDAS.js";
36
+ import {
37
+ useBlocknoteHandlers,
38
+ useTranslate
39
+ } from "./chunk-4DGCCXD6.js";
40
+ import "./chunk-7W7UUUIE.js";
41
+ import "./chunk-TS2LNBF2.js";
42
+
43
+ // src/mantine/blocks/action/actionTypes/collectionUsers/CollectionUsersConfig.tsx
44
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
45
+ import { Alert, Button, Group, Loader, Paper, Select, Stack, Text } from "@mantine/core";
46
+ import { IconBolt, IconClock, IconPencil } from "@tabler/icons-react";
47
+ var ModeCard = ({ active, icon, title, description, onClick }) => /* @__PURE__ */ React.createElement(
48
+ Paper,
49
+ {
50
+ withBorder: true,
51
+ p: "sm",
52
+ onClick,
53
+ role: "button",
54
+ tabIndex: 0,
55
+ onKeyDown: (e) => {
56
+ if (e.key === "Enter" || e.key === " ") {
57
+ e.preventDefault();
58
+ onClick();
59
+ }
60
+ },
61
+ style: {
62
+ flex: 1,
63
+ cursor: "pointer",
64
+ borderColor: active ? "var(--mantine-color-accent-5)" : "var(--mantine-color-neutralColor-6)",
65
+ borderWidth: active ? 2 : 1,
66
+ background: active ? "color-mix(in srgb, var(--mantine-color-accent-5) 8%, transparent)" : void 0,
67
+ transition: "border-color 120ms ease, background 120ms ease"
68
+ }
69
+ },
70
+ /* @__PURE__ */ React.createElement(Stack, { gap: 4 }, /* @__PURE__ */ React.createElement(Group, { gap: 6, align: "center", wrap: "nowrap" }, icon, /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 600 }, title)), /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, description))
71
+ );
72
+ var CollectionUsersConfig = ({ inputs, onInputsChange, editor, blockId }) => {
73
+ const t = useTranslate();
74
+ const handlers = useBlocknoteHandlers();
75
+ const [local, setLocal] = useState(() => parseCollectionUsersActionInputs(inputs));
76
+ const [collections, setCollections] = useState([]);
77
+ const [loadingCollections, setLoadingCollections] = useState(false);
78
+ const [error, setError] = useState(null);
79
+ const readTriggerRaw = useCallback(() => {
80
+ const b = (editor?.document || []).find((x) => x?.id === blockId);
81
+ return typeof b?.props?.trigger === "string" ? b.props.trigger : "";
82
+ }, [editor, blockId]);
83
+ const [triggerRaw, setTriggerRaw] = useState(() => readTriggerRaw());
84
+ useEffect(() => {
85
+ setLocal(parseCollectionUsersActionInputs(inputs));
86
+ setTriggerRaw(readTriggerRaw());
87
+ }, [inputs, readTriggerRaw]);
88
+ const triggerSpec = useMemo(() => {
89
+ if (!triggerRaw) return null;
90
+ try {
91
+ return JSON.parse(triggerRaw);
92
+ } catch {
93
+ return null;
94
+ }
95
+ }, [triggerRaw]);
96
+ const mode = triggerSpec?.type === "block.event" ? "trigger" : "manual";
97
+ const writeProps = useCallback(
98
+ (patch) => {
99
+ const b = (editor?.document || []).find((x) => x?.id === blockId);
100
+ if (!b) return;
101
+ editor.updateBlock(b, { props: { ...b.props, ...patch } });
102
+ },
103
+ [editor, blockId]
104
+ );
105
+ const update = useCallback(
106
+ (patch) => {
107
+ const updated = { ...local, ...patch };
108
+ setLocal(updated);
109
+ onInputsChange(serializeCollectionUsersActionInputs(updated));
110
+ },
111
+ [local, onInputsChange]
112
+ );
113
+ const sourceOptions = useMemo(() => {
114
+ const blocks = editor?.document || [];
115
+ return blocks.filter((b) => b?.id && b.id !== blockId).map((b) => {
116
+ const action = getAction(b.props?.actionType || "");
117
+ const events = getEventsForBlock(action, b.props?.inputs);
118
+ const collectionEvent = events.find((e) => e.payloadSchema?.some((f) => f.path === "collectionId"));
119
+ if (!collectionEvent) return null;
120
+ return { value: b.id, label: String(b.props?.title || action?.type || b.id), eventName: collectionEvent.name };
121
+ }).filter((o) => o !== null);
122
+ }, [editor, blockId, triggerRaw, inputs]);
123
+ const selectedSource = useMemo(() => sourceOptions.find((o) => o.value === triggerSpec?.sourceBlockId), [sourceOptions, triggerSpec]);
124
+ const switchToTrigger = useCallback(() => {
125
+ if (mode === "trigger") return;
126
+ const cleared = { deedDid: "", collectionId: "" };
127
+ setLocal(cleared);
128
+ setCollections([]);
129
+ setError(null);
130
+ const triggerJson = JSON.stringify({ type: "block.event", sourceBlockId: "", eventName: "" });
131
+ setTriggerRaw(triggerJson);
132
+ writeProps({ trigger: triggerJson, inputs: serializeCollectionUsersActionInputs(cleared) });
133
+ }, [mode, writeProps]);
134
+ const switchToManual = useCallback(() => {
135
+ if (mode === "manual") return;
136
+ setTriggerRaw("");
137
+ writeProps({ trigger: "" });
138
+ }, [mode, writeProps]);
139
+ const pickSource = useCallback(
140
+ (sourceBlockId, eventName) => {
141
+ const triggerJson = JSON.stringify({ type: "block.event", sourceBlockId, eventName });
142
+ setTriggerRaw(triggerJson);
143
+ writeProps({ trigger: triggerJson });
144
+ },
145
+ [writeProps]
146
+ );
147
+ const fetchCollections = useCallback(async () => {
148
+ const deedDid = local.deedDid.trim();
149
+ if (!deedDid) {
150
+ setError(t("actionTypes.shared.errors.didRequired", { defaultValue: "Please enter a {{did}} first", did: "DID" }));
151
+ return;
152
+ }
153
+ const persisted = { ...local, deedDid };
154
+ setLocal(persisted);
155
+ onInputsChange(serializeCollectionUsersActionInputs(persisted));
156
+ setLoadingCollections(true);
157
+ setError(null);
158
+ try {
159
+ const response = await handlers.getClaimCollections(deedDid);
160
+ const fetched = response?.collections || [];
161
+ setCollections(fetched);
162
+ if (fetched.length === 0) {
163
+ setError(
164
+ t("actionTypes.shared.errors.noCollections", { defaultValue: "No {{claimCollections}} found for this {{did}}", claimCollections: "claim collections", did: "DID" })
165
+ );
166
+ }
167
+ } catch (err) {
168
+ setCollections([]);
169
+ setError(
170
+ err instanceof Error ? err.message : t("actionTypes.shared.errors.fetchCollections", { defaultValue: "Failed to fetch {{claimCollections}}", claimCollections: "claim collections" })
171
+ );
172
+ } finally {
173
+ setLoadingCollections(false);
174
+ }
175
+ }, [handlers, local, onInputsChange, t, update]);
176
+ useEffect(() => {
177
+ if (local.deedDid.trim() && local.collectionId && collections.length === 0 && !loadingCollections) {
178
+ void fetchCollections();
179
+ }
180
+ }, [local.deedDid, local.collectionId]);
181
+ const unlistedCollectionId = local.collectionId && collections.length > 0 && !collections.some((c) => c.id === local.collectionId) ? local.collectionId : "";
182
+ const collectionOptions = useMemo(() => {
183
+ const options = collections.map((collection) => ({
184
+ value: collection.id,
185
+ label: formatCollectionOptionLabel(collection)
186
+ }));
187
+ if (unlistedCollectionId) options.unshift({ value: unlistedCollectionId, label: `#${unlistedCollectionId}` });
188
+ return options;
189
+ }, [collections, unlistedCollectionId]);
190
+ return /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(Stack, { gap: 6 }, /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 600 }, "How is the collection chosen?"), /* @__PURE__ */ React.createElement(Group, { gap: "sm", align: "stretch", grow: true }, /* @__PURE__ */ React.createElement(
191
+ ModeCard,
192
+ {
193
+ active: mode === "trigger",
194
+ icon: /* @__PURE__ */ React.createElement(IconBolt, { size: 16, color: "var(--mantine-color-accent-5)" }),
195
+ title: "From a created collection",
196
+ description: "Wait for a Claim Collection block to create a collection, then manage it automatically.",
197
+ onClick: switchToTrigger
198
+ }
199
+ ), /* @__PURE__ */ React.createElement(
200
+ ModeCard,
201
+ {
202
+ active: mode === "manual",
203
+ icon: /* @__PURE__ */ React.createElement(IconPencil, { size: 16 }),
204
+ title: "Enter manually",
205
+ description: "Pick the entity and an existing collection yourself.",
206
+ onClick: switchToManual
207
+ }
208
+ ))), mode === "trigger" ? /* @__PURE__ */ React.createElement(Stack, { gap: "sm" }, /* @__PURE__ */ React.createElement(
209
+ Select,
210
+ {
211
+ label: "Source collection block",
212
+ placeholder: sourceOptions.length === 0 ? "No collection-creating blocks in this flow yet" : "Select a Claim Collection block",
213
+ data: sourceOptions.map((o) => ({ value: o.value, label: o.label })),
214
+ value: triggerSpec?.sourceBlockId || null,
215
+ onChange: (value) => {
216
+ const option = sourceOptions.find((o) => o.value === value);
217
+ if (option) pickSource(option.value, option.eventName);
218
+ },
219
+ disabled: sourceOptions.length === 0,
220
+ searchable: true
221
+ }
222
+ ), selectedSource ? /* @__PURE__ */ React.createElement(Alert, { icon: /* @__PURE__ */ React.createElement(IconClock, { size: 16 }), color: "accent", styles: actionAlertStyles }, /* @__PURE__ */ React.createElement(Text, { size: "xs" }, "Activates when ", /* @__PURE__ */ React.createElement("b", null, selectedSource.label), " creates a collection. The entity and collection are taken from that event \u2014 there's nothing to enter here.")) : /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, "Choose the Claim Collection block whose \u201Ccreated\u201D event should activate this one. Until it fires, this block waits.")) : /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(
223
+ DataInput,
224
+ {
225
+ label: "DID",
226
+ placeholder: t("actionTypes.shared.didPlaceholder", { defaultValue: "Enter deed {{did}}", did: "DID" }),
227
+ description: t("actionTypes.shared.didDescription", {
228
+ defaultValue: "The {{did}} identifier for fetching {{claimCollections}}.",
229
+ did: "DID",
230
+ claimCollections: "claim collections"
231
+ }),
232
+ value: local.deedDid,
233
+ onChange: (value) => update({ deedDid: value }),
234
+ editorDocument: editor?.document || [],
235
+ currentBlockId: blockId,
236
+ required: true
237
+ }
238
+ ), /* @__PURE__ */ React.createElement(
239
+ Button,
240
+ {
241
+ size: "xs",
242
+ variant: "subtle",
243
+ onClick: () => {
244
+ const entityDid = handlers.getEntityDid();
245
+ if (entityDid) update({ deedDid: entityDid });
246
+ }
247
+ },
248
+ t("actionTypes.shared.useCurrentEntity", { defaultValue: "Use Current {{entity}}", entity: "Entity" })
249
+ ), /* @__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", {
250
+ 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.",
251
+ collectionId: unlistedCollectionId,
252
+ did: "DID"
253
+ })), collectionOptions.length > 0 && /* @__PURE__ */ React.createElement(
254
+ BaseSelect,
255
+ {
256
+ label: "Claim Collection",
257
+ placeholder: t("actionTypes.shared.collectionPlaceholder", { defaultValue: "Select a collection" }),
258
+ value: local.collectionId || null,
259
+ onChange: (value) => update({ collectionId: value || "" }),
260
+ data: collectionOptions,
261
+ required: true,
262
+ searchable: true
263
+ }
264
+ )));
265
+ };
266
+ var CollectionUsersConfig_default = CollectionUsersConfig;
267
+ export {
268
+ CollectionUsersConfig,
269
+ CollectionUsersConfig_default as default
270
+ };
271
+ //# sourceMappingURL=CollectionUsersConfig-RI2X3YY2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/collectionUsers/CollectionUsersConfig.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Alert, Button, Group, Loader, Paper, Select, Stack, Text } from '@mantine/core';\nimport { IconBolt, IconClock, IconPencil } from '@tabler/icons-react';\nimport { DataInput } from '@/mantine/components/DataInput';\nimport BaseSelect from '@/mantine/components/Base/BaseSelect';\nimport BasePrimaryButton from '@/mantine/components/Base/BasePrimaryButton';\nimport { getAction, getEventsForBlock } from '@/core/lib/actionRegistry';\nimport type { ActionTypeConfigProps } from '../../actionTypeUI';\nimport { parseCollectionUsersActionInputs, serializeCollectionUsersActionInputs, type CollectionUsersActionInputs } from './types';\nimport { useBlocknoteHandlers, useTranslate, type ClaimCollection } from '@/mantine/context/BlocknoteContext';\nimport { actionAlertStyles } from '../../alertStyles';\nimport { formatCollectionOptionLabel } from '../../collectionLabel';\n\n/**\n * Template-mode configuration for the `qi/collection.users` block (IXO-2588).\n *\n * The collection this block manages can be chosen in one of two **mutually\n * exclusive** ways (IXO-2596). The mode selector below owns both so they can\n * never both be populated (the human-error trap):\n *\n * - **From a created collection (trigger)** — wire an upstream Claim Collection\n * block as the source. At run time the entity + collection arrive in that\n * block's `created` event payload; the manual fields are cleared. Persisted\n * to `block.props.trigger` as a `block.event` TriggerSpec.\n * - **Enter manually** — pick the entity (deed) DID and an existing collection.\n * Clears any wired trigger. Persisted to `block.props.inputs` as\n * `{ deedDid, collectionId }`.\n *\n * Because a mode switch touches BOTH `props.trigger` and `props.inputs`, those\n * writes are committed in a single `editor.updateBlock` call — two separate\n * calls would each spread a stale `block.props` and clobber one another.\n */\n\ntype SourceOption = { value: string; label: string; eventName: string };\n\nconst ModeCard: React.FC<{\n active: boolean;\n icon: React.ReactNode;\n title: string;\n description: string;\n onClick: () => void;\n}> = ({ active, icon, title, description, onClick }) => (\n <Paper\n withBorder\n p=\"sm\"\n onClick={onClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick();\n }\n }}\n style={{\n flex: 1,\n cursor: 'pointer',\n borderColor: active ? 'var(--mantine-color-accent-5)' : 'var(--mantine-color-neutralColor-6)',\n borderWidth: active ? 2 : 1,\n background: active ? 'color-mix(in srgb, var(--mantine-color-accent-5) 8%, transparent)' : undefined,\n transition: 'border-color 120ms ease, background 120ms ease',\n }}\n >\n <Stack gap={4}>\n <Group gap={6} align=\"center\" wrap=\"nowrap\">\n {icon}\n <Text size=\"sm\" fw={600}>\n {title}\n </Text>\n </Group>\n <Text size=\"xs\" c=\"dimmed\">\n {description}\n </Text>\n </Stack>\n </Paper>\n);\n\nexport const CollectionUsersConfig: React.FC<ActionTypeConfigProps> = ({ inputs, onInputsChange, editor, blockId }) => {\n const t = useTranslate();\n const handlers = useBlocknoteHandlers();\n const [local, setLocal] = useState<CollectionUsersActionInputs>(() => parseCollectionUsersActionInputs(inputs));\n const [collections, setCollections] = useState<ClaimCollection[]>([]);\n const [loadingCollections, setLoadingCollections] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // ── Trigger (event-source) state ──────────────────────────────────────────\n // The trigger lives on `block.props.trigger`, edited here as the \"From a\n // created collection\" mode. We keep a local mirror for immediate feedback and\n // write through to the block; the mirror re-syncs whenever the inputs prop\n // changes (which a mode switch always triggers) so external edits (e.g. the\n // General tab) are reflected.\n const readTriggerRaw = useCallback((): string => {\n const b = (editor?.document || []).find((x: { id?: string }) => x?.id === blockId) as { props?: { trigger?: unknown } } | undefined;\n return typeof b?.props?.trigger === 'string' ? b.props.trigger : '';\n }, [editor, blockId]);\n\n const [triggerRaw, setTriggerRaw] = useState<string>(() => readTriggerRaw());\n\n useEffect(() => {\n setLocal(parseCollectionUsersActionInputs(inputs));\n setTriggerRaw(readTriggerRaw());\n }, [inputs, readTriggerRaw]);\n\n const triggerSpec = useMemo<{ type?: string; sourceBlockId?: string; eventName?: string } | null>(() => {\n if (!triggerRaw) return null;\n try {\n return JSON.parse(triggerRaw);\n } catch {\n return null;\n }\n }, [triggerRaw]);\n\n const mode: 'trigger' | 'manual' = triggerSpec?.type === 'block.event' ? 'trigger' : 'manual';\n\n // Commit trigger and/or inputs to the block in ONE update so they stay atomic.\n const writeProps = useCallback(\n (patch: { trigger?: string; inputs?: string }) => {\n const b = (editor?.document || []).find((x: { id?: string }) => x?.id === blockId);\n if (!b) return;\n editor.updateBlock(b, { props: { ...(b as { props?: Record<string, unknown> }).props, ...patch } });\n },\n [editor, blockId]\n );\n\n const update = useCallback(\n (patch: Partial<CollectionUsersActionInputs>) => {\n const updated = { ...local, ...patch };\n setLocal(updated);\n onInputsChange(serializeCollectionUsersActionInputs(updated));\n },\n [local, onInputsChange]\n );\n\n // ── Source-block options: any upstream block whose event payload carries a\n // `collectionId` (i.e. a collection-producing block such as a create-mode\n // Claim Collection block). Computed from the live document.\n const sourceOptions = useMemo<SourceOption[]>(() => {\n const blocks = (editor?.document || []) as Array<{ id?: string; props?: { actionType?: string; inputs?: unknown; title?: string } }>;\n return blocks\n .filter((b) => b?.id && b.id !== blockId)\n .map((b) => {\n const action = getAction(b.props?.actionType || '');\n const events = getEventsForBlock(action, b.props?.inputs);\n const collectionEvent = events.find((e) => e.payloadSchema?.some((f) => f.path === 'collectionId'));\n if (!collectionEvent) return null;\n return { value: b.id as string, label: String(b.props?.title || action?.type || b.id), eventName: collectionEvent.name };\n })\n .filter((o): o is SourceOption => o !== null);\n }, [editor, blockId, triggerRaw, inputs]);\n\n const selectedSource = useMemo(() => sourceOptions.find((o) => o.value === triggerSpec?.sourceBlockId), [sourceOptions, triggerSpec]);\n\n const switchToTrigger = useCallback(() => {\n if (mode === 'trigger') return;\n const cleared = { deedDid: '', collectionId: '' };\n setLocal(cleared);\n setCollections([]);\n setError(null);\n const triggerJson = JSON.stringify({ type: 'block.event', sourceBlockId: '', eventName: '' });\n setTriggerRaw(triggerJson);\n writeProps({ trigger: triggerJson, inputs: serializeCollectionUsersActionInputs(cleared) });\n }, [mode, writeProps]);\n\n const switchToManual = useCallback(() => {\n if (mode === 'manual') return;\n setTriggerRaw('');\n writeProps({ trigger: '' });\n }, [mode, writeProps]);\n\n const pickSource = useCallback(\n (sourceBlockId: string, eventName: string) => {\n const triggerJson = JSON.stringify({ type: 'block.event', sourceBlockId, eventName });\n setTriggerRaw(triggerJson);\n writeProps({ trigger: triggerJson });\n },\n [writeProps]\n );\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(serializeCollectionUsersActionInputs(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, t, update]);\n\n // On open in manual mode, auto-load the collection list when one is already\n // chosen so the saved selection is visible. The id persists in inputs but the\n // options are fetched (not stored) — without this the dropdown stays hidden on\n // reopen and the step looks unconfigured. (Trigger mode has no collectionId.)\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 return (\n <Stack gap=\"md\">\n <Stack gap={6}>\n <Text size=\"sm\" fw={600}>\n How is the collection chosen?\n </Text>\n <Group gap=\"sm\" align=\"stretch\" grow>\n <ModeCard\n active={mode === 'trigger'}\n icon={<IconBolt size={16} color=\"var(--mantine-color-accent-5)\" />}\n title=\"From a created collection\"\n description=\"Wait for a Claim Collection block to create a collection, then manage it automatically.\"\n onClick={switchToTrigger}\n />\n <ModeCard\n active={mode === 'manual'}\n icon={<IconPencil size={16} />}\n title=\"Enter manually\"\n description=\"Pick the entity and an existing collection yourself.\"\n onClick={switchToManual}\n />\n </Group>\n </Stack>\n\n {mode === 'trigger' ? (\n <Stack gap=\"sm\">\n <Select\n label=\"Source collection block\"\n placeholder={sourceOptions.length === 0 ? 'No collection-creating blocks in this flow yet' : 'Select a Claim Collection block'}\n data={sourceOptions.map((o) => ({ value: o.value, label: o.label }))}\n value={triggerSpec?.sourceBlockId || null}\n onChange={(value) => {\n const option = sourceOptions.find((o) => o.value === value);\n if (option) pickSource(option.value, option.eventName);\n }}\n disabled={sourceOptions.length === 0}\n searchable\n />\n\n {selectedSource ? (\n <Alert icon={<IconClock size={16} />} color=\"accent\" styles={actionAlertStyles}>\n <Text size=\"xs\">\n Activates when <b>{selectedSource.label}</b> creates a collection. The entity and collection are taken from that event — there&apos;s nothing to enter here.\n </Text>\n </Alert>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n Choose the Claim Collection block whose &ldquo;created&rdquo; event should activate this one. Until it fires, this block waits.\n </Text>\n )}\n </Stack>\n ) : (\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:\n '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) => update({ collectionId: value || '' })}\n data={collectionOptions}\n required\n searchable\n />\n )}\n </Stack>\n )}\n </Stack>\n );\n};\n\nexport default CollectionUsersConfig;\n"],"mappings":"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","names":[]}