@objectstack/console 17.6.0 → 17.7.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/CHANGELOG.md +428 -0
- package/dist/.objectstack-injection.json +2 -2
- package/dist/.objectui-sha +1 -1
- package/dist/assets/{ActionResultDialog-4kHDGnT3.js → ActionResultDialog-ChYnuROr.js} +3 -3
- package/dist/assets/{AiPendingActionsPage-JjOddm0h.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
- package/dist/assets/{ApiConsolePage-BgS26lbp.js → ApiConsolePage-CKYEqlMs.js} +1 -1
- package/dist/assets/{AppDocsIndex-BDoH5ECM.js → AppDocsIndex-B5Tky2xg.js} +1 -1
- package/dist/assets/{AppManagementPage-CCgKmNTj.js → AppManagementPage-ZwyvnHpM.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
- package/dist/assets/AuditLogPage-Sed6iMqP.js +1 -0
- package/dist/assets/BookPage-DYjUsQIc.js +1 -0
- package/dist/assets/{ComponentNavView-B5g9c6fx.js → ComponentNavView-DrlxM4SY.js} +1 -1
- package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
- package/dist/assets/{DashboardView-BOcovpPd.js → DashboardView-juicRxcP.js} +1 -1
- package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
- package/dist/assets/{DocsIndex-DwW2QsYY.js → DocsIndex-LALVtIVR.js} +1 -1
- package/dist/assets/{DocsLayout-D63StSgd.js → DocsLayout-BAwlJQQf.js} +1 -1
- package/dist/assets/{DocsSlug-CP9fcabi.js → DocsSlug-CkF1E-Zs.js} +1 -1
- package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
- package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
- package/dist/assets/{IntegrationsPage-DvG0x0Nb.js → IntegrationsPage-DIuFLEbF.js} +2 -2
- package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
- package/dist/assets/{MarketplaceInstalledPage-B7KETQG2.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
- package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
- package/dist/assets/MarketplacePage-DO2_b64U.js +1 -0
- package/dist/assets/{MetadataInspector-EP0I3-Kq.js → MetadataInspector-BQyu9pOE.js} +1 -1
- package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
- package/dist/assets/PageView-C-qWu3Jw.js +1 -0
- package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
- package/dist/assets/{PublicFormsPage-D3uCTR-8.js → PublicFormsPage-D3AT2EH9.js} +1 -1
- package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
- package/dist/assets/{RecordFormPage-kiJI-ieF.js → RecordFormPage-CcoZfUJ3.js} +1 -1
- package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
- package/dist/assets/ReportView-pJCFptzp.js +2 -0
- package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
- package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
- package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
- package/dist/assets/{SettingsHub-DP1mrzEN.js → SettingsHub-CPP9FDe8.js} +1 -1
- package/dist/assets/{SettingsView-u7mc6pcc.js → SettingsView-CrHAROu9.js} +1 -1
- package/dist/assets/{SkeletonDetail-DIwlbHTr.js → SkeletonDetail-CP-35B8x.js} +1 -1
- package/dist/assets/{af-DPUgkQl0.js → af-Bhbso4Pg.js} +1 -1
- package/dist/assets/ai-BAPiCsNk.js +3 -0
- package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
- package/dist/assets/{ar-B-6GTIRU.js → ar-DG8TAFtm.js} +1 -1
- package/dist/assets/{ar-DZ-wEl298ti.js → ar-DZ-BtSien-d.js} +1 -1
- package/dist/assets/{ar-EG-YBT90_S0.js → ar-EG-DpXC0zoY.js} +1 -1
- package/dist/assets/{ar-MA-3uT-EYh6.js → ar-MA-D1qVJLyE.js} +1 -1
- package/dist/assets/{ar-SA-SiQsjhhc.js → ar-SA-BIYKNgv8.js} +1 -1
- package/dist/assets/{ar-TN-CfzXjKzS.js → ar-TN-mUR5Mq3s.js} +1 -1
- package/dist/assets/{az-BqAfcNza.js → az-B7IqwHGK.js} +1 -1
- package/dist/assets/{be-CQgWXa9_.js → be-CnZyPaSX.js} +1 -1
- package/dist/assets/{be-tarask-BmNg0Sir.js → be-tarask--uMMCC7l.js} +1 -1
- package/dist/assets/{bg-D3evgRuS.js → bg-CZwuirtY.js} +1 -1
- package/dist/assets/{bn-uItkARwm.js → bn-BbOX0r-z.js} +1 -1
- package/dist/assets/{bs-DueReOpO.js → bs-B5W75cYR.js} +1 -1
- package/dist/assets/{ca-Cr3AHktR.js → ca-Be69LdIM.js} +1 -1
- package/dist/assets/{ckb-CTi5BET7.js → ckb-B-nKM1Vn.js} +1 -1
- package/dist/assets/{createDerive-CjN1i5vn.js → createDerive-CynsXU-B.js} +1 -1
- package/dist/assets/{cs-43mFX9jr.js → cs-qHngxH7l.js} +1 -1
- package/dist/assets/{cy-BBSkg3F8.js → cy-DscO2Pgf.js} +1 -1
- package/dist/assets/{da-C5oA5qcs.js → da-vibkaLMF.js} +1 -1
- package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
- package/dist/assets/{de-AT-CApxwJzu.js → de-AT--JneEuBw.js} +1 -1
- package/dist/assets/{de-CPtbLlAf.js → de-BCT78XYW.js} +1 -1
- package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
- package/dist/assets/dist-yh3dYtHt.js +14 -0
- package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
- package/dist/assets/{el-Dto2xBQU.js → el-Cl0y9T2b.js} +1 -1
- package/dist/assets/en-AU-By42tTB7.js +1 -0
- package/dist/assets/{en-CA-DKuJPN1U.js → en-CA-BqEEoj-Y.js} +1 -1
- package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
- package/dist/assets/en-IE-CX9nv6uO.js +1 -0
- package/dist/assets/en-IN-ByGSBHa4.js +1 -0
- package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
- package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
- package/dist/assets/{eo-BL8JXIWd.js → eo-oOXROuhF.js} +1 -1
- package/dist/assets/{es-BnoaNxsu.js → es-EudscwjH.js} +1 -1
- package/dist/assets/{et-tPYLNenO.js → et-CB-5LLh6.js} +1 -1
- package/dist/assets/{eu-CUBG6bT0.js → eu-B4-hcseX.js} +1 -1
- package/dist/assets/{fa-IR-Rr2d9xSs.js → fa-IR-CogavcMJ.js} +1 -1
- package/dist/assets/{fi-B0NVIZsV.js → fi-CIBE0mYa.js} +1 -1
- package/dist/assets/{formatLong-1-gt9bpo.js → formatLong-qqgm7lV1.js} +1 -1
- package/dist/assets/{fr-CA-CBDvLXFg.js → fr-CA-BugXMutW.js} +1 -1
- package/dist/assets/{fr-BbhHek8e.js → fr-CDReXYWW.js} +1 -1
- package/dist/assets/{fr-CH-WPNmwPn7.js → fr-CH-fiTiB6X1.js} +1 -1
- package/dist/assets/framework-CAuH4h0L.js +35 -0
- package/dist/assets/{fy-DvOBbvEF.js → fy-t_GzIAg_.js} +1 -1
- package/dist/assets/{gd-BQPiTPX5.js → gd-CSncIxtN.js} +1 -1
- package/dist/assets/getIcon-BDkBRQFw.js +1 -0
- package/dist/assets/{gl-BJCXK8uO.js → gl-_138Mj2S.js} +1 -1
- package/dist/assets/{gu-CctPRz3V.js → gu-COfH-YUT.js} +1 -1
- package/dist/assets/{he-CVFMk6p2.js → he-BXL4lOKY.js} +1 -1
- package/dist/assets/{hi-Ba30-RwS.js → hi-kXuYI0TJ.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-BQ57IrBV.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
- package/dist/assets/{hr-BZUqTbZs.js → hr-DAOsQWzI.js} +1 -1
- package/dist/assets/{ht-BLe05tPx.js → ht-Ch8SKz8p.js} +1 -1
- package/dist/assets/{hu-2CQ_Mkww.js → hu-q6W_rWPT.js} +1 -1
- package/dist/assets/{hy-CclcPG4H.js → hy-0M8OmwnM.js} +1 -1
- package/dist/assets/{i18n-BnUsCaSC.js → i18n-DTfZonAM.js} +3 -3
- package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
- package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
- package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
- package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
- package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
- package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
- package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
- package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
- package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
- package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
- package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
- package/dist/assets/{id-6JLB8s-f.js → id-BM_H1_jv.js} +1 -1
- package/dist/assets/index-ocmkyCt6.js +19 -0
- package/dist/assets/index-v2Ijn9Gr.css +2 -0
- package/dist/assets/{infrastructure-Cc34lEqb.js → infrastructure-CSnL6ntj.js} +2 -2
- package/dist/assets/integration-7NqwVHuJ.js +1 -0
- package/dist/assets/{is-to0CWzm1.js → is-B_7jXZfS.js} +1 -1
- package/dist/assets/isSameWeek-D90tBsli.js +1 -0
- package/dist/assets/{it-ea0B8Ujp.js → it-CBM0J9cD.js} +1 -1
- package/dist/assets/{it-CH-DhdfjP5Z.js → it-CH-BQltCNsR.js} +1 -1
- package/dist/assets/{ja-B1bzkgDW.js → ja-DBjnsx21.js} +1 -1
- package/dist/assets/{ja-Hira-CMrY5hXO.js → ja-Hira-BZfSmj1i.js} +1 -1
- package/dist/assets/{ka-DKSXLnXP.js → ka-HwpuKgUY.js} +1 -1
- package/dist/assets/{kk-DHwMv8Dn.js → kk-DLKA9paj.js} +1 -1
- package/dist/assets/{km-tpLG1xNr.js → km-BU5kermq.js} +1 -1
- package/dist/assets/{kn-MLreVnHA.js → kn-BNFqbCoi.js} +1 -1
- package/dist/assets/{ko-CI0DBazn.js → ko-D8n4uMqQ.js} +1 -1
- package/dist/assets/{lb-CmL572Xe.js → lb-B1empQ7m.js} +1 -1
- package/dist/assets/{lt-DRtUOLdw.js → lt-gMukpK3G.js} +1 -1
- package/dist/assets/{lv-COSHgkOP.js → lv-D2O5AnsZ.js} +1 -1
- package/dist/assets/{match-BQoOW8Cj.js → match-BTF6WqJh.js} +1 -1
- package/dist/assets/{match-B-ergJQb.js → match-Cyum2eeW.js} +1 -1
- package/dist/assets/{match-dfBS0YSQ.js → match-ScHH8kYk.js} +1 -1
- package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
- package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
- package/dist/assets/{mk-B0IH_YL_.js → mk-D-Zl0xVN.js} +1 -1
- package/dist/assets/{mn-P-QdQ2n3.js → mn-jJbTslgD.js} +1 -1
- package/dist/assets/{ms-CtyEOINy.js → ms-CUuJHLA4.js} +1 -1
- package/dist/assets/{mt-DfuZ2HRm.js → mt-yIcbfxKY.js} +1 -1
- package/dist/assets/{nb-2Hp-5Tnt.js → nb-D9WNypoj.js} +1 -1
- package/dist/assets/{nl-BE-mmxbfNoR.js → nl-BE-B1vKiw2h.js} +1 -1
- package/dist/assets/{nl-CZ_nLREz.js → nl-DC7b5e90.js} +1 -1
- package/dist/assets/{nn-ccWhYsNa.js → nn-uP4yJ9s0.js} +1 -1
- package/dist/assets/{oc-z504BFRV.js → oc-DHTqadJI.js} +1 -1
- package/dist/assets/{pl-DeQ7ASt-.js → pl-Bxnnizf5.js} +1 -1
- package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
- package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
- package/dist/assets/{plugin-chatbot-Ck47EhDX.js → plugin-chatbot-D1KW_oIO.js} +8 -8
- package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
- package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
- package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
- package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
- package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
- package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
- package/dist/assets/{plugin-markdown-BOkHcir_.js → plugin-markdown-CNlDzqP-.js} +1 -1
- package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
- package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
- package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
- package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
- package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
- package/dist/assets/{pt-BR-D80_lPYF.js → pt-BR-D416seHT.js} +1 -1
- package/dist/assets/{pt-CJJ1RmXd.js → pt-DwHBy9_c.js} +1 -1
- package/dist/assets/{ro-EuFb2TCj.js → ro-DDf1X3Np.js} +1 -1
- package/dist/assets/{ru-CMaVQScp.js → ru-8eM3mcgK.js} +1 -1
- package/dist/assets/{runtime-metadata-persistence-ClOTznqa.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
- package/dist/assets/{se-DsfdKLdF.js → se-D4JvQeRX.js} +1 -1
- package/dist/assets/{sk-BNV9omI8.js → sk-DvpgttGI.js} +1 -1
- package/dist/assets/{sl-DJS_nINU.js → sl-B3gCZ-_a.js} +1 -1
- package/dist/assets/{sq-HEgjcbHe.js → sq-CVaTmL0V.js} +1 -1
- package/dist/assets/{sr-CO0CFu4X.js → sr-CnH5Ffyz.js} +1 -1
- package/dist/assets/{sr-Latn-eE1Idzey.js → sr-Latn-Dw9w61q6.js} +1 -1
- package/dist/assets/src-BUry7633.js +2 -0
- package/dist/assets/{src-BU7L2v4J.js → src-DMDT5a27.js} +1 -1
- package/dist/assets/src-ZxH3AOCu.js +16 -0
- package/dist/assets/{studioEntry-WeMfaSGn.js → studioEntry-DAqcBFtr.js} +1 -1
- package/dist/assets/{submitRedirect-C2lfZSHt.js → submitRedirect-iy0oOi7I.js} +1 -1
- package/dist/assets/{sv-5uTzgQT3.js → sv-CU7wdxyK.js} +1 -1
- package/dist/assets/{ta-BzgdkBZG.js → ta-DPH6q0HR.js} +1 -1
- package/dist/assets/{te-Ct_pl7ZJ.js → te-BSaThkGV.js} +1 -1
- package/dist/assets/{th-DouAlk0-.js → th-NXP8_Qb8.js} +1 -1
- package/dist/assets/{tr-3XNBsI40.js → tr-DDXoH663.js} +1 -1
- package/dist/assets/types-zod-ChJ30y25.js +1 -0
- package/dist/assets/{ug-B9n24h9G.js → ug-Guus6pPe.js} +1 -1
- package/dist/assets/ui-components-D8wcRNrt.js +37 -0
- package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
- package/dist/assets/{uk-DCAenByf.js → uk-uiy4vsp8.js} +1 -1
- package/dist/assets/use-book-data-DFTswcKm.js +1 -0
- package/dist/assets/{useActionModal-Blp4rhOk.js → useActionModal-h52Z5Pkl.js} +1 -1
- package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
- package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
- package/dist/assets/{useNavTargetLabel-BOJncjIb.js → useNavTargetLabel-D8lRdb6O.js} +1 -1
- package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
- package/dist/assets/{usePackageL10n-Ci9uVkRZ.js → usePackageL10n-Jl2XiF2F.js} +1 -1
- package/dist/assets/{useSettingsLabel-CeMnMWsh.js → useSettingsLabel-CSpBDTdy.js} +1 -1
- package/dist/assets/{uz-Cyrl-JSeHEqu-.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
- package/dist/assets/{uz-DT3s9bZS.js → uz-DJWxoTz4.js} +1 -1
- package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
- package/dist/assets/{vi-D2p-h6bY.js → vi-Bb3QoIJC.js} +1 -1
- package/dist/assets/{zh-CN-DHOKqAit.js → zh-CN-C-Hts1ZR.js} +1 -1
- package/dist/assets/{zh-HK-D4iIPY7I.js → zh-HK-CtBAZ_ZS.js} +1 -1
- package/dist/assets/{zh-TW-gORQ_tZh.js → zh-TW-B7DDahD-.js} +1 -1
- package/dist/chunk-membership.json +28 -26
- package/dist/eager-closure.json +107 -101
- package/dist/index.html +4 -4
- package/dist/sdui.manifest.json +486 -63
- package/package.json +1 -1
- package/dist/assets/ApprovalsInboxPage-C6S1vk0X.js +0 -1
- package/dist/assets/AuditLogPage-v2dKXMuk.js +0 -1
- package/dist/assets/BookPage-DwFMcTSN.js +0 -1
- package/dist/assets/CreateViewDialog-D3l-tYHM.js +0 -1
- package/dist/assets/DocPage-B6AkH5WI.js +0 -1
- package/dist/assets/ExpressionProvider-CrL6jhVq.js +0 -1
- package/dist/assets/FlowRunsPage-CxdaiUyk.js +0 -1
- package/dist/assets/InterfaceListPage-C4wPYohR.js +0 -1
- package/dist/assets/MarketplacePackagePage-CfgKDpNH.js +0 -4
- package/dist/assets/MarketplacePage-DNEyU5AE.js +0 -1
- package/dist/assets/ObjectDataPage-CykEm9MD.js +0 -1
- package/dist/assets/PageView-C6u86tni.js +0 -1
- package/dist/assets/ProfilePage-C3SjXMzi.js +0 -1
- package/dist/assets/RecordDetailView-DgR_zhP4.js +0 -3
- package/dist/assets/ReportDefaultInspector-BIinF0EQ.js +0 -1
- package/dist/assets/ReportView-BREO-ADE.js +0 -2
- package/dist/assets/RuntimeDraftBar-BCWfd2yS.js +0 -1
- package/dist/assets/SchemaForm-C4uMMZ13.js +0 -3
- package/dist/assets/SearchResultsPage-C6Hw_Lpn.js +0 -1
- package/dist/assets/ai-DPBykF2N.js +0 -3
- package/dist/assets/app-shell-eager-leaves-Cf2bM6uT.js +0 -1
- package/dist/assets/data-adapter-Cymvlczj.js +0 -1
- package/dist/assets/default-inspector-registry-Bs6GBn00.js +0 -1
- package/dist/assets/dist-BF-ssUpn.js +0 -14
- package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
- package/dist/assets/en-AU-FVwCiDJO.js +0 -1
- package/dist/assets/en-GB-DQ_y5VbJ.js +0 -1
- package/dist/assets/en-IE-DaXOhsZW.js +0 -1
- package/dist/assets/en-IN-CnRZnAom.js +0 -1
- package/dist/assets/en-NZ-CBZLEToK.js +0 -1
- package/dist/assets/en-ZA-BE59v0wZ.js +0 -1
- package/dist/assets/framework-DFR4HNtj.js +0 -35
- package/dist/assets/getIcon-Cfwf-Egt.js +0 -1
- package/dist/assets/i18n-locale-ar-92O_xtDZ.js +0 -4
- package/dist/assets/i18n-locale-de-T5ic3yH9.js +0 -4
- package/dist/assets/i18n-locale-en-rxr7WJYl.js +0 -4
- package/dist/assets/i18n-locale-es-D_WOifJ_.js +0 -4
- package/dist/assets/i18n-locale-fr-3cvyjMkp.js +0 -4
- package/dist/assets/i18n-locale-ja-DXlIkB8I.js +0 -4
- package/dist/assets/i18n-locale-ko-DngRpS45.js +0 -4
- package/dist/assets/i18n-locale-pt-BkPaFCqZ.js +0 -4
- package/dist/assets/i18n-locale-ru-E5wLh-y6.js +0 -4
- package/dist/assets/i18n-locale-zh-BL4_Yand.js +0 -4
- package/dist/assets/i18n-runtime-97_bDVjP.js +0 -1
- package/dist/assets/index-Cadlh4t_.css +0 -2
- package/dist/assets/index-D98sa5GF.js +0 -20
- package/dist/assets/integration-CeAF4JFT.js +0 -1
- package/dist/assets/isSameWeek-DBXaA1Gd.js +0 -1
- package/dist/assets/mermaid-GHXKKRXX-Bb17TtNP.js +0 -1
- package/dist/assets/metadata-admin-CABUxbJl.js +0 -9
- package/dist/assets/plugin-calendar-Cn5HaZU8.js +0 -1
- package/dist/assets/plugin-charts-B6RcFWbo.js +0 -7
- package/dist/assets/plugin-dashboard-DjEx8e5Y.js +0 -6
- package/dist/assets/plugin-form-CLDvL0up.js +0 -1
- package/dist/assets/plugin-gantt-CrVrxVdi.js +0 -63
- package/dist/assets/plugin-grid-D2rmQEW_.js +0 -11
- package/dist/assets/plugin-kanban-BUNHFfIC.js +0 -1
- package/dist/assets/plugin-map-y-7RQQC5.js +0 -1
- package/dist/assets/plugin-report-mT3jpna0.js +0 -59
- package/dist/assets/plugin-timeline-B1EF83D3.js +0 -1
- package/dist/assets/plugin-tree-MTHUt3_S.js +0 -1
- package/dist/assets/plugin-view-DHJI-ahf.js +0 -1
- package/dist/assets/plugins-views-CfkgqD30.js +0 -3
- package/dist/assets/src-BUtIBFDA.js +0 -1
- package/dist/assets/src-C0eXlKtx.js +0 -16
- package/dist/assets/types-zod-DXpXw10W.js +0 -1
- package/dist/assets/ui-components-D6cEVg0T.js +0 -37
- package/dist/assets/ui-layout-DgVDuPEM.js +0 -1
- package/dist/assets/use-book-data-CwRldFxP.js +0 -1
- package/dist/assets/useCanAuthorMetadata-BxCMgFRf.js +0 -1
- package/dist/assets/useOpenRecordList-BrwJFojQ.js +0 -1
- package/dist/assets/vendor-objectstack-DFqu45yM.js +0 -138
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Da as e,Sa as t,_a as n,ca as r,fa as i,ha as a,la as o,ra as s,ta as c,va as l,wa as u,xa as d,ya as f}from"./vendor-objectstack-DFqu45yM.js";c();var p=l().int().describe(`Unix timestamp in milliseconds (epoch)`);function m(e){if(typeof process<`u`&&{}.OS_EAGER_SCHEMAS===`1`)return e();let t,n=()=>(t===void 0&&(t=e()),t),r=function(){},i,a=e=>{let t=e._zod;if(!t||typeof t.processJSONSchema!=`function`)return t;let n=t.processJSONSchema;return Object.create(t,{processJSONSchema:{enumerable:!0,value:(t,r,i)=>{let a=t?.seen;if(a&&typeof a.get==`function`){let t=a.get(s);t!==void 0&&!a.has(e)&&a.set(e,t)}let c=n(t,r,i);return o(t?.metadataRegistry,e),c}}})},o=(e,t)=>{if(!e||typeof e.get!=`function`||typeof e.has!=`function`||typeof e.add!=`function`||e.has(s))return;let n=e.get(t);if(!n)return;let r={...n};delete r.id,Object.keys(r).length>0&&e.add(s,r)},s=new Proxy(r,{get(e,t){let r=n();if(t===`_zod`)return i??=a(r),i;let o=r[t];return typeof o==`function`?o.bind(r):o},set(e,t,r){let i=n();return i[t]=r,!0},has(e,t){return t in n()},ownKeys(){return Reflect.ownKeys(n())},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(n(),t)},getPrototypeOf(){return Reflect.getPrototypeOf(n())}});return s}var h=m(()=>f({type:a(`oauth2`),authorizationUrl:u().url().describe(`OAuth2 authorization endpoint`),tokenUrl:u().url().describe(`OAuth2 token endpoint`),clientId:u().describe(`OAuth2 client ID`),clientSecret:u().describe(`OAuth2 client secret (typically from ENV)`),scopes:r(u()).optional().describe(`Requested OAuth2 scopes`),redirectUri:u().url().optional().describe(`OAuth2 redirect URI`),refreshToken:u().optional().describe(`Refresh token for token renewal`),tokenExpiry:p.optional().describe(`Token expiry timestamp (Unix milliseconds)`)})),g=m(()=>f({type:a(`api-key`),key:u().describe(`API key value`),headerName:u().default(`X-API-Key`).describe(`HTTP header name for API key`),paramName:u().optional().describe(`Query parameter name (alternative to header)`)})),_=m(()=>f({type:a(`basic`),username:u().describe(`Username`),password:u().describe(`Password`)})),v=m(()=>f({type:a(`bearer`),token:u().describe(`Bearer token`)})),y=m(()=>f({type:a(`none`)})),b=m(()=>i(`type`,[h,g,_,v,y])),x=m(()=>f({type:a(`none`)})),S=m(()=>f({type:a(`bearer`),credentialRef:u().min(1).describe(`Secrets-layer reference (e.g. an env-var name in the open tier) resolved to the bearer token at materialization. Never an inline token.`)})),C=m(()=>f({type:a(`api-key`),credentialRef:u().min(1).describe(`Secrets-layer reference resolved to the API key at materialization. Never an inline key.`),headerName:u().optional().describe(`HTTP header carrying the key (default X-API-Key).`),paramName:u().optional().describe(`Query parameter carrying the key (alternative to header).`)})),w=m(()=>f({type:a(`basic`),username:u().describe(`Username (not a secret; safe to keep in metadata).`),credentialRef:u().min(1).describe(`Secrets-layer reference resolved to the password at materialization. Never an inline password.`)})),T=m(()=>i(`type`,[x,S,C,w])),E=s([`none`,`no-overlay`,`no-delete`,`full`]),D=s([`artifact`,`package`,`env-forced`]),O=s([`package`,`org`,`env-forced`]),k={_lock:E.optional().describe(`Item-level lock — controls overlay & delete (ADR-0010).`),_lockReason:u().max(500).optional().describe(`Human-readable reason shown when a write is refused by _lock.`),_lockSource:D.optional().describe(`Layer that set _lock (artifact | package | env-forced).`),_provenance:O.optional().describe(`Origin of the item (package | org | env-forced).`),_packageId:u().optional().describe(`Owning package machine id.`),_packageVersion:u().optional().describe(`Owning package version.`),_lockDocsUrl:u().optional().describe(`Optional documentation link surfaced next to _lockReason.`)};function A(e){return n({error:()=>e}).optional().describe(`[REMOVED] ${e}`)}function j(e,t){let n=Object.keys(t),r=d(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let r;for(let i of n)Object.prototype.hasOwnProperty.call(e,i)&&e[i]===t[i]&&(r??={...e},delete r[i]);return r??e},e);return Object.defineProperty(r,"shape",{configurable:!0,get:()=>e.shape}),r}var M="`connector.syncConfig` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — no engine ever ran a connector-attached sync: nothing read `strategy`, `direction`, `realtimeSync`, `timestampField`, `conflictResolution`, `batchSize`, `deleteMode` or `filters`, so the `latest_wins` and `soft_delete` defaults resolved and deleted nothing. Delete the key; the `DataSyncConfig` shape leaves with it. A sync is defined on its TARGET: a `mapping` (`targetObject`, `fieldMapping`, `mode`, `upsertKey`) whose `connectorSource` names the `rest` or `openapi` connector it pulls from, the read action and an optional timestamp `watermark`, with a `job` for the cadence. Its pull runs when a `job` drives it; nothing schedules one yet, so the binding alone moves no rows. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",N="`connector.fieldMappings` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — no engine ever moved a value through a connector field mapping: nothing read `source`, `target`, `defaultValue`, `dataType`, `required` or `syncMode`. Delete the key; the `ConnectorFieldMapping` shape leaves with it. Map fields on the sync's TARGET instead: a `mapping`'s `fieldMapping` (`source` → `target`, with a `transform` the import path executes), which its `connectorSource` pulls through. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",P=m(()=>s([`exponential_backoff`,`linear_backoff`,`fixed_delay`,`no_retry`]).describe(`Retry strategy`)),F=m(()=>f({strategy:P.optional().default(`exponential_backoff`),maxAttempts:l().min(0).max(10).optional().default(3).describe(`Maximum retry attempts`),initialDelayMs:l().min(100).optional().default(1e3).describe(`Initial retry delay in ms`),maxDelayMs:l().min(1e3).optional().default(6e4).describe(`Maximum retry delay in ms`),backoffMultiplier:l().min(1).optional().default(2).describe(`Exponential backoff multiplier`),retryableStatusCodes:r(l()).optional().default([408,429,500,502,503,504]).describe(`HTTP status codes to retry`),retryOnNetworkError:o().optional().default(!0).describe(`Retry on network errors`),jitter:o().optional().default(!0).describe(`Add jitter to retry delays`)})),I="`connector.errorMapping` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — nothing ever read it: no provider, dispatcher or materializer mapped an external error through the rules, so `unmappedBehavior` configured nothing and a rule's `userMessage` was never shown to anyone (that spelling is the live API-error channel, `ApiError.userMessage`, which a thrown HTTP error declares — not connector metadata). Delete the key; the whole shape leaves with it (`ErrorMappingConfig`, `ErrorMappingRule` and the `ConnectorErrorCategory` enum). There is no replacement, because no error-mapping engine exists: a connector's failures reach callers as the provider's own errors (ADR-0097). Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",L="`connector.connectionTimeoutMs` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — the platform never honoured it and cannot honour it where it was declared: a connector's outbound call is a WHATWG `fetch`, whose only cancellation surface is one `AbortSignal` over the whole operation, so nothing there observes the connection phase separately, and the value only ever travelled (onto the reported def and the materialization fingerprint) without ever bounding a connect. Delete the key. Use `requestTimeoutMs` for the deadline the platform does keep — it is applied as `resilientFetch`'s per-attempt timeout — and bound the connect phase at a connector provider or upstream gateway on a transport that can separate the phases. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",R={connectionTimeoutMs:3e4,status:`inactive`},z="`connector.health` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — no connector health probe or circuit breaker ever existed: nothing scheduled a `healthCheck` request, counted consecutive failures against a threshold, or opened, half-opened or closed a `circuitBreaker`, and no `fallbackStrategy` was ever applied, so every key in the block configured nothing. That includes `circuitBreaker.monitoringWindowMs` and the `monitoringWindow` spelling it was renamed from: the renamed key is removed with the rest. Delete the key; the whole shape leaves with it (`ConnectorHealth`, `HealthCheckConfig`, `CircuitBreakerConfig`). Whether a connector can be dispatched is computed, not authored: `GET /api/v1/automation/connectors` reports each connector's `state` (`ready` or `degraded`). Put health probes and circuit breaking in the connector provider or an upstream gateway. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",B="`connector.status` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — nothing ever read it: `status: 'active'` neither enabled nor advertised a connector, and `'error'` or `'configuring'` changed nothing either. Delete the key; the `ConnectorStatus` enum leaves with it. On a declarative entry, `enabled: false` is what withdraws a materialized instance or marks a catalog-only descriptor, and whether a registered connector can be dispatched is computed by the runtime and reported as `state` (`ready` or `degraded`) on `GET /api/v1/automation/connectors` — no authored value sets it. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",V="`connector.webhooks` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — a webhook nested inside a connector was never registered as a `webhook` item, so it was never materialized into `sys_webhook` and never delivered, and nothing emits the connector events its `events` list could name (`sync.completed`, `auth.expired` and the rest). Delete the key; the nested shape leaves with it (`WebhookConfig`, `WebhookEvent`, `WebhookSignatureAlgorithm`). To have a webhook actually sent, declare it in the stack's top-level `webhooks:` collection, which is materialized into `sys_webhook` and delivered on record events — note that doing so STARTS deliveries this connector never made. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",H="`connector.triggers` was removed in @objectstack/spec 17 (ADR-0049 enforce-or-remove) — a connector trigger never started anything: `AutomationEngine.registerConnector` registers a connector's actions only, no polling loop read `intervalSeconds` (or the `interval` spelling it was renamed from), and no receiver was driven by a `webhook` trigger. Delete the key; the `ConnectorTrigger` shape leaves with it. To start work from an external system, write a flow that calls the connector's action in a `connector_action` node: for an external event, an `api` flow that the event's sender calls; for a scheduled pull, a `schedule` flow. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; apply them by hand.",U=m(()=>s([`saas`,`database`,`file_storage`,`message_queue`,`api`,`custom`]).describe(`Connector type`)),W=m(()=>s([`read`,`write`]).describe(`What the action does upstream: 'read' never mutates (reports acted:0); 'write' does (a successful dispatch reports acted:1). Omit when the effect is not knowable — the step is then reported as unmeasured, not as zero`)),G=m(()=>f({key:u().describe(`Action key (machine name)`),label:u().describe(`Human readable label`),description:u().optional(),inputSchema:t(u(),e()).optional().describe(`Input parameters schema (JSON Schema)`),outputSchema:t(u(),e()).optional().describe(`Output schema (JSON Schema)`),effect:W.optional()})),K=m(()=>f({name:u().regex(/^[a-z_][a-z0-9_]*$/).describe(`Unique connector identifier`),label:u().describe(`Display label`),type:U.describe(`Connector type`),description:u().optional().describe(`Connector description`),icon:u().optional().describe(`Icon identifier`),authentication:b.optional().default({type:`none`}).describe("Authentication configuration (runtime shape with inline secrets — plugin-supplied at registerConnector). Authored entries must not inline secrets: use `auth.credentialRef` on a provider-bound instance."),provider:u().regex(/^[a-z][a-z0-9_]*$/).optional().describe(`Generic-executor key that materializes this declarative entry at boot (e.g. openapi/mcp/rest). Omit for a catalog-only descriptor. Unknown provider ⇒ hard boot error (ADR-0097).`),providerConfig:t(u(),e()).optional().describe("Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`."),auth:T.optional().describe("Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097)."),actions:r(G).optional(),triggers:A(H),syncConfig:A(M),fieldMappings:A(N),webhooks:A(V),rateLimitConfig:A("`connector.rateLimitConfig` was removed in @objectstack/spec 17.0.0 (ADR-0049 D2) — the entire shape is gone, not just this key: `ConnectorRateLimitConfig` and its `RateLimitStrategy` enum were removed with it, because no outbound rate-limiting engine ever existed. The platform's only token bucket (runtime `security/rate-limit.ts`) throttles INBOUND requests to us; nothing throttled the calls a connector makes out, so every knob here was inert while reading like a configured cap. Delete the key. Do NOT substitute `shared` `RateLimitConfig` — that is the inbound limiter and would cap the wrong direction; until an outbound throttle exists, rate-limit at the connector provider or upstream gateway. Run `os migrate meta --from 16` to list the mechanical edits for existing sources; apply them by hand."),retryConfig:F.optional().describe(`Retry configuration`),connectionTimeoutMs:A(L),requestTimeoutMs:l().min(1e3).max(3e5).optional().default(3e4).describe(`Request timeout in ms`),status:A(B),enabled:o().optional().default(!0).describe(`Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor.`),errorMapping:A(I),health:A(z),metadata:t(u(),e()).optional().describe(`Custom connector metadata`),...k})),q=m(()=>j(K.superRefine((e,t)=>{let n=typeof e.provider==`string`&&e.provider.length>0;if(e.authentication&&e.authentication.type!==`none`&&t.addIssue({code:`custom`,path:[`authentication`],message:n?`Provider-bound connector instance '${e.name}' must not inline secrets via \`authentication\`; reference credentials with \`auth: { type, credentialRef }\` instead (ADR-0097 \xA73).`:`Connector '${e.name}' must not inline secrets via \`authentication\` \u2014 a published connector row is stored whole in \`sys_metadata\`, so the credential would land in cleartext. A catalog descriptor holds no live credentials: drop \`authentication\` (or set \`{ type: 'none' }\`) and describe the auth scheme in \`description\`. A dispatchable instance declares \`provider\` and references its credential with \`auth: { type, credentialRef }\` (ADR-0097 \xA73).`}),!n){e.providerConfig!==void 0&&t.addIssue({code:`custom`,path:[`providerConfig`],message:"`providerConfig` requires a `provider` — a connector entry with no provider is a catalog descriptor (ADR-0097)."}),e.auth!==void 0&&t.addIssue({code:`custom`,path:[`auth`],message:"`auth` requires a `provider` — declarative instance auth applies only to a provider-bound entry (ADR-0097)."});return}e.actions&&e.actions.length>0&&t.addIssue({code:`custom`,path:[`actions`],message:`Provider-bound connector instance '${e.name}' must not author \`actions\` \u2014 the '${e.provider}' provider derives them from the upstream at boot (ADR-0097 \xA75).`})}),R));export{q as DeclarativeConnectorEntrySchema};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ei as e,ti as t}from"./ui-components-D6cEVg0T.js";function n(n,r,i){let[a,o]=e(i?.in,n,r);return+t(a,i)==+t(o,i)}export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./plugin-chatbot-Ck47EhDX.js";export{e as Mermaid};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,d as n,h as r,m as i,p as a,r as o,t as s,u as c,v as l}from"./vendor-react-BggL7APJ.js";import{a as u}from"./infrastructure-Cc34lEqb.js";import{$t as d,An as f,Ar as p,At as m,Bn as h,Bt as g,Et as _,Fr as v,Ht as y,In as b,Jn as x,Ln as S,Mn as C,Mr as ee,Nn as w,Nr as T,On as E,Pn as D,Pr as O,Qt as k,Rn as te,Tt as A,Vt as ne,Zt as re,en as j,jn as M,jr as ie,kt as N,ri as P,sn as ae,wt as F,xi as I,yi as L,zn as oe}from"./ui-components-D6cEVg0T.js";import{Kr as se,Xr as R,qr as ce}from"./framework-DFR4HNtj.js";import{t as z}from"./i18n-runtime-97_bDVjP.js";import{a as le}from"./data-adapter-Cymvlczj.js";import{r as ue}from"./vendor-ui-utils-DIUdEYii.js";import{t as de}from"./vendor-icon-arrow-left-DmGEbpkA.js";import{t as B}from"./vendor-icon-arrow-right-RqsZZ458.js";import{t as V}from"./vendor-icon-box-YdZpEqfe.js";import{t as fe}from"./vendor-icon-boxes-D-Ov3dJw.js";import{t as pe}from"./vendor-icon-chart-column-DicJIApF.js";import{t as me}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as he}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as ge}from"./vendor-icon-clock-CTLnah0r.js";import{t as _e}from"./vendor-icon-database-C8JGjSkn.js";import{t as ve}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as ye}from"./vendor-icon-eye-C3HaEGOo.js";import{t as be}from"./vendor-icon-file-code-corner-CdiQRG_f.js";import{t as xe}from"./vendor-icon-file-text-7BKAVNof.js";import{t as Se}from"./vendor-icon-git-compare-arrows-BAqrva2j.js";import{t as Ce}from"./vendor-icon-layers-DXBEefR1.js";import{t as we}from"./vendor-icon-layout-dashboard-wba2hvZp.js";import{t as Te}from"./vendor-icon-link-2-EAo0juhN.js";import{t as H}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as Ee}from"./vendor-icon-lock-B_psRnly.js";import{t as De}from"./vendor-icon-maximize-2-C215UtMO.js";import{t as Oe}from"./vendor-icon-minimize-2-CTEy4oVG.js";import{t as ke}from"./vendor-icon-mouse-pointer-2-BK7MBFPs.js";import{t as Ae}from"./vendor-icon-package-B6zAlWd3.js";import{t as je}from"./vendor-icon-panel-right-close-B1IgPiA5.js";import{t as Me}from"./vendor-icon-panel-right-open-DRcsA0VE.js";import{t as Ne}from"./vendor-icon-pencil-CMubUBjW.js";import{t as U}from"./vendor-icon-plus-BlfcDDsa.js";import{t as Pe}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as Fe}from"./vendor-icon-rotate-ccw-clock-DyTX5-aX.js";import{t as Ie}from"./vendor-icon-rotate-ccw-lr5YKsxC.js";import{t as Le}from"./vendor-icon-save-CuavGNuU.js";import{t as Re}from"./vendor-icon-search-B2Uqtp_W.js";import{t as ze}from"./vendor-icon-send-BlZYLCTK.js";import{t as Be}from"./vendor-icon-settings-CYQ7xc_F.js";import{t as Ve}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as He}from"./vendor-icon-shield-check-CdDzbial.js";import{t as Ue}from"./vendor-icon-shield-x-C3Af1iLQ.js";import{t as We}from"./vendor-icon-sliders-horizontal-BsnKXU0c.js";import{t as Ge}from"./vendor-icon-sparkles-RGpJ39Rc.js";import{t as Ke}from"./vendor-icon-table-2-DMQ6UahM.js";import{t as qe}from"./vendor-icon-trash-BLsWkwB9.js";import{t as W}from"./vendor-icon-triangle-alert-D5n0T3q_.js";import{t as Je}from"./vendor-icon-undo-2-C9MbW2Vb.js";import{t as Ye}from"./vendor-icon-workflow-B9ASq0nN.js";import{t as Xe}from"./vendor-icon-x-CcLtgRNL.js";import{t as Ze}from"./vendor-icon-zap-off-GiimEOkZ.js";import{t as Qe}from"./vendor-icon-zap-3ulAPCbu.js";import{a as $e,i as et,o as tt,r as nt,s as rt,t as it}from"./createDerive-CjN1i5vn.js";import{o as at}from"./assistantBus-DoNtw1Tf.js";import{r as ot,s as G,t as st}from"./ActionResultDialog-4kHDGnT3.js";import"./src-C0eXlKtx.js";import{C as ct,E as lt,b as ut,o as dt,r as ft,s as pt,t as mt,u as ht,w as gt,x as _t,y as vt}from"./default-inspector-registry-Bs6GBn00.js";import{t as yt}from"./getIcon-Cfwf-Egt.js";import{t as bt}from"./useNavSelDeepLink-67Y4qCNO.js";import{F as xt,L as St,N as Ct,Y as wt,d as Tt,l as Et,m as Dt,n as Ot,p as kt,r as At,t as jt}from"./SchemaForm-C4uMMZ13.js";import{g as Mt,h as Nt,i as K,l as Pt,o as Ft,r as q,u as It}from"./i18n-BnUsCaSC.js";var J=e(l(),1),Y=s();function Lt({appSlug:e}={}){let t=n(),r=tt(),{entries:i}=rt(r),[a,o]=J.useState(!1),[s,c]=J.useState(``),[l,u]=J.useState(null),[d,f]=J.useState(!1),[m,h]=J.useState(0),g=Mt();J.useEffect(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.shiftKey&&e.key.toLowerCase()===`m`&&(e.preventDefault(),o(e=>!e))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),J.useEffect(()=>{if(!a||l!=null||d||i.length===0)return;f(!0);let e=!1;return(async()=>{try{let t=[];await Promise.all(i.map(async e=>{try{let n=await r.list(e.type);for(let r of n??[]){let n=(r&&typeof r==`object`&&`item`in r?r.item:r)??{},i=n?.name;i&&t.push({kind:`item`,type:e.type,name:String(i),label:n?.label,description:n?.description,lock:typeof n?._lock==`string`?n._lock:void 0,lockReason:typeof n?._lockReason==`string`?n._lockReason:void 0})}}catch{}})),e||u(t)}finally{e||f(!1)}})(),()=>{e=!0}},[a,l,d,i,r]);let _=J.useMemo(()=>{let e=s.trim().toLowerCase();if(!e)return i.slice(0,20).map(e=>({kind:`type`,entry:e}));let t=i.filter(t=>t.type.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)||It(t.type,g,t.label).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)).slice(0,8).map(e=>({kind:`type`,entry:e})),n=(l??[]).filter(t=>t.name.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||t.type.toLowerCase().includes(e)).slice(0,40);return[...t,...n]},[s,i,l]);J.useEffect(()=>{h(0)},[s,a]);function y(n){o(!1);let r=e?`/apps/${e}`:`..`;n.kind===`type`?t(`${r}/metadata/${encodeURIComponent(n.entry.type)}`):t(`${r}/metadata/${encodeURIComponent(n.type)}/${encodeURIComponent(n.name)}`)}function b(e){e.key===`ArrowDown`?(e.preventDefault(),h(e=>Math.min(e+1,_.length-1))):e.key===`ArrowUp`?(e.preventDefault(),h(e=>Math.max(e-1,0))):e.key===`Enter`&&_[m]&&(e.preventDefault(),y(_[m]))}return(0,Y.jsx)(p,{open:a,onOpenChange:o,children:(0,Y.jsxs)(ie,{className:`max-w-2xl p-0 overflow-hidden`,children:[(0,Y.jsx)(O,{className:`sr-only`,children:(0,Y.jsx)(v,{children:q(`engine.quickfind.title`,g)})}),(0,Y.jsxs)(`div`,{className:`border-b px-3 py-2 flex items-center gap-2`,children:[(0,Y.jsx)(Re,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(x,{autoFocus:!0,placeholder:q(`engine.quickfind.placeholder`,g),value:s,onChange:e=>c(e.target.value),onKeyDown:b,className:`border-0 shadow-none focus-visible:ring-0 px-0`}),(0,Y.jsx)(F,{children:`esc`})]}),(0,Y.jsxs)(`div`,{className:`max-h-[440px] overflow-auto`,children:[d&&(0,Y.jsxs)(`div`,{className:`px-3 py-4 text-xs text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}),q(`engine.quickfind.indexing`,g),` `,i.length,`…`]}),!d&&_.length===0&&(0,Y.jsx)(`div`,{className:`px-3 py-6 text-xs text-muted-foreground text-center`,children:q(`engine.quickfind.noMatches`,g)}),(0,Y.jsx)(`ul`,{role:`listbox`,children:_.map((e,t)=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>y(e),onMouseEnter:()=>h(t),className:`w-full text-left px-3 py-2 flex items-center gap-3 hover:bg-accent `+(t===m?`bg-accent`:``),children:[(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] font-mono shrink-0`,children:e.kind===`type`?`type`:e.type}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:e.kind===`type`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium truncate`,children:It(e.entry.type,g,e.entry.label)}),e.entry.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.entry.description})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`text-sm font-mono truncate flex items-center gap-1.5`,children:[e.lock&&e.lock!==`none`&&(0,Y.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400 shrink-0`,title:e.lockReason??`_lock=${e.lock}`,"aria-label":`locked`,children:(0,Y.jsx)(Ee,{className:`h-3 w-3`})}),e.name,e.label&&(0,Y.jsx)(`span`,{className:`text-muted-foreground font-sans ml-2`,children:e.label})]}),e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.description})]})})]})},e.kind===`type`?`t:${e.entry.type}`:`i:${e.type}:${e.name}`))})]}),(0,Y.jsxs)(`div`,{className:`border-t px-3 py-1.5 flex items-center gap-3 text-[10px] text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(F,{children:`↑`}),` `,(0,Y.jsx)(F,{children:`↓`}),` navigate`]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(F,{children:`↵`}),` open`]}),(0,Y.jsxs)(`span`,{className:`ml-auto`,children:[(0,Y.jsx)(F,{children:`⌘`}),(0,Y.jsx)(F,{children:`⇧`}),(0,Y.jsx)(F,{children:`M`}),` toggle`]})]})]})})}var Rt=new Set([`system`,`cloud`]);function zt(e){let t=(e??[]).map(e=>{let t=e&&typeof e==`object`&&`item`in e?e.item:e,n=t?.manifest??t??{};return{id:n.id,scope:n.scope,name:n.name||n.id}}).filter(e=>e.id&&!Rt.has(e.scope));return t.sort((e,t)=>e.name.localeCompare(t.name)),t.map(e=>({id:e.id,name:e.name}))}var Bt={data:_e,ui:Ce,automation:Ye,ai:Ge,system:Be,platform:Be,identity:He,security:He},Vt=[`data`,`ui`,`automation`,`ai`,`identity`,`security`,`system`,`platform`,`other`],Ht=new Set([`field`,`package`]);function Ut(){let e=tt(),{loading:t,error:n,entries:r}=rt(e),a=Mt(),[s,c]=J.useState(``),[l,u]=J.useState(`all`),[d,f]=J.useState(!1),[p,m]=i(),[h,g]=J.useState(null);J.useEffect(()=>{let t=!1;return(async()=>{try{let n=await e.list(`package`);if(t)return;g(zt(n))}catch{t||g([])}})(),()=>{t=!0}},[e]);let v=p.get(`package`),y=J.useMemo(()=>h?v&&h.some(e=>e.id===v)?v:h[0]?.id??null:null,[h,v]);J.useEffect(()=>{if(!h||h.length===0||v&&h.some(e=>e.id===v))return;let e=new URLSearchParams(p);e.set(`package`,h[0].id),m(e,{replace:!0})},[h,v]);let{byType:b,warnByType:S,summary:C,countsByType:ee,lockedByType:w,packagesByType:T,loading:E}=$e(e,`warning`,y??void 0),D=J.useMemo(()=>r.filter(e=>Ht.has(e.type)||!y?!1:(T[e.type]??[]).includes(y)),[r,y,T]),O=J.useMemo(()=>{let e={all:D.length};for(let t of D){let n=t.domain??`other`;e[n]=(e[n]??0)+1}return e},[D]),k=D.filter(e=>e.allowOrgOverride||e.allowRuntimeCreate).length,te=D.filter(e=>{if(d&&!(e.allowOrgOverride||e.allowRuntimeCreate)||l!==`all`&&(e.domain??`other`)!==l)return!1;if(s){let t=s.toLowerCase();if(!(e.type.toLowerCase().includes(t)||(e.label??``).toLowerCase().includes(t)||It(e.type,a,e.label).toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)))return!1}return!0}),ne=J.useMemo(()=>{let e={};for(let t of te)(e[t.domain??`other`]??=[]).push(t);return Object.entries(e).sort(([e],[t])=>{let n=Vt.indexOf(e),r=Vt.indexOf(t);return(n===-1?99:n)-(r===-1?99:r)})},[te]);return t||h===null||y&&E?(0,Y.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:q(`engine.directory.loading`,a)}):n?(0,Y.jsxs)(`div`,{className:`p-6 text-sm text-destructive`,children:[q(`engine.directory.loadFailed`,a),`: `,n]}):(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold`,children:q(`engine.directory.title`,a)}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,dangerouslySetInnerHTML:{__html:K(`engine.directory.description`,a,{count:`<strong class="text-foreground">${D.length}</strong>`,writable:k})}}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mt-4 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 min-w-[240px] max-w-lg`,children:[(0,Y.jsx)(Re,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(x,{className:`pl-8`,placeholder:q(`engine.directory.search`,a),value:s,onChange:e=>c(e.target.value)})]}),(0,Y.jsxs)(L,{variant:d?`default`:`outline`,size:`sm`,onClick:()=>f(e=>!e),children:[q(`engine.directory.writableOnly`,a),` (`,k,`)`]}),C.total>0&&(0,Y.jsx)(L,{asChild:!0,variant:`outline`,size:`sm`,className:`border-destructive/40 text-destructive hover:bg-destructive/10 hover:text-destructive`,children:(0,Y.jsxs)(o,{to:`./_diagnostics`,children:[(0,Y.jsx)(W,{className:`h-3.5 w-3.5 mr-1`}),K(`engine.directory.diagnosticsLink`,a,{count:C.total})]})}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-1.5`,children:[q(`engine.directory.quickFind`,a),` `,(0,Y.jsx)(F,{children:`⌘`}),(0,Y.jsx)(F,{children:`⇧`}),(0,Y.jsx)(F,{children:`M`})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-3 flex-wrap`,children:[(0,Y.jsx)(Wt,{domain:`all`,label:q(`engine.directory.all`,a),active:l===`all`,count:O.all??0,onClick:()=>u(`all`)}),Vt.filter(e=>O[e]).map(e=>(0,Y.jsx)(Wt,{domain:e,label:Pt(e,a),active:l===e,count:O[e]??0,onClick:()=>u(e)},e))]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto p-6 space-y-6`,children:[h.length===0&&(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:`No project packages installed`}),(0,Y.jsx)(_,{children:`Studio only shows metadata that belongs to a project software package. Install or create a project package to manage its metadata here.`})]}),h.length>0&&te.length===0&&(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:q(`engine.directory.noMatches`,a)}),(0,Y.jsx)(_,{children:q(`engine.directory.noMatchesHint`,a)})]}),ne.map(([e,t])=>{let n=Bt[e]??V;return(0,Y.jsxs)(`section`,{className:`space-y-2`,children:[(0,Y.jsxs)(`h2`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground flex items-center gap-1.5`,children:[(0,Y.jsx)(n,{className:`h-3.5 w-3.5`}),Pt(e,a),` (`,t.length,`)`]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:t.map(e=>{let t=ee[e.type]??0;return(0,Y.jsx)(Gt,{entry:e,locale:a,invalidCount:b[e.type]??0,warnCount:S[e.type]??0,lockedCount:w[e.type]??0,itemCount:t,packageFilter:y??void 0},e.type)})})]},e)})]}),(0,Y.jsx)(Lt,{})]})}function Wt({domain:e,label:t,active:n,count:r,onClick:i}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:i,className:`px-2.5 py-1 rounded-full text-xs border transition-colors `+(n?`bg-primary text-primary-foreground border-primary`:`bg-background hover:bg-accent border-border text-muted-foreground`),children:[t??e,` `,(0,Y.jsxs)(`span`,{className:`opacity-70 ml-0.5`,children:[`(`,r,`)`]})]})}function Gt({entry:e,locale:t,invalidCount:n=0,warnCount:r=0,itemCount:i=0,lockedCount:a=0,packageFilter:s}){let c=It(e.type,t,e.label),l=s?`./${encodeURIComponent(e.type)}?package=${encodeURIComponent(s)}`:`./${encodeURIComponent(e.type)}`;return(0,Y.jsxs)(o,{to:l,className:`block p-4 border rounded-lg hover:bg-accent transition-colors `+(n>0?`border-destructive/40 hover:border-destructive`:`hover:border-primary`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`font-medium truncate flex items-center gap-1.5`,children:[n>0&&(0,Y.jsx)(`span`,{title:K(`engine.directory.invalidTooltip`,t??`en`,{count:n}),"aria-label":K(`engine.directory.invalidTooltip`,t??`en`,{count:n}),children:(0,Y.jsx)(W,{className:`h-3.5 w-3.5 text-destructive shrink-0`})}),c]}),(0,Y.jsx)(`code`,{className:`text-xs text-muted-foreground font-mono`,children:e.type})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,Y.jsx)(P,{variant:`secondary`,className:`text-[10px] tabular-nums`,title:K(`engine.directory.itemCountTooltip`,t??`en`,{count:i}),children:i}),n>0&&(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] border-destructive/40 text-destructive bg-destructive/[0.06]`,title:K(`engine.directory.invalidTooltip`,t??`en`,{count:n}),children:n}),r>0&&(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300 bg-amber-500/[0.06]`,title:K(`engine.directory.warnTooltip`,t??`en`,{count:r}),children:r}),a>0&&(0,Y.jsxs)(P,{variant:`outline`,className:`text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300 bg-amber-500/[0.06] inline-flex items-center gap-0.5 px-1.5`,title:`${a} locked item${a===1?``:`s`} — see ADR-0010`,"aria-label":`${a} locked items`,children:[(0,Y.jsx)(Ee,{className:`h-2.5 w-2.5`}),a]}),e.allowOrgOverride?(0,Y.jsx)(P,{className:`text-[10px] `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:q(`engine.badge.writable`,t)}):e.allowRuntimeCreate?(0,Y.jsx)(P,{className:`text-[10px] bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:q(`engine.badge.createOnly`,t)}):(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] text-muted-foreground`,children:q(`engine.badge.readOnly`,t)})]})]}),e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2 line-clamp-2`,children:e.description})]})}var Kt={primary:`default`,secondary:`secondary`,danger:`destructive`,ghost:`ghost`,link:`link`};function qt(e,t,n){return e.indexOf("${")===-1?e:e.replace(/\$\{(param|ctx)\.([\w.]+)\}/g,(e,r,i)=>{let a=r===`param`?n:t,o=i.split(`.`).reduce((e,t)=>e?.[t],a);return o==null?``:encodeURIComponent(String(o))})}function Jt({entry:e,location:t,recordId:n,onAfter:r}){let[i,a]=J.useState(null),[o,s]=J.useState({open:!1,params:[]}),[c,l]=J.useState({open:!1}),d=J.useMemo(()=>u(),[]),f=J.useMemo(()=>(e?.actions??[]).filter(e=>R(e,t)),[e?.actions,t]);if(f.length===0)return null;let p=(e,t)=>new Promise(n=>{s({open:!0,params:e,title:t,resolve:n})}),m=async e=>{let t=e.label??e.name;if(e.type!==`api`){ue.error(`Action “${t}”: type "${e.type??`script`}" is not supported here yet.`);return}if(e.confirmText&&!window.confirm(e.confirmText))return;let i;if(Array.isArray(e.params)&&e.params.length>0){let n=await p(e.params,t);if(n==null)return;i=n}else i=e.params??{};let o={recordId:n,origin:window.location.origin},s=qt(e.target??``,o,i);if(!s){ue.error(`Action “${t}” has no target.`);return}let c=``.replace(/\/+$/,``),u=/^https?:\/\//i.test(s)?s:`${c}${s}`,f=(e.method||`POST`).toUpperCase();a(e.name);try{let n={method:f,headers:{"Content-Type":`application/json`},credentials:`include`};f!==`GET`&&f!==`DELETE`&&(n.body=JSON.stringify(i));let a=await d(u,n),o=null;try{o=await a.json()}catch{}let s=o&&typeof o.success==`boolean`&&`data`in o?o.data:o;if(!a.ok||o&&o.success===!1){let n=o?.error,r=(typeof n==`object`&&n?n.message:void 0)||(typeof n==`string`?n:void 0)||o?.message||`HTTP ${a.status} ${a.statusText}`.trim();ue.error(`${e.errorMessage?`${e.errorMessage}: `:``}${t}: ${r}`);return}if(e.resultDialog)l({open:!0,spec:e.resultDialog,data:s??{}});else{let n=e.successMessage||(typeof s?.message==`string`?s.message:`${t} ✓`);ue.success(n)}e.refreshAfter&&r?.()}catch(e){ue.error(`${t}: ${e?.message??String(e)}`)}finally{a(null)}};return(0,Y.jsxs)(Y.Fragment,{children:[f.map(e=>{let t=e.icon?yt(e.icon):null,n=i===e.name;return(0,Y.jsxs)(L,{size:`sm`,variant:Kt[e.variant??`secondary`]??`secondary`,disabled:n,onClick:()=>m(e),title:e.label??e.name,children:[n?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):t?(0,Y.jsx)(t,{className:`h-4 w-4 mr-1`}):null,e.label??e.name]},e.name)}),(0,Y.jsx)(ot,{state:o,onOpenChange:e=>{e||s(e=>({...e,open:!1}))}}),(0,Y.jsx)(st,{state:c,onAcknowledge:()=>l({open:!1})})]})}function Yt(e,t){if(t===`overlay`||t===`runtime`)return`runtime`;if(t===`code`||t===`artifact`)return`artifact`;let n=e._packageId;return!n||n===`sys_metadata`?`runtime`:`artifact`}function Xt({type:e}){let n=a(),r=e??n.type??``;if(r===`package`){let e=n.appName??`studio`;return(0,Y.jsx)(t,{to:`/apps/${e}/component/developer/packages`,replace:!0})}let i=ct(r);if(i?.ListPage){let e=i.ListPage;return(0,Y.jsx)(e,{type:r})}return(0,Y.jsx)(Zt,{type:r,appName:n.appName})}function Zt({type:e,appName:t}){let r=n(),a=tt(),{entries:s}=rt(a),c=s.find(t=>t.type===e),l=lt(e,c),[u,d]=J.useState([]),[f,p]=J.useState(!0),[m,g]=J.useState(null),[v,y]=J.useState(``),[C,ee]=J.useState(`all`),[w,T]=i(),[E,D]=J.useState(0),[O,k]=J.useState(null);J.useEffect(()=>{let e=!1;return(async()=>{try{let t=await a.list(`package`);if(e)return;k(zt(t))}catch{e||k([])}})(),()=>{e=!0}},[a]);let[ne,re]=J.useState(null);J.useEffect(()=>{let e=!1;if(!t){re(null);return}return(async()=>{try{let n=await a.list(`app`);if(e)return;let r=(n??[]).map(e=>e&&typeof e==`object`&&`item`in e?e.item:e).find(e=>e?.name===t||e?._packageId===t);re(r?._packageId??null)}catch{e||re(null)}})(),()=>{e=!0}},[a,t]);let j=w.get(`package`),M=J.useMemo(()=>{if(!O)return null;if(j&&O.some(e=>e.id===j))return j;if(O.length===0)return null;if(ne&&O.some(e=>e.id===ne))return ne;let e=new Map;for(let t of u){let n=t.item?._packageId;n&&n!==`sys_metadata`&&e.set(n,(e.get(n)??0)+1)}let t=null,n=0;for(let r of O){let i=e.get(r.id)??0;i>n&&(t=r.id,n=i)}return t??O[0]?.id??null},[O,j,u,ne]);J.useEffect(()=>{if(!O||O.length===0||j&&O.some(e=>e.id===j)||!(ne&&O.some(e=>e.id===ne))&&u.length===0||!M)return;let e=new URLSearchParams(w);e.set(`package`,M),T(e,{replace:!0})},[O,j,u,M,ne]);let ie=M?`?package=${encodeURIComponent(M)}`:``,[ae,F]=J.useState(!1),I=J.useCallback(()=>{let e=O??[];if(O!==null&&e.length===0){F(!0);return}if(e.length>0&&!M){r(`./new?package=${encodeURIComponent(e[0].id)}`);return}r(`./new${ie}`)},[O,M,ie,r]);J.useEffect(()=>{let t=!1;return p(!0),g(null),(async()=>{try{let n=await a.list(e);if(t)return;let r=(n??[]).map(e=>{let t=(e&&typeof e==`object`&&`item`in e?e.item:e)??{},n=t?._diagnostics??e?._diagnostics??void 0;return{raw:e,item:t,source:Yt(t,e?.source),diagnostics:n}});d(r),p(!1)}catch(e){t||(g(e?.message??String(e)),p(!1))}})(),()=>{t=!0}},[a,e,E]);let se=l.searchableFields??[`name`,`label`,`description`],R=J.useMemo(()=>u.filter(e=>l.listFilter&&!l.listFilter(e.item)||!M?!1:e.item?._packageId===M),[u,M,l]),ce=R.filter(e=>!(!et(e.item,v,se)||C!==`all`&&e.source!==C)),z=J.useMemo(()=>{let e={all:R.length,artifact:0,runtime:0};for(let t of R)e[t.source]++;return e},[R]),le=J.useMemo(()=>R.filter(e=>e.diagnostics&&e.diagnostics.valid===!1).length,[R]),ue=J.useMemo(()=>R.filter(e=>e.diagnostics&&e.diagnostics.valid!==!1&&(e.diagnostics.warnings?.length??0)>0).length,[R]),de=l.listColumns??Qt(l.primaryKey??`name`),B=Mt(),V=It(e,B,c?.label??e),fe=e=>{let t=`engine.list.col.${e.key}`,n=q(t,B);return n===t?e.label:n};return(0,Y.jsx)(_t,{entry:c??{type:e,label:e},stats:[{label:q(`engine.list.items`,B),value:R.length},{label:q(`engine.list.filtered`,B),value:ce.length},...le>0?[{label:q(`engine.list.invalid`,B),value:(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-destructive`,children:[(0,Y.jsx)(W,{className:`w-3.5 h-3.5`}),le]})}]:[],...ue>0?[{label:q(`engine.list.warnings`,B),value:(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-amber-600 dark:text-amber-400`,children:[(0,Y.jsx)(W,{className:`w-3.5 h-3.5`}),ue]})}]:[]],actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Jt,{entry:c,location:`list_toolbar`,onAfter:()=>D(e=>e+1)}),(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:()=>D(e=>e+1),title:q(`engine.list.refresh`,B),children:(0,Y.jsx)(Pe,{className:`h-4 w-4`})}),(c?.allowOrgOverride||c?.allowRuntimeCreate)&&(0,Y.jsxs)(L,{size:`sm`,variant:l.createFields?`default`:`outline`,onClick:I,title:l.createFields?K(`engine.list.createHint`,B,{type:V}):void 0,children:[(0,Y.jsx)(U,{className:`h-4 w-4 mr-1`}),q(`engine.list.create`,B)]})]}),children:(0,Y.jsxs)(`div`,{className:`p-6 space-y-4`,children:[(0,Y.jsx)(ht,{open:ae,onOpenChange:F,onCreated:e=>r(`./new?package=${encodeURIComponent(e)}`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-md`,children:[(0,Y.jsx)(Re,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(x,{className:`pl-8`,placeholder:q(`engine.list.search`,B),value:v,onChange:e=>y(e.target.value)})]}),(0,Y.jsxs)(b,{value:C,onValueChange:ee,children:[(0,Y.jsx)(oe,{className:`w-[180px]`,children:(0,Y.jsx)(h,{})}),(0,Y.jsxs)(S,{children:[(0,Y.jsxs)(te,{value:`all`,children:[q(`engine.list.allSources`,B),` (`,z.all,`)`]}),(0,Y.jsxs)(te,{value:`artifact`,children:[q(`engine.list.source.artifact`,B),` (`,z.artifact,`)`]}),(0,Y.jsxs)(te,{value:`runtime`,children:[q(`engine.list.source.runtime`,B),` (`,z.runtime,`)`]})]})]})]}),(f||O===null)&&(0,Y.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[q(`engine.edit.loading`,B),` `,e,`…`]}),m&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:m}),!f&&!m&&O!==null&&O.length===0&&(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:`No project packages installed`}),(0,Y.jsx)(_,{children:`Studio only shows metadata that belongs to a project software package. Install or create a project package to manage its metadata here.`})]}),!f&&!m&&O!==null&&O.length>0&&ce.length===0&&(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:R.length===0?K(`engine.list.emptyType`,B,{type:V}):K(`engine.list.emptyQuery`,B,{query:v})}),(0,Y.jsx)(_,{children:l.emptyStateHint??(c?.allowOrgOverride||c?.allowRuntimeCreate?K(`engine.list.createHint`,B,{type:V}):q(`engine.list.readOnlyHint`,B))}),R.length===0&&(c?.allowOrgOverride||c?.allowRuntimeCreate)&&(0,Y.jsx)(`div`,{className:`mt-4`,children:(0,Y.jsxs)(L,{onClick:I,children:[(0,Y.jsx)(U,{className:`h-4 w-4 mr-1`}),q(`engine.list.create`,B)]})})]}),!f&&ce.length>0&&(0,Y.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:(0,Y.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Y.jsx)(`thead`,{className:`bg-muted/40 text-xs uppercase tracking-wider text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[de.map(e=>(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left font-medium`,style:e.width?{width:e.width}:void 0,children:fe(e)},e.key)),(0,Y.jsx)(`th`,{className:`px-3 py-2 text-right font-medium w-[80px]`,children:q(`engine.list.col.source`,B)})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:ce.map((e,t)=>{let n=l.primaryKey??`name`,r=String(e.item[n]??`(unnamed-${t})`),i=e.item._packageId,a=i&&i!==`sys_metadata`?`?package=${encodeURIComponent(i)}`:ie,s=e.diagnostics?.valid===!1,c=e.diagnostics?.errors??[],u=e.diagnostics?.warnings??[],d=!s&&u.length>0,f=s?c.slice(0,3).map(e=>`${e.path||`(root)`}: ${e.message}`).join(`
|
|
2
|
-
`)+(c.length>3?`\n+${c.length-3} more`:``):d?u.slice(0,3).map(e=>`${e.path||`(root)`}: ${e.message}`).join(`
|
|
3
|
-
`)+(u.length>3?`\n+${u.length-3} more`:``):``;return(0,Y.jsxs)(`tr`,{className:`hover:bg-accent/50 `+(s?`bg-destructive/[0.04]`:d?`bg-amber-500/[0.05]`:``),children:[de.map((t,n)=>{let i=e.item[t.key],l=t.render?t.render(i,e.item):X(i);return(0,Y.jsx)(`td`,{className:`px-3 py-2 align-top`,children:n===0?(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[s&&(0,Y.jsx)(`span`,{className:`inline-flex`,"aria-label":q(`engine.list.invalidTitle`,B),title:`${K(`engine.list.invalidCount`,B,{count:c.length})}\n${f}`,children:(0,Y.jsx)(W,{className:`w-3.5 h-3.5 text-destructive shrink-0`})}),d&&(0,Y.jsx)(`span`,{className:`inline-flex`,"aria-label":q(`engine.list.warnTitle`,B),title:`${K(`engine.list.warnCount`,B,{count:u.length})}\n${f}`,children:(0,Y.jsx)(W,{className:`w-3.5 h-3.5 text-amber-600 dark:text-amber-400 shrink-0`})}),(0,Y.jsx)(o,{to:`./${encodeURIComponent(r)}${a}`,className:`text-primary hover:underline font-mono`,children:l})]}):l},t.key)}),(0,Y.jsxs)(`td`,{className:`px-3 py-2 text-right align-top`,children:[e.item._lock&&e.item._lock!==`none`&&(0,Y.jsx)(`span`,{className:`inline-flex items-center mr-1 text-amber-600 dark:text-amber-400`,title:e.item._lockReason??`_lock=${String(e.item._lock)}`,children:(0,Y.jsx)(Ee,{className:`h-3 w-3`})}),(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] `+(e.source===`artifact`?`border-sky-500/50 text-sky-700 dark:text-sky-300`:`border-emerald-500/50 text-emerald-700 dark:text-emerald-300`),title:e.source===`artifact`?`${q(`engine.list.source.artifactDesc`,B)}${e.item._packageId?` (${e.item._packageId})`:``}`:q(`engine.list.source.runtimeDesc`,B),children:q(`engine.list.source.${e.source}`,B)})]})]},r+t)})})]})})]})})}function Qt(e){return[{key:e,label:e,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`description`,label:`Description`}]}function X(e){if(e==null||e===``)return(0,Y.jsx)(m,{});if(typeof e==`boolean`)return e?`✓`:`✗`;if(typeof e==`object`)try{return(0,Y.jsx)(`code`,{className:`font-mono text-xs`,children:JSON.stringify(e).slice(0,60)})}catch{return String(e)}return String(e)}var $t={unchanged:{badge:`bg-muted text-muted-foreground border border-border`,row:``},modified:{badge:`bg-amber-100 text-amber-900 border border-amber-300 dark:bg-amber-950/60 dark:text-amber-200 dark:border-amber-800`,row:`bg-amber-50/50 dark:bg-amber-950/20`},added:{badge:`bg-emerald-100 text-emerald-900 border border-emerald-300 dark:bg-emerald-950/60 dark:text-emerald-200 dark:border-emerald-800`,row:`bg-emerald-50/50 dark:bg-emerald-950/20`},removed:{badge:`bg-rose-100 text-rose-900 border border-rose-300 dark:bg-rose-950/60 dark:text-rose-200 dark:border-rose-800`,row:`bg-rose-50/50 dark:bg-rose-950/20`}};function en(e,t){let n=tn(e)?e:{},r=tn(t)?t:{},i=new Set([...Object.keys(n),...Object.keys(r)]),a=[];for(let e of i){let t=e in n,i=e in r,o=n[e],s=r[e],c;c=t&&!i?`removed`:!t&&i?`added`:nn(o)===nn(s)?`unchanged`:`modified`,a.push({key:e,status:c,codeValue:o,effectiveValue:s})}let o={modified:0,added:1,removed:2,unchanged:3};return a.sort((e,t)=>o[e.status]===o[t.status]?e.key.localeCompare(t.key):o[e.status]-o[t.status]),a}function tn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function nn(e){try{return JSON.stringify(e,(e,t)=>tn(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}catch{return String(e)}}function rn(e){if(e===void 0)return`—`;if(e===null)return`null`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function an(e,t){if(e==null)return 0;let n=0;for(let r of en(e,t))r.status!==`unchanged`&&(n+=1);return n}function on({layered:e,loading:t,locale:n}){if(t)return(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:q(`engine.edit.loading`,n)});if(!e)return(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:q(`engine.layers.diff.noBaseline`,n)});let r=e.overlay!=null;return(0,Y.jsxs)(re,{defaultValue:`diff`,className:`w-full`,children:[(0,Y.jsxs)(d,{className:`grid grid-cols-4 w-fit`,children:[(0,Y.jsx)(j,{value:`diff`,children:q(`engine.layers.diff`,n)}),(0,Y.jsxs)(j,{value:`code`,children:[q(`engine.layers.code`,n),(0,Y.jsx)(P,{variant:`outline`,className:`ml-1.5 text-[10px]`,children:Ft(`layer`,`artifact`,n)})]}),(0,Y.jsxs)(j,{value:`overlay`,children:[q(`engine.layers.overlay`,n),r?(0,Y.jsx)(P,{className:`ml-1.5 text-[10px] bg-emerald-600 text-emerald-50`,children:Ft(`layer`,e.overlayScope??`set`,n)}):(0,Y.jsx)(P,{variant:`outline`,className:`ml-1.5 text-[10px] text-muted-foreground`,children:Ft(`layer`,`none`,n)})]}),(0,Y.jsxs)(j,{value:`effective`,children:[q(`engine.layers.effective`,n),(0,Y.jsx)(P,{variant:`outline`,className:`ml-1.5 text-[10px]`,children:Ft(`layer`,`merged`,n)})]})]}),(0,Y.jsx)(k,{value:`diff`,className:`mt-3`,children:(0,Y.jsx)(sn,{code:e.code,effective:e.effective,locale:n})}),(0,Y.jsx)(k,{value:`code`,className:`mt-3`,children:(0,Y.jsx)(ln,{payload:e.code,emptyHint:q(`engine.layers.diff.noBaseline`,n)})}),(0,Y.jsx)(k,{value:`overlay`,className:`mt-3`,children:(0,Y.jsx)(ln,{payload:e.overlay,emptyHint:q(`engine.layers.diff.noChanges`,n)})}),(0,Y.jsx)(k,{value:`effective`,className:`mt-3`,children:(0,Y.jsx)(ln,{payload:e.effective,emptyHint:`No effective value resolved.`})})]})}function sn({code:e,effective:t,locale:n}){let[r,i]=J.useState(!1),a=J.useMemo(()=>e==null?[]:en(e,t),[e,t]),o=J.useMemo(()=>a.reduce((e,t)=>(e[t.status]+=1,e),{unchanged:0,modified:0,added:0,removed:0}),[a]);if(e==null)return(0,Y.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 text-xs text-muted-foreground`,children:q(`engine.layers.diff.noBaseline`,n)});let s=r?a:a.filter(e=>e.status!==`unchanged`),c=o.modified>0||o.added>0||o.removed>0;return(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 flex-wrap`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:K(`engine.layers.diff.summary`,n,{modified:o.modified,added:o.added,removed:o.removed})}),(0,Y.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground cursor-pointer select-none`,children:[(0,Y.jsx)(ae,{checked:r,onCheckedChange:i,"aria-label":q(`engine.layers.diff.showUnchanged`,n)}),q(`engine.layers.diff.showUnchanged`,n),(0,Y.jsx)(P,{variant:`outline`,className:`ml-1 text-[10px]`,children:o.unchanged})]})]}),!c&&!r?(0,Y.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 text-xs text-muted-foreground`,children:q(`engine.layers.diff.noChanges`,n)}):(0,Y.jsxs)(`div`,{className:`rounded border overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-[minmax(140px,1fr)_minmax(160px,1.4fr)_minmax(160px,1.4fr)_auto] bg-muted/50 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:q(`engine.layers.diff.field`,n)}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:q(`engine.layers.diff.code`,n)}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:q(`engine.layers.diff.effective`,n)}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:q(`engine.layers.diff.status`,n)})]}),(0,Y.jsx)(`div`,{className:`divide-y`,children:s.map(e=>{let t=$t[e.status];return(0,Y.jsxs)(`div`,{className:I(`grid grid-cols-[minmax(140px,1fr)_minmax(160px,1.4fr)_minmax(160px,1.4fr)_auto] text-xs`,t.row),children:[(0,Y.jsx)(`div`,{className:`px-3 py-2 font-mono text-foreground truncate`,title:e.key,children:e.key}),(0,Y.jsx)(cn,{value:e.codeValue,muted:e.status===`added`}),(0,Y.jsx)(cn,{value:e.effectiveValue,muted:e.status===`removed`}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:(0,Y.jsx)(`span`,{className:I(`inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium`,t.badge),children:q(`engine.layers.diff.${e.status}`,n)})})]},e.key)})})]})]})}function cn({value:e,muted:t}){let n=rn(e);return(0,Y.jsx)(`div`,{className:I(`px-3 py-2 font-mono break-all`,t||e===void 0?`text-muted-foreground italic`:`text-foreground`),title:n.length>200?n:void 0,children:n.length>200?`${n.slice(0,200)}…`:n})}function ln({payload:e,emptyHint:t}){if(e==null)return(0,Y.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 text-xs text-muted-foreground`,children:t});let n;try{n=JSON.stringify(e,null,2)}catch{n=String(e)}return(0,Y.jsx)(`pre`,{className:`rounded border bg-muted/30 p-3 text-xs font-mono overflow-auto max-h-[420px]`,children:n})}var un={modified:`bg-amber-100 text-amber-900 border border-amber-300 dark:bg-amber-950/60 dark:text-amber-200 dark:border-amber-800`,added:`bg-emerald-100 text-emerald-900 border border-emerald-300 dark:bg-emerald-950/60 dark:text-emerald-200 dark:border-emerald-800`,removed:`bg-rose-100 text-rose-900 border border-rose-300 dark:bg-rose-950/60 dark:text-rose-200 dark:border-rose-800`},dn={modified:`bg-amber-50/50 dark:bg-amber-950/20`,added:`bg-emerald-50/50 dark:bg-emerald-950/20`,removed:`bg-rose-50/50 dark:bg-rose-950/20`};function fn(e,t){return q(e===`added`?`designer.canvas.diffAdded`:e===`removed`?`designer.canvas.diffRemoved`:`designer.canvas.diffChanged`,t)}function pn(e){if(e===void 0)return`—`;if(e===null)return`null`;if(typeof e==`string`)return e.length>200?`${e.slice(0,200)}…`:e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{let t=JSON.stringify(e);return t.length>200?`${t.slice(0,200)}…`:t}catch{return String(e)}}function mn(e,t){let n=0;for(let r of en(e,t))r.status!==`unchanged`&&(n+=1);return n}function hn({published:e,draft:t,locale:n,className:r}){let i=J.useMemo(()=>en(e,t).filter(e=>e.status!==`unchanged`),[e,t]);return i.length===0?(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground ${r??``}`,children:q(`designer.draftReview.empty`,n)}):(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5 ${r??``}`,"data-testid":`draft-review-panel`,children:i.map(e=>{let t=e.status;return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-2 rounded-md px-2.5 py-1.5 text-xs ${dn[t]}`,children:[(0,Y.jsx)(`span`,{className:`inline-flex shrink-0 items-center rounded px-1.5 py-px text-[10px] font-medium uppercase tracking-wide ${un[t]}`,children:fn(t,n)}),(0,Y.jsx)(`code`,{className:`font-mono font-medium text-foreground`,children:e.key}),t===`added`?(0,Y.jsx)(`ins`,{className:`text-emerald-700 no-underline dark:text-emerald-400`,children:pn(e.effectiveValue)}):t===`removed`?(0,Y.jsx)(`del`,{className:`text-rose-700 dark:text-rose-400`,children:pn(e.codeValue)}):(0,Y.jsxs)(`span`,{className:`inline-flex items-baseline gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(`del`,{className:`text-rose-700 dark:text-rose-400`,children:pn(e.codeValue)}),(0,Y.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),(0,Y.jsx)(`ins`,{className:`text-emerald-700 no-underline dark:text-emerald-400`,children:pn(e.effectiveValue)})]})]},e.key)})})}var gn={action:`record`,hook:`record`,validation:`record`,flow:`flattened`,permission:`flattened`,sharing_rule:`flattened`,page:`none`,__object_field:`none`,__object_index:`none`,__object_validation:`none`,analytics_cube:`none`,api:`none`,app:`none`,agent:`none`,book:`none`,connector:`none`,dashboard:`none`,datasource:`none`,doc:`none`,email_template:`none`,field:`none`,index:`none`,job:`none`,mapping:`none`,object:`none`,position:`none`,report:`none`,skill:`none`,tool:`none`,translation:`none`,view:`none`,webhook:`none`};function _n(e){return gn[e]??`none`}var vn={action:`client`,hook:`server`,validation:`server`};function yn(e){return vn[e]}function bn(e){return yn(e)===`server`?xt:void 0}function xn(e){return yn(e)===`client`?Ct:void 0}function Sn({type:e,name:t,parentItem:r,onOpen:i}){let a=tt(),o=n(),s=J.useMemo(()=>gt(e),[e]),[c,l]=J.useState([]),[u,d]=J.useState(``),[f,p]=J.useState({});if(J.useEffect(()=>{if(s.length===0){l([]);return}let e=!1,n=[...s].sort((e,t)=>(e.anchor.order??999)-(t.anchor.order??999)).map(e=>{if(e.anchor.source===`embedded`){let t=e.anchor.extract&&r?e.anchor.extract(r):[];return{childType:e.type,anchor:e.anchor,loading:!1,error:null,items:t.map(Cn)}}return{childType:e.type,anchor:e.anchor,loading:!0,error:null,items:[]}});return l(n),Promise.all(n.map(async n=>{if(n.anchor.source===`embedded`)return n;try{let r=await a.list(n.childType);if(e)return n;let i=n.anchor.match??(()=>!1),o=r.filter(e=>i(e,t)).map(e=>Cn(e));return{...n,loading:!1,items:o}}catch(t){return e?n:{...n,loading:!1,error:t instanceof Error?t.message:String(t)}}})).then(t=>{e||l(t)}),()=>{e=!0}},[a,e,t,s,r]),s.length===0)return(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:`No related metadata`}),(0,Y.jsxs)(_,{children:[`No metadata types are configured to anchor at `,(0,Y.jsx)(`code`,{children:e}),`. You can register one via`,` `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`registerMetadataResource`}),`.`]})]});let m=c.reduce((e,t)=>e+t.items.length,0),h=c.some(e=>e.loading),g=u.trim().toLowerCase();return(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,Y.jsx)(Re,{className:`absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(x,{placeholder:`Search related…`,value:u,onChange:e=>d(e.target.value),className:`pl-8 h-8 text-sm`})]}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:h?`Scanning…`:`${m} item${m===1?``:`s`}`})]}),c.map(n=>{let r=g?n.items.filter(e=>e.name.toLowerCase().includes(g)||(e.label??``).toLowerCase().includes(g)):n.items,a=f[n.childType]??!1;return!(!g||r.length>0)&&!n.loading?null:(0,Y.jsxs)(`div`,{className:`border rounded-lg overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`w-full flex items-center gap-2 px-3 py-2 bg-muted/40`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2 flex-1 text-left hover:opacity-80`,onClick:()=>p(e=>({...e,[n.childType]:!a})),children:[(0,Y.jsx)(me,{className:I(`h-4 w-4 text-muted-foreground transition-transform`,!a&&`rotate-90`)}),(0,Y.jsx)(`div`,{className:`text-sm font-medium`,children:n.anchor.groupLabel??n.childType}),(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px]`,children:n.loading?`…`:r.length})]}),(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,onClick:()=>{if(n.anchor.source===`embedded`){if(typeof window<`u`){let e=new URL(window.location.href);e.searchParams.set(`tab`,`form`),e.searchParams.delete(`open`),window.location.assign(e.toString())}return}o(`../../${encodeURIComponent(n.childType)}/_new?anchor=${encodeURIComponent(`${e}:${t}`)}`)},title:n.anchor.source===`embedded`?`Edit in Form tab`:`New ${n.childType}`,children:(0,Y.jsx)(U,{className:`h-3.5 w-3.5`})})]}),!a&&(0,Y.jsxs)(`div`,{children:[n.loading&&(0,Y.jsxs)(`div`,{className:`px-3 py-3 text-xs text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}),`Loading `,n.childType,`…`]}),!n.loading&&n.error&&(0,Y.jsxs)(`div`,{className:`px-3 py-3 text-xs text-destructive`,children:[`Failed: `,n.error]}),!n.loading&&!n.error&&r.length===0&&(0,Y.jsx)(`div`,{className:`px-3 py-3 text-xs text-muted-foreground`,children:g?`No matches.`:`Nothing here yet.`}),!n.loading&&!n.error&&r.length>0&&(0,Y.jsxs)(`table`,{className:`w-full text-sm border-t`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{className:`bg-muted/30 text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,Y.jsx)(`th`,{className:`text-left font-medium px-3 py-1.5 w-[45%]`,children:`Name`}),(0,Y.jsx)(`th`,{className:`text-left font-medium px-3 py-1.5`,children:`Label`}),(0,Y.jsx)(`th`,{className:`w-8`})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:r.map((r,a)=>(0,Y.jsxs)(`tr`,{role:`button`,tabIndex:0,onClick:()=>i(n.anchor.source===`embedded`?{kind:`embedded`,parentType:e,parentName:t,groupLabel:n.anchor.groupLabel??n.childType,itemName:r.name,raw:r.raw,editAs:n.anchor.editAs,embeddedPath:n.anchor.embeddedPath}:{kind:`metadata`,type:n.childType,name:r.name}),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&e.currentTarget.click()},className:`hover:bg-accent/50 cursor-pointer`,children:[(0,Y.jsx)(`td`,{className:`px-3 py-1.5 font-mono text-xs truncate max-w-0`,children:r.name}),(0,Y.jsx)(`td`,{className:`px-3 py-1.5 text-xs text-muted-foreground truncate max-w-0`,children:r.label&&r.label!==r.name?r.label:``}),(0,Y.jsx)(`td`,{className:`px-3 py-1.5 text-right`,children:(0,Y.jsx)(ve,{className:`h-3.5 w-3.5 text-muted-foreground inline`})})]},`${r.name}-${a}`))})]})]})]},n.childType)})]})}function Cn(e){return{name:wn(e,[`name`,`id`,`key`])??`(unnamed)`,label:wn(e,[`label`,`title`,`displayName`]),description:wn(e,[`description`,`summary`]),raw:e}}function wn(e,t){for(let n of t){let t=e[n];if(typeof t==`string`&&t.length>0)return t}}function Tn({parentType:e,parentName:t,embeddedPath:n,itemName:r,editAs:i,initialRaw:a,onSaved:o}){let s=Mt(),c=tt(),{entries:l}=rt(c),u=i?l.find(e=>e.type===i):void 0,d=!u?.schema&&i?Dn[i]:void 0,f=u?.schema??d?.schema,p=u?.form??d?.form,m=i?pt(i):void 0,[h,g]=J.useState(a),[_,v]=J.useState(!1),[y,b]=J.useState(null),[x,S]=J.useState([]),[C,ee]=J.useState(null);J.useEffect(()=>{g(a),b(null),S([]),ee(null)},[a,r,e,t]);let w=u!=null&&!u.allowOrgOverride&&!u.allowRuntimeCreate;async function T(){if(!n){b(q(`engine.embedded.saveNoPath`,s));return}v(!0),b(null),S([]);try{let i=await c.layered(e,t),a=En(i.effective??i.code??{},n,r,h);await c.save(e,t,a),ee(Date.now()),o?.(h)}catch(e){if(e?.status===422||ce(e,[`INVALID_METADATA`,`INVALID_PAYLOAD`])){let t=e?.body?.issues??[],i=(Array.isArray(t)?t:[]).map(e=>{let t=Array.isArray(e.path)?e.path.join(`.`):String(e.path??``),i=`${n}.${r}.`;return{path:t.startsWith(i)?t.slice(i.length):t,message:Nt(String(e.message??`Invalid`),s)}});S(i),b(i.length===1?q(`engine.validation.failedOne`,s):K(`engine.validation.failed`,s,{count:i.length}))}else b(e?.message??String(e))}finally{v(!1)}}return f?(0,Y.jsxs)(`div`,{className:`p-4 space-y-4`,children:[y&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:y}),C!=null&&!y&&(0,Y.jsx)(`div`,{className:`text-sm text-emerald-700 border border-emerald-300 bg-emerald-50 rounded p-2`,children:q(`engine.embedded.saved`,s)}),w&&(0,Y.jsx)(`div`,{className:`text-xs text-amber-800 border border-amber-300 bg-amber-50 rounded p-2`,children:q(`engine.embedded.readOnlyParent`,s)}),m&&(0,Y.jsx)(m,{type:i,name:r,draft:h,locale:s,editing:!1}),(0,Y.jsx)(At,{schema:f,idPath:jt,form:p,value:h,onChange:g,issues:x}),(0,Y.jsx)(`div`,{className:`flex justify-end gap-2 pt-2 border-t`,children:(0,Y.jsxs)(L,{onClick:T,disabled:_||!n,children:[_?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):(0,Y.jsx)(Le,{className:`h-4 w-4 mr-1`}),K(`engine.embedded.saveIntoParent`,s,{parentType:e})]})}),!n&&(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground border rounded p-3`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:q(`engine.embedded.readOnly`,s)}),(0,Y.jsx)(`div`,{children:q(`engine.embedded.noPathHint`,s)})]})]}):(0,Y.jsxs)(`div`,{className:`p-4 space-y-3`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:K(`engine.embedded.noSchema`,s,{type:i??`this item`,target:`${e}/${t}.${n}.${r}`})}),(0,Y.jsx)(`textarea`,{className:`w-full h-[60vh] font-mono text-xs border rounded p-3 bg-muted/30`,value:JSON.stringify(h,null,2),onChange:e=>{try{g(JSON.parse(e.target.value)),b(null)}catch(e){b(`${q(`engine.form.invalidJson`,s)}: ${e.message}`)}}}),y&&(0,Y.jsxs)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-2 bg-destructive/5`,children:[(0,Y.jsx)(W,{className:`h-4 w-4 inline mr-1`}),` `,y]}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:(0,Y.jsxs)(L,{onClick:T,disabled:_||!n,children:[_?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):(0,Y.jsx)(Le,{className:`h-4 w-4 mr-1`}),K(`engine.embedded.saveIntoParent`,s,{parentType:`parent`})]})})]})}function En(e,t,n,r){let i=t.split(`.`),a=structuredClone(e),o=a;for(let e=0;e<i.length-1;e++)o[i[e]]??(o[i[e]]={}),o=o[i[e]];let s=i[i.length-1],c=o[s];if(Array.isArray(c)){let e=c.findIndex(e=>e&&typeof e==`object`&&e.name===n);e>=0?c[e]=r:c.push(r)}else if(c&&typeof c==`object`){let{name:e,...t}=r;c[n]=t}else{let{name:e,...t}=r;o[s]={[n]:t}}return a}var Dn={index:{schema:{type:`object`,required:[`fields`],properties:{name:{type:`string`,title:`Name`,description:`Index name (auto-generated from the columns if not provided).`},fields:{type:`array`,title:`Fields`,description:`Fields included in the index, in order.`,items:{type:`string`}},unique:{title:`Unique`,description:`Whether the index enforces uniqueness, and at which scope. 'global' materializes over exactly the listed fields — one holder across the whole installation. 'organization' has the driver prepend the NULL-safe organization key part at registration — one holder per organization. Leave empty for a non-unique index.`,anyOf:[{type:`string`,enum:[`global`,`organization`]},{type:`boolean`}]}}}}};function On({target:e,onClose:t,parentContext:r}){let i=n(),a=e?.kind===`metadata`,o=e?.kind===`embedded`,s=a?e.type:o?e.groupLabel:``,c=a?e.name:o?e.itemName:``;return(0,Y.jsx)(f,{open:e!==null,onOpenChange:e=>{e||t()},children:(0,Y.jsxs)(M,{side:`right`,className:I(`w-[92vw] sm:max-w-[1100px] p-0 flex flex-col gap-0`),children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(P,{variant:`outline`,className:`font-mono text-[10px]`,children:s}),(0,Y.jsx)(D,{className:`font-mono text-base truncate`,children:c}),(0,Y.jsx)(`div`,{className:`ml-auto flex items-center gap-1`,children:a&&(0,Y.jsxs)(L,{variant:`ghost`,size:`sm`,onClick:()=>{i(`../../${encodeURIComponent(e.type)}/${encodeURIComponent(e.name)}`),t()},title:`Open in full page`,children:[(0,Y.jsx)(ve,{className:`h-3.5 w-3.5 mr-1`}),`Open full page`]})})]}),r&&(0,Y.jsxs)(C,{className:`text-xs`,children:[o?`Embedded in `:`Related to `,(0,Y.jsxs)(`span`,{className:`font-mono`,children:[r.type,`/`,r.name]})]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:[a&&(0,Y.jsx)(Ir,{type:e.type,name:e.name,embedded:!0},`${e.type}/${e.name}`),o&&(0,Y.jsx)(Tn,{parentType:e.parentType,parentName:e.parentName,embeddedPath:e.embeddedPath,itemName:e.itemName,editAs:e.editAs,initialRaw:e.raw},`${e.parentType}/${e.parentName}/${e.embeddedPath}/${e.itemName}`)]})]})})}function kn(e,t){if(!e)return``;let n=new Date(e);return Number.isNaN(n.getTime())?e:n.toLocaleString(t)}function An(e,t){let n={allowed:{label:`allowed`,cls:`bg-emerald-50 text-emerald-700 border-emerald-200`,Icon:He},denied:{label:`denied`,cls:`bg-rose-50 text-rose-700 border-rose-200`,Icon:Ue},forced:{label:`forced`,cls:`bg-amber-50 text-amber-700 border-amber-200`,Icon:Ve}},r=n[e]??n.allowed;return(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide ${r.cls}`,children:[(0,Y.jsx)(r.Icon,{className:`h-3 w-3`}),Ft(`outcome`,r.label,t)]})}function jn({type:e,name:t,client:n,locale:r=`en-US`}){let i=z(),[a,o]=J.useState({status:`idle`}),[s,c]=J.useState(!1),l=J.useCallback(async()=>{c(!0),o(e=>e.status===`loaded`?e:{status:`loading`});try{let r=await n.audit(e,t,{limit:100});o({status:`loaded`,data:r.events??[]})}catch(e){o({status:`error`,message:Tt(e)})}finally{c(!1)}},[n,e,t]);return J.useEffect(()=>{l()},[l]),(0,Y.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b px-1 pb-2`,children:[a.status===`loaded`?(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground`,"data-testid":`audit-count`,children:[a.data.length,` `,q(`engine.edit.auditCount`,r)]}):(0,Y.jsx)(`div`,{}),(0,Y.jsxs)(L,{variant:`ghost`,size:`sm`,onClick:()=>void l(),disabled:s,className:`h-7 gap-1 text-xs`,title:q(`engine.edit.refresh`,r),children:[s?(0,Y.jsx)(H,{className:`h-3 w-3 animate-spin`}):(0,Y.jsx)(Pe,{className:`h-3 w-3`}),q(`engine.edit.refresh`,r)]})]}),a.status===`error`&&(0,Y.jsx)(`div`,{"data-testid":`audit-error`,className:`m-2 rounded border border-rose-200 bg-rose-50 p-2 text-xs text-rose-700`,children:a.message}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-auto`,children:a.status===`idle`||a.status===`loading`?(0,Y.jsxs)(`div`,{className:`flex h-32 items-center justify-center text-xs text-muted-foreground`,children:[(0,Y.jsx)(H,{className:`mr-2 h-3 w-3 animate-spin`}),q(`engine.edit.loading`,r)]}):a.status===`error`?(0,Y.jsxs)(A,{className:`py-10`,"data-testid":`audit-error-state`,children:[(0,Y.jsx)(N,{children:q(`engine.edit.auditErrorTitle`,r)}),(0,Y.jsx)(_,{children:q(`engine.edit.auditErrorDescription`,r)})]}):a.data.length===0?(0,Y.jsxs)(A,{className:`py-10`,"data-testid":`audit-empty`,children:[(0,Y.jsx)(N,{children:q(`engine.edit.auditEmptyTitle`,r)}),(0,Y.jsx)(_,{children:q(`engine.edit.auditEmptyDescription`,r)})]}):(0,Y.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,Y.jsx)(`thead`,{className:`sticky top-0 bg-muted/40 text-left text-[10px] uppercase tracking-wide text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:q(`engine.edit.auditColTime`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:q(`engine.edit.auditColActor`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:q(`engine.edit.auditColOperation`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:q(`engine.edit.auditColOutcome`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:q(`engine.edit.auditColLock`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:q(`engine.edit.auditColNote`,r)})]})}),(0,Y.jsx)(`tbody`,{children:a.data.map(e=>(0,Y.jsxs)(`tr`,{className:`border-t border-border/50 align-top hover:bg-muted/20`,children:[(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-2 py-1.5 font-mono text-[11px]`,children:kn(e.occurredAt,i)}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:e.actor}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px]`,children:Ft(`op`,e.operation,r)})}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:An(e.outcome,r)}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:e.lockState&&e.lockState!==`none`?(0,Y.jsxs)(`span`,{className:`font-mono text-[11px]`,children:[Ft(`lock`,e.lockState,r),e.lockOverridden?` *`:``]}):(0,Y.jsx)(m,{})}),(0,Y.jsx)(`td`,{className:`max-w-[28ch] truncate px-2 py-1.5 text-muted-foreground`,title:e.note??e.code,children:e.note??e.code})]},String(e.id)))})]})})]})}function Mn(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t||!n;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&Pn(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46){if(r++,r<e.length&&Pn(e.charCodeAt(r)))for(r++;r<e.length&&Pn(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r)}let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101)){if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&Pn(e.charCodeAt(r))){for(r++;r<e.length&&Pn(e.charCodeAt(r));)r++;n=r}else d=3}return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
|
|
4
|
-
`;break;case 114:t+=`\r`;break;case 116:t+=` `;break;case 117:let e=f(4,!0);e>=0?t+=String.fromCharCode(e):d=4;break;default:d=5}i=r;continue}if(a>=0&&a<=31){if(Z(a)){t+=e.substring(i,r),d=2;break}d=6}r++}return t}function g(){if(i=``,d=0,a=r,c=s,u=l,r>=n)return a=n,o=17;let t=e.charCodeAt(r);if(Nn(t)){do r++,i+=String.fromCharCode(t),t=e.charCodeAt(r);while(Nn(t));return o=15}if(Z(t))return r++,i+=String.fromCharCode(t),t===13&&e.charCodeAt(r)===10&&(r++,i+=`
|
|
5
|
-
`),s++,l=r,o=14;switch(t){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,i=h(),o=10;case 47:let c=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r<n&&!Z(e.charCodeAt(r));)r++;return i=e.substring(c,r),o=12}if(e.charCodeAt(r+1)===42){r+=2;let t=n-1,a=!1;for(;r<t;){let t=e.charCodeAt(r);if(t===42&&e.charCodeAt(r+1)===47){r+=2,a=!0;break}r++,Z(t)&&(t===13&&e.charCodeAt(r)===10&&r++,s++,l=r)}return a||(r++,d=1),i=e.substring(c,r),o=13}return i+=String.fromCharCode(t),r++,o=16;case 45:if(i+=String.fromCharCode(t),r++,r===n||!Pn(e.charCodeAt(r)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=m(),o=11;default:for(;r<n&&_(t);)r++,t=e.charCodeAt(r);if(a!==r){switch(i=e.substring(a,r),i){case`true`:return o=8;case`false`:return o=9;case`null`:return o=7}return o=16}return i+=String.fromCharCode(t),r++,o=16}}function _(e){if(Nn(e)||Z(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function v(){let e;do e=g();while(e>=12&&e<=15);return e}return{setPosition:p,getPosition:()=>r,scan:t?v:g,getToken:()=>o,getTokenValue:()=>i,getTokenOffset:()=>a,getTokenLength:()=>r-a,getTokenStartLine:()=>c,getTokenStartCharacter:()=>a-u,getTokenError:()=>d}}function Nn(e){return e===32||e===9}function Z(e){return e===10||e===13}function Pn(e){return e>=48&&e<=57}var Fn;(function(e){e[e.lineFeed=10]=`lineFeed`,e[e.carriageReturn=13]=`carriageReturn`,e[e.space=32]=`space`,e[e._0=48]=`_0`,e[e._1=49]=`_1`,e[e._2=50]=`_2`,e[e._3=51]=`_3`,e[e._4=52]=`_4`,e[e._5=53]=`_5`,e[e._6=54]=`_6`,e[e._7=55]=`_7`,e[e._8=56]=`_8`,e[e._9=57]=`_9`,e[e.a=97]=`a`,e[e.b=98]=`b`,e[e.c=99]=`c`,e[e.d=100]=`d`,e[e.e=101]=`e`,e[e.f=102]=`f`,e[e.g=103]=`g`,e[e.h=104]=`h`,e[e.i=105]=`i`,e[e.j=106]=`j`,e[e.k=107]=`k`,e[e.l=108]=`l`,e[e.m=109]=`m`,e[e.n=110]=`n`,e[e.o=111]=`o`,e[e.p=112]=`p`,e[e.q=113]=`q`,e[e.r=114]=`r`,e[e.s=115]=`s`,e[e.t=116]=`t`,e[e.u=117]=`u`,e[e.v=118]=`v`,e[e.w=119]=`w`,e[e.x=120]=`x`,e[e.y=121]=`y`,e[e.z=122]=`z`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.asterisk=42]=`asterisk`,e[e.backslash=92]=`backslash`,e[e.closeBrace=125]=`closeBrace`,e[e.closeBracket=93]=`closeBracket`,e[e.colon=58]=`colon`,e[e.comma=44]=`comma`,e[e.dot=46]=`dot`,e[e.doubleQuote=34]=`doubleQuote`,e[e.minus=45]=`minus`,e[e.openBrace=123]=`openBrace`,e[e.openBracket=91]=`openBracket`,e[e.plus=43]=`plus`,e[e.slash=47]=`slash`,e[e.formFeed=12]=`formFeed`,e[e.tab=9]=`tab`})(Fn||={}),Array(20).fill(0).map((e,t)=>` `.repeat(t));var In=200;Array(In).fill(0).map((e,t)=>`
|
|
6
|
-
`+` `.repeat(t)),Array(In).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(In).fill(0).map((e,t)=>`\r
|
|
7
|
-
`+` `.repeat(t)),Array(In).fill(0).map((e,t)=>`
|
|
8
|
-
`+` `.repeat(t)),Array(In).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(In).fill(0).map((e,t)=>`\r
|
|
9
|
-
`+` `.repeat(t));var Ln;(function(e){e.DEFAULT={allowTrailingComma:!1}})(Ln||={});function Q(e,t=[],n=Ln.DEFAULT){let r={type:`array`,offset:-1,length:-1,children:[],parent:void 0};function i(e){r.type===`property`&&(r.length=e-r.offset,r=r.parent)}function a(e){return r.children.push(e),e}zn(e,{onObjectBegin:e=>{r=a({type:`object`,offset:e,length:-1,parent:r,children:[]})},onObjectProperty:(e,t,n)=>{r=a({type:`property`,offset:t,length:-1,parent:r,children:[]}),r.children.push({type:`string`,value:e,offset:t,length:n,parent:r})},onObjectEnd:(e,t)=>{i(e+t),r.length=e+t-r.offset,r=r.parent,i(e+t)},onArrayBegin:(e,t)=>{r=a({type:`array`,offset:e,length:-1,parent:r,children:[]})},onArrayEnd:(e,t)=>{r.length=e+t-r.offset,r=r.parent,i(e+t)},onLiteralValue:(e,t,n)=>{a({type:Bn(e),offset:t,length:n,parent:r,value:e}),i(t+n)},onSeparator:(e,t,n)=>{r.type===`property`&&(e===`:`?r.colonOffset=t:e===`,`&&i(t))},onError:(e,n,r)=>{t.push({error:e,offset:n,length:r})}},n);let o=r.children[0];return o&&delete o.parent,o}function Rn(e,t){if(!e)return;let n=e;for(let e of t)if(typeof e==`string`){if(n.type!==`object`||!Array.isArray(n.children))return;let t=!1;for(let r of n.children)if(Array.isArray(r.children)&&r.children[0].value===e&&r.children.length===2){n=r.children[1],t=!0;break}if(!t)return}else{let t=e;if(n.type!==`array`||t<0||!Array.isArray(n.children)||t>=n.children.length)return;n=n.children[t]}return n}function zn(e,t,n=Ln.DEFAULT){let r=Mn(e,!1),i=[],a=0;function o(e){return e?()=>a===0&&e(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter()):()=>!0}function s(e){return e?t=>a===0&&e(t,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter()):()=>!0}function c(e){return e?t=>a===0&&e(t,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter(),()=>i.slice()):()=>!0}function l(e){return e?()=>{a>0?a++:e(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter(),()=>i.slice())===!1&&(a=1)}:()=>!0}function u(e){return e?()=>{a>0&&a--,a===0&&e(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:()=>!0}let d=l(t.onObjectBegin),f=c(t.onObjectProperty),p=u(t.onObjectEnd),m=l(t.onArrayBegin),h=u(t.onArrayEnd),g=c(t.onLiteralValue),_=s(t.onSeparator),v=o(t.onComment),y=s(t.onError),b=n&&n.disallowComments,x=n&&n.allowTrailingComma;function S(){for(;;){let e=r.scan();switch(r.getTokenError()){case 4:C(14);break;case 5:C(15);break;case 3:C(13);break;case 1:b||C(11);break;case 2:C(12);break;case 6:C(16)}switch(e){case 12:case 13:b?C(10):v();break;case 16:C(1);break;case 15:case 14:break;default:return e}}}function C(e,t=[],n=[]){if(y(e),t.length+n.length>0){let e=r.getToken();for(;e!==17;){if(t.indexOf(e)!==-1){S();break}if(n.indexOf(e)!==-1)break;e=S()}}}function ee(e){let t=r.getTokenValue();return e?g(t):(f(t),i.push(t)),S(),!0}function w(){switch(r.getToken()){case 11:let e=r.getTokenValue(),t=Number(e);isNaN(t)&&(C(2),t=0),g(t);break;case 7:g(null);break;case 8:g(!0);break;case 9:g(!1);break;default:return!1}return S(),!0}function T(){return r.getToken()===10?(ee(!1),r.getToken()===6?(_(`:`),S(),O()||C(4,[],[2,5])):C(5,[],[2,5]),i.pop(),!0):(C(3,[],[2,5]),!1)}function E(){d(),S();let e=!1;for(;r.getToken()!==2&&r.getToken()!==17;){if(r.getToken()===5){if(e||C(4,[],[]),_(`,`),S(),r.getToken()===2&&x)break}else e&&C(6,[],[]);T()||C(4,[],[2,5]),e=!0}return p(),r.getToken()===2?S():C(7,[2],[]),!0}function D(){m(),S();let e=!0,t=!1;for(;r.getToken()!==4&&r.getToken()!==17;){if(r.getToken()===5){if(t||C(4,[],[]),_(`,`),S(),r.getToken()===4&&x)break}else t&&C(6,[],[]);e?(i.push(0),e=!1):i[i.length-1]++,O()||C(4,[],[4,5]),t=!0}return h(),e||i.pop(),r.getToken()===4?S():C(8,[4],[]),!0}function O(){switch(r.getToken()){case 3:return D();case 1:return E();case 10:return ee(!0);default:return w()}}return S(),r.getToken()===17?n.allowEmptyContent?!0:(C(4,[],[]),!1):O()?(r.getToken()!==17&&C(9,[],[]),!0):(C(4,[],[]),!1)}function Bn(e){switch(typeof e){case`boolean`:return`boolean`;case`number`:return`number`;case`string`:return`string`;case`object`:return e?Array.isArray(e)?`array`:`object`:`null`;default:return`null`}}var Vn;(function(e){e[e.None=0]=`None`,e[e.UnexpectedEndOfComment=1]=`UnexpectedEndOfComment`,e[e.UnexpectedEndOfString=2]=`UnexpectedEndOfString`,e[e.UnexpectedEndOfNumber=3]=`UnexpectedEndOfNumber`,e[e.InvalidUnicode=4]=`InvalidUnicode`,e[e.InvalidEscapeCharacter=5]=`InvalidEscapeCharacter`,e[e.InvalidCharacter=6]=`InvalidCharacter`})(Vn||={});var Hn;(function(e){e[e.OpenBraceToken=1]=`OpenBraceToken`,e[e.CloseBraceToken=2]=`CloseBraceToken`,e[e.OpenBracketToken=3]=`OpenBracketToken`,e[e.CloseBracketToken=4]=`CloseBracketToken`,e[e.CommaToken=5]=`CommaToken`,e[e.ColonToken=6]=`ColonToken`,e[e.NullKeyword=7]=`NullKeyword`,e[e.TrueKeyword=8]=`TrueKeyword`,e[e.FalseKeyword=9]=`FalseKeyword`,e[e.StringLiteral=10]=`StringLiteral`,e[e.NumericLiteral=11]=`NumericLiteral`,e[e.LineCommentTrivia=12]=`LineCommentTrivia`,e[e.BlockCommentTrivia=13]=`BlockCommentTrivia`,e[e.LineBreakTrivia=14]=`LineBreakTrivia`,e[e.Trivia=15]=`Trivia`,e[e.Unknown=16]=`Unknown`,e[e.EOF=17]=`EOF`})(Hn||={});var $=Q,Un=Rn,Wn;(function(e){e[e.InvalidSymbol=1]=`InvalidSymbol`,e[e.InvalidNumberFormat=2]=`InvalidNumberFormat`,e[e.PropertyNameExpected=3]=`PropertyNameExpected`,e[e.ValueExpected=4]=`ValueExpected`,e[e.ColonExpected=5]=`ColonExpected`,e[e.CommaExpected=6]=`CommaExpected`,e[e.CloseBraceExpected=7]=`CloseBraceExpected`,e[e.CloseBracketExpected=8]=`CloseBracketExpected`,e[e.EndOfFileExpected=9]=`EndOfFileExpected`,e[e.InvalidCommentToken=10]=`InvalidCommentToken`,e[e.UnexpectedEndOfComment=11]=`UnexpectedEndOfComment`,e[e.UnexpectedEndOfString=12]=`UnexpectedEndOfString`,e[e.UnexpectedEndOfNumber=13]=`UnexpectedEndOfNumber`,e[e.InvalidUnicode=14]=`InvalidUnicode`,e[e.InvalidEscapeCharacter=15]=`InvalidEscapeCharacter`,e[e.InvalidCharacter=16]=`InvalidCharacter`})(Wn||={});var Gn=J.lazy(async()=>({default:(await r(()=>import(`./dist-Dc_9i5rZ.js`).then(e=>e.n),[],import.meta.url)).Editor}));function Kn(e){try{return JSON.stringify(e??{},null,2)}catch{return`{}`}}function qn(e){return e?e.split(`.`).map(e=>{let t=Number(e);return Number.isInteger(t)&&String(t)===e?t:e}):[]}function Jn({value:e,onChange:t,readOnly:n,issues:r,height:i=`60vh`,fallbackDelayMs:a=4e3}){let o=Mt(),[s,c]=J.useState(()=>Kn(e)),[l,u]=J.useState(null),d=J.useRef(s),f=J.useRef(null),p=J.useRef(null),[m,h]=dt(a),[g,_]=J.useState(()=>typeof document>`u`?`light`:document.documentElement.classList.contains(`dark`)?`vs-dark`:`light`);J.useEffect(()=>{if(typeof document>`u`)return;let e=document.documentElement,t=new MutationObserver(()=>_(e.classList.contains(`dark`)?`vs-dark`:`light`));return t.observe(e,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let v=J.useCallback(()=>{let e=f.current,t=p.current;if(!e||!t)return;let n=e.getModel();if(!n)return;if(!r||r.length===0){t.editor.setModelMarkers(n,`objectui-diagnostics`,[]);return}let i;try{i=$(s)}catch{i=void 0}let a=r.map(e=>{let r=qn(e.path),a=1,o=1,s=1,c=2,l=i?Un(i,r):void 0;if(l){let e=n.getPositionAt(l.offset),t=n.getPositionAt(l.offset+l.length);a=e.lineNumber,o=e.column,s=t.lineNumber,c=t.column}return{severity:e.severity===`warning`?t.MarkerSeverity.Warning:t.MarkerSeverity.Error,message:e.path?`${e.path}: ${e.message}`:e.message,startLineNumber:a,startColumn:o,endLineNumber:s,endColumn:c,source:`metadata`}});t.editor.setModelMarkers(n,`objectui-diagnostics`,a)},[r,s]);J.useEffect(()=>{v()},[v]),J.useEffect(()=>{let t=Kn(e);t!==d.current&&(c(t),d.current=t,u(null))},[e]);let y=e=>{let n=e??``;c(n);try{let e=JSON.parse(n);e&&typeof e==`object`&&!Array.isArray(e)?(u(null),d.current=n,t(e)):u(q(`engine.form.rootJsonObject`,o))}catch(e){u(e?.message??q(`engine.form.invalidJson`,o))}};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsx)(`div`,{ref:h,"data-testid":`source-editor`,className:`border rounded overflow-hidden bg-background`,style:{height:typeof i==`number`?`${i}px`:i},children:m?(0,Y.jsx)(`textarea`,{value:s,onChange:e=>y(e.target.value),readOnly:n,spellCheck:!1,"aria-label":`JSON source`,className:`w-full h-full resize-none bg-background p-3 font-mono text-xs leading-relaxed outline-none`}):(0,Y.jsx)(J.Suspense,{fallback:(0,Y.jsx)(E,{className:`w-full h-full`}),children:(0,Y.jsx)(Gn,{value:s,language:`json`,theme:g,onChange:y,onMount:(e,t)=>{f.current=e,p.current=t,setTimeout(v,0)},options:{readOnly:n,minimap:{enabled:!1},fontSize:12,lineNumbers:`on`,scrollBeyondLastLine:!1,automaticLayout:!0,folding:!0,wordWrap:`on`,tabSize:2,renderLineHighlight:`line`,scrollbar:{verticalScrollbarSize:10,horizontalScrollbarSize:10}}})})}),l&&(0,Y.jsxs)(`div`,{className:`text-xs text-destructive flex items-start gap-1.5`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,children:`⚠`}),(0,Y.jsx)(`span`,{children:l})]})]})}function Yn(e){return!!e&&typeof e==`object`&&`viewKind`in e}function Xn(e,t){return{safeParse:n=>(Yn(n)?e:t).safeParse(n)}}var Zn={wireItem:0,container:1};function Qn(e){return Yn(e)?Zn.wireItem:Zn.container}var $n={ofStrings:0,ofObjects:1};function er(e){return e.some(e=>e.code===`invalid_type`&&(e.path??[]).length===0)}function tr(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function nr(e,t){if(e.length!==2||!Array.isArray(t)||t.length===0||e.some(er))return null;let n=t[0];return typeof n==`string`?$n.ofStrings:typeof n==`object`&&n&&!Array.isArray(n)?$n.ofObjects:null}function rr(e){let t=null;for(let n=0;n<e.length;n++)if(!er(e[n])){if(t!==null)return null;t=n}return t}function ir(e,t){let n=nr(e,t);return n===null?rr(e):n}function ar(e,t,n){if(e.code!==`invalid_union`)return null;let r=e.errors;if(!Array.isArray(r))return null;let i=t.length===0?Qn(n):ir(r,tr(n,t));if(i===null)return null;let a=r[i];return!Array.isArray(a)||a.length===0?null:a}function or(e,t,n){return e.flatMap(e=>{let r=[...t,...e.path??[]],i=ar(e,r,n);return i?or(i,r,n):[{...e,path:r}]})}var sr=new Set([`sharing_rule`]),cr={object:async()=>(await r(async()=>{let{ObjectSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>(e.vn(),e.fn));return{ObjectSchema:e}},[],import.meta.url)).ObjectSchema,hook:async()=>(await r(async()=>{let{HookSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>(e.vn(),e.fn));return{HookSchema:e}},[],import.meta.url)).HookSchema,mapping:async()=>(await r(async()=>{let{MappingSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>(e.vn(),e.fn));return{MappingSchema:e}},[],import.meta.url)).MappingSchema,analytics_cube:async()=>(await r(async()=>{let{CubeSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>(e.vn(),e.fn));return{CubeSchema:e}},[],import.meta.url)).CubeSchema,view:async e=>{let{ViewItemSchema:t,ViewSchema:n,ViewMetadataSchema:i}=await r(async()=>{let{ViewItemSchema:e,ViewSchema:t,ViewMetadataSchema:n}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Hi);return{ViewItemSchema:e,ViewSchema:t,ViewMetadataSchema:n}},[],import.meta.url);return e===`edit`?i:Xn(t,n)},page:async()=>(await r(async()=>{let{PageSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Hi);return{PageSchema:e}},[],import.meta.url)).PageSchema,app:async()=>(await r(async()=>{let{AppSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Hi);return{AppSchema:e}},[],import.meta.url)).AppSchema,dashboard:async()=>(await r(async()=>{let{DashboardSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Hi);return{DashboardSchema:e}},[],import.meta.url)).DashboardSchema,report:async()=>(await r(async()=>{let{ReportSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Hi);return{ReportSchema:e}},[],import.meta.url)).ReportSchema,action:async()=>(await r(async()=>{let{ActionSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Hi);return{ActionSchema:e}},[],import.meta.url)).ActionSchema,flow:async()=>(await r(async()=>{let{FlowSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.x);return{FlowSchema:e}},[],import.meta.url)).FlowSchema,webhook:async()=>(await r(async()=>{let{WebhookSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.x);return{WebhookSchema:e}},[],import.meta.url)).WebhookSchema,agent:async()=>(await r(async()=>{let{AgentSchema:e}=await import(`./ai-DPBykF2N.js`);return{AgentSchema:e}},[],import.meta.url)).AgentSchema,tool:async()=>(await r(async()=>{let{ToolSchema:e}=await import(`./ai-DPBykF2N.js`);return{ToolSchema:e}},[],import.meta.url)).ToolSchema,skill:async()=>(await r(async()=>{let{SkillSchema:e}=await import(`./ai-DPBykF2N.js`);return{SkillSchema:e}},[],import.meta.url)).SkillSchema,email_template:async()=>(await r(async()=>{let{EmailTemplateDefinitionSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Y);return{EmailTemplateDefinitionSchema:e}},[],import.meta.url)).EmailTemplateDefinitionSchema,job:async()=>(await r(async()=>{let{JobSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Y);return{JobSchema:e}},[],import.meta.url)).JobSchema,translation:async()=>(await r(async()=>{let{TranslationItemSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.Y);return{TranslationItemSchema:e}},[],import.meta.url)).TranslationItemSchema,permission:async()=>(await r(async()=>{let{PermissionSetSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.kt);return{PermissionSetSchema:e}},[],import.meta.url)).PermissionSetSchema,sharing_rule:async()=>(await r(async()=>{let{SharingRuleSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.kt);return{SharingRuleSchema:e}},[],import.meta.url)).SharingRuleSchema,position:async()=>(await r(async()=>{let{PositionSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>e.n);return{PositionSchema:e}},[],import.meta.url)).PositionSchema,api:async()=>(await r(async()=>{let{ApiEndpointSchema:e}=await import(`./vendor-objectstack-DFqu45yM.js`).then(e=>(e.wt(),e.Ct));return{ApiEndpointSchema:e}},[],import.meta.url)).ApiEndpointSchema,connector:async()=>(await r(async()=>{let{DeclarativeConnectorEntrySchema:e}=await import(`./integration-CeAF4JFT.js`);return{DeclarativeConnectorEntrySchema:e}},[],import.meta.url)).DeclarativeConnectorEntrySchema},lr=[`visibleWhen`,`readonlyWhen`,`requiredWhen`];function ur(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`&&typeof e.source==`string`){let t=e.dialect;if(t===void 0||t===`cel`)return e.source}return null}async function dr(e){let t=e,n=wt(t?.fields);if(n.entries.length===0)return[];let r=typeof t?.name==`string`?t.name:void 0,i=n.entries.map(e=>e.name),a=[];for(let e=0;e<n.entries.length;e++){let t=n.entries[e],o=n.shape===`array`?String(e):t.name;for(let e of lr){let n=ur(t.def[e]);if(n==null||!n.trim())continue;let s=await St(n,{objectName:r,fields:i,scope:`record`,slot:e});for(let t of s)t.severity===`error`&&a.push({path:`fields.${o}.${e}`,message:t.message})}if(t.def.type===`formula`){let e=ur(t.def.expression);if(e==null||!e.trim())continue;let n=await St(e,{objectName:r,fields:i.filter(e=>e!==t.name),scope:`record`,role:`value`});for(let e of n)e.severity===`error`&&a.push({path:`fields.${o}.expression`,message:e.message})}}return a}var fr=[`condition`,`when`],pr=[`then`,`otherwise`],mr=8;async function hr(e){let t=e,n=t?.validations;if(!Array.isArray(n))return[];let r=typeof t?.name==`string`?t.name:void 0,i=wt(t?.fields).entries.map(e=>e.name),a=[],o=async(e,t,n)=>{if(!e||typeof e!=`object`||Array.isArray(e)||n>mr)return;let s=e;for(let e of fr){let n=ur(s[e]);if(n==null||!n.trim())continue;let o=await St(n,{objectName:r,fields:i,scope:`record`});for(let n of o)n.severity===`error`&&a.push({path:`${t}.${e}`,message:n.message})}for(let e of pr)await o(s[e],`${t}.${e}`,n+1)};for(let e=0;e<n.length;e++)await o(n[e],`validations.${e}`,0);return a}var gr=`formula`;function _r(e){return`Field \`${e}\` carries the retired \`${gr}\` key. To migrate: select the field in the object designer and make one edit in its Formula (CEL) editor — that commits the value to \`expression\`, clears the retired key, and the object saves again.`}function vr(e,t){return e.map(e=>{if(e.code!==`unrecognized_keys`)return e;let n=e.path??[];if(n.length!==2||n[0]!==`fields`||typeof n[1]!=`string`||!e.keys?.includes(gr))return e;let r=tr(t,n);return!r||r.type!==`formula`?e:{...e,message:`${e.message} ${_r(n[1])}`}})}var yr=new Map;async function br(e,t){let n=`${t}:${e}`;if(yr.has(n))return yr.get(n)??null;let r=cr[e];if(!r||t===`edit`&&sr.has(e))return yr.set(n,null),null;try{let e=await r(t),i=e&&typeof e.safeParse==`function`?e:null;return yr.set(n,i),i}catch{return yr.set(n,null),null}}function xr(e,t=`create`){return e in cr&&!(t===`edit`&&sr.has(e))}async function Sr(e,t,n,r){let i=await br(e,r?.mode??`create`);if(!i)return{ok:!0,issues:[]};let a=e===`object`?[...await dr(t),...await hr(t)]:[],o=i.safeParse(t);if(o.success)return a.length>0?{ok:!1,issues:a}:{ok:!0,issues:[]};let s=o.error?.issues??[],c=Array.isArray(n?.required)?new Set(n.required.map(e=>String(e))):void 0;if(c&&t&&typeof t==`object`&&!Array.isArray(t)){let e=t;s=s.filter(t=>{let n=t.path??[];if(n.length!==1)return!0;let r=String(n[0]);return e[r]!==void 0&&e[r]!==null||!!c.has(r)})}return s.length===0&&a.length===0?{ok:!0,issues:[]}:{ok:!1,issues:[...(e===`view`?or(s,[],t):e===`object`?vr(s,t):s).map(e=>({path:(e.path??[]).map(e=>String(e)).join(`.`),message:e.message})),...a]}}function Cr(e,t,n){let r=t.split(`.`);if(r.length<=1)return e;let i=[e],a=Tr(n)?.[r[0]];for(let e=1;e<r.length;e++){let t=r[e];if(/^\d+$/.test(t)){let e=Number(t),n=Array.isArray(a)?a[e]:void 0;i.push(wr(n)??`#${e+1}`),a=n}else i.push(t),a=Tr(a)?.[t]}return i.join(` → `)}function wr(e){let t=Tr(e);if(t)for(let e of[`id`,`name`,`key`,`title`,`label`]){let n=t[e];if(typeof n==`string`&&n.trim())return n;let r=Tr(n);if(r){let e=r.defaultValue??r.key;if(typeof e==`string`&&e.trim())return e}}}function Tr(e){return e&&typeof e==`object`?e:void 0}function Er(e){let t=e.split(`.`).filter(Boolean);return t.length<=1?``:t.slice(0,-1).join(`.`)}function Dr(e,t){let n=e;if(t!==``)for(let e of t.split(`.`)){if(Array.isArray(n)&&/^\d+$/.test(e))n=n[Number(e)];else if(n&&typeof n==`object`)n=n[e];else return;if(n===void 0)return}if(n!==void 0)try{return JSON.stringify(n)??void 0}catch{return}}function Or(e,t,n){return e.createBuildBody?e.createBuildBody(t):{...n??e.createDefaults??{},...t}}var kr={"no-overlay":`engine.edit.lockNoOverlay`,"no-delete":`engine.edit.lockNoDelete`,full:`engine.edit.lockFull`};function Ar(e,t){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(kr,e)?q(kr[e],t):K(`engine.edit.lockUnknown`,t,{state:String(e)})}var jr=new Set([`object`,`report`,`dataset`,`doc`]),Mr={object:[`fields`,`fieldGroups`],doc:[`content`,`translations`,`group`]};function Nr(){try{let e=new URLSearchParams(window.location.search).get(`package`);return e&&e!==`all`?e:void 0}catch{return}}function Pr(e){return e.loadFailed?!1:e.hasDiag||e.hasClientValidator}function Fr(e,t){let n=new Set;return(e||[]).filter(e=>e?.object===t).map(e=>({name:e?.name,label:e?.label||void 0})).filter(e=>!!e.name&&!n.has(e.name)&&n.add(e.name))}function Ir({type:e,name:t,createMode:n=!1,embedded:r=!1}){let i=a(),o=e??i.type??``,s=t??i.name??``,c=ct(o);if(c?.EditPage&&!n){let e=c.EditPage;return(0,Y.jsx)(e,{type:o,name:s})}if(c?.CreatePage&&n){let e=c.CreatePage;return(0,Y.jsx)(e,{type:o})}return(0,Y.jsx)(Lr,{type:o,name:s,createMode:n,embedded:r})}function Lr({type:e,name:t,createMode:r,embedded:a}){let o=n(),[s,c]=i(),l=s.get(`package`)??void 0,u=tt(),{entries:d,loading:m}=rt(u),h=d.find(t=>t.type===e),_=lt(e,h),b=(r&&_.createSchema?_.createSchema:h?.schema)??_.defaultSchema,x=Mt(),S=r?`create`:`edit`,[E,k]=J.useState(null),te=_.identityField??`name`,[A,re]=J.useState(()=>r?{..._.createDefaults??{},[te]:``}:{}),[j,N]=J.useState({status:`idle`}),[ae,F]=J.useState(!r),[I,oe]=J.useState(!1),[R,z]=J.useState(null),[ue,de]=J.useState(!1),[B,V]=J.useState([]),[pe,me]=J.useState(!1),he=J.useCallback(e=>{re(t=>{let n=typeof e==`function`?e(t):e,r=new Set,i=new Set([...Object.keys(t??{}),...Object.keys(n??{})]);for(let e of i)Object.is(t?.[e],n?.[e])||r.add(e);return r.size>0&&(me(!0),V(e=>e.filter(e=>{let t=(e.path??``).split(`.`)[0];return!r.has(t)}))),n})},[]),[ge,_e]=J.useState(null),[ve,xe]=J.useState(null),we=J.useCallback(e=>{he(t=>({...t,...e}))},[he]),{markTouched:Ae}=nt({rules:_.createDerive,draft:A,onPatch:we,enabled:!!r}),U=J.useMemo(()=>{if(!r)return;if(_.createFields&&_.createFields.length>0)return _.createFields;let e=b?.properties??void 0,t=b?.required??void 0;return it(e,t)},[r,_.createFields,b]),Pe=J.useMemo(()=>{let t=Mr[e]??[];if(!r||!U)return t.length===0?_.hiddenFields:Array.from(new Set([..._.hiddenFields??[],...t]));let n=b?.properties??{},i=new Set(U),a=Object.keys(n).filter(e=>!i.has(e));if(_.hiddenFields)for(let e of _.hiddenFields)a.includes(e)||a.push(e);for(let e of t)a.includes(e)||a.push(e);return a},[r,U,b,_.hiddenFields,e]),Re=J.useMemo(()=>r&&U?U:_.fieldOrder,[r,U,_.fieldOrder]),Be=J.useCallback(e=>{if(r){let t=A,n=typeof e==`function`?e(t):e,r=new Set([...Object.keys(t??{}),...Object.keys(n??{})]);for(let e of r)Object.is(t?.[e],n?.[e])||Ae(e)}he(e)},[r,A,he,Ae]);J.useEffect(()=>{if(!xr(e,S))return;let t=!1,n=window.setTimeout(()=>{Sr(e,A,h?.schema,{mode:S}).then(e=>{t||V(e.issues)})},200);return()=>{t=!0,window.clearTimeout(n)}},[e,A,h?.schema,S]);let Ve=J.useMemo(()=>r&&!pe?[]:B,[r,pe,B]),Ue=J.useMemo(()=>{let t=E?._diagnostics,n=xr(e,S)?Ve.map(e=>({path:e.path,message:Nt(e.message,x)})):(t?.errors??[]).map(e=>({path:e.path,message:Nt(e.message,x)})),r=(t?.warnings??[]).map(e=>({path:e.path,message:Nt(e.message,x)}));return[...n.map(e=>({path:e.path||void 0,message:e.message,severity:`error`})),...r.map(e=>({path:e.path||void 0,message:e.message,severity:`warning`}))]},[E,Ve,e,x,S]),[Ge,Ke]=J.useState(!1),[Ye,$e]=J.useState(!1),[et,ot]=J.useState(0),[G,st]=J.useState(!!r),[ct,ut]=J.useState(null);J.useEffect(()=>{ut(null)},[e,t]);let[dt,ht]=J.useState({key:``,count:0}),yt=ct?`${e}:${t}:${ct.kind}:${ct.id}`:`${e}:${t}:default`,xt=dt.key===yt?dt.count:0,[St,Ct]=J.useState(null),Tt=J.useCallback(e=>{try{return _.fromDraft?_.fromDraft(e):e}catch{return e}},[_]),jt=J.useMemo(()=>{if(!St)return 0;let e=Tt(A);return St.held.filter(t=>Dr(e,t.slicePath)===t.fingerprint).length},[St,A,Tt]);J.useEffect(()=>{Ct(null)},[e,t]),J.useEffect(()=>{G||ut(null)},[G]);let Pt=J.useRef(null),[Ft,It]=J.useState(null),[Lt,Rt]=J.useState(()=>{if(typeof window>`u`)return!0;try{let e=window.localStorage.getItem(`metadata-admin:autosave`);return e===null||e===`1`}catch{return!0}});J.useEffect(()=>{try{window.localStorage.setItem(`metadata-admin:autosave`,Lt?`1`:`0`)}catch{}},[Lt]);let zt=J.useRef(null),Bt=Dt(J.useCallback(async()=>(await u.list(`object`)).map(e=>e?.name).filter(e=>!!e).sort(),[u])),Vt=A?.interfaceConfig?.source||A?.data?.object||A?.object||A?.objectName,Ht=Dt(J.useMemo(()=>Vt?async()=>{let e=await u.get(`object`,Vt),t=e?.fields,n=Array.isArray(t)?t.map(e=>({name:e?.name,label:e?.label,type:e?.type})):t&&typeof t==`object`?Object.entries(t).map(([e,t])=>({name:e,label:t?.label,type:t?.type})):[],r=e?.actions,i=Array.isArray(r)?r.map(e=>({name:e?.name,label:e?.label,locations:e?.locations})).filter(e=>!!e.name):[];return{fields:n.filter(e=>!!e.name),actions:i}}:null,[u,Vt])),Ut=Dt(J.useMemo(()=>Vt?async()=>Fr(await u.list(`view`),Vt):null,[u,Vt])),Wt=J.useMemo(()=>e===`page`?Et(A):[],[e,A]),Gt=J.useMemo(()=>({conditionScope:_n(e),conditionSubjects:bn(e),conditionRoots:xn(e),objectNames:Bt,objectFields:kt(Ht,e=>e.fields),objectActions:kt(Ht,e=>e.actions),objectViews:Ut,componentIds:Wt}),[e,Bt,Ht,Ut,Wt]);J.useEffect(()=>{if(r){F(!1);return}let n=!1;return F(!0),z(null),de(!1),(async()=>{try{let r=l?{packageId:l}:{},[i,a]=await Promise.all([u.layered(e,t,r),u.getDraft(e,t,r).catch(()=>null)]);if(n)return;k(i);let o=i?._diagnostics;o&&o.valid===!1&&Array.isArray(o.errors)?V(o.errors.map(e=>({path:e.path||``,message:e.message}))):V([]);let s=le(a),c=i.effective??i.code??{},d=s??c,f=_.toDraft?_.toDraft(d):d;re(f),Pt.current=f,Ke(!!s),F(!1)}catch(r){n||(de(!0),z(K(`engine.edit.loadFailed`,x,{type:e,name:t??``,message:r?.message??String(r)})),F(!1))}})(),()=>{n=!0}},[u,e,t,l,r,et,x]);async function Kt(){if(j.status!==`loading`&&j.status!==`loaded`){N({status:`loading`});try{let n=await u.references(e,t);N({status:`loaded`,items:n})}catch(e){N({status:`error`,message:String(e?.message??e)})}}}let[qt,Yt]=J.useState(null),Xt=J.useMemo(()=>!r&&!a&>(e).length>0,[e,r,a]),Zt=J.useRef(null),[Qt,X]=J.useState(null),$t=s.get(`review`),en=J.useRef(!1);J.useEffect(()=>{if(!($t!==`1`||r)){if(!en.current){en.current=!0,ot(e=>e+1);return}if(!ae){Ge&&X(`review`);let e=new URLSearchParams(s);e.delete(`review`),c(e,{replace:!0}),en.current=!1}}},[$t,r,ae,Ge]);let[tn,nn]=J.useState(`properties`);J.useEffect(()=>{if(Qt===`references`&&Kt(),typeof window<`u`&&!a){let e=new URL(window.location.href);Qt?e.searchParams.set(`tab`,Qt):e.searchParams.delete(`tab`),window.history.replaceState({},``,e.toString())}},[Qt,a]);let rn=`metadata-edit:inspector-collapsed`,sn=`metadata-edit:inspector-size`,[cn,ln]=J.useState(()=>typeof window>`u`?!1:window.localStorage.getItem(rn)===`1`),un=J.useRef(38);J.useEffect(()=>{if(typeof window>`u`)return;let e=Number(window.localStorage.getItem(sn));Number.isFinite(e)&&e>=22&&e<=80&&(un.current=e)},[]);let dn=J.useRef(null),fn=J.useCallback(()=>{ln(e=>{let t=!e;return typeof window<`u`&&window.localStorage.setItem(rn,t?`1`:`0`),t})},[]);J.useEffect(()=>{let e=dn.current;if(e){if(cn)e.resize?.(`0%`);else{let t=un.current||38;e.resize?.(`${t}%`)}}},[cn]);let[pn,gn]=J.useState(!1),[vn,yn]=J.useState(!1);J.useEffect(()=>{if(typeof document>`u`||!vn)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[vn]),J.useEffect(()=>{if(typeof window>`u`||!vn)return;function e(e){e.key===`Escape`&&(e.preventDefault(),yn(!1))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[vn]);let Cn=!r&&E?.code!=null&&E.code?._packageId!==`sys_metadata`&&E?.provenance!==`org`,wn=E?.resettable,Tn=!r&&(wn??Cn),En=J.useRef(null);J.useEffect(()=>{En.current=null},[e,t]),J.useEffect(()=>{if(r||a||ae)return;let n=`${e}/${t??``}`;En.current!==n&&pt(e)&&(Cn?h?.allowOrgOverride:h?.allowOrgOverride||h?.allowRuntimeCreate)&&(En.current=n,st(!0))},[e,t,r,a,ae,h,Cn]),J.useEffect(()=>{if(typeof window>`u`||a)return;function e(e){if(!(e.metaKey||e.ctrlKey)||e.shiftKey||e.altKey||e.key!==`\\`)return;let t=e.target;(!t||t.tagName!==`TEXTAREA`&&!t.isContentEditable)&&(e.preventDefault(),fn())}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a,fn]),J.useEffect(()=>{if(typeof window>`u`||a)return;let e=new URLSearchParams(window.location.search),t=e.get(`tab`);(t===`layers`||t===`references`||t===`related`||t===`audit`)&&X(t),Zt.current=t;let n=e.get(`open`);if(n&&n.includes(`:`)){let[e,t]=n.split(`:`,2);e&&t&&Yt({kind:`metadata`,type:e,name:t})}},[]),J.useEffect(()=>{if(typeof window>`u`||a)return;let e=new URL(window.location.href);qt?.kind===`metadata`?e.searchParams.set(`open`,`${qt.type}:${qt.name}`):e.searchParams.delete(`open`),window.history.replaceState({},``,e.toString())},[qt,a]);function Dn(e){let t=e.split(`.`)[0];return t?Cr((()=>{let e=r&&_.createSchema?void 0:h?.form,n=Array.isArray(e?.sections)?e.sections:[];for(let e of n){let n=Array.isArray(e?.fields)?e.fields:[];for(let e of n)if(typeof e==`string`){if(e===t)return e}else if(e?.field===t)return String(e.label??t)}let i=b?.properties??{};return String(i[t]?.title??t)})(),e,A):e}async function kn(n){oe(!0),z(null),V([]);try{let i=h?.createSeed,a=r?Or(_,A,i):_.fromDraft?_.fromDraft(A):A;if(r&&_.createSeed)try{let e=await _.createSeed(A,{client:u});e&&typeof e==`object`&&(a={...a,...e})}catch{}let c=String(a[te]??A[te]??t),d=r?{...a,[te]:c}:a;if(!c){z(q(`engine.validation.nameRequired`,x)),oe(!1);return}let f=Nr();await u.save(e,c,d,{force:n,mode:`draft`,...f?{packageId:f}:{}});let p=l?{packageId:l}:{},[m,g]=await Promise.all([u.layered(e,c,p),u.getDraft(e,c,p).catch(()=>null)]);k(m);let v=le(g);Ke(!!v);let y=m.effective??d,b=v??y,S=_.toDraft?_.toDraft(b):b;re(S),Pt.current=S,It(new Date),zt.current=JSON.stringify(S),_e(null),xe(null),Ct(null);let C=!r&&!!pt(e);if(!r&&!C&&st(!1),r){let e=s.toString();o(`../${encodeURIComponent(c)}${e?`?${e}`:``}`,{relative:`path`})}}catch(e){if(e?.status===409&&se(e,`DESTRUCTIVE_CHANGE`)){let t=e?.body?.issues??[];_e(Array.isArray(t)?t:[]),xe(A)}else if(se(e,`WRITABLE_PACKAGE_REQUIRED`))z(q(`engine.package.writableRequired`,x));else if(e?.status===422||ce(e,[`INVALID_METADATA`,`INVALID_PAYLOAD`])){let t=e?.body?.issues??[],n=(Array.isArray(t)?t:[]).map(e=>({path:Array.isArray(e.path)?e.path.join(`.`):String(e.path??``),message:Nt(String(e.message??`Invalid`),x)})),r=String(e?.body?.error??e?.message??``);if(n.length===0&&r){let e=r.match(/failed spec validation:\s*(.+?):\s*(.+)$/);n=e?[{path:e[1].trim(),message:Nt(e[2].trim(),x)}]:[{path:``,message:Nt(r,x)}]}V(n);let i=Tt(A),a=[],o=new Set;for(let e of n){let t=Er(e.path);if(o.has(t))continue;let n=Dr(i,t);n!==void 0&&(o.add(t),a.push({slicePath:t,fingerprint:n,label:Dn(e.path)}))}Ct({held:a,summary:a.map(e=>e.label).join(`, `)}),n.length===1&&!n[0].path?z(n[0].message):n.length===1?z(`${Dn(n[0].path)}: ${n[0].message}`):z(K(`engine.validation.failed`,x,{count:n.length}))}else z(e?.message??String(e))}finally{oe(!1)}}async function An(){if(confirm(K(Tn?`engine.edit.resetConfirm`:`engine.edit.deleteConfirm`,x,{type:e,name:t??``}))){oe(!0),z(null);try{if(await u.reset(e,t),Tn){let n=await u.layered(e,t);k(n);let r=n.effective??n.code??{};re(r),Pt.current=r,pt(e)?En.current=null:st(!1)}else o(`../`,{relative:`path`})}catch(e){z(e?.message??String(e))}finally{oe(!1)}}}async function Mn(){$e(!0),z(null);try{let n=Nr();await u.publish(e,t,{...n?{packageId:n}:{}});let[r,i]=await Promise.all([u.layered(e,t),u.getDraft(e,t).catch(()=>null)]);k(r);let a=le(i);Ke(!!a);let o=r.effective??A,s=a??o,c=_.toDraft?_.toDraft(s):s;re(c),Pt.current=c}catch(e){z(e?.message??String(e))}finally{$e(!1)}}async function Nn(){if(confirm(K(`engine.edit.discardDraftConfirm`,x,{type:e,name:t??``}))){oe(!0),z(null);try{await u.reset(e,t,{state:`draft`});let n=await u.layered(e,t);k(n);let r=n.effective??n.code??{};re(r),Pt.current=r,Ke(!1)}catch(e){z(e?.message??String(e))}finally{oe(!1)}}}let Z=J.useMemo(()=>{if(r)return Object.keys(A).length>0;let e=Pt.current;if(!e)return!1;try{return JSON.stringify(A)!==JSON.stringify(e)}catch{return!1}},[A,r]),Pn=E?.editable!==!1,Fn=E?.deletable!==!1,In=E?.lockReason,Ln=E?.lock&&E.lock!==`none`,Q=(r?!!(h?.allowOrgOverride||h?.allowRuntimeCreate):Cn?!!h?.allowOrgOverride:!!(h?.allowOrgOverride||h?.allowRuntimeCreate))&&(r||Pn),Rn=!Q&&!r;bt({enabled:e===`app`,scope:t,draft:A,loaded:!ae,readOnly:m?void 0:Rn,selection:ct,onApply:(e,{enterEditing:t})=>{t&&st(!0),ut({kind:`nav`,id:e.selectionId,label:e.label})}});let zn=J.useRef(kn);J.useEffect(()=>{zn.current=kn}),J.useEffect(()=>{if(!Lt||r||Rn||!G||!Z||I||xt>0||jt>0)return;let e;try{e=JSON.stringify(A)}catch{return}if(e===zt.current)return;let t=window.setTimeout(()=>{zt.current=e,zn.current(!1)},1500);return()=>window.clearTimeout(t)},[A,Z,G,I,r,Rn,Lt,xt,jt]),J.useEffect(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`s`){if(!Q||Rn||!G&&!r)return;e.preventDefault(),!I&&(r||Z)&&xt===0&&jt===0&&zn.current(!1)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[Q,Rn,G,r,I,Z,xt,jt]),J.useEffect(()=>{if(!Z)return;let e=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[Z]),J.useEffect(()=>{if(!Z)return;let e=e=>{if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let t=e.target?.closest?.(`a[href]`);if(t&&!(t.target&&t.target!==`_self`)&&!t.hasAttribute(`download`)){try{let e=new URL(t.href,window.location.href);if(e.origin!==window.location.origin||e.pathname===window.location.pathname)return}catch{return}confirm(q(`engine.edit.unsavedLeaveConfirm`,x))||(e.preventDefault(),e.stopPropagation())}};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)},[Z,x]);let Bn=J.useMemo(()=>{if(a)return null;let n=String(A.name??t??``);if(!n)return null;let r={type:e,name:n,label:typeof A.label==`string`?A.label:void 0};return e===`object`&&(r.fields=wt(A.fields).entries.slice(0,60).map(e=>({name:e.name,type:typeof e.def.type==`string`?e.def.type:void 0,label:typeof e.def.label==`string`?e.def.label:void 0,required:!!e.def.required||void 0}))),r},[a,e,t,A]);if(at(Bn),ae)return(0,Y.jsx)(_t,{entry:h,itemName:t,children:(0,Y.jsxs)(`div`,{className:`p-6 text-sm text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-4 w-4 animate-spin`}),` Loading `,e,`/`,t,`…`]})});let Vn=Rn&&Cn&&!!h?.allowRuntimeCreate,Hn=jr.has(e),$=!a&&(!r||Hn)?pt(e):void 0,Un=a?Ot:void 0,Wn=ft(e),Gn=mt(e);function Kn(){Pt.current&&re(Pt.current),V([]),z(null),Ct(null),st(!1)}let qn=Rn||!G&&!r,Yn=(0,Y.jsxs)(Y.Fragment,{children:[!r&&(0,Y.jsx)(Jt,{entry:h,location:`record_header`,recordId:t,onAfter:()=>ot(e=>e+1)}),(!r||Xt)&&(0,Y.jsxs)(`div`,{className:`flex items-center rounded-md border bg-background p-0.5`,children:[!r&&(0,Y.jsxs)(L,{variant:`ghost`,size:`sm`,onClick:()=>X(`layers`),title:q(`engine.edit.layers`,x),className:`h-7 w-7 p-0 relative`,children:[(0,Y.jsx)(Ce,{className:`h-3.5 w-3.5`}),E?.overlay&&(()=>{let e=an(E.code,E.effective);return e>0?(0,Y.jsx)(`span`,{className:`absolute -top-1 -right-1 min-w-[14px] h-[14px] px-1 rounded-full bg-emerald-600 text-emerald-50 text-[9px] leading-[14px] text-center font-medium`,title:q(`engine.layers.diff`,x),children:e}):null})()]}),!r&&Ge&&(0,Y.jsxs)(L,{variant:`ghost`,size:`sm`,onClick:()=>X(`review`),title:q(`designer.draftReview.title`,x),className:`h-7 w-7 p-0 relative`,"data-testid":`resource-review-trigger`,children:[(0,Y.jsx)(Se,{className:`h-3.5 w-3.5`}),(()=>{let e=mn(E?.effective??null,A);return e>0?(0,Y.jsx)(`span`,{className:`absolute -top-1 -right-1 min-w-[14px] h-[14px] px-1 rounded-full bg-amber-500 text-amber-50 text-[9px] leading-[14px] text-center font-medium`,title:K(`designer.draftReview.badge`,x,{n:e}),children:e}):null})()]}),!r&&(0,Y.jsxs)(L,{variant:`ghost`,size:`sm`,onClick:()=>X(`references`),title:q(`engine.edit.references`,x),className:`h-7 w-7 p-0 relative`,children:[(0,Y.jsx)(Te,{className:`h-3.5 w-3.5`}),j.status===`loaded`&&j.items.length>0&&(0,Y.jsx)(`span`,{className:`absolute -top-1 -right-1 min-w-[14px] h-[14px] px-1 rounded-full bg-muted text-foreground text-[9px] leading-[14px] text-center font-medium border`,children:j.items.length})]}),Xt&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:()=>X(`related`),title:q(`engine.edit.related`,x),className:`h-7 w-7 p-0`,children:(0,Y.jsx)(fe,{className:`h-3.5 w-3.5`})}),!r&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:()=>X(`history`),title:q(`engine.edit.history`,x),className:`h-7 w-7 p-0`,children:(0,Y.jsx)(Fe,{className:`h-3.5 w-3.5`})}),!r&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:()=>X(`audit`),title:q(`engine.edit.auditTab`,x),className:`h-7 w-7 p-0`,children:(0,Y.jsx)(He,{className:`h-3.5 w-3.5`})})]}),!r&&Q&&E?.overlay&&Fn&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:An,disabled:I,"data-testid":`reset-or-delete-button`,title:q(Tn?`engine.edit.reset`:`engine.edit.delete`,x),className:`h-7 w-7 p-0 text-muted-foreground hover:text-destructive`,children:Tn?(0,Y.jsx)(Ie,{className:`h-3.5 w-3.5`,"data-testid":`reset-icon`}):(0,Y.jsx)(qe,{className:`h-3.5 w-3.5`,"data-testid":`delete-icon`})}),Q&&!r&&!G&&!$&&(0,Y.jsxs)(L,{size:`sm`,onClick:()=>st(!0),className:`h-7`,children:[(0,Y.jsx)(Ne,{className:`h-3.5 w-3.5 mr-1`}),q(`engine.edit.edit`,x)]}),Q&&(G||r)&&(0,Y.jsx)(zr,{saving:I,isDirty:Z,autoSaveEnabled:Lt,lastSavedAt:Ft,createMode:!!r,locale:x}),Q&&(G||r)&&!r&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:()=>Rt(e=>!e),className:`h-7 w-7 p-0 text-muted-foreground`,title:q(Lt?`engine.edit.autoSaveOn`:`engine.edit.autoSaveOff`,x),children:Lt?(0,Y.jsx)(Qe,{className:`h-3.5 w-3.5 text-emerald-600`}):(0,Y.jsx)(Ze,{className:`h-3.5 w-3.5`})}),Q&&!r&&G&&!$&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:Kn,disabled:I,className:`h-7 w-7 p-0`,title:q(`engine.cancel`,x),children:(0,Y.jsx)(Xe,{className:`h-3.5 w-3.5`})}),Q&&(G||r)&&(0,Y.jsxs)(L,{size:`sm`,onClick:()=>kn(!1),disabled:I||!r&&!Z||xt>0||jt>0,className:`h-7 w-7 p-0 relative`,title:I?q(`engine.edit.saving`,x):xt>0?q(`perm.inspector.saveBlocked`,x):jt>0?K(`engine.validation.serverRefused`,x,{issue:St?.summary??``}):!r&&!Z?q(`engine.edit.noChanges`,x):`${q(`engine.edit.save`,x)} (⌘S)`,children:[I?(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(Le,{className:`h-3.5 w-3.5`}),Z&&!I&&(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`absolute -top-0.5 -right-0.5 inline-block h-2 w-2 rounded-full bg-amber-300 ring-2 ring-background`})]}),Q&&!r&&Ge&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:Nn,disabled:I||Ye,className:`h-7 w-7 p-0 text-muted-foreground`,title:q(`engine.edit.discardDraft`,x),children:(0,Y.jsx)(Je,{className:`h-3.5 w-3.5`})}),Q&&!r&&Ge&&(0,Y.jsx)(L,{size:`sm`,onClick:Mn,disabled:I||Ye||Z,className:`h-7 px-2 relative bg-emerald-600 hover:bg-emerald-700 text-emerald-50`,title:q(Z?`engine.edit.publishBlockedDirty`:`engine.edit.publish`,x),children:Ye?(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(ze,{className:`h-3.5 w-3.5 mr-1`}),(0,Y.jsx)(`span`,{className:`text-xs`,children:q(`engine.edit.publish`,x)})]})})]});return(0,Y.jsxs)(_t,{entry:h??{type:e,label:e},itemName:r?`(new)`:t,subtitle:r?q(`engine.edit.createNew`,x):void 0,actions:$?null:Yn,children:[(0,Y.jsxs)(`div`,{className:$?`flex h-full min-h-0 flex-col`:`p-6 space-y-6 max-w-7xl`,children:[(R||Rn||Ge||Ln)&&(0,Y.jsxs)(`div`,{className:$?`px-6 pt-4 space-y-3`:`space-y-3`,children:[R&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:R}),Ln&&(0,Y.jsxs)(`div`,{className:`text-xs text-amber-900 border border-amber-300/70 bg-amber-50/70 rounded-md px-3 py-2.5 dark:text-amber-200 dark:border-amber-700/40 dark:bg-amber-950/20 flex items-start gap-2.5`,children:[(0,Y.jsx)(Ee,{className:`h-3.5 w-3.5 mt-0.5 shrink-0 opacity-80`}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,"data-testid":`lock-banner-title`,children:Ar(E?.lock,x)}),In&&(0,Y.jsx)(`div`,{className:`mt-0.5 opacity-90`,children:In}),E?.lockDocsUrl&&(0,Y.jsxs)(`a`,{href:E.lockDocsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`mt-1 inline-flex items-center gap-1 text-amber-800 underline hover:text-amber-900 dark:text-amber-200 dark:hover:text-amber-100`,children:[x===`zh-CN`?`查看文档`:`View docs`,` →`]}),E?.packageId&&(0,Y.jsx)(`div`,{className:`mt-0.5 text-amber-700 dark:text-amber-300/80`,children:(0,Y.jsxs)(`code`,{className:`font-mono`,children:[E.packageId,E.packageVersion?`@${E.packageVersion}`:``]})})]}),Vn&&(0,Y.jsx)(L,{size:`sm`,variant:`outline`,className:`shrink-0 h-7 bg-background/60`,onClick:()=>o(`../new`,{relative:`path`}),children:q(`engine.list.create`,x)})]}),Ge&&!r&&(0,Y.jsxs)(`div`,{className:`text-xs text-emerald-900 border border-emerald-300 bg-emerald-50 rounded p-3 dark:text-emerald-200 dark:border-emerald-700/50 dark:bg-emerald-950/30 flex items-center gap-3`,children:[(0,Y.jsx)(ze,{className:`h-3.5 w-3.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`flex-1`,children:q(`engine.edit.draftPending`,x)}),Q&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(L,{size:`sm`,variant:`ghost`,onClick:Nn,disabled:I||Ye,className:`h-7`,children:q(`engine.edit.discardDraft`,x)}),(0,Y.jsx)(L,{size:`sm`,onClick:Mn,disabled:I||Ye||Z,className:`h-7 bg-emerald-600 hover:bg-emerald-700 text-emerald-50`,children:Ye?(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}):q(`engine.edit.publish`,x)})]})]}),Rn&&!Ln&&(0,Y.jsxs)(`div`,{"data-testid":`readonly-banner`,className:`text-xs text-amber-800 border border-amber-300/70 bg-amber-50/70 rounded-md px-3 py-2.5 dark:text-amber-200 dark:border-amber-700/40 dark:bg-amber-950/20 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex-1`,children:Vn?q(`engine.edit.artifactLockedBanner`,x).split(/(\{type\})/).map((t,n)=>t===`{type}`?(0,Y.jsx)(`code`,{className:`font-mono`,children:e},n):(0,Y.jsx)(J.Fragment,{children:t},n)):q(`engine.edit.readOnlyTypeBanner`,x).split(/(\{flag\}|\{type\}|\{override\})/).map((t,n)=>t===`{flag}`?(0,Y.jsx)(`code`,{className:`font-mono`,children:`OBJECTSTACK_METADATA_WRITABLE`},n):t===`{type}`?(0,Y.jsx)(`code`,{className:`font-mono`,children:e},n):t===`{override}`?(0,Y.jsx)(`code`,{className:`font-mono`,children:`allowOrgOverride`},n):(0,Y.jsx)(J.Fragment,{children:t},n))}),Vn&&(0,Y.jsx)(L,{size:`sm`,variant:`outline`,className:`shrink-0`,onClick:()=>o(`../new`,{relative:`path`}),children:q(`engine.list.create`,x)})]})]}),(0,Y.jsx)(`div`,{className:$?`flex w-full flex-1 min-h-0 flex-col`:`w-full`,children:(0,Y.jsxs)(`div`,{className:$?`mt-2 flex-1 min-h-0 flex flex-col px-6 pb-4`:`mt-4 space-y-3`,children:[!$&&qn&&!Rn&&Q&&!r&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-muted-foreground border rounded p-2.5 bg-muted/30`,children:[(0,Y.jsx)(`span`,{children:q(`engine.edit.readOnlyBanner`,x).split(/\{edit\}/).map((e,t,n)=>(0,Y.jsxs)(J.Fragment,{children:[e,t<n.length-1&&(0,Y.jsx)(`strong`,{children:q(`engine.edit.edit`,x)})]},t))}),(0,Y.jsxs)(L,{size:`sm`,variant:`outline`,onClick:()=>st(!0),children:[(0,Y.jsx)(Ne,{className:`h-3.5 w-3.5 mr-1`}),q(`engine.edit.edit`,x)]})]}),(()=>{let t=E?._diagnostics,n=xr(e,S)?B.map(e=>({path:e.path,message:Nt(e.message,x)})):(t?.errors??[]).map(e=>({...e,message:Nt(e.message,x)})),i=xr(e,S)?n.length===0:t?.valid!==!1;if(r&&!pe||!Pr({loadFailed:ue,hasDiag:!!t,hasClientValidator:xr(e,S)}))return null;let a=n,o=t?.warnings??[],s=!i&&a.length>0,c=o.length>0;if(!s&&!c)return null;let l=(e,t)=>{let n=t.slice(0,3),r=Math.max(0,t.length-n.length),i=e===`error`?`border-destructive/40 bg-destructive/[0.06] text-destructive`:`border-amber-500/40 bg-amber-500/[0.08] text-amber-800 dark:text-amber-200`,a=e===`error`?`engine.edit.diagnostics.title`:`engine.edit.diagnostics.warnTitle`;return(0,Y.jsxs)(`div`,{"data-testid":e===`error`?`metadata-validation-banner`:void 0,className:`flex items-start gap-2 text-xs border rounded p-2.5 ${i}`,children:[(0,Y.jsx)(W,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:K(a,x,{count:t.length})}),(0,Y.jsxs)(`ul`,{className:`mt-1 space-y-0.5 font-mono text-[11px]`,children:[n.map((e,t)=>(0,Y.jsxs)(`li`,{className:`truncate`,children:[(0,Y.jsx)(`span`,{className:`opacity-70`,children:e.path?Dn(e.path):`(root)`}),`: `,e.message]},t)),r>0&&(0,Y.jsx)(`li`,{className:`opacity-70`,children:K(`engine.edit.diagnostics.more`,x,{count:r})})]})]})]},e)};return(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[s&&l(`error`,a),c&&l(`warning`,o)]})})(),$?(0,Y.jsx)(`div`,{className:vn?`fixed inset-0 z-50 bg-background flex flex-col p-3`:`relative flex-1 min-h-0 flex`,children:(0,Y.jsxs)(y,{orientation:`horizontal`,className:`flex-1 min-h-0 rounded-md border bg-background overflow-hidden`,id:`metadata-edit-${e}`,children:[(0,Y.jsx)(ne,{defaultSize:62,minSize:30,children:(0,Y.jsxs)(`div`,{className:`relative h-full flex flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b bg-background/95 backdrop-blur px-3 py-2 sticky top-0 z-10`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-1`,children:Q&&(0,Y.jsxs)(`div`,{role:`tablist`,"aria-label":q(`engine.edit.designer`,x),className:`inline-flex items-center rounded-md border bg-muted/40 p-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":!pn,onClick:()=>gn(!1),className:`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors `+(pn?`text-muted-foreground hover:text-foreground`:`bg-background shadow-sm text-foreground`),title:q(`engine.edit.designMode`,x),children:[(0,Y.jsx)(ke,{className:`h-3.5 w-3.5`}),q(`engine.edit.designMode`,x)]}),(0,Y.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":pn,onClick:()=>gn(!0),className:`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors `+(pn?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`),title:q(`engine.edit.previewMode`,x),children:[(0,Y.jsx)(ye,{className:`h-3.5 w-3.5`}),q(`engine.edit.previewMode`,x)]})]})}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[Yn,(0,Y.jsx)(`span`,{className:`mx-1 h-5 w-px bg-border`,"aria-hidden":!0}),$&&(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:fn,className:`h-7 w-7 p-0`,title:q(cn?`engine.edit.showInspector`:`engine.edit.hideInspector`,x)+` (⌘\\)`,children:cn?(0,Y.jsx)(Me,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(je,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(L,{variant:`ghost`,size:`sm`,onClick:()=>yn(e=>!e),className:`h-7 w-7 p-0`,title:q(vn?`engine.edit.exitFullscreen`:`engine.edit.fullscreen`,x),children:vn?(0,Y.jsx)(Oe,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(De,{className:`h-3.5 w-3.5`})})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4 bg-[radial-gradient(circle_at_1px_1px,theme(colors.border)_1px,transparent_0)] [background-size:16px_16px] bg-muted/30`,children:(0,Y.jsx)($,{type:e,name:t,draft:A,baseline:r?void 0:E?.effective??void 0,editing:G&&!pn,selection:pn?null:ct,onSelectionChange:ut,locale:x,diagnostics:Ue,onPatch:e=>he(t=>({...t,...e}))})})]})}),(0,Y.jsx)(g,{withHandle:!0,className:cn?`hidden`:`w-1.5 bg-border/40 hover:bg-primary/40 active:bg-primary/60 transition-colors`}),(0,Y.jsx)(ne,{panelRef:dn,defaultSize:un.current,minSize:22,collapsible:!0,collapsedSize:0,onResize:e=>{let t=e.asPercentage,n=t<=.5;n||(un.current=t,typeof window<`u`&&window.localStorage.setItem(sn,String(Math.round(t)))),ln(e=>e===n?e:(typeof window<`u`&&window.localStorage.setItem(rn,n?`1`:`0`),n))},children:(0,Y.jsxs)(`div`,{className:`h-full overflow-auto`,children:[(0,Y.jsxs)(`div`,{className:`sticky top-0 z-10 flex items-center gap-2 border-b bg-background/95 backdrop-blur px-3 py-2`,children:[(0,Y.jsxs)(`div`,{role:`tablist`,className:`inline-flex items-center rounded-md border bg-muted/40 p-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":tn===`properties`,onClick:()=>nn(`properties`),className:`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors `+(tn===`properties`?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`),title:q(`engine.edit.inspector.properties`,x),children:[(0,Y.jsx)(We,{className:`h-3.5 w-3.5`}),q(`engine.edit.inspector.properties`,x)]}),(0,Y.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":tn===`source`,onClick:()=>nn(`source`),className:`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors `+(tn===`source`?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`),title:q(`engine.edit.inspector.source`,x),children:[(0,Y.jsx)(be,{className:`h-3.5 w-3.5`}),q(`engine.edit.inspector.source`,x)]})]}),Z&&(0,Y.jsxs)(P,{variant:`outline`,className:`text-[10px] border-amber-400/60 text-amber-600 dark:text-amber-300`,children:[(0,Y.jsx)(`span`,{className:`mr-1 inline-block h-1.5 w-1.5 rounded-full bg-amber-400`}),q(`engine.edit.unsaved`,x)]})]}),(0,Y.jsx)(`div`,{className:`p-4`,children:tn===`source`?(0,Y.jsx)(Jn,{value:A,onChange:he,readOnly:qn,issues:Ve.map(e=>({path:e.path??``,message:e.message}))}):ct&&Wn?(0,Y.jsx)(Wn,{type:e,name:t,draft:A,selection:ct,onPatch:e=>he(t=>({...t,...e})),onClearSelection:()=>ut(null),onSelectionChange:ut,onBlockingIssuesChange:e=>ht({key:yt,count:e}),readOnly:qn,locale:x}):!ct&&Gn?(0,Y.jsx)(Gn,{type:e,name:t,draft:A,onPatch:e=>he(t=>({...t,...e})),onSelectionChange:ut,onBlockingIssuesChange:e=>ht({key:yt,count:e}),readOnly:qn,locale:x,serverSchema:h?.schema}):(0,Y.jsx)(At,{schema:b,idPath:Un,form:r&&_.createSchema?void 0:h?.form,value:A,onChange:Be,issues:Ve,hiddenFields:Pe,fieldOrder:Re,readOnly:qn,createMode:r,widgetContext:Gt})})]})})]})}):(0,Y.jsx)(At,{schema:b,idPath:Un,form:r&&_.createSchema?void 0:h?.form,value:A,onChange:Be,issues:Ve,hiddenFields:Pe,fieldOrder:Re,readOnly:qn,createMode:r,widgetContext:Gt})]})})]}),(0,Y.jsx)(f,{open:Qt===`layers`,onOpenChange:e=>!e&&X(null),children:(0,Y.jsxs)(M,{side:`right`,className:`w-[92vw] sm:max-w-[720px] p-0 flex flex-col gap-0`,children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b`,children:[(0,Y.jsx)(D,{className:`text-base`,children:q(`engine.edit.layers`,x)}),(0,Y.jsxs)(C,{className:`text-xs`,children:[e,` / `,t]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4`,children:(0,Y.jsx)(on,{layered:E,locale:x})})]})}),(0,Y.jsx)(f,{open:Qt===`review`,onOpenChange:e=>!e&&X(null),children:(0,Y.jsxs)(M,{side:`right`,className:`w-[92vw] sm:max-w-[720px] p-0 flex flex-col gap-0`,children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b`,children:[(0,Y.jsx)(D,{className:`text-base`,children:q(`designer.draftReview.title`,x)}),(0,Y.jsxs)(C,{className:`text-xs`,children:[e,` / `,t,` · `,q(`designer.canvas.reviewVsPublished`,x)]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4`,children:(0,Y.jsx)(hn,{published:E?.effective??null,draft:A,locale:x})})]})}),(0,Y.jsx)(f,{open:Qt===`references`,onOpenChange:e=>!e&&X(null),children:(0,Y.jsxs)(M,{side:`right`,className:`w-[92vw] sm:max-w-[720px] p-0 flex flex-col gap-0`,children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b`,children:[(0,Y.jsxs)(D,{className:`text-base`,children:[q(`engine.edit.references`,x),j.status===`loaded`&&(0,Y.jsx)(P,{variant:`outline`,className:`ml-2 text-[10px]`,"data-testid":`refs-count-badge`,children:j.items.length})]}),(0,Y.jsxs)(C,{className:`text-xs`,children:[e,` / `,t]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4`,children:(0,Y.jsx)(Rr,{state:j,locale:x,onRetry:()=>void Kt()})})]})}),Xt&&(0,Y.jsx)(f,{open:Qt===`related`,onOpenChange:e=>!e&&X(null),children:(0,Y.jsxs)(M,{side:`right`,className:`w-[92vw] sm:max-w-[860px] p-0 flex flex-col gap-0`,children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b`,children:[(0,Y.jsx)(D,{className:`text-base`,children:q(`engine.edit.related`,x)}),(0,Y.jsxs)(C,{className:`text-xs`,children:[e,` / `,t]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4`,children:(0,Y.jsx)(Sn,{type:e,name:t,parentItem:A,onOpen:e=>Yt(e)})})]})}),!r&&(0,Y.jsx)(f,{open:Qt===`history`,onOpenChange:e=>!e&&X(null),children:(0,Y.jsxs)(M,{side:`right`,className:`w-[92vw] sm:max-w-[720px] p-0 flex flex-col gap-0`,children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b`,children:[(0,Y.jsx)(D,{className:`text-base`,children:q(`engine.edit.history`,x)}),(0,Y.jsxs)(C,{className:`text-xs`,children:[e,` / `,t]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4`,children:(0,Y.jsx)(vt,{type:e,name:t,client:u,locale:x,onRollback:()=>ot(e=>e+1),rollbackLabel:q(`engine.edit.rollback`,x),rollbackConfirm:e=>q(`engine.edit.rollbackConfirm`,x).replace(`{version}`,String(e))})})]})}),!r&&(0,Y.jsx)(f,{open:Qt===`audit`,onOpenChange:e=>!e&&X(null),children:(0,Y.jsxs)(M,{side:`right`,className:`w-[92vw] sm:max-w-[860px] p-0 flex flex-col gap-0`,children:[(0,Y.jsxs)(w,{className:`px-4 py-3 border-b`,children:[(0,Y.jsx)(D,{className:`text-base`,children:q(`engine.edit.auditTab`,x)}),(0,Y.jsxs)(C,{className:`text-xs`,children:[e,` / `,t]})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden p-3`,children:(0,Y.jsx)(jn,{type:e,name:t,client:u,locale:x})})]})}),(0,Y.jsx)(On,{target:qt,onClose:()=>Yt(null),parentContext:{type:e,name:t}}),(0,Y.jsx)(p,{open:ge!=null,onOpenChange:e=>{e||(_e(null),xe(null))},children:(0,Y.jsxs)(ie,{children:[(0,Y.jsxs)(O,{children:[(0,Y.jsxs)(v,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(W,{className:`h-5 w-5 text-amber-600`}),q(`engine.edit.destructiveTitle`,x)]}),(0,Y.jsx)(ee,{children:q(`engine.edit.destructiveDesc`,x)})]}),(0,Y.jsx)(`div`,{className:`max-h-[300px] overflow-auto space-y-2 my-2`,children:ge?.map((e,t)=>(0,Y.jsxs)(`div`,{className:`rounded border bg-amber-50 border-amber-200 p-2 text-xs`,children:[(0,Y.jsx)(`div`,{className:`font-mono text-amber-900`,children:e.kind??`change`}),e.path&&(0,Y.jsx)(`div`,{className:`text-amber-800 font-mono mt-0.5`,children:e.path}),(0,Y.jsx)(`div`,{className:`text-amber-900 mt-1`,children:e.message})]},t))}),(0,Y.jsxs)(T,{children:[(0,Y.jsx)(L,{variant:`ghost`,onClick:()=>_e(null),children:q(`engine.cancel`,x)}),(0,Y.jsx)(L,{variant:`destructive`,onClick:()=>kn(!0),disabled:I,children:q(I?`engine.edit.forcing`:`engine.edit.forceSave`,x)})]})]})})]})}function Rr({state:e,locale:t,onRetry:n}){if(e.status===`error`)return(0,Y.jsxs)(A,{"data-testid":`refs-error`,children:[(0,Y.jsxs)(N,{className:`flex items-center justify-center gap-2`,children:[(0,Y.jsx)(W,{className:`h-4 w-4 text-amber-600`}),q(`engine.edit.refsErrorTitle`,t)]}),(0,Y.jsx)(_,{children:q(`engine.edit.refsErrorDesc`,t)}),e.message?(0,Y.jsx)(`p`,{"data-testid":`refs-error-cause`,className:`mt-2 max-w-full break-words font-mono text-xs text-muted-foreground`,children:e.message}):null,(0,Y.jsx)(L,{variant:`outline`,size:`sm`,className:`mt-3`,"data-testid":`refs-retry`,onClick:n,children:q(`engine.edit.refsRetry`,t)})]});if(e.status!==`loaded`)return(0,Y.jsxs)(`div`,{"data-testid":`refs-scanning`,className:`text-sm text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-4 w-4 animate-spin`}),` `,q(`engine.edit.refsScanning`,t)]});let r=e.items;return r.length===0?(0,Y.jsxs)(A,{"data-testid":`refs-empty`,children:[(0,Y.jsx)(N,{children:q(`engine.edit.refsEmptyTitle`,t)}),(0,Y.jsx)(_,{children:q(`engine.edit.refsEmptyDesc`,t)})]}):(0,Y.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:(0,Y.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Y.jsx)(`thead`,{className:`bg-muted/40 text-xs uppercase tracking-wider text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left`,children:`From type`}),(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left`,children:`From name`}),(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left`,children:`Path`})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:r.map((e,t)=>(0,Y.jsxs)(`tr`,{className:`hover:bg-accent/50`,children:[(0,Y.jsx)(`td`,{className:`px-3 py-2`,children:(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] font-mono`,children:e.fromType})}),(0,Y.jsx)(`td`,{className:`px-3 py-2 font-mono text-xs`,children:e.fromName}),(0,Y.jsx)(`td`,{className:`px-3 py-2 font-mono text-xs text-muted-foreground`,children:e.path})]},t))})]})})}function zr({saving:e,isDirty:t,autoSaveEnabled:n,lastSavedAt:r,createMode:i,locale:a}){let[,o]=J.useReducer(e=>e+1,0);if(J.useEffect(()=>{if(!r)return;let e=window.setInterval(o,3e4);return()=>window.clearInterval(e)},[r]),e)return(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground hidden md:inline-flex items-center gap-1`,children:[(0,Y.jsx)(H,{className:`h-3 w-3 animate-spin`}),q(`engine.edit.saving`,a)]});if(t)return i?null:(0,Y.jsxs)(`span`,{className:`text-xs text-amber-600 dark:text-amber-300 hidden md:inline-flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 rounded-full bg-amber-400`}),q(n?`engine.edit.autoSavingShortly`:`engine.edit.unsaved`,a)]});if(r){let e=String(r.getHours()).padStart(2,`0`),t=String(r.getMinutes()).padStart(2,`0`);return(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground hidden md:inline-flex items-center gap-1`,children:K(`engine.edit.savedAt`,a,{time:`${e}:${t}`})})}return null}function Br({type:e}){let t=c(),[n]=i(),r=e??n.get(`type`)??``;if(!r)return(0,Y.jsx)(`div`,{className:`p-8 h-full flex items-center justify-center`,children:(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:`Missing metadata type`}),(0,Y.jsxs)(_,{children:[`This page expects a `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`?type=`}),` query param (e.g. `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`?type=view`}),`) or a nav-metadata `,(0,Y.jsxs)(`code`,{className:`font-mono`,children:[`params: `,`{ type: 'view' }`]}),`.`]})]})});let a=Vr(t.pathname),o=a.split(`/`).filter(Boolean);return o.length===0?(0,Y.jsx)(Xt,{type:r}):o[0]===`new`&&o.length===1?(0,Y.jsx)(Ir,{type:r,name:``,createMode:!0},`${r}:__new__`):o.length===2&&o[1]===`history`?(0,Y.jsx)(ut,{type:r,name:decodeURIComponent(o[0])}):o.length===1?(0,Y.jsx)(Ir,{type:r,name:decodeURIComponent(o[0])},`${r}:${o[0]}`):(0,Y.jsx)(`div`,{className:`p-8 h-full flex items-center justify-center`,children:(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:`Unknown sub-path`}),(0,Y.jsxs)(_,{children:[`The path `,(0,Y.jsx)(`code`,{className:`font-mono`,children:a}),` isn't recognized. Valid forms are `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`/`}),` (list),`,` `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`/new`}),` (create),`,` `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`/:name`}),` (edit),`,` `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`/:name/history`}),`.`]})]})})}function Vr(e){let t=e.indexOf(`/metadata/resource`);return t===-1?``:e.slice(t+18)}function Hr(){let e=tt(),t=Mt(),[n,r]=J.useState(`error`),{loading:i,error:a,summary:s,reload:c}=$e(e,n),{entries:l}=rt(e),u=J.useMemo(()=>{let e={};for(let n of l)e[n.type]=It(n.type,t,n.label);return e},[l,t]),d=J.useMemo(()=>{let e={};for(let t of s.entries)(e[t.type]??=[]).push(t);return Object.entries(e).sort(([,e],[,t])=>t.length-e.length)},[s]);return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[(0,Y.jsx)(`nav`,{className:`text-xs text-muted-foreground mb-2`,children:(0,Y.jsxs)(o,{to:`..`,className:`hover:text-foreground inline-flex items-center gap-1`,children:[(0,Y.jsx)(de,{className:`h-3 w-3`}),q(`engine.diagnostics.back`,t)]})}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,Y.jsxs)(`h1`,{className:`text-xl font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(W,{className:`h-5 w-5 text-destructive`}),q(`engine.diagnostics.title`,t)]}),(0,Y.jsx)(P,{variant:`outline`,className:`text-[11px] border-destructive/40 text-destructive bg-destructive/[0.06]`,children:K(`engine.diagnostics.summary`,t,{count:s.total,items:s.scannedItems,types:s.scannedTypes})}),(0,Y.jsx)(`div`,{className:`flex-1`}),(0,Y.jsx)(`div`,{role:`tablist`,className:`inline-flex items-center rounded-md border bg-muted/40 p-0.5 text-xs`,children:[`error`,`warning`].map(e=>(0,Y.jsx)(`button`,{role:`tab`,type:`button`,"aria-selected":n===e,onClick:()=>r(e),className:`px-2.5 py-1 rounded transition-colors `+(n===e?`bg-background shadow-sm text-foreground`:`text-muted-foreground hover:text-foreground`),children:q(`engine.diagnostics.severity.${e}`,t)},e))}),(0,Y.jsxs)(L,{variant:`ghost`,size:`sm`,onClick:c,children:[(0,Y.jsx)(Pe,{className:`h-3.5 w-3.5 mr-1`}),q(`engine.diagnostics.refresh`,t)]})]}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-2 max-w-3xl`,children:q(`engine.diagnostics.description`,t)})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto p-6 space-y-6`,children:[i&&(0,Y.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:q(`engine.diagnostics.loading`,t)}),!i&&a&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/[0.06]`,children:K(`engine.diagnostics.loadFailed`,t,{error:a})}),!i&&!a&&d.length===0&&(0,Y.jsxs)(A,{children:[(0,Y.jsx)(N,{children:q(`engine.diagnostics.cleanTitle`,t)}),(0,Y.jsx)(_,{children:K(`engine.diagnostics.cleanHint`,t,{items:s.scannedItems,types:s.scannedTypes})})]}),d.map(([e,r])=>(0,Y.jsxs)(`section`,{className:`space-y-2`,children:[(0,Y.jsxs)(`h2`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(o,{to:`../${encodeURIComponent(e)}`,className:`hover:text-foreground hover:underline`,children:u[e]??e}),(0,Y.jsx)(`span`,{className:`font-mono normal-case tracking-normal text-[10px] opacity-70`,children:e}),(0,Y.jsx)(P,{variant:`outline`,className:`text-[10px] border-destructive/40 text-destructive bg-destructive/[0.06]`,children:r.length})]}),(0,Y.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:(0,Y.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Y.jsx)(`thead`,{className:`bg-muted/40 text-xs uppercase tracking-wider text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left font-medium w-[28%]`,children:q(`engine.diagnostics.col.name`,t)}),(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left font-medium`,children:q(`engine.diagnostics.col.issues`,t)})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:r.map(r=>{let i=r.diagnostics.errors??[],a=r.diagnostics.warnings??[],s=(n===`warning`&&i.length===0?a:i).slice(0,3),c=Math.max(0,(i.length||a.length)-s.length);return(0,Y.jsxs)(`tr`,{className:`hover:bg-accent/50 align-top`,children:[(0,Y.jsxs)(`td`,{className:`px-3 py-2 align-top`,children:[(0,Y.jsx)(o,{to:`../${encodeURIComponent(e)}/${encodeURIComponent(r.name)}`,className:`text-primary hover:underline font-mono`,children:r.name}),i.length>0&&(0,Y.jsx)(P,{variant:`outline`,className:`ml-2 text-[10px] border-destructive/40 text-destructive`,children:K(`engine.diagnostics.errorN`,t,{count:i.length})}),a.length>0&&(0,Y.jsx)(P,{variant:`outline`,className:`ml-2 text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300`,children:K(`engine.diagnostics.warnN`,t,{count:a.length})})]}),(0,Y.jsx)(`td`,{className:`px-3 py-2 align-top`,children:(0,Y.jsxs)(`ul`,{className:`space-y-0.5 font-mono text-[11px]`,children:[s.map((e,t)=>(0,Y.jsxs)(`li`,{className:`truncate`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:e.path||`(root)`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`: `}),e.message]},t)),c>0&&(0,Y.jsx)(`li`,{className:`text-muted-foreground`,children:K(`engine.diagnostics.more`,t,{count:c})})]})})]},r.name)})})]})})]},e))]})]})}var Ur=new Set([`field`,`package`]),Wr={data:_e,ui:Ce,automation:Ye,ai:Ge,system:Be,platform:Be,identity:He,security:He},Gr={data:{from:`from-sky-500`,to:`to-blue-600`,ring:`hover:ring-sky-400/40`,text:`text-sky-600 dark:text-sky-400`},ui:{from:`from-violet-500`,to:`to-fuchsia-600`,ring:`hover:ring-violet-400/40`,text:`text-violet-600 dark:text-violet-400`},automation:{from:`from-amber-500`,to:`to-orange-600`,ring:`hover:ring-amber-400/40`,text:`text-amber-600 dark:text-amber-400`},ai:{from:`from-pink-500`,to:`to-rose-600`,ring:`hover:ring-pink-400/40`,text:`text-pink-600 dark:text-pink-400`},identity:{from:`from-emerald-500`,to:`to-teal-600`,ring:`hover:ring-emerald-400/40`,text:`text-emerald-600 dark:text-emerald-400`},security:{from:`from-emerald-500`,to:`to-teal-600`,ring:`hover:ring-emerald-400/40`,text:`text-emerald-600 dark:text-emerald-400`},system:{from:`from-slate-500`,to:`to-slate-700`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`},platform:{from:`from-slate-500`,to:`to-slate-700`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`},other:{from:`from-slate-400`,to:`to-slate-600`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`}},Kr=[`data`,`ui`,`automation`,`ai`,`identity`,`security`,`system`,`platform`,`other`],qr=[`object`,`view`,`page`,`dashboard`,`report`,`flow`,`action`,`agent`],Jr={object:Ke,dashboard:we,page:xe,report:pe,record:V,metadata:Ce};function Yr(){let e=new Date().getHours();return e<12?`engine.home.greetingMorning`:e<18?`engine.home.greetingAfternoon`:`engine.home.greetingEvening`}function Xr(e,t){let n=new Date(e).getTime();if(Number.isNaN(n))return``;let r=Math.floor((Date.now()-n)/6e4),i=new Intl.RelativeTimeFormat(t,{numeric:`auto`});if(r<1)return i.format(0,`minute`);if(r<60)return i.format(-r,`minute`);let a=Math.floor(r/60);if(a<24)return i.format(-a,`hour`);let o=Math.floor(a/24);return o<7?i.format(-o,`day`):i.format(-Math.floor(o/7),`week`)}function Zr(){let e=tt(),{loading:t,entries:n}=rt(e),{recentItems:r}=G(),a=Mt(),s=z(),[c,l]=i(),[u,d]=J.useState(null);J.useEffect(()=>{let t=!1;return(async()=>{try{let n=await e.list(`package`);if(t)return;d(zt(n))}catch{t||d([])}})(),()=>{t=!0}},[e]);let f=c.get(`package`),p=J.useMemo(()=>u?f&&u.some(e=>e.id===f)?f:u[0]?.id??null:null,[u,f]);J.useEffect(()=>{if(!u||u.length===0||f&&u.some(e=>e.id===f))return;let e=new URLSearchParams(c);e.set(`package`,u[0].id),l(e,{replace:!0})},[u,f]);let m=p?`?package=${encodeURIComponent(p)}`:``,h=`metadata${m}`,g=`component/developer/packages${m}`,{summary:_,countsByType:v,packagesByType:y,loading:b}=$e(e,`warning`,p??void 0),x=J.useMemo(()=>n.filter(e=>Ur.has(e.type)||!p?!1:(y[e.type]??[]).includes(p)),[p,n,y]),S=J.useMemo(()=>x.filter(e=>e.allowOrgOverride||e.allowRuntimeCreate),[x]),C=J.useMemo(()=>{let e={};for(let t of x)(e[t.domain??`other`]??=[]).push(t);for(let t of Object.values(e))t.sort((e,t)=>(v[t.type]??0)-(v[e.type]??0));return Object.entries(e).sort(([e],[t])=>(Kr.indexOf(e)===-1?99:Kr.indexOf(e))-(Kr.indexOf(t)===-1?99:Kr.indexOf(t)))},[x,v]),ee=J.useMemo(()=>{let e=new Map(S.map(e=>[e.type,e]));return qr.map(t=>e.get(t)).filter(Boolean)},[S]),w=_.total,T=!t&&!b&&w===0;return t||u===null||p&&b?(0,Y.jsx)(`div`,{className:`flex h-full items-center justify-center p-8 text-sm text-muted-foreground`,children:q(`engine.home.loading`,a)}):(0,Y.jsxs)(`div`,{className:`h-full overflow-auto bg-gradient-to-b from-muted/40 to-background`,children:[(0,Y.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-6 py-6 space-y-6`,children:[(0,Y.jsxs)(`section`,{className:`relative overflow-hidden rounded-3xl bg-gradient-to-br from-indigo-600 via-violet-600 to-fuchsia-600 px-7 py-8 text-white shadow-xl shadow-violet-500/20`,children:[(0,Y.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-20 h-64 w-64 rounded-full bg-white/15 blur-3xl`}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute -bottom-24 left-1/3 h-56 w-56 rounded-full bg-fuchsia-300/20 blur-3xl`}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 opacity-[0.12]`,style:{backgroundImage:`radial-gradient(currentColor 1px, transparent 1px)`,backgroundSize:`18px 18px`}}),(0,Y.jsxs)(`div`,{className:`relative flex flex-col gap-6 lg:flex-row lg:items-end lg:justify-between`,children:[(0,Y.jsxs)(`div`,{className:`max-w-xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-white/80`,children:[(0,Y.jsx)(Ge,{className:`h-4 w-4`}),q(Yr(),a)]}),(0,Y.jsx)(`h1`,{className:`mt-2 text-3xl font-bold tracking-tight sm:text-4xl`,children:`Studio`}),(0,Y.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-white/85 sm:text-base`,children:q(`engine.home.subtitle`,a)}),(0,Y.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center gap-2.5`,children:[(0,Y.jsx)(L,{asChild:!0,size:`sm`,variant:`ghost`,className:`bg-white/10 text-white shadow-sm ring-1 ring-white/25 hover:bg-white/20 hover:text-white`,children:(0,Y.jsxs)(o,{to:h,children:[(0,Y.jsx)(Ce,{className:`mr-1.5 h-4 w-4`}),q(`engine.home.browseAll`,a)]})}),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full bg-white/15 px-3 py-1.5 text-xs font-medium text-white/90 backdrop-blur-sm`,children:[(0,Y.jsx)(Re,{className:`h-3.5 w-3.5`}),q(`engine.directory.quickFind`,a),` ⌘⇧M`]})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,Y.jsx)(Qr,{value:x.length,label:q(`engine.home.statTypes`,a)}),(0,Y.jsx)(Qr,{value:S.length,label:q(`engine.home.statWritable`,a)}),(0,Y.jsx)(Qr,{value:u.length,label:q(`engine.home.statPackages`,a)})]})]})]}),(0,Y.jsxs)(`section`,{className:`grid grid-cols-2 gap-4 lg:grid-cols-4`,children:[(0,Y.jsx)($r,{icon:Ce,from:`from-indigo-500`,to:`to-violet-600`,value:x.length,label:q(`engine.home.statTypes`,a),to_link:h}),(0,Y.jsx)($r,{icon:he,from:`from-sky-500`,to:`to-blue-600`,value:S.length,label:q(`engine.home.statWritable`,a),to_link:h}),(0,Y.jsx)($r,{icon:Ae,from:`from-emerald-500`,to:`to-teal-600`,value:u.length,label:q(`engine.home.statPackages`,a),to_link:g}),(0,Y.jsxs)(o,{to:T?h:`metadata/_diagnostics${m}`,className:`group relative flex flex-col justify-between overflow-hidden rounded-2xl border p-4 transition-all hover:-translate-y-0.5 hover:shadow-lg `+(T?`border-emerald-200 bg-emerald-50/60 dark:border-emerald-900/50 dark:bg-emerald-950/30`:`border-amber-300 bg-amber-50/70 dark:border-amber-900/50 dark:bg-amber-950/30`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br text-white shadow-sm `+(T?`from-emerald-500 to-teal-600`:`from-amber-500 to-orange-600`),children:T?(0,Y.jsx)(he,{className:`h-5 w-5`}):(0,Y.jsx)(W,{className:`h-5 w-5`})}),(0,Y.jsx)(B,{className:`h-4 w-4 text-muted-foreground transition-transform group-hover:translate-x-0.5`})]}),(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums`,children:T?q(`engine.home.allHealthy`,a):w}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:q(T?`engine.home.allHealthyHint`:`engine.home.statIssues`,a)})]})]})]}),ee.length>0&&(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(ei,{icon:U,title:q(`engine.home.quickActions`,a),hint:q(`engine.home.quickActionsHint`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2.5`,children:ee.map(e=>(0,Y.jsx)(L,{asChild:!0,variant:`outline`,size:`sm`,className:`group rounded-full border-transparent bg-muted hover:bg-primary/10 hover:text-primary`,children:(0,Y.jsxs)(o,{to:`metadata/${encodeURIComponent(e.type)}/new${m}`,children:[(0,Y.jsx)(U,{className:`mr-1 h-3.5 w-3.5 text-primary transition-transform group-hover:rotate-90`}),K(`engine.home.newItem`,a,{label:It(e.type,a,e.label)})]})},e.type))})]}),(0,Y.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-3`,children:[(0,Y.jsxs)(`section`,{className:`lg:col-span-2`,children:[(0,Y.jsx)(ei,{icon:Ce,title:q(`engine.home.explore`,a),hint:q(`engine.home.exploreHint`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 grid gap-4 sm:grid-cols-2`,children:C.map(([e,t])=>(0,Y.jsx)(ti,{domain:e,group:t,countsByType:v,locale:a,packageSuffix:m},e))})]}),(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(ei,{icon:ge,title:q(`engine.home.recent`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 rounded-2xl border bg-card p-2`,children:r.length===0?(0,Y.jsx)(`div`,{className:`px-3 py-8 text-center text-xs text-muted-foreground`,children:q(`engine.home.recentEmpty`,a)}):(0,Y.jsx)(`ul`,{className:`space-y-0.5`,children:r.slice(0,8).map(e=>{let t=Jr[e.type]??V;return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(o,{to:e.href,className:`group flex items-center gap-3 rounded-xl px-3 py-2 transition-colors hover:bg-accent`,children:[(0,Y.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground transition-colors group-hover:bg-primary/10 group-hover:text-primary`,children:(0,Y.jsx)(t,{className:`h-4 w-4`})}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:e.label}),(0,Y.jsx)(`span`,{className:`block text-[11px] text-muted-foreground`,children:Xr(e.visitedAt,s)})]}),(0,Y.jsx)(B,{className:`h-3.5 w-3.5 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100`})]})},e.id)})})})]})]})]}),(0,Y.jsx)(Lt,{})]})}function Qr({value:e,label:t}){return(0,Y.jsxs)(`div`,{className:`rounded-2xl bg-white/15 px-4 py-3 text-center backdrop-blur-sm ring-1 ring-white/20`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums leading-none`,children:e}),(0,Y.jsx)(`div`,{className:`mt-1 text-[11px] font-medium text-white/80`,children:t})]})}function $r({icon:e,from:t,to:n,value:r,label:i,to_link:a}){return(0,Y.jsxs)(o,{to:a,className:`group relative flex flex-col justify-between overflow-hidden rounded-2xl border bg-card p-4 transition-all hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-lg`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br ${t} ${n} text-white shadow-sm`,children:(0,Y.jsx)(e,{className:`h-5 w-5`})}),(0,Y.jsx)(B,{className:`h-4 w-4 text-muted-foreground opacity-0 transition-all group-hover:translate-x-0.5 group-hover:opacity-100`})]}),(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums`,children:r}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:i})]})]})}function ei({icon:e,title:t,hint:n}){return(0,Y.jsxs)(`div`,{className:`flex items-baseline gap-2.5`,children:[(0,Y.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,Y.jsx)(e,{className:`h-4 w-4 text-muted-foreground`}),t]}),n&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n})]})}function ti({domain:e,group:t,countsByType:n,locale:r,packageSuffix:i}){let a=Wr[e]??V,s=Gr[e]??Gr.other,c=t.slice(0,6),l=t.length-c.length;return(0,Y.jsxs)(`div`,{className:`group rounded-2xl border bg-card p-4 ring-1 ring-transparent transition-all hover:-translate-y-0.5 hover:shadow-lg ${s.ring}`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-xl bg-gradient-to-br ${s.from} ${s.to} text-white shadow-sm`,children:(0,Y.jsx)(a,{className:`h-[18px] w-[18px]`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:Pt(e,r)}),(0,Y.jsxs)(`div`,{className:`text-[11px] text-muted-foreground`,children:[t.length,` `,q(`engine.home.typesLower`,r)]})]})]}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-1.5`,children:[c.map(e=>(0,Y.jsxs)(o,{to:`metadata/${encodeURIComponent(e.type)}${i}`,className:`inline-flex items-center gap-1.5 rounded-lg border bg-background px-2 py-1 text-xs transition-colors hover:border-primary/50 hover:bg-accent`,children:[(0,Y.jsx)(`span`,{className:`truncate max-w-[10rem]`,children:It(e.type,r,e.label)}),(0,Y.jsx)(`span`,{className:`tabular-nums text-[10px] text-muted-foreground`,children:n[e.type]??0})]},e.type)),l>0&&(0,Y.jsxs)(o,{to:`metadata${i}`,className:`inline-flex items-center gap-1 rounded-lg px-2 py-1 text-xs font-medium ${s.text} hover:underline`,children:[`+`,l]})]})]})}export{Hr as MetadataDiagnosticsPage,Ut as MetadataDirectoryPage,Ir as MetadataResourceEditPage,ut as MetadataResourceHistoryPage,Xt as MetadataResourceListPage,Br as MetadataResourceRouter,Zr as StudioHomePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n,v as r}from"./vendor-react-BggL7APJ.js";import{$ as i,Ar as a,Bn as o,Fr as s,Gn as c,Gr as l,In as u,Jn as d,Kn as f,Ln as p,Mr as m,Nr as h,Pr as g,Qn as _,Rn as v,St as ee,bt as y,jr as b,kn as x,qn as S,xi as C,xt as w,yi as T,yt as E,zn as D}from"./ui-components-D6cEVg0T.js";import{$n as te,Bt as O,Ei as ne,Er as k,Ir as re,Mi as ie,Tr as ae,Xi as oe,Yi as A,_ as se,dt as ce,fn as j,i as le,in as ue,ji as de,jt as M,kr as fe,lt as pe,n as me,o as he,pt as ge,s as _e,u as N,y as ve,zt as ye}from"./framework-DFR4HNtj.js";import{g as be,h as xe,t as Se,w as Ce}from"./i18n-runtime-97_bDVjP.js";import{r as we}from"./vendor-ui-utils-DIUdEYii.js";import{t as P}from"./vendor-icon-calendar-BsoUBIef.js";import{t as Te}from"./vendor-icon-chevron-left-KnDcuFH1.js";import{t as Ee}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as F}from"./vendor-icon-plus-BlfcDDsa.js";import{c as De,o as Oe,v as ke}from"./plugin-grid-D2rmQEW_.js";var I=e(r(),1),L=n(),Ae=`bg-blue-100 text-blue-900 border border-blue-200`,je=new Date,Me=[`bg-blue-100 text-blue-900 border border-blue-200`,`bg-emerald-100 text-emerald-900 border border-emerald-200`,`bg-amber-100 text-amber-900 border border-amber-200`,`bg-rose-100 text-rose-900 border border-rose-200`,`bg-violet-100 text-violet-900 border border-violet-200`,`bg-cyan-100 text-cyan-900 border border-cyan-200`,`bg-orange-100 text-orange-900 border border-orange-200`,`bg-fuchsia-100 text-fuchsia-900 border border-fuchsia-200`],Ne=/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Pe=/(^|\s)(bg|text|from|to|via)-/;function Fe(e){if(!e)return{className:Ae};if(Ne.test(e))return{className:`text-white`,inlineColor:e};if(Pe.test(e))return{className:e};let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return{className:Me[Math.abs(t)%Me.length]}}var R=xe({"calendar.today":`Today`,"calendar.month":`Month`,"calendar.week":`Week`,"calendar.day":`Day`,"calendar.newEvent":`New event`,"calendar.moreEvents":`+{{count}} more`,"calendar.allDay":`All Day`,"calendar.a11y.region":`Calendar`,"calendar.a11y.grid":`Calendar grid`,"calendar.a11y.goToToday":`Go to today`,"calendar.a11y.previousPeriod":`Previous period`,"calendar.a11y.nextPeriod":`Next period`,"calendar.a11y.currentDate":`Current date: {{date}}`,"calendar.a11y.dayCell":`{{date}}, {{count}} events`,"calendar.a11y.resizeEventEnd":`Resize event end`,"calendar.a11y.resizeEventEndHint":`Drag to change end date`,"calendar.a11y.resizeStart":`Resize start`,"calendar.a11y.resizeEnd":`Resize end`},`calendar.today`);function Ie({events:e=[],view:t=`month`,currentDate:n=je,locale:r=`default`,onEventClick:i,onDateClick:a,onViewChange:s,onNavigate:d,onAddClick:m,onEventDrop:h,onTimeRangeSelect:g,slotMinutes:_=30,className:ee}){let[y,b]=I.useState(t),[x,w]=I.useState(n),{t:E}=R(),te=Se(),O=r==="default"?te:r;I.useEffect(()=>{w(n)},[n]),I.useEffect(()=>{b(t)},[t]);let ne=I.useRef(s);ne.current=s,I.useEffect(()=>{let e=window.matchMedia(`(max-width: 639px)`),t=e=>{e.matches&&(b(`day`),ne.current?.(`day`))};return t(e),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let k=()=>{let e=new Date(x);y===`month`?e.setMonth(e.getMonth()-1):y===`week`?e.setDate(e.getDate()-7):e.setDate(e.getDate()-1),w(e),d?.(e)},re=()=>{let e=new Date(x);y===`month`?e.setMonth(e.getMonth()+1):y===`week`?e.setDate(e.getDate()+7):e.setDate(e.getDate()+1),w(e),d?.(e)},ie=()=>{let e=new Date;w(e),d?.(e)},ae=e=>{b(e),s?.(e)},oe=()=>{if(y===`month`)return x.toLocaleDateString(O,{month:`long`,year:`numeric`});if(y===`week`){let e=z(x),t=new Date(e);return t.setDate(t.getDate()+6),`${e.toLocaleDateString(O,{month:`short`,day:`numeric`})} - ${t.toLocaleDateString(O,{month:`short`,day:`numeric`,year:`numeric`})}`}return x.toLocaleDateString(O,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})},A=I.useRef(0);return(0,L.jsxs)(`div`,{role:`region`,"aria-label":E(`calendar.a11y.region`),className:C(`flex flex-col h-full bg-background min-w-0 overflow-hidden`,ee),children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 p-2 sm:p-4 border-b min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,L.jsxs)(`div`,{className:`flex items-center bg-muted/50 rounded-lg p-1 gap-1`,children:[(0,L.jsx)(T,{variant:`ghost`,size:`sm`,onClick:ie,className:`h-8`,"aria-label":E(`calendar.a11y.goToToday`),children:E(`calendar.today`)}),(0,L.jsx)(`div`,{className:`h-4 w-px bg-border mx-1`}),(0,L.jsx)(T,{variant:`ghost`,size:`icon`,"aria-label":E(`calendar.a11y.previousPeriod`),onClick:k,className:`h-8 w-8`,children:(0,L.jsx)(Te,{className:`h-4 w-4`})}),(0,L.jsx)(T,{variant:`ghost`,size:`icon`,"aria-label":E(`calendar.a11y.nextPeriod`),onClick:re,className:`h-8 w-8`,children:(0,L.jsx)(Ee,{className:`h-4 w-4`})})]}),(0,L.jsxs)(c,{children:[(0,L.jsx)(S,{asChild:!0,children:(0,L.jsxs)(T,{variant:`ghost`,"aria-label":E(`calendar.a11y.currentDate`,{date:oe()}),className:C(`text-base sm:text-xl font-semibold h-auto px-2 sm:px-3 py-1 hover:bg-muted/50 transition-colors`,`flex items-center gap-2`),children:[(0,L.jsx)(P,{className:`h-5 w-5 text-muted-foreground`}),(0,L.jsx)(`span`,{children:oe()})]})}),(0,L.jsx)(f,{className:`w-auto p-0`,align:`start`,children:(0,L.jsx)(l,{localeTag:O,mode:`single`,defaultMonth:Number.isNaN(x.getTime())?void 0:x,selected:x,onSelect:e=>{e&&(w(e),d?.(e))},autoFocus:!0,startMonth:new Date(2e3,0),endMonth:new Date(2050,11)})})]})]}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsxs)(u,{value:y,onValueChange:ae,children:[(0,L.jsx)(D,{className:`w-32 bg-background`,children:(0,L.jsx)(o,{})}),(0,L.jsxs)(p,{children:[(0,L.jsx)(v,{value:`day`,children:E(`calendar.day`)}),(0,L.jsx)(v,{value:`week`,children:E(`calendar.week`)}),(0,L.jsx)(v,{value:`month`,children:E(`calendar.month`)})]})]}),m&&(0,L.jsxs)(T,{onClick:m,size:`sm`,className:`gap-1`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),E(`calendar.newEvent`)]})]})]}),(0,L.jsxs)(`div`,{className:`flex-1 overflow-auto`,onTouchStart:e=>{A.current=e.touches[0].clientX},onTouchEnd:e=>{let t=A.current-e.changedTouches[0].clientX;if(Math.abs(t)>50){let e=new Date(x);y===`day`?e.setDate(e.getDate()+(t>0?1:-1)):y===`week`?e.setDate(e.getDate()+(t>0?7:-7)):e.setMonth(e.getMonth()+(t>0?1:-1)),w(e),d?.(e)}},children:[y===`month`&&(0,L.jsx)(Ve,{date:x,events:e,locale:O,onEventClick:i,onDateClick:a,onEventDrop:h}),y===`week`&&(0,L.jsx)(Ue,{mode:`week`,date:x,events:e,locale:O,slotMinutes:_,onEventClick:i,onEventDrop:h,onTimeRangeSelect:g}),y===`day`&&(0,L.jsx)(Ue,{mode:`day`,date:x,events:e,locale:O,slotMinutes:_,onEventClick:i,onEventDrop:h,onTimeRangeSelect:g})]})]})}function z(e){let t=new Date(e),n=t.getDay(),r=t.getDate()-n;return t.setDate(r),t}function Le(e){let t=e.getFullYear(),n=e.getMonth(),r=new Date(t,n,1),i=new Date(t,n+1,0),a=r.getDay(),o=[];for(let e=a-1;e>=0;e--){let t=new Date(r.getTime());t.setDate(t.getDate()-(e+1)),o.push(t)}for(let e=1;e<=i.getDate();e++)o.push(new Date(t,n,e));let s=42-o.length;for(let e=1;e<=s;e++){let t=new Date(i.getTime());t.setDate(t.getDate()+e),o.push(t)}return o}function Re(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function ze(e,t){return(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())-Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()))/864e5}function Be(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function Ve({date:e,events:t,locale:n=`default`,onEventClick:r,onDateClick:i,onEventDrop:a}){let o=I.useMemo(()=>Le(e),[e.getFullYear(),e.getMonth()]),s=I.useMemo(()=>new Date,[]),{t:c}=R(),l=I.useMemo(()=>{let e=new Date(2024,0,7);return Array.from({length:7},(t,r)=>{let i=new Date(e);return i.setDate(i.getDate()+r),i.toLocaleDateString(n,{weekday:`short`})})},[n]),[u,d]=I.useState(null),[f,p]=I.useState(null),m=I.useMemo(()=>{let e=new Map;for(let n of t){let t=new Date(n.start),r=n.end?new Date(n.end):new Date(t);t.setHours(0,0,0,0),r.setHours(0,0,0,0);let i=new Date(t);for(;i<=r;){let a=`${i.getFullYear()}-${i.getMonth()}-${i.getDate()}`,o=i.getTime()===t.getTime(),s=i.getTime()===r.getTime(),c=o||s||i.getDay()===0,l=e.get(a),u={event:n,isTitleDay:c,isSpanStart:o,isSpanEnd:s};l?l.push(u):e.set(a,[u]),i.setDate(i.getDate()+1)}}return e},[t]),h=(e,t,n=`move`,r)=>{d(t.id),e.dataTransfer.effectAllowed=`move`;let i={id:t.id,mode:n,...r?{sourceDay:`${r.getFullYear()}-${r.getMonth()}-${r.getDate()}`}:{}};e.dataTransfer.setData(`text/plain`,JSON.stringify(i)),n===`resize-end`&&e.stopPropagation()},g=()=>{d(null),p(null)},_=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,p(t)},v=e=>{e.currentTarget.contains(e.relatedTarget)||p(null)},ee=(e,n)=>{if(e.preventDefault(),p(null),d(null),!a)return;let r=e.dataTransfer.getData(`text/plain`),i;try{i=JSON.parse(r)}catch{i={id:r,mode:`move`}}let o=t.find(e=>String(e.id)===String(i.id));if(!o)return;let s=new Date(n);if(s.setHours(0,0,0,0),i.mode===`resize-end`){let e=o.end?new Date(o.end):new Date(o.start),t=ze(e,s);if(t===0)return;let n=new Date(o.start);if(n.setHours(0,0,0,0),s.getTime()<n.getTime())return;a(o,new Date(o.start),Be(e,t));return}let c=new Date(o.start),l;if(i.sourceDay){let[e,t,n]=i.sourceDay.split(`-`).map(e=>parseInt(e,10));l=new Date(e,t,n)}else l=c;let u=ze(l,s);if(u===0)return;let f=Be(c,u),m;o.end&&(m=Be(new Date(o.end),u)),a(o,f,m)};return(0,L.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,L.jsx)(`div`,{role:`row`,className:`grid grid-cols-7 border-b`,children:l.map(e=>(0,L.jsx)(`div`,{role:`columnheader`,className:`p-2 text-center text-sm font-medium text-muted-foreground border-r last:border-r-0`,children:e},e))}),(0,L.jsx)(`div`,{role:`grid`,"aria-label":c(`calendar.a11y.grid`),className:`grid grid-cols-7 flex-1 auto-rows-fr`,children:o.map((t,o)=>{let l=`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`,d=m.get(l)||[],p=t.getMonth()===e.getMonth(),y=Re(t,s),b=t.toLocaleDateString(n,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`});return(0,L.jsxs)(`div`,{role:`gridcell`,"aria-label":d.length>0?c(`calendar.a11y.dayCell`,{date:b,count:d.length}):b,className:C(`border-b border-r last:border-r-0 p-2 min-h-[100px] cursor-pointer hover:bg-accent/50`,!p&&`bg-muted/50 text-muted-foreground opacity-50`,f===o&&`ring-2 ring-primary`),onClick:()=>i?.(t),onDragOver:e=>_(e,o),onDragLeave:v,onDrop:e=>ee(e,t),children:[(0,L.jsx)(`div`,{className:C(`text-sm font-medium mb-2`,y&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-6 w-6`),...y?{"aria-current":`date`}:{},children:t.getDate()}),(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[d.slice(0,4).map(({event:e,isTitleDay:n,isSpanStart:i,isSpanEnd:o},s)=>{let l=!n,{className:d,inlineColor:f}=Fe(e.color),p=!!a&&o;return(0,L.jsxs)(`div`,{role:`button`,title:e.title,"aria-label":e.title,draggable:!!a,onDragStart:n=>h(n,e,`move`,t),onDragEnd:g,className:C(`relative text-xs hover:opacity-80 truncate`,a?`cursor-move`:`cursor-pointer`,l?`h-1.5`:`px-2 py-0.5`,i?`rounded-l`:`rounded-l-none`,o?`rounded-r`:`rounded-r-none`,!o&&`-mr-2`,d,u===e.id&&`opacity-50`),style:f?{backgroundColor:f}:void 0,onClick:t=>{t.stopPropagation(),r?.(e)},children:[l?``:e.title,p&&(0,L.jsx)(`span`,{role:`separator`,"aria-label":c(`calendar.a11y.resizeEventEnd`),title:c(`calendar.a11y.resizeEventEndHint`),draggable:!0,onDragStart:n=>h(n,e,`resize-end`,t),onDragEnd:g,onClick:e=>e.stopPropagation(),className:`absolute inset-y-0 right-0 w-2 cursor-ew-resize bg-black/25 hover:bg-black/50 rounded-r`})]},`${e.id}-${s}`)}),d.length>4&&(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground px-2`,children:c(`calendar.moreEvents`,{count:d.length-4})})]})]},o)})})]})}var B=48;function V(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function H(e){return e.getHours()*60+e.getMinutes()}function U(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function W(e,t){let n=new Date(e);return n.setHours(0,t,0,0),n}function G(e){let t=new Date(e.start);return{start:t,end:e.end?new Date(e.end):new Date(t.getTime()+36e5)}}function K(e,t){let n=e.minutes-e.grabOffsetMs/6e4,r=Math.round(n/t)*t;return e.withinOneDay?Math.max(0,Math.min(1440-e.durationMs/6e4,r)):r}function He(e,t){return Math.round((V(t).getTime()-e.getTime())/864e5)*1440+H(t)}function q(e,t,n){let r=new Date(e.keptMs),i=He(t,r);if(e.kind===`resize-top`){let a=Math.min(i-n,Math.max(0,e.minutes));return{start:W(t,a),end:r,startMin:a,endMin:i}}let a=Math.max(i+n,Math.min(1440,e.minutes));return{start:r,end:W(t,a),startMin:i,endMin:a}}function Ue({mode:e,date:t,events:n,locale:r=`default`,slotMinutes:i=30,onEventClick:a,onEventDrop:o,onTimeRangeSelect:s}){let{t:c}=R(),l=B*i/60,u=1152,d=I.useMemo(()=>{if(e===`day`)return[V(t)];let n=z(t);return Array.from({length:7},(e,t)=>{let r=new Date(n);return r.setDate(n.getDate()+t),V(r)})},[e,t.getFullYear(),t.getMonth(),t.getDate()]),f=I.useMemo(()=>new Date,[]),p=I.useCallback(e=>{if(e.allDay)return!0;let t=new Date(e.start),n=e.end?new Date(e.end):new Date(t),r=t.getHours()===0&&t.getMinutes()===0&&t.getSeconds()===0,i=n.getHours()===0&&n.getMinutes()===0&&n.getSeconds()===0,a=n.getTime()-t.getTime();return!!(r&&i||a>=864e5)},[]),{allDayEvents:m,timedEvents:h}=I.useMemo(()=>{let e=[],t=[];for(let r of n)p(r)?e.push(r):t.push(r);return{allDayEvents:e,timedEvents:t}},[n,p]),g=I.useMemo(()=>{let e=new Map;for(let t of d)e.set(U(t),[]);for(let t of m){let n=V(new Date(t.start)),r=t.end?new Date(t.end):new Date(t.start),i=V(r);r.getHours()===0&&r.getMinutes()===0&&r.getSeconds()===0&&r.getTime()>n.getTime()&&(i=new Date(i),i.setDate(i.getDate()-1));for(let r of d){let a=V(r);a<n||a>i||e.get(U(r)).push({event:t,isStart:a.getTime()===n.getTime(),isEnd:a.getTime()===i.getTime()})}}return e},[d,m]),_=I.useMemo(()=>{let e=new Map;for(let t of d)e.set(U(t),[]);for(let t of h){let{start:n,end:r}=G(t);for(let i of d){let a=V(i),o=new Date(a);if(o.setDate(o.getDate()+1),r<=a||n>=o)continue;let s=n<a?a:n,c=r>o?o:r,l=H(s),u=c.getTime()===o.getTime()?1440:H(c);e.get(U(i)).push({event:t,startMin:l,endMin:Math.max(u,l+15),isStart:s.getTime()===n.getTime(),isEnd:c.getTime()===r.getTime()})}}return e},[d,h]),v=I.useMemo(()=>{let e=new Map;for(let[t,n]of _){let r=[...n].sort((e,t)=>e.startMin-t.startMin||e.endMin-t.endMin),i=[],a=[],o=[];for(let e of r){let t=0;for(;i[t]&&i[t].endMin>e.startMin;)t++;i[t]={endMin:e.endMin},a.push({entry:e,col:t})}for(let e=0;e<a.length;e++){let t=a[e],n=t.col;for(let r=0;r<a.length;r++){if(r===e)continue;let i=a[r];i.entry.startMin<t.entry.endMin&&i.entry.endMin>t.entry.startMin&&i.col>n&&(n=i.col)}o.push({...t.entry,col:t.col,cols:n+1})}e.set(t,o)}return e},[_]),ee=I.useRef(null),y=I.useRef([]),[b,x]=I.useState(null),S=I.useRef(null);S.current=b;let w=I.useRef(!1),T=I.useCallback((e,t)=>{let n=y.current[t];if(!n)return 0;let r=(e-n.getBoundingClientRect().top+n.scrollTop)/B*60,a=Math.round(r/i)*i;return Math.max(0,Math.min(1440,a))},[i]),E=I.useCallback(e=>{for(let t=0;t<y.current.length;t++){let n=y.current[t];if(!n)continue;let r=n.getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return-1},[]);I.useEffect(()=>{if(!b)return;let e=e=>{let t=b.kind===`select`||b.kind===`move`?E(e.clientX):b.dayIndex,n=t<0?b.dayIndex??0:t,r=T(e.clientY,n);x(e=>e&&(e.kind===`select`?{...e,dayIndex:n>=0?n:e.dayIndex,headMinutes:r}:e.kind===`move`?{...e,dayIndex:n,minutes:r}:{...e,minutes:r}))},t=e=>{let t=S.current;if(!t){x(null);return}try{if(t.kind===`select`&&s){let e=Math.min(t.anchorMinutes,t.headMinutes),n=Math.max(t.anchorMinutes,t.headMinutes),r=e,a=n===e?Math.min(1440,e+i):n,o=d[t.dayIndex]??d[0],c=new Date(o);c.setHours(0,Math.round(r),0,0);let l=new Date(o);l.setHours(0,Math.round(a),0,0),w.current=!0,s(c,l)}else if(t.kind===`move`&&o){let e=n.find(e=>String(e.id)===String(t.eventId));if(e){let n=t.dayIndex<0?0:t.dayIndex,r=W(d[n]??d[0],K(t,i)),a=new Date(r.getTime()+t.durationMs);w.current=!0,o(e,r,a)}}else if((t.kind===`resize-top`||t.kind===`resize-bottom`)&&o){let e=n.find(e=>String(e.id)===String(t.eventId));if(e){let{start:n,end:r}=q(t,d[t.dayIndex]??d[0],i);w.current=!0,o(e,n,r)}}}finally{x(null),setTimeout(()=>{w.current=!1},50)}};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[b,d,n,i,o,s,E,T]);let D=I.useMemo(()=>d.map(e=>({weekday:e.toLocaleDateString(r,{weekday:`short`}),day:e.getDate(),month:e.toLocaleDateString(r,{month:`short`}),isToday:Re(e,f)})),[d,r,f]),te=I.useMemo(()=>Array.from({length:24},(e,t)=>new Date(2024,0,1,t,0).toLocaleTimeString(r,{hour:`numeric`})),[r]),O=(e,t,n,r)=>{if(!o||e.button!==0)return;e.stopPropagation(),e.preventDefault();let i=T(e.clientY,n);if(r===`body`){let{start:e,end:r}=G(t.event),a=r.getTime()-e.getTime(),o=W(d[n],i);x({kind:`move`,eventId:t.event.id,grabOffsetMs:Math.max(0,Math.min(a,o.getTime()-e.getTime())),durationMs:a,withinOneDay:t.isStart&&t.isEnd,dayIndex:n,minutes:i})}else{let{start:e,end:a}=G(t.event);x({kind:r===`top`?`resize-top`:`resize-bottom`,eventId:t.event.id,keptMs:(r===`top`?a:e).getTime(),dayIndex:n,minutes:i})}},ne=(e,t)=>{if(!s||e.button!==0)return;e.preventDefault();let n=T(e.clientY,t);x({kind:`select`,dayIndex:t,anchorMinutes:n,headMinutes:n})},k=e=>{if(!b)return null;if(b.kind===`select`&&b.dayIndex===e){let t=Math.min(b.anchorMinutes,b.headMinutes),n=Math.max(b.anchorMinutes,b.headMinutes),i=t/60*B,a=Math.max(l,(n-t)/60*B);return(0,L.jsx)(`div`,{className:`absolute left-1 right-1 rounded bg-primary/30 border border-primary pointer-events-none z-10`,style:{top:i,height:a},"aria-hidden":!0,children:(0,L.jsx)(`div`,{className:`px-2 py-0.5 text-xs font-medium text-primary`,children:J(d[e],t,n,r)})})}if(b.kind===`move`&&b.dayIndex===e){let t=K(b,i),n=W(d[e],t),a=new Date(n.getTime()+b.durationMs),o=Math.max(0,t),s=Math.min(1440,t+Math.max(15,b.durationMs/6e4)),c=o/60*B,l=Math.max(0,(s-o)/60*B);return(0,L.jsx)(`div`,{className:`absolute left-1 right-1 rounded border-2 border-dashed border-primary bg-primary/10 pointer-events-none z-10`,style:{top:c,height:l},"aria-hidden":!0,children:(0,L.jsx)(`div`,{className:`px-2 py-0.5 text-xs font-medium text-primary`,children:Y(n,a,r)})})}if((b.kind===`resize-top`||b.kind===`resize-bottom`)&&b.dayIndex===e){let{start:t,end:n,startMin:a,endMin:o}=q(b,d[e],i),s=Math.max(0,a),c=Math.min(1440,o),l=s/60*B,u=Math.max(0,(c-s)/60*B);return(0,L.jsx)(`div`,{className:`absolute left-1 right-1 rounded border-2 border-dashed border-primary bg-primary/10 pointer-events-none z-10`,style:{top:l,height:u},"aria-hidden":!0,children:(0,L.jsx)(`div`,{className:`px-2 py-0.5 text-xs font-medium text-primary`,children:Y(t,n,r)})})}return null};return(0,L.jsxs)(`div`,{className:`flex flex-col h-full`,ref:ee,children:[(0,L.jsxs)(`div`,{className:`flex border-b sticky top-0 bg-background z-20`,children:[(0,L.jsx)(`div`,{className:`w-14 shrink-0 border-r`,"aria-hidden":!0}),D.map((e,t)=>(0,L.jsxs)(`div`,{role:`columnheader`,className:C(`flex-1 p-2 text-center text-sm border-r last:border-r-0`,e.isToday&&`bg-primary/5`),children:[(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.weekday}),(0,L.jsx)(`div`,{className:C(`font-medium`,e.isToday&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-6 w-6 mx-auto`),children:e.day})]},t))]}),m.length>0&&(0,L.jsxs)(`div`,{className:`flex border-b bg-muted/20 max-h-[140px] overflow-y-auto`,children:[(0,L.jsx)(`div`,{className:`w-14 shrink-0 border-r flex items-start justify-end pr-1 pt-1 text-[10px] text-muted-foreground sticky left-0 bg-muted/20`,children:c(`calendar.allDay`)}),d.map(e=>{let t=U(e),n=g.get(t)??[];return(0,L.jsx)(`div`,{className:`flex-1 border-r last:border-r-0 min-h-[28px] p-0.5 space-y-0.5`,children:n.map(({event:e,isStart:t,isEnd:n},r)=>{let{className:i,inlineColor:o}=Fe(e.color);return(0,L.jsx)(`div`,{role:`button`,title:e.title,onClick:t=>{t.stopPropagation(),a?.(e)},className:C(`text-[11px] px-2 py-0.5 truncate cursor-pointer hover:opacity-80`,t?`rounded-l`:`rounded-l-none -ml-0.5`,n?`rounded-r`:`rounded-r-none -mr-0.5`,i),style:o?{backgroundColor:o}:void 0,children:t?e.title:`\xA0`},`${e.id}-${r}`)})},t)})]}),(0,L.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,L.jsxs)(`div`,{className:`flex`,style:{height:u},children:[(0,L.jsx)(`div`,{className:`w-14 shrink-0 border-r relative`,children:te.map((e,t)=>(0,L.jsx)(`div`,{className:`absolute right-1 text-[10px] text-muted-foreground -translate-y-1/2`,style:{top:t*B},children:t===0?``:e},t))}),d.map((e,t)=>{let n=U(e),s=v.get(n)??[];return(0,L.jsxs)(`div`,{ref:e=>{y.current[t]=e},className:`flex-1 border-r last:border-r-0 relative select-none`,style:{height:u},onPointerDown:e=>ne(e,t),"aria-label":e.toLocaleDateString(r,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}),children:[Array.from({length:24},(e,t)=>(0,L.jsx)(`div`,{className:`absolute left-0 right-0 border-t border-muted/60 pointer-events-none`,style:{top:t*B}},t)),i<60&&Array.from({length:Math.floor(1440/i)},(e,t)=>{let n=t*i;return n%60==0?null:(0,L.jsx)(`div`,{className:`absolute left-0 right-0 border-t border-dashed border-muted/30 pointer-events-none`,style:{top:n/60*B}},t)}),s.map(n=>{let i=n.startMin/60*B,s=Math.max(l,(n.endMin-n.startMin)/60*B),u=100/n.cols,d=n.col*u,{className:f,inlineColor:p}=Fe(n.event.color),m=b&&b.eventId===n.event.id;return(0,L.jsxs)(`div`,{role:`button`,tabIndex:0,title:n.event.title,"aria-label":n.event.title,onPointerDown:e=>O(e,n,t,`body`),onClick:e=>{if(w.current){e.stopPropagation();return}e.stopPropagation(),a?.(n.event)},className:C(`absolute rounded text-xs px-2 py-1 overflow-hidden shadow-sm`,o?`cursor-move`:`cursor-pointer`,f,m&&`opacity-40`),style:{top:i,height:s,left:`calc(${d}% + 2px)`,width:`calc(${u}% - 4px)`,...p?{backgroundColor:p}:{}},children:[(0,L.jsx)(`div`,{className:`font-medium truncate`,children:n.event.title}),(0,L.jsx)(`div`,{className:`text-[10px] opacity-80 truncate`,children:J(e,n.startMin,n.endMin,r)}),o&&n.isStart&&(0,L.jsx)(`div`,{onPointerDown:e=>O(e,n,t,`top`),className:`absolute top-0 left-0 right-0 h-1.5 cursor-ns-resize`,"aria-label":c(`calendar.a11y.resizeStart`)}),o&&n.isEnd&&(0,L.jsx)(`div`,{onPointerDown:e=>O(e,n,t,`bottom`),className:`absolute bottom-0 left-0 right-0 h-1.5 cursor-ns-resize`,"aria-label":c(`calendar.a11y.resizeEnd`)})]},`${n.event.id}-${n.startMin}`)}),k(t)]},n)})]})})]})}function J(e,t,n,r){return Y(W(e,Math.round(t)),W(e,Math.round(n)),r)}function Y(e,t,n){let r=e=>e.toLocaleTimeString(n,{hour:`numeric`,minute:`2-digit`});return`${r(e)} – ${r(t)}`}function We(e){return e.calendar?e.calendar:e.startDateField?{startDateField:e.startDateField,endDateField:e.endDateField,titleField:e.titleField,colorField:e.colorField,allDayField:e.allDayField}:null}function Ge(e,t,n){return Ke(t,n)?j(e):e.toISOString()}function Ke(e,t){return typeof e==`string`?e===`date`:typeof t==`string`&&ae(t)}var qe=({schema:e,dataSource:t,className:n,data:r,loading:o,onEventClick:c,onRowClick:l,onDateClick:u,onNavigate:f,onViewChange:p,onEventDrop:v,locale:S})=>{let D=be(),{t:ae}=Ce(),oe=Se(),A=S!==void 0&&S!=="default"?S:oe,j=Array.isArray(r),[M,N]=(0,I.useState)(j?r:[]),[xe,P]=(0,I.useState)(j?o??!1:!0),[Te,F]=(0,I.useState)(null),[Ae,je]=(0,I.useState)(null),[Me,Ne]=(0,I.useState)(new Date),[Pe,Fe]=(0,I.useState)(!1),R=x(),z=e.defaultView,[Le,Re]=(0,I.useState)(()=>{let e=z===`day`||!z;return typeof window<`u`&&window.innerWidth<768&&e?`month`:z||`month`});(0,I.useEffect)(()=>{R&&Le===`day`&&(z===`day`||!z)&&Re(`month`)},[R]);let[ze,Be]=(0,I.useState)(0);(0,I.useEffect)(()=>{if(!j&&t?.onMutation&&e.objectName)return t.onMutation(t=>{t.resource===e.objectName&&Be(e=>e+1)})},[t,e.objectName,j]);let Ve=(0,I.useCallback)(async()=>{Be(e=>e+1)},[]),{ref:B,isRefreshing:V,pullDistance:H}=ke({onRefresh:Ve,enabled:!!t&&!!e.objectName}),U=(0,I.useMemo)(()=>ye({objectName:e.objectName,data:e.data,staticData:e.staticData},`array`),[e.data,e.staticData,e.objectName]),W=(0,I.useMemo)(()=>We(e),[e.calendar,e.startDateField,e.endDateField,e.titleField,e.colorField,e.allDayField]),G=U?.provider===`value`,K=U?.provider,He=U?.provider===`value`?U.items:void 0,q=O(e,U),{ready:Ue,def:J}=ve(q??``,G?void 0:t),Y=i();(0,I.useEffect)(()=>{j&&(N(r),je(null),F(null))},[r,j]),(0,I.useEffect)(()=>{j&&o!==void 0&&P(o)},[o,j]);let Ke=se(!j&&K===`object`&&q||void 0),qe=ge(),Je=ce(e.filter,qe);(0,I.useEffect)(()=>{if(j||K===`object`&&!Ue)return;let n=!0;return(async()=>{try{if(!n)return;if(P(!0),G&&K===`value`){let t=await new te({items:He??[]}).find(``,{$filter:Je,$orderby:fe(e.sort),...ie()}),r=de(t);n&&(N(r.rows),je(r),F(null),P(!1));return}if(!t||typeof t.find!=`function`)throw Error(`DataSource required for object/api providers`);if(K===`object`){let r=q,i=ne(J?.fields),a=Y?.isLoaded?i.filter(e=>Y.checkField(r,e,`read`)):i,o=await t.find(r,{$filter:Je,$orderby:fe(e.sort),...ie(),...a.length>0?{$expand:a}:{}}),s=de(o);n&&(N(s.rows),je(s),F(null))}else K===`api`&&(console.warn(`API provider not yet implemented for ObjectCalendar`),n&&(N([]),F(null)));n&&P(!1)}catch(e){console.error(`[ObjectCalendar] Error fetching data:`,e),n&&(F(e),P(!1))}})(),()=>{n=!1}},[j,K,q,He,t,G,Je,e.sort,ze,Ue,J,Y,Ke]);let{events:Ye,unscheduledRecords:Xe}=(0,I.useMemo)(()=>{if(!W||!M.length)return{events:[],unscheduledRecords:[]};let{startDateField:e,endDateField:t,titleField:n,colorField:r,allDayField:i}=W,a=ue(J?.fields?.[r??``]),o=e=>{if(n){let t=e[n],r=typeof t==`string`?t.trim():t;if(r)return String(r)}return re(J,e)},s=[],c=[];return M.forEach((n,l)=>{let u=n[e],d=t?n[t]:null,f=o(n),p=r?n[r]:void 0,m=a(p)??p,h=n.id||n._id||`event-${l}`;if(!u){c.push({id:h,title:f});return}let g=k(u);isNaN(g.getTime())||s.push({id:h,title:f,start:g,end:d?k(d):void 0,color:m,allDay:i?!!n[i]:!d,data:n})}),{events:s,unscheduledRecords:c}},[M,W,J]);(0,I.useCallback)(()=>{u?.(new Date)},[u]);let X=e.navigation??{mode:`drawer`},Ze=X.mode===`drawer`||X.mode===`modal`||X.mode===`split`||X.mode===`popover`,Z=pe({navigation:X,objectName:q??e.objectName,onRowClick:Ze?void 0:l}),{anchorRef:Qe,anchorCaptureProps:$e}=ee(),et=(0,I.useCallback)(async(n,r,i)=>{if(!W)return;let{startDateField:a,endDateField:o}=W,s=n?.id??n?._id;if(!s||!e.objectName||!t?.update)return;let c=J?.fields,l={[a]:Ge(r,c?.[a]?.type,n?.[a])};o&&i&&(l[o]=Ge(i,c?.[o]?.type,n?.[o]));let u=M;N(e=>e.map(e=>(e?.id??e?._id)===s?{...e,...l}:e));try{await t.update(e.objectName,s,l)}catch(e){N(u),console.error(`[ObjectCalendar] Failed to persist drag-and-drop reschedule:`,e),we.error(le(e)??(_e(e)?D(`errors.unauthorized`,`You are not authorized to perform this action.`):he(e)??D(`table.saveFailed`,`Save failed`)))}},[W,e.objectName,t,M,D,J]),[Q,$]=(0,I.useState)(null),tt=D(`calendar.titleRequired`,`Title is required`),nt=(0,I.useCallback)(n=>{W&&e.objectName&&t?.create&&$({start:n,title:``,submitting:!1})},[W,e.objectName,t]),rt=(0,I.useCallback)((n,r)=>{W&&e.objectName&&t?.create&&$({start:n,end:r,title:``,submitting:!1})},[W,e.objectName,t]),it=(0,I.useCallback)(async()=>{if(!Q||!W)return;let n=Q.title.trim();if(!n){$(e=>e&&{...e,error:tt});return}if(!e.objectName||!t?.create)return;$(e=>e&&{...e,submitting:!0,error:void 0});let{startDateField:r,endDateField:i,titleField:a}=W,o=J?.fields,s={[a||`name`]:n,[r]:Ge(Q.start,o?.[r]?.type,void 0)};i&&(s[i]=Ge(Q.end??Q.start,o?.[i]?.type,void 0));let c=J?.fields;if(c&&typeof c==`object`){let e=Array.isArray(c)?c.map(e=>[e.name??e.apiName,e]):Object.entries(c);for(let[t,n]of e){if(!t||t in s||!n?.required)continue;if(n.defaultValue!==void 0&&n.defaultValue!==null){s[t]=n.defaultValue;continue}let e=n.type;if(e===`select`||e===`picklist`||e===`status`){let e=(n.options||n.choices||[])[0];e!==void 0&&(s[t]=typeof e==`object`?e.value??e.id:e)}else e===`boolean`||e===`checkbox`?s[t]=!1:(e===`number`||e===`integer`||e===`decimal`||e===`currency`||e===`percent`)&&(s[t]=0)}}try{let n=await t.create(e.objectName,s),r=(n&&(n.record||n.data||n))??null;r&&(r.id!==void 0||r._id!==void 0)&&N(e=>[...e,r]),$(null)}catch(e){let t=e?.message||String(e);$(e=>e&&{...e,submitting:!1,error:t}),console.error(`[ObjectCalendar] Quick-create failed:`,e)}},[Q,W,e.objectName,t,J,tt]);if(xe)return(0,L.jsx)(`div`,{className:n,children:(0,L.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,L.jsx)(`div`,{className:`text-muted-foreground`,children:D(`calendar.loading`,`Loading calendar…`)})})});if(Te)return(0,L.jsx)(`div`,{className:n,children:(0,L.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,L.jsx)(`div`,{className:`text-destructive`,children:ae(`calendar.loadError`,{message:Te.message,defaultValue:`Error: {{message}}`})})})});if(!W)return(0,L.jsx)(`div`,{className:n,children:(0,L.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,L.jsxs)(`div`,{className:`text-muted-foreground max-w-md text-center space-y-2`,children:[(0,L.jsx)(`p`,{children:D(`calendar.configRequired`,`Calendar configuration required. Please specify startDateField, the calendar's one required key; the event title resolves without titleField.`)}),(0,L.jsx)(`p`,{className:`text-sm`,children:D(`calendar.configRequiredHint`,`It belongs on the view's calendar block. An interface page has no calendar slot of its own: point its sourceView at a view that declares one.`)})]})})});let at=n=>{if(!Z.isOverlay||!Z.isOpen||!Z.selectedRecord)return null;let r=O(e,U),i=Z.selectedRecord,a=i.id??i._id;if(!r||a==null)return null;let o=D(`calendar.eventDetails`,`Event Details`),s=W?.titleField?String(i[W.titleField]??o):o;return(0,L.jsx)(E,{...Z,title:s,mainContent:n,popoverAnchorRef:Qe,storageKey:w(r),legacyStorageKey:y(r),width:Z.width??`min(960px, 60vw)`,children:()=>(0,L.jsx)(`div`,{className:`px-6 pt-6 pb-6`,children:(0,L.jsx)(De,{record:i,objectName:r,recordId:a,dataSource:t,objectSchema:J,onClose:Z.close,fullPageHref:Oe(r,a)??void 0,onFieldSave:async(e,n)=>{t?.update&&(await t.update(r,String(a),{[e]:n}),N(t=>t.map(t=>String(t.id??t._id)===String(a)?{...t,[e]:n}:t)))},onDelete:async()=>{t?.delete&&(await t.delete(r,String(a)),N(e=>e.filter(e=>String(e.id??e._id)!==String(a))))}})})})},ot=(0,L.jsxs)(`div`,{ref:B,className:n,...$e,children:[H>0&&(0,L.jsx)(`div`,{className:`flex items-center justify-center text-xs text-muted-foreground`,style:{height:H},children:V?D(`calendar.refreshing`,`Refreshing…`):D(`calendar.pullToRefresh`,`Pull to refresh`)}),(0,L.jsx)(`div`,{className:`bg-background h-[calc(100vh-120px)] sm:h-[calc(100vh-160px)] md:h-[calc(100vh-200px)] min-h-[400px] sm:min-h-[600px]`,children:(0,L.jsx)(Ie,{events:Ye,currentDate:Me,view:Le,locale:S,onEventClick:e=>{Z.handleClick(e.data),Ze||c?.(e.data)},onDateClick:e=>{u?u(e):nt(e)},onNavigate:e=>{Ne(e),f?.(e)},onViewChange:e=>{Re(e),p?.(e)},onAddClick:void 0,onEventDrop:(e,t,n)=>{v?v(e.data,t,n):et(e.data,t,n)},onTimeRangeSelect:rt})}),Ae&&(0,L.jsx)(me,{result:Ae}),Xe.length>0&&(0,L.jsxs)(`div`,{className:`mt-2 border-t pt-2`,"data-calendar-unscheduled":``,children:[(0,L.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground`,"aria-expanded":Pe,onClick:()=>Fe(e=>!e),children:[(0,L.jsx)(Ee,{"aria-hidden":`true`,className:C(`h-4 w-4 transition-transform`,Pe&&`rotate-90`)}),ae(`calendar.unscheduled`,{count:Xe.length,defaultValue:`Unscheduled ({{count}})`})]}),Pe&&(0,L.jsx)(`ul`,{className:`mt-1 space-y-1 pl-6`,"data-calendar-unscheduled-list":``,children:Xe.map(e=>(0,L.jsx)(`li`,{className:`truncate text-sm`,children:e.title},e.id))})]}),(0,L.jsx)(a,{open:!!Q,onOpenChange:e=>{e||$(null)},children:(0,L.jsxs)(b,{className:`sm:max-w-md`,children:[(0,L.jsxs)(g,{children:[(0,L.jsx)(s,{children:D(`calendar.newEvent`,`New event`)}),(0,L.jsx)(m,{children:Q&&(()=>{let e=Q.end&&Q.end.getTime()!==Q.start.getTime(),t=Q.start.toLocaleDateString(A,{year:`numeric`,month:`long`,day:`numeric`});if(e){let e=e=>e.toLocaleTimeString(A,{hour:`numeric`,minute:`2-digit`});return(0,L.jsxs)(L.Fragment,{children:[t,` · `,e(Q.start),` – `,e(Q.end)]})}return(0,L.jsx)(L.Fragment,{children:ae(`calendar.onDate`,{date:t,defaultValue:`On {{date}}`})})})()})]}),(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(_,{htmlFor:`quick-create-title`,children:D(`calendar.eventTitle`,`Title`)}),(0,L.jsx)(d,{id:`quick-create-title`,autoFocus:!0,value:Q?.title??``,onChange:e=>$(t=>t&&{...t,title:e.target.value,error:void 0}),onKeyDown:e=>{e.key===`Enter`&&!Q?.submitting&&(e.preventDefault(),it())},placeholder:D(`calendar.eventTitlePlaceholder`,`What's this event about?`),disabled:Q?.submitting}),Q?.error&&(0,L.jsx)(`p`,{className:`text-sm text-destructive`,children:Q.error})]}),(0,L.jsxs)(h,{children:[(0,L.jsx)(T,{variant:`outline`,onClick:()=>$(null),disabled:Q?.submitting,children:D(`common.cancel`,`Cancel`)}),(0,L.jsx)(T,{onClick:()=>void it(),disabled:Q?.submitting||!Q?.title.trim(),children:Q?.submitting?D(`calendar.creating`,`Creating…`):D(`common.create`,`Create`)})]})]})})]});if(Z.isOverlay&&Z.mode===`split`&&Z.isOpen&&Z.selectedRecord){let e=at(ot);if(e)return(0,L.jsx)(L.Fragment,{children:e})}return(0,L.jsxs)(L.Fragment,{children:[ot,at()]})},Je=[`onEventClick`,`onDateClick`,`onViewChange`,`onNavigate`,`onAddClick`,`onEventDrop`,`onTimeRangeSelect`];function Ye(e){let t={};for(let n of Je){let r=e[n];typeof r==`function`&&(t[n]=r)}return t}var Xe=[`month`,`week`,`day`];function X(e){return Xe.includes(e)?e:void 0}function Ze(e){if(typeof e==`string`){try{Intl.getCanonicalLocales(e)}catch{return}return e}}function Z(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function Qe(e){if(e instanceof Date)return e;if(typeof e!=`string`)return;let t=k(e);return Number.isNaN(t.getTime())?void 0:t}function $e(e){return e===!0}A.register(`calendar-view`,({schema:e,className:t,onAction:n,events:r,currentDate:i,view:a,allowCreate:o,...s})=>{let c=I.useMemo(()=>!e.data||!Array.isArray(e.data)?[]:e.data.map((t,n)=>{let r=e.titleField||`title`,i=e.startDateField||`start`,a=e.endDateField||`end`,o=e.colorField||`color`,s=e.allDayField||`allDay`;return{id:t.id||t._id||n,title:t[r]||`Untitled Event`,start:k(t[i]),end:t[a]?k(t[a]):void 0,allDay:t[s],color:t[o],data:t}}),[e.data,e.titleField,e.startDateField,e.endDateField,e.colorField,e.allDayField]),l=I.useMemo(()=>Qe(i),[i]),u=X(a),d=$e(o),f=Ye(s),p=Ze(s.locale),m=Z(s.slotMinutes),h=typeof n==`function`?n:void 0,g=e=>{h?.({type:`event-click`,payload:e})},_=()=>{h?.({type:`create`,payload:{}})};return(0,L.jsx)(Ie,{className:t,events:c,currentDate:l,view:u,locale:p,slotMinutes:m,...f,onEventClick:f.onEventClick??g,onAddClick:f.onAddClick??(d?_:void 0)})},{namespace:`plugin-calendar`,label:`Calendar View`,inputs:[{name:`data`,type:`array`,description:`Array of record objects to display as events`},{name:`titleField`,type:`string`,description:`Field name to use for event title`},{name:`startDateField`,type:`string`,description:`Field name for event start date`},{name:`endDateField`,type:`string`,description:`Field name for event end date (optional)`},{name:`allDayField`,type:`string`,description:`Field name for all-day flag`},{name:`colorField`,type:`string`,description:`Field name for event color`},{name:`view`,type:`enum`,enum:[`month`,`week`,`day`],description:`Calendar view mode (month, week, or day)`},{name:`currentDate`,type:`string`,description:`ISO date string for initial calendar date`},{name:`allowCreate`,type:`boolean`,description:`Allow creating events by clicking on dates`},{name:`className`,type:`string`}],defaultProps:{view:`month`,titleField:`title`,startDateField:`start`,endDateField:`end`,allDayField:`allDay`,colorField:`color`,allowCreate:!1,data:[{id:1,title:`Team Meeting`,start:new Date(new Date().setHours(10,0,0,0)).toISOString(),end:new Date(new Date().setHours(11,0,0,0)).toISOString(),color:`#3b82f6`,allDay:!1},{id:2,title:`Project Deadline`,start:new Date(new Date().setDate(new Date().getDate()+3)).toISOString(),color:`#ef4444`,allDay:!0},{id:3,title:`Conference`,start:new Date(new Date().setDate(new Date().getDate()+7)).toISOString(),end:new Date(new Date().setDate(new Date().getDate()+9)).toISOString(),color:`#10b981`,allDay:!0}],className:`h-[600px] border rounded-lg`}});var et=t({CalendarView:()=>Ie,ObjectCalendar:()=>qe,ObjectCalendarRenderer:()=>ot}),Q={filter:!0,sort:!0},$=[`onEventClick`,`onRowClick`,`onDateClick`,`onEdit`,`onDelete`,`onNavigate`,`onViewChange`,`onEventDrop`];function tt(e){let t={};for(let n of $){let r=e[n];typeof r==`function`&&(t[n]=r)}return t}function nt(e){if(typeof e==`string`){try{Intl.getCanonicalLocales(e)}catch{return}return e}}function rt(e){return Array.isArray(e)?e:void 0}function it(e){return typeof e==`boolean`?e:void 0}function at(e){return e&&typeof e.find==`function`?e:void 0}var ot=oe(({schema:e,className:t,...n})=>{let{dataSource:r}=M()||{},i=r??void 0,a=tt(n),o=nt(n.locale),s=rt(n.data),c=it(n.loading),l=at(n.dataSource);return(0,L.jsx)(N,{schema:e,mapping:Q,dataSource:i,testId:`object-calendar`,errorTitle:`This calendar’s data source could not be resolved`,children:e=>(0,L.jsx)(qe,{schema:e,dataSource:l??i,className:t,data:s,loading:c,locale:o,...a})})}),st=[{name:`objectName`,type:`string`,description:"ObjectQL object name. The record source is one of `data`, `staticData` and `objectName`; the `object-calendar` schema refuses a block that declares none of them, unless the node's `dataSource.object` names the object, which then lands on this key."},{name:`calendar`,type:`object`,description:`startDateField, endDateField, titleField, colorField`},{name:`filter`,type:`array`,description:"Filter criteria in JSON-rules form, narrowing the records the calendar fetches. Lowered to `$filter` on the query."},{name:`sort`,type:`array`,description:"Sort order in `[{ field, order }]` form, ordering the records the calendar fetches. Lowered to `$orderby` on the query."},{name:`defaultView`,type:`enum`,enum:[`month`,`week`,`day`],description:"The grid the calendar opens on. A narrow viewport downgrades `day` to `month`; the author’s choice is otherwise honoured on first render."},{name:`locale`,type:`string`,description:"BCP-47 tag used to format the dates and times this calendar renders. A tag `Intl` refuses is dropped — the same answer as an absent key — rather than passed through to throw out of render."},{name:`data`,type:`array`,description:"Pre-fetched records drawn as-is, IN PLACE OF the calendar’s own query — `objectName`, `filter` and `sort` are then unused and `staticData` is never reached. Each member is a RECORD, read for the fields the `calendar` config names plus its `id`; a member with no value in the start field is counted in the unscheduled area rather than dropped."},{name:`staticData`,type:`array`,description:"Inline records, read SECOND on the record-source ladder: an authored `data` wins and this key is then never reached, while `objectName` is read AFTER it, so a calendar carrying both draws these rows and issues no query. Members are records read exactly as `data`’s are."},{name:`loading`,type:`boolean`,description:"External loading state, honoured ONLY alongside an array `data`: it then replaces the calendar with its loading placeholder. On a calendar fed by `staticData` or by `objectName` it is dropped, because that calendar owns its own loading state."},{name:`navigation`,type:`object`,description:"What an event click opens — the `{ mode, size, openNewTab, preventNavigation }` block a list view declares. With the key ABSENT a click opens the record in a drawer. `mode` is an overlay (`drawer`, `modal`, `split`, `popover`), `new_window`, `page` or `none`; write it whenever the block is written, because a block without `mode` takes the spec’s `page` default and `page` opens nothing on a calendar no parent view navigates for. `openNewTab: true` opens the record page in a new tab and outranks the mode, `preventNavigation: true` opens nothing, and `size` sets the overlay width. An overlay mode wins over a parent view’s click handler; any other mode hands the click to it."}];A.register(`object-calendar`,ot,{namespace:`plugin-calendar`,label:`Object Calendar`,category:`view`,inputs:[...st]}),A.register(`calendar`,ot,{namespace:`view`,label:`Calendar View`,category:`view`,inputs:[...st]});export{et as t};
|