@ixo/editor 6.33.0 → 6.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/dist/BidConfig-YLGSEIOS.js +154 -0
  2. package/dist/BidConfig-YLGSEIOS.js.map +1 -0
  3. package/dist/BidFlowDetail-TJCJBJZZ.js +365 -0
  4. package/dist/BidFlowDetail-TJCJBJZZ.js.map +1 -0
  5. package/dist/CalendarEventCreateConfig-J2LU6LJO.js +155 -0
  6. package/dist/CalendarEventCreateConfig-J2LU6LJO.js.map +1 -0
  7. package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js +174 -0
  8. package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js.map +1 -0
  9. package/dist/CalendarEventListConfig-GQNNF4ZB.js +116 -0
  10. package/dist/CalendarEventListConfig-GQNNF4ZB.js.map +1 -0
  11. package/dist/CalendarEventListFlowDetail-SSRTOXIX.js +58 -0
  12. package/dist/CalendarEventListFlowDetail-SSRTOXIX.js.map +1 -0
  13. package/dist/CalendarEventUpdateConfig-KACZA6GH.js +133 -0
  14. package/dist/CalendarEventUpdateConfig-KACZA6GH.js.map +1 -0
  15. package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js +155 -0
  16. package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js.map +1 -0
  17. package/dist/ClaimConfig-3HKPGK55.js +200 -0
  18. package/dist/ClaimConfig-3HKPGK55.js.map +1 -0
  19. package/dist/ClaimFlowDetail-UVEQMEI5.js +641 -0
  20. package/dist/ClaimFlowDetail-UVEQMEI5.js.map +1 -0
  21. package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js +149 -0
  22. package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js.map +1 -0
  23. package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js +647 -0
  24. package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js.map +1 -0
  25. package/dist/CollectionUsersConfig-RI2X3YY2.js +271 -0
  26. package/dist/CollectionUsersConfig-RI2X3YY2.js.map +1 -0
  27. package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js +1276 -0
  28. package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js.map +1 -0
  29. package/dist/CredentialStoreConfig-G66AQDGZ.js +75 -0
  30. package/dist/CredentialStoreConfig-G66AQDGZ.js.map +1 -0
  31. package/dist/CredentialStoreFlowDetail-FL7QAM3S.js +99 -0
  32. package/dist/CredentialStoreFlowDetail-FL7QAM3S.js.map +1 -0
  33. package/dist/DesignPodConfig-LJ7H2CZ6.js +8 -0
  34. package/dist/DesignPodConfig-LJ7H2CZ6.js.map +1 -0
  35. package/dist/DesignPodFlowDetail-JHJWGNVY.js +309 -0
  36. package/dist/DesignPodFlowDetail-JHJWGNVY.js.map +1 -0
  37. package/dist/DomainCardPreviewConfig-Q3X5M4WF.js +37 -0
  38. package/dist/DomainCardPreviewConfig-Q3X5M4WF.js.map +1 -0
  39. package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js +131 -0
  40. package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js.map +1 -0
  41. package/dist/DomainIndexerLookupConfig-N4VONQUY.js +41 -0
  42. package/dist/DomainIndexerLookupConfig-N4VONQUY.js.map +1 -0
  43. package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js +70 -0
  44. package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js.map +1 -0
  45. package/dist/DomainSignConfig-XFIXROVK.js +47 -0
  46. package/dist/DomainSignConfig-XFIXROVK.js.map +1 -0
  47. package/dist/DomainSignFlowDetail-BXZ6JBPR.js +206 -0
  48. package/dist/DomainSignFlowDetail-BXZ6JBPR.js.map +1 -0
  49. package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js +101 -0
  50. package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js.map +1 -0
  51. package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js +147 -0
  52. package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js.map +1 -0
  53. package/dist/EmailSendConfig-YEGZ5Q77.js +215 -0
  54. package/dist/EmailSendConfig-YEGZ5Q77.js.map +1 -0
  55. package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js +150 -0
  56. package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js.map +1 -0
  57. package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js +120 -0
  58. package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js.map +1 -0
  59. package/dist/EntitySingleSelectionConfig-DL57KNKM.js +30 -0
  60. package/dist/EntitySingleSelectionConfig-DL57KNKM.js.map +1 -0
  61. package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js +118 -0
  62. package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js.map +1 -0
  63. package/dist/EntityTransferConfig-JVZ3H35B.js +62 -0
  64. package/dist/EntityTransferConfig-JVZ3H35B.js.map +1 -0
  65. package/dist/EntityTransferFlowDetail-XEXM34XB.js +132 -0
  66. package/dist/EntityTransferFlowDetail-XEXM34XB.js.map +1 -0
  67. package/dist/EvalEngineConfig-CHC4IRN3.js +464 -0
  68. package/dist/EvalEngineConfig-CHC4IRN3.js.map +1 -0
  69. package/dist/EvalEngineFlowDetail-PUFRNO4U.js +4291 -0
  70. package/dist/EvalEngineFlowDetail-PUFRNO4U.js.map +1 -0
  71. package/dist/EvaluateBidConfig-OE4CM43G.js +151 -0
  72. package/dist/EvaluateBidConfig-OE4CM43G.js.map +1 -0
  73. package/dist/EvaluateBidFlowDetail-2S2N4YTW.js +564 -0
  74. package/dist/EvaluateBidFlowDetail-2S2N4YTW.js.map +1 -0
  75. package/dist/EvaluateClaimConfig-3D4F5LHU.js +297 -0
  76. package/dist/EvaluateClaimConfig-3D4F5LHU.js.map +1 -0
  77. package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js +2237 -0
  78. package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js.map +1 -0
  79. package/dist/FormSubmitConfig-UFZYMLUN.js +59 -0
  80. package/dist/FormSubmitConfig-UFZYMLUN.js.map +1 -0
  81. package/dist/FormSubmitFlowDetail-IAHDJS6P.js +169 -0
  82. package/dist/FormSubmitFlowDetail-IAHDJS6P.js.map +1 -0
  83. package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js +166 -0
  84. package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js.map +1 -0
  85. package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js +88 -0
  86. package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js.map +1 -0
  87. package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js +88 -0
  88. package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js.map +1 -0
  89. package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js +83 -0
  90. package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js.map +1 -0
  91. package/dist/GovernanceConfigConfig-V3WM4WBP.js +30 -0
  92. package/dist/GovernanceConfigConfig-V3WM4WBP.js.map +1 -0
  93. package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js +267 -0
  94. package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js.map +1 -0
  95. package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js +113 -0
  96. package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js.map +1 -0
  97. package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js +144 -0
  98. package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js.map +1 -0
  99. package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js +72 -0
  100. package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js.map +1 -0
  101. package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js +104 -0
  102. package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js.map +1 -0
  103. package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js +68 -0
  104. package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js.map +1 -0
  105. package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js +78 -0
  106. package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js.map +1 -0
  107. package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js +98 -0
  108. package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js.map +1 -0
  109. package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js +94 -0
  110. package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js.map +1 -0
  111. package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js +96 -0
  112. package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js.map +1 -0
  113. package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js +68 -0
  114. package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js.map +1 -0
  115. package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js +93 -0
  116. package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js.map +1 -0
  117. package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js +84 -0
  118. package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js.map +1 -0
  119. package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js +104 -0
  120. package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js.map +1 -0
  121. package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js +42 -0
  122. package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js.map +1 -0
  123. package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js +240 -0
  124. package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js.map +1 -0
  125. package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js +69 -0
  126. package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js.map +1 -0
  127. package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js +71 -0
  128. package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js.map +1 -0
  129. package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js +130 -0
  130. package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js.map +1 -0
  131. package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js +42 -0
  132. package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js.map +1 -0
  133. package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js +165 -0
  134. package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js.map +1 -0
  135. package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js +123 -0
  136. package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js.map +1 -0
  137. package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js +84 -0
  138. package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js.map +1 -0
  139. package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js +111 -0
  140. package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js.map +1 -0
  141. package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js +66 -0
  142. package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js.map +1 -0
  143. package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js +133 -0
  144. package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js.map +1 -0
  145. package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js +42 -0
  146. package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js.map +1 -0
  147. package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js +182 -0
  148. package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js.map +1 -0
  149. package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js +155 -0
  150. package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js.map +1 -0
  151. package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js +56 -0
  152. package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js.map +1 -0
  153. package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js +117 -0
  154. package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js.map +1 -0
  155. package/dist/HarvestConfig-AIGOGBFR.js +56 -0
  156. package/dist/HarvestConfig-AIGOGBFR.js.map +1 -0
  157. package/dist/HarvestFlowDetail-X3RUH3X3.js +131 -0
  158. package/dist/HarvestFlowDetail-X3RUH3X3.js.map +1 -0
  159. package/dist/HttpRequestConfig-OQEJIIJY.js +194 -0
  160. package/dist/HttpRequestConfig-OQEJIIJY.js.map +1 -0
  161. package/dist/HttpRequestFlowDetail-JVLV533Z.js +116 -0
  162. package/dist/HttpRequestFlowDetail-JVLV533Z.js.map +1 -0
  163. package/dist/IdentityCreateConfig-ZBUOJ6AL.js +94 -0
  164. package/dist/IdentityCreateConfig-ZBUOJ6AL.js.map +1 -0
  165. package/dist/IdentityCreateFlowDetail-WGKO43IH.js +83 -0
  166. package/dist/IdentityCreateFlowDetail-WGKO43IH.js.map +1 -0
  167. package/dist/IidCreateConfig-RRV2DYXI.js +75 -0
  168. package/dist/IidCreateConfig-RRV2DYXI.js.map +1 -0
  169. package/dist/IidCreateFlowDetail-6M32S6XS.js +57 -0
  170. package/dist/IidCreateFlowDetail-6M32S6XS.js.map +1 -0
  171. package/dist/KycVerifyConfig-VCG65K5K.js +65 -0
  172. package/dist/KycVerifyConfig-VCG65K5K.js.map +1 -0
  173. package/dist/KycVerifyFlowDetail-EWOMXSD3.js +421 -0
  174. package/dist/KycVerifyFlowDetail-EWOMXSD3.js.map +1 -0
  175. package/dist/ListDomainFlowsConfig-3JZEPTOJ.js +37 -0
  176. package/dist/ListDomainFlowsConfig-3JZEPTOJ.js.map +1 -0
  177. package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js +257 -0
  178. package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js.map +1 -0
  179. package/dist/LoadBatchesConfig-IMODIWRT.js +38 -0
  180. package/dist/LoadBatchesConfig-IMODIWRT.js.map +1 -0
  181. package/dist/LoadBatchesFlowDetail-GB24T76O.js +101 -0
  182. package/dist/LoadBatchesFlowDetail-GB24T76O.js.map +1 -0
  183. package/dist/MatrixDmConfig-NBII27CS.js +120 -0
  184. package/dist/MatrixDmConfig-NBII27CS.js.map +1 -0
  185. package/dist/MatrixRegisterConfig-N2U4FBYF.js +62 -0
  186. package/dist/MatrixRegisterConfig-N2U4FBYF.js.map +1 -0
  187. package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js +86 -0
  188. package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js.map +1 -0
  189. package/dist/MemberMultiSelectConfig-E7WUB2WD.js +30 -0
  190. package/dist/MemberMultiSelectConfig-E7WUB2WD.js.map +1 -0
  191. package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js +392 -0
  192. package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js.map +1 -0
  193. package/dist/OracleConfig-R7TDTTKN.js +56 -0
  194. package/dist/OracleConfig-R7TDTTKN.js.map +1 -0
  195. package/dist/OracleConfigureOracleConfig-QFF74X3N.js +198 -0
  196. package/dist/OracleConfigureOracleConfig-QFF74X3N.js.map +1 -0
  197. package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js +255 -0
  198. package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js.map +1 -0
  199. package/dist/OracleContractConfig-PHY5L7W2.js +38 -0
  200. package/dist/OracleContractConfig-PHY5L7W2.js.map +1 -0
  201. package/dist/OracleContractFlowDetail-M3PM4AU4.js +78 -0
  202. package/dist/OracleContractFlowDetail-M3PM4AU4.js.map +1 -0
  203. package/dist/OracleDeployConfig-QBG76ATZ.js +10 -0
  204. package/dist/OracleDeployConfig-QBG76ATZ.js.map +1 -0
  205. package/dist/OracleDeployFlowDetail-WKTMD2AD.js +231 -0
  206. package/dist/OracleDeployFlowDetail-WKTMD2AD.js.map +1 -0
  207. package/dist/OracleDeploySetupConfig-75XPGFJQ.js +10 -0
  208. package/dist/OracleDeploySetupConfig-75XPGFJQ.js.map +1 -0
  209. package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js +165 -0
  210. package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js.map +1 -0
  211. package/dist/OracleDeployStartConfig-NA6GZ4VQ.js +10 -0
  212. package/dist/OracleDeployStartConfig-NA6GZ4VQ.js.map +1 -0
  213. package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js +89 -0
  214. package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js.map +1 -0
  215. package/dist/OracleFlowDetail-5JCJK3GH.js +76 -0
  216. package/dist/OracleFlowDetail-5JCJK3GH.js.map +1 -0
  217. package/dist/OraclePromptConfig-YBRESISH.js +39 -0
  218. package/dist/OraclePromptConfig-YBRESISH.js.map +1 -0
  219. package/dist/OraclePromptFlowDetail-O3XNK7HY.js +112 -0
  220. package/dist/OraclePromptFlowDetail-O3XNK7HY.js.map +1 -0
  221. package/dist/OracleStoreConfigConfig-TUZWTJMA.js +134 -0
  222. package/dist/OracleStoreConfigConfig-TUZWTJMA.js.map +1 -0
  223. package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js +99 -0
  224. package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js.map +1 -0
  225. package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js +198 -0
  226. package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js.map +1 -0
  227. package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js +220 -0
  228. package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js.map +1 -0
  229. package/dist/OracleStoreSecretsConfig-PQMF7LFT.js +191 -0
  230. package/dist/OracleStoreSecretsConfig-PQMF7LFT.js.map +1 -0
  231. package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js +197 -0
  232. package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js.map +1 -0
  233. package/dist/ProposalCreateConfig-U5IHZNT7.js +161 -0
  234. package/dist/ProposalCreateConfig-U5IHZNT7.js.map +1 -0
  235. package/dist/ProposalCreateFlowDetail-4VZZPAWH.js +235 -0
  236. package/dist/ProposalCreateFlowDetail-4VZZPAWH.js.map +1 -0
  237. package/dist/ProposalVoteConfig-MH4MU7SL.js +150 -0
  238. package/dist/ProposalVoteConfig-MH4MU7SL.js.map +1 -0
  239. package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js +280 -0
  240. package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js.map +1 -0
  241. package/dist/ProtocolSelectConfig-S5U3P6K7.js +48 -0
  242. package/dist/ProtocolSelectConfig-S5U3P6K7.js.map +1 -0
  243. package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js +116 -0
  244. package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js.map +1 -0
  245. package/dist/RetireConfig-MV37WWZ6.js +59 -0
  246. package/dist/RetireConfig-MV37WWZ6.js.map +1 -0
  247. package/dist/RetireFlowDetail-VZ5O4SXI.js +147 -0
  248. package/dist/RetireFlowDetail-VZ5O4SXI.js.map +1 -0
  249. package/dist/SandboxProvisionConfig-ZGG4IRHM.js +46 -0
  250. package/dist/SandboxProvisionConfig-ZGG4IRHM.js.map +1 -0
  251. package/dist/SandboxProvisionFlowDetail-RUY64INV.js +79 -0
  252. package/dist/SandboxProvisionFlowDetail-RUY64INV.js.map +1 -0
  253. package/dist/WalletFundConfig-CMM3EP3B.js +117 -0
  254. package/dist/WalletFundConfig-CMM3EP3B.js.map +1 -0
  255. package/dist/WalletFundFlowDetail-TXWCZA4K.js +279 -0
  256. package/dist/WalletFundFlowDetail-TXWCZA4K.js.map +1 -0
  257. package/dist/WalletGenerateAndFundConfig-364RSEND.js +10 -0
  258. package/dist/WalletGenerateAndFundConfig-364RSEND.js.map +1 -0
  259. package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js +54 -0
  260. package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js.map +1 -0
  261. package/dist/WalletGenerateConfig-YYLCS65G.js +10 -0
  262. package/dist/WalletGenerateConfig-YYLCS65G.js.map +1 -0
  263. package/dist/WalletGenerateFlowDetail-CQCNDGJA.js +53 -0
  264. package/dist/WalletGenerateFlowDetail-CQCNDGJA.js.map +1 -0
  265. package/dist/XeroContactCreateConfig-OWG5PA3B.js +102 -0
  266. package/dist/XeroContactCreateConfig-OWG5PA3B.js.map +1 -0
  267. package/dist/XeroContactCreateFlowDetail-6MAINCF6.js +127 -0
  268. package/dist/XeroContactCreateFlowDetail-6MAINCF6.js.map +1 -0
  269. package/dist/XeroInvoiceCreateConfig-O74RUSZM.js +403 -0
  270. package/dist/XeroInvoiceCreateConfig-O74RUSZM.js.map +1 -0
  271. package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js +631 -0
  272. package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js.map +1 -0
  273. package/dist/XeroInvoiceListConfig-UR3GONBJ.js +113 -0
  274. package/dist/XeroInvoiceListConfig-UR3GONBJ.js.map +1 -0
  275. package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js +58 -0
  276. package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js.map +1 -0
  277. package/dist/XeroPaymentCreateConfig-RPMAIK6E.js +116 -0
  278. package/dist/XeroPaymentCreateConfig-RPMAIK6E.js.map +1 -0
  279. package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js +573 -0
  280. package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js.map +1 -0
  281. package/dist/action-manifest.json +2091 -393
  282. package/dist/chunk-2GAYKKTL.js +9 -0
  283. package/dist/chunk-2GAYKKTL.js.map +1 -0
  284. package/dist/chunk-2WPEATI7.js +315 -0
  285. package/dist/chunk-2WPEATI7.js.map +1 -0
  286. package/dist/chunk-3O42FYT3.js +3333 -0
  287. package/dist/chunk-3O42FYT3.js.map +1 -0
  288. package/dist/chunk-3TUYY4HK.js +20 -0
  289. package/dist/chunk-3TUYY4HK.js.map +1 -0
  290. package/dist/chunk-3XSLBJYI.js +554 -0
  291. package/dist/chunk-3XSLBJYI.js.map +1 -0
  292. package/dist/chunk-4DGCCXD6.js +710 -0
  293. package/dist/chunk-4DGCCXD6.js.map +1 -0
  294. package/dist/chunk-4NAFQF6V.js +11 -0
  295. package/dist/chunk-4NAFQF6V.js.map +1 -0
  296. package/dist/chunk-4PONO4US.js +799 -0
  297. package/dist/chunk-4PONO4US.js.map +1 -0
  298. package/dist/chunk-4TMOIK5M.js +21 -0
  299. package/dist/chunk-4TMOIK5M.js.map +1 -0
  300. package/dist/chunk-5IH3VC5I.js +102 -0
  301. package/dist/chunk-5IH3VC5I.js.map +1 -0
  302. package/dist/chunk-5NTKDOP6.js +89 -0
  303. package/dist/chunk-5NTKDOP6.js.map +1 -0
  304. package/dist/chunk-5O2SFRGU.js +18 -0
  305. package/dist/chunk-5O2SFRGU.js.map +1 -0
  306. package/dist/chunk-632JLECF.js +55 -0
  307. package/dist/chunk-632JLECF.js.map +1 -0
  308. package/dist/chunk-676HDB7K.js +95 -0
  309. package/dist/chunk-676HDB7K.js.map +1 -0
  310. package/dist/chunk-6ESTNTSH.js +223 -0
  311. package/dist/chunk-6ESTNTSH.js.map +1 -0
  312. package/dist/chunk-6GKJR52N.js +15 -0
  313. package/dist/chunk-6GKJR52N.js.map +1 -0
  314. package/dist/chunk-6L4ZIKYU.js +23 -0
  315. package/dist/chunk-6L4ZIKYU.js.map +1 -0
  316. package/dist/chunk-76YX5R4L.js +11 -0
  317. package/dist/chunk-76YX5R4L.js.map +1 -0
  318. package/dist/chunk-7J3GFMN3.js +32 -0
  319. package/dist/chunk-7J3GFMN3.js.map +1 -0
  320. package/dist/chunk-7LSARC2G.js +102 -0
  321. package/dist/chunk-7LSARC2G.js.map +1 -0
  322. package/dist/chunk-7W7UUUIE.js +609 -0
  323. package/dist/chunk-7W7UUUIE.js.map +1 -0
  324. package/dist/chunk-7ZLW7H37.js +21 -0
  325. package/dist/chunk-7ZLW7H37.js.map +1 -0
  326. package/dist/chunk-AAZHI22G.js +18 -0
  327. package/dist/chunk-AAZHI22G.js.map +1 -0
  328. package/dist/chunk-ACNE455I.js +76 -0
  329. package/dist/chunk-ACNE455I.js.map +1 -0
  330. package/dist/chunk-BKLSSLPZ.js +27 -0
  331. package/dist/chunk-BKLSSLPZ.js.map +1 -0
  332. package/dist/chunk-BZ7UPUTY.js +417 -0
  333. package/dist/chunk-BZ7UPUTY.js.map +1 -0
  334. package/dist/chunk-CGFAICUE.js +28 -0
  335. package/dist/chunk-CGFAICUE.js.map +1 -0
  336. package/dist/chunk-CMCEWQ3C.js +19 -0
  337. package/dist/chunk-CMCEWQ3C.js.map +1 -0
  338. package/dist/chunk-CP4UV436.js +41 -0
  339. package/dist/chunk-CP4UV436.js.map +1 -0
  340. package/dist/chunk-D2CQPNQG.js +27508 -0
  341. package/dist/chunk-D2CQPNQG.js.map +1 -0
  342. package/dist/chunk-DIQRZP7Z.js +51 -0
  343. package/dist/chunk-DIQRZP7Z.js.map +1 -0
  344. package/dist/chunk-EBFFDDAS.js +13 -0
  345. package/dist/chunk-EBFFDDAS.js.map +1 -0
  346. package/dist/chunk-EGVS23DR.js +85 -0
  347. package/dist/chunk-EGVS23DR.js.map +1 -0
  348. package/dist/chunk-EKBQ7K4N.js +15 -0
  349. package/dist/chunk-EKBQ7K4N.js.map +1 -0
  350. package/dist/chunk-EKQCZRAN.js +24 -0
  351. package/dist/chunk-EKQCZRAN.js.map +1 -0
  352. package/dist/chunk-EYKZIZ5J.js +48 -0
  353. package/dist/chunk-EYKZIZ5J.js.map +1 -0
  354. package/dist/{chunk-NEOPTPDF.js → chunk-F4PTFXZH.js} +11554 -22046
  355. package/dist/chunk-F4PTFXZH.js.map +1 -0
  356. package/dist/chunk-FFYZXA75.js +58 -0
  357. package/dist/chunk-FFYZXA75.js.map +1 -0
  358. package/dist/chunk-GFGDHPZ2.js +22 -0
  359. package/dist/chunk-GFGDHPZ2.js.map +1 -0
  360. package/dist/chunk-GR3CDFID.js +18 -0
  361. package/dist/chunk-GR3CDFID.js.map +1 -0
  362. package/dist/chunk-GR4SIU32.js +104 -0
  363. package/dist/chunk-GR4SIU32.js.map +1 -0
  364. package/dist/chunk-H5E46IIS.js +18 -0
  365. package/dist/chunk-H5E46IIS.js.map +1 -0
  366. package/dist/chunk-HFHVAMZL.js +22 -0
  367. package/dist/chunk-HFHVAMZL.js.map +1 -0
  368. package/dist/chunk-HRRI4BLF.js +4456 -0
  369. package/dist/chunk-HRRI4BLF.js.map +1 -0
  370. package/dist/chunk-HT6L7A5M.js +12 -0
  371. package/dist/chunk-HT6L7A5M.js.map +1 -0
  372. package/dist/chunk-I2FPFISM.js +301 -0
  373. package/dist/chunk-I2FPFISM.js.map +1 -0
  374. package/dist/chunk-IADAQJDH.js +28 -0
  375. package/dist/chunk-IADAQJDH.js.map +1 -0
  376. package/dist/chunk-IBOBCMQQ.js +99 -0
  377. package/dist/chunk-IBOBCMQQ.js.map +1 -0
  378. package/dist/chunk-IFWKRCFF.js +56 -0
  379. package/dist/chunk-IFWKRCFF.js.map +1 -0
  380. package/dist/chunk-IH4T7V4C.js +40 -0
  381. package/dist/chunk-IH4T7V4C.js.map +1 -0
  382. package/dist/chunk-IIIZZ4E4.js +1679 -0
  383. package/dist/chunk-IIIZZ4E4.js.map +1 -0
  384. package/dist/chunk-ILSFU3WD.js +83 -0
  385. package/dist/chunk-ILSFU3WD.js.map +1 -0
  386. package/dist/chunk-IX3VBV3L.js +43 -0
  387. package/dist/chunk-IX3VBV3L.js.map +1 -0
  388. package/dist/chunk-JBBFSORW.js +846 -0
  389. package/dist/chunk-JBBFSORW.js.map +1 -0
  390. package/dist/chunk-JIDTNKKL.js +1183 -0
  391. package/dist/chunk-JIDTNKKL.js.map +1 -0
  392. package/dist/chunk-JSPE6NGZ.js +22 -0
  393. package/dist/chunk-JSPE6NGZ.js.map +1 -0
  394. package/dist/chunk-JVROGQ7Q.js +150 -0
  395. package/dist/chunk-JVROGQ7Q.js.map +1 -0
  396. package/dist/chunk-K4WUMWNJ.js +32 -0
  397. package/dist/chunk-K4WUMWNJ.js.map +1 -0
  398. package/dist/chunk-K74XQ4Q5.js +11 -0
  399. package/dist/chunk-K74XQ4Q5.js.map +1 -0
  400. package/dist/chunk-KLLMJ4U3.js +22 -0
  401. package/dist/chunk-KLLMJ4U3.js.map +1 -0
  402. package/dist/chunk-LTKVCJ2E.js +27 -0
  403. package/dist/chunk-LTKVCJ2E.js.map +1 -0
  404. package/dist/chunk-M36DJTFZ.js +34 -0
  405. package/dist/chunk-M36DJTFZ.js.map +1 -0
  406. package/dist/chunk-MHM52LCJ.js +154 -0
  407. package/dist/chunk-MHM52LCJ.js.map +1 -0
  408. package/dist/chunk-MQCDMHRZ.js +59 -0
  409. package/dist/chunk-MQCDMHRZ.js.map +1 -0
  410. package/dist/chunk-N3ORMGAI.js +348 -0
  411. package/dist/chunk-N3ORMGAI.js.map +1 -0
  412. package/dist/chunk-NCSGIRRQ.js +28 -0
  413. package/dist/chunk-NCSGIRRQ.js.map +1 -0
  414. package/dist/chunk-NIXT2SBH.js +1423 -0
  415. package/dist/chunk-NIXT2SBH.js.map +1 -0
  416. package/dist/chunk-NJAII6CO.js +148 -0
  417. package/dist/chunk-NJAII6CO.js.map +1 -0
  418. package/dist/chunk-NKE4TL43.js +92 -0
  419. package/dist/chunk-NKE4TL43.js.map +1 -0
  420. package/dist/chunk-NZ7AXA7B.js +1 -0
  421. package/dist/chunk-NZ7AXA7B.js.map +1 -0
  422. package/dist/chunk-OCAYEGI2.js +26 -0
  423. package/dist/chunk-OCAYEGI2.js.map +1 -0
  424. package/dist/chunk-OMLI45ER.js +90 -0
  425. package/dist/chunk-OMLI45ER.js.map +1 -0
  426. package/dist/chunk-P7OBLJAG.js +88 -0
  427. package/dist/chunk-P7OBLJAG.js.map +1 -0
  428. package/dist/chunk-PAY3CBWL.js +2321 -0
  429. package/dist/chunk-PAY3CBWL.js.map +1 -0
  430. package/dist/chunk-PFF6VY35.js +257 -0
  431. package/dist/chunk-PFF6VY35.js.map +1 -0
  432. package/dist/chunk-PYNDJDWZ.js +1758 -0
  433. package/dist/chunk-PYNDJDWZ.js.map +1 -0
  434. package/dist/chunk-QDQ6UMMN.js +53 -0
  435. package/dist/chunk-QDQ6UMMN.js.map +1 -0
  436. package/dist/chunk-QGT3G2XG.js +24 -0
  437. package/dist/chunk-QGT3G2XG.js.map +1 -0
  438. package/dist/chunk-QZYCJ2GZ.js +55 -0
  439. package/dist/chunk-QZYCJ2GZ.js.map +1 -0
  440. package/dist/chunk-REZ7RFSA.js +124 -0
  441. package/dist/chunk-REZ7RFSA.js.map +1 -0
  442. package/dist/chunk-RRYBAE6E.js +2449 -0
  443. package/dist/chunk-RRYBAE6E.js.map +1 -0
  444. package/dist/chunk-RWUZOB62.js +34 -0
  445. package/dist/chunk-RWUZOB62.js.map +1 -0
  446. package/dist/chunk-SB5UCPZH.js +116 -0
  447. package/dist/chunk-SB5UCPZH.js.map +1 -0
  448. package/dist/chunk-SEJJ7CRI.js +99 -0
  449. package/dist/chunk-SEJJ7CRI.js.map +1 -0
  450. package/dist/chunk-SHBFGRPV.js +45 -0
  451. package/dist/chunk-SHBFGRPV.js.map +1 -0
  452. package/dist/chunk-SOFJ4GC5.js +45 -0
  453. package/dist/chunk-SOFJ4GC5.js.map +1 -0
  454. package/dist/chunk-STH2HPZK.js +44 -0
  455. package/dist/chunk-STH2HPZK.js.map +1 -0
  456. package/dist/chunk-TK3JNKME.js +28 -0
  457. package/dist/chunk-TK3JNKME.js.map +1 -0
  458. package/dist/chunk-TMONHFE3.js +46 -0
  459. package/dist/chunk-TMONHFE3.js.map +1 -0
  460. package/dist/chunk-TR4KO3AG.js +44 -0
  461. package/dist/chunk-TR4KO3AG.js.map +1 -0
  462. package/dist/chunk-TS2LNBF2.js +68 -0
  463. package/dist/chunk-TS2LNBF2.js.map +1 -0
  464. package/dist/chunk-UZUMBFPP.js +26 -0
  465. package/dist/chunk-UZUMBFPP.js.map +1 -0
  466. package/dist/chunk-VRZ5LMOW.js +176 -0
  467. package/dist/chunk-VRZ5LMOW.js.map +1 -0
  468. package/dist/chunk-WLGGY6Z6.js +75 -0
  469. package/dist/chunk-WLGGY6Z6.js.map +1 -0
  470. package/dist/chunk-WO7V6ZNC.js +11 -0
  471. package/dist/chunk-WO7V6ZNC.js.map +1 -0
  472. package/dist/chunk-WXSENSRP.js +64 -0
  473. package/dist/chunk-WXSENSRP.js.map +1 -0
  474. package/dist/chunk-XEKBZ2SA.js +19 -0
  475. package/dist/chunk-XEKBZ2SA.js.map +1 -0
  476. package/dist/chunk-XPBKU3JX.js +61 -0
  477. package/dist/chunk-XPBKU3JX.js.map +1 -0
  478. package/dist/chunk-XRYXBXWH.js +24 -0
  479. package/dist/chunk-XRYXBXWH.js.map +1 -0
  480. package/dist/chunk-XVA7QRVH.js +22 -0
  481. package/dist/chunk-XVA7QRVH.js.map +1 -0
  482. package/dist/chunk-YCTHHBSS.js +37 -0
  483. package/dist/chunk-YCTHHBSS.js.map +1 -0
  484. package/dist/chunk-YHPWD5NE.js +70 -0
  485. package/dist/chunk-YHPWD5NE.js.map +1 -0
  486. package/dist/chunk-YLNEKJQ5.js +126 -0
  487. package/dist/chunk-YLNEKJQ5.js.map +1 -0
  488. package/dist/chunk-YN4CEKCF.js +73 -0
  489. package/dist/chunk-YN4CEKCF.js.map +1 -0
  490. package/dist/chunk-YYNMESIF.js +17 -0
  491. package/dist/chunk-YYNMESIF.js.map +1 -0
  492. package/dist/chunk-Z6PRMCV6.js +1 -0
  493. package/dist/chunk-Z6PRMCV6.js.map +1 -0
  494. package/dist/chunk-ZDNW6VQG.js +11 -0
  495. package/dist/chunk-ZDNW6VQG.js.map +1 -0
  496. package/dist/chunk-ZP4D73DO.js +36 -0
  497. package/dist/chunk-ZP4D73DO.js.map +1 -0
  498. package/dist/chunk-ZUATADUV.js +26 -0
  499. package/dist/chunk-ZUATADUV.js.map +1 -0
  500. package/dist/{connections-1NtNQrsY.d.ts → connections-CEcurtWI.d.ts} +74 -9
  501. package/dist/core/index.cjs +14041 -6973
  502. package/dist/core/index.cjs.map +1 -1
  503. package/dist/core/index.d.ts +422 -138
  504. package/dist/core/index.js +425 -183
  505. package/dist/core/index.js.map +1 -1
  506. package/dist/flow-vnext/index.cjs +2842 -0
  507. package/dist/flow-vnext/index.cjs.map +1 -0
  508. package/dist/flow-vnext/index.d.ts +3 -0
  509. package/dist/flow-vnext/index.js +119 -0
  510. package/dist/flow-vnext/index.js.map +1 -0
  511. package/dist/{graphql-client-Bn0tN049.d.ts → graphql-client-B2tREsx6.d.ts} +3 -1
  512. package/dist/index-b9xxXGFs.d.ts +1230 -0
  513. package/dist/index.d.ts +5 -3
  514. package/dist/index.js +202 -37
  515. package/dist/index.js.map +1 -1
  516. package/dist/legacy-BpgIqaQ5.d.ts +14 -0
  517. package/dist/mantine/index.d.ts +7 -4
  518. package/dist/mantine/index.js +84 -30
  519. package/dist/mantine/index.js.map +1 -1
  520. package/dist/{runtime-BFwvCQDF.d.ts → types-Dqk5MTfW.d.ts} +6096 -5386
  521. package/package.json +12 -2
  522. package/dist/chunk-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/components/DataInput/DataInput.tsx","../src/mantine/components/DataInput/BlockPropSelector.tsx","../src/mantine/blocks/apiRequest/types.ts","../src/mantine/blocks/registry/conditionableProperties.ts"],"sourcesContent":["import React, { useState, useCallback, useMemo } from 'react';\nimport { Input, ActionIcon, Tooltip, Group } from '@mantine/core';\nimport { IconVariable, IconX } from '@tabler/icons-react';\nimport { BlockPropSelector, type BlockPropSelection, type ItemScopeContext } from './BlockPropSelector';\nimport { createReference, hasReferences, parseReferences } from '../../utils/referenceResolver';\n\nexport interface DataInputProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n editorDocument: any[];\n currentBlockId?: string;\n leftSection?: React.ReactNode;\n leftSectionWidth?: number | string;\n disabled?: boolean;\n description?: string;\n label?: string;\n required?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /**\n * When provided, the picker surfaces a virtual \"Current item\" entry built\n * from the given schema, and selecting one of its leaves emits a\n * `{{item.<field>}}` reference. Used by iterative mappers (Xero invoice\n * LineItems iterative mode) so each cell can ref into the current\n * iteration element in a typed way.\n */\n itemScope?: ItemScopeContext;\n}\n\nexport function DataInput({\n value,\n onChange,\n placeholder,\n editorDocument,\n currentBlockId,\n leftSection,\n leftSectionWidth,\n disabled = false,\n description,\n label,\n required,\n size = 'sm',\n itemScope,\n}: DataInputProps) {\n const [selectorOpened, setSelectorOpened] = useState(false);\n\n const containsReferences = useMemo(() => hasReferences(value), [value]);\n\n const references = useMemo(() => parseReferences(value || ''), [value]);\n\n const handleOpenSelector = useCallback(() => setSelectorOpened(true), []);\n const handleCloseSelector = useCallback(() => setSelectorOpened(false), []);\n\n const handleSelectProperty = useCallback(\n (selection: BlockPropSelection) => {\n const reference = createReference(selection.blockId, selection.propName);\n onChange(value ? `${value}${reference}` : reference);\n },\n [value, onChange]\n );\n\n const handleClearReferences = useCallback(() => {\n let newValue = value || '';\n references.forEach((ref) => {\n newValue = newValue.replace(ref.fullMatch, '');\n });\n onChange(newValue);\n }, [value, references, onChange]);\n\n return (\n <Input.Wrapper\n label={label}\n description={description}\n required={required}\n size={size}\n style={{ width: '100%' }}\n styles={{\n label: { color: 'var(--mantine-color-dimmed)' },\n description: { color: 'var(--mantine-color-dimmed)' },\n }}\n >\n <Input\n value={value || ''}\n onChange={(e) => onChange(e.currentTarget.value)}\n placeholder={placeholder}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n disabled={disabled}\n size={size}\n radius=\"md\"\n style={{ width: '100%' }}\n styles={{\n input: {\n background: 'var(--mantine-color-neutralColor-2)',\n borderColor: 'var(--mantine-color-neutralColor-5)',\n color: 'var(--mantine-color-text)',\n '&:focus': {\n borderColor: 'var(--mantine-color-accent-5)',\n },\n },\n }}\n rightSectionPointerEvents=\"all\"\n rightSectionWidth={containsReferences ? 52 : 28}\n rightSection={\n <Group gap={2} wrap=\"nowrap\">\n {containsReferences && (\n <Tooltip label=\"Clear references\" position=\"top\">\n <ActionIcon variant=\"subtle\" color=\"gray\" onClick={handleClearReferences} size=\"xs\">\n <IconX size={12} />\n </ActionIcon>\n </Tooltip>\n )}\n\n <BlockPropSelector\n opened={selectorOpened}\n onClose={handleCloseSelector}\n onSelect={handleSelectProperty}\n editorDocument={editorDocument}\n currentBlockId={currentBlockId}\n itemScope={itemScope}\n >\n <Tooltip label={containsReferences ? 'Add another reference' : 'Insert block reference'} position=\"top\">\n <ActionIcon variant=\"subtle\" color={containsReferences ? 'teal' : 'gray'} onClick={handleOpenSelector} disabled={disabled} size=\"xs\">\n <IconVariable size={14} />\n </ActionIcon>\n </Tooltip>\n </BlockPropSelector>\n </Group>\n }\n />\n </Input.Wrapper>\n );\n}\n","import React, { useState, useMemo } from 'react';\nimport { Popover, Text, Stack, Group, ActionIcon, TextInput, ScrollArea, Badge, Box } from '@mantine/core';\nimport { IconSearch, IconX, IconChevronRight, IconArrowLeft, IconBolt } from '@tabler/icons-react';\nimport { getConditionableProperties, getEventPayloadProperties } from '../../blocks/registry/conditionableProperties';\nimport type { ConditionableProperty } from '../../blocks/types/conditions';\n\nexport interface BlockPropSelection {\n blockId: string;\n blockType: string;\n propName: string;\n propDisplayName: string;\n}\n\n/**\n * When the consuming block is a `block.event`-triggered listener, pass this\n * to expose the trigger payload as a virtual top-level entry in the picker.\n *\n * Slice I — events and triggers feature. Selecting a leaf inside the\n * trigger payload subtree emits a selection with `blockId: '__trigger__'`,\n * which the consuming form serializes as `{$ref: \"trigger.payload.<path>\"}`.\n */\nexport interface TriggerSourceContext {\n /** The block id of the source emitter (used only for the display name). */\n sourceBlockId: string;\n /** The action type of the source — used to look up the events vocabulary. */\n sourceActionType: string;\n /** The event name the listener is triggered by. */\n eventName: string;\n /** Display name shown for this entry in the picker (e.g. \"Evaluate Claim\"). */\n sourceDisplayName?: string;\n /**\n * Source block's template inputs (parsed or JSON string). Consulted by\n * actions with dynamic event schemas (see `getDynamicEvents`) — e.g.\n * `qi/claim.submit` derives the event payload from the picked collection's\n * survey. Optional; static-event actions ignore it.\n */\n sourceBlockInputs?: unknown;\n}\n\n/** Reserved blockId returned by selections that came from the trigger payload. */\nexport const TRIGGER_PAYLOAD_BLOCK_ID = '__trigger__';\n\n/**\n * Describes an iterator scope available inside an iterative mapper (e.g. the\n * Xero invoice LineItems editor). Selecting a property from this virtual\n * entry emits a reference with `blockId === 'item'`, which the resolver\n * looks up against the `scope.item` binding at execute time.\n */\nexport interface ItemScopeContext {\n /** Shape of each element in the bound upstream list. */\n schema: Array<{ path: string; displayName: string; type: string; description?: string }>;\n /** Picker display name for the virtual entry. */\n displayName?: string;\n}\n\n/** Reserved blockId that the resolver interprets as the iterator scope binding. */\nexport const ITEM_SCOPE_BLOCK_ID = 'item';\n\nexport interface BlockPropSelectorProps {\n children: React.ReactNode;\n opened: boolean;\n onClose: () => void;\n onSelect: (selection: BlockPropSelection) => void;\n editorDocument: any[];\n currentBlockId?: string;\n /** Optional. When provided, surfaces a virtual trigger-payload entry. */\n triggerSource?: TriggerSourceContext;\n /** Optional. When provided, surfaces a virtual iterator-scope entry (`{{item.*}}`). */\n itemScope?: ItemScopeContext;\n}\n\ninterface PropertyTreeNode {\n name: string;\n displayName: string;\n type: string;\n fullPath: string;\n children: PropertyTreeNode[];\n isLeaf: boolean;\n}\n\nfunction buildPropertyTree(properties: ConditionableProperty[]): PropertyTreeNode[] {\n const root: PropertyTreeNode[] = [];\n\n properties.forEach((prop) => {\n const pathParts = prop.name.split('.');\n let currentLevel = root;\n\n pathParts.forEach((part, index) => {\n const isLastPart = index === pathParts.length - 1;\n const fullPath = pathParts.slice(0, index + 1).join('.');\n\n let existingNode = currentLevel.find((node) => node.name === part);\n\n if (!existingNode) {\n const newNode: PropertyTreeNode = {\n name: part,\n displayName: isLastPart ? prop.displayName : part,\n type: isLastPart ? prop.type : 'object',\n fullPath,\n children: [],\n isLeaf: isLastPart,\n };\n currentLevel.push(newNode);\n existingNode = newNode;\n }\n\n if (!isLastPart) {\n currentLevel = existingNode.children;\n }\n });\n });\n\n return root;\n}\n\nfunction getBlockDisplayName(block: any): string {\n const title = block.props?.title || block.props?.name || block.props?.label;\n if (title) return title;\n return `${block.type} (${block.id.slice(0, 8)}...)`;\n}\n\nfunction getBlockTypeColor(blockType: string): string {\n const colorMap: Record<string, string> = {\n checkbox: 'blue',\n proposal: 'green',\n proposalVote: 'teal',\n list: 'orange',\n overview: 'violet',\n proposalActions: 'pink',\n apiRequest: 'cyan',\n action: 'teal',\n email: 'indigo',\n claim: 'yellow',\n bid: 'orange',\n evaluator: 'grape',\n };\n return colorMap[blockType] || 'gray';\n}\n\nconst DROPDOWN_BG = 'var(--mantine-color-neutralColor-2)';\nconst ITEM_HOVER_BG = 'var(--mantine-color-neutralColor-3)';\nconst BORDER_COLOR = 'var(--mantine-color-neutralColor-5)';\nconst TEXT_PRIMARY = 'var(--mantine-color-text)';\nconst TEXT_DIMMED = 'var(--mantine-color-dimmed)';\n\nexport function BlockPropSelector({ children, opened, onClose, onSelect, editorDocument, currentBlockId, triggerSource, itemScope }: BlockPropSelectorProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedBlock, setSelectedBlock] = useState<any | null>(null);\n const [navigationPath, setNavigationPath] = useState<PropertyTreeNode[]>([]);\n\n // Slice I: build a virtual \"trigger payload\" entry if a triggerSource was\n // provided. This appears at the top of the block list and drills into the\n // event's payload schema like a regular block.\n const triggerVirtualBlock = useMemo(() => {\n if (!triggerSource) return null;\n const properties = getEventPayloadProperties(triggerSource.sourceActionType, triggerSource.eventName, triggerSource.sourceBlockInputs);\n if (properties.length === 0) return null;\n const sourceLabel = triggerSource.sourceDisplayName || triggerSource.sourceBlockId;\n return {\n id: TRIGGER_PAYLOAD_BLOCK_ID,\n type: 'trigger',\n displayName: `On ${triggerSource.eventName} from ${sourceLabel}`,\n properties,\n propertyTree: buildPropertyTree(properties),\n };\n }, [triggerSource]);\n\n // Iterator scope virtual entry: when the parent (an iterative mapper) binds\n // a source list, each row's cells can reference `{{item.<field>}}` for the\n // current element. This surfaces the element shape in the picker.\n const itemVirtualBlock = useMemo(() => {\n if (!itemScope || !itemScope.schema || itemScope.schema.length === 0) return null;\n const properties: ConditionableProperty[] = itemScope.schema.map((f) => ({\n name: f.path,\n displayName: f.displayName || f.path,\n type: (['string', 'number', 'boolean', 'object', 'array'].includes(f.type) ? f.type : 'string') as ConditionableProperty['type'],\n description: f.description,\n }));\n return {\n id: ITEM_SCOPE_BLOCK_ID,\n type: 'item',\n displayName: itemScope.displayName || 'Current line item',\n properties,\n propertyTree: buildPropertyTree(properties),\n };\n }, [itemScope]);\n\n const availableBlocks = useMemo(() => {\n if (!editorDocument) return [];\n\n const regularBlocks = editorDocument\n .filter((block) => {\n if (currentBlockId && block.id === currentBlockId) return false;\n return getConditionableProperties(block.type, block).length > 0;\n })\n .map((block) => ({\n ...block,\n displayName: getBlockDisplayName(block),\n properties: getConditionableProperties(block.type, block),\n propertyTree: buildPropertyTree(getConditionableProperties(block.type, block)),\n }));\n\n // Virtual entries appear at the top. Order: item scope (the most relevant\n // when the user is inside an iterative mapper cell) → trigger payload →\n // the rest.\n const virtuals: any[] = [];\n if (itemVirtualBlock) virtuals.push(itemVirtualBlock);\n if (triggerVirtualBlock) virtuals.push(triggerVirtualBlock);\n return [...virtuals, ...regularBlocks];\n }, [editorDocument, currentBlockId, triggerVirtualBlock, itemVirtualBlock]);\n\n const filteredBlocks = useMemo(() => {\n if (!searchQuery.trim()) return availableBlocks;\n\n const query = searchQuery.toLowerCase();\n return availableBlocks.filter((block) => {\n if (block.displayName.toLowerCase().includes(query)) return true;\n if (block.type.toLowerCase().includes(query)) return true;\n return block.properties.some((prop: ConditionableProperty) => prop.name.toLowerCase().includes(query) || prop.displayName.toLowerCase().includes(query));\n });\n }, [availableBlocks, searchQuery]);\n\n const currentNodes = useMemo(() => {\n if (!selectedBlock) return [];\n if (navigationPath.length === 0) return selectedBlock.propertyTree;\n return navigationPath[navigationPath.length - 1].children;\n }, [selectedBlock, navigationPath]);\n\n const handleBlockSelect = (block: any) => {\n setSelectedBlock(block);\n setNavigationPath([]);\n setSearchQuery('');\n };\n\n const handleNodeClick = (node: PropertyTreeNode) => {\n if (node.isLeaf) {\n onSelect({\n blockId: selectedBlock.id,\n blockType: selectedBlock.type,\n propName: node.fullPath,\n propDisplayName: node.displayName,\n });\n handleClose();\n } else {\n setNavigationPath([...navigationPath, node]);\n }\n };\n\n const handleBack = () => {\n if (navigationPath.length > 0) {\n setNavigationPath(navigationPath.slice(0, -1));\n } else {\n setSelectedBlock(null);\n }\n };\n\n const handleClose = () => {\n setSelectedBlock(null);\n setNavigationPath([]);\n setSearchQuery('');\n onClose();\n };\n\n const headerTitle = !selectedBlock ? 'Select a Block' : navigationPath.length === 0 ? selectedBlock.displayName : navigationPath[navigationPath.length - 1].displayName;\n\n const headerSubtitle = !selectedBlock ? null : navigationPath.length === 0 ? 'Select a property' : null;\n\n return (\n <Popover opened={opened} onClose={handleClose} position=\"bottom-end\" width={360} withinPortal>\n <Popover.Target>{children}</Popover.Target>\n <Popover.Dropdown\n p={0}\n style={{\n backgroundColor: DROPDOWN_BG,\n border: `1px solid ${BORDER_COLOR}`,\n borderRadius: 10,\n overflow: 'hidden',\n }}\n >\n {/* Header */}\n <Box\n px=\"md\"\n py=\"sm\"\n style={{\n borderBottom: `1px solid ${BORDER_COLOR}`,\n backgroundColor: '#282828',\n }}\n >\n <Group justify=\"space-between\" align=\"center\">\n <Group gap={6}>\n {(selectedBlock || navigationPath.length > 0) && (\n <ActionIcon variant=\"subtle\" size=\"sm\" onClick={handleBack} color=\"gray\" styles={{ root: { color: TEXT_DIMMED, '&:hover': { backgroundColor: ITEM_HOVER_BG } } }}>\n <IconArrowLeft size={14} />\n </ActionIcon>\n )}\n <Stack gap={0}>\n <Text size=\"sm\" fw={500} c={TEXT_PRIMARY} style={{ letterSpacing: '0.2px' }}>\n {headerTitle}\n </Text>\n {headerSubtitle && (\n <Text size=\"xs\" c={TEXT_DIMMED}>\n {headerSubtitle}\n </Text>\n )}\n </Stack>\n </Group>\n <ActionIcon variant=\"subtle\" size=\"sm\" onClick={handleClose} styles={{ root: { color: TEXT_DIMMED, '&:hover': { backgroundColor: ITEM_HOVER_BG } } }}>\n <IconX size={14} />\n </ActionIcon>\n </Group>\n </Box>\n\n {/* Search */}\n {!selectedBlock && (\n <Box px=\"md\" py=\"xs\" style={{ borderBottom: `1px solid ${BORDER_COLOR}` }}>\n <TextInput\n placeholder=\"Search blocks...\"\n leftSection={<IconSearch size={14} color={TEXT_DIMMED} />}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.currentTarget.value)}\n size=\"xs\"\n rightSection={\n searchQuery ? (\n <ActionIcon variant=\"subtle\" size=\"xs\" onClick={() => setSearchQuery('')} styles={{ root: { color: TEXT_DIMMED } }}>\n <IconX size={12} />\n </ActionIcon>\n ) : null\n }\n styles={{\n input: {\n backgroundColor: 'var(--mantine-color-neutralColor-3)',\n border: `1px solid ${BORDER_COLOR}`,\n color: TEXT_PRIMARY,\n '&::placeholder': { color: TEXT_DIMMED },\n '&:focus': { borderColor: 'var(--mantine-color-accent-5)' },\n },\n }}\n />\n </Box>\n )}\n\n {/* Content */}\n <ScrollArea h={280} type=\"auto\" scrollbarSize={4} styles={{ scrollbar: { '&[data-orientation=\"vertical\"] .mantine-ScrollArea-thumb': { backgroundColor: BORDER_COLOR } } }}>\n <Box p=\"xs\">\n {!selectedBlock ? (\n filteredBlocks.length === 0 ? (\n <Text c={TEXT_DIMMED} ta=\"center\" py=\"xl\" size=\"sm\">\n {availableBlocks.length === 0 ? 'No referenceable blocks found' : 'No blocks match your search'}\n </Text>\n ) : (\n <Stack gap={4}>\n {filteredBlocks.map((block) => (\n <Box\n key={block.id}\n onClick={() => handleBlockSelect(block)}\n style={{\n borderRadius: 6,\n border: `1px solid ${BORDER_COLOR}`,\n padding: '10px 12px',\n cursor: 'pointer',\n transition: 'background-color 0.1s ease, border-color 0.1s ease',\n backgroundColor: 'transparent',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = ITEM_HOVER_BG;\n e.currentTarget.style.borderColor = '#555';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.borderColor = BORDER_COLOR;\n }}\n >\n <Group gap=\"xs\" justify=\"space-between\">\n <Group gap={8}>\n <IconBolt size={14} color={`var(--mantine-color-${getBlockTypeColor(block.type)}-5)`} />\n <Text fw={500} size=\"sm\" c={TEXT_PRIMARY}>\n {block.displayName}\n </Text>\n <Badge size=\"xs\" variant=\"light\" color={getBlockTypeColor(block.type)} style={{ textTransform: 'none' }}>\n {block.type}\n </Badge>\n </Group>\n <IconChevronRight size={14} color={TEXT_DIMMED} />\n </Group>\n </Box>\n ))}\n </Stack>\n )\n ) : currentNodes.length === 0 ? (\n <Text c={TEXT_DIMMED} ta=\"center\" py=\"xl\" size=\"sm\">\n No properties available\n </Text>\n ) : (\n <Stack gap={2}>\n {currentNodes.map((node: PropertyTreeNode, index: number) => (\n <Box\n key={index}\n onClick={() => handleNodeClick(node)}\n style={{\n padding: '9px 12px',\n borderRadius: 6,\n cursor: 'pointer',\n transition: 'background-color 0.1s ease',\n backgroundColor: 'transparent',\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = ITEM_HOVER_BG)}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'transparent')}\n >\n <Group gap=\"xs\" justify=\"space-between\">\n <Group gap={8}>\n <Text size=\"sm\" c={node.isLeaf ? TEXT_PRIMARY : TEXT_DIMMED}>\n {node.displayName}\n </Text>\n <Badge size=\"xs\" variant=\"outline\" color=\"gray\" style={{ borderColor: BORDER_COLOR, color: TEXT_DIMMED, textTransform: 'none' }}>\n {node.type}\n </Badge>\n </Group>\n {!node.isLeaf && <IconChevronRight size={14} color={TEXT_DIMMED} />}\n </Group>\n </Box>\n ))}\n </Stack>\n )}\n </Box>\n </ScrollArea>\n </Popover.Dropdown>\n </Popover>\n );\n}\n","/**\n * Type definitions for API Request block response schema\n */\n\nexport interface ResponseSchemaField {\n /** Dot-notation path to the field in the response (e.g., \"data.user.email\") */\n path: string;\n /** Human-readable display name for the field */\n displayName: string;\n /** Data type of the field */\n type: 'string' | 'number' | 'boolean' | 'object' | 'array';\n /** Optional description of what this field represents */\n description?: string;\n}\n\nexport interface ResponseSchema {\n /** Array of schema field definitions */\n fields: ResponseSchemaField[];\n}\n\n/**\n * Parse response schema from JSON string stored in block props\n */\nexport function parseResponseSchema(schemaString: string | undefined): ResponseSchema | null {\n if (!schemaString) return null;\n\n try {\n return JSON.parse(schemaString) as ResponseSchema;\n } catch (error) {\n return null;\n }\n}\n\n/**\n * Validate a response object against a schema\n * Returns an array of validation error messages\n */\nexport function validateResponseAgainstSchema(response: any, schema: ResponseSchema): string[] {\n const errors: string[] = [];\n\n schema.fields.forEach((field) => {\n // Navigate to the field value using dot notation\n const value = getNestedValueForValidation(response, field.path);\n\n if (value === undefined) {\n errors.push(`Missing field: ${field.path}`);\n } else {\n // Type checking\n const actualType = Array.isArray(value) ? 'array' : typeof value;\n\n // Allow some flexibility in type matching\n if (field.type === 'object' && actualType !== 'object') {\n errors.push(`Type mismatch for ${field.path}: expected object, got ${actualType}`);\n } else if (field.type === 'array' && !Array.isArray(value)) {\n errors.push(`Type mismatch for ${field.path}: expected array, got ${actualType}`);\n } else if (field.type !== 'object' && field.type !== 'array' && actualType !== field.type) {\n errors.push(`Type mismatch for ${field.path}: expected ${field.type}, got ${actualType}`);\n }\n }\n });\n\n return errors;\n}\n\n/**\n * Helper to get nested value from object using dot notation\n * Separate from referenceResolver to avoid circular dependencies\n */\nfunction getNestedValueForValidation(obj: any, path: string): any {\n return path.split('.').reduce((current, key) => {\n return current?.[key];\n }, obj);\n}\n","import type { BlockTypeProperties, ConditionableProperty } from '../types/conditions';\nimport { parseResponseSchema } from '../apiRequest/types';\nimport { parseHttpRequestInputs } from '../action/actionTypes/httpRequest/types';\nimport { getAction, getEventsForBlock, getOutputSchemaForBlock } from '@/core/lib/actionRegistry';\n\nexport const CONDITIONABLE_PROPERTIES: BlockTypeProperties = {\n checkbox: [\n {\n name: 'checked',\n displayName: 'Is checked',\n type: 'boolean',\n description: 'Whether the checkbox is currently checked',\n },\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title text of the checkbox',\n },\n {\n name: 'description',\n displayName: 'Description',\n type: 'string',\n description: 'The description text of the checkbox',\n },\n {\n name: 'allowedCheckers',\n displayName: 'Allowed checkers',\n type: 'string',\n description: 'Who can check this checkbox',\n },\n ],\n proposal: [\n {\n name: 'status',\n displayName: 'Status',\n type: 'select',\n selectOptions: [\n { value: 'draft', label: 'Draft' },\n { value: 'created', label: 'Created' },\n ],\n description: 'The current status of the proposal',\n },\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title of the proposal',\n },\n {\n name: 'description',\n displayName: 'Description',\n type: 'string',\n description: 'The description of the proposal',\n },\n {\n name: 'proposalId',\n displayName: 'Proposal ID',\n type: 'string',\n description: 'The unique identifier of the proposal',\n },\n ],\n proposalVote: [\n {\n name: 'status',\n displayName: 'Status',\n type: 'select',\n selectOptions: [\n { value: 'open', label: 'Open' },\n { value: 'passed', label: 'Passed' },\n { value: 'rejected', label: 'Rejected' },\n { value: 'executed', label: 'Executed' },\n { value: 'closed', label: 'Closed' },\n ],\n description: 'The current status of the proposal vote',\n },\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title of the proposal vote',\n },\n {\n name: 'subtitle',\n displayName: 'Subtitle',\n type: 'string',\n description: 'The subtitle of the proposal vote',\n },\n {\n name: 'daysLeft',\n displayName: 'Days left',\n type: 'number',\n description: 'Number of days remaining for voting',\n },\n {\n name: 'proposalId',\n displayName: 'Proposal ID',\n type: 'string',\n description: 'The unique identifier of the proposal',\n },\n ],\n list: [\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title of the list',\n },\n {\n name: 'did',\n displayName: 'DID',\n type: 'string',\n description: 'The DID associated with the list',\n },\n {\n name: 'fragmentIdentifier',\n displayName: 'Fragment identifier',\n type: 'string',\n description: 'The fragment identifier for the list',\n },\n ],\n overview: [\n {\n name: 'did',\n displayName: 'DID',\n type: 'string',\n description: 'The DID associated with the overview',\n },\n ],\n proposalActions: [\n {\n name: 'proposalBlockId',\n displayName: 'Proposal block ID',\n type: 'string',\n description: 'The ID of the associated proposal block',\n },\n {\n name: 'actions',\n displayName: 'Actions',\n type: 'string',\n description: 'The JSON string of actions',\n },\n ],\n apiRequest: [\n {\n name: 'endpoint',\n displayName: 'Endpoint',\n type: 'string',\n description: 'The API endpoint URL',\n },\n {\n name: 'method',\n displayName: 'HTTP Method',\n type: 'select',\n selectOptions: [\n { value: 'GET', label: 'GET' },\n { value: 'POST', label: 'POST' },\n { value: 'PUT', label: 'PUT' },\n { value: 'DELETE', label: 'DELETE' },\n { value: 'PATCH', label: 'PATCH' },\n ],\n description: 'The HTTP method for the request',\n },\n {\n name: 'response',\n displayName: 'Response',\n type: 'string',\n description: 'The response data from the API request',\n },\n {\n name: 'status',\n displayName: 'Status',\n type: 'select',\n selectOptions: [\n { value: 'idle', label: 'Idle' },\n { value: 'loading', label: 'Loading' },\n { value: 'success', label: 'Success' },\n { value: 'error', label: 'Error' },\n ],\n description: 'The current status of the API request',\n },\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title of the API request block',\n },\n {\n name: 'description',\n displayName: 'Description',\n type: 'string',\n description: 'The description of the API request block',\n },\n ],\n domainCreator: [\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title of the domain creator block',\n },\n {\n name: 'description',\n displayName: 'Description',\n type: 'string',\n description: 'Supporting description text for the domain creator block',\n },\n {\n name: 'surveySchema',\n displayName: 'Survey schema',\n type: 'string',\n description: 'JSON string containing the full survey definition with field types, titles, and structure',\n },\n {\n name: 'answers',\n displayName: 'Survey answers',\n type: 'string',\n description: 'JSON string containing current survey answers (can be updated by AI agents)',\n },\n {\n name: 'lastSubmission',\n displayName: 'Last submission data',\n type: 'string',\n description: 'JSON string from the last completed survey response',\n },\n {\n name: 'entityDid',\n displayName: 'Entity DID',\n type: 'string',\n description: 'The DID of the created entity',\n },\n {\n name: 'entityType',\n displayName: 'Entity Type',\n type: 'string',\n description: 'The type of entity created (e.g., dao, protocol)',\n },\n ],\n email: [\n {\n name: 'status',\n displayName: 'Status',\n type: 'select',\n selectOptions: [\n { value: 'idle', label: 'Idle' },\n { value: 'sending', label: 'Sending' },\n { value: 'sent', label: 'Sent' },\n { value: 'error', label: 'Error' },\n ],\n description: 'The current status of the email',\n },\n {\n name: 'lastSentAt',\n displayName: 'Last sent at',\n type: 'string',\n description: 'Timestamp when the email was last sent',\n },\n {\n name: 'templateName',\n displayName: 'Template',\n type: 'string',\n description: 'Selected email template name',\n },\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'The title of the email block',\n },\n {\n name: 'error',\n displayName: 'Error',\n type: 'string',\n description: 'Error message if sending failed',\n },\n ],\n governanceGroup: [\n {\n name: 'coreAddress',\n displayName: 'Core Address',\n type: 'string',\n description: 'The DAO core contract address',\n },\n {\n name: 'groupAddress',\n displayName: 'Group Address',\n type: 'string',\n description: 'The voting group contract address',\n },\n {\n name: 'groupType',\n displayName: 'Group Type',\n type: 'select',\n selectOptions: [\n { value: 'categorical', label: 'Categorical' },\n { value: 'multisig', label: 'Multisig' },\n { value: 'nftStaking', label: 'NFT Staking' },\n { value: 'tokenStaking', label: 'Token Staking' },\n ],\n description: 'Type of governance group',\n },\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'Title of the governance group block',\n },\n {\n name: 'description',\n displayName: 'Description',\n type: 'string',\n description: 'Description of the governance group block',\n },\n ],\n flowLink: [\n {\n name: 'title',\n displayName: 'Title',\n type: 'string',\n description: 'Block title',\n },\n {\n name: 'description',\n displayName: 'Description',\n type: 'string',\n description: 'Block description',\n },\n {\n name: 'linksCount',\n displayName: 'Links count',\n type: 'number',\n description: 'Number of configured links',\n },\n ],\n action: [],\n embed: [],\n};\n\n/**\n * Get conditionable properties for a block type\n * For API Request blocks with a response schema, returns dynamic properties based on the schema\n *\n * @param blockType - The type of block\n * @param block - Optional: The actual block instance for dynamic property generation\n */\nexport function getConditionableProperties(blockType: string, block?: any): ConditionableProperty[] {\n const baseProperties = CONDITIONABLE_PROPERTIES[blockType] || [];\n\n // Special handling for API Request blocks with response schema\n if (blockType === 'apiRequest' && block?.props?.responseSchema) {\n const schema = parseResponseSchema(block.props.responseSchema);\n\n if (schema && schema.fields.length > 0) {\n // Generate dynamic properties from schema\n const schemaProperties: ConditionableProperty[] = schema.fields.map((field) => ({\n name: `response.${field.path}`,\n displayName: field.displayName,\n type: field.type,\n description: field.description || `Response field: ${field.displayName}`,\n }));\n\n // Remove the generic \"response\" property and replace with schema-specific properties\n const filteredBase = baseProperties.filter((prop) => prop.name !== 'response');\n return [...filteredBase, ...schemaProperties];\n }\n }\n\n // Action blocks: resolve output schema from the action registry or from user-defined response fields\n if (blockType === 'action' && block?.props?.actionType) {\n const actionDef = getAction(block.props.actionType);\n\n // 1. Output schema from the registry — dynamic (per-block, e.g.\n // claim.submit including survey fields) or static (e.g. email.send).\n const schema = getOutputSchemaForBlock(actionDef, block.props?.inputs);\n if (schema.length > 0) {\n return schema.map((field) => ({\n name: `output.${field.path}`,\n displayName: field.displayName,\n type: field.type,\n description: field.description || `Output field: ${field.displayName}`,\n }));\n }\n\n // 2. User-defined response schema inside inputs (e.g. http.request → responseSchema.fields)\n if (block.props.inputs) {\n const parsed = parseHttpRequestInputs(block.props.inputs);\n const schema = parsed.responseSchema;\n\n if (schema && schema.fields.length > 0) {\n return schema.fields.map((field) => ({\n name: `output.${field.path}`,\n displayName: field.displayName,\n type: field.type,\n description: field.description || `Output field: ${field.displayName}`,\n }));\n }\n }\n }\n\n return baseProperties;\n}\n\n/**\n * Get the payload fields of a specific event declared on an action type, in\n * ConditionableProperty shape so the same picker UI can render them.\n *\n * Slice I — events and triggers feature. The trigger payload selector in\n * BlockPropSelector calls this when the user is configuring inputs on a\n * `block.event`-triggered listener and clicks \"On <event> from <source>\".\n *\n * Returns [] if the action type or event isn't declared (with an explicit\n * empty list rather than throwing — the caller renders an \"no events\" hint).\n */\nexport function getEventPayloadProperties(actionType: string, eventName: string, sourceBlockInputs?: unknown): ConditionableProperty[] {\n if (!actionType || !eventName) return [];\n const actionDef = getAction(actionType);\n // Prefer the per-block event list so dynamic-schema actions (e.g.\n // claim.submit) surface survey-derived fields; fall back to static events.\n const events = getEventsForBlock(actionDef, sourceBlockInputs);\n const event = events.find((e) => e.name === eventName);\n if (!event) return [];\n\n // Map OutputSchemaField to ConditionableProperty. The shape is identical\n // except ConditionableProperty has narrower `type`. We narrow defensively.\n return event.payloadSchema.map((field) => ({\n name: `payload.${field.path}`,\n displayName: field.displayName,\n type: narrowFieldType(field.type),\n description: field.description || `Event payload field: ${field.displayName}`,\n }));\n}\n\nfunction narrowFieldType(type: string): ConditionableProperty['type'] {\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'object':\n case 'array':\n return type;\n default:\n return 'string';\n }\n}\n\nexport function getPropertyByName(blockType: string, propertyName: string): ConditionableProperty | null {\n const properties = getConditionableProperties(blockType);\n return properties.find((prop) => prop.name === propertyName) || null;\n}\n"],"mappings":"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","names":["React","useState","useMemo","ActionIcon","Group","IconX","schema","useState","useMemo","React","Group","ActionIcon","IconX"]}
@@ -0,0 +1,21 @@
1
+ // src/mantine/blocks/action/actionTypes/collectionUsers/types.ts
2
+ function parseCollectionUsersActionInputs(json) {
3
+ try {
4
+ const parsed = typeof json === "string" ? json ? JSON.parse(json) : {} : json || {};
5
+ return {
6
+ deedDid: typeof parsed?.deedDid === "string" ? parsed.deedDid : "",
7
+ collectionId: typeof parsed?.collectionId === "string" ? parsed.collectionId : ""
8
+ };
9
+ } catch {
10
+ return { deedDid: "", collectionId: "" };
11
+ }
12
+ }
13
+ function serializeCollectionUsersActionInputs(inputs) {
14
+ return JSON.stringify(inputs);
15
+ }
16
+
17
+ export {
18
+ parseCollectionUsersActionInputs,
19
+ serializeCollectionUsersActionInputs
20
+ };
21
+ //# sourceMappingURL=chunk-4TMOIK5M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/collectionUsers/types.ts"],"sourcesContent":["/**\n * Template-mode config shape for the single `qi/collection.users` block\n * (IXO-2588). The form owns only the two template-level fields that identify\n * the collection context:\n *\n * - `deedDid` — the entity (deed) DID the collection belongs to. Used to\n * fetch the collection list and resolve the entity admin\n * account (the authz granter).\n * - `collectionId` — the target claim collection. Every runtime operation\n * (add / list / revoke) acts on this collection.\n *\n * Per-operation execution inputs (grantee address, role, quota, granteeKind,\n * members) are runtime inputs collected by the FlowDetail, not template config.\n */\nexport interface CollectionUsersActionInputs {\n deedDid: string;\n collectionId: string;\n}\n\nexport function parseCollectionUsersActionInputs(json: string): CollectionUsersActionInputs {\n try {\n const parsed = typeof json === 'string' ? (json ? JSON.parse(json) : {}) : json || {};\n return {\n deedDid: typeof parsed?.deedDid === 'string' ? parsed.deedDid : '',\n collectionId: typeof parsed?.collectionId === 'string' ? parsed.collectionId : '',\n };\n } catch {\n return { deedDid: '', collectionId: '' };\n }\n}\n\nexport function serializeCollectionUsersActionInputs(inputs: CollectionUsersActionInputs): string {\n return JSON.stringify(inputs);\n}\n"],"mappings":";AAmBO,SAAS,iCAAiC,MAA2C;AAC1F,MAAI;AACF,UAAM,SAAS,OAAO,SAAS,WAAY,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,IAAK,QAAQ,CAAC;AACpF,WAAO;AAAA,MACL,SAAS,OAAO,QAAQ,YAAY,WAAW,OAAO,UAAU;AAAA,MAChE,cAAc,OAAO,QAAQ,iBAAiB,WAAW,OAAO,eAAe;AAAA,IACjF;AAAA,EACF,QAAQ;AACN,WAAO,EAAE,SAAS,IAAI,cAAc,GAAG;AAAA,EACzC;AACF;AAEO,SAAS,qCAAqC,QAA6C;AAChG,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
@@ -0,0 +1,102 @@
1
+ import {
2
+ useGovernanceCoreAddress
3
+ } from "./chunk-676HDB7K.js";
4
+ import {
5
+ ProposalMetadataFields,
6
+ proposalMetadataValid
7
+ } from "./chunk-TR4KO3AG.js";
8
+ import {
9
+ actionAlertStyles
10
+ } from "./chunk-6GKJR52N.js";
11
+
12
+ // src/mantine/blocks/action/actionTypes/governance/_shared/GovernanceProposalShell.tsx
13
+ import React, { useCallback, useMemo, useState } from "react";
14
+ import { Alert, Button, Card, Group, Loader, Stack, Text } from "@mantine/core";
15
+ import { IconAlertCircle, IconShieldCheck } from "@tabler/icons-react";
16
+ var GovernanceProposalShell = ({
17
+ flow,
18
+ icon: HeadlineIcon,
19
+ headline,
20
+ defaultBlurb,
21
+ successTitle,
22
+ valid,
23
+ buildRuntimeInputs,
24
+ children
25
+ }) => {
26
+ const { inputs, editor, block, runtime, isDisabled, executeAction } = flow;
27
+ const inputCoreAddress = useMemo(() => {
28
+ try {
29
+ const parsed = typeof inputs === "string" ? JSON.parse(inputs) : inputs;
30
+ return String(parsed?.coreAddress || "");
31
+ } catch {
32
+ return "";
33
+ }
34
+ }, [inputs]);
35
+ const {
36
+ coreAddress,
37
+ resolving: resolvingCore,
38
+ resolutionError
39
+ } = useGovernanceCoreAddress({
40
+ inputCoreAddress,
41
+ inputs,
42
+ editor,
43
+ block
44
+ });
45
+ const proposalId = String(runtime.output?.proposalId || "");
46
+ const createdTitle = String(runtime.output?.proposalTitle || "");
47
+ const isCreated = !!proposalId;
48
+ const [title, setTitle] = useState("");
49
+ const [description, setDescription] = useState("");
50
+ const [error, setError] = useState(null);
51
+ const [submitting, setSubmitting] = useState(false);
52
+ const metadataValid = proposalMetadataValid(title, description);
53
+ const canSign = valid && metadataValid;
54
+ const handleSign = useCallback(async () => {
55
+ if (!executeAction || !canSign || submitting) return;
56
+ if (!coreAddress) {
57
+ setError("DAO core address is required");
58
+ return;
59
+ }
60
+ const built = buildRuntimeInputs();
61
+ if (typeof built === "string") {
62
+ setError(built);
63
+ return;
64
+ }
65
+ setSubmitting(true);
66
+ setError(null);
67
+ try {
68
+ const outcome = await executeAction({
69
+ runtimeInputs: { coreAddress, title: title.trim(), description: description.trim(), ...built }
70
+ });
71
+ if (!outcome.success) throw new Error(outcome.error || "Proposal creation failed");
72
+ } catch (err) {
73
+ setError(err instanceof Error ? err.message : "Failed to create proposal");
74
+ } finally {
75
+ setSubmitting(false);
76
+ }
77
+ }, [executeAction, canSign, submitting, coreAddress, buildRuntimeInputs, title, description]);
78
+ if (!coreAddress) {
79
+ if (resolvingCore) {
80
+ return /* @__PURE__ */ React.createElement(Group, { gap: "xs", c: "dimmed" }, /* @__PURE__ */ React.createElement(Loader, { size: "xs" }), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, "Detecting this domain's POD\u2026"));
81
+ }
82
+ return /* @__PURE__ */ React.createElement(Alert, { color: "yellow", styles: actionAlertStyles }, resolutionError ? `${resolutionError} Select a POD in template mode before running this action.` : "Configure the DAO core address in template mode before running this action.");
83
+ }
84
+ if (isCreated) {
85
+ return /* @__PURE__ */ React.createElement(Card, { padding: "md", radius: "md", withBorder: true, style: { borderColor: "var(--mantine-color-green-6)" } }, /* @__PURE__ */ React.createElement(Text, { fw: 500, size: "sm", c: "green" }, successTitle), /* @__PURE__ */ React.createElement(Text, { size: "sm", c: "dimmed" }, "Proposal #", proposalId, createdTitle ? ` \u2014 \u201C${createdTitle}\u201D` : "", " is now open for the POD to vote on."));
86
+ }
87
+ return /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(Stack, { gap: "sm" }, /* @__PURE__ */ React.createElement(Text, { size: "sm", c: "dimmed" }, block?.props?.description || defaultBlurb), /* @__PURE__ */ React.createElement(Group, { gap: 6, c: "dimmed" }, /* @__PURE__ */ React.createElement(HeadlineIcon, { size: 16, color: "var(--mantine-color-dimmed)" }), /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 600, c: "dimmed" }, headline))), typeof children === "function" ? children({ coreAddress }) : children, /* @__PURE__ */ React.createElement(ProposalMetadataFields, { title, description, onTitleChange: setTitle, onDescriptionChange: setDescription, isDisabled }), error && /* @__PURE__ */ React.createElement(Alert, { icon: /* @__PURE__ */ React.createElement(IconAlertCircle, { size: 16 }), color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React.createElement(Text, { size: "sm" }, error)), runtime.error?.message && !error && /* @__PURE__ */ React.createElement(Alert, { color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React.createElement(Text, { size: "sm" }, runtime.error.message)), /* @__PURE__ */ React.createElement(
88
+ Button,
89
+ {
90
+ leftSection: submitting ? /* @__PURE__ */ React.createElement(Loader, { size: 14 }) : /* @__PURE__ */ React.createElement(IconShieldCheck, { size: 14 }),
91
+ onClick: handleSign,
92
+ disabled: isDisabled || !canSign || submitting,
93
+ loading: submitting
94
+ },
95
+ "Sign & submit proposal"
96
+ ));
97
+ };
98
+
99
+ export {
100
+ GovernanceProposalShell
101
+ };
102
+ //# sourceMappingURL=chunk-5IH3VC5I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/governance/_shared/GovernanceProposalShell.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react';\nimport { Alert, Button, Card, Group, Loader, Stack, Text } from '@mantine/core';\nimport { IconAlertCircle, IconShieldCheck } from '@tabler/icons-react';\nimport type { Icon as TablerIcon } from '@tabler/icons-react';\nimport type { ActionTypeFlowProps } from '../../../actionTypeUI';\nimport { actionAlertStyles } from '../../../alertStyles';\nimport { useGovernanceCoreAddress } from './useGovernanceCoreAddress';\nimport { ProposalMetadataFields, proposalMetadataValid } from './ProposalMetadataFields';\n\n/**\n * Shared flow-detail chrome for `qi/governance.*` proposal blocks. Owns the\n * lifecycle every proposal block repeats — DAO core address resolution, the\n * proposal name/description fields, error surfaces, the sign button and the\n * created-state card — so each block only contributes its action-specific\n * form fields, validity, and runtime inputs.\n *\n * Runtime is the source of truth for \"did this proposal get created?\"\n * (`runtime.output.proposalId`); nothing here mirrors runtime into state.\n */\nexport interface GovernanceProposalShellProps {\n /** The flow-detail props of the hosting block, passed through unchanged. */\n flow: Pick<ActionTypeFlowProps<any>, 'inputs' | 'editor' | 'block' | 'runtime' | 'isDisabled' | 'executeAction'>;\n /** Headline icon shown next to the kind label (e.g. IconCoin). */\n icon: TablerIcon;\n /** Short kind label under the block description, e.g. \"Treasury transaction\". */\n headline: string;\n /** Fallback blurb when the block has no description prop. */\n defaultBlurb: string;\n /** Title of the created-state card, e.g. \"Burn-NFT proposal created\". */\n successTitle: string;\n /** Whether the block-specific form fields are valid. */\n valid: boolean;\n /**\n * Build the action-specific runtime inputs to submit. Return a string to\n * abort with that error message instead. `coreAddress`, `title` and\n * `description` are merged in by the shell.\n */\n buildRuntimeInputs: () => Record<string, any> | string;\n /** Block-specific form fields. Rendered above the proposal name/description. */\n children: React.ReactNode | ((ctx: { coreAddress: string }) => React.ReactNode);\n}\n\nexport const GovernanceProposalShell: React.FC<GovernanceProposalShellProps> = ({\n flow,\n icon: HeadlineIcon,\n headline,\n defaultBlurb,\n successTitle,\n valid,\n buildRuntimeInputs,\n children,\n}) => {\n const { inputs, editor, block, runtime, isDisabled, executeAction } = flow;\n\n const inputCoreAddress = useMemo(() => {\n try {\n const parsed = typeof inputs === 'string' ? JSON.parse(inputs) : inputs;\n return String(parsed?.coreAddress || '');\n } catch {\n return '';\n }\n }, [inputs]);\n\n // Config value wins; when blank, auto-detect the current entity's governing\n // group (flow mode only) and persist it into this flow's saved inputs.\n const {\n coreAddress,\n resolving: resolvingCore,\n resolutionError,\n } = useGovernanceCoreAddress({\n inputCoreAddress,\n inputs,\n editor,\n block,\n });\n\n // Runtime is the source of truth for \"did this proposal get created?\".\n const proposalId = String(runtime.output?.proposalId || '');\n const createdTitle = String(runtime.output?.proposalTitle || '');\n const isCreated = !!proposalId;\n\n const [title, setTitle] = useState('');\n const [description, setDescription] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [submitting, setSubmitting] = useState(false);\n\n const metadataValid = proposalMetadataValid(title, description);\n const canSign = valid && metadataValid;\n\n const handleSign = useCallback(async () => {\n if (!executeAction || !canSign || submitting) return;\n if (!coreAddress) {\n setError('DAO core address is required');\n return;\n }\n const built = buildRuntimeInputs();\n if (typeof built === 'string') {\n setError(built);\n return;\n }\n setSubmitting(true);\n setError(null);\n try {\n const outcome = await executeAction({\n runtimeInputs: { coreAddress, title: title.trim(), description: description.trim(), ...built },\n });\n if (!outcome.success) throw new Error(outcome.error || 'Proposal creation failed');\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create proposal');\n } finally {\n setSubmitting(false);\n }\n }, [executeAction, canSign, submitting, coreAddress, buildRuntimeInputs, title, description]);\n\n if (!coreAddress) {\n if (resolvingCore) {\n return (\n <Group gap=\"xs\" c=\"dimmed\">\n <Loader size=\"xs\" />\n <Text size=\"sm\">Detecting this domain&apos;s POD…</Text>\n </Group>\n );\n }\n return (\n <Alert color=\"yellow\" styles={actionAlertStyles}>\n {resolutionError\n ? `${resolutionError} Select a POD in template mode before running this action.`\n : 'Configure the DAO core address in template mode before running this action.'}\n </Alert>\n );\n }\n\n if (isCreated) {\n return (\n <Card padding=\"md\" radius=\"md\" withBorder style={{ borderColor: 'var(--mantine-color-green-6)' }}>\n <Text fw={500} size=\"sm\" c=\"green\">\n {successTitle}\n </Text>\n <Text size=\"sm\" c=\"dimmed\">\n Proposal #{proposalId}\n {createdTitle ? ` — “${createdTitle}”` : ''} is now open for the POD to vote on.\n </Text>\n </Card>\n );\n }\n\n return (\n <Stack gap=\"md\">\n <Stack gap=\"sm\">\n <Text size=\"sm\" c=\"dimmed\">\n {block?.props?.description || defaultBlurb}\n </Text>\n <Group gap={6} c=\"dimmed\">\n <HeadlineIcon size={16} color=\"var(--mantine-color-dimmed)\" />\n <Text size=\"sm\" fw={600} c=\"dimmed\">\n {headline}\n </Text>\n </Group>\n </Stack>\n\n {typeof children === 'function' ? children({ coreAddress }) : children}\n\n <ProposalMetadataFields title={title} description={description} onTitleChange={setTitle} onDescriptionChange={setDescription} isDisabled={isDisabled} />\n\n {error && (\n <Alert icon={<IconAlertCircle size={16} />} color=\"red\" styles={actionAlertStyles}>\n <Text size=\"sm\">{error}</Text>\n </Alert>\n )}\n {runtime.error?.message && !error && (\n <Alert color=\"red\" styles={actionAlertStyles}>\n <Text size=\"sm\">{runtime.error.message}</Text>\n </Alert>\n )}\n\n <Button\n leftSection={submitting ? <Loader size={14} /> : <IconShieldCheck size={14} />}\n onClick={handleSign}\n disabled={isDisabled || !canSign || submitting}\n loading={submitting}\n >\n Sign &amp; submit proposal\n </Button>\n </Stack>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA,OAAO,SAAS,aAAa,SAAS,gBAAgB;AACtD,SAAS,OAAO,QAAQ,MAAM,OAAO,QAAQ,OAAO,YAAY;AAChE,SAAS,iBAAiB,uBAAuB;AAwC1C,IAAM,0BAAkE,CAAC;AAAA,EAC9E;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,QAAQ,QAAQ,OAAO,SAAS,YAAY,cAAc,IAAI;AAEtE,QAAM,mBAAmB,QAAQ,MAAM;AACrC,QAAI;AACF,YAAM,SAAS,OAAO,WAAW,WAAW,KAAK,MAAM,MAAM,IAAI;AACjE,aAAO,OAAO,QAAQ,eAAe,EAAE;AAAA,IACzC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAIX,QAAM;AAAA,IACJ;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF,IAAI,yBAAyB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,aAAa,OAAO,QAAQ,QAAQ,cAAc,EAAE;AAC1D,QAAM,eAAe,OAAO,QAAQ,QAAQ,iBAAiB,EAAE;AAC/D,QAAM,YAAY,CAAC,CAAC;AAEpB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,gBAAgB,sBAAsB,OAAO,WAAW;AAC9D,QAAM,UAAU,SAAS;AAEzB,QAAM,aAAa,YAAY,YAAY;AACzC,QAAI,CAAC,iBAAiB,CAAC,WAAW,WAAY;AAC9C,QAAI,CAAC,aAAa;AAChB,eAAS,8BAA8B;AACvC;AAAA,IACF;AACA,UAAM,QAAQ,mBAAmB;AACjC,QAAI,OAAO,UAAU,UAAU;AAC7B,eAAS,KAAK;AACd;AAAA,IACF;AACA,kBAAc,IAAI;AAClB,aAAS,IAAI;AACb,QAAI;AACF,YAAM,UAAU,MAAM,cAAc;AAAA,QAClC,eAAe,EAAE,aAAa,OAAO,MAAM,KAAK,GAAG,aAAa,YAAY,KAAK,GAAG,GAAG,MAAM;AAAA,MAC/F,CAAC;AACD,UAAI,CAAC,QAAQ,QAAS,OAAM,IAAI,MAAM,QAAQ,SAAS,0BAA0B;AAAA,IACnF,SAAS,KAAK;AACZ,eAAS,eAAe,QAAQ,IAAI,UAAU,2BAA2B;AAAA,IAC3E,UAAE;AACA,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,eAAe,SAAS,YAAY,aAAa,oBAAoB,OAAO,WAAW,CAAC;AAE5F,MAAI,CAAC,aAAa;AAChB,QAAI,eAAe;AACjB,aACE,oCAAC,SAAM,KAAI,MAAK,GAAE,YAChB,oCAAC,UAAO,MAAK,MAAK,GAClB,oCAAC,QAAK,MAAK,QAAK,mCAAiC,CACnD;AAAA,IAEJ;AACA,WACE,oCAAC,SAAM,OAAM,UAAS,QAAQ,qBAC3B,kBACG,GAAG,eAAe,+DAClB,6EACN;AAAA,EAEJ;AAEA,MAAI,WAAW;AACb,WACE,oCAAC,QAAK,SAAQ,MAAK,QAAO,MAAK,YAAU,MAAC,OAAO,EAAE,aAAa,+BAA+B,KAC7F,oCAAC,QAAK,IAAI,KAAK,MAAK,MAAK,GAAE,WACxB,YACH,GACA,oCAAC,QAAK,MAAK,MAAK,GAAE,YAAS,cACd,YACV,eAAe,iBAAO,YAAY,WAAM,IAAG,sCAC9C,CACF;AAAA,EAEJ;AAEA,SACE,oCAAC,SAAM,KAAI,QACT,oCAAC,SAAM,KAAI,QACT,oCAAC,QAAK,MAAK,MAAK,GAAE,YACf,OAAO,OAAO,eAAe,YAChC,GACA,oCAAC,SAAM,KAAK,GAAG,GAAE,YACf,oCAAC,gBAAa,MAAM,IAAI,OAAM,+BAA8B,GAC5D,oCAAC,QAAK,MAAK,MAAK,IAAI,KAAK,GAAE,YACxB,QACH,CACF,CACF,GAEC,OAAO,aAAa,aAAa,SAAS,EAAE,YAAY,CAAC,IAAI,UAE9D,oCAAC,0BAAuB,OAAc,aAA0B,eAAe,UAAU,qBAAqB,gBAAgB,YAAwB,GAErJ,SACC,oCAAC,SAAM,MAAM,oCAAC,mBAAgB,MAAM,IAAI,GAAI,OAAM,OAAM,QAAQ,qBAC9D,oCAAC,QAAK,MAAK,QAAM,KAAM,CACzB,GAED,QAAQ,OAAO,WAAW,CAAC,SAC1B,oCAAC,SAAM,OAAM,OAAM,QAAQ,qBACzB,oCAAC,QAAK,MAAK,QAAM,QAAQ,MAAM,OAAQ,CACzC,GAGF;AAAA,IAAC;AAAA;AAAA,MACC,aAAa,aAAa,oCAAC,UAAO,MAAM,IAAI,IAAK,oCAAC,mBAAgB,MAAM,IAAI;AAAA,MAC5E,SAAS;AAAA,MACT,UAAU,cAAc,CAAC,WAAW;AAAA,MACpC,SAAS;AAAA;AAAA,IACV;AAAA,EAED,CACF;AAEJ;","names":[]}
@@ -0,0 +1,89 @@
1
+ // src/core/utils/files.ts
2
+ var safeString = (value) => {
3
+ if (value === null || value === void 0) return "";
4
+ if (typeof value === "string") return value;
5
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
6
+ try {
7
+ return JSON.stringify(value);
8
+ } catch {
9
+ return String(value);
10
+ }
11
+ };
12
+ var csvEscape = (field) => {
13
+ const needsQuotes = /[",\n\r]/.test(field);
14
+ const out = field.replace(/"/g, '""');
15
+ return needsQuotes ? `"${out}"` : out;
16
+ };
17
+ var isObjectRow = (r) => r !== null && typeof r === "object" && !Array.isArray(r);
18
+ function unionHeaders(rows) {
19
+ const keySet = /* @__PURE__ */ new Set();
20
+ for (const r of rows) {
21
+ if (isObjectRow(r)) {
22
+ for (const k of Object.keys(r)) keySet.add(k);
23
+ }
24
+ }
25
+ return Array.from(keySet);
26
+ }
27
+ function rowsToCsv(rows) {
28
+ const headers = rows.length > 0 && isObjectRow(rows[0]) ? unionHeaders(rows) : ["value"];
29
+ const csvLines = [];
30
+ csvLines.push(headers.map((h) => csvEscape(h)).join(","));
31
+ for (const row of rows) {
32
+ if (isObjectRow(row)) {
33
+ const obj = row;
34
+ csvLines.push(headers.map((h) => csvEscape(safeString(Object.prototype.hasOwnProperty.call(obj, h) ? obj[h] : ""))).join(","));
35
+ } else {
36
+ csvLines.push(csvEscape(safeString(row)));
37
+ }
38
+ }
39
+ return csvLines.join("\r\n");
40
+ }
41
+ function sectionsToCsv(sections) {
42
+ const blocks = [];
43
+ sections.forEach((section, index) => {
44
+ const lines = [];
45
+ if (index > 0) lines.push("");
46
+ lines.push(csvEscape(section.title));
47
+ if (section.rows.length === 0) {
48
+ lines.push(csvEscape(section.emptyNote || "No records"));
49
+ } else {
50
+ lines.push(rowsToCsv(section.rows));
51
+ }
52
+ blocks.push(lines.join("\r\n"));
53
+ });
54
+ return blocks.join("\r\n");
55
+ }
56
+ var UTF8_BOM = "\uFEFF";
57
+ function timestampSuffix(d = /* @__PURE__ */ new Date()) {
58
+ const pad = (n) => String(n).padStart(2, "0");
59
+ return `${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}-${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;
60
+ }
61
+ function downloadBlob(blob, filename) {
62
+ const url = URL.createObjectURL(blob);
63
+ const a = document.createElement("a");
64
+ a.href = url;
65
+ a.download = filename;
66
+ document.body.appendChild(a);
67
+ a.click();
68
+ document.body.removeChild(a);
69
+ URL.revokeObjectURL(url);
70
+ }
71
+ function downloadArrayAsCsv(rows, options) {
72
+ const blob = new Blob([UTF8_BOM + rowsToCsv(rows)], { type: "text/csv;charset=utf-8;" });
73
+ downloadBlob(blob, options?.filename || `list-export-${timestampSuffix()}.csv`);
74
+ }
75
+ function downloadSectionedCsv(sections, options) {
76
+ const blob = new Blob([UTF8_BOM + sectionsToCsv(sections)], { type: "text/csv;charset=utf-8;" });
77
+ downloadBlob(blob, options?.filename || `list-export-${timestampSuffix()}.csv`);
78
+ }
79
+
80
+ export {
81
+ rowsToCsv,
82
+ sectionsToCsv,
83
+ UTF8_BOM,
84
+ timestampSuffix,
85
+ downloadBlob,
86
+ downloadArrayAsCsv,
87
+ downloadSectionedCsv
88
+ };
89
+ //# sourceMappingURL=chunk-5NTKDOP6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/utils/files.ts"],"sourcesContent":["// Utilities for turning in-memory rows into CSV text and pushing files at the\n// browser. `rowsToCsv` / `sectionsToCsv` are the pure halves — they are reused\n// by the ZIP exports, which embed the same CSV bytes rather than re-deriving\n// them.\n\nconst safeString = (value: unknown): string => {\n if (value === null || value === undefined) return '';\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n // For arrays/objects, serialize as JSON\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n};\n\nconst csvEscape = (field: string): string => {\n const needsQuotes = /[\",\\n\\r]/.test(field);\n const out = field.replace(/\"/g, '\"\"');\n return needsQuotes ? `\"${out}\"` : out;\n};\n\nconst isObjectRow = (r: unknown) => r !== null && typeof r === 'object' && !Array.isArray(r);\n\n/** Union of every row's keys, in first-seen order. */\nfunction unionHeaders(rows: any[]): string[] {\n const keySet = new Set<string>();\n for (const r of rows) {\n if (isObjectRow(r)) {\n for (const k of Object.keys(r as Record<string, unknown>)) keySet.add(k);\n }\n }\n return Array.from(keySet);\n}\n\n/** Renders rows as CSV text (CRLF line endings, no BOM). */\nexport function rowsToCsv(rows: any[]): string {\n const headers = rows.length > 0 && isObjectRow(rows[0]) ? unionHeaders(rows) : ['value'];\n\n const csvLines: string[] = [];\n csvLines.push(headers.map((h) => csvEscape(h)).join(','));\n for (const row of rows) {\n if (isObjectRow(row)) {\n const obj = row as Record<string, unknown>;\n csvLines.push(headers.map((h) => csvEscape(safeString(Object.prototype.hasOwnProperty.call(obj, h) ? obj[h] : ''))).join(','));\n } else {\n csvLines.push(csvEscape(safeString(row)));\n }\n }\n return csvLines.join('\\r\\n');\n}\n\nexport interface CsvSection {\n /** Rendered as a single-cell banner row above the section's header row. */\n title: string;\n rows: any[];\n /** Shown in place of the header/data rows when `rows` is empty. */\n emptyNote?: string;\n}\n\n/**\n * Renders several differently-shaped tables into one CSV file, each preceded by\n * a banner row and separated by a blank line. Spreadsheet apps import ragged\n * rows like this fine; the banner is what lets a reader tell the parts apart.\n */\nexport function sectionsToCsv(sections: CsvSection[]): string {\n const blocks: string[] = [];\n sections.forEach((section, index) => {\n const lines: string[] = [];\n if (index > 0) lines.push('');\n lines.push(csvEscape(section.title));\n if (section.rows.length === 0) {\n lines.push(csvEscape(section.emptyNote || 'No records'));\n } else {\n lines.push(rowsToCsv(section.rows));\n }\n blocks.push(lines.join('\\r\\n'));\n });\n return blocks.join('\\r\\n');\n}\n\nconst UTF8_BOM = ''; // Ensure Excel opens UTF-8 correctly\n\nfunction timestampSuffix(d: Date = new Date()): string {\n const pad = (n: number) => String(n).padStart(2, '0');\n return `${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}-${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;\n}\n\nexport { timestampSuffix };\n\n/** Triggers a browser download for an already-built blob. */\nexport function downloadBlob(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n// Utility: download any array as a CSV file in the browser\n// - rows: array of objects or primitives\n// - options.filename: optional filename; defaults to list-export-YYYYMMDD-HHMMSS.csv\nexport function downloadArrayAsCsv(rows: any[], options?: { filename?: string }): void {\n const blob = new Blob([UTF8_BOM + rowsToCsv(rows)], { type: 'text/csv;charset=utf-8;' });\n downloadBlob(blob, options?.filename || `list-export-${timestampSuffix()}.csv`);\n}\n\n/** Download variant for multi-part CSVs (e.g. grants in part 1, bids in part 2). */\nexport function downloadSectionedCsv(sections: CsvSection[], options?: { filename?: string }): void {\n const blob = new Blob([UTF8_BOM + sectionsToCsv(sections)], { type: 'text/csv;charset=utf-8;' });\n downloadBlob(blob, options?.filename || `list-export-${timestampSuffix()}.csv`);\n}\n\nexport { UTF8_BOM };\n"],"mappings":"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","names":[]}
@@ -0,0 +1,18 @@
1
+ // src/mantine/blocks/action/actionTypes/carbon/harvest/types.ts
2
+ function parseHarvestConfigInputs(json) {
3
+ try {
4
+ const parsed = typeof json === "string" ? JSON.parse(json) : json;
5
+ return { batchesRef: parsed?.batchesRef || "" };
6
+ } catch {
7
+ return { batchesRef: "" };
8
+ }
9
+ }
10
+ function serializeHarvestConfigInputs(inputs) {
11
+ return JSON.stringify(inputs);
12
+ }
13
+
14
+ export {
15
+ parseHarvestConfigInputs,
16
+ serializeHarvestConfigInputs
17
+ };
18
+ //# sourceMappingURL=chunk-5O2SFRGU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/carbon/harvest/types.ts"],"sourcesContent":["export interface HarvestConfigInputs {\n /** Reference (or literal JSON) for the harvestable batches to act on. */\n batchesRef?: string;\n}\n\nexport function parseHarvestConfigInputs(json: string): HarvestConfigInputs {\n try {\n const parsed = typeof json === 'string' ? JSON.parse(json) : json;\n return { batchesRef: parsed?.batchesRef || '' };\n } catch {\n return { batchesRef: '' };\n }\n}\n\nexport function serializeHarvestConfigInputs(inputs: HarvestConfigInputs): string {\n return JSON.stringify(inputs);\n}\n"],"mappings":";AAKO,SAAS,yBAAyB,MAAmC;AAC1E,MAAI;AACF,UAAM,SAAS,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI;AAC7D,WAAO,EAAE,YAAY,QAAQ,cAAc,GAAG;AAAA,EAChD,QAAQ;AACN,WAAO,EAAE,YAAY,GAAG;AAAA,EAC1B;AACF;AAEO,SAAS,6BAA6B,QAAqC;AAChF,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
@@ -0,0 +1,55 @@
1
+ // src/mantine/blocks/action/actionTypes/domainCardPreview/types.ts
2
+ function parseDomainCardPreviewInputs(json) {
3
+ try {
4
+ const parsed = typeof json === "string" ? JSON.parse(json) : json;
5
+ return {
6
+ domainCardData: parsed?.domainCardData || "",
7
+ ...parsed
8
+ };
9
+ } catch {
10
+ return { domainCardData: "" };
11
+ }
12
+ }
13
+ function serializeDomainCardPreviewInputs(inputs) {
14
+ return JSON.stringify(inputs);
15
+ }
16
+ function buildPreviewFromInputs(inputs) {
17
+ const name = inputs.domainName;
18
+ if (!name) return null;
19
+ return {
20
+ name,
21
+ summary: inputs.tagline || void 0,
22
+ description: inputs.description || void 0,
23
+ keywords: inputs.keyFeatures || void 0,
24
+ logo_url: inputs.logo ? { url: inputs.logo } : void 0,
25
+ contact: {
26
+ website: inputs.website || void 0,
27
+ ...inputs.socialMedia ? { socialLinks: Object.values(inputs.socialMedia).filter(Boolean) } : {}
28
+ }
29
+ };
30
+ }
31
+ function buildCardDataFromInputs(inputs) {
32
+ const name = inputs.domainName;
33
+ if (!name) return null;
34
+ return {
35
+ credentialSubject: {
36
+ name,
37
+ description: inputs.description || "",
38
+ type: ["schema:DAO"]
39
+ },
40
+ validFrom: (/* @__PURE__ */ new Date()).toISOString(),
41
+ validUntil: (() => {
42
+ const d = /* @__PURE__ */ new Date();
43
+ d.setFullYear(d.getFullYear() + 5);
44
+ return d.toISOString();
45
+ })()
46
+ };
47
+ }
48
+
49
+ export {
50
+ parseDomainCardPreviewInputs,
51
+ serializeDomainCardPreviewInputs,
52
+ buildPreviewFromInputs,
53
+ buildCardDataFromInputs
54
+ };
55
+ //# sourceMappingURL=chunk-632JLECF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/domainCardPreview/types.ts"],"sourcesContent":["import type { DomainCardData } from '@/mantine/context/BlocknoteContext';\n\nexport interface DomainCardPreviewInputs {\n domainCardData: string;\n domainName?: string;\n tagline?: string;\n description?: string;\n mission?: string;\n website?: string;\n logo?: string;\n keyFeatures?: string[];\n socialMedia?: Record<string, string>;\n previewStatus?: string;\n [key: string]: unknown;\n}\n\nexport function parseDomainCardPreviewInputs(json: string): DomainCardPreviewInputs {\n try {\n const parsed = typeof json === 'string' ? JSON.parse(json) : json;\n return {\n domainCardData: parsed?.domainCardData || '',\n ...parsed,\n };\n } catch {\n return { domainCardData: '' };\n }\n}\n\nexport function serializeDomainCardPreviewInputs(inputs: DomainCardPreviewInputs): string {\n return JSON.stringify(inputs);\n}\n\n/**\n * Build a DomainCardData preview object from oracle-written inputs.\n * Returns null if inputs don't contain meaningful data.\n */\nexport function buildPreviewFromInputs(inputs: DomainCardPreviewInputs): DomainCardData | null {\n const name = inputs.domainName;\n if (!name) return null;\n\n return {\n name,\n summary: inputs.tagline || undefined,\n description: inputs.description || undefined,\n keywords: inputs.keyFeatures || undefined,\n logo_url: inputs.logo ? { url: inputs.logo } : undefined,\n contact: {\n website: inputs.website || undefined,\n ...(inputs.socialMedia ? { socialLinks: Object.values(inputs.socialMedia).filter(Boolean) } : {}),\n },\n };\n}\n\n/**\n * Build a domainCardData credential envelope from oracle-written inputs.\n * Returns null if inputs don't contain a name.\n */\nexport function buildCardDataFromInputs(inputs: DomainCardPreviewInputs): Record<string, unknown> | null {\n const name = inputs.domainName;\n if (!name) return null;\n\n return {\n credentialSubject: {\n name,\n description: inputs.description || '',\n type: ['schema:DAO'],\n },\n validFrom: new Date().toISOString(),\n validUntil: (() => {\n const d = new Date();\n d.setFullYear(d.getFullYear() + 5);\n return d.toISOString();\n })(),\n };\n}\n"],"mappings":";AAgBO,SAAS,6BAA6B,MAAuC;AAClF,MAAI;AACF,UAAM,SAAS,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI;AAC7D,WAAO;AAAA,MACL,gBAAgB,QAAQ,kBAAkB;AAAA,MAC1C,GAAG;AAAA,IACL;AAAA,EACF,QAAQ;AACN,WAAO,EAAE,gBAAgB,GAAG;AAAA,EAC9B;AACF;AAEO,SAAS,iCAAiC,QAAyC;AACxF,SAAO,KAAK,UAAU,MAAM;AAC9B;AAMO,SAAS,uBAAuB,QAAwD;AAC7F,QAAM,OAAO,OAAO;AACpB,MAAI,CAAC,KAAM,QAAO;AAElB,SAAO;AAAA,IACL;AAAA,IACA,SAAS,OAAO,WAAW;AAAA,IAC3B,aAAa,OAAO,eAAe;AAAA,IACnC,UAAU,OAAO,eAAe;AAAA,IAChC,UAAU,OAAO,OAAO,EAAE,KAAK,OAAO,KAAK,IAAI;AAAA,IAC/C,SAAS;AAAA,MACP,SAAS,OAAO,WAAW;AAAA,MAC3B,GAAI,OAAO,cAAc,EAAE,aAAa,OAAO,OAAO,OAAO,WAAW,EAAE,OAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IACjG;AAAA,EACF;AACF;AAMO,SAAS,wBAAwB,QAAiE;AACvG,QAAM,OAAO,OAAO;AACpB,MAAI,CAAC,KAAM,QAAO;AAElB,SAAO;AAAA,IACL,mBAAmB;AAAA,MACjB;AAAA,MACA,aAAa,OAAO,eAAe;AAAA,MACnC,MAAM,CAAC,YAAY;AAAA,IACrB;AAAA,IACA,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,aAAa,MAAM;AACjB,YAAM,IAAI,oBAAI,KAAK;AACnB,QAAE,YAAY,EAAE,YAAY,IAAI,CAAC;AACjC,aAAO,EAAE,YAAY;AAAA,IACvB,GAAG;AAAA,EACL;AACF;","names":[]}
@@ -0,0 +1,95 @@
1
+ import {
2
+ useRunRuntimeReader
3
+ } from "./chunk-FFYZXA75.js";
4
+ import {
5
+ resolveReferences
6
+ } from "./chunk-JVROGQ7Q.js";
7
+ import {
8
+ useBlocknoteHandlers
9
+ } from "./chunk-4DGCCXD6.js";
10
+
11
+ // src/mantine/blocks/action/actionTypes/governance/_shared/useGovernanceCoreAddress.ts
12
+ import { useEffect, useMemo, useRef, useState } from "react";
13
+ function parseCoreAddressFromLinkedEntityId(id) {
14
+ if (!id) return "";
15
+ const hashIdx = id.indexOf("#");
16
+ return hashIdx >= 0 ? id.slice(hashIdx + 1).trim() : "";
17
+ }
18
+ function useGovernanceCoreAddress(params) {
19
+ const { inputCoreAddress, inputs, editor, block } = params;
20
+ const handlers = useBlocknoteHandlers();
21
+ const editorDocument = editor?.document || [];
22
+ const runtimeReader = useRunRuntimeReader(editor);
23
+ const resolveOpts = useMemo(() => ({ yRuntime: runtimeReader }), [runtimeReader]);
24
+ const configured = resolveReferences(inputCoreAddress, editorDocument, resolveOpts).trim();
25
+ const [autoResolved, setAutoResolved] = useState("");
26
+ const [resolving, setResolving] = useState(false);
27
+ const [resolutionError, setResolutionError] = useState(null);
28
+ const attemptedRef = useRef(false);
29
+ const persistedRef = useRef(false);
30
+ useEffect(() => {
31
+ if (configured) return;
32
+ if (attemptedRef.current) return;
33
+ if (!handlers?.getEntityDid || !handlers?.getEntity) return;
34
+ attemptedRef.current = true;
35
+ let cancelled = false;
36
+ const resolve = async () => {
37
+ setResolving(true);
38
+ setResolutionError(null);
39
+ try {
40
+ const entityDid = handlers.getEntityDid?.();
41
+ if (!entityDid) {
42
+ if (!cancelled) setResolutionError("No current entity to resolve a governance group from.");
43
+ return;
44
+ }
45
+ const entity = await handlers.getEntity(entityDid);
46
+ const linkedGroup = (entity?.linkedEntity || []).find((e) => e?.type === "group" && e?.relationship === "governs");
47
+ const resolved = parseCoreAddressFromLinkedEntityId(linkedGroup?.id || "");
48
+ if (cancelled) return;
49
+ if (!resolved) {
50
+ setResolutionError("This domain has no linked POD.");
51
+ return;
52
+ }
53
+ setAutoResolved(resolved);
54
+ } catch (err) {
55
+ if (!cancelled) {
56
+ setResolutionError(err instanceof Error ? err.message : "Failed to resolve governance group");
57
+ attemptedRef.current = false;
58
+ }
59
+ } finally {
60
+ if (!cancelled) setResolving(false);
61
+ }
62
+ };
63
+ void resolve();
64
+ return () => {
65
+ cancelled = true;
66
+ };
67
+ }, [configured, handlers]);
68
+ useEffect(() => {
69
+ if (configured) return;
70
+ if (!autoResolved) return;
71
+ if (!editor || !block) return;
72
+ if (persistedRef.current) return;
73
+ try {
74
+ const raw = inputs ? JSON.parse(inputs) : {};
75
+ if (raw.coreAddress === autoResolved) {
76
+ persistedRef.current = true;
77
+ return;
78
+ }
79
+ raw.coreAddress = autoResolved;
80
+ editor.updateBlock(block, { props: { ...block.props, inputs: JSON.stringify(raw) } });
81
+ persistedRef.current = true;
82
+ } catch {
83
+ }
84
+ }, [configured, autoResolved, inputs, editor, block]);
85
+ return {
86
+ coreAddress: configured || autoResolved,
87
+ resolving,
88
+ resolutionError
89
+ };
90
+ }
91
+
92
+ export {
93
+ useGovernanceCoreAddress
94
+ };
95
+ //# sourceMappingURL=chunk-676HDB7K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mantine/blocks/action/actionTypes/governance/_shared/useGovernanceCoreAddress.ts"],"sourcesContent":["import { useRunRuntimeReader } from '@/mantine/hooks/useRunRuntimeReader';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useBlocknoteHandlers } from '@/mantine/context/BlocknoteContext';\nimport { resolveReferences } from '@/mantine/utils/referenceResolver';\n\n/**\n * Pull the cw-core address out of a governing-group `linkedEntity` id.\n *\n * Governance-group linked entities are written as `{entityDid}#{coreAddress}`\n * (see `buildGovernanceGroupLinkedEntities`), so the DAO core address is\n * everything after the first `#`.\n */\nexport function parseCoreAddressFromLinkedEntityId(id: string): string {\n if (!id) return '';\n const hashIdx = id.indexOf('#');\n return hashIdx >= 0 ? id.slice(hashIdx + 1).trim() : '';\n}\n\nexport interface ResolvedGovernanceCoreAddress {\n /** Effective DAO core address — config value, or auto-detected from the entity. */\n coreAddress: string;\n /** True while the current entity's governing group is being looked up. */\n resolving: boolean;\n /** Set when auto-detection ran but found no governing group (or no entity). */\n resolutionError: string | null;\n}\n\n/**\n * Resolve the DAO core address a `qi/governance.*` action targets — FLOW MODE ONLY.\n *\n * This hook is called by the flow detail components, never by the template\n * config components: template mode never auto-resolves (the template is authored\n * in a different entity than the one the flow runs in).\n *\n * Precedence:\n * 1. `inputCoreAddress` from saved inputs (after reference resolution). If the\n * designer pinned a DAO group in config — OR a previous run already\n * persisted the detected address (see below) — that value is used directly.\n * 2. Auto-detect from the current entity: read its `governs` linked entity\n * (`type === 'group'`) and pull the core address out of the id\n * (`{entityDid}#{coreAddress}`).\n *\n * Step 2's result is persisted into THIS flow's `block.props.inputs.coreAddress`\n * so it survives reload and downstream runs skip re-detection. The flow runs in\n * its own doc/room, separate from the template, so writing the running entity's\n * address here never leaks back into the template.\n */\nexport function useGovernanceCoreAddress(params: {\n /** Raw `coreAddress` from parsed template inputs (may be a `{{ref}}`). */\n inputCoreAddress: string;\n /** The block's serialized `inputs` JSON (for persistence). */\n inputs: string;\n editor: any;\n block: any;\n}): ResolvedGovernanceCoreAddress {\n const { inputCoreAddress, inputs, editor, block } = params;\n const handlers = useBlocknoteHandlers();\n\n const editorDocument = editor?.document || [];\n const runtimeReader = useRunRuntimeReader(editor);\n const resolveOpts = useMemo(() => ({ yRuntime: runtimeReader }), [runtimeReader]);\n const configured = resolveReferences(inputCoreAddress, editorDocument, resolveOpts).trim();\n\n const [autoResolved, setAutoResolved] = useState('');\n const [resolving, setResolving] = useState(false);\n const [resolutionError, setResolutionError] = useState<string | null>(null);\n const attemptedRef = useRef(false);\n const persistedRef = useRef(false);\n\n // ── Auto-detect from the current entity's governing group ──────────────────\n useEffect(() => {\n if (configured) return; // already resolved (config, or a prior run's persist)\n if (attemptedRef.current) return; // one-shot per mount (re-armed on transient failure)\n if (!handlers?.getEntityDid || !handlers?.getEntity) return; // host can't resolve\n\n attemptedRef.current = true;\n let cancelled = false;\n\n const resolve = async () => {\n setResolving(true);\n setResolutionError(null);\n try {\n const entityDid = handlers.getEntityDid?.();\n if (!entityDid) {\n if (!cancelled) setResolutionError('No current entity to resolve a governance group from.');\n return;\n }\n const entity = await handlers.getEntity(entityDid);\n const linkedGroup = (entity?.linkedEntity || []).find((e: any) => e?.type === 'group' && e?.relationship === 'governs');\n const resolved = parseCoreAddressFromLinkedEntityId(linkedGroup?.id || '');\n if (cancelled) return;\n if (!resolved) {\n setResolutionError('This domain has no linked POD.');\n return;\n }\n setAutoResolved(resolved);\n } catch (err) {\n if (!cancelled) {\n setResolutionError(err instanceof Error ? err.message : 'Failed to resolve governance group');\n attemptedRef.current = false; // allow a retry on transient failure\n }\n } finally {\n if (!cancelled) setResolving(false);\n }\n };\n\n void resolve();\n return () => {\n cancelled = true;\n };\n }, [configured, handlers]);\n\n // ── Persist the detected address into this flow's saved inputs ─────────────\n useEffect(() => {\n if (configured) return; // never overwrite an already-resolved value\n if (!autoResolved) return;\n if (!editor || !block) return;\n if (persistedRef.current) return;\n try {\n const raw = inputs ? JSON.parse(inputs) : {};\n if (raw.coreAddress === autoResolved) {\n persistedRef.current = true;\n return;\n }\n raw.coreAddress = autoResolved;\n editor.updateBlock(block, { props: { ...block.props, inputs: JSON.stringify(raw) } });\n persistedRef.current = true;\n } catch {\n // Non-fatal: the detected value still drives this session even if the\n // write fails; it will be re-detected next mount.\n }\n }, [configured, autoResolved, inputs, editor, block]);\n\n return {\n coreAddress: configured || autoResolved,\n resolving,\n resolutionError,\n };\n}\n"],"mappings":";;;;;;;;;;;AACA,SAAS,WAAW,SAAS,QAAQ,gBAAgB;AAW9C,SAAS,mCAAmC,IAAoB;AACrE,MAAI,CAAC,GAAI,QAAO;AAChB,QAAM,UAAU,GAAG,QAAQ,GAAG;AAC9B,SAAO,WAAW,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,KAAK,IAAI;AACvD;AA+BO,SAAS,yBAAyB,QAOP;AAChC,QAAM,EAAE,kBAAkB,QAAQ,QAAQ,MAAM,IAAI;AACpD,QAAM,WAAW,qBAAqB;AAEtC,QAAM,iBAAiB,QAAQ,YAAY,CAAC;AAC5C,QAAM,gBAAgB,oBAAoB,MAAM;AAChD,QAAM,cAAc,QAAQ,OAAO,EAAE,UAAU,cAAc,IAAI,CAAC,aAAa,CAAC;AAChF,QAAM,aAAa,kBAAkB,kBAAkB,gBAAgB,WAAW,EAAE,KAAK;AAEzF,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,EAAE;AACnD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAwB,IAAI;AAC1E,QAAM,eAAe,OAAO,KAAK;AACjC,QAAM,eAAe,OAAO,KAAK;AAGjC,YAAU,MAAM;AACd,QAAI,WAAY;AAChB,QAAI,aAAa,QAAS;AAC1B,QAAI,CAAC,UAAU,gBAAgB,CAAC,UAAU,UAAW;AAErD,iBAAa,UAAU;AACvB,QAAI,YAAY;AAEhB,UAAM,UAAU,YAAY;AAC1B,mBAAa,IAAI;AACjB,yBAAmB,IAAI;AACvB,UAAI;AACF,cAAM,YAAY,SAAS,eAAe;AAC1C,YAAI,CAAC,WAAW;AACd,cAAI,CAAC,UAAW,oBAAmB,uDAAuD;AAC1F;AAAA,QACF;AACA,cAAM,SAAS,MAAM,SAAS,UAAU,SAAS;AACjD,cAAM,eAAe,QAAQ,gBAAgB,CAAC,GAAG,KAAK,CAAC,MAAW,GAAG,SAAS,WAAW,GAAG,iBAAiB,SAAS;AACtH,cAAM,WAAW,mCAAmC,aAAa,MAAM,EAAE;AACzE,YAAI,UAAW;AACf,YAAI,CAAC,UAAU;AACb,6BAAmB,gCAAgC;AACnD;AAAA,QACF;AACA,wBAAgB,QAAQ;AAAA,MAC1B,SAAS,KAAK;AACZ,YAAI,CAAC,WAAW;AACd,6BAAmB,eAAe,QAAQ,IAAI,UAAU,oCAAoC;AAC5F,uBAAa,UAAU;AAAA,QACzB;AAAA,MACF,UAAE;AACA,YAAI,CAAC,UAAW,cAAa,KAAK;AAAA,MACpC;AAAA,IACF;AAEA,SAAK,QAAQ;AACb,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,YAAY,QAAQ,CAAC;AAGzB,YAAU,MAAM;AACd,QAAI,WAAY;AAChB,QAAI,CAAC,aAAc;AACnB,QAAI,CAAC,UAAU,CAAC,MAAO;AACvB,QAAI,aAAa,QAAS;AAC1B,QAAI;AACF,YAAM,MAAM,SAAS,KAAK,MAAM,MAAM,IAAI,CAAC;AAC3C,UAAI,IAAI,gBAAgB,cAAc;AACpC,qBAAa,UAAU;AACvB;AAAA,MACF;AACA,UAAI,cAAc;AAClB,aAAO,YAAY,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,QAAQ,KAAK,UAAU,GAAG,EAAE,EAAE,CAAC;AACpF,mBAAa,UAAU;AAAA,IACzB,QAAQ;AAAA,IAGR;AAAA,EACF,GAAG,CAAC,YAAY,cAAc,QAAQ,QAAQ,KAAK,CAAC;AAEpD,SAAO;AAAA,IACL,aAAa,cAAc;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AACF;","names":[]}