@ixo/editor 6.32.1 → 6.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-5JF23UP3.js +0 -59687
- package/dist/chunk-5JF23UP3.js.map +0 -1
- package/dist/chunk-A4CWC4AG.js +0 -374
- package/dist/chunk-A4CWC4AG.js.map +0 -1
- package/dist/chunk-NEOPTPDF.js.map +0 -1
|
@@ -0,0 +1,846 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveClaimFileRef
|
|
3
|
+
} from "./chunk-OMLI45ER.js";
|
|
4
|
+
import {
|
|
5
|
+
UTF8_BOM,
|
|
6
|
+
rowsToCsv,
|
|
7
|
+
timestampSuffix
|
|
8
|
+
} from "./chunk-5NTKDOP6.js";
|
|
9
|
+
import {
|
|
10
|
+
getClaimStatusInfo
|
|
11
|
+
} from "./chunk-NKE4TL43.js";
|
|
12
|
+
import {
|
|
13
|
+
icon
|
|
14
|
+
} from "./chunk-YN4CEKCF.js";
|
|
15
|
+
|
|
16
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/DownloadCsvButton.tsx
|
|
17
|
+
import React, { useCallback, useState } from "react";
|
|
18
|
+
import { ActionIcon } from "@mantine/core";
|
|
19
|
+
import { IconDownload, IconFileZip } from "@tabler/icons-react";
|
|
20
|
+
var DownloadIconButton = ({ onDownload, disabled, label, Icon, onError }) => {
|
|
21
|
+
const [busy, setBusy] = useState(false);
|
|
22
|
+
const handleClick = useCallback(async () => {
|
|
23
|
+
setBusy(true);
|
|
24
|
+
try {
|
|
25
|
+
await onDownload();
|
|
26
|
+
} catch (err) {
|
|
27
|
+
const message = err instanceof Error ? err.message : "The download failed.";
|
|
28
|
+
console.error(`[dataExport] ${label} failed`, err);
|
|
29
|
+
onError?.(message);
|
|
30
|
+
} finally {
|
|
31
|
+
setBusy(false);
|
|
32
|
+
}
|
|
33
|
+
}, [onDownload, onError, label]);
|
|
34
|
+
return /* @__PURE__ */ React.createElement(ActionIcon, { variant: "subtle", color: "gray", size: "sm", "aria-label": label, title: label, loading: busy, disabled, onClick: handleClick }, /* @__PURE__ */ React.createElement(Icon, { size: 16 }));
|
|
35
|
+
};
|
|
36
|
+
var DownloadCsvButton = ({ onDownload, disabled, label = "Download CSV", onError }) => /* @__PURE__ */ React.createElement(DownloadIconButton, { onDownload, disabled, label, Icon: IconDownload, onError });
|
|
37
|
+
var DownloadZipButton = ({ onDownload, disabled, label = "Download CSV + media (ZIP)", onError }) => /* @__PURE__ */ React.createElement(DownloadIconButton, { onDownload, disabled, label, Icon: IconFileZip, onError });
|
|
38
|
+
|
|
39
|
+
// src/mantine/utils/bidStatus.ts
|
|
40
|
+
var STATUS_META = {
|
|
41
|
+
approved: { label: "Approved", color: "green", isTerminal: true },
|
|
42
|
+
rejected: { label: "Rejected", color: "red", isTerminal: true },
|
|
43
|
+
pending: { label: "Pending", color: "yellow", isTerminal: false }
|
|
44
|
+
};
|
|
45
|
+
function parseStatusKey(value) {
|
|
46
|
+
const normalized = String(value ?? "").trim().toLowerCase();
|
|
47
|
+
if (normalized === "approved" || normalized === "approve") return "approved";
|
|
48
|
+
if (normalized === "rejected" || normalized === "reject") return "rejected";
|
|
49
|
+
if (normalized === "pending") return "pending";
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
function granteeRoleForBid(bid) {
|
|
53
|
+
const role = String(bid?.role || "").toLowerCase();
|
|
54
|
+
return role === "evaluation_agent" || role === "ea" ? "evaluate" : "submit";
|
|
55
|
+
}
|
|
56
|
+
function getBidStatusInfo(bid, context = {}) {
|
|
57
|
+
const asInfo = (key, source) => ({ key, ...STATUS_META[key], source });
|
|
58
|
+
const session = context.evaluatedByBidId?.[bid?.id ?? ""];
|
|
59
|
+
if (session) return asInfo(session, "session");
|
|
60
|
+
const direct = parseStatusKey(bid?.status);
|
|
61
|
+
if (direct) return asInfo(direct, "payload");
|
|
62
|
+
try {
|
|
63
|
+
const data = typeof bid?.data === "string" ? JSON.parse(bid.data) : bid?.data;
|
|
64
|
+
const embedded = parseStatusKey(data?.status);
|
|
65
|
+
if (embedded) return asInfo(embedded, "payload");
|
|
66
|
+
} catch {
|
|
67
|
+
}
|
|
68
|
+
const grantees = context.grantees;
|
|
69
|
+
if (grantees?.length) {
|
|
70
|
+
const wanted = granteeRoleForBid(bid);
|
|
71
|
+
if (grantees.some((grantee) => grantee.address === bid?.address && grantee.role === wanted)) {
|
|
72
|
+
return asInfo("approved", "grant");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return asInfo("pending", "default");
|
|
76
|
+
}
|
|
77
|
+
function describeGrantState(address, grantees) {
|
|
78
|
+
const grants = grantees.filter((grantee) => grantee.address === address);
|
|
79
|
+
if (grants.length === 0) return "none";
|
|
80
|
+
return grants.map((grant) => `${grant.role} (quota ${grant.agentQuota ?? "\u2014"})`).join("; ");
|
|
81
|
+
}
|
|
82
|
+
var BID_GRANT_STATE_LABELS = {
|
|
83
|
+
open: "Open \u2014 awaiting decision",
|
|
84
|
+
granted: "Granted \u2014 active",
|
|
85
|
+
granted_other_role: "Granted \u2014 different role",
|
|
86
|
+
lapsed: "No active grant"
|
|
87
|
+
};
|
|
88
|
+
function classifyBidGrantState(bid, grantees, context = {}) {
|
|
89
|
+
const decided = getBidStatusInfo(bid, { ...context, grantees: void 0 }).key !== "pending" || !!bid.decided;
|
|
90
|
+
if (!decided) return "open";
|
|
91
|
+
const wanted = granteeRoleForBid(bid);
|
|
92
|
+
const onCollection = grantees.filter((grantee) => grantee.address === bid.address);
|
|
93
|
+
if (onCollection.some((grantee) => grantee.role === wanted)) return "granted";
|
|
94
|
+
if (onCollection.length > 0) return "granted_other_role";
|
|
95
|
+
return "lapsed";
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/buildBidRows.ts
|
|
99
|
+
function bidAnswers(bid) {
|
|
100
|
+
try {
|
|
101
|
+
const parsed = typeof bid.data === "string" ? JSON.parse(bid.data) : bid.data;
|
|
102
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
103
|
+
return parsed;
|
|
104
|
+
}
|
|
105
|
+
} catch {
|
|
106
|
+
return { data: bid.data };
|
|
107
|
+
}
|
|
108
|
+
return {};
|
|
109
|
+
}
|
|
110
|
+
function buildBidRows(bids, grantees, options = {}) {
|
|
111
|
+
const statusContext = { grantees, evaluatedByBidId: options.evaluatedByBidId };
|
|
112
|
+
return bids.map((bid) => {
|
|
113
|
+
const answers = options.answersByBidId?.[bid.id] ?? bidAnswers(bid);
|
|
114
|
+
const status = getBidStatusInfo(bid, statusContext);
|
|
115
|
+
const grantState = classifyBidGrantState(bid, grantees, statusContext);
|
|
116
|
+
return {
|
|
117
|
+
bidId: bid.id,
|
|
118
|
+
name: options.namesByDid?.[bid.did] || "",
|
|
119
|
+
did: bid.did,
|
|
120
|
+
address: bid.address,
|
|
121
|
+
role: bid.role,
|
|
122
|
+
created: bid.created,
|
|
123
|
+
status: status.key,
|
|
124
|
+
statusSource: status.source,
|
|
125
|
+
// The column that answers "did anything come of this bid?". `lapsed`
|
|
126
|
+
// means the account submitted, was decided, and holds no grant today —
|
|
127
|
+
// a population that appears in neither the bids list nor the grant list.
|
|
128
|
+
bidState: grantState,
|
|
129
|
+
bidStateNote: BID_GRANT_STATE_LABELS[grantState],
|
|
130
|
+
activeGrant: grantState === "granted" || grantState === "granted_other_role" ? "yes" : "no",
|
|
131
|
+
grantDetail: describeGrantState(bid.address, grantees),
|
|
132
|
+
...answers
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// src/core/utils/zip.ts
|
|
138
|
+
var MAX_ENTRIES = 65535;
|
|
139
|
+
var MAX_ARCHIVE_BYTES = 4294967295;
|
|
140
|
+
var CRC_TABLE = (() => {
|
|
141
|
+
const table = new Uint32Array(256);
|
|
142
|
+
for (let i = 0; i < 256; i += 1) {
|
|
143
|
+
let c = i;
|
|
144
|
+
for (let k = 0; k < 8; k += 1) c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
|
|
145
|
+
table[i] = c >>> 0;
|
|
146
|
+
}
|
|
147
|
+
return table;
|
|
148
|
+
})();
|
|
149
|
+
function crc32(bytes) {
|
|
150
|
+
let c = 4294967295;
|
|
151
|
+
for (let i = 0; i < bytes.length; i += 1) c = CRC_TABLE[(c ^ bytes[i]) & 255] ^ c >>> 8;
|
|
152
|
+
return (c ^ 4294967295) >>> 0;
|
|
153
|
+
}
|
|
154
|
+
function dosDateTime(date) {
|
|
155
|
+
const year = Math.max(1980, date.getFullYear());
|
|
156
|
+
return {
|
|
157
|
+
time: (date.getHours() & 31) << 11 | (date.getMinutes() & 63) << 5 | date.getSeconds() >> 1 & 31,
|
|
158
|
+
date: (year - 1980 & 127) << 9 | (date.getMonth() + 1 & 15) << 5 | date.getDate() & 31
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function toBytes(data, encoder) {
|
|
162
|
+
return typeof data === "string" ? encoder.encode(data) : data;
|
|
163
|
+
}
|
|
164
|
+
function createZipBlob(entries, options) {
|
|
165
|
+
if (entries.length > MAX_ENTRIES) {
|
|
166
|
+
throw new Error(`ZIP archives are limited to ${MAX_ENTRIES} entries (got ${entries.length}).`);
|
|
167
|
+
}
|
|
168
|
+
const encoder = new TextEncoder();
|
|
169
|
+
const { time, date } = dosDateTime(options?.modifiedAt ?? /* @__PURE__ */ new Date());
|
|
170
|
+
const seen = /* @__PURE__ */ new Set();
|
|
171
|
+
const prepared = entries.map((entry) => {
|
|
172
|
+
const path = entry.path.replace(/^\/+/, "");
|
|
173
|
+
if (seen.has(path)) throw new Error(`Duplicate ZIP entry path: ${path}`);
|
|
174
|
+
seen.add(path);
|
|
175
|
+
const nameBytes = encoder.encode(path);
|
|
176
|
+
const dataBytes = toBytes(entry.data, encoder);
|
|
177
|
+
return { nameBytes, dataBytes, crc: crc32(dataBytes), offset: 0 };
|
|
178
|
+
});
|
|
179
|
+
const localSize = prepared.reduce((sum, e) => sum + 30 + e.nameBytes.length + e.dataBytes.length, 0);
|
|
180
|
+
const centralSize = prepared.reduce((sum, e) => sum + 46 + e.nameBytes.length, 0);
|
|
181
|
+
const total = localSize + centralSize + 22;
|
|
182
|
+
if (total > MAX_ARCHIVE_BYTES) {
|
|
183
|
+
throw new Error(`Archive would be ${Math.round(total / 1024 / 1024)} MB, over the 4 GB ZIP limit. Export a smaller selection.`);
|
|
184
|
+
}
|
|
185
|
+
const buffer = new Uint8Array(total);
|
|
186
|
+
const view = new DataView(buffer.buffer);
|
|
187
|
+
let cursor = 0;
|
|
188
|
+
const u16 = (value) => {
|
|
189
|
+
view.setUint16(cursor, value, true);
|
|
190
|
+
cursor += 2;
|
|
191
|
+
};
|
|
192
|
+
const u32 = (value) => {
|
|
193
|
+
view.setUint32(cursor, value >>> 0, true);
|
|
194
|
+
cursor += 4;
|
|
195
|
+
};
|
|
196
|
+
const raw = (bytes) => {
|
|
197
|
+
buffer.set(bytes, cursor);
|
|
198
|
+
cursor += bytes.length;
|
|
199
|
+
};
|
|
200
|
+
for (const entry of prepared) {
|
|
201
|
+
entry.offset = cursor;
|
|
202
|
+
u32(67324752);
|
|
203
|
+
u16(20);
|
|
204
|
+
u16(2048);
|
|
205
|
+
u16(0);
|
|
206
|
+
u16(time);
|
|
207
|
+
u16(date);
|
|
208
|
+
u32(entry.crc);
|
|
209
|
+
u32(entry.dataBytes.length);
|
|
210
|
+
u32(entry.dataBytes.length);
|
|
211
|
+
u16(entry.nameBytes.length);
|
|
212
|
+
u16(0);
|
|
213
|
+
raw(entry.nameBytes);
|
|
214
|
+
raw(entry.dataBytes);
|
|
215
|
+
}
|
|
216
|
+
const centralStart = cursor;
|
|
217
|
+
for (const entry of prepared) {
|
|
218
|
+
u32(33639248);
|
|
219
|
+
u16(20);
|
|
220
|
+
u16(20);
|
|
221
|
+
u16(2048);
|
|
222
|
+
u16(0);
|
|
223
|
+
u16(time);
|
|
224
|
+
u16(date);
|
|
225
|
+
u32(entry.crc);
|
|
226
|
+
u32(entry.dataBytes.length);
|
|
227
|
+
u32(entry.dataBytes.length);
|
|
228
|
+
u16(entry.nameBytes.length);
|
|
229
|
+
u16(0);
|
|
230
|
+
u16(0);
|
|
231
|
+
u16(0);
|
|
232
|
+
u16(0);
|
|
233
|
+
u32(0);
|
|
234
|
+
u32(entry.offset);
|
|
235
|
+
raw(entry.nameBytes);
|
|
236
|
+
}
|
|
237
|
+
const centralEnd = cursor;
|
|
238
|
+
u32(101010256);
|
|
239
|
+
u16(0);
|
|
240
|
+
u16(0);
|
|
241
|
+
u16(prepared.length);
|
|
242
|
+
u16(prepared.length);
|
|
243
|
+
u32(centralEnd - centralStart);
|
|
244
|
+
u32(centralStart);
|
|
245
|
+
u16(0);
|
|
246
|
+
return new Blob([buffer], { type: "application/zip" });
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// src/mantine/blocks/action/actionTypes/_shared/media/collectAttachments.ts
|
|
250
|
+
var ENVELOPE_KEYS = /* @__PURE__ */ new Set(["@context", "credentials", "proof", "issuer", "issuanceDate", "expirationDate"]);
|
|
251
|
+
function toAttachment(raw, allowBareString) {
|
|
252
|
+
if (!raw) return null;
|
|
253
|
+
if (typeof raw === "object" && typeof raw.content === "string") {
|
|
254
|
+
const obj = raw;
|
|
255
|
+
const resolved = resolveClaimFileRef(obj.content);
|
|
256
|
+
if (!resolved) return null;
|
|
257
|
+
return {
|
|
258
|
+
name: typeof obj.name === "string" ? obj.name : "file",
|
|
259
|
+
type: typeof obj.type === "string" ? obj.type : "",
|
|
260
|
+
content: resolved
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
if (typeof raw === "string" && allowBareString) {
|
|
264
|
+
const resolved = resolveClaimFileRef(raw);
|
|
265
|
+
if (!resolved) return null;
|
|
266
|
+
const name = resolved.split("/").pop()?.split("?")[0] || "file";
|
|
267
|
+
return { name, type: "", content: resolved };
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
function collectClaimAttachments(credentialSubject, surveyModel) {
|
|
272
|
+
if (!credentialSubject || typeof credentialSubject !== "object") return [];
|
|
273
|
+
const questionTitles = /* @__PURE__ */ new Map();
|
|
274
|
+
const fileQuestionNames = /* @__PURE__ */ new Set();
|
|
275
|
+
if (surveyModel) {
|
|
276
|
+
for (const q of surveyModel.getAllQuestions(false, false, true)) {
|
|
277
|
+
const qType = (q.getType?.() || "").toLowerCase();
|
|
278
|
+
const name = q.name;
|
|
279
|
+
if (name) questionTitles.set(name, q.title || name);
|
|
280
|
+
if (qType === "file" || qType === "signaturepad" || qType === "image") {
|
|
281
|
+
fileQuestionNames.add(name);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
const result = [];
|
|
286
|
+
const seenContent = /* @__PURE__ */ new Set();
|
|
287
|
+
const push = (label, file) => {
|
|
288
|
+
if (seenContent.has(file.content)) return;
|
|
289
|
+
seenContent.add(file.content);
|
|
290
|
+
result.push({ ...file, label });
|
|
291
|
+
};
|
|
292
|
+
const pushFrom = (key, value) => {
|
|
293
|
+
const allowBare = fileQuestionNames.has(key);
|
|
294
|
+
const entries = Array.isArray(value) ? value : [value];
|
|
295
|
+
const files = entries.map((v) => toAttachment(v, allowBare)).filter((f) => !!f);
|
|
296
|
+
if (!files.length) return false;
|
|
297
|
+
const label = questionTitles.get(key) || key;
|
|
298
|
+
for (const f of files) push(label, f);
|
|
299
|
+
return true;
|
|
300
|
+
};
|
|
301
|
+
const seenRootKeys = /* @__PURE__ */ new Set();
|
|
302
|
+
for (const name of fileQuestionNames) {
|
|
303
|
+
if (credentialSubject[name] !== void 0) {
|
|
304
|
+
pushFrom(name, credentialSubject[name]);
|
|
305
|
+
seenRootKeys.add(name);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const walk = (node, isRoot) => {
|
|
309
|
+
if (!node || typeof node !== "object") return;
|
|
310
|
+
for (const [key, value] of Object.entries(node)) {
|
|
311
|
+
if (isRoot && seenRootKeys.has(key)) continue;
|
|
312
|
+
if (ENVELOPE_KEYS.has(key)) continue;
|
|
313
|
+
if (!pushFrom(key, value) && value && typeof value === "object") walk(value, false);
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
walk(credentialSubject, true);
|
|
317
|
+
return result;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// src/mantine/blocks/action/actionTypes/_shared/media/mediaNaming.ts
|
|
321
|
+
var MEDIA_DIR = "media";
|
|
322
|
+
var MEDIA_SEPARATOR = "__";
|
|
323
|
+
var SEQ_DIGITS = 4;
|
|
324
|
+
var REF_MAX = 14;
|
|
325
|
+
var FIELD_MAX = 32;
|
|
326
|
+
var NAME_MAX = 48;
|
|
327
|
+
var WINDOWS_RESERVED = /^(con|prn|aux|nul|com\d|lpt\d)$/i;
|
|
328
|
+
function sanitizeSegment(value, maxLength) {
|
|
329
|
+
const out = String(value ?? "").replace(/[^A-Za-z0-9.-]+/g, "-").replace(/-{2,}/g, "-").replace(/^[-.]+|[-.]+$/g, "").slice(0, maxLength).replace(/[-.]+$/g, "");
|
|
330
|
+
return out;
|
|
331
|
+
}
|
|
332
|
+
function splitExtension(fileName) {
|
|
333
|
+
const dot = fileName.lastIndexOf(".");
|
|
334
|
+
if (dot <= 0 || dot === fileName.length - 1) return { stem: fileName, ext: "" };
|
|
335
|
+
const ext = fileName.slice(dot + 1);
|
|
336
|
+
if (!/^[A-Za-z0-9]{1,5}$/.test(ext)) return { stem: fileName, ext: "" };
|
|
337
|
+
return { stem: fileName.slice(0, dot), ext };
|
|
338
|
+
}
|
|
339
|
+
var MIME_EXTENSIONS = {
|
|
340
|
+
"image/jpeg": "jpg",
|
|
341
|
+
"image/jpg": "jpg",
|
|
342
|
+
"image/png": "png",
|
|
343
|
+
"image/gif": "gif",
|
|
344
|
+
"image/webp": "webp",
|
|
345
|
+
"image/svg+xml": "svg",
|
|
346
|
+
"image/bmp": "bmp",
|
|
347
|
+
"image/heic": "heic",
|
|
348
|
+
"application/pdf": "pdf",
|
|
349
|
+
"application/msword": "doc",
|
|
350
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
|
|
351
|
+
"application/vnd.ms-excel": "xls",
|
|
352
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
|
|
353
|
+
"text/plain": "txt",
|
|
354
|
+
"text/csv": "csv",
|
|
355
|
+
"video/mp4": "mp4",
|
|
356
|
+
"video/webm": "webm",
|
|
357
|
+
"video/quicktime": "mov",
|
|
358
|
+
"audio/mpeg": "mp3",
|
|
359
|
+
"audio/wav": "wav",
|
|
360
|
+
"audio/ogg": "ogg"
|
|
361
|
+
};
|
|
362
|
+
function resolveExtension(originalName, mimeType) {
|
|
363
|
+
const key = String(mimeType || "").split(";")[0].trim().toLowerCase();
|
|
364
|
+
const fromMime = MIME_EXTENSIONS[key];
|
|
365
|
+
if (fromMime) return fromMime;
|
|
366
|
+
const fromName = splitExtension(originalName).ext;
|
|
367
|
+
return fromName ? fromName.toLowerCase() : "bin";
|
|
368
|
+
}
|
|
369
|
+
function buildMediaFileName(parts) {
|
|
370
|
+
const seq = String(Math.max(0, Math.trunc(parts.seq))).padStart(SEQ_DIGITS, "0");
|
|
371
|
+
const ref = sanitizeSegment(parts.recordId, REF_MAX) || "record";
|
|
372
|
+
const field = sanitizeSegment(parts.fieldName, FIELD_MAX) || "field";
|
|
373
|
+
const idx = String(Math.max(1, Math.trunc(parts.fileIndex))).padStart(2, "0");
|
|
374
|
+
const original = String(parts.originalName || "").trim();
|
|
375
|
+
const { stem } = splitExtension(original);
|
|
376
|
+
let name = sanitizeSegment(stem, NAME_MAX);
|
|
377
|
+
if (!name || WINDOWS_RESERVED.test(name)) name = "file";
|
|
378
|
+
const ext = resolveExtension(original, parts.mimeType);
|
|
379
|
+
return [seq, ref, field, idx, name].join(MEDIA_SEPARATOR) + `.${ext}`;
|
|
380
|
+
}
|
|
381
|
+
function buildMediaPath(parts) {
|
|
382
|
+
return `${MEDIA_DIR}/${buildMediaFileName(parts)}`;
|
|
383
|
+
}
|
|
384
|
+
function dedupeMediaPath(path, taken) {
|
|
385
|
+
if (!taken.has(path)) {
|
|
386
|
+
taken.add(path);
|
|
387
|
+
return path;
|
|
388
|
+
}
|
|
389
|
+
const dot = path.lastIndexOf(".");
|
|
390
|
+
const stem = dot > 0 ? path.slice(0, dot) : path;
|
|
391
|
+
const ext = dot > 0 ? path.slice(dot) : "";
|
|
392
|
+
for (let n = 2; n < 1e3; n += 1) {
|
|
393
|
+
const candidate = `${stem}-${n}${ext}`;
|
|
394
|
+
if (!taken.has(candidate)) {
|
|
395
|
+
taken.add(candidate);
|
|
396
|
+
return candidate;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
throw new Error(`Unable to find a unique archive path for ${path}`);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
// src/mantine/blocks/action/actionTypes/_shared/media/collectMedia.ts
|
|
403
|
+
function isFileEntry(value) {
|
|
404
|
+
return !!value && typeof value === "object" && typeof value.content === "string";
|
|
405
|
+
}
|
|
406
|
+
function fileEntriesOf(value) {
|
|
407
|
+
if (Array.isArray(value)) return value.filter(isFileEntry);
|
|
408
|
+
return isFileEntry(value) ? [value] : [];
|
|
409
|
+
}
|
|
410
|
+
function formatFieldPath(path, withIndexes = true) {
|
|
411
|
+
return path.reduce((out, segment) => {
|
|
412
|
+
if (typeof segment === "number") return `${out}[${withIndexes ? segment : ""}]`;
|
|
413
|
+
return out ? `${out}.${segment}` : segment;
|
|
414
|
+
}, "");
|
|
415
|
+
}
|
|
416
|
+
function collectRecordMedia(answers, record, options = {}) {
|
|
417
|
+
if (!answers || typeof answers !== "object") return [];
|
|
418
|
+
const taken = options.takenPaths ?? /* @__PURE__ */ new Set();
|
|
419
|
+
const titles = options.titlesByFieldName ?? {};
|
|
420
|
+
const refs = [];
|
|
421
|
+
const filesSeenByQuestion = /* @__PURE__ */ new Map();
|
|
422
|
+
const collect = (entries, valuePath) => {
|
|
423
|
+
const fieldName = String(valuePath[0]);
|
|
424
|
+
const questionName = String([...valuePath].reverse().find((segment) => typeof segment === "string") ?? fieldName);
|
|
425
|
+
const questionShape = formatFieldPath(valuePath, false);
|
|
426
|
+
for (const entry of entries) {
|
|
427
|
+
const fileIndex = (filesSeenByQuestion.get(questionShape) ?? 0) + 1;
|
|
428
|
+
filesSeenByQuestion.set(questionShape, fileIndex);
|
|
429
|
+
const sourceUrl = resolveClaimFileRef(entry.content);
|
|
430
|
+
if (!sourceUrl) continue;
|
|
431
|
+
const originalName = typeof entry.name === "string" ? entry.name : "";
|
|
432
|
+
const mimeType = typeof entry.type === "string" ? entry.type : "";
|
|
433
|
+
const archivePath = dedupeMediaPath(buildMediaPath({ seq: record.seq, recordId: record.recordId, fieldName: questionName, fileIndex, originalName, mimeType }), taken);
|
|
434
|
+
refs.push({
|
|
435
|
+
seq: record.seq,
|
|
436
|
+
recordId: record.recordId,
|
|
437
|
+
fieldName,
|
|
438
|
+
fieldPath: formatFieldPath(valuePath),
|
|
439
|
+
valuePath,
|
|
440
|
+
fieldTitle: titles[questionName] || questionName,
|
|
441
|
+
fileIndex,
|
|
442
|
+
originalName,
|
|
443
|
+
mimeType,
|
|
444
|
+
sourceUrl,
|
|
445
|
+
archivePath
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
const visitChildren = (node, valuePath) => {
|
|
450
|
+
for (const [key, child] of Object.entries(node)) {
|
|
451
|
+
if (!ENVELOPE_KEYS.has(key)) visit(child, [...valuePath, key]);
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
const visit = (value, valuePath) => {
|
|
455
|
+
const entries = fileEntriesOf(value);
|
|
456
|
+
if (entries.length > 0) {
|
|
457
|
+
collect(entries, valuePath);
|
|
458
|
+
} else if (Array.isArray(value)) {
|
|
459
|
+
value.forEach((item, index) => visit(item, [...valuePath, index]));
|
|
460
|
+
} else if (value && typeof value === "object") {
|
|
461
|
+
visitChildren(value, valuePath);
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
visitChildren(answers, []);
|
|
465
|
+
return refs;
|
|
466
|
+
}
|
|
467
|
+
function withValueAt(node, path, value) {
|
|
468
|
+
if (path.length === 0) return value;
|
|
469
|
+
const [head, ...rest] = path;
|
|
470
|
+
if (Array.isArray(node)) {
|
|
471
|
+
const copy2 = [...node];
|
|
472
|
+
copy2[Number(head)] = withValueAt(copy2[Number(head)], rest, value);
|
|
473
|
+
return copy2;
|
|
474
|
+
}
|
|
475
|
+
const copy = { ...node };
|
|
476
|
+
copy[head] = withValueAt(copy[head], rest, value);
|
|
477
|
+
return copy;
|
|
478
|
+
}
|
|
479
|
+
function replaceFileValuesWithPaths(answers, refs, failedPaths) {
|
|
480
|
+
if (refs.length === 0) return answers;
|
|
481
|
+
const byValue = /* @__PURE__ */ new Map();
|
|
482
|
+
for (const ref of refs) {
|
|
483
|
+
const key = JSON.stringify(ref.valuePath);
|
|
484
|
+
const group = byValue.get(key) ?? { valuePath: ref.valuePath, cells: [] };
|
|
485
|
+
group.cells.push(failedPaths?.has(ref.archivePath) ? `${ref.originalName || ref.archivePath} (download failed \u2014 not in archive)` : ref.archivePath);
|
|
486
|
+
byValue.set(key, group);
|
|
487
|
+
}
|
|
488
|
+
let out = answers;
|
|
489
|
+
for (const { valuePath, cells } of byValue.values()) out = withValueAt(out, valuePath, cells.join("; "));
|
|
490
|
+
return out;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/buildExportBundle.ts
|
|
494
|
+
var DEFAULT_CONCURRENCY = 6;
|
|
495
|
+
var DEFAULT_RETRY = {
|
|
496
|
+
maxAttempts: 6,
|
|
497
|
+
baseDelayMs: 5e3,
|
|
498
|
+
maxDelayMs: 6e4,
|
|
499
|
+
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
500
|
+
};
|
|
501
|
+
async function mapWithLimit(items, limit, worker) {
|
|
502
|
+
const results = new Array(items.length);
|
|
503
|
+
let cursor = 0;
|
|
504
|
+
const runners = Array.from({ length: Math.max(1, Math.min(limit, items.length)) }, async () => {
|
|
505
|
+
for (; ; ) {
|
|
506
|
+
const index = cursor;
|
|
507
|
+
cursor += 1;
|
|
508
|
+
if (index >= items.length) return;
|
|
509
|
+
results[index] = await worker(items[index], index);
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
await Promise.all(runners);
|
|
513
|
+
return results;
|
|
514
|
+
}
|
|
515
|
+
function retryDelayMs(err, attempt, policy) {
|
|
516
|
+
const { status, retryAfterMs } = err ?? {};
|
|
517
|
+
if (typeof status !== "number" || status !== 429 && status < 500) return null;
|
|
518
|
+
if (typeof retryAfterMs === "number" && retryAfterMs > 0) return Math.min(retryAfterMs, policy.maxDelayMs);
|
|
519
|
+
return Math.min(policy.baseDelayMs * 2 ** (attempt - 1), policy.maxDelayMs);
|
|
520
|
+
}
|
|
521
|
+
function createCooldown(sleep) {
|
|
522
|
+
let resumeAt = 0;
|
|
523
|
+
return {
|
|
524
|
+
wait: async () => {
|
|
525
|
+
const remaining = resumeAt - Date.now();
|
|
526
|
+
if (remaining > 0) await sleep(remaining);
|
|
527
|
+
},
|
|
528
|
+
extend: (ms) => {
|
|
529
|
+
resumeAt = Math.max(resumeAt, Date.now() + ms);
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
async function fetchMediaBlob(url, fetchMedia) {
|
|
534
|
+
if (fetchMedia) return fetchMedia(url);
|
|
535
|
+
const response = await fetch(url);
|
|
536
|
+
if (!response.ok) throw Object.assign(new Error(`gateway returned ${response.status} ${response.statusText}`.trim()), { status: response.status });
|
|
537
|
+
return response.blob();
|
|
538
|
+
}
|
|
539
|
+
async function downloadMedia(ref, fetchMedia, policy, cooldown) {
|
|
540
|
+
for (let attempt = 1; ; attempt += 1) {
|
|
541
|
+
await cooldown.wait();
|
|
542
|
+
try {
|
|
543
|
+
const blob = await fetchMediaBlob(ref.sourceUrl, fetchMedia);
|
|
544
|
+
return { bytes: new Uint8Array(await blob.arrayBuffer()), reason: "" };
|
|
545
|
+
} catch (err) {
|
|
546
|
+
const delay = attempt < policy.maxAttempts ? retryDelayMs(err, attempt, policy) : null;
|
|
547
|
+
if (delay === null) return { bytes: null, reason: err instanceof Error ? err.message : "download failed" };
|
|
548
|
+
cooldown.extend(delay);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
async function buildExportBundle(params) {
|
|
553
|
+
const takenPaths = /* @__PURE__ */ new Set();
|
|
554
|
+
const refs = [];
|
|
555
|
+
const refsByRecordId = /* @__PURE__ */ new Map();
|
|
556
|
+
params.records.forEach((record, index) => {
|
|
557
|
+
const recordRefs = collectRecordMedia(record.answers, { seq: index + 1, recordId: record.recordId }, { titlesByFieldName: params.titlesByFieldName, takenPaths });
|
|
558
|
+
refs.push(...recordRefs);
|
|
559
|
+
refsByRecordId.set(record.recordId, recordRefs);
|
|
560
|
+
});
|
|
561
|
+
const manifestByRecordId = new Map(params.records.map((record) => [record.recordId, record.manifest ?? {}]));
|
|
562
|
+
const policy = { ...DEFAULT_RETRY, ...params.retry };
|
|
563
|
+
const cooldown = createCooldown(policy.sleep);
|
|
564
|
+
const downloads = await mapWithLimit(refs, params.concurrency ?? DEFAULT_CONCURRENCY, (ref) => downloadMedia(ref, params.fetchMedia, policy, cooldown));
|
|
565
|
+
const failedPaths = new Set(refs.filter((_, index) => !downloads[index].bytes).map((ref) => ref.archivePath));
|
|
566
|
+
const answersByRecordId = {};
|
|
567
|
+
for (const record of params.records) {
|
|
568
|
+
answersByRecordId[record.recordId] = replaceFileValuesWithPaths(record.answers, refsByRecordId.get(record.recordId) ?? [], failedPaths);
|
|
569
|
+
}
|
|
570
|
+
const entries = [];
|
|
571
|
+
const manifestRows = [];
|
|
572
|
+
const failures = [];
|
|
573
|
+
refs.forEach((ref, index) => {
|
|
574
|
+
const { bytes, reason } = downloads[index];
|
|
575
|
+
if (bytes) {
|
|
576
|
+
entries.push({ path: ref.archivePath, data: bytes });
|
|
577
|
+
} else {
|
|
578
|
+
failures.push({ archivePath: ref.archivePath, sourceUrl: ref.sourceUrl, reason });
|
|
579
|
+
}
|
|
580
|
+
manifestRows.push({
|
|
581
|
+
archivePath: bytes ? ref.archivePath : "",
|
|
582
|
+
...manifestByRecordId.get(ref.recordId),
|
|
583
|
+
recordId: ref.recordId,
|
|
584
|
+
fieldName: ref.fieldName,
|
|
585
|
+
fieldPath: ref.fieldPath,
|
|
586
|
+
fieldTitle: ref.fieldTitle,
|
|
587
|
+
fileIndex: ref.fileIndex,
|
|
588
|
+
originalName: ref.originalName,
|
|
589
|
+
mimeType: ref.mimeType,
|
|
590
|
+
sizeBytes: bytes ? bytes.length : "",
|
|
591
|
+
sourceUrl: ref.sourceUrl,
|
|
592
|
+
downloadStatus: bytes ? "ok" : "failed",
|
|
593
|
+
downloadError: reason
|
|
594
|
+
});
|
|
595
|
+
});
|
|
596
|
+
entries.unshift({ path: params.csvName, data: UTF8_BOM + params.renderCsv(answersByRecordId) });
|
|
597
|
+
entries.splice(1, 0, {
|
|
598
|
+
path: params.manifestName || "media-manifest.csv",
|
|
599
|
+
data: UTF8_BOM + (manifestRows.length > 0 ? rowsToCsv(manifestRows) : "note\r\nNo media was submitted for these records.")
|
|
600
|
+
});
|
|
601
|
+
return { blob: createZipBlob(entries), mediaTotal: refs.length, mediaFailed: failures.length, failures };
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/baseClaimSubmitters.ts
|
|
605
|
+
var BASE_CLAIM_KEY = /(^|:)baseClaimCID$/i;
|
|
606
|
+
var CID = /baf[a-z0-9]{20,}/i;
|
|
607
|
+
var NAME_LOOKUP_CONCURRENCY = 4;
|
|
608
|
+
var EMPTY_BASE_CLAIM_SUBMITTER = {
|
|
609
|
+
baseClaimSubmitterDid: "",
|
|
610
|
+
baseClaimSubmitterAddress: "",
|
|
611
|
+
baseClaimSubmitterName: ""
|
|
612
|
+
};
|
|
613
|
+
function baseClaimCidOf(answers) {
|
|
614
|
+
for (const [key, value] of Object.entries(answers)) {
|
|
615
|
+
if (BASE_CLAIM_KEY.test(key) && typeof value === "string") return value.match(CID)?.[0] ?? "";
|
|
616
|
+
}
|
|
617
|
+
return "";
|
|
618
|
+
}
|
|
619
|
+
async function resolveBaseClaimSubmitters(answersByClaimId, handlers) {
|
|
620
|
+
const baseCidByClaimId = Object.entries(answersByClaimId).map(([claimId, answers]) => [claimId, baseClaimCidOf(answers)]).filter(([, baseCid]) => baseCid);
|
|
621
|
+
if (baseCidByClaimId.length === 0 || !handlers.getClaimsByIds) return {};
|
|
622
|
+
const baseClaims = await handlers.getClaimsByIds([...new Set(baseCidByClaimId.map(([, baseCid]) => baseCid))]);
|
|
623
|
+
const baseClaimByCid = new Map(baseClaims.map((claim) => [claim.claimId, claim]));
|
|
624
|
+
const submitterDids = [...new Set(baseClaims.map((claim) => claim.agentDid).filter(Boolean))];
|
|
625
|
+
const names = await mapWithLimit(submitterDids, NAME_LOOKUP_CONCURRENCY, async (did) => {
|
|
626
|
+
try {
|
|
627
|
+
return (await handlers.getMatrixInfoPerDid?.(did))?.displayname || "";
|
|
628
|
+
} catch {
|
|
629
|
+
return "";
|
|
630
|
+
}
|
|
631
|
+
});
|
|
632
|
+
const nameByDid = new Map(submitterDids.map((did, index) => [did, names[index]]));
|
|
633
|
+
return Object.fromEntries(
|
|
634
|
+
baseCidByClaimId.map(([claimId, baseCid]) => {
|
|
635
|
+
const baseClaim = baseClaimByCid.get(baseCid);
|
|
636
|
+
if (!baseClaim) return [claimId, EMPTY_BASE_CLAIM_SUBMITTER];
|
|
637
|
+
return [
|
|
638
|
+
claimId,
|
|
639
|
+
{
|
|
640
|
+
baseClaimSubmitterDid: baseClaim.agentDid || "",
|
|
641
|
+
baseClaimSubmitterAddress: baseClaim.agentAddress || "",
|
|
642
|
+
baseClaimSubmitterName: nameByDid.get(baseClaim.agentDid) || ""
|
|
643
|
+
}
|
|
644
|
+
];
|
|
645
|
+
})
|
|
646
|
+
);
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/buildClaimRows.ts
|
|
650
|
+
function claimAnswers(contents) {
|
|
651
|
+
const raw = contents;
|
|
652
|
+
const subject = raw?.credentialSubject ?? raw;
|
|
653
|
+
return subject && typeof subject === "object" && !Array.isArray(subject) ? subject : {};
|
|
654
|
+
}
|
|
655
|
+
function buildClaimRows(claims, contentsByClaimId, options = {}) {
|
|
656
|
+
const baseClaimSubmitters = options.baseClaimSubmittersByClaimId ?? {};
|
|
657
|
+
const withBaseClaimColumns = Object.keys(baseClaimSubmitters).length > 0;
|
|
658
|
+
return claims.map((claim) => {
|
|
659
|
+
const answers = options.answersByClaimId?.[claim.claimId] ?? claimAnswers(contentsByClaimId[claim.claimId]);
|
|
660
|
+
const status = getClaimStatusInfo(claim);
|
|
661
|
+
return {
|
|
662
|
+
claimId: claim.claimId,
|
|
663
|
+
collectionId: claim.collectionId,
|
|
664
|
+
agentDid: claim.agentDid,
|
|
665
|
+
agentAddress: claim.agentAddress,
|
|
666
|
+
submissionDate: claim.submissionDate,
|
|
667
|
+
status: status.key,
|
|
668
|
+
// A terminal decision outranks a dispute in `status`, but the dispute
|
|
669
|
+
// record stays on chain — keep it visible rather than losing it.
|
|
670
|
+
hasDispute: !!claim.disputeBySubjectId,
|
|
671
|
+
schemaType: claim.schemaType ?? "",
|
|
672
|
+
...withBaseClaimColumns ? baseClaimSubmitters[claim.claimId] ?? EMPTY_BASE_CLAIM_SUBMITTER : {},
|
|
673
|
+
...answers
|
|
674
|
+
};
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/buildGranteeRows.ts
|
|
679
|
+
function buildGranteeRows(grantees, namesByDid = {}) {
|
|
680
|
+
return grantees.map((grantee) => {
|
|
681
|
+
const did = grantee.did || "";
|
|
682
|
+
return {
|
|
683
|
+
name: namesByDid[did] || "",
|
|
684
|
+
did,
|
|
685
|
+
address: grantee.address,
|
|
686
|
+
role: grantee.role,
|
|
687
|
+
agentQuota: grantee.agentQuota ?? "",
|
|
688
|
+
maxAmount: Array.isArray(grantee.maxAmount) ? grantee.maxAmount.map((coin) => `${coin.amount} ${coin.denom}`).join("; ") : ""
|
|
689
|
+
};
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/buildCollectionMembersSections.ts
|
|
694
|
+
var OPEN_ONLY_NOTE = "Open bids only \u2014 the bids service drops a bid from its query response once it is approved or rejected, and this host cannot read decided bids from the collection room.";
|
|
695
|
+
var FULL_HISTORY_NOTE = "All bids, open and decided. See bidState: open = awaiting decision, granted = decided with a live grant, lapsed = decided with NO active grant.";
|
|
696
|
+
function buildCollectionMembersSections(params) {
|
|
697
|
+
const { grantees, bids, namesByDid = {}, collectionId, bidsTruncated, decidedBidsIncluded } = params;
|
|
698
|
+
const label = collectionId ? ` (collection ${collectionId})` : "";
|
|
699
|
+
const scopeNote = decidedBidsIncluded ? FULL_HISTORY_NOTE : OPEN_ONLY_NOTE;
|
|
700
|
+
const truncationNote = bidsTruncated ? " WARNING: paging stopped early \u2014 this list is incomplete." : "";
|
|
701
|
+
return [
|
|
702
|
+
{
|
|
703
|
+
title: `PART 1 \u2014 ACTIVE GRANTS${label}`,
|
|
704
|
+
rows: buildGranteeRows(grantees, namesByDid),
|
|
705
|
+
emptyNote: "No active grants on this collection."
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
title: `PART 2 \u2014 ${decidedBidsIncluded ? "BIDS" : "OPEN BIDS"}${label} \u2014 ${scopeNote}${truncationNote}`,
|
|
709
|
+
rows: buildBidRows(bids, grantees, { namesByDid, ...params.bidOptions }),
|
|
710
|
+
emptyNote: decidedBidsIncluded ? "No bids have been submitted to this collection." : "No open bids on this collection."
|
|
711
|
+
}
|
|
712
|
+
];
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
// src/mantine/blocks/action/actionTypes/_shared/dataExport/exportFileNames.ts
|
|
716
|
+
var slug = (value, fallback) => value ? String(value).replace(/[^A-Za-z0-9._-]+/g, "-") : fallback;
|
|
717
|
+
var exportFileNames = {
|
|
718
|
+
claims(collectionId) {
|
|
719
|
+
const id = slug(collectionId, "collection");
|
|
720
|
+
return { csv: `claims-${id}.csv`, manifest: `media-manifest-${id}.csv`, zip: `claims-${id}-${timestampSuffix()}.zip` };
|
|
721
|
+
},
|
|
722
|
+
claim(claimId) {
|
|
723
|
+
const id = slug(claimId, "claim").slice(0, 20);
|
|
724
|
+
return { csv: `claim-${id}.csv`, manifest: `media-manifest-${id}.csv`, zip: `claim-${id}-${timestampSuffix()}.zip` };
|
|
725
|
+
},
|
|
726
|
+
bids(collectionId) {
|
|
727
|
+
const id = slug(collectionId, "collection");
|
|
728
|
+
return { csv: `bids-${id}.csv`, manifest: `media-manifest-${id}.csv`, zip: `bids-${id}-${timestampSuffix()}.zip` };
|
|
729
|
+
},
|
|
730
|
+
bid(bidId) {
|
|
731
|
+
const id = slug(bidId, "bid").slice(0, 20);
|
|
732
|
+
return { csv: `bid-${id}.csv`, manifest: `media-manifest-${id}.csv`, zip: `bid-${id}-${timestampSuffix()}.zip` };
|
|
733
|
+
},
|
|
734
|
+
collectionMembers(collectionId) {
|
|
735
|
+
const id = slug(collectionId, "collection");
|
|
736
|
+
return { csv: `collection-members-${id}.csv`, manifest: `media-manifest-${id}.csv`, zip: `collection-members-${id}-${timestampSuffix()}.zip` };
|
|
737
|
+
}
|
|
738
|
+
};
|
|
739
|
+
|
|
740
|
+
// src/mantine/components/MediaPreviewModal.tsx
|
|
741
|
+
import React2 from "react";
|
|
742
|
+
import { Anchor, Box, Center, Group, Modal, Stack, Text } from "@mantine/core";
|
|
743
|
+
import { useMediaQuery } from "@mantine/hooks";
|
|
744
|
+
import { IconDownload as IconDownload2 } from "@tabler/icons-react";
|
|
745
|
+
|
|
746
|
+
// src/mantine/components/mediaPreviewKind.ts
|
|
747
|
+
var IMAGE_EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "svg", "bmp"];
|
|
748
|
+
var VIDEO_EXTENSIONS = ["mp4", "webm", "mov", "mkv"];
|
|
749
|
+
var AUDIO_EXTENSIONS = ["mp3", "wav", "ogg", "m4a", "flac"];
|
|
750
|
+
var UNSPECIFIC_CONTENT_TYPES = /* @__PURE__ */ new Set(["", "application/octet-stream", "binary/octet-stream"]);
|
|
751
|
+
function normaliseContentType(contentType) {
|
|
752
|
+
return (contentType || "").toLowerCase().split(";")[0].trim();
|
|
753
|
+
}
|
|
754
|
+
function dataUrlContentType(content) {
|
|
755
|
+
return content.startsWith("data:") ? content.slice(5).split(/[;,]/)[0] : void 0;
|
|
756
|
+
}
|
|
757
|
+
function detectMediaKind(type, name) {
|
|
758
|
+
const t = (type || "").toLowerCase();
|
|
759
|
+
const ext = (name || "").toLowerCase().split(".").pop() || "";
|
|
760
|
+
if (t.startsWith("image/") || IMAGE_EXTENSIONS.includes(ext)) return "image";
|
|
761
|
+
if (t.startsWith("video/") || VIDEO_EXTENSIONS.includes(ext)) return "video";
|
|
762
|
+
if (t.startsWith("audio/") || AUDIO_EXTENSIONS.includes(ext)) return "audio";
|
|
763
|
+
if (t === "application/pdf" || ext === "pdf") return "pdf";
|
|
764
|
+
return "other";
|
|
765
|
+
}
|
|
766
|
+
function kindFromContentType(contentType) {
|
|
767
|
+
const t = normaliseContentType(contentType);
|
|
768
|
+
if (t.startsWith("image/")) return "image";
|
|
769
|
+
if (t.startsWith("video/")) return "video";
|
|
770
|
+
if (t.startsWith("audio/")) return "audio";
|
|
771
|
+
if (t === "application/pdf") return "pdf";
|
|
772
|
+
return "other";
|
|
773
|
+
}
|
|
774
|
+
function resolvePreviewKind(file) {
|
|
775
|
+
const declared = detectMediaKind(file.type, file.name);
|
|
776
|
+
const contentType = file.contentType ?? dataUrlContentType(file.content);
|
|
777
|
+
const fetched = contentType !== void 0 || file.content.startsWith("blob:");
|
|
778
|
+
if (!fetched) return declared;
|
|
779
|
+
const actual = kindFromContentType(contentType);
|
|
780
|
+
if (actual !== "other") return actual;
|
|
781
|
+
if (UNSPECIFIC_CONTENT_TYPES.has(normaliseContentType(contentType)) && declared !== "pdf") return declared;
|
|
782
|
+
return "other";
|
|
783
|
+
}
|
|
784
|
+
var MEDIA_FRAME_SANDBOX = "allow-scripts";
|
|
785
|
+
|
|
786
|
+
// src/mantine/components/MediaPreviewModal.tsx
|
|
787
|
+
var MediaPreviewModal = ({ file, onClose }) => {
|
|
788
|
+
const isMobile = useMediaQuery("(max-width: 992px)");
|
|
789
|
+
const opened = !!file;
|
|
790
|
+
const kind = file ? resolvePreviewKind(file) : "other";
|
|
791
|
+
const wide = kind === "pdf" || kind === "image" || kind === "video";
|
|
792
|
+
return /* @__PURE__ */ React2.createElement(
|
|
793
|
+
Modal,
|
|
794
|
+
{
|
|
795
|
+
opened,
|
|
796
|
+
onClose,
|
|
797
|
+
zIndex: 1e4,
|
|
798
|
+
portalProps: typeof document !== "undefined" ? { target: document.body } : void 0,
|
|
799
|
+
title: /* @__PURE__ */ React2.createElement(Group, { gap: "sm", wrap: "nowrap", style: { width: "100%" } }, /* @__PURE__ */ React2.createElement(Text, { fw: 500, size: "sm", truncate: true, style: { flex: 1, minWidth: 0 } }, file?.name || "Preview"), file && /* @__PURE__ */ React2.createElement(Anchor, { href: file.content, target: "_blank", rel: "noopener noreferrer", download: file.name, size: "xs", c: "dimmed", style: { flexShrink: 0 } }, /* @__PURE__ */ React2.createElement(Box, { style: { display: "inline-flex", alignItems: "center", gap: 4 } }, icon(IconDownload2, 14), "Download"))),
|
|
800
|
+
size: wide ? "95vw" : "xl",
|
|
801
|
+
centered: true,
|
|
802
|
+
styles: wide ? {
|
|
803
|
+
content: {
|
|
804
|
+
height: "95vh",
|
|
805
|
+
maxWidth: isMobile ? "100%" : 1400,
|
|
806
|
+
display: "flex",
|
|
807
|
+
flexDirection: "column",
|
|
808
|
+
overflow: "hidden"
|
|
809
|
+
},
|
|
810
|
+
body: {
|
|
811
|
+
flex: 1,
|
|
812
|
+
minHeight: 0,
|
|
813
|
+
display: "flex",
|
|
814
|
+
flexDirection: "column",
|
|
815
|
+
overflow: "hidden"
|
|
816
|
+
}
|
|
817
|
+
} : void 0
|
|
818
|
+
},
|
|
819
|
+
file && /* @__PURE__ */ React2.createElement(Stack, { gap: "sm", style: wide ? { flex: 1, minHeight: 0 } : void 0 }, kind === "image" && /* @__PURE__ */ React2.createElement(Center, { style: { flex: 1, minHeight: 0, overflow: "hidden" } }, /* @__PURE__ */ React2.createElement(
|
|
820
|
+
"img",
|
|
821
|
+
{
|
|
822
|
+
src: file.content,
|
|
823
|
+
alt: file.name,
|
|
824
|
+
style: { display: "block", maxWidth: "100%", maxHeight: "100%", width: "auto", height: "auto", objectFit: "contain", borderRadius: 8 }
|
|
825
|
+
}
|
|
826
|
+
)), kind === "video" && // eslint-disable-next-line jsx-a11y/media-has-caption
|
|
827
|
+
/* @__PURE__ */ React2.createElement("video", { src: file.content, controls: true, style: { width: "100%", flex: 1, minHeight: 0, borderRadius: 8, background: "var(--mantine-color-neutralColor-3)" } }), kind === "audio" && /* @__PURE__ */ React2.createElement("audio", { src: file.content, controls: true, style: { width: "100%" } }), kind === "pdf" && /* @__PURE__ */ React2.createElement(Box, { style: { flex: 1, minHeight: 0, borderRadius: 8, overflow: "hidden" } }, /* @__PURE__ */ React2.createElement("iframe", { src: file.content, title: file.name, sandbox: MEDIA_FRAME_SANDBOX, referrerPolicy: "no-referrer", style: { width: "100%", height: "100%", border: "none" } })), kind === "other" && /* @__PURE__ */ React2.createElement(Center, { p: "xl" }, /* @__PURE__ */ React2.createElement(Text, { size: "sm", c: "dimmed" }, "This file type can't be previewed inline. Use Download above.")))
|
|
828
|
+
);
|
|
829
|
+
};
|
|
830
|
+
|
|
831
|
+
export {
|
|
832
|
+
DownloadCsvButton,
|
|
833
|
+
DownloadZipButton,
|
|
834
|
+
getBidStatusInfo,
|
|
835
|
+
bidAnswers,
|
|
836
|
+
buildBidRows,
|
|
837
|
+
collectClaimAttachments,
|
|
838
|
+
buildExportBundle,
|
|
839
|
+
resolveBaseClaimSubmitters,
|
|
840
|
+
claimAnswers,
|
|
841
|
+
buildClaimRows,
|
|
842
|
+
buildCollectionMembersSections,
|
|
843
|
+
exportFileNames,
|
|
844
|
+
MediaPreviewModal
|
|
845
|
+
};
|
|
846
|
+
//# sourceMappingURL=chunk-JBBFSORW.js.map
|