@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/lib/warnOnce.ts"],"sourcesContent":["const seen = new Set<string>();\n\n/**\n * Log a warning at most once per key for the lifetime of the module.\n * Used to surface configuration problems (malformed inputs/trigger JSON,\n * unresolvable references) without flooding the console on every render\n * or reconcile pass.\n */\nexport function warnOnce(key: string, message: string): void {\n if (seen.has(key)) return;\n seen.add(key);\n console.warn(message);\n}\n\n/** Test hook — clears the dedupe set. */\nexport function __resetWarnOnce(): void {\n seen.clear();\n}\n"],"mappings":";AAAA,IAAM,OAAO,oBAAI,IAAY;AAQtB,SAAS,SAAS,KAAa,SAAuB;AAC3D,MAAI,KAAK,IAAI,GAAG,EAAG;AACnB,OAAK,IAAI,GAAG;AACZ,UAAQ,KAAK,OAAO;AACtB;","names":[]}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import {
|
|
2
|
+
icon
|
|
3
|
+
} from "./chunk-YN4CEKCF.js";
|
|
4
|
+
import {
|
|
5
|
+
getDiffResolver,
|
|
6
|
+
hasDiffResolver
|
|
7
|
+
} from "./chunk-F4PTFXZH.js";
|
|
8
|
+
import {
|
|
9
|
+
useBlocknoteHandlers
|
|
10
|
+
} from "./chunk-4DGCCXD6.js";
|
|
11
|
+
|
|
12
|
+
// src/mantine/blocks/action/diff/ActionDiffView.tsx
|
|
13
|
+
import React2, { useMemo, useState as useState2 } from "react";
|
|
14
|
+
import { Accordion, Alert, Badge, Box, Flex as Flex2, Group, Paper, ScrollArea, SegmentedControl, Stack, Text as Text2 } from "@mantine/core";
|
|
15
|
+
import { IconAlertTriangle, IconArrowRight, IconEyeCheck, IconFileDescription } from "@tabler/icons-react";
|
|
16
|
+
|
|
17
|
+
// src/mantine/blocks/action/diff/formatters.ts
|
|
18
|
+
function formatDiffValue(value, unit) {
|
|
19
|
+
if (value === null || value === void 0) return "\u2014";
|
|
20
|
+
const str = String(value);
|
|
21
|
+
if (!str) return "\u2014";
|
|
22
|
+
return unit ? `${str} ${unit}` : str;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/mantine/components/Base/SlideToSign.tsx
|
|
26
|
+
import React, { useState } from "react";
|
|
27
|
+
import { Flex, Slider, Text } from "@mantine/core";
|
|
28
|
+
import { IconFeather } from "@tabler/icons-react";
|
|
29
|
+
var RESET_DELAY = 600;
|
|
30
|
+
function SlideToSign({ onSign, label = "Slide to Sign", disabled }) {
|
|
31
|
+
const [value, setValue] = useState(23);
|
|
32
|
+
const handleSlideEnd = (sliderValue) => {
|
|
33
|
+
if (sliderValue >= 60) {
|
|
34
|
+
setValue(73);
|
|
35
|
+
onSign();
|
|
36
|
+
setTimeout(() => setValue(23), RESET_DELAY);
|
|
37
|
+
} else {
|
|
38
|
+
setValue(23);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
return /* @__PURE__ */ React.createElement(
|
|
42
|
+
Slider,
|
|
43
|
+
{
|
|
44
|
+
value,
|
|
45
|
+
onChange: setValue,
|
|
46
|
+
label: null,
|
|
47
|
+
onChangeEnd: handleSlideEnd,
|
|
48
|
+
disabled,
|
|
49
|
+
size: "xl",
|
|
50
|
+
thumbChildren: /* @__PURE__ */ React.createElement(Flex, { align: "center", gap: "sm" }, /* @__PURE__ */ React.createElement(IconFeather, { color: disabled ? "var(--mantine-color-neutralColor-9)" : "var(--mantine-color-text)", strokeWidth: "1.2" }), /* @__PURE__ */ React.createElement(Text, { c: disabled ? "neutralColor.9" : "var(--mantine-color-text)", fz: 14 }, label)),
|
|
51
|
+
thumbSize: 42,
|
|
52
|
+
styles: {
|
|
53
|
+
root: { width: "100%", opacity: disabled ? 0.4 : 1, transition: "opacity 200ms ease" },
|
|
54
|
+
track: {
|
|
55
|
+
height: 36,
|
|
56
|
+
borderRadius: 8,
|
|
57
|
+
":before": {
|
|
58
|
+
backgroundColor: disabled ? "var(--mantine-color-neutralColor-7)" : "var(--mantine-color-accent-5)",
|
|
59
|
+
opacity: disabled ? 1 : 0.6,
|
|
60
|
+
borderRadius: 8
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
bar: { backgroundColor: disabled ? "var(--mantine-color-neutralColor-7)" : "var(--mantine-color-accent-5)", borderRadius: 8 },
|
|
64
|
+
thumb: {
|
|
65
|
+
border: "1px solid var(--mantine-color-neutralColor-6)",
|
|
66
|
+
borderRadius: 8,
|
|
67
|
+
width: 185,
|
|
68
|
+
height: 36,
|
|
69
|
+
boxShadow: "none",
|
|
70
|
+
backgroundColor: disabled ? "var(--mantine-color-neutralColor-8)" : "var(--mantine-color-neutralColor-5)",
|
|
71
|
+
cursor: disabled ? "not-allowed" : void 0
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// src/mantine/blocks/action/diff/ActionDiffView.tsx
|
|
79
|
+
var toneStyles = {
|
|
80
|
+
added: {
|
|
81
|
+
label: "Added",
|
|
82
|
+
badgeColor: "green",
|
|
83
|
+
color: "var(--mantine-color-green-7)",
|
|
84
|
+
bg: "color-mix(in srgb, var(--mantine-color-green-5) 12%, transparent)",
|
|
85
|
+
border: "color-mix(in srgb, var(--mantine-color-green-5) 34%, transparent)"
|
|
86
|
+
},
|
|
87
|
+
removed: {
|
|
88
|
+
label: "Removed",
|
|
89
|
+
badgeColor: "red",
|
|
90
|
+
color: "var(--mantine-color-red-7)",
|
|
91
|
+
bg: "color-mix(in srgb, var(--mantine-color-red-5) 10%, transparent)",
|
|
92
|
+
border: "color-mix(in srgb, var(--mantine-color-red-5) 34%, transparent)",
|
|
93
|
+
textDecoration: "line-through"
|
|
94
|
+
},
|
|
95
|
+
current: {
|
|
96
|
+
label: "Current",
|
|
97
|
+
badgeColor: "gray",
|
|
98
|
+
color: "var(--mantine-color-neutralColor-8)",
|
|
99
|
+
bg: "color-mix(in srgb, var(--mantine-color-text) 4%, transparent)",
|
|
100
|
+
border: "var(--mantine-color-neutralColor-5)"
|
|
101
|
+
},
|
|
102
|
+
neutral: {
|
|
103
|
+
label: "Details",
|
|
104
|
+
badgeColor: "gray",
|
|
105
|
+
color: "var(--mantine-color-neutralColor-8)",
|
|
106
|
+
bg: "var(--mantine-color-neutralColor-2)",
|
|
107
|
+
border: "var(--mantine-color-neutralColor-5)"
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
var changeTypeLabels = {
|
|
111
|
+
add: "Added",
|
|
112
|
+
remove: "Removed",
|
|
113
|
+
replace: "Changed",
|
|
114
|
+
increase: "Increased",
|
|
115
|
+
decrease: "Decreased",
|
|
116
|
+
unchanged: "Unchanged"
|
|
117
|
+
};
|
|
118
|
+
function getChangeTone(changeType) {
|
|
119
|
+
if (changeType === "add" || changeType === "increase") return "added";
|
|
120
|
+
if (changeType === "remove" || changeType === "decrease") return "removed";
|
|
121
|
+
return "neutral";
|
|
122
|
+
}
|
|
123
|
+
function getChangeBadgeColor(changeType) {
|
|
124
|
+
const tone = getChangeTone(changeType);
|
|
125
|
+
if (tone === "added") return "green";
|
|
126
|
+
if (tone === "removed") return "red";
|
|
127
|
+
return changeType === "unchanged" ? "gray" : "accent";
|
|
128
|
+
}
|
|
129
|
+
function getChangeCountLabel(count) {
|
|
130
|
+
return `${count} ${count === 1 ? "change" : "changes"}`;
|
|
131
|
+
}
|
|
132
|
+
function stringifyDetails(details) {
|
|
133
|
+
if (!details) return [];
|
|
134
|
+
if (Array.isArray(details)) return details.map((item) => String(item));
|
|
135
|
+
if (typeof details === "string") return details ? [details] : [];
|
|
136
|
+
return Object.entries(details).map(([key, value]) => {
|
|
137
|
+
const rendered = typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? String(value) : JSON.stringify(value);
|
|
138
|
+
return `${key}: ${rendered}`;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function buildSummary(diff) {
|
|
142
|
+
if (diff.description) return diff.description;
|
|
143
|
+
const before = formatDiffValue(diff.before, diff.unit);
|
|
144
|
+
const after = formatDiffValue(diff.after, diff.unit);
|
|
145
|
+
if (diff.changeType === "add") return after;
|
|
146
|
+
if (diff.changeType === "remove") return before;
|
|
147
|
+
if (diff.changeType === "unchanged") return "No visible change";
|
|
148
|
+
return `${before} \u2192 ${after}`;
|
|
149
|
+
}
|
|
150
|
+
function ReviewValueBlock({ label, value, tone }) {
|
|
151
|
+
const styles = toneStyles[tone];
|
|
152
|
+
return /* @__PURE__ */ React2.createElement(
|
|
153
|
+
Box,
|
|
154
|
+
{
|
|
155
|
+
p: "xs",
|
|
156
|
+
style: {
|
|
157
|
+
border: `1px solid ${styles.border}`,
|
|
158
|
+
borderRadius: 8,
|
|
159
|
+
background: styles.bg,
|
|
160
|
+
minWidth: 0
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
/* @__PURE__ */ React2.createElement(Group, { gap: 6, mb: 6 }, /* @__PURE__ */ React2.createElement(Badge, { size: "xs", variant: "light", color: styles.badgeColor, tt: "none" }, styles.label), /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed", fw: 500 }, label)),
|
|
164
|
+
/* @__PURE__ */ React2.createElement(
|
|
165
|
+
Text2,
|
|
166
|
+
{
|
|
167
|
+
size: "sm",
|
|
168
|
+
lh: 1.55,
|
|
169
|
+
style: {
|
|
170
|
+
color: styles.color,
|
|
171
|
+
textDecoration: styles.textDecoration,
|
|
172
|
+
whiteSpace: "pre-wrap",
|
|
173
|
+
wordBreak: "break-word"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
value
|
|
177
|
+
)
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
function ChangeSummaryLine({ diff }) {
|
|
181
|
+
return /* @__PURE__ */ React2.createElement(Flex2, { gap: "xs", align: "flex-start" }, /* @__PURE__ */ React2.createElement(Badge, { size: "xs", variant: "light", color: getChangeBadgeColor(diff.changeType), tt: "none", miw: 78 }, changeTypeLabels[diff.changeType]), /* @__PURE__ */ React2.createElement(Box, { flex: 1, miw: 0 }, /* @__PURE__ */ React2.createElement(Text2, { size: "sm", fw: 500, lineClamp: 1 }, diff.label), /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed", lineClamp: 2, lh: 1.45 }, buildSummary(diff))));
|
|
182
|
+
}
|
|
183
|
+
function ChangeDetail({ diff }) {
|
|
184
|
+
const before = formatDiffValue(diff.before, diff.unit);
|
|
185
|
+
const after = formatDiffValue(diff.after, diff.unit);
|
|
186
|
+
const showBefore = diff.changeType !== "add" && before !== after;
|
|
187
|
+
const showAfter = diff.changeType !== "remove";
|
|
188
|
+
const details = stringifyDetails(diff.details);
|
|
189
|
+
return /* @__PURE__ */ React2.createElement(Stack, { gap: "xs" }, diff.description && /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed", lh: 1.5 }, diff.description), showBefore && /* @__PURE__ */ React2.createElement(ReviewValueBlock, { label: diff.label, value: before, tone: diff.changeType === "unchanged" ? "current" : "removed" }), showBefore && showAfter && /* @__PURE__ */ React2.createElement(Flex2, { justify: "center", "aria-hidden": "true" }, icon(IconArrowRight, 14, "var(--mantine-color-neutralColor-7)")), showAfter && /* @__PURE__ */ React2.createElement(ReviewValueBlock, { label: diff.label, value: after, tone: diff.changeType === "unchanged" ? "current" : "added" }), details.length > 0 && /* @__PURE__ */ React2.createElement(Stack, { gap: 4 }, details.map((line, index) => /* @__PURE__ */ React2.createElement(Text2, { key: `${index}-${line}`, size: "xs", c: "dimmed", style: { wordBreak: "break-word" } }, line))));
|
|
190
|
+
}
|
|
191
|
+
function DetailsPanel({ diffs }) {
|
|
192
|
+
return /* @__PURE__ */ React2.createElement(Stack, { gap: "xs" }, diffs.map((diff) => /* @__PURE__ */ React2.createElement(
|
|
193
|
+
Paper,
|
|
194
|
+
{
|
|
195
|
+
key: diff.key,
|
|
196
|
+
p: "xs",
|
|
197
|
+
radius: "sm",
|
|
198
|
+
style: {
|
|
199
|
+
background: "var(--mantine-color-neutralColor-2)",
|
|
200
|
+
border: "1px solid var(--mantine-color-neutralColor-5)"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
/* @__PURE__ */ React2.createElement(Group, { justify: "space-between", align: "flex-start", gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React2.createElement(Box, { miw: 0 }, /* @__PURE__ */ React2.createElement(Text2, { size: "xs", fw: 600, lineClamp: 1 }, diff.label), /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed", style: { wordBreak: "break-word" } }, formatDiffValue(diff.before, diff.unit), " \u2192 ", formatDiffValue(diff.after, diff.unit))), /* @__PURE__ */ React2.createElement(Badge, { size: "xs", variant: "light", color: getChangeBadgeColor(diff.changeType), tt: "none" }, changeTypeLabels[diff.changeType])),
|
|
204
|
+
stringifyDetails(diff.details).map((line, index) => /* @__PURE__ */ React2.createElement(Text2, { key: `${index}-${line}`, size: "xs", c: "dimmed", mt: 4, style: { wordBreak: "break-word" } }, line))
|
|
205
|
+
)));
|
|
206
|
+
}
|
|
207
|
+
function ActionDiffView({ diffs, error, refetch: _refetch, onSign, signDisabled }) {
|
|
208
|
+
const [activeTab, setActiveTab] = useState2("summary");
|
|
209
|
+
const changedDiffs = useMemo(() => diffs.filter((diff) => diff.changeType !== "unchanged"), [diffs]);
|
|
210
|
+
const reviewDiffs = changedDiffs.length > 0 ? changedDiffs : diffs;
|
|
211
|
+
const firstChangeId = reviewDiffs[0]?.key;
|
|
212
|
+
if (error) {
|
|
213
|
+
return /* @__PURE__ */ React2.createElement(Alert, { icon: icon(IconAlertTriangle), title: "Preview Error", color: "red", variant: "light" }, /* @__PURE__ */ React2.createElement(Text2, { size: "xs" }, error));
|
|
214
|
+
}
|
|
215
|
+
if (diffs.length === 0) {
|
|
216
|
+
return /* @__PURE__ */ React2.createElement(Text2, { size: "sm", c: "dimmed", py: "md" }, "No changes to preview.");
|
|
217
|
+
}
|
|
218
|
+
return /* @__PURE__ */ React2.createElement(Stack, { gap: "sm", py: "md" }, /* @__PURE__ */ React2.createElement(
|
|
219
|
+
Paper,
|
|
220
|
+
{
|
|
221
|
+
p: "sm",
|
|
222
|
+
radius: "sm",
|
|
223
|
+
style: {
|
|
224
|
+
background: "color-mix(in srgb, var(--mantine-color-text) 2%, transparent)",
|
|
225
|
+
border: "1px solid var(--mantine-color-neutralColor-5)"
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
/* @__PURE__ */ React2.createElement(Stack, { gap: "sm" }, /* @__PURE__ */ React2.createElement(Group, { justify: "space-between", align: "flex-start", gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React2.createElement(Group, { gap: "xs", wrap: "nowrap", align: "flex-start", miw: 0 }, /* @__PURE__ */ React2.createElement(Box, { mt: 2 }, icon(IconFileDescription, 16, "var(--mantine-color-accent-5)")), /* @__PURE__ */ React2.createElement(Box, { miw: 0 }, /* @__PURE__ */ React2.createElement(Text2, { size: "sm", fw: 600, lineClamp: 1 }, "Action review"), /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed", lineClamp: 2 }, "Review the proposed change before signing."))), /* @__PURE__ */ React2.createElement(Badge, { variant: "light", color: changedDiffs.length > 0 ? "accent" : "gray", tt: "none" }, getChangeCountLabel(changedDiffs.length))), /* @__PURE__ */ React2.createElement(
|
|
229
|
+
SegmentedControl,
|
|
230
|
+
{
|
|
231
|
+
value: activeTab,
|
|
232
|
+
onChange: (value) => setActiveTab(value),
|
|
233
|
+
fullWidth: true,
|
|
234
|
+
data: [
|
|
235
|
+
{ label: "Summary", value: "summary" },
|
|
236
|
+
{ label: "Changes", value: "changes" },
|
|
237
|
+
{ label: "Details", value: "details" }
|
|
238
|
+
]
|
|
239
|
+
}
|
|
240
|
+
), /* @__PURE__ */ React2.createElement(ScrollArea.Autosize, { mah: 360, scrollbarSize: 4 }, activeTab === "summary" && /* @__PURE__ */ React2.createElement(Stack, { gap: "xs" }, /* @__PURE__ */ React2.createElement(Group, { gap: "xs" }, icon(IconEyeCheck, 16, "var(--mantine-color-accent-5)"), /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed" }, changedDiffs.length > 0 ? "Proposed changes" : "No visible changes")), reviewDiffs.slice(0, 3).map((diff) => /* @__PURE__ */ React2.createElement(ChangeSummaryLine, { key: diff.key, diff })), reviewDiffs.length > 3 && /* @__PURE__ */ React2.createElement(Text2, { size: "xs", c: "dimmed" }, reviewDiffs.length - 3, " more ", reviewDiffs.length - 3 === 1 ? "change" : "changes", " in the Changes tab.")), activeTab === "changes" && /* @__PURE__ */ React2.createElement(Accordion, { variant: "separated", radius: "sm", defaultValue: firstChangeId }, reviewDiffs.map((diff) => /* @__PURE__ */ React2.createElement(Accordion.Item, { key: diff.key, value: diff.key }, /* @__PURE__ */ React2.createElement(Accordion.Control, null, /* @__PURE__ */ React2.createElement(Group, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React2.createElement(Badge, { size: "xs", variant: "light", color: getChangeBadgeColor(diff.changeType), tt: "none" }, changeTypeLabels[diff.changeType]), /* @__PURE__ */ React2.createElement(Text2, { size: "sm", fw: 500, lineClamp: 1 }, diff.label))), /* @__PURE__ */ React2.createElement(Accordion.Panel, null, /* @__PURE__ */ React2.createElement(ChangeDetail, { diff }))))), activeTab === "details" && /* @__PURE__ */ React2.createElement(DetailsPanel, { diffs })))
|
|
241
|
+
), onSign && /* @__PURE__ */ React2.createElement(SlideToSign, { onSign, label: "Slide to Execute", disabled: signDisabled }));
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// src/mantine/blocks/action/diff/DefaultNarrative.tsx
|
|
245
|
+
import React3 from "react";
|
|
246
|
+
import { Text as Text3 } from "@mantine/core";
|
|
247
|
+
|
|
248
|
+
// src/mantine/blocks/action/diff/useActionDiff.ts
|
|
249
|
+
import { useState as useState3, useEffect, useCallback, useMemo as useMemo2 } from "react";
|
|
250
|
+
function useActionDiff({ actionType, inputs, actorDid = "", entityDid }) {
|
|
251
|
+
const [diffs, setDiffs] = useState3([]);
|
|
252
|
+
const [error, setError] = useState3();
|
|
253
|
+
const [fetchKey, setFetchKey] = useState3(0);
|
|
254
|
+
const handlers = useBlocknoteHandlers();
|
|
255
|
+
const hasResolver = hasDiffResolver(actionType);
|
|
256
|
+
const parsedInputs = useMemo2(() => {
|
|
257
|
+
if (!inputs) return {};
|
|
258
|
+
if (typeof inputs === "object") return inputs;
|
|
259
|
+
try {
|
|
260
|
+
return JSON.parse(inputs);
|
|
261
|
+
} catch {
|
|
262
|
+
return {};
|
|
263
|
+
}
|
|
264
|
+
}, [inputs]);
|
|
265
|
+
const refetch = useCallback(() => setFetchKey((k) => k + 1), []);
|
|
266
|
+
useEffect(() => {
|
|
267
|
+
if (!hasResolver) return;
|
|
268
|
+
const registration = getDiffResolver(actionType);
|
|
269
|
+
if (!registration) return;
|
|
270
|
+
let cancelled = false;
|
|
271
|
+
async function resolve() {
|
|
272
|
+
setError(void 0);
|
|
273
|
+
try {
|
|
274
|
+
const results = await registration.resolver(parsedInputs, {
|
|
275
|
+
handlers,
|
|
276
|
+
actorDid,
|
|
277
|
+
entityDid
|
|
278
|
+
});
|
|
279
|
+
if (!cancelled) {
|
|
280
|
+
setDiffs(results);
|
|
281
|
+
}
|
|
282
|
+
} catch (err) {
|
|
283
|
+
if (!cancelled) {
|
|
284
|
+
setError(err instanceof Error ? err.message : "Failed to resolve diffs");
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
resolve();
|
|
289
|
+
return () => {
|
|
290
|
+
cancelled = true;
|
|
291
|
+
};
|
|
292
|
+
}, [actionType, parsedInputs, actorDid, entityDid, handlers, hasResolver, fetchKey]);
|
|
293
|
+
return { diffs, error, hasResolver, refetch };
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export {
|
|
297
|
+
SlideToSign,
|
|
298
|
+
ActionDiffView,
|
|
299
|
+
useActionDiff
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=chunk-I2FPFISM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/blocks/action/diff/ActionDiffView.tsx","../src/mantine/blocks/action/diff/formatters.ts","../src/mantine/components/Base/SlideToSign.tsx","../src/mantine/blocks/action/diff/DefaultNarrative.tsx","../src/mantine/blocks/action/diff/useActionDiff.ts"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Accordion, Alert, Badge, Box, Flex, Group, Paper, ScrollArea, SegmentedControl, Stack, Text } from '@mantine/core';\nimport { IconAlertTriangle, IconArrowRight, IconEyeCheck, IconFileDescription } from '@tabler/icons-react';\nimport type { DiffResult } from '@/core/lib/actionRegistry/diffTypes';\nimport { formatDiffValue } from './formatters';\nimport { icon } from '@/mantine/components/ReusablePanel';\nimport SlideToSign from '@/mantine/components/Base/SlideToSign';\n\ninterface ActionDiffViewProps {\n diffs: DiffResult[];\n error?: string;\n refetch?: () => void;\n /** When provided, renders a SlideToSign control below the diff sections */\n onSign?: () => void;\n /** Disables the SlideToSign control */\n signDisabled?: boolean;\n}\n\ntype ReviewTab = 'summary' | 'changes' | 'details';\ntype ReviewTone = 'added' | 'removed' | 'current' | 'neutral';\n\nconst toneStyles: Record<ReviewTone, { label: string; badgeColor: string; color: string; bg: string; border: string; textDecoration?: string }> = {\n added: {\n label: 'Added',\n badgeColor: 'green',\n color: 'var(--mantine-color-green-7)',\n bg: 'color-mix(in srgb, var(--mantine-color-green-5) 12%, transparent)',\n border: 'color-mix(in srgb, var(--mantine-color-green-5) 34%, transparent)',\n },\n removed: {\n label: 'Removed',\n badgeColor: 'red',\n color: 'var(--mantine-color-red-7)',\n bg: 'color-mix(in srgb, var(--mantine-color-red-5) 10%, transparent)',\n border: 'color-mix(in srgb, var(--mantine-color-red-5) 34%, transparent)',\n textDecoration: 'line-through',\n },\n current: {\n label: 'Current',\n badgeColor: 'gray',\n color: 'var(--mantine-color-neutralColor-8)',\n bg: 'color-mix(in srgb, var(--mantine-color-text) 4%, transparent)',\n border: 'var(--mantine-color-neutralColor-5)',\n },\n neutral: {\n label: 'Details',\n badgeColor: 'gray',\n color: 'var(--mantine-color-neutralColor-8)',\n bg: 'var(--mantine-color-neutralColor-2)',\n border: 'var(--mantine-color-neutralColor-5)',\n },\n};\n\nconst changeTypeLabels: Record<DiffResult['changeType'], string> = {\n add: 'Added',\n remove: 'Removed',\n replace: 'Changed',\n increase: 'Increased',\n decrease: 'Decreased',\n unchanged: 'Unchanged',\n};\n\nfunction getChangeTone(changeType: DiffResult['changeType']): ReviewTone {\n if (changeType === 'add' || changeType === 'increase') return 'added';\n if (changeType === 'remove' || changeType === 'decrease') return 'removed';\n return 'neutral';\n}\n\nfunction getChangeBadgeColor(changeType: DiffResult['changeType']) {\n const tone = getChangeTone(changeType);\n if (tone === 'added') return 'green';\n if (tone === 'removed') return 'red';\n return changeType === 'unchanged' ? 'gray' : 'accent';\n}\n\nfunction getChangeCountLabel(count: number) {\n return `${count} ${count === 1 ? 'change' : 'changes'}`;\n}\n\nfunction stringifyDetails(details: DiffResult['details']): string[] {\n if (!details) return [];\n if (Array.isArray(details)) return details.map((item) => String(item));\n if (typeof details === 'string') return details ? [details] : [];\n\n return Object.entries(details).map(([key, value]) => {\n const rendered = typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' ? String(value) : JSON.stringify(value);\n return `${key}: ${rendered}`;\n });\n}\n\nfunction buildSummary(diff: DiffResult) {\n if (diff.description) return diff.description;\n\n const before = formatDiffValue(diff.before, diff.unit);\n const after = formatDiffValue(diff.after, diff.unit);\n\n if (diff.changeType === 'add') return after;\n if (diff.changeType === 'remove') return before;\n if (diff.changeType === 'unchanged') return 'No visible change';\n return `${before} → ${after}`;\n}\n\nfunction ReviewValueBlock({ label, value, tone }: { label: string; value: string; tone: ReviewTone }) {\n const styles = toneStyles[tone];\n\n return (\n <Box\n p=\"xs\"\n style={{\n border: `1px solid ${styles.border}`,\n borderRadius: 8,\n background: styles.bg,\n minWidth: 0,\n }}\n >\n <Group gap={6} mb={6}>\n <Badge size=\"xs\" variant=\"light\" color={styles.badgeColor} tt=\"none\">\n {styles.label}\n </Badge>\n <Text size=\"xs\" c=\"dimmed\" fw={500}>\n {label}\n </Text>\n </Group>\n <Text\n size=\"sm\"\n lh={1.55}\n style={{\n color: styles.color,\n textDecoration: styles.textDecoration,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n }}\n >\n {value}\n </Text>\n </Box>\n );\n}\n\nfunction ChangeSummaryLine({ diff }: { diff: DiffResult }) {\n return (\n <Flex gap=\"xs\" align=\"flex-start\">\n <Badge size=\"xs\" variant=\"light\" color={getChangeBadgeColor(diff.changeType)} tt=\"none\" miw={78}>\n {changeTypeLabels[diff.changeType]}\n </Badge>\n <Box flex={1} miw={0}>\n <Text size=\"sm\" fw={500} lineClamp={1}>\n {diff.label}\n </Text>\n <Text size=\"xs\" c=\"dimmed\" lineClamp={2} lh={1.45}>\n {buildSummary(diff)}\n </Text>\n </Box>\n </Flex>\n );\n}\n\nfunction ChangeDetail({ diff }: { diff: DiffResult }) {\n const before = formatDiffValue(diff.before, diff.unit);\n const after = formatDiffValue(diff.after, diff.unit);\n const showBefore = diff.changeType !== 'add' && before !== after;\n const showAfter = diff.changeType !== 'remove';\n const details = stringifyDetails(diff.details);\n\n return (\n <Stack gap=\"xs\">\n {diff.description && (\n <Text size=\"xs\" c=\"dimmed\" lh={1.5}>\n {diff.description}\n </Text>\n )}\n {showBefore && <ReviewValueBlock label={diff.label} value={before} tone={diff.changeType === 'unchanged' ? 'current' : 'removed'} />}\n {showBefore && showAfter && (\n <Flex justify=\"center\" aria-hidden=\"true\">\n {icon(IconArrowRight, 14, 'var(--mantine-color-neutralColor-7)')}\n </Flex>\n )}\n {showAfter && <ReviewValueBlock label={diff.label} value={after} tone={diff.changeType === 'unchanged' ? 'current' : 'added'} />}\n {details.length > 0 && (\n <Stack gap={4}>\n {details.map((line, index) => (\n <Text key={`${index}-${line}`} size=\"xs\" c=\"dimmed\" style={{ wordBreak: 'break-word' }}>\n {line}\n </Text>\n ))}\n </Stack>\n )}\n </Stack>\n );\n}\n\nfunction DetailsPanel({ diffs }: { diffs: DiffResult[] }) {\n return (\n <Stack gap=\"xs\">\n {diffs.map((diff) => (\n <Paper\n key={diff.key}\n p=\"xs\"\n radius=\"sm\"\n style={{\n background: 'var(--mantine-color-neutralColor-2)',\n border: '1px solid var(--mantine-color-neutralColor-5)',\n }}\n >\n <Group justify=\"space-between\" align=\"flex-start\" gap=\"xs\" wrap=\"nowrap\">\n <Box miw={0}>\n <Text size=\"xs\" fw={600} lineClamp={1}>\n {diff.label}\n </Text>\n <Text size=\"xs\" c=\"dimmed\" style={{ wordBreak: 'break-word' }}>\n {formatDiffValue(diff.before, diff.unit)}\n {' → '}\n {formatDiffValue(diff.after, diff.unit)}\n </Text>\n </Box>\n <Badge size=\"xs\" variant=\"light\" color={getChangeBadgeColor(diff.changeType)} tt=\"none\">\n {changeTypeLabels[diff.changeType]}\n </Badge>\n </Group>\n {stringifyDetails(diff.details).map((line, index) => (\n <Text key={`${index}-${line}`} size=\"xs\" c=\"dimmed\" mt={4} style={{ wordBreak: 'break-word' }}>\n {line}\n </Text>\n ))}\n </Paper>\n ))}\n </Stack>\n );\n}\n\nexport function ActionDiffView({ diffs, error, refetch: _refetch, onSign, signDisabled }: ActionDiffViewProps) {\n const [activeTab, setActiveTab] = useState<ReviewTab>('summary');\n const changedDiffs = useMemo(() => diffs.filter((diff) => diff.changeType !== 'unchanged'), [diffs]);\n const reviewDiffs = changedDiffs.length > 0 ? changedDiffs : diffs;\n const firstChangeId = reviewDiffs[0]?.key;\n\n if (error) {\n return (\n <Alert icon={icon(IconAlertTriangle)} title=\"Preview Error\" color=\"red\" variant=\"light\">\n <Text size=\"xs\">{error}</Text>\n </Alert>\n );\n }\n\n if (diffs.length === 0) {\n return (\n <Text size=\"sm\" c=\"dimmed\" py=\"md\">\n No changes to preview.\n </Text>\n );\n }\n\n return (\n <Stack gap=\"sm\" py=\"md\">\n <Paper\n p=\"sm\"\n radius=\"sm\"\n style={{\n background: 'color-mix(in srgb, var(--mantine-color-text) 2%, transparent)',\n border: '1px solid var(--mantine-color-neutralColor-5)',\n }}\n >\n <Stack gap=\"sm\">\n <Group justify=\"space-between\" align=\"flex-start\" gap=\"xs\" wrap=\"nowrap\">\n <Group gap=\"xs\" wrap=\"nowrap\" align=\"flex-start\" miw={0}>\n <Box mt={2}>{icon(IconFileDescription, 16, 'var(--mantine-color-accent-5)')}</Box>\n <Box miw={0}>\n <Text size=\"sm\" fw={600} lineClamp={1}>\n Action review\n </Text>\n <Text size=\"xs\" c=\"dimmed\" lineClamp={2}>\n Review the proposed change before signing.\n </Text>\n </Box>\n </Group>\n <Badge variant=\"light\" color={changedDiffs.length > 0 ? 'accent' : 'gray'} tt=\"none\">\n {getChangeCountLabel(changedDiffs.length)}\n </Badge>\n </Group>\n\n <SegmentedControl\n value={activeTab}\n onChange={(value) => setActiveTab(value as ReviewTab)}\n fullWidth\n data={[\n { label: 'Summary', value: 'summary' },\n { label: 'Changes', value: 'changes' },\n { label: 'Details', value: 'details' },\n ]}\n />\n\n <ScrollArea.Autosize mah={360} scrollbarSize={4}>\n {activeTab === 'summary' && (\n <Stack gap=\"xs\">\n <Group gap=\"xs\">\n {icon(IconEyeCheck, 16, 'var(--mantine-color-accent-5)')}\n <Text size=\"xs\" c=\"dimmed\">\n {changedDiffs.length > 0 ? 'Proposed changes' : 'No visible changes'}\n </Text>\n </Group>\n {reviewDiffs.slice(0, 3).map((diff) => (\n <ChangeSummaryLine key={diff.key} diff={diff} />\n ))}\n {reviewDiffs.length > 3 && (\n <Text size=\"xs\" c=\"dimmed\">\n {reviewDiffs.length - 3} more {reviewDiffs.length - 3 === 1 ? 'change' : 'changes'} in the Changes tab.\n </Text>\n )}\n </Stack>\n )}\n\n {activeTab === 'changes' && (\n <Accordion variant=\"separated\" radius=\"sm\" defaultValue={firstChangeId}>\n {reviewDiffs.map((diff) => (\n <Accordion.Item key={diff.key} value={diff.key}>\n <Accordion.Control>\n <Group gap=\"xs\" wrap=\"nowrap\">\n <Badge size=\"xs\" variant=\"light\" color={getChangeBadgeColor(diff.changeType)} tt=\"none\">\n {changeTypeLabels[diff.changeType]}\n </Badge>\n <Text size=\"sm\" fw={500} lineClamp={1}>\n {diff.label}\n </Text>\n </Group>\n </Accordion.Control>\n <Accordion.Panel>\n <ChangeDetail diff={diff} />\n </Accordion.Panel>\n </Accordion.Item>\n ))}\n </Accordion>\n )}\n\n {activeTab === 'details' && <DetailsPanel diffs={diffs} />}\n </ScrollArea.Autosize>\n </Stack>\n </Paper>\n\n {onSign && <SlideToSign onSign={onSign} label=\"Slide to Execute\" disabled={signDisabled} />}\n </Stack>\n );\n}\n","import type { DiffResult } from '@/core/lib/actionRegistry/diffTypes';\n\nexport function truncateAddress(address: string, startLen = 8, endLen = 4): string {\n if (!address || address.length <= startLen + endLen + 3) return address;\n return `${address.slice(0, startLen)}...${address.slice(-endLen)}`;\n}\n\nexport function formatTokenAmount(amount: string | number, decimals = 6): string {\n const num = typeof amount === 'string' ? parseFloat(amount) : amount;\n if (isNaN(num)) return String(amount);\n if (num === 0) return '0';\n const divided = num / Math.pow(10, decimals);\n if (divided >= 1_000_000) return `${(divided / 1_000_000).toFixed(2)}M`;\n if (divided >= 1_000) return `${(divided / 1_000).toFixed(2)}K`;\n return divided % 1 === 0 ? String(divided) : divided.toFixed(decimals > 2 ? 2 : decimals);\n}\n\nexport function formatDiffValue(value: string | number | null, unit?: string): string {\n if (value === null || value === undefined) return '—';\n const str = String(value);\n if (!str) return '—';\n return unit ? `${str} ${unit}` : str;\n}\n\nexport function changeTypeSymbol(changeType: DiffResult['changeType']): string {\n switch (changeType) {\n case 'increase':\n return '↑';\n case 'decrease':\n return '↓';\n case 'add':\n return '+';\n case 'remove':\n return '-';\n case 'replace':\n return '→';\n case 'unchanged':\n return '=';\n }\n}\n","import React, { useState } from 'react';\nimport { Flex, Slider, Text } from '@mantine/core';\nimport { IconFeather } from '@tabler/icons-react';\n\ninterface SlideToSignProps {\n onSign: () => void;\n label?: string;\n disabled?: boolean;\n}\n\nconst RESET_DELAY = 600;\n\nexport default function SlideToSign({ onSign, label = 'Slide to Sign', disabled }: SlideToSignProps) {\n const [value, setValue] = useState(23);\n\n const handleSlideEnd = (sliderValue: number) => {\n if (sliderValue >= 60) {\n setValue(73);\n onSign();\n setTimeout(() => setValue(23), RESET_DELAY);\n } else {\n setValue(23);\n }\n };\n\n return (\n <Slider\n value={value}\n onChange={setValue}\n label={null}\n onChangeEnd={handleSlideEnd}\n disabled={disabled}\n size=\"xl\"\n thumbChildren={\n <Flex align=\"center\" gap=\"sm\">\n <IconFeather color={disabled ? 'var(--mantine-color-neutralColor-9)' : 'var(--mantine-color-text)'} strokeWidth=\"1.2\" />\n <Text c={disabled ? 'neutralColor.9' : 'var(--mantine-color-text)'} fz={14}>\n {label}\n </Text>\n </Flex>\n }\n thumbSize={42}\n styles={{\n root: { width: '100%', opacity: disabled ? 0.4 : 1, transition: 'opacity 200ms ease' },\n track: {\n height: 36,\n borderRadius: 8,\n ':before': {\n backgroundColor: disabled ? 'var(--mantine-color-neutralColor-7)' : 'var(--mantine-color-accent-5)',\n opacity: disabled ? 1 : 0.6,\n borderRadius: 8,\n },\n },\n bar: { backgroundColor: disabled ? 'var(--mantine-color-neutralColor-7)' : 'var(--mantine-color-accent-5)', borderRadius: 8 },\n thumb: {\n border: '1px solid var(--mantine-color-neutralColor-6)',\n borderRadius: 8,\n width: 185,\n height: 36,\n boxShadow: 'none',\n backgroundColor: disabled ? 'var(--mantine-color-neutralColor-8)' : 'var(--mantine-color-neutralColor-5)',\n cursor: disabled ? 'not-allowed' : undefined,\n },\n }}\n />\n );\n}\n","import React from 'react';\nimport { Text } from '@mantine/core';\nimport type { ActionNarrativeProps } from '@/core/lib/actionRegistry/diffTypes';\nimport { formatDiffValue } from './formatters';\n\nexport function DefaultNarrative({ diffs, error }: ActionNarrativeProps) {\n if (error) return null;\n if (diffs.length === 0) return null;\n\n const parts = diffs\n .filter((d) => d.changeType !== 'unchanged')\n .map((d) => {\n const afterStr = formatDiffValue(d.after, d.unit);\n switch (d.changeType) {\n case 'add':\n return `set ${d.label} to ${afterStr}`;\n case 'remove':\n return `remove ${d.label}`;\n case 'increase':\n return `increase ${d.label} to ${afterStr}`;\n case 'decrease':\n return `decrease ${d.label} to ${afterStr}`;\n case 'replace':\n return `change ${d.label} to ${afterStr}`;\n default:\n return `${d.label}: ${afterStr}`;\n }\n });\n\n if (parts.length === 0) return null;\n\n const sentence = parts.length === 1 ? `This action will ${parts[0]}.` : `This action will ${parts.slice(0, -1).join(', ')} and ${parts[parts.length - 1]}.`;\n\n return (\n <Text size=\"sm\" c=\"dimmed\" mb=\"md\">\n {sentence}\n </Text>\n );\n}\n","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { getDiffResolver, hasDiffResolver } from '@/core/lib/actionRegistry/diffRegistry';\nimport type { DiffResult } from '@/core/lib/actionRegistry/diffTypes';\nimport { useBlocknoteHandlers } from '@/mantine/context/BlocknoteContext';\n\ninterface UseActionDiffOptions {\n actionType: string;\n inputs: string | Record<string, any>;\n actorDid?: string;\n entityDid?: string;\n}\n\ninterface UseActionDiffReturn {\n diffs: DiffResult[];\n error: string | undefined;\n hasResolver: boolean;\n refetch: () => void;\n}\n\nexport function useActionDiff({ actionType, inputs, actorDid = '', entityDid }: UseActionDiffOptions): UseActionDiffReturn {\n const [diffs, setDiffs] = useState<DiffResult[]>([]);\n const [error, setError] = useState<string | undefined>();\n const [fetchKey, setFetchKey] = useState(0);\n const handlers = useBlocknoteHandlers();\n\n const hasResolver = hasDiffResolver(actionType);\n\n const parsedInputs = useMemo(() => {\n if (!inputs) return {};\n if (typeof inputs === 'object') return inputs;\n try {\n return JSON.parse(inputs);\n } catch {\n return {};\n }\n }, [inputs]);\n\n const refetch = useCallback(() => setFetchKey((k) => k + 1), []);\n\n useEffect(() => {\n if (!hasResolver) return;\n\n const registration = getDiffResolver(actionType);\n if (!registration) return;\n\n let cancelled = false;\n\n async function resolve() {\n setError(undefined);\n\n try {\n const results = await registration!.resolver(parsedInputs, {\n handlers,\n actorDid,\n entityDid,\n });\n if (!cancelled) {\n setDiffs(results);\n }\n } catch (err) {\n if (!cancelled) {\n setError(err instanceof Error ? err.message : 'Failed to resolve diffs');\n }\n }\n }\n\n resolve();\n\n return () => {\n cancelled = true;\n };\n }, [actionType, parsedInputs, actorDid, entityDid, handlers, hasResolver, fetchKey]);\n\n return { diffs, error, hasResolver, refetch };\n}\n"],"mappings":"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","names":["React","useState","Flex","Text","React","Text","Flex","useState","React","Text","useState","useMemo","useState","useMemo"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/mantine/blocks/action/actionTypes/proposalCreate/types.ts
|
|
2
|
+
function parseProposalCreateInputs(json) {
|
|
3
|
+
try {
|
|
4
|
+
const parsed = typeof json === "string" ? JSON.parse(json) : json;
|
|
5
|
+
return {
|
|
6
|
+
coreAddress: parsed?.coreAddress || "",
|
|
7
|
+
proposalTitle: parsed?.proposalTitle || "",
|
|
8
|
+
proposalDescription: parsed?.proposalDescription || "",
|
|
9
|
+
governanceActions: parsed?.governanceActions || "[]"
|
|
10
|
+
};
|
|
11
|
+
} catch {
|
|
12
|
+
return {
|
|
13
|
+
coreAddress: "",
|
|
14
|
+
proposalTitle: "",
|
|
15
|
+
proposalDescription: "",
|
|
16
|
+
governanceActions: "[]"
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function serializeProposalCreateInputs(inputs) {
|
|
21
|
+
return JSON.stringify(inputs);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export {
|
|
25
|
+
parseProposalCreateInputs,
|
|
26
|
+
serializeProposalCreateInputs
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-IADAQJDH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/blocks/action/actionTypes/proposalCreate/types.ts"],"sourcesContent":["export interface ProposalCreateInputs {\n coreAddress: string;\n proposalTitle: string;\n proposalDescription: string;\n governanceActions: string;\n}\n\nexport function parseProposalCreateInputs(json: string): ProposalCreateInputs {\n try {\n const parsed = typeof json === 'string' ? JSON.parse(json) : json;\n return {\n coreAddress: parsed?.coreAddress || '',\n proposalTitle: parsed?.proposalTitle || '',\n proposalDescription: parsed?.proposalDescription || '',\n governanceActions: parsed?.governanceActions || '[]',\n };\n } catch {\n return {\n coreAddress: '',\n proposalTitle: '',\n proposalDescription: '',\n governanceActions: '[]',\n };\n }\n}\n\nexport function serializeProposalCreateInputs(inputs: ProposalCreateInputs): string {\n return JSON.stringify(inputs);\n}\n"],"mappings":";AAOO,SAAS,0BAA0B,MAAoC;AAC5E,MAAI;AACF,UAAM,SAAS,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI;AAC7D,WAAO;AAAA,MACL,aAAa,QAAQ,eAAe;AAAA,MACpC,eAAe,QAAQ,iBAAiB;AAAA,MACxC,qBAAqB,QAAQ,uBAAuB;AAAA,MACpD,mBAAmB,QAAQ,qBAAqB;AAAA,IAClD;AAAA,EACF,QAAQ;AACN,WAAO;AAAA,MACL,aAAa;AAAA,MACb,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,IACrB;AAAA,EACF;AACF;AAEO,SAAS,8BAA8B,QAAsC;AAClF,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NODE_CONTEXT_MAP_NAME,
|
|
3
|
+
NODE_CONTEXT_OVERRIDES_MAP_NAME,
|
|
4
|
+
isNodeContextRecord
|
|
5
|
+
} from "./chunk-YYNMESIF.js";
|
|
6
|
+
|
|
7
|
+
// src/mantine/hooks/useNodeContext.ts
|
|
8
|
+
import { useState, useEffect, useCallback, useRef } from "react";
|
|
9
|
+
function plainShallowEqual(a, b) {
|
|
10
|
+
if (a === b) return true;
|
|
11
|
+
const keysA = Object.keys(a);
|
|
12
|
+
const keysB = Object.keys(b);
|
|
13
|
+
if (keysA.length !== keysB.length) return false;
|
|
14
|
+
for (const key of keysA) {
|
|
15
|
+
if (a[key] !== b[key]) return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
function recordsEqual(a, b) {
|
|
20
|
+
if (a === b) return true;
|
|
21
|
+
if (!a || !b) return false;
|
|
22
|
+
const keysA = Object.keys(a);
|
|
23
|
+
const keysB = Object.keys(b);
|
|
24
|
+
if (keysA.length !== keysB.length) return false;
|
|
25
|
+
for (const key of keysA) {
|
|
26
|
+
if (key === "values" || key === "fieldProvenance") continue;
|
|
27
|
+
if (a[key] !== b[key]) return false;
|
|
28
|
+
}
|
|
29
|
+
if (!("values" in b) || !("fieldProvenance" in b)) return false;
|
|
30
|
+
return plainShallowEqual(a.values, b.values) && plainShallowEqual(a.fieldProvenance, b.fieldProvenance);
|
|
31
|
+
}
|
|
32
|
+
function getNodeContextMap(editor) {
|
|
33
|
+
return editor?._yNodeContext ?? editor?._yDoc?.getMap?.(NODE_CONTEXT_MAP_NAME);
|
|
34
|
+
}
|
|
35
|
+
function getNodeContextOverridesMap(editor) {
|
|
36
|
+
return editor?._yNodeContextOverrides ?? editor?._yDoc?.getMap?.(NODE_CONTEXT_OVERRIDES_MAP_NAME);
|
|
37
|
+
}
|
|
38
|
+
function overrideKey(nodeId, field) {
|
|
39
|
+
return `${nodeId}:${field}`;
|
|
40
|
+
}
|
|
41
|
+
function buildOverlaidRecord(contextMap, overridesMap, nodeId) {
|
|
42
|
+
const stored = contextMap?.get(nodeId);
|
|
43
|
+
if (!isNodeContextRecord(stored)) return void 0;
|
|
44
|
+
const snapshot = {
|
|
45
|
+
...stored,
|
|
46
|
+
values: { ...stored.values },
|
|
47
|
+
fieldProvenance: { ...stored.fieldProvenance }
|
|
48
|
+
};
|
|
49
|
+
if (overridesMap) {
|
|
50
|
+
const prefix = `${nodeId}:`;
|
|
51
|
+
overridesMap.forEach((value, key) => {
|
|
52
|
+
if (typeof key !== "string" || !key.startsWith(prefix)) return;
|
|
53
|
+
const field = key.slice(prefix.length);
|
|
54
|
+
if (!field) return;
|
|
55
|
+
snapshot.values[field] = value;
|
|
56
|
+
snapshot.fieldProvenance[field] = "human";
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return snapshot;
|
|
60
|
+
}
|
|
61
|
+
function useNodeContext(editor, nodeId) {
|
|
62
|
+
const contextMap = getNodeContextMap(editor);
|
|
63
|
+
const overridesMap = getNodeContextOverridesMap(editor);
|
|
64
|
+
const [record, setRecord] = useState(() => buildOverlaidRecord(contextMap, overridesMap, nodeId));
|
|
65
|
+
const recordRef = useRef(record);
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
recordRef.current = record;
|
|
68
|
+
});
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (!contextMap && !overridesMap) return;
|
|
71
|
+
const handler = () => {
|
|
72
|
+
const next = buildOverlaidRecord(contextMap, overridesMap, nodeId);
|
|
73
|
+
if (!recordsEqual(recordRef.current, next)) {
|
|
74
|
+
recordRef.current = next;
|
|
75
|
+
setRecord(next);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
contextMap?.observe(handler);
|
|
79
|
+
overridesMap?.observe(handler);
|
|
80
|
+
handler();
|
|
81
|
+
return () => {
|
|
82
|
+
contextMap?.unobserve(handler);
|
|
83
|
+
overridesMap?.unobserve(handler);
|
|
84
|
+
};
|
|
85
|
+
}, [contextMap, overridesMap, nodeId]);
|
|
86
|
+
const setHumanOverride = useCallback(
|
|
87
|
+
(field, value) => {
|
|
88
|
+
if (!overridesMap || !field) return;
|
|
89
|
+
overridesMap.set(overrideKey(nodeId, field), value);
|
|
90
|
+
},
|
|
91
|
+
[overridesMap, nodeId]
|
|
92
|
+
);
|
|
93
|
+
return [record, setHumanOverride];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export {
|
|
97
|
+
useNodeContext
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=chunk-IBOBCMQQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/hooks/useNodeContext.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef } from 'react';\nimport type { IxoEditorType } from '../../core/types/editor';\nimport { isNodeContextRecord, NODE_CONTEXT_MAP_NAME, NODE_CONTEXT_OVERRIDES_MAP_NAME, type NodeContextFieldProvenance, type NodeContextRecord } from '../../core/types/nodeContext';\n\n/** Shallow-compare two plain records by own keys and === values. */\nfunction plainShallowEqual(a: Record<string, unknown>, b: Record<string, unknown>): boolean {\n if (a === b) return true;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\n/**\n * Compare two overlaid NodeContextRecord snapshots (either may be undefined).\n * Top-level fields are compared by ===; `values` and `fieldProvenance` are\n * compared entry-by-entry because the overlay rebuilds them on every read.\n */\nfunction recordsEqual(a: NodeContextRecord | undefined, b: NodeContextRecord | undefined): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (key === 'values' || key === 'fieldProvenance') continue;\n if ((a as any)[key] !== (b as any)[key]) return false;\n }\n if (!('values' in b) || !('fieldProvenance' in b)) return false;\n return plainShallowEqual(a.values, b.values) && plainShallowEqual(a.fieldProvenance as Record<string, unknown>, b.fieldProvenance as Record<string, unknown>);\n}\n\ntype AnyYMap = {\n get: (key: string) => unknown;\n set: (key: string, value: unknown) => void;\n forEach: (cb: (value: unknown, key: string) => void) => void;\n observe: (cb: () => void) => void;\n unobserve: (cb: () => void) => void;\n};\n\n/**\n * Resolve the top-level `nodeContext` Y.Map the flow manager writes to.\n * Prefers the map attached at editor creation (`_yNodeContext`) and falls\n * back to deriving it from the Y.Doc — `getMap` is idempotent, so both paths\n * yield the same live map instance.\n */\nfunction getNodeContextMap(editor: IxoEditorType): AnyYMap | undefined {\n return (editor?._yNodeContext as AnyYMap | undefined) ?? (editor?._yDoc as { getMap?: (name: string) => AnyYMap } | undefined)?.getMap?.(NODE_CONTEXT_MAP_NAME);\n}\n\n/**\n * Resolve the top-level `nodeContextOverrides` Y.Map — per-field human\n * overrides keyed `${nodeId}:${field}` with the raw override value.\n */\nfunction getNodeContextOverridesMap(editor: IxoEditorType): AnyYMap | undefined {\n return (\n (editor?._yNodeContextOverrides as AnyYMap | undefined) ?? (editor?._yDoc as { getMap?: (name: string) => AnyYMap } | undefined)?.getMap?.(NODE_CONTEXT_OVERRIDES_MAP_NAME)\n );\n}\n\n/** Build the key for one node's per-field override entry. */\nfunction overrideKey(nodeId: string, field: string): string {\n return `${nodeId}:${field}`;\n}\n\n/**\n * Read the base `nodeContext` record for `nodeId` and overlay every\n * `${nodeId}:${field}` entry from `nodeContextOverrides` on top of it:\n * `values[field] = override`, `fieldProvenance[field] = 'human'`.\n *\n * Overrides overlay an existing record only — with no valid base record this\n * returns undefined even when overrides exist.\n */\nfunction buildOverlaidRecord(contextMap: AnyYMap | undefined, overridesMap: AnyYMap | undefined, nodeId: string): NodeContextRecord | undefined {\n const stored = contextMap?.get(nodeId);\n if (!isNodeContextRecord(stored)) return undefined;\n\n const snapshot: NodeContextRecord = {\n ...stored,\n values: { ...stored.values },\n fieldProvenance: { ...stored.fieldProvenance },\n };\n\n if (overridesMap) {\n const prefix = `${nodeId}:`;\n overridesMap.forEach((value, key) => {\n if (typeof key !== 'string' || !key.startsWith(prefix)) return;\n const field = key.slice(prefix.length);\n if (!field) return;\n snapshot.values[field] = value;\n snapshot.fieldProvenance[field] = 'human' satisfies NodeContextFieldProvenance;\n });\n }\n\n return snapshot;\n}\n\n/**\n * Reactive hook that subscribes to a single node's flow-manager context\n * record in the top-level `nodeContext` Y.Map (keyed by block/node id),\n * overlaid with per-field human overrides from the top-level\n * `nodeContextOverrides` Y.Map (keyed `${nodeId}:${field}`).\n *\n * Usage:\n * const [record, setHumanOverride] = useNodeContext(editor, block.id);\n * // record?.values.theme, record?.fieldProvenance.theme, ...\n * // setHumanOverride('theme', 'Reforestation');\n *\n * Malformed or missing entries read back as `undefined` — both maps are\n * written across process boundaries, so shape is never assumed.\n *\n * `setHumanOverride(field, value)` writes ONLY the `${nodeId}:${field}` key\n * into `nodeContextOverrides` — it never touches the `nodeContext` record, so\n * a concurrent whole-record write by the flow manager can never erase the\n * override. It works even when no record exists yet; the override becomes\n * visible once a base record appears (overrides overlay an existing record\n * only).\n */\nexport function useNodeContext(editor: IxoEditorType, nodeId: string): [NodeContextRecord | undefined, (field: string, value: unknown) => void] {\n const contextMap = getNodeContextMap(editor);\n const overridesMap = getNodeContextOverridesMap(editor);\n\n const [record, setRecord] = useState<NodeContextRecord | undefined>(() => buildOverlaidRecord(contextMap, overridesMap, nodeId));\n\n // Keep a ref to the latest record so the observer can compare without\n // needing setState's functional form to capture a stale closure.\n const recordRef = useRef(record);\n useEffect(() => {\n recordRef.current = record;\n });\n\n useEffect(() => {\n if (!contextMap && !overridesMap) return;\n\n const handler = () => {\n const next = buildOverlaidRecord(contextMap, overridesMap, nodeId);\n\n // Only update state when this node's overlaid data actually changed.\n // Y.Map.observe fires for ANY key in the map, so most events\n // are irrelevant to this specific nodeId.\n if (!recordsEqual(recordRef.current, next)) {\n recordRef.current = next;\n setRecord(next);\n }\n };\n\n contextMap?.observe(handler);\n overridesMap?.observe(handler);\n // Sync initial value\n handler();\n\n return () => {\n contextMap?.unobserve(handler);\n overridesMap?.unobserve(handler);\n };\n }, [contextMap, overridesMap, nodeId]);\n\n const setHumanOverride = useCallback(\n (field: string, value: unknown) => {\n if (!overridesMap || !field) return;\n overridesMap.set(overrideKey(nodeId, field), value);\n },\n [overridesMap, nodeId]\n );\n\n return [record, setHumanOverride];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useBlocknoteContext
|
|
3
|
+
} from "./chunk-4DGCCXD6.js";
|
|
4
|
+
|
|
5
|
+
// src/mantine/components/Base/DismissibleAlert.tsx
|
|
6
|
+
import { Alert } from "@mantine/core";
|
|
7
|
+
import React, { useEffect, useMemo, useState } from "react";
|
|
8
|
+
function textOf(node) {
|
|
9
|
+
if (node === null || node === void 0 || typeof node === "boolean") return "";
|
|
10
|
+
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
11
|
+
if (Array.isArray(node)) return node.map(textOf).join("|");
|
|
12
|
+
if (React.isValidElement(node)) return textOf(node.props.children);
|
|
13
|
+
return "";
|
|
14
|
+
}
|
|
15
|
+
function useDismissalStore() {
|
|
16
|
+
const { editor } = useBlocknoteContext();
|
|
17
|
+
return useMemo(() => {
|
|
18
|
+
const doc = editor?._yDoc;
|
|
19
|
+
return doc ? doc.getMap("dismissedAlerts") : null;
|
|
20
|
+
}, [editor]);
|
|
21
|
+
}
|
|
22
|
+
function DismissibleAlert({ onClose, withCloseButton = true, closeButtonLabel, ...props }) {
|
|
23
|
+
const contentKey = useMemo(() => `${textOf(props.title)}::${textOf(props.children)}`, [props.title, props.children]);
|
|
24
|
+
const store = useDismissalStore();
|
|
25
|
+
const [, bump] = useState(0);
|
|
26
|
+
const [localDismissedKey, setLocalDismissedKey] = useState(null);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (!store) return;
|
|
29
|
+
const handler = () => bump((n) => n + 1);
|
|
30
|
+
store.observe(handler);
|
|
31
|
+
return () => store.unobserve(handler);
|
|
32
|
+
}, [store]);
|
|
33
|
+
const dismissed = store ? store.has(contentKey) : localDismissedKey === contentKey;
|
|
34
|
+
if (dismissed) return null;
|
|
35
|
+
return /* @__PURE__ */ React.createElement(
|
|
36
|
+
Alert,
|
|
37
|
+
{
|
|
38
|
+
...props,
|
|
39
|
+
withCloseButton,
|
|
40
|
+
closeButtonLabel: closeButtonLabel ?? "Dismiss",
|
|
41
|
+
onClose: () => {
|
|
42
|
+
if (store) {
|
|
43
|
+
store.set(contentKey, Date.now());
|
|
44
|
+
} else {
|
|
45
|
+
setLocalDismissedKey(contentKey);
|
|
46
|
+
}
|
|
47
|
+
onClose?.();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
DismissibleAlert
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=chunk-IFWKRCFF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/components/Base/DismissibleAlert.tsx"],"sourcesContent":["import { Alert, type AlertProps } from '@mantine/core';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useBlocknoteContext } from '@/mantine/context/BlocknoteContext';\n\nfunction textOf(node: React.ReactNode): string {\n if (node === null || node === undefined || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(textOf).join('|');\n if (React.isValidElement(node)) return textOf((node.props as { children?: React.ReactNode }).children);\n return '';\n}\n\n/** Minimal structural view of the Y.Map we persist dismissals in — typed\n * structurally so this file stays agnostic of the concrete yjs instance. */\ntype DismissalStore = {\n has(key: string): boolean;\n set(key: string, value: number): unknown;\n observe(fn: (...args: unknown[]) => void): void;\n unobserve(fn: (...args: unknown[]) => void): void;\n};\n\nfunction useDismissalStore(): DismissalStore | null {\n const { editor } = useBlocknoteContext();\n return useMemo(() => {\n const doc = (editor as { _yDoc?: { getMap(name: string): DismissalStore } } | undefined)?._yDoc;\n return doc ? doc.getMap('dismissedAlerts') : null;\n }, [editor]);\n}\n\n/**\n * Every alert on the flow-details surface is user-removable. A dismissal is\n * written to the flow doc's `dismissedAlerts` Y.Map, so it is permanent and\n * collaborative like all other flow state: the alert never comes back on\n * reload and is gone for every participant. Dismissals are keyed by the\n * alert's visible text — a warning or error with *different* content is a\n * different fact and always shows, no matter what was dismissed before.\n * Outside a collaborative doc (e.g. component galleries) dismissal degrades\n * to view-local hiding.\n */\nexport function DismissibleAlert({ onClose, withCloseButton = true, closeButtonLabel, ...props }: AlertProps) {\n const contentKey = useMemo(() => `${textOf(props.title)}::${textOf(props.children)}`, [props.title, props.children]);\n const store = useDismissalStore();\n const [, bump] = useState(0);\n const [localDismissedKey, setLocalDismissedKey] = useState<string | null>(null);\n\n useEffect(() => {\n if (!store) return;\n const handler = () => bump((n) => n + 1);\n store.observe(handler);\n return () => store.unobserve(handler);\n }, [store]);\n\n const dismissed = store ? store.has(contentKey) : localDismissedKey === contentKey;\n if (dismissed) return null;\n\n return (\n <Alert\n {...props}\n withCloseButton={withCloseButton}\n closeButtonLabel={closeButtonLabel ?? 'Dismiss'}\n onClose={() => {\n if (store) {\n store.set(contentKey, Date.now());\n } else {\n setLocalDismissedKey(contentKey);\n }\n onClose?.();\n }}\n />\n );\n}\n\nexport default DismissibleAlert;\n"],"mappings":";;;;;AAAA,SAAS,aAA8B;AACvC,OAAO,SAAS,WAAW,SAAS,gBAAgB;AAGpD,SAAS,OAAO,MAA+B;AAC7C,MAAI,SAAS,QAAQ,SAAS,UAAa,OAAO,SAAS,UAAW,QAAO;AAC7E,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,SAAU,QAAO,OAAO,IAAI;AAC5E,MAAI,MAAM,QAAQ,IAAI,EAAG,QAAO,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG;AACzD,MAAI,MAAM,eAAe,IAAI,EAAG,QAAO,OAAQ,KAAK,MAAyC,QAAQ;AACrG,SAAO;AACT;AAWA,SAAS,oBAA2C;AAClD,QAAM,EAAE,OAAO,IAAI,oBAAoB;AACvC,SAAO,QAAQ,MAAM;AACnB,UAAM,MAAO,QAA6E;AAC1F,WAAO,MAAM,IAAI,OAAO,iBAAiB,IAAI;AAAA,EAC/C,GAAG,CAAC,MAAM,CAAC;AACb;AAYO,SAAS,iBAAiB,EAAE,SAAS,kBAAkB,MAAM,kBAAkB,GAAG,MAAM,GAAe;AAC5G,QAAM,aAAa,QAAQ,MAAM,GAAG,OAAO,MAAM,KAAK,CAAC,KAAK,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,OAAO,MAAM,QAAQ,CAAC;AACnH,QAAM,QAAQ,kBAAkB;AAChC,QAAM,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;AAC3B,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAwB,IAAI;AAE9E,YAAU,MAAM;AACd,QAAI,CAAC,MAAO;AACZ,UAAM,UAAU,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC;AACvC,UAAM,QAAQ,OAAO;AACrB,WAAO,MAAM,MAAM,UAAU,OAAO;AAAA,EACtC,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,YAAY,QAAQ,MAAM,IAAI,UAAU,IAAI,sBAAsB;AACxE,MAAI,UAAW,QAAO;AAEtB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,kBAAkB,oBAAoB;AAAA,MACtC,SAAS,MAAM;AACb,YAAI,OAAO;AACT,gBAAM,IAAI,YAAY,KAAK,IAAI,CAAC;AAAA,QAClC,OAAO;AACL,+BAAqB,UAAU;AAAA,QACjC;AACA,kBAAU;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;","names":[]}
|