@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.
- package/dist/BidConfig-YLGSEIOS.js +154 -0
- package/dist/BidConfig-YLGSEIOS.js.map +1 -0
- package/dist/BidFlowDetail-TJCJBJZZ.js +365 -0
- package/dist/BidFlowDetail-TJCJBJZZ.js.map +1 -0
- package/dist/CalendarEventCreateConfig-J2LU6LJO.js +155 -0
- package/dist/CalendarEventCreateConfig-J2LU6LJO.js.map +1 -0
- package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js +174 -0
- package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js.map +1 -0
- package/dist/CalendarEventListConfig-GQNNF4ZB.js +116 -0
- package/dist/CalendarEventListConfig-GQNNF4ZB.js.map +1 -0
- package/dist/CalendarEventListFlowDetail-SSRTOXIX.js +58 -0
- package/dist/CalendarEventListFlowDetail-SSRTOXIX.js.map +1 -0
- package/dist/CalendarEventUpdateConfig-KACZA6GH.js +133 -0
- package/dist/CalendarEventUpdateConfig-KACZA6GH.js.map +1 -0
- package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js +155 -0
- package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js.map +1 -0
- package/dist/ClaimConfig-3HKPGK55.js +200 -0
- package/dist/ClaimConfig-3HKPGK55.js.map +1 -0
- package/dist/ClaimFlowDetail-UVEQMEI5.js +641 -0
- package/dist/ClaimFlowDetail-UVEQMEI5.js.map +1 -0
- package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js +149 -0
- package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js.map +1 -0
- package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js +647 -0
- package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js.map +1 -0
- package/dist/CollectionUsersConfig-RI2X3YY2.js +271 -0
- package/dist/CollectionUsersConfig-RI2X3YY2.js.map +1 -0
- package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js +1276 -0
- package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js.map +1 -0
- package/dist/CredentialStoreConfig-G66AQDGZ.js +75 -0
- package/dist/CredentialStoreConfig-G66AQDGZ.js.map +1 -0
- package/dist/CredentialStoreFlowDetail-FL7QAM3S.js +99 -0
- package/dist/CredentialStoreFlowDetail-FL7QAM3S.js.map +1 -0
- package/dist/DesignPodConfig-LJ7H2CZ6.js +8 -0
- package/dist/DesignPodConfig-LJ7H2CZ6.js.map +1 -0
- package/dist/DesignPodFlowDetail-JHJWGNVY.js +309 -0
- package/dist/DesignPodFlowDetail-JHJWGNVY.js.map +1 -0
- package/dist/DomainCardPreviewConfig-Q3X5M4WF.js +37 -0
- package/dist/DomainCardPreviewConfig-Q3X5M4WF.js.map +1 -0
- package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js +131 -0
- package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js.map +1 -0
- package/dist/DomainIndexerLookupConfig-N4VONQUY.js +41 -0
- package/dist/DomainIndexerLookupConfig-N4VONQUY.js.map +1 -0
- package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js +70 -0
- package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js.map +1 -0
- package/dist/DomainSignConfig-XFIXROVK.js +47 -0
- package/dist/DomainSignConfig-XFIXROVK.js.map +1 -0
- package/dist/DomainSignFlowDetail-BXZ6JBPR.js +206 -0
- package/dist/DomainSignFlowDetail-BXZ6JBPR.js.map +1 -0
- package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js +101 -0
- package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js.map +1 -0
- package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js +147 -0
- package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js.map +1 -0
- package/dist/EmailSendConfig-YEGZ5Q77.js +215 -0
- package/dist/EmailSendConfig-YEGZ5Q77.js.map +1 -0
- package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js +150 -0
- package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js.map +1 -0
- package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js +120 -0
- package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js.map +1 -0
- package/dist/EntitySingleSelectionConfig-DL57KNKM.js +30 -0
- package/dist/EntitySingleSelectionConfig-DL57KNKM.js.map +1 -0
- package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js +118 -0
- package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js.map +1 -0
- package/dist/EntityTransferConfig-JVZ3H35B.js +62 -0
- package/dist/EntityTransferConfig-JVZ3H35B.js.map +1 -0
- package/dist/EntityTransferFlowDetail-XEXM34XB.js +132 -0
- package/dist/EntityTransferFlowDetail-XEXM34XB.js.map +1 -0
- package/dist/EvalEngineConfig-CHC4IRN3.js +464 -0
- package/dist/EvalEngineConfig-CHC4IRN3.js.map +1 -0
- package/dist/EvalEngineFlowDetail-PUFRNO4U.js +4291 -0
- package/dist/EvalEngineFlowDetail-PUFRNO4U.js.map +1 -0
- package/dist/EvaluateBidConfig-OE4CM43G.js +151 -0
- package/dist/EvaluateBidConfig-OE4CM43G.js.map +1 -0
- package/dist/EvaluateBidFlowDetail-2S2N4YTW.js +564 -0
- package/dist/EvaluateBidFlowDetail-2S2N4YTW.js.map +1 -0
- package/dist/EvaluateClaimConfig-3D4F5LHU.js +297 -0
- package/dist/EvaluateClaimConfig-3D4F5LHU.js.map +1 -0
- package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js +2237 -0
- package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js.map +1 -0
- package/dist/FormSubmitConfig-UFZYMLUN.js +59 -0
- package/dist/FormSubmitConfig-UFZYMLUN.js.map +1 -0
- package/dist/FormSubmitFlowDetail-IAHDJS6P.js +169 -0
- package/dist/FormSubmitFlowDetail-IAHDJS6P.js.map +1 -0
- package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js +166 -0
- package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js.map +1 -0
- package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js +88 -0
- package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js.map +1 -0
- package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js +88 -0
- package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js.map +1 -0
- package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js +83 -0
- package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js.map +1 -0
- package/dist/GovernanceConfigConfig-V3WM4WBP.js +30 -0
- package/dist/GovernanceConfigConfig-V3WM4WBP.js.map +1 -0
- package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js +267 -0
- package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js.map +1 -0
- package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js +113 -0
- package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js.map +1 -0
- package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js +144 -0
- package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js.map +1 -0
- package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js +72 -0
- package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js.map +1 -0
- package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js +104 -0
- package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js.map +1 -0
- package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js +68 -0
- package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js.map +1 -0
- package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js +78 -0
- package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js.map +1 -0
- package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js +98 -0
- package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js.map +1 -0
- package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js +94 -0
- package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js.map +1 -0
- package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js +96 -0
- package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js.map +1 -0
- package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js +68 -0
- package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js.map +1 -0
- package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js +93 -0
- package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js.map +1 -0
- package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js +84 -0
- package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js.map +1 -0
- package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js +104 -0
- package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js.map +1 -0
- package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js +42 -0
- package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js.map +1 -0
- package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js +240 -0
- package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js.map +1 -0
- package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js +69 -0
- package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js.map +1 -0
- package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js +71 -0
- package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js.map +1 -0
- package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js +130 -0
- package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js.map +1 -0
- package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js +42 -0
- package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js.map +1 -0
- package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js +165 -0
- package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js.map +1 -0
- package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js +123 -0
- package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js.map +1 -0
- package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js +84 -0
- package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js.map +1 -0
- package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js +111 -0
- package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js.map +1 -0
- package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js +66 -0
- package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js.map +1 -0
- package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js +133 -0
- package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js.map +1 -0
- package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js +42 -0
- package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js.map +1 -0
- package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js +182 -0
- package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js.map +1 -0
- package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js +155 -0
- package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js.map +1 -0
- package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js +56 -0
- package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js.map +1 -0
- package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js +117 -0
- package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js.map +1 -0
- package/dist/HarvestConfig-AIGOGBFR.js +56 -0
- package/dist/HarvestConfig-AIGOGBFR.js.map +1 -0
- package/dist/HarvestFlowDetail-X3RUH3X3.js +131 -0
- package/dist/HarvestFlowDetail-X3RUH3X3.js.map +1 -0
- package/dist/HttpRequestConfig-OQEJIIJY.js +194 -0
- package/dist/HttpRequestConfig-OQEJIIJY.js.map +1 -0
- package/dist/HttpRequestFlowDetail-JVLV533Z.js +116 -0
- package/dist/HttpRequestFlowDetail-JVLV533Z.js.map +1 -0
- package/dist/IdentityCreateConfig-ZBUOJ6AL.js +94 -0
- package/dist/IdentityCreateConfig-ZBUOJ6AL.js.map +1 -0
- package/dist/IdentityCreateFlowDetail-WGKO43IH.js +83 -0
- package/dist/IdentityCreateFlowDetail-WGKO43IH.js.map +1 -0
- package/dist/IidCreateConfig-RRV2DYXI.js +75 -0
- package/dist/IidCreateConfig-RRV2DYXI.js.map +1 -0
- package/dist/IidCreateFlowDetail-6M32S6XS.js +57 -0
- package/dist/IidCreateFlowDetail-6M32S6XS.js.map +1 -0
- package/dist/KycVerifyConfig-VCG65K5K.js +65 -0
- package/dist/KycVerifyConfig-VCG65K5K.js.map +1 -0
- package/dist/KycVerifyFlowDetail-EWOMXSD3.js +421 -0
- package/dist/KycVerifyFlowDetail-EWOMXSD3.js.map +1 -0
- package/dist/ListDomainFlowsConfig-3JZEPTOJ.js +37 -0
- package/dist/ListDomainFlowsConfig-3JZEPTOJ.js.map +1 -0
- package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js +257 -0
- package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js.map +1 -0
- package/dist/LoadBatchesConfig-IMODIWRT.js +38 -0
- package/dist/LoadBatchesConfig-IMODIWRT.js.map +1 -0
- package/dist/LoadBatchesFlowDetail-GB24T76O.js +101 -0
- package/dist/LoadBatchesFlowDetail-GB24T76O.js.map +1 -0
- package/dist/MatrixDmConfig-NBII27CS.js +120 -0
- package/dist/MatrixDmConfig-NBII27CS.js.map +1 -0
- package/dist/MatrixRegisterConfig-N2U4FBYF.js +62 -0
- package/dist/MatrixRegisterConfig-N2U4FBYF.js.map +1 -0
- package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js +86 -0
- package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js.map +1 -0
- package/dist/MemberMultiSelectConfig-E7WUB2WD.js +30 -0
- package/dist/MemberMultiSelectConfig-E7WUB2WD.js.map +1 -0
- package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js +392 -0
- package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js.map +1 -0
- package/dist/OracleConfig-R7TDTTKN.js +56 -0
- package/dist/OracleConfig-R7TDTTKN.js.map +1 -0
- package/dist/OracleConfigureOracleConfig-QFF74X3N.js +198 -0
- package/dist/OracleConfigureOracleConfig-QFF74X3N.js.map +1 -0
- package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js +255 -0
- package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js.map +1 -0
- package/dist/OracleContractConfig-PHY5L7W2.js +38 -0
- package/dist/OracleContractConfig-PHY5L7W2.js.map +1 -0
- package/dist/OracleContractFlowDetail-M3PM4AU4.js +78 -0
- package/dist/OracleContractFlowDetail-M3PM4AU4.js.map +1 -0
- package/dist/OracleDeployConfig-QBG76ATZ.js +10 -0
- package/dist/OracleDeployConfig-QBG76ATZ.js.map +1 -0
- package/dist/OracleDeployFlowDetail-WKTMD2AD.js +231 -0
- package/dist/OracleDeployFlowDetail-WKTMD2AD.js.map +1 -0
- package/dist/OracleDeploySetupConfig-75XPGFJQ.js +10 -0
- package/dist/OracleDeploySetupConfig-75XPGFJQ.js.map +1 -0
- package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js +165 -0
- package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js.map +1 -0
- package/dist/OracleDeployStartConfig-NA6GZ4VQ.js +10 -0
- package/dist/OracleDeployStartConfig-NA6GZ4VQ.js.map +1 -0
- package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js +89 -0
- package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js.map +1 -0
- package/dist/OracleFlowDetail-5JCJK3GH.js +76 -0
- package/dist/OracleFlowDetail-5JCJK3GH.js.map +1 -0
- package/dist/OraclePromptConfig-YBRESISH.js +39 -0
- package/dist/OraclePromptConfig-YBRESISH.js.map +1 -0
- package/dist/OraclePromptFlowDetail-O3XNK7HY.js +112 -0
- package/dist/OraclePromptFlowDetail-O3XNK7HY.js.map +1 -0
- package/dist/OracleStoreConfigConfig-TUZWTJMA.js +134 -0
- package/dist/OracleStoreConfigConfig-TUZWTJMA.js.map +1 -0
- package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js +99 -0
- package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js.map +1 -0
- package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js +198 -0
- package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js.map +1 -0
- package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js +220 -0
- package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js.map +1 -0
- package/dist/OracleStoreSecretsConfig-PQMF7LFT.js +191 -0
- package/dist/OracleStoreSecretsConfig-PQMF7LFT.js.map +1 -0
- package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js +197 -0
- package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js.map +1 -0
- package/dist/ProposalCreateConfig-U5IHZNT7.js +161 -0
- package/dist/ProposalCreateConfig-U5IHZNT7.js.map +1 -0
- package/dist/ProposalCreateFlowDetail-4VZZPAWH.js +235 -0
- package/dist/ProposalCreateFlowDetail-4VZZPAWH.js.map +1 -0
- package/dist/ProposalVoteConfig-MH4MU7SL.js +150 -0
- package/dist/ProposalVoteConfig-MH4MU7SL.js.map +1 -0
- package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js +280 -0
- package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js.map +1 -0
- package/dist/ProtocolSelectConfig-S5U3P6K7.js +48 -0
- package/dist/ProtocolSelectConfig-S5U3P6K7.js.map +1 -0
- package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js +116 -0
- package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js.map +1 -0
- package/dist/RetireConfig-MV37WWZ6.js +59 -0
- package/dist/RetireConfig-MV37WWZ6.js.map +1 -0
- package/dist/RetireFlowDetail-VZ5O4SXI.js +147 -0
- package/dist/RetireFlowDetail-VZ5O4SXI.js.map +1 -0
- package/dist/SandboxProvisionConfig-ZGG4IRHM.js +46 -0
- package/dist/SandboxProvisionConfig-ZGG4IRHM.js.map +1 -0
- package/dist/SandboxProvisionFlowDetail-RUY64INV.js +79 -0
- package/dist/SandboxProvisionFlowDetail-RUY64INV.js.map +1 -0
- package/dist/WalletFundConfig-CMM3EP3B.js +117 -0
- package/dist/WalletFundConfig-CMM3EP3B.js.map +1 -0
- package/dist/WalletFundFlowDetail-TXWCZA4K.js +279 -0
- package/dist/WalletFundFlowDetail-TXWCZA4K.js.map +1 -0
- package/dist/WalletGenerateAndFundConfig-364RSEND.js +10 -0
- package/dist/WalletGenerateAndFundConfig-364RSEND.js.map +1 -0
- package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js +54 -0
- package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js.map +1 -0
- package/dist/WalletGenerateConfig-YYLCS65G.js +10 -0
- package/dist/WalletGenerateConfig-YYLCS65G.js.map +1 -0
- package/dist/WalletGenerateFlowDetail-CQCNDGJA.js +53 -0
- package/dist/WalletGenerateFlowDetail-CQCNDGJA.js.map +1 -0
- package/dist/XeroContactCreateConfig-OWG5PA3B.js +102 -0
- package/dist/XeroContactCreateConfig-OWG5PA3B.js.map +1 -0
- package/dist/XeroContactCreateFlowDetail-6MAINCF6.js +127 -0
- package/dist/XeroContactCreateFlowDetail-6MAINCF6.js.map +1 -0
- package/dist/XeroInvoiceCreateConfig-O74RUSZM.js +403 -0
- package/dist/XeroInvoiceCreateConfig-O74RUSZM.js.map +1 -0
- package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js +631 -0
- package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js.map +1 -0
- package/dist/XeroInvoiceListConfig-UR3GONBJ.js +113 -0
- package/dist/XeroInvoiceListConfig-UR3GONBJ.js.map +1 -0
- package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js +58 -0
- package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js.map +1 -0
- package/dist/XeroPaymentCreateConfig-RPMAIK6E.js +116 -0
- package/dist/XeroPaymentCreateConfig-RPMAIK6E.js.map +1 -0
- package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js +573 -0
- package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js.map +1 -0
- package/dist/action-manifest.json +2091 -393
- package/dist/chunk-2GAYKKTL.js +9 -0
- package/dist/chunk-2GAYKKTL.js.map +1 -0
- package/dist/chunk-2WPEATI7.js +315 -0
- package/dist/chunk-2WPEATI7.js.map +1 -0
- package/dist/chunk-3O42FYT3.js +3333 -0
- package/dist/chunk-3O42FYT3.js.map +1 -0
- package/dist/chunk-3TUYY4HK.js +20 -0
- package/dist/chunk-3TUYY4HK.js.map +1 -0
- package/dist/chunk-3XSLBJYI.js +554 -0
- package/dist/chunk-3XSLBJYI.js.map +1 -0
- package/dist/chunk-4DGCCXD6.js +710 -0
- package/dist/chunk-4DGCCXD6.js.map +1 -0
- package/dist/chunk-4NAFQF6V.js +11 -0
- package/dist/chunk-4NAFQF6V.js.map +1 -0
- package/dist/chunk-4PONO4US.js +799 -0
- package/dist/chunk-4PONO4US.js.map +1 -0
- package/dist/chunk-4TMOIK5M.js +21 -0
- package/dist/chunk-4TMOIK5M.js.map +1 -0
- package/dist/chunk-5IH3VC5I.js +102 -0
- package/dist/chunk-5IH3VC5I.js.map +1 -0
- package/dist/chunk-5NTKDOP6.js +89 -0
- package/dist/chunk-5NTKDOP6.js.map +1 -0
- package/dist/chunk-5O2SFRGU.js +18 -0
- package/dist/chunk-5O2SFRGU.js.map +1 -0
- package/dist/chunk-632JLECF.js +55 -0
- package/dist/chunk-632JLECF.js.map +1 -0
- package/dist/chunk-676HDB7K.js +95 -0
- package/dist/chunk-676HDB7K.js.map +1 -0
- package/dist/chunk-6ESTNTSH.js +223 -0
- package/dist/chunk-6ESTNTSH.js.map +1 -0
- package/dist/chunk-6GKJR52N.js +15 -0
- package/dist/chunk-6GKJR52N.js.map +1 -0
- package/dist/chunk-6L4ZIKYU.js +23 -0
- package/dist/chunk-6L4ZIKYU.js.map +1 -0
- package/dist/chunk-76YX5R4L.js +11 -0
- package/dist/chunk-76YX5R4L.js.map +1 -0
- package/dist/chunk-7J3GFMN3.js +32 -0
- package/dist/chunk-7J3GFMN3.js.map +1 -0
- package/dist/chunk-7LSARC2G.js +102 -0
- package/dist/chunk-7LSARC2G.js.map +1 -0
- package/dist/chunk-7W7UUUIE.js +609 -0
- package/dist/chunk-7W7UUUIE.js.map +1 -0
- package/dist/chunk-7ZLW7H37.js +21 -0
- package/dist/chunk-7ZLW7H37.js.map +1 -0
- package/dist/chunk-AAZHI22G.js +18 -0
- package/dist/chunk-AAZHI22G.js.map +1 -0
- package/dist/chunk-ACNE455I.js +76 -0
- package/dist/chunk-ACNE455I.js.map +1 -0
- package/dist/chunk-BKLSSLPZ.js +27 -0
- package/dist/chunk-BKLSSLPZ.js.map +1 -0
- package/dist/chunk-BZ7UPUTY.js +417 -0
- package/dist/chunk-BZ7UPUTY.js.map +1 -0
- package/dist/chunk-CGFAICUE.js +28 -0
- package/dist/chunk-CGFAICUE.js.map +1 -0
- package/dist/chunk-CMCEWQ3C.js +19 -0
- package/dist/chunk-CMCEWQ3C.js.map +1 -0
- package/dist/chunk-CP4UV436.js +41 -0
- package/dist/chunk-CP4UV436.js.map +1 -0
- package/dist/chunk-D2CQPNQG.js +27508 -0
- package/dist/chunk-D2CQPNQG.js.map +1 -0
- package/dist/chunk-DIQRZP7Z.js +51 -0
- package/dist/chunk-DIQRZP7Z.js.map +1 -0
- package/dist/chunk-EBFFDDAS.js +13 -0
- package/dist/chunk-EBFFDDAS.js.map +1 -0
- package/dist/chunk-EGVS23DR.js +85 -0
- package/dist/chunk-EGVS23DR.js.map +1 -0
- package/dist/chunk-EKBQ7K4N.js +15 -0
- package/dist/chunk-EKBQ7K4N.js.map +1 -0
- package/dist/chunk-EKQCZRAN.js +24 -0
- package/dist/chunk-EKQCZRAN.js.map +1 -0
- package/dist/chunk-EYKZIZ5J.js +48 -0
- package/dist/chunk-EYKZIZ5J.js.map +1 -0
- package/dist/{chunk-NEOPTPDF.js → chunk-F4PTFXZH.js} +11554 -22046
- package/dist/chunk-F4PTFXZH.js.map +1 -0
- package/dist/chunk-FFYZXA75.js +58 -0
- package/dist/chunk-FFYZXA75.js.map +1 -0
- package/dist/chunk-GFGDHPZ2.js +22 -0
- package/dist/chunk-GFGDHPZ2.js.map +1 -0
- package/dist/chunk-GR3CDFID.js +18 -0
- package/dist/chunk-GR3CDFID.js.map +1 -0
- package/dist/chunk-GR4SIU32.js +104 -0
- package/dist/chunk-GR4SIU32.js.map +1 -0
- package/dist/chunk-H5E46IIS.js +18 -0
- package/dist/chunk-H5E46IIS.js.map +1 -0
- package/dist/chunk-HFHVAMZL.js +22 -0
- package/dist/chunk-HFHVAMZL.js.map +1 -0
- package/dist/chunk-HRRI4BLF.js +4456 -0
- package/dist/chunk-HRRI4BLF.js.map +1 -0
- package/dist/chunk-HT6L7A5M.js +12 -0
- package/dist/chunk-HT6L7A5M.js.map +1 -0
- package/dist/chunk-I2FPFISM.js +301 -0
- package/dist/chunk-I2FPFISM.js.map +1 -0
- package/dist/chunk-IADAQJDH.js +28 -0
- package/dist/chunk-IADAQJDH.js.map +1 -0
- package/dist/chunk-IBOBCMQQ.js +99 -0
- package/dist/chunk-IBOBCMQQ.js.map +1 -0
- package/dist/chunk-IFWKRCFF.js +56 -0
- package/dist/chunk-IFWKRCFF.js.map +1 -0
- package/dist/chunk-IH4T7V4C.js +40 -0
- package/dist/chunk-IH4T7V4C.js.map +1 -0
- package/dist/chunk-IIIZZ4E4.js +1679 -0
- package/dist/chunk-IIIZZ4E4.js.map +1 -0
- package/dist/chunk-ILSFU3WD.js +83 -0
- package/dist/chunk-ILSFU3WD.js.map +1 -0
- package/dist/chunk-IX3VBV3L.js +43 -0
- package/dist/chunk-IX3VBV3L.js.map +1 -0
- package/dist/chunk-JBBFSORW.js +846 -0
- package/dist/chunk-JBBFSORW.js.map +1 -0
- package/dist/chunk-JIDTNKKL.js +1183 -0
- package/dist/chunk-JIDTNKKL.js.map +1 -0
- package/dist/chunk-JSPE6NGZ.js +22 -0
- package/dist/chunk-JSPE6NGZ.js.map +1 -0
- package/dist/chunk-JVROGQ7Q.js +150 -0
- package/dist/chunk-JVROGQ7Q.js.map +1 -0
- package/dist/chunk-K4WUMWNJ.js +32 -0
- package/dist/chunk-K4WUMWNJ.js.map +1 -0
- package/dist/chunk-K74XQ4Q5.js +11 -0
- package/dist/chunk-K74XQ4Q5.js.map +1 -0
- package/dist/chunk-KLLMJ4U3.js +22 -0
- package/dist/chunk-KLLMJ4U3.js.map +1 -0
- package/dist/chunk-LTKVCJ2E.js +27 -0
- package/dist/chunk-LTKVCJ2E.js.map +1 -0
- package/dist/chunk-M36DJTFZ.js +34 -0
- package/dist/chunk-M36DJTFZ.js.map +1 -0
- package/dist/chunk-MHM52LCJ.js +154 -0
- package/dist/chunk-MHM52LCJ.js.map +1 -0
- package/dist/chunk-MQCDMHRZ.js +59 -0
- package/dist/chunk-MQCDMHRZ.js.map +1 -0
- package/dist/chunk-N3ORMGAI.js +348 -0
- package/dist/chunk-N3ORMGAI.js.map +1 -0
- package/dist/chunk-NCSGIRRQ.js +28 -0
- package/dist/chunk-NCSGIRRQ.js.map +1 -0
- package/dist/chunk-NIXT2SBH.js +1423 -0
- package/dist/chunk-NIXT2SBH.js.map +1 -0
- package/dist/chunk-NJAII6CO.js +148 -0
- package/dist/chunk-NJAII6CO.js.map +1 -0
- package/dist/chunk-NKE4TL43.js +92 -0
- package/dist/chunk-NKE4TL43.js.map +1 -0
- package/dist/chunk-NZ7AXA7B.js +1 -0
- package/dist/chunk-NZ7AXA7B.js.map +1 -0
- package/dist/chunk-OCAYEGI2.js +26 -0
- package/dist/chunk-OCAYEGI2.js.map +1 -0
- package/dist/chunk-OMLI45ER.js +90 -0
- package/dist/chunk-OMLI45ER.js.map +1 -0
- package/dist/chunk-P7OBLJAG.js +88 -0
- package/dist/chunk-P7OBLJAG.js.map +1 -0
- package/dist/chunk-PAY3CBWL.js +2321 -0
- package/dist/chunk-PAY3CBWL.js.map +1 -0
- package/dist/chunk-PFF6VY35.js +257 -0
- package/dist/chunk-PFF6VY35.js.map +1 -0
- package/dist/chunk-PYNDJDWZ.js +1758 -0
- package/dist/chunk-PYNDJDWZ.js.map +1 -0
- package/dist/chunk-QDQ6UMMN.js +53 -0
- package/dist/chunk-QDQ6UMMN.js.map +1 -0
- package/dist/chunk-QGT3G2XG.js +24 -0
- package/dist/chunk-QGT3G2XG.js.map +1 -0
- package/dist/chunk-QZYCJ2GZ.js +55 -0
- package/dist/chunk-QZYCJ2GZ.js.map +1 -0
- package/dist/chunk-REZ7RFSA.js +124 -0
- package/dist/chunk-REZ7RFSA.js.map +1 -0
- package/dist/chunk-RRYBAE6E.js +2449 -0
- package/dist/chunk-RRYBAE6E.js.map +1 -0
- package/dist/chunk-RWUZOB62.js +34 -0
- package/dist/chunk-RWUZOB62.js.map +1 -0
- package/dist/chunk-SB5UCPZH.js +116 -0
- package/dist/chunk-SB5UCPZH.js.map +1 -0
- package/dist/chunk-SEJJ7CRI.js +99 -0
- package/dist/chunk-SEJJ7CRI.js.map +1 -0
- package/dist/chunk-SHBFGRPV.js +45 -0
- package/dist/chunk-SHBFGRPV.js.map +1 -0
- package/dist/chunk-SOFJ4GC5.js +45 -0
- package/dist/chunk-SOFJ4GC5.js.map +1 -0
- package/dist/chunk-STH2HPZK.js +44 -0
- package/dist/chunk-STH2HPZK.js.map +1 -0
- package/dist/chunk-TK3JNKME.js +28 -0
- package/dist/chunk-TK3JNKME.js.map +1 -0
- package/dist/chunk-TMONHFE3.js +46 -0
- package/dist/chunk-TMONHFE3.js.map +1 -0
- package/dist/chunk-TR4KO3AG.js +44 -0
- package/dist/chunk-TR4KO3AG.js.map +1 -0
- package/dist/chunk-TS2LNBF2.js +68 -0
- package/dist/chunk-TS2LNBF2.js.map +1 -0
- package/dist/chunk-UZUMBFPP.js +26 -0
- package/dist/chunk-UZUMBFPP.js.map +1 -0
- package/dist/chunk-VRZ5LMOW.js +176 -0
- package/dist/chunk-VRZ5LMOW.js.map +1 -0
- package/dist/chunk-WLGGY6Z6.js +75 -0
- package/dist/chunk-WLGGY6Z6.js.map +1 -0
- package/dist/chunk-WO7V6ZNC.js +11 -0
- package/dist/chunk-WO7V6ZNC.js.map +1 -0
- package/dist/chunk-WXSENSRP.js +64 -0
- package/dist/chunk-WXSENSRP.js.map +1 -0
- package/dist/chunk-XEKBZ2SA.js +19 -0
- package/dist/chunk-XEKBZ2SA.js.map +1 -0
- package/dist/chunk-XPBKU3JX.js +61 -0
- package/dist/chunk-XPBKU3JX.js.map +1 -0
- package/dist/chunk-XRYXBXWH.js +24 -0
- package/dist/chunk-XRYXBXWH.js.map +1 -0
- package/dist/chunk-XVA7QRVH.js +22 -0
- package/dist/chunk-XVA7QRVH.js.map +1 -0
- package/dist/chunk-YCTHHBSS.js +37 -0
- package/dist/chunk-YCTHHBSS.js.map +1 -0
- package/dist/chunk-YHPWD5NE.js +70 -0
- package/dist/chunk-YHPWD5NE.js.map +1 -0
- package/dist/chunk-YLNEKJQ5.js +126 -0
- package/dist/chunk-YLNEKJQ5.js.map +1 -0
- package/dist/chunk-YN4CEKCF.js +73 -0
- package/dist/chunk-YN4CEKCF.js.map +1 -0
- package/dist/chunk-YYNMESIF.js +17 -0
- package/dist/chunk-YYNMESIF.js.map +1 -0
- package/dist/chunk-Z6PRMCV6.js +1 -0
- package/dist/chunk-Z6PRMCV6.js.map +1 -0
- package/dist/chunk-ZDNW6VQG.js +11 -0
- package/dist/chunk-ZDNW6VQG.js.map +1 -0
- package/dist/chunk-ZP4D73DO.js +36 -0
- package/dist/chunk-ZP4D73DO.js.map +1 -0
- package/dist/chunk-ZUATADUV.js +26 -0
- package/dist/chunk-ZUATADUV.js.map +1 -0
- package/dist/{connections-1NtNQrsY.d.ts → connections-CEcurtWI.d.ts} +74 -9
- package/dist/core/index.cjs +14041 -6973
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +422 -138
- package/dist/core/index.js +425 -183
- package/dist/core/index.js.map +1 -1
- package/dist/flow-vnext/index.cjs +2842 -0
- package/dist/flow-vnext/index.cjs.map +1 -0
- package/dist/flow-vnext/index.d.ts +3 -0
- package/dist/flow-vnext/index.js +119 -0
- package/dist/flow-vnext/index.js.map +1 -0
- package/dist/{graphql-client-Bn0tN049.d.ts → graphql-client-B2tREsx6.d.ts} +3 -1
- package/dist/index-b9xxXGFs.d.ts +1230 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +202 -37
- package/dist/index.js.map +1 -1
- package/dist/legacy-BpgIqaQ5.d.ts +14 -0
- package/dist/mantine/index.d.ts +7 -4
- package/dist/mantine/index.js +84 -30
- package/dist/mantine/index.js.map +1 -1
- package/dist/{runtime-BFwvCQDF.d.ts → types-Dqk5MTfW.d.ts} +6096 -5386
- package/package.json +12 -2
- package/dist/chunk-A4CWC4AG.js +0 -374
- package/dist/chunk-A4CWC4AG.js.map +0 -1
- package/dist/chunk-NEOPTPDF.js.map +0 -1
- package/dist/chunk-VRCRDKN5.js +0 -59694
- package/dist/chunk-VRCRDKN5.js.map +0 -1
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildCapCoins,
|
|
3
|
+
capValuesFromCoins,
|
|
4
|
+
parseEvalEngineInputs,
|
|
5
|
+
serializeEvalEngineInputs
|
|
6
|
+
} from "./chunk-NJAII6CO.js";
|
|
7
|
+
import {
|
|
8
|
+
billingNote,
|
|
9
|
+
ownerPaysLine,
|
|
10
|
+
usdLabel,
|
|
11
|
+
useEnginePricing
|
|
12
|
+
} from "./chunk-ILSFU3WD.js";
|
|
13
|
+
import {
|
|
14
|
+
CollapsibleSection
|
|
15
|
+
} from "./chunk-CGFAICUE.js";
|
|
16
|
+
import {
|
|
17
|
+
formatCollectionOptionLabel
|
|
18
|
+
} from "./chunk-EKBQ7K4N.js";
|
|
19
|
+
import {
|
|
20
|
+
icon
|
|
21
|
+
} from "./chunk-YN4CEKCF.js";
|
|
22
|
+
import {
|
|
23
|
+
BaseNumberInput
|
|
24
|
+
} from "./chunk-76YX5R4L.js";
|
|
25
|
+
import {
|
|
26
|
+
BasePrimaryButton
|
|
27
|
+
} from "./chunk-K74XQ4Q5.js";
|
|
28
|
+
import {
|
|
29
|
+
DataInput
|
|
30
|
+
} from "./chunk-4PONO4US.js";
|
|
31
|
+
import "./chunk-XPBKU3JX.js";
|
|
32
|
+
import {
|
|
33
|
+
BaseSelect
|
|
34
|
+
} from "./chunk-4NAFQF6V.js";
|
|
35
|
+
import "./chunk-NZ7AXA7B.js";
|
|
36
|
+
import "./chunk-F4PTFXZH.js";
|
|
37
|
+
import "./chunk-IH4T7V4C.js";
|
|
38
|
+
import "./chunk-PYNDJDWZ.js";
|
|
39
|
+
import {
|
|
40
|
+
DIFFERENT_WHEN_OPTIONS,
|
|
41
|
+
DIFFERENT_WHEN_OTHER_MAX,
|
|
42
|
+
REPEAT_SUBMISSIONS_OPTIONS,
|
|
43
|
+
WHAT_IS_COLLECTED_MAX,
|
|
44
|
+
normalizeDifferentWhen,
|
|
45
|
+
normalizeRepeatSubmissions
|
|
46
|
+
} from "./chunk-NIXT2SBH.js";
|
|
47
|
+
import "./chunk-JIDTNKKL.js";
|
|
48
|
+
import "./chunk-JVROGQ7Q.js";
|
|
49
|
+
import {
|
|
50
|
+
getAction,
|
|
51
|
+
getEventsForBlock
|
|
52
|
+
} from "./chunk-IIIZZ4E4.js";
|
|
53
|
+
import "./chunk-HT6L7A5M.js";
|
|
54
|
+
import "./chunk-N3ORMGAI.js";
|
|
55
|
+
import "./chunk-NCSGIRRQ.js";
|
|
56
|
+
import {
|
|
57
|
+
actionAlertStyles
|
|
58
|
+
} from "./chunk-6GKJR52N.js";
|
|
59
|
+
import "./chunk-EBFFDDAS.js";
|
|
60
|
+
import {
|
|
61
|
+
BaseTextInput
|
|
62
|
+
} from "./chunk-WO7V6ZNC.js";
|
|
63
|
+
import {
|
|
64
|
+
useBlocknoteHandlers
|
|
65
|
+
} from "./chunk-4DGCCXD6.js";
|
|
66
|
+
import "./chunk-7W7UUUIE.js";
|
|
67
|
+
import "./chunk-TS2LNBF2.js";
|
|
68
|
+
|
|
69
|
+
// src/mantine/blocks/action/actionTypes/evalEngine/EvalEngineConfig.tsx
|
|
70
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
71
|
+
import { Alert, Button, Checkbox, Group, Loader, Paper, Select, Stack, Switch, Text } from "@mantine/core";
|
|
72
|
+
import { IconAlertTriangle, IconBolt, IconClock, IconInfoCircle, IconPencil } from "@tabler/icons-react";
|
|
73
|
+
var PriceLine = ({ title, price, description }) => /* @__PURE__ */ React.createElement(Group, { justify: "space-between", align: "flex-start", wrap: "nowrap", gap: "sm" }, /* @__PURE__ */ React.createElement(Stack, { gap: 2, style: { flex: 1, minWidth: 0 } }, typeof title === "string" ? /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 500 }, title) : title, /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, description)), /* @__PURE__ */ React.createElement(Text, { size: "sm", style: { whiteSpace: "nowrap", flexShrink: 0 } }, price));
|
|
74
|
+
var GrantCapInput = ({ title, description, value, onChange }) => /* @__PURE__ */ React.createElement(Stack, { gap: 4 }, /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 500 }, title), /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, description), /* @__PURE__ */ React.createElement(Group, { grow: true, align: "flex-start" }, /* @__PURE__ */ React.createElement(
|
|
75
|
+
BaseNumberInput,
|
|
76
|
+
{
|
|
77
|
+
label: "IXO",
|
|
78
|
+
min: 0,
|
|
79
|
+
placeholder: "Not allowed",
|
|
80
|
+
value: value.ixo === "" ? "" : Number(value.ixo),
|
|
81
|
+
onChange: (amount) => onChange({ ...value, ixo: amount === "" || amount == null ? "" : String(amount) })
|
|
82
|
+
}
|
|
83
|
+
), /* @__PURE__ */ React.createElement(
|
|
84
|
+
BaseNumberInput,
|
|
85
|
+
{
|
|
86
|
+
label: "USDC",
|
|
87
|
+
min: 0,
|
|
88
|
+
placeholder: "Not allowed",
|
|
89
|
+
value: value.usdc === "" ? "" : Number(value.usdc),
|
|
90
|
+
onChange: (amount) => onChange({ ...value, usdc: amount === "" || amount == null ? "" : String(amount) })
|
|
91
|
+
}
|
|
92
|
+
)));
|
|
93
|
+
var ModeCard = ({ active, icon: icon2, title, description, onClick }) => /* @__PURE__ */ React.createElement(
|
|
94
|
+
Paper,
|
|
95
|
+
{
|
|
96
|
+
withBorder: true,
|
|
97
|
+
p: "sm",
|
|
98
|
+
onClick,
|
|
99
|
+
role: "button",
|
|
100
|
+
tabIndex: 0,
|
|
101
|
+
onKeyDown: (e) => {
|
|
102
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
onClick();
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
style: {
|
|
108
|
+
flex: 1,
|
|
109
|
+
cursor: "pointer",
|
|
110
|
+
borderColor: active ? "var(--mantine-color-accent-5)" : "var(--mantine-color-neutralColor-6)",
|
|
111
|
+
borderWidth: active ? 2 : 1,
|
|
112
|
+
background: active ? "color-mix(in srgb, var(--mantine-color-accent-5) 8%, transparent)" : void 0,
|
|
113
|
+
transition: "border-color 120ms ease, background 120ms ease"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
/* @__PURE__ */ React.createElement(Stack, { gap: 4 }, /* @__PURE__ */ React.createElement(Group, { gap: 6, align: "center", wrap: "nowrap" }, icon2, /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 600 }, title)), /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, description))
|
|
117
|
+
);
|
|
118
|
+
var EvalEngineConfig = ({ inputs, onInputsChange, editor, blockId }) => {
|
|
119
|
+
const handlers = useBlocknoteHandlers();
|
|
120
|
+
const [local, setLocal] = useState(() => parseEvalEngineInputs(inputs));
|
|
121
|
+
const [collections, setCollections] = useState([]);
|
|
122
|
+
const [loadingCollections, setLoadingCollections] = useState(false);
|
|
123
|
+
const [error, setError] = useState(null);
|
|
124
|
+
const readTriggerRaw = useCallback(() => {
|
|
125
|
+
const b = (editor?.document || []).find((x) => x?.id === blockId);
|
|
126
|
+
return typeof b?.props?.trigger === "string" ? b.props.trigger : "";
|
|
127
|
+
}, [editor, blockId]);
|
|
128
|
+
const [triggerRaw, setTriggerRaw] = useState(() => readTriggerRaw());
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
setLocal(parseEvalEngineInputs(inputs));
|
|
131
|
+
setTriggerRaw(readTriggerRaw());
|
|
132
|
+
}, [inputs, readTriggerRaw]);
|
|
133
|
+
const triggerSpec = useMemo(() => {
|
|
134
|
+
if (!triggerRaw) return null;
|
|
135
|
+
try {
|
|
136
|
+
return JSON.parse(triggerRaw);
|
|
137
|
+
} catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}, [triggerRaw]);
|
|
141
|
+
const mode = triggerSpec?.type === "block.event" ? "trigger" : "manual";
|
|
142
|
+
const writeProps = useCallback(
|
|
143
|
+
(patch) => {
|
|
144
|
+
const b = (editor?.document || []).find((x) => x?.id === blockId);
|
|
145
|
+
if (!b) return;
|
|
146
|
+
editor.updateBlock(b, { props: { ...b.props, ...patch } });
|
|
147
|
+
},
|
|
148
|
+
[editor, blockId]
|
|
149
|
+
);
|
|
150
|
+
const update = useCallback(
|
|
151
|
+
(patch) => {
|
|
152
|
+
const updated = { ...local, ...patch };
|
|
153
|
+
setLocal(updated);
|
|
154
|
+
onInputsChange(serializeEvalEngineInputs(updated));
|
|
155
|
+
},
|
|
156
|
+
[local, onInputsChange]
|
|
157
|
+
);
|
|
158
|
+
const localRef = useRef(local);
|
|
159
|
+
localRef.current = local;
|
|
160
|
+
useEffect(() => {
|
|
161
|
+
if (!handlers.getNotificationEmail || localRef.current.notifyEmail?.trim()) return;
|
|
162
|
+
let mounted = true;
|
|
163
|
+
handlers.getNotificationEmail().then((email) => {
|
|
164
|
+
if (!mounted || !email || localRef.current.notifyEmail?.trim()) return;
|
|
165
|
+
const updated = { ...localRef.current, notifyEmail: email };
|
|
166
|
+
setLocal(updated);
|
|
167
|
+
onInputsChange(serializeEvalEngineInputs(updated));
|
|
168
|
+
}).catch(() => {
|
|
169
|
+
});
|
|
170
|
+
return () => {
|
|
171
|
+
mounted = false;
|
|
172
|
+
};
|
|
173
|
+
}, []);
|
|
174
|
+
const sourceOptions = useMemo(() => {
|
|
175
|
+
const blocks = editor?.document || [];
|
|
176
|
+
return blocks.filter((b) => b?.id && b.id !== blockId).map((b) => {
|
|
177
|
+
const action = getAction(b.props?.actionType || "");
|
|
178
|
+
const events = getEventsForBlock(action, b.props?.inputs);
|
|
179
|
+
const collectionEvent = events.find((e) => e.payloadSchema?.some((f) => f.path === "collectionId"));
|
|
180
|
+
if (!collectionEvent) return null;
|
|
181
|
+
return { value: b.id, label: String(b.props?.title || action?.type || b.id), eventName: collectionEvent.name };
|
|
182
|
+
}).filter((o) => o !== null);
|
|
183
|
+
}, [editor, blockId, triggerRaw, inputs]);
|
|
184
|
+
const selectedSource = useMemo(() => sourceOptions.find((o) => o.value === triggerSpec?.sourceBlockId), [sourceOptions, triggerSpec]);
|
|
185
|
+
const switchToTrigger = useCallback(() => {
|
|
186
|
+
if (mode === "trigger") return;
|
|
187
|
+
const cleared = { ...local, deedDid: "", collectionId: "" };
|
|
188
|
+
setLocal(cleared);
|
|
189
|
+
setCollections([]);
|
|
190
|
+
setError(null);
|
|
191
|
+
const triggerJson = JSON.stringify({ type: "block.event", sourceBlockId: "", eventName: "" });
|
|
192
|
+
setTriggerRaw(triggerJson);
|
|
193
|
+
writeProps({ trigger: triggerJson, inputs: serializeEvalEngineInputs(cleared) });
|
|
194
|
+
}, [mode, local, writeProps]);
|
|
195
|
+
const switchToManual = useCallback(() => {
|
|
196
|
+
if (mode === "manual") return;
|
|
197
|
+
setTriggerRaw("");
|
|
198
|
+
writeProps({ trigger: "" });
|
|
199
|
+
}, [mode, writeProps]);
|
|
200
|
+
const pickSource = useCallback(
|
|
201
|
+
(sourceBlockId, eventName) => {
|
|
202
|
+
const triggerJson = JSON.stringify({ type: "block.event", sourceBlockId, eventName });
|
|
203
|
+
setTriggerRaw(triggerJson);
|
|
204
|
+
writeProps({ trigger: triggerJson });
|
|
205
|
+
},
|
|
206
|
+
[writeProps]
|
|
207
|
+
);
|
|
208
|
+
const fetchCollections = useCallback(async () => {
|
|
209
|
+
const deedDid = local.deedDid.trim();
|
|
210
|
+
if (!deedDid) {
|
|
211
|
+
setError("Please enter a DID first");
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const persisted = { ...local, deedDid };
|
|
215
|
+
setLocal(persisted);
|
|
216
|
+
onInputsChange(serializeEvalEngineInputs(persisted));
|
|
217
|
+
setLoadingCollections(true);
|
|
218
|
+
setError(null);
|
|
219
|
+
try {
|
|
220
|
+
const response = await handlers.getClaimCollections(deedDid);
|
|
221
|
+
const fetched = response?.collections || [];
|
|
222
|
+
setCollections(fetched);
|
|
223
|
+
if (fetched.length === 0) {
|
|
224
|
+
setError("No claim collections found for this DID");
|
|
225
|
+
}
|
|
226
|
+
if (local.collectionId && !fetched.some((c) => c.id === local.collectionId)) {
|
|
227
|
+
update({ collectionId: "" });
|
|
228
|
+
}
|
|
229
|
+
} catch (err) {
|
|
230
|
+
setCollections([]);
|
|
231
|
+
setError(err instanceof Error ? err.message : "Failed to fetch claim collections");
|
|
232
|
+
} finally {
|
|
233
|
+
setLoadingCollections(false);
|
|
234
|
+
}
|
|
235
|
+
}, [handlers, local, onInputsChange, update]);
|
|
236
|
+
useEffect(() => {
|
|
237
|
+
if (local.deedDid.trim() && local.collectionId && collections.length === 0 && !loadingCollections) {
|
|
238
|
+
void fetchCollections();
|
|
239
|
+
}
|
|
240
|
+
}, [local.deedDid, local.collectionId]);
|
|
241
|
+
const collectionOptions = useMemo(
|
|
242
|
+
() => collections.map((collection) => ({
|
|
243
|
+
value: collection.id,
|
|
244
|
+
label: formatCollectionOptionLabel(collection)
|
|
245
|
+
})),
|
|
246
|
+
[collections]
|
|
247
|
+
);
|
|
248
|
+
const { card, live } = useEnginePricing({ collectionId: local.collectionId, evalEngineUrl: local.evalEngineUrl });
|
|
249
|
+
const payLine = ownerPaysLine(live);
|
|
250
|
+
const rubricHasAiChecks = (local.rubric?.aiChecks?.length ?? 0) > 0;
|
|
251
|
+
const collectionContextStarted = !!(local.whatIsCollected?.trim() || local.repeatSubmissions || local.differentWhen?.length || local.differentWhenOther?.trim());
|
|
252
|
+
const repeatAnswerMissing = collectionContextStarted && !local.repeatSubmissions;
|
|
253
|
+
return /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(Stack, { gap: 6 }, /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 600 }, "How is the collection chosen?"), /* @__PURE__ */ React.createElement(Group, { gap: "sm", align: "stretch", grow: true }, /* @__PURE__ */ React.createElement(
|
|
254
|
+
ModeCard,
|
|
255
|
+
{
|
|
256
|
+
active: mode === "trigger",
|
|
257
|
+
icon: /* @__PURE__ */ React.createElement(IconBolt, { size: 16, color: "var(--mantine-color-accent-5)" }),
|
|
258
|
+
title: "From a created collection",
|
|
259
|
+
description: "Wait for a Claim Collection block to create a collection, then enroll it automatically.",
|
|
260
|
+
onClick: switchToTrigger
|
|
261
|
+
}
|
|
262
|
+
), /* @__PURE__ */ React.createElement(
|
|
263
|
+
ModeCard,
|
|
264
|
+
{
|
|
265
|
+
active: mode === "manual",
|
|
266
|
+
icon: /* @__PURE__ */ React.createElement(IconPencil, { size: 16 }),
|
|
267
|
+
title: "Enter manually",
|
|
268
|
+
description: "Pick the entity and an existing collection yourself.",
|
|
269
|
+
onClick: switchToManual
|
|
270
|
+
}
|
|
271
|
+
))), mode === "trigger" ? /* @__PURE__ */ React.createElement(Stack, { gap: "sm" }, /* @__PURE__ */ React.createElement(
|
|
272
|
+
Select,
|
|
273
|
+
{
|
|
274
|
+
label: "Source collection block",
|
|
275
|
+
placeholder: sourceOptions.length === 0 ? "No collection-creating blocks in this flow yet" : "Select a Claim Collection block",
|
|
276
|
+
data: sourceOptions.map((o) => ({ value: o.value, label: o.label })),
|
|
277
|
+
value: triggerSpec?.sourceBlockId || null,
|
|
278
|
+
onChange: (value) => {
|
|
279
|
+
const option = sourceOptions.find((o) => o.value === value);
|
|
280
|
+
if (option) pickSource(option.value, option.eventName);
|
|
281
|
+
},
|
|
282
|
+
disabled: sourceOptions.length === 0,
|
|
283
|
+
searchable: true
|
|
284
|
+
}
|
|
285
|
+
), selectedSource ? /* @__PURE__ */ React.createElement(Alert, { icon: /* @__PURE__ */ React.createElement(IconClock, { size: 16 }), color: "accent", styles: actionAlertStyles }, /* @__PURE__ */ React.createElement(Text, { size: "xs" }, "Enrolls the collection when ", /* @__PURE__ */ React.createElement("b", null, selectedSource.label), " creates it. The entity and collection are taken from that event \u2014 there's nothing to enter here.")) : /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, "Choose the Claim Collection block whose \u201Ccreated\u201D event should enroll a new collection. Until it fires, this block waits.")) : /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(
|
|
286
|
+
DataInput,
|
|
287
|
+
{
|
|
288
|
+
label: "DID",
|
|
289
|
+
placeholder: "Enter deed DID",
|
|
290
|
+
description: "The DID identifier for fetching claim collections.",
|
|
291
|
+
value: local.deedDid,
|
|
292
|
+
onChange: (value) => update({ deedDid: value }),
|
|
293
|
+
editorDocument: editor?.document || [],
|
|
294
|
+
currentBlockId: blockId,
|
|
295
|
+
required: true
|
|
296
|
+
}
|
|
297
|
+
), /* @__PURE__ */ React.createElement(
|
|
298
|
+
Button,
|
|
299
|
+
{
|
|
300
|
+
size: "xs",
|
|
301
|
+
variant: "subtle",
|
|
302
|
+
onClick: () => {
|
|
303
|
+
const entityDid = handlers.getEntityDid?.();
|
|
304
|
+
if (entityDid) update({ deedDid: entityDid });
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
"Use Current Entity"
|
|
308
|
+
), /* @__PURE__ */ React.createElement(BasePrimaryButton, { onClick: fetchCollections, disabled: !local.deedDid.trim() || loadingCollections }, loadingCollections ? /* @__PURE__ */ React.createElement(Loader, { size: "xs", color: "dark" }) : "Get Collections"), error && /* @__PURE__ */ React.createElement(Alert, { color: "red", styles: actionAlertStyles }, error), collectionOptions.length > 0 && /* @__PURE__ */ React.createElement(
|
|
309
|
+
BaseSelect,
|
|
310
|
+
{
|
|
311
|
+
label: "Claim Collection",
|
|
312
|
+
placeholder: "Select a collection",
|
|
313
|
+
value: local.collectionId || null,
|
|
314
|
+
onChange: (value) => update({ collectionId: value || "" }),
|
|
315
|
+
data: collectionOptions,
|
|
316
|
+
required: true,
|
|
317
|
+
searchable: true
|
|
318
|
+
}
|
|
319
|
+
)), /* @__PURE__ */ React.createElement(
|
|
320
|
+
BaseTextInput,
|
|
321
|
+
{
|
|
322
|
+
label: "Collection name",
|
|
323
|
+
placeholder: "e.g. Solar Kitchens",
|
|
324
|
+
description: "Shown on billing emails and notices next to the collection id, so you can tell your collections apart. Optional.",
|
|
325
|
+
maxLength: 120,
|
|
326
|
+
value: local.displayName || "",
|
|
327
|
+
onChange: (e) => update({ displayName: e.currentTarget.value })
|
|
328
|
+
}
|
|
329
|
+
), /* @__PURE__ */ React.createElement(
|
|
330
|
+
BaseTextInput,
|
|
331
|
+
{
|
|
332
|
+
label: "Billing email",
|
|
333
|
+
placeholder: "you@example.org",
|
|
334
|
+
description: "If a payment fails or your evaluations pause, this is where we tell you. Filled from your account when we can.",
|
|
335
|
+
type: "email",
|
|
336
|
+
required: true,
|
|
337
|
+
value: local.notifyEmail || "",
|
|
338
|
+
onChange: (e) => update({ notifyEmail: e.currentTarget.value })
|
|
339
|
+
}
|
|
340
|
+
), /* @__PURE__ */ React.createElement(CollapsibleSection, { title: "What this collection collects", defaultOpen: true }, /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, "This helps us tell a genuine repeat of the same task from the same claim sent twice. Optional, but worth a minute."), /* @__PURE__ */ React.createElement(
|
|
341
|
+
BaseTextInput,
|
|
342
|
+
{
|
|
343
|
+
label: "What do people do to make a claim here?",
|
|
344
|
+
description: "One sentence, like you're telling a friend.",
|
|
345
|
+
placeholder: "They sort trash into bins and weigh it.",
|
|
346
|
+
maxLength: WHAT_IS_COLLECTED_MAX,
|
|
347
|
+
value: local.whatIsCollected || "",
|
|
348
|
+
onChange: (e) => update({ whatIsCollected: e.currentTarget.value })
|
|
349
|
+
}
|
|
350
|
+
), /* @__PURE__ */ React.createElement(
|
|
351
|
+
BaseSelect,
|
|
352
|
+
{
|
|
353
|
+
label: "Can the same person do this again tomorrow?",
|
|
354
|
+
placeholder: "Pick one",
|
|
355
|
+
data: REPEAT_SUBMISSIONS_OPTIONS.map((option) => ({ value: option.value, label: option.label })),
|
|
356
|
+
value: local.repeatSubmissions || null,
|
|
357
|
+
onChange: (value) => update({ repeatSubmissions: normalizeRepeatSubmissions(value) }),
|
|
358
|
+
required: collectionContextStarted,
|
|
359
|
+
error: repeatAnswerMissing ? "Please pick one, so we don\u2019t flag normal repeat work as a duplicate." : void 0
|
|
360
|
+
}
|
|
361
|
+
), /* @__PURE__ */ React.createElement(
|
|
362
|
+
Checkbox.Group,
|
|
363
|
+
{
|
|
364
|
+
label: "When the same person does it again, what is different?",
|
|
365
|
+
description: "Tick everything that changes.",
|
|
366
|
+
value: local.differentWhen || [],
|
|
367
|
+
onChange: (value) => update({ differentWhen: normalizeDifferentWhen(value) })
|
|
368
|
+
},
|
|
369
|
+
/* @__PURE__ */ React.createElement(Stack, { gap: "xs", mt: "xs" }, DIFFERENT_WHEN_OPTIONS.map((option) => /* @__PURE__ */ React.createElement(Checkbox, { key: option.value, size: "xs", value: option.value, label: option.label })))
|
|
370
|
+
), /* @__PURE__ */ React.createElement(
|
|
371
|
+
BaseTextInput,
|
|
372
|
+
{
|
|
373
|
+
label: "Other",
|
|
374
|
+
placeholder: "Something else that changes",
|
|
375
|
+
maxLength: DIFFERENT_WHEN_OTHER_MAX,
|
|
376
|
+
value: local.differentWhenOther || "",
|
|
377
|
+
onChange: (e) => update({ differentWhenOther: e.currentTarget.value })
|
|
378
|
+
}
|
|
379
|
+
))), /* @__PURE__ */ React.createElement(CollapsibleSection, { title: "Checks & pricing", defaultOpen: true }, /* @__PURE__ */ React.createElement(Stack, { gap: "md" }, /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, "You\u2019ll write the approval rules in the next step (flow mode), after this block is configured."), /* @__PURE__ */ React.createElement(PriceLine, { title: "Checking a claim", price: `${usdLabel(card.baseUsd)} / claim`, description: "The engine checks every claim against your rules." }), /* @__PURE__ */ React.createElement(
|
|
380
|
+
PriceLine,
|
|
381
|
+
{
|
|
382
|
+
title: /* @__PURE__ */ React.createElement(
|
|
383
|
+
Switch,
|
|
384
|
+
{
|
|
385
|
+
size: "sm",
|
|
386
|
+
label: "AI checks",
|
|
387
|
+
checked: local.allowAiChecks,
|
|
388
|
+
onChange: (e) => {
|
|
389
|
+
const on = e.currentTarget.checked;
|
|
390
|
+
update(on ? { allowAiChecks: true } : { allowAiChecks: false, allowImageChecks: false });
|
|
391
|
+
},
|
|
392
|
+
styles: { label: { fontWeight: 500 } }
|
|
393
|
+
}
|
|
394
|
+
),
|
|
395
|
+
price: `${usdLabel(card.aiRuleUsd)} per AI rule / claim`,
|
|
396
|
+
description: `Your rules can ask AI to look at answers, photos and documents. 3 AI rules = ${usdLabel(card.aiRuleUsd * 3)}.`
|
|
397
|
+
}
|
|
398
|
+
), /* @__PURE__ */ React.createElement(
|
|
399
|
+
PriceLine,
|
|
400
|
+
{
|
|
401
|
+
title: /* @__PURE__ */ React.createElement(
|
|
402
|
+
Switch,
|
|
403
|
+
{
|
|
404
|
+
size: "sm",
|
|
405
|
+
label: "Fake-photo detection",
|
|
406
|
+
checked: local.allowAiChecks && local.allowImageChecks,
|
|
407
|
+
disabled: !local.allowAiChecks,
|
|
408
|
+
onChange: (e) => update({ allowImageChecks: e.currentTarget.checked }),
|
|
409
|
+
styles: { label: { fontWeight: 500 } }
|
|
410
|
+
}
|
|
411
|
+
),
|
|
412
|
+
price: `${usdLabel(card.photoUsd)} / photo`,
|
|
413
|
+
description: "Spots AI-made photos pretending to be real evidence. Needs AI checks on."
|
|
414
|
+
}
|
|
415
|
+
), /* @__PURE__ */ React.createElement(Stack, { gap: 2 }, payLine && /* @__PURE__ */ React.createElement(Text, { size: "sm", fw: 500 }, payLine), /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, billingNote(card, live))), /* @__PURE__ */ React.createElement(Stack, { gap: 2 }, /* @__PURE__ */ React.createElement(
|
|
416
|
+
Switch,
|
|
417
|
+
{
|
|
418
|
+
size: "sm",
|
|
419
|
+
label: "Submit decisions on chain",
|
|
420
|
+
checked: local.allowChainEvaluation,
|
|
421
|
+
onChange: (e) => update({ allowChainEvaluation: e.currentTarget.checked }),
|
|
422
|
+
styles: { label: { fontWeight: 500 } }
|
|
423
|
+
}
|
|
424
|
+
), /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed", pl: 44 }, local.allowChainEvaluation ? "Approved and rejected claims are submitted to the chain, which releases payment. Enrolling grants the engine the evaluator right this needs \u2014 signed in the same step." : "The engine records its decision and writes nothing on chain \u2014 nobody gets paid automatically.")), local.allowChainEvaluation && /* @__PURE__ */ React.createElement(
|
|
425
|
+
GrantCapInput,
|
|
426
|
+
{
|
|
427
|
+
title: "Most the engine may pay out",
|
|
428
|
+
description: "Per approved claim. Set the denom your collection pays in \u2014 leave a currency blank to disallow it.",
|
|
429
|
+
value: capValuesFromCoins(local.evaluateMaxAmount),
|
|
430
|
+
onChange: (value) => update({ evaluateMaxAmount: buildCapCoins(value) })
|
|
431
|
+
}
|
|
432
|
+
), local.allowChainEvaluation && /* @__PURE__ */ React.createElement(Stack, { gap: 2 }, /* @__PURE__ */ React.createElement(
|
|
433
|
+
Switch,
|
|
434
|
+
{
|
|
435
|
+
size: "sm",
|
|
436
|
+
label: "Approve even when the approval pays nothing",
|
|
437
|
+
checked: local.allowZeroPayoutApprovals,
|
|
438
|
+
onChange: (e) => update({ allowZeroPayoutApprovals: e.currentTarget.checked }),
|
|
439
|
+
styles: { label: { fontWeight: 500 } }
|
|
440
|
+
}
|
|
441
|
+
), /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed", pl: 44 }, local.allowZeroPayoutApprovals ? "Approvals are submitted on chain even when this collection pays claimants nothing \u2014 for collections that record proof rather than pay out. If you meant to pay and have not set an amount yet, leave this off." : "If an approval would pay nothing, the engine records its decision and waits for you to submit it on chain with an amount. Turn this on only if paying nothing is intended.")), rubricHasAiChecks && !local.allowAiChecks && /* @__PURE__ */ React.createElement(Alert, { color: "yellow", icon: /* @__PURE__ */ React.createElement(IconAlertTriangle, { size: 16 }), styles: actionAlertStyles }, /* @__PURE__ */ React.createElement(Text, { size: "xs" }, "Your approval rules include AI checks \u2014 with AI checks disabled those rules will send claims to review/rejection instead.")))), /* @__PURE__ */ React.createElement(CollapsibleSection, { title: "Advanced (optional)" }, /* @__PURE__ */ React.createElement(Stack, { gap: "sm" }, /* @__PURE__ */ React.createElement(Alert, { color: "neutralColor", variant: "light", icon: icon(IconInfoCircle, 16) }, /* @__PURE__ */ React.createElement(Text, { size: "xs" }, "Leave blank to use the host's network defaults. Only set these to point at a non-default engine, store, or oracle.")), /* @__PURE__ */ React.createElement(BaseTextInput, { label: "Oracle DID", placeholder: "Default: host oracle DID", value: local.oracleDid || "", onChange: (e) => update({ oracleDid: e.currentTarget.value }) }), /* @__PURE__ */ React.createElement(
|
|
442
|
+
BaseTextInput,
|
|
443
|
+
{
|
|
444
|
+
label: "Evaluation engine URL",
|
|
445
|
+
placeholder: "Default: host engine URL",
|
|
446
|
+
value: local.evalEngineUrl || "",
|
|
447
|
+
onChange: (e) => update({ evalEngineUrl: e.currentTarget.value })
|
|
448
|
+
}
|
|
449
|
+
), /* @__PURE__ */ React.createElement(
|
|
450
|
+
BaseTextInput,
|
|
451
|
+
{
|
|
452
|
+
label: "UCAN Store URL",
|
|
453
|
+
placeholder: "Default: host store URL",
|
|
454
|
+
value: local.ucanStoreUrl || "",
|
|
455
|
+
onChange: (e) => update({ ucanStoreUrl: e.currentTarget.value })
|
|
456
|
+
}
|
|
457
|
+
))));
|
|
458
|
+
};
|
|
459
|
+
var EvalEngineConfig_default = EvalEngineConfig;
|
|
460
|
+
export {
|
|
461
|
+
EvalEngineConfig,
|
|
462
|
+
EvalEngineConfig_default as default
|
|
463
|
+
};
|
|
464
|
+
//# sourceMappingURL=EvalEngineConfig-CHC4IRN3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/blocks/action/actionTypes/evalEngine/EvalEngineConfig.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Alert, Button, Checkbox, Group, Loader, Paper, Select, Stack, Switch, Text } from '@mantine/core';\nimport { IconAlertTriangle, IconBolt, IconClock, IconInfoCircle, IconPencil } from '@tabler/icons-react';\nimport { DataInput } from '@/mantine/components/DataInput';\nimport BaseNumberInput from '@/mantine/components/Base/BaseNumberInput';\nimport BaseSelect from '@/mantine/components/Base/BaseSelect';\nimport BaseTextInput from '@/mantine/components/Base/BaseTextInput';\nimport BasePrimaryButton from '@/mantine/components/Base/BasePrimaryButton';\nimport { CollapsibleSection } from '@/mantine/components/CollapsibleSection';\nimport { icon } from '@/mantine/components/ReusablePanel';\nimport { getAction, getEventsForBlock } from '@/core/lib/actionRegistry';\nimport {\n normalizeDifferentWhen,\n normalizeRepeatSubmissions,\n DIFFERENT_WHEN_OPTIONS,\n DIFFERENT_WHEN_OTHER_MAX,\n REPEAT_SUBMISSIONS_OPTIONS,\n WHAT_IS_COLLECTED_MAX,\n} from '@/core/lib/actionRegistry/actions/evalRegister/description';\nimport type { ActionTypeConfigProps } from '../../actionTypeUI';\nimport { parseEvalEngineInputs, serializeEvalEngineInputs, type EvalEngineActionInputs } from './types';\nimport { useBlocknoteHandlers, type ClaimCollection } from '@/mantine/context/BlocknoteContext';\nimport { actionAlertStyles } from '../../alertStyles';\nimport { formatCollectionOptionLabel } from '../../collectionLabel';\nimport { billingNote, ownerPaysLine, useEnginePricing, usdLabel } from '../evalRegister/pricing';\nimport { buildCapCoins, capValuesFromCoins, type GrantCapValues } from '../evalRegister/grantCaps';\n\n/**\n * Template-mode configuration for the merged `qi/eval.engine` block\n * (\"Evaluation Engine\"). This mode covers collection binding + billing\n * identity + checks & pricing — the same three things `qi/eval.register`\n * (\"Enable Evaluation Engine\") used to collect on its own. The approval\n * rules themselves are NOT configured here: they are designed in flow mode\n * (`EvalEngineFlowDetail`), which is where a human actually authors and\n * runs the block.\n *\n * The collection this block enrolls is chosen one of two **mutually\n * exclusive** ways, mirroring `qi/collection.users`:\n *\n * - **From a created collection (trigger)** — wire an upstream Claim Collection\n * block; the entity + collection arrive in its `created` event payload at run\n * time. Persisted to `block.props.trigger` as a `block.event` TriggerSpec.\n * - **Enter manually** — pick the entity (deed) DID and an existing collection.\n * Persisted to `block.props.inputs` as `{ deedDid, collectionId }`.\n *\n * Engine internals (oracle DID, engine/store URLs) are NOT primary\n * fields — they live in an \"Advanced\" section as optional overrides; blank means\n * \"use the host defaults\". A mode switch touches BOTH `props.trigger` and\n * `props.inputs`, so those writes are committed in a single `editor.updateBlock`.\n */\n\ntype SourceOption = { value: string; label: string; eventName: string };\n\n/** One \"Checks & pricing\" line: name/description left, USD price right (§B.3). */\nconst PriceLine: React.FC<{ title: React.ReactNode; price: string; description: string }> = ({ title, price, description }) => (\n <Group justify=\"space-between\" align=\"flex-start\" wrap=\"nowrap\" gap=\"sm\">\n <Stack gap={2} style={{ flex: 1, minWidth: 0 }}>\n {typeof title === 'string' ? (\n <Text size=\"sm\" fw={500}>\n {title}\n </Text>\n ) : (\n title\n )}\n <Text size=\"xs\" c=\"dimmed\">\n {description}\n </Text>\n </Stack>\n <Text size=\"sm\" style={{ whiteSpace: 'nowrap', flexShrink: 0 }}>\n {price}\n </Text>\n </Group>\n);\n\n/**\n * The evaluate grant's payout ceiling. Both denoms are offered and both are\n * optional — the owner caps the denom(s) their collection actually pays in;\n * blank means that denom is not permitted at all (the chain measures the amount\n * against this list, so \"blank everywhere\" is a hard no, not \"unlimited\").\n */\nconst GrantCapInput: React.FC<{\n title: string;\n description: string;\n value: GrantCapValues;\n onChange: (value: GrantCapValues) => void;\n}> = ({ title, description, value, onChange }) => (\n <Stack gap={4}>\n <Text size=\"sm\" fw={500}>\n {title}\n </Text>\n <Text size=\"xs\" c=\"dimmed\">\n {description}\n </Text>\n <Group grow align=\"flex-start\">\n <BaseNumberInput\n label=\"IXO\"\n min={0}\n placeholder=\"Not allowed\"\n value={value.ixo === '' ? '' : Number(value.ixo)}\n onChange={(amount) => onChange({ ...value, ixo: amount === '' || amount == null ? '' : String(amount) })}\n />\n <BaseNumberInput\n label=\"USDC\"\n min={0}\n placeholder=\"Not allowed\"\n value={value.usdc === '' ? '' : Number(value.usdc)}\n onChange={(amount) => onChange({ ...value, usdc: amount === '' || amount == null ? '' : String(amount) })}\n />\n </Group>\n </Stack>\n);\n\nconst ModeCard: React.FC<{\n active: boolean;\n icon: React.ReactNode;\n title: string;\n description: string;\n onClick: () => void;\n}> = ({ active, icon, title, description, onClick }) => (\n <Paper\n withBorder\n p=\"sm\"\n onClick={onClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick();\n }\n }}\n style={{\n flex: 1,\n cursor: 'pointer',\n borderColor: active ? 'var(--mantine-color-accent-5)' : 'var(--mantine-color-neutralColor-6)',\n borderWidth: active ? 2 : 1,\n background: active ? 'color-mix(in srgb, var(--mantine-color-accent-5) 8%, transparent)' : undefined,\n transition: 'border-color 120ms ease, background 120ms ease',\n }}\n >\n <Stack gap={4}>\n <Group gap={6} align=\"center\" wrap=\"nowrap\">\n {icon}\n <Text size=\"sm\" fw={600}>\n {title}\n </Text>\n </Group>\n <Text size=\"xs\" c=\"dimmed\">\n {description}\n </Text>\n </Stack>\n </Paper>\n);\n\nexport const EvalEngineConfig: React.FC<ActionTypeConfigProps> = ({ inputs, onInputsChange, editor, blockId }) => {\n const handlers = useBlocknoteHandlers();\n const [local, setLocal] = useState<EvalEngineActionInputs>(() => parseEvalEngineInputs(inputs));\n const [collections, setCollections] = useState<ClaimCollection[]>([]);\n const [loadingCollections, setLoadingCollections] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // ── Trigger (event-source) state — the trigger lives on `block.props.trigger`,\n // edited here as the \"From a created collection\" mode.\n const readTriggerRaw = useCallback((): string => {\n const b = (editor?.document || []).find((x: { id?: string }) => x?.id === blockId) as { props?: { trigger?: unknown } } | undefined;\n return typeof b?.props?.trigger === 'string' ? b.props.trigger : '';\n }, [editor, blockId]);\n\n const [triggerRaw, setTriggerRaw] = useState<string>(() => readTriggerRaw());\n\n useEffect(() => {\n setLocal(parseEvalEngineInputs(inputs));\n setTriggerRaw(readTriggerRaw());\n }, [inputs, readTriggerRaw]);\n\n const triggerSpec = useMemo<{ type?: string; sourceBlockId?: string; eventName?: string } | null>(() => {\n if (!triggerRaw) return null;\n try {\n return JSON.parse(triggerRaw);\n } catch {\n return null;\n }\n }, [triggerRaw]);\n\n const mode: 'trigger' | 'manual' = triggerSpec?.type === 'block.event' ? 'trigger' : 'manual';\n\n // Commit trigger and/or inputs to the block in ONE update so they stay atomic.\n const writeProps = useCallback(\n (patch: { trigger?: string; inputs?: string }) => {\n const b = (editor?.document || []).find((x: { id?: string }) => x?.id === blockId);\n if (!b) return;\n editor.updateBlock(b, { props: { ...(b as { props?: Record<string, unknown> }).props, ...patch } });\n },\n [editor, blockId]\n );\n\n const update = useCallback(\n (patch: Partial<EvalEngineActionInputs>) => {\n const updated = { ...local, ...patch };\n setLocal(updated);\n onInputsChange(serializeEvalEngineInputs(updated));\n },\n [local, onInputsChange]\n );\n\n // PREFILL the required billing email from the owner's account, once, when the config opens —\n // resolved by the HOST (`getNotificationEmail`: the portal reads auth-hub, session-cached and\n // rate-limit-aware). Fills ONLY an empty field, checked again at resolution time through the\n // ref: whatever the owner typed while the fetch was in flight always wins. Any failure (or an\n // older host without the handler) just leaves the field blank for the owner to type — the\n // requirement itself is enforced in the action, before the PIN.\n const localRef = useRef(local);\n localRef.current = local;\n useEffect(() => {\n if (!handlers.getNotificationEmail || localRef.current.notifyEmail?.trim()) return;\n let mounted = true;\n handlers\n .getNotificationEmail()\n .then((email) => {\n if (!mounted || !email || localRef.current.notifyEmail?.trim()) return;\n const updated = { ...localRef.current, notifyEmail: email };\n setLocal(updated);\n onInputsChange(serializeEvalEngineInputs(updated));\n })\n // The contract says it resolves null instead of throwing, but a host bug must not break\n // the config panel.\n .catch(() => {});\n return () => {\n mounted = false;\n };\n }, []);\n\n // Source-block options: any upstream block whose event payload carries a\n // `collectionId` (a collection-producing block such as a Claim Collection block).\n const sourceOptions = useMemo<SourceOption[]>(() => {\n const blocks = (editor?.document || []) as Array<{ id?: string; props?: { actionType?: string; inputs?: unknown; title?: string } }>;\n return blocks\n .filter((b) => b?.id && b.id !== blockId)\n .map((b) => {\n const action = getAction(b.props?.actionType || '');\n const events = getEventsForBlock(action, b.props?.inputs);\n const collectionEvent = events.find((e) => e.payloadSchema?.some((f) => f.path === 'collectionId'));\n if (!collectionEvent) return null;\n return { value: b.id as string, label: String(b.props?.title || action?.type || b.id), eventName: collectionEvent.name };\n })\n .filter((o): o is SourceOption => o !== null);\n }, [editor, blockId, triggerRaw, inputs]);\n\n const selectedSource = useMemo(() => sourceOptions.find((o) => o.value === triggerSpec?.sourceBlockId), [sourceOptions, triggerSpec]);\n\n const switchToTrigger = useCallback(() => {\n if (mode === 'trigger') return;\n // Clear the collection binding but PRESERVE any advanced overrides.\n const cleared: EvalEngineActionInputs = { ...local, deedDid: '', collectionId: '' };\n setLocal(cleared);\n setCollections([]);\n setError(null);\n const triggerJson = JSON.stringify({ type: 'block.event', sourceBlockId: '', eventName: '' });\n setTriggerRaw(triggerJson);\n writeProps({ trigger: triggerJson, inputs: serializeEvalEngineInputs(cleared) });\n }, [mode, local, writeProps]);\n\n const switchToManual = useCallback(() => {\n if (mode === 'manual') return;\n setTriggerRaw('');\n writeProps({ trigger: '' });\n }, [mode, writeProps]);\n\n const pickSource = useCallback(\n (sourceBlockId: string, eventName: string) => {\n const triggerJson = JSON.stringify({ type: 'block.event', sourceBlockId, eventName });\n setTriggerRaw(triggerJson);\n writeProps({ trigger: triggerJson });\n },\n [writeProps]\n );\n\n const fetchCollections = useCallback(async () => {\n const deedDid = local.deedDid.trim();\n if (!deedDid) {\n setError('Please enter a DID first');\n return;\n }\n\n const persisted = { ...local, deedDid };\n setLocal(persisted);\n onInputsChange(serializeEvalEngineInputs(persisted));\n\n setLoadingCollections(true);\n setError(null);\n try {\n const response = await handlers.getClaimCollections(deedDid);\n const fetched = response?.collections || [];\n setCollections(fetched);\n\n if (fetched.length === 0) {\n setError('No claim collections found for this DID');\n }\n\n if (local.collectionId && !fetched.some((c: ClaimCollection) => c.id === local.collectionId)) {\n update({ collectionId: '' });\n }\n } catch (err) {\n setCollections([]);\n setError(err instanceof Error ? err.message : 'Failed to fetch claim collections');\n } finally {\n setLoadingCollections(false);\n }\n }, [handlers, local, onInputsChange, update]);\n\n // On open in manual mode, auto-load the collection list when one is already\n // chosen so the saved selection is visible.\n useEffect(() => {\n if (local.deedDid.trim() && local.collectionId && collections.length === 0 && !loadingCollections) {\n void fetchCollections();\n }\n }, [local.deedDid, local.collectionId]);\n\n const collectionOptions = useMemo(\n () =>\n collections.map((collection) => ({\n value: collection.id,\n label: formatCollectionOptionLabel(collection),\n })),\n [collections]\n );\n\n // Live prices for THIS collection (billing guide §11) — the card depends on\n // the relayer node the collection sits on, so the static list is only a\n // fallback. Blank in trigger mode (no collection yet), which is fine: the\n // fallback card is what the section then shows.\n const { card, live } = useEnginePricing({ collectionId: local.collectionId, evalEngineUrl: local.evalEngineUrl });\n const payLine = ownerPaysLine(live);\n\n // Rules cross-check (§B.2, warning not error): when the rules declare\n // aiChecks[] and the AI toggle is off, those rules will send claims to\n // review/rejection instead of running. The rules live in this same inputs\n // blob (no separate fetch needed, unlike the legacy register block) — just\n // read what's already loaded.\n const rubricHasAiChecks = (local.rubric?.aiChecks?.length ?? 0) > 0;\n\n // \"Can the same person do this again tomorrow?\" is the answer the duplicate check actually\n // turns on, so it is required — but only once the owner has started answering at all. A block\n // where all three are untouched enrols exactly as it did before, sending no description.\n const collectionContextStarted = !!(local.whatIsCollected?.trim() || local.repeatSubmissions || local.differentWhen?.length || local.differentWhenOther?.trim());\n const repeatAnswerMissing = collectionContextStarted && !local.repeatSubmissions;\n\n return (\n <Stack gap=\"md\">\n <Stack gap={6}>\n <Text size=\"sm\" fw={600}>\n How is the collection chosen?\n </Text>\n <Group gap=\"sm\" align=\"stretch\" grow>\n <ModeCard\n active={mode === 'trigger'}\n icon={<IconBolt size={16} color=\"var(--mantine-color-accent-5)\" />}\n title=\"From a created collection\"\n description=\"Wait for a Claim Collection block to create a collection, then enroll it automatically.\"\n onClick={switchToTrigger}\n />\n <ModeCard\n active={mode === 'manual'}\n icon={<IconPencil size={16} />}\n title=\"Enter manually\"\n description=\"Pick the entity and an existing collection yourself.\"\n onClick={switchToManual}\n />\n </Group>\n </Stack>\n\n {mode === 'trigger' ? (\n <Stack gap=\"sm\">\n <Select\n label=\"Source collection block\"\n placeholder={sourceOptions.length === 0 ? 'No collection-creating blocks in this flow yet' : 'Select a Claim Collection block'}\n data={sourceOptions.map((o) => ({ value: o.value, label: o.label }))}\n value={triggerSpec?.sourceBlockId || null}\n onChange={(value) => {\n const option = sourceOptions.find((o) => o.value === value);\n if (option) pickSource(option.value, option.eventName);\n }}\n disabled={sourceOptions.length === 0}\n searchable\n />\n\n {selectedSource ? (\n <Alert icon={<IconClock size={16} />} color=\"accent\" styles={actionAlertStyles}>\n <Text size=\"xs\">\n Enrolls the collection when <b>{selectedSource.label}</b> creates it. The entity and collection are taken from that event — there's nothing to enter here.\n </Text>\n </Alert>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n Choose the Claim Collection block whose “created” event should enroll a new collection. Until it fires, this block waits.\n </Text>\n )}\n </Stack>\n ) : (\n <Stack gap=\"md\">\n <DataInput\n label=\"DID\"\n placeholder=\"Enter deed DID\"\n description=\"The DID identifier for fetching claim collections.\"\n value={local.deedDid}\n onChange={(value) => update({ deedDid: value })}\n editorDocument={editor?.document || []}\n currentBlockId={blockId}\n required\n />\n\n <Button\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => {\n const entityDid = handlers.getEntityDid?.();\n if (entityDid) update({ deedDid: entityDid });\n }}\n >\n Use Current Entity\n </Button>\n\n <BasePrimaryButton onClick={fetchCollections} disabled={!local.deedDid.trim() || loadingCollections}>\n {loadingCollections ? <Loader size=\"xs\" color=\"dark\" /> : 'Get Collections'}\n </BasePrimaryButton>\n\n {error && (\n <Alert color=\"red\" styles={actionAlertStyles}>\n {error}\n </Alert>\n )}\n\n {collectionOptions.length > 0 && (\n <BaseSelect\n label=\"Claim Collection\"\n placeholder=\"Select a collection\"\n value={local.collectionId || null}\n onChange={(value) => update({ collectionId: value || '' })}\n data={collectionOptions}\n required\n searchable\n />\n )}\n </Stack>\n )}\n\n {/* Billing-notice identity (engine billing guide §10/§19), both refreshed on re-register.\n The name (optional) replaces the bare id on every engine notice — \"Solar Kitchens\n (collection 913)\" instead of \"Claim collection 913\". The email is REQUIRED (owner,\n 2026-07-30): it is where the engine says \"a payment failed / your evaluations paused\",\n and without one those notices have nowhere to go. It is prefilled from the owner's\n account via the host (see the effect below); the prefill failing just leaves it blank\n for the owner to type — enrolment enforces it in the action, before the PIN. */}\n <BaseTextInput\n label=\"Collection name\"\n placeholder=\"e.g. Solar Kitchens\"\n description=\"Shown on billing emails and notices next to the collection id, so you can tell your collections apart. Optional.\"\n maxLength={120}\n value={local.displayName || ''}\n onChange={(e) => update({ displayName: e.currentTarget.value })}\n />\n <BaseTextInput\n label=\"Billing email\"\n placeholder=\"you@example.org\"\n description=\"If a payment fails or your evaluations pause, this is where we tell you. Filled from your account when we can.\"\n type=\"email\"\n required\n value={local.notifyEmail || ''}\n onChange={(e) => update({ notifyEmail: e.currentTarget.value })}\n />\n\n {/* What this collection collects, in the owner's words. It exists for ONE job: the engine's\n duplicate check compares two claims with no idea what the collection is for, so on a\n repeated task (the same worker sorting waste again tomorrow) honest work reads as a\n duplicate. Three easy questions, composed into one sentence-per-line string at run time\n (`evalRegister/description.ts`) — nothing here is a rubric rule. Answering is optional;\n answering NOTHING sends no description at all, which leaves whatever was registered\n before untouched. The maxLengths are the real enforcement of the engine's 1000-char cap:\n the inputs are capped so the composed string cannot be. */}\n <CollapsibleSection title=\"What this collection collects\" defaultOpen>\n <Stack gap=\"md\">\n <Text size=\"xs\" c=\"dimmed\">\n This helps us tell a genuine repeat of the same task from the same claim sent twice. Optional, but worth a minute.\n </Text>\n\n <BaseTextInput\n label=\"What do people do to make a claim here?\"\n description=\"One sentence, like you're telling a friend.\"\n placeholder=\"They sort trash into bins and weigh it.\"\n maxLength={WHAT_IS_COLLECTED_MAX}\n value={local.whatIsCollected || ''}\n onChange={(e) => update({ whatIsCollected: e.currentTarget.value })}\n />\n\n <BaseSelect\n label=\"Can the same person do this again tomorrow?\"\n placeholder=\"Pick one\"\n data={REPEAT_SUBMISSIONS_OPTIONS.map((option) => ({ value: option.value, label: option.label }))}\n value={local.repeatSubmissions || null}\n onChange={(value) => update({ repeatSubmissions: normalizeRepeatSubmissions(value) })}\n // Required only once they have started answering: this is the answer that decides\n // whether a repeat is normal, so the other two are close to useless without it.\n required={collectionContextStarted}\n error={repeatAnswerMissing ? 'Please pick one, so we don’t flag normal repeat work as a duplicate.' : undefined}\n />\n\n <Checkbox.Group\n label=\"When the same person does it again, what is different?\"\n description=\"Tick everything that changes.\"\n value={local.differentWhen || []}\n onChange={(value) => update({ differentWhen: normalizeDifferentWhen(value) })}\n >\n <Stack gap=\"xs\" mt=\"xs\">\n {DIFFERENT_WHEN_OPTIONS.map((option) => (\n <Checkbox key={option.value} size=\"xs\" value={option.value} label={option.label} />\n ))}\n </Stack>\n </Checkbox.Group>\n\n <BaseTextInput\n label=\"Other\"\n placeholder=\"Something else that changes\"\n maxLength={DIFFERENT_WHEN_OTHER_MAX}\n value={local.differentWhenOther || ''}\n onChange={(e) => update({ differentWhenOther: e.currentTarget.value })}\n />\n </Stack>\n </CollapsibleSection>\n\n <CollapsibleSection title=\"Checks & pricing\" defaultOpen>\n <Stack gap=\"md\">\n <Text size=\"xs\" c=\"dimmed\">\n You’ll write the approval rules in the next step (flow mode), after this block is configured.\n </Text>\n\n <PriceLine title=\"Checking a claim\" price={`${usdLabel(card.baseUsd)} / claim`} description=\"The engine checks every claim against your rules.\" />\n\n <PriceLine\n title={\n <Switch\n size=\"sm\"\n label=\"AI checks\"\n checked={local.allowAiChecks}\n onChange={(e) => {\n const on = e.currentTarget.checked;\n // Image detection lives inside the AI lane — turning AI off\n // always turns it off too (§B.2 dependency).\n update(on ? { allowAiChecks: true } : { allowAiChecks: false, allowImageChecks: false });\n }}\n styles={{ label: { fontWeight: 500 } }}\n />\n }\n price={`${usdLabel(card.aiRuleUsd)} per AI rule / claim`}\n description={`Your rules can ask AI to look at answers, photos and documents. 3 AI rules = ${usdLabel(card.aiRuleUsd * 3)}.`}\n />\n\n <PriceLine\n title={\n <Switch\n size=\"sm\"\n label=\"Fake-photo detection\"\n checked={local.allowAiChecks && local.allowImageChecks}\n disabled={!local.allowAiChecks}\n onChange={(e) => update({ allowImageChecks: e.currentTarget.checked })}\n styles={{ label: { fontWeight: 500 } }}\n />\n }\n price={`${usdLabel(card.photoUsd)} / photo`}\n description=\"Spots AI-made photos pretending to be real evidence. Needs AI checks on.\"\n />\n\n {/* What it actually costs THEM: the card minus what this collection's own\n evaluation payment credits back (billing guide §3). The headline only\n appears once the engine has resolved this collection — never guessed. */}\n <Stack gap={2}>\n {payLine && (\n <Text size=\"sm\" fw={500}>\n {payLine}\n </Text>\n )}\n <Text size=\"xs\" c=\"dimmed\">\n {billingNote(card, live)}\n </Text>\n </Stack>\n\n {/* Free, but the consequential one: this is what actually releases payment. */}\n <Stack gap={2}>\n <Switch\n size=\"sm\"\n label=\"Submit decisions on chain\"\n checked={local.allowChainEvaluation}\n onChange={(e) => update({ allowChainEvaluation: e.currentTarget.checked })}\n styles={{ label: { fontWeight: 500 } }}\n />\n <Text size=\"xs\" c=\"dimmed\" pl={44}>\n {local.allowChainEvaluation\n ? 'Approved and rejected claims are submitted to the chain, which releases payment. Enrolling grants the engine the evaluator right this needs — signed in the same step.'\n : 'The engine records its decision and writes nothing on chain — nobody gets paid automatically.'}\n </Text>\n </Stack>\n\n {/* The ceiling on the evaluator grant the owner signs at enrolment.\n Denoms are the owner's call — this block never assumes the\n collection pays in IXO. Left blank, that denom is not permitted. */}\n {local.allowChainEvaluation && (\n <GrantCapInput\n title=\"Most the engine may pay out\"\n description=\"Per approved claim. Set the denom your collection pays in — leave a currency blank to disallow it.\"\n value={capValuesFromCoins(local.evaluateMaxAmount)}\n onChange={(value) => update({ evaluateMaxAmount: buildCapCoins(value) })}\n />\n )}\n\n {/* Only meaningful once decisions go on chain, so it is nested under that toggle — but\n the stored value is NOT cleared when chain evaluation goes off (the engine simply\n never reads it), so an owner toggling chain writes off and on keeps their answer. */}\n {local.allowChainEvaluation && (\n <Stack gap={2}>\n <Switch\n size=\"sm\"\n label=\"Approve even when the approval pays nothing\"\n checked={local.allowZeroPayoutApprovals}\n onChange={(e) => update({ allowZeroPayoutApprovals: e.currentTarget.checked })}\n styles={{ label: { fontWeight: 500 } }}\n />\n <Text size=\"xs\" c=\"dimmed\" pl={44}>\n {local.allowZeroPayoutApprovals\n ? 'Approvals are submitted on chain even when this collection pays claimants nothing — for collections that record proof rather than pay out. If you meant to pay and have not set an amount yet, leave this off.'\n : 'If an approval would pay nothing, the engine records its decision and waits for you to submit it on chain with an amount. Turn this on only if paying nothing is intended.'}\n </Text>\n </Stack>\n )}\n\n {rubricHasAiChecks && !local.allowAiChecks && (\n <Alert color=\"yellow\" icon={<IconAlertTriangle size={16} />} styles={actionAlertStyles}>\n <Text size=\"xs\">Your approval rules include AI checks — with AI checks disabled those rules will send claims to review/rejection instead.</Text>\n </Alert>\n )}\n </Stack>\n </CollapsibleSection>\n\n <CollapsibleSection title=\"Advanced (optional)\">\n <Stack gap=\"sm\">\n <Alert color=\"neutralColor\" variant=\"light\" icon={icon(IconInfoCircle, 16)}>\n <Text size=\"xs\">Leave blank to use the host's network defaults. Only set these to point at a non-default engine, store, or oracle.</Text>\n </Alert>\n <BaseTextInput label=\"Oracle DID\" placeholder=\"Default: host oracle DID\" value={local.oracleDid || ''} onChange={(e) => update({ oracleDid: e.currentTarget.value })} />\n <BaseTextInput\n label=\"Evaluation engine URL\"\n placeholder=\"Default: host engine URL\"\n value={local.evalEngineUrl || ''}\n onChange={(e) => update({ evalEngineUrl: e.currentTarget.value })}\n />\n <BaseTextInput\n label=\"UCAN Store URL\"\n placeholder=\"Default: host store URL\"\n value={local.ucanStoreUrl || ''}\n onChange={(e) => update({ ucanStoreUrl: e.currentTarget.value })}\n />\n </Stack>\n </CollapsibleSection>\n </Stack>\n );\n};\n\nexport default EvalEngineConfig;\n"],"mappings":"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","names":["icon"]}
|