@objectstack/console 17.3.0 → 17.4.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 +87 -0
- package/dist/.objectui-sha +1 -1
- package/dist/assets/{ActionResultDialog-CQwenjVA.js → ActionResultDialog-Bsr2GS71.js} +1 -1
- package/dist/assets/{AiPendingActionsPage-7gZ8zlOy.js → AiPendingActionsPage-DB-UVcdM.js} +1 -1
- package/dist/assets/{ApiConsolePage-DUF0ysH7.js → ApiConsolePage-Bzqo2owc.js} +1 -1
- package/dist/assets/{AppDocsIndex-CP_AVG4X.js → AppDocsIndex-KhVqdZ-P.js} +1 -1
- package/dist/assets/{AppManagementPage-BJktnoa5.js → AppManagementPage-CsZ0LMQn.js} +1 -1
- package/dist/assets/{ApprovalsInboxPage-DlnxY-uy.js → ApprovalsInboxPage-D_LOnhJ7.js} +1 -1
- package/dist/assets/{AuditLogPage-DIJPRjji.js → AuditLogPage-B9eqwuzl.js} +1 -1
- package/dist/assets/{ComponentNavView-C84QByT7.js → ComponentNavView-DeokLfkW.js} +1 -1
- package/dist/assets/{CreateViewDialog-Zbd9Cagm.js → CreateViewDialog-BMdQ4ZYy.js} +1 -1
- package/dist/assets/{DashboardView-UyKHklBx.js → DashboardView-DHZboRi8.js} +1 -1
- package/dist/assets/{DeveloperHubPage-BRyNdrCJ.js → DeveloperHubPage-C_VYirN0.js} +1 -1
- package/dist/assets/{DocPage-Bx8ZXCYt.js → DocPage-_9x-3Dbi.js} +1 -1
- package/dist/assets/{DocShell-Ipy_IDvh.js → DocShell-D4dSPfBz.js} +1 -1
- package/dist/assets/{DocsIndex-CmY-7OQR.js → DocsIndex-CJVRa_hE.js} +1 -1
- package/dist/assets/{DocsLayout-BNsSvaz2.js → DocsLayout-C-tYgUZv.js} +1 -1
- package/dist/assets/{DocsSlug-Cb_NMM1k.js → DocsSlug-DmyGpfEy.js} +1 -1
- package/dist/assets/{ExpressionProvider-DqGWVuxV.js → ExpressionProvider-B6z09kM6.js} +1 -1
- package/dist/assets/{FlowRunsPage-B6ustUgi.js → FlowRunsPage-OjGJi-JU.js} +1 -1
- package/dist/assets/{IntegrationsPage-chOxmiyU.js → IntegrationsPage-CrDMDe62.js} +1 -1
- package/dist/assets/{InterfaceListPage-DVETnQm5.js → InterfaceListPage-P3y6hqTX.js} +1 -1
- package/dist/assets/{MarketplaceInstalledPage-DA5pjhAz.js → MarketplaceInstalledPage-CQek7WnV.js} +1 -1
- package/dist/assets/{MarketplacePackagePage-dCIVHBFi.js → MarketplacePackagePage-DL2ivKSc.js} +1 -1
- package/dist/assets/{MarketplacePage-wJb6g1p7.js → MarketplacePage-B-6EokyB.js} +1 -1
- package/dist/assets/{MetadataInspector-Cu-n1FYz.js → MetadataInspector-IQGUoLyp.js} +1 -1
- package/dist/assets/{ObjectDataPage-CP-YSZYQ.js → ObjectDataPage-Bmc3RQhM.js} +1 -1
- package/dist/assets/{PageView-B1_ibRuM.js → PageView-DzUZqB_h.js} +1 -1
- package/dist/assets/{ProfilePage-DEr5iZVB.js → ProfilePage-NklCqPxc.js} +1 -1
- package/dist/assets/{PublicFormsPage-CBcKQbNl.js → PublicFormsPage-CItIvcLQ.js} +1 -1
- package/dist/assets/RecordDetailView-XWxuegfV.js +3 -0
- package/dist/assets/{RecordFormPage-CGQlYWDk.js → RecordFormPage-B-yrhs7J.js} +1 -1
- package/dist/assets/{ReportDefaultInspector-R_p6YStL.js → ReportDefaultInspector-D5Kro5_t.js} +1 -1
- package/dist/assets/{ReportView-BTMrtcGH.js → ReportView-COpZ8PQT.js} +1 -1
- package/dist/assets/{RuntimeDraftBar-agGU39FL.js → RuntimeDraftBar-CSVtuByp.js} +1 -1
- package/dist/assets/{SchemaForm-DJbupOno.js → SchemaForm-DIsxxOZF.js} +1 -1
- package/dist/assets/{SearchResultsPage-CHhZUc6L.js → SearchResultsPage-B2r6kgni.js} +1 -1
- package/dist/assets/{SettingsHub-BGLR_gS7.js → SettingsHub-DQz2HDtZ.js} +1 -1
- package/dist/assets/{SettingsView-Bq-7Zkzs.js → SettingsView-BfOEalDW.js} +1 -1
- package/dist/assets/{SkeletonDetail-B4-UKxai.js → SkeletonDetail-DMOa5zcl.js} +1 -1
- package/dist/assets/{SystemHubPage-CVZVag1e.js → SystemHubPage-DM2VRSIP.js} +1 -1
- package/dist/assets/{abnfDiagram-VCTEODGH-DUS5D5dU.js → abnfDiagram-VCTEODGH-DaPlU6Hz.js} +1 -1
- package/dist/assets/{app-shell-eager-leaves-BB0oaPx6.js → app-shell-eager-leaves-wjbiJgVZ.js} +1 -1
- package/dist/assets/architectureDiagram-5GKGNRK7-Cq014PwG.js +36 -0
- package/dist/assets/{blockDiagram-OSKFZWR5-Bz2hnVmp.js → blockDiagram-OSKFZWR5-vtlcoeZc.js} +1 -1
- package/dist/assets/{c4Diagram-7LVT6UL2-DU3u1Y6c.js → c4Diagram-7LVT6UL2-BrdwRG2M.js} +1 -1
- package/dist/assets/channel-D2IgUFnY.js +1 -0
- package/dist/assets/{chunk-3NF5O7KM-B8Q7HUio.js → chunk-3NF5O7KM-CjWAf_Jo.js} +1 -1
- package/dist/assets/{chunk-4HAMMTFA-BPKwX4iB.js → chunk-4HAMMTFA-BtV_msXT.js} +1 -1
- package/dist/assets/chunk-75Z2AOVW-DdRL9yNr.js +2 -0
- package/dist/assets/chunk-CLGD4ZFX-De9kMAXh.js +1 -0
- package/dist/assets/{chunk-DU6HZSFF-BkY4hAzc.js → chunk-DU6HZSFF-DqjylQO-.js} +1 -1
- package/dist/assets/chunk-F27PBJKO-tEB_K-iD.js +1 -0
- package/dist/assets/{chunk-GMAD6QVW-DZo_NykZ.js → chunk-GMAD6QVW-BMzd_HHM.js} +1 -1
- package/dist/assets/{chunk-GVQU2GXP-9ELY9S6X.js → chunk-GVQU2GXP-B1p1nHC0.js} +1 -1
- package/dist/assets/{chunk-H2I77ZZE-vCr_buP7.js → chunk-H2I77ZZE-ioXC4dHO.js} +1 -1
- package/dist/assets/{chunk-HLEWEB6X-iPkY2ESt.js → chunk-HLEWEB6X-zZ3ZMup3.js} +1 -1
- package/dist/assets/chunk-L3NEJ4N5-DePXufTQ.js +1 -0
- package/dist/assets/{chunk-LQGUR6SS-iVI0GACK.js → chunk-LQGUR6SS-BUWUp_dz.js} +1 -1
- package/dist/assets/{chunk-OSK3NFVY-DcRwXCQD.js → chunk-OSK3NFVY-L7nTUJKT.js} +2 -2
- package/dist/assets/{chunk-P2QGCYS3-nx2-dM5t.js → chunk-P2QGCYS3-BG-i3rdI.js} +1 -1
- package/dist/assets/{chunk-POPQ4Y6H-BxLOacOG.js → chunk-POPQ4Y6H-DLEB8EqK.js} +1 -1
- package/dist/assets/{chunk-PWAF6VOD-2mst9kZu.js → chunk-PWAF6VOD-Be_prJjm.js} +1 -1
- package/dist/assets/{chunk-SVP7TREG-C3BMpr4x.js → chunk-SVP7TREG-BdJpxJji.js} +1 -1
- package/dist/assets/chunk-XXDRQBXY-CEXsCcSu.js +1 -0
- package/dist/assets/{chunk-ZLD2IHE6-ZFqtFJbj.js → chunk-ZLD2IHE6-BLIPZykR.js} +1 -1
- package/dist/assets/classDiagram-CYGNFDIV-BielDdJQ.js +1 -0
- package/dist/assets/classDiagram-v2-TLXNO2FR-BielDdJQ.js +1 -0
- package/dist/assets/cose-bilkent-JH36ORCC-CnLWv9XE.js +1 -0
- package/dist/assets/{createDerive-Best2JCj.js → createDerive-DtfnFzGm.js} +1 -1
- package/dist/assets/{cynefinDiagram-5FMLGOSQ-Lnly8IJd.js → cynefinDiagram-5FMLGOSQ-Do1SZz4I.js} +1 -1
- package/dist/assets/{dagre-OS7QT2EB-CdXLxmTK.js → dagre-OS7QT2EB-CqmZ9Y9O.js} +1 -1
- package/dist/assets/data-adapter-1YRpH3h_.js +5 -0
- package/dist/assets/{default-inspector-registry-DeEG98bO.js → default-inspector-registry-CmSpNwTr.js} +1 -1
- package/dist/assets/{diagram-S7CK7UJ4-DE8I3gxQ.js → diagram-S7CK7UJ4-CMpcDWop.js} +1 -1
- package/dist/assets/{diagram-UQ7AKVKN-D2xQpbEq.js → diagram-UQ7AKVKN-DLK_4yej.js} +1 -1
- package/dist/assets/{diagram-VSXAHHWV-DnttDSlO.js → diagram-VSXAHHWV-MAILxw0S.js} +1 -1
- package/dist/assets/diagram-VX7I27RA-DGiXGVX7.js +24 -0
- package/dist/assets/{diagram-Z3DM3KII-BgB9f0Nv.js → diagram-Z3DM3KII-BywboeGI.js} +1 -1
- package/dist/assets/dist-B88JFSFg.js +5 -0
- package/dist/assets/{ebnfDiagram-PWID7BFC-32WvKbS2.js → ebnfDiagram-PWID7BFC-DdMLbnuP.js} +1 -1
- package/dist/assets/{erDiagram-2YWLMYGG-Dwf8uAdl.js → erDiagram-2YWLMYGG-O6raGx2P.js} +1 -1
- package/dist/assets/flowDiagram-T62WH6J4-CkAxOnqU.js +1 -0
- package/dist/assets/framework-DFE_Mws9.js +36 -0
- package/dist/assets/{ganttDiagram-EL5Y4UJY-DqYIE0Cu.js → ganttDiagram-EL5Y4UJY-Dijdjc50.js} +2 -2
- package/dist/assets/{getIcon-CgyYxSEC.js → getIcon-B4Pp7Q-0.js} +1 -1
- package/dist/assets/gitGraphDiagram-WWUBYQGX-Cfl4OIGG.js +106 -0
- package/dist/assets/{highlighted-body-OFNGDK62-BxO9mjPI.js → highlighted-body-OFNGDK62-BlqGRgbU.js} +1 -1
- package/dist/assets/{i18n-Cfqor-xb.js → i18n-DGcOKnTh.js} +1 -1
- package/dist/assets/{i18n-locales-Bz4c8KXc.js → i18n-locales-BBA090ve.js} +10 -10
- package/dist/assets/index-C5Fu9Kda.css +2 -0
- package/dist/assets/index-ClPLLRzK.js +20 -0
- package/dist/assets/{infoDiagram-FKFFQAWI-Cr1-5_Am.js → infoDiagram-FKFFQAWI-oOVNWlVA.js} +1 -1
- package/dist/assets/{infrastructure-CIpDEFyQ.js → infrastructure-B4zG1jNa.js} +2 -2
- package/dist/assets/{ishikawaDiagram-5VMMS53U-Bsjx7BsE.js → ishikawaDiagram-5VMMS53U-BUfTfup1.js} +1 -1
- package/dist/assets/{journeyDiagram-EYS64GPL-1scn5Z5c.js → journeyDiagram-EYS64GPL-4fyU8Ui9.js} +2 -2
- package/dist/assets/{kanban-definition-UXKFOSKX-DjLQAv5U.js → kanban-definition-UXKFOSKX-qwquHo2y.js} +1 -1
- package/dist/assets/mermaid-GHXKKRXX-_UhQGe8N.js +1 -0
- package/dist/assets/{mermaid.core-pW40dd4u.js → mermaid.core-RfBGJVq5.js} +2 -2
- package/dist/assets/{metadata-admin-pawEBYI9.js → metadata-admin-Bo-vWW2Z.js} +3 -3
- package/dist/assets/{mindmap-definition-THT77NOG-CUcYMB9H.js → mindmap-definition-THT77NOG-cOVHgGB_.js} +1 -1
- package/dist/assets/{pegDiagram-XKGWAZYB-CT1r3sRa.js → pegDiagram-XKGWAZYB-DQikOuPL.js} +1 -1
- package/dist/assets/{pieDiagram-E7YTZNPT-CSi-V1LQ.js → pieDiagram-E7YTZNPT-Cu9wPXiv.js} +2 -2
- package/dist/assets/plugin-calendar-DqlnPeWE.js +1 -0
- package/dist/assets/plugin-charts-hJ5C1pY-.js +7 -0
- package/dist/assets/{plugin-chatbot-BGnkLzFS.js → plugin-chatbot-BeSLDg4N.js} +5 -5
- package/dist/assets/plugin-dashboard-d1o52lHr.js +6 -0
- package/dist/assets/{plugin-form-_fjHxKTV.js → plugin-form-D8x_rH5w.js} +1 -1
- package/dist/assets/plugin-gantt-B2GTMGPH.js +63 -0
- package/dist/assets/plugin-grid-DGXy_yQF.js +9 -0
- package/dist/assets/{plugin-kanban-DA0eW6yj.js → plugin-kanban-CVf6Nj3e.js} +1 -1
- package/dist/assets/plugin-map-hkbw1bGS.js +1 -0
- package/dist/assets/{plugin-markdown-B7zwZHmn.js → plugin-markdown-Bdb2UThR.js} +4 -4
- package/dist/assets/plugin-report-CelulaB7.js +59 -0
- package/dist/assets/{plugin-timeline-B6rsNNAK.js → plugin-timeline-DTcJ-hts.js} +1 -1
- package/dist/assets/plugin-tree-Bk5vG9la.js +1 -0
- package/dist/assets/{plugin-view-5qxxRyZZ.js → plugin-view-CKs41t7o.js} +1 -1
- package/dist/assets/plugins-views-DZmsFOak.js +4 -0
- package/dist/assets/{quadrantDiagram-AXDQQJYC-DUJ_94hm.js → quadrantDiagram-AXDQQJYC-DqTU6p89.js} +3 -3
- package/dist/assets/{railroadDiagram-O6MQD6OU-CEyfAhzM.js → railroadDiagram-O6MQD6OU-CHGgIBKb.js} +1 -1
- package/dist/assets/{requirementDiagram-IS5BZ75X-CAK7hvBg.js → requirementDiagram-IS5BZ75X-B20mHS5h.js} +1 -1
- package/dist/assets/{runtime-metadata-persistence-DYPxFzHI.js → runtime-metadata-persistence-DzS2YaNb.js} +1 -1
- package/dist/assets/{sankeyDiagram-P5KCCOFB-DgYJh7uz.js → sankeyDiagram-P5KCCOFB-oqGY91Cw.js} +3 -3
- package/dist/assets/{sequenceDiagram-WJ2MYXX4-DsQerPtC.js → sequenceDiagram-WJ2MYXX4-CVMm7Aid.js} +1 -1
- package/dist/assets/{src-CVJP2nIc.js → src-D7tZqf12.js} +1 -1
- package/dist/assets/{src-_DxAIBqo.js → src-DCXZnd2l.js} +1 -1
- package/dist/assets/{src-S6pzKItc.js → src-DEMdKbQy.js} +1 -1
- package/dist/assets/src-hcMLuWxG.js +17 -0
- package/dist/assets/stateDiagram-XQSTLZYL-3oM7IdVe.js +1 -0
- package/dist/assets/stateDiagram-v2-IH3M54BS-BznjPAgb.js +1 -0
- package/dist/assets/studioEntry-BUFsLXCL.js +1 -0
- package/dist/assets/{submitRedirect-UXd9NsjL.js → submitRedirect-7ExeC4kw.js} +1 -1
- package/dist/assets/{swimlanes-V6O3JKXN-BiKyiEJr.js → swimlanes-V6O3JKXN-Djgbrkmh.js} +1 -1
- package/dist/assets/swimlanesDiagram-JKAHXJPX-DHJJ3qZq.js +8 -0
- package/dist/assets/{timeline-definition-24CTP7MA-CW5rY3PX.js → timeline-definition-24CTP7MA-k2lbfDvL.js} +2 -2
- package/dist/assets/ui-components-CMHDBJEm.js +37 -0
- package/dist/assets/{ui-layout-UUTFXV6S.js → ui-layout-Jk_qY9Ni.js} +1 -1
- package/dist/assets/{use-book-data-qUZAxIs0.js → use-book-data-CM73PGvc.js} +1 -1
- package/dist/assets/{useActionModal-CkM-zGdy.js → useActionModal-D_iilsul.js} +1 -1
- package/dist/assets/{usePackageL10n-F9isJ9pn.js → usePackageL10n-BfPqgsRL.js} +1 -1
- package/dist/assets/{useSettingsLabel-CSZBfUiw.js → useSettingsLabel-CW2sBbmj.js} +1 -1
- package/dist/assets/vendor-charts-BBlPrtHS.js +67 -0
- package/dist/assets/{vendor-i18n-C1AQDWux.js → vendor-i18n-CzBLXLJU.js} +1 -1
- package/dist/assets/vendor-objectstack-BU0HrnMy.js +270 -0
- package/dist/assets/{vendor-zod-r9lyeyrU.js → vendor-zod-Bwe8XZZa.js} +3 -3
- package/dist/assets/{vennDiagram-4TSXK5OY-C79cMc25.js → vennDiagram-4TSXK5OY-zweM554s.js} +1 -1
- package/dist/assets/{wardleyDiagram-VM6X3IG4-BAO0_jUk.js → wardleyDiagram-VM6X3IG4-Dg9r6Ajz.js} +1 -1
- package/dist/assets/{xychartDiagram-S5SC5T6Z-BIRd7YRo.js → xychartDiagram-S5SC5T6Z-CraplxeN.js} +2 -2
- package/dist/eager-closure.json +87 -87
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/dist/assets/RecordDetailView-A8bbPnkK.js +0 -3
- package/dist/assets/architectureDiagram-5GKGNRK7-mGW8P1lC.js +0 -36
- package/dist/assets/channel-FD4s9EIH.js +0 -1
- package/dist/assets/chunk-75Z2AOVW-CkSdnmiC.js +0 -2
- package/dist/assets/chunk-CLGD4ZFX-BTkDISwp.js +0 -1
- package/dist/assets/chunk-F27PBJKO-DUKg0YWV.js +0 -1
- package/dist/assets/chunk-L3NEJ4N5-Bzz35TZJ.js +0 -1
- package/dist/assets/chunk-XXDRQBXY-iNC8aYmk.js +0 -1
- package/dist/assets/classDiagram-CYGNFDIV-D5Pd2TCl.js +0 -1
- package/dist/assets/classDiagram-v2-TLXNO2FR-D5Pd2TCl.js +0 -1
- package/dist/assets/cose-bilkent-JH36ORCC-CPQv9aQH.js +0 -1
- package/dist/assets/data-adapter-DL25qpAe.js +0 -5
- package/dist/assets/diagram-VX7I27RA-BSEwkn7K.js +0 -24
- package/dist/assets/dist-BpPy7hlB.js +0 -5
- package/dist/assets/flowDiagram-T62WH6J4-CqVSNJ8T.js +0 -1
- package/dist/assets/framework-BfSv4Kb0.js +0 -36
- package/dist/assets/gitGraphDiagram-WWUBYQGX-D1dYmoGu.js +0 -106
- package/dist/assets/index-BU-FzlQ6.js +0 -20
- package/dist/assets/index-_VyGO4ms.css +0 -2
- package/dist/assets/mermaid-GHXKKRXX-NzEcDxBh.js +0 -1
- package/dist/assets/plugin-calendar-BwiiCIjv.js +0 -1
- package/dist/assets/plugin-charts-CDGkx7z5.js +0 -7
- package/dist/assets/plugin-dashboard-Bj4ldCX6.js +0 -6
- package/dist/assets/plugin-gantt-zR8DkpEg.js +0 -63
- package/dist/assets/plugin-grid-kkbz4uec.js +0 -9
- package/dist/assets/plugin-map-DukneTNg.js +0 -1
- package/dist/assets/plugin-report-DaPtlsJr.js +0 -59
- package/dist/assets/plugin-tree-DauauLFc.js +0 -1
- package/dist/assets/plugins-views-iYcMmImr.js +0 -4
- package/dist/assets/src-JX1BkhmR.js +0 -17
- package/dist/assets/stateDiagram-XQSTLZYL-BJndPKik.js +0 -1
- package/dist/assets/stateDiagram-v2-IH3M54BS-Bi94bTLl.js +0 -1
- package/dist/assets/studioEntry-C6G8U-LG.js +0 -1
- package/dist/assets/swimlanesDiagram-JKAHXJPX-DKIR852g.js +0 -8
- package/dist/assets/ui-components-D2lrjG-t.js +0 -43
- package/dist/assets/vendor-charts-CY9WhhzX.js +0 -67
- package/dist/assets/vendor-objectstack-BeKUVjuj.js +0 -270
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ui-components-BL3SEdAz.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{_ as t,b as n,r}from"./vendor-react-CsWFRkED.js";import{jn as i}from"./vendor-objectstack-BeKUVjuj.js";import{Tt as a,n as o}from"./framework-BfSv4Kb0.js";import{y as s}from"./i18n-locales-Bz4c8KXc.js";import{Bn as c,Bt as l,Cr as u,Cs as d,Da as f,Dn as p,En as m,Er as h,Fn as g,Ht as _,In as v,It as y,Ko as b,Nn as x,On as S,Pn as C,Pt as w,Rt as T,Si as E,So as D,Sr as O,Ss as k,St as A,Tn as j,Tr as M,Tt as N,Vt as P,Xr as F,Yi as ee,Yt as I,aa as te,cc as L,fc as R,hc as z,ic as ne,il as re,jt as ie,ni as B,pc as V,ra as ae,sc as oe,vr as se,wn as H,wr as ce,wt as le,yi as ue,yr as de,zs as fe,zt as pe}from"./ui-components-D2lrjG-t.js";import{r as me}from"./vendor-ui-utils-BFw4cGI6.js";import{o as he}from"./createDerive-Best2JCj.js";import{g as U,h as ge,i as W,m as _e,p as ve,r as G,s as ye}from"./i18n-Cfqor-xb.js";var K=e(n(),1),q=r(),be=o(`metadataAdminFieldsReadDoor`);function xe(e){let t=be.filter(t=>t in e);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}function Se(e){return Array.isArray(e)?{shape:`array`,entries:e.map((e,t)=>{let{name:n,...r}=e??{};return{name:typeof n==`string`&&n?n:`field_${t+1}`,def:xe(r)}})}:e&&typeof e==`object`?{shape:`record`,entries:Object.entries(e).map(([e,t])=>({name:e,def:xe({...t??{}})}))}:{shape:`record`,entries:[]}}function Ce(e){if(e.shape===`array`)return e.entries.map(e=>({name:e.name,...e.def}));let t={};for(let n of e.entries)t[n.name]=n.def;return t}function we(e,t){return e.entries.findIndex(e=>e.name===t)}function Te(e,t,n){let r={type:t,label:n??Ee(e)};return(t===`select`||t===`multiselect`||t===`radio`||t===`checkboxes`)&&(r.options=[]),{name:e,def:r}}function Ee(e){return e?e.split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):``}function De(e){let t=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).replace(/_{2,}/g,`_`);return t?/^[a-z_]/.test(t)?t:`f_${t}`:`field`}function Oe(e){let t=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+/g,``).replace(/_{2,}/g,`_`);return t?/^[a-z_]/.test(t)?t:`f_${t}`:``}function ke(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`).map(e=>({...e,key:typeof e.key==`string`?e.key:``,label:typeof e.label==`string`?e.label:``})).filter(e=>e.key):[]}function Ae(e,t){let n=/[a-z0-9]/i.test(e)?De(e):`group`;if(!t.includes(n))return n;let r=2;for(;t.includes(`${n}_${r}`);)r+=1;return`${n}_${r}`}function je(e,t){let n=t.trim()||`New section`,r=Ae(n,e.map(e=>e.key));return[...e,{key:r,label:n}]}function Me(e,t,n){let r=n.trim();return r?e.map(e=>e.key===t?{...e,label:r}:e):e}function Ne(e,t,n){return e.map(e=>{if(e.key!==t)return e;let r={...e};for(let[e,t]of Object.entries(n))t===void 0?delete r[e]:r[e]=t;return r})}function Pe(e,t){return e.filter(e=>e.key!==t)}function Fe(e,t,n){let r=e.findIndex(e=>e.key===t);if(r<0)return e;let i=r+n;return i<0||i>=e.length?e:Le(e,r,i)}function Ie(e,t){return{shape:e.shape,entries:e.entries.map(e=>e.def.group===t?{name:e.name,def:{...e.def,group:void 0}}:e)}}function Le(e,t,n){let r=e.slice(),[i]=r.splice(t,1);return r.splice(n,0,i),r}function Re(e,t,n){let r=Array.isArray(t)?t.filter(e=>typeof e?.key==`string`):[],i=new Map;for(let e of r)i.set(e.key,{key:e.key,label:String(e.label??e.key),entries:[]});let a=new Set(r.map(e=>e.key));for(let t of e.entries){let e=typeof t.def.group==`string`?t.def.group:null;e&&a.has(e)?i.get(e).entries.push(t):(i.has(null)||i.set(null,{key:null,label:`Ungrouped`,entries:[]}),i.get(null).entries.push(t))}let o=!!n?.includeEmptyDeclared;return Array.from(i.values()).filter(e=>e.entries.length>0||o&&e.key!==null)}function ze(e,t){return e===t||JSON.stringify(e??null)===JSON.stringify(t??null)}function Be(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]),r=[];for(let i of n)ze(e[i],t[i])||r.push(i);return r.sort()}function Ve(e,t){let n=Se(e),r=Se(t),i=new Map(n.entries.map(e=>[e.name,e])),a=new Set(r.entries.map(e=>e.name)),o={},s=0,c=0;for(let e of r.entries){let t=i.get(e.name);if(!t){o[e.name]={name:e.name,status:`added`,changedKeys:[]},s+=1;continue}let n=Be(t.def,e.def);n.length?(o[e.name]={name:e.name,status:`changed`,changedKeys:n},c+=1):o[e.name]={name:e.name,status:`unchanged`,changedKeys:[]}}let l=n.entries.filter(e=>!a.has(e.name));return{byName:o,removed:l,counts:{added:s,changed:c,removed:l.length}}}var He=new Set([...le,`is_empty`,`is_not_empty`,`is_null`,`is_not_null`]);function Ue(e,t){return!N(String(e??``),t)}function We(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return Array.isArray(t.conditions)||t.logic===`and`||t.logic===`or`}function Ge(e){if(e==null)return{ok:!0,rules:[]};let t=We(e)&&Array.isArray(e.conditions)?e.conditions:[],n=[];for(let e of t){if(We(e))return{ok:!1,reason:`nested_group`};if(typeof e!=`object`||!e)continue;let t=e;if(typeof t.field!=`string`||t.field===``)continue;let r=i(t.operator);if(!He.has(String(t.operator))&&!He.has(String(r))&&Ue(t.operator,t.value))continue;let a={field:t.field,operator:r};t.value!==void 0&&(a.value=t.value),n.push(a)}return(We(e)?e.logic:void 0)===`or`&&n.length>1?{ok:!1,reason:`or_logic`}:{ok:!0,rules:n}}var Ke={or_logic:`console.objectView.filterOrNotSavable`,nested_group:`console.objectView.filterNestedNotSavable`},qe=[`current_user`,`user`,`ctx`,`os`];function J(e,t){let n={data:e??{}};if(t)for(let e of qe)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e]);return n.data=e??{},n}function Je(e,t){return Xe(e.visibleWhen,t)}function Ye(e,t){return e.filter(e=>Je(e,t))}function Xe(e,t){if(e==null)return!0;let n=typeof e==`string`?e:e.source;if(!n)return!0;try{return dt(n.trim(),t,n)}catch(e){return e instanceof Ze&&rt(e.path,n,t),!0}}var Ze=class extends Error{path;constructor(e){super(`unresolved predicate path: ${e}`),this.path=e,this.name=`UnresolvedPathError`}},Qe=new Set,$e=new Set,et=new Set,tt=new Set,nt=()=>!1;function rt(e,t,n){if(!nt())return;let r=`${e}::${t}`;if(Qe.has(r))return;Qe.add(r);let i=e.split(`.`)[0],a=Object.keys(n).sort().map(e=>`\`${e}\``).join(`, `);console.warn(`[metadata-admin] visibility predicate \`${t}\` references \`${e}\`, but \`${i}\` is not a name in this form's evaluation scope — the names here are ${a} (\`data\` is the current draft; the identity roots are bound only under a host \`ExpressionProvider\`). The predicate was treated as TRUE (fail-open) so the field stays visible instead of disappearing without a trace; check the spelling — draft values are addressed as \`data.<field>\` (e.g. \`data.type in [...]\`) and the signed-in user as \`current_user.<field>\`. A predicate served by an older backend is the usual cause (objectstack#6254 re-spelled the bare \`objectForm\` predicates; objectstack#6936).`)}var it=/^[A-Za-z_$][A-Za-z0-9_$]*(?:\.[A-Za-z_$][A-Za-z0-9_$]*)*$/;function at(e,t){if(!nt())return;let n=`${e}::${t}`;$e.has(n)||($e.add(n),console.warn(`[metadata-admin] visibility predicate \`${t}\` compares against \`${e}\`, which looks like a path but is being used as the literal string "${e}" — this evaluator resolves paths only on the LEFT of \`==\` / \`!=\`; the right-hand side is always a literal (supported subset: \`path == 'literal'\`). So \`data.a == data.b\` is FALSE even when both sides hold the same value, and \`data.a != data.b\` is TRUE — the verdict does not depend on the right-hand path at all. If you meant the text, quote it (\`== 'text'\`). If you meant to compare two paths, that is outside this evaluator's subset: it is an interim stand-in for \`@objectstack/formula\` until CEL lands (ROADMAP M9), and predicate expressions are validated at publish time (objectstack#7010). objectui#4049.`))}function ot(e){let t=e.slice(1,-1);if(!t.trim())return null;for(let e of ft(t,`,`)){let t=e.trim();if(t)try{let e=t.replace(/'([^']*)'/g,(e,t)=>JSON.stringify(t));JSON.parse(e)}catch{return t}}return null}function st(e,t){if(!nt())return;let n=`${e}::${t}`;if(et.has(n))return;et.add(n);let r=ot(e);console.warn(`[metadata-admin] visibility predicate \`${t}\` has an \`in\` set \`${e}\``+(r==null?`, which this evaluator could not parse — `:` containing \`${r}\`, which is not a literal this evaluator can parse — `)+"the WHOLE set was treated as EMPTY, so the predicate is FALSE for every row (not just the element that failed — one bad element discards the good literals next to it too). This evaluator only supports literal elements inside `in [...]` (supported subset: `path in ['a','b']`); it does not resolve paths there — paths resolve only on the LEFT of an operator (objectui#4049). If you meant a literal, quote it. If you meant to test membership against another field, that is outside this evaluator's subset: it is an interim stand-in for `@objectstack/formula` until CEL lands (ROADMAP M9), and predicate expressions are validated at publish time (objectstack#7010). objectui#4266.")}var ct=` in `;function lt(e){return ft(e,ct).length>1}function ut(e,t){if(!nt())return;let n=`${e}::${t}`;tt.has(n)||(tt.add(n),console.warn(`[metadata-admin] visibility predicate \`${t}\` spells a membership test \`${e}\` whose right-hand side is not a bracketed literal set. This evaluator matches \`in\` ONLY against a bracketed set of literals (supported subset: \`path in ['a','b']\`), so this text was never treated as a membership test at all — it fell through every operator branch to a BARE TRUTHY check of the whole string, and the verdict has nothing to do with the membership that was written. With a quoted left side — ADR-0068's own headline example \`'admin' in current_user.positions\` — the whole text comes back verbatim as a non-empty string, so the predicate reads TRUE for EVERY user and a gate meant for admins is open to everyone; with a path-shaped left side it reads FALSE for every row instead. There is no working spelling of this form on this surface: a path on the RIGHT of \`in\` CANNOT be written here today. Paths resolve only on the LEFT of an operator (objectui#4049) and the right of \`in\` must be a literal set spelled out in the predicate itself, so testing membership against a value the draft or the signed-in user holds is outside this evaluator's subset and cannot be expressed — not with different punctuation, not with a different spelling, not at all. This evaluator is an interim stand-in for \`@objectstack/formula\` until CEL lands (ROADMAP M9), and predicate expressions are validated at publish time (objectstack#7010). objectui#6617.`))}function dt(e,t,n){let r=ft(e,`||`);if(r.length>1)return r.some(e=>dt(e.trim(),t,n));let i=ft(e,`&&`);if(i.length>1)return i.every(e=>dt(e.trim(),t,n));if(e.startsWith(`!`))return!dt(e.slice(1).trim(),t,n);let a=e.match(/^(.+?)\s+in\s+(\[.*\])$/);if(a){let e=pt(a[1].trim(),t,n),r=mt(a[2],n);return Array.isArray(r)&&r.includes(e)}let o=e.match(/^(.+?)\s*(==|!=)\s*(.+)$/);if(o){let e=pt(o[1].trim(),t,n),r=mt(o[3].trim(),n),i=e=>e==null,a=i(e)&&i(r)?!0:e===r;return o[2]===`==`?a:!a}return lt(e)&&ut(e,n),!!pt(e,t,n)}function ft(e,t){let n=[],r=0,i=null,a=``;for(let o=0;o<e.length;o++){let s=e[o];if(i){a+=s,s===i&&e[o-1]!==`\\`&&(i=null);continue}if(s===`'`||s===`"`){i=s,a+=s;continue}if(s===`(`||s===`[`?r++:(s===`)`||s===`]`)&&r--,r===0&&e.slice(o,o+t.length)===t&&e[o+t.length]!==`=`){n.push(a),a=``,o+=t.length-1;continue}a+=s}return a&&n.push(a),n}function pt(e,t,n){if(/^['"]/.test(e)||/^-?\d/.test(e)||e===`true`||e===`false`||e===`null`)return mt(e,n);let r=e.split(`.`);if(!Object.prototype.hasOwnProperty.call(t,r[0]))throw new Ze(e);let i=t;for(let e of r){if(i==null)return;i=i[e]}return i}function mt(e,t){let n=e.trim();if(n===`true`)return!0;if(n===`false`)return!1;if(n===`null`)return null;if(/^-?\d+(\.\d+)?$/.test(n))return Number(n);if(n.startsWith(`'`)&&n.endsWith(`'`)||n.startsWith(`"`)&&n.endsWith(`"`))return n.slice(1,-1);if(n.startsWith(`[`)&&n.endsWith(`]`))try{let e=n.replace(/'([^']*)'/g,(e,t)=>JSON.stringify(t));return JSON.parse(e)}catch{return st(n,t),[]}return it.test(n)&&at(n,t),n}var ht=[{value:`default`,label:`Default`,css:`#9ca3af`},{value:`blue`,label:`Blue`,css:`#3b82f6`},{value:`teal`,label:`Teal`,css:`#14b8a6`},{value:`orange`,label:`Orange`,css:`#f97316`},{value:`purple`,label:`Purple`,css:`#a855f7`},{value:`success`,label:`Success`,css:`#22c55e`},{value:`warning`,label:`Warning`,css:`#f59e0b`},{value:`danger`,label:`Danger`,css:`#ef4444`},{value:`green`,label:`Green`,css:`#22c55e`},{value:`red`,label:`Red`,css:`#ef4444`},{value:`amber`,label:`Amber`,css:`#f59e0b`}],gt=Object.fromEntries(ht.map(e=>[e.value,e.css]));function _t(e){return e?/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(e)?e:gt[e]??`#9ca3af`:`#9ca3af`}function vt({value:e,onChange:t,disabled:n,options:r,ariaLabelledBy:i,ariaLabel:a}){let o=r?r.map(e=>({value:e.value,label:e.label??e.value,css:_t(e.value)})):ht.slice(0,8),s=e??`default`;return(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,role:`radiogroup`,"aria-labelledby":i,"aria-label":a,children:o.map(e=>{let r=s===e.value;return(0,q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":r,"aria-label":e.label,title:e.label,disabled:n,onClick:()=>t(e.value),className:re(`flex h-7 w-7 items-center justify-center rounded-full border transition-all`,r?`border-transparent ring-2 ring-foreground/60 ring-offset-1 ring-offset-background`:`border-border hover:scale-110`,n&&`cursor-not-allowed opacity-50`),children:(0,q.jsx)(`span`,{className:`h-4 w-4 rounded-full`,style:{backgroundColor:e.css}})},e.value)})})}function yt(e,t){let n=he(),[r,i]=K.useState({fields:[],loading:!t&&!!e,error:null});return K.useEffect(()=>{if(t){i({fields:t,loading:!1,error:null});return}if(!e){i({fields:[],loading:!1,error:null});return}let r=!1;return i(e=>({...e,loading:!0,error:null})),n.get(`object`,e).then(e=>{if(r)return;if(!e){i({fields:[],loading:!1,error:`Object not found`});return}let t=Se(e.fields).entries.map(e=>({name:e.name,label:typeof e.def.label==`string`&&e.def.label?e.def.label:e.name,type:typeof e.def.type==`string`?e.def.type:`text`,hidden:e.def.hidden===!0}));i({fields:t,loading:!1,error:null})}).catch(e=>{r||i({fields:[],loading:!1,error:e?.message??String(e)})}),()=>{r=!0}},[n,e,t]),r}var bt=null;function xt(){return bt||=t(()=>import(`./vendor-objectstack-BeKUVjuj.js`).then(e=>e.q).then(e=>e),[],import.meta.url).catch(()=>null),bt}var St=[`record`,``],Ct=[`current_user`,`user`];async function wt(e,t={}){if(!e||!e.trim())return[];try{let n=await xt();if(!n?.validateExpression)return[];let r=n.validateExpression(t.role??`predicate`,e,{objectName:t.objectName,fields:t.fields,scope:t.scope??`flattened`}),i=[];for(let e of r?.errors??[])e?.message&&i.push({severity:`error`,message:e.message});for(let e of r?.warnings??[])e?.message&&i.push({severity:`warning`,message:e.message});if(i.every(e=>e.severity!==`error`)&&t.clause===`using`&&n.isPushdownableCel)try{let t=n.isPushdownableCel(e,{fieldRoots:St,variableRoots:Ct});t&&t.ok===!1&&t.reason!==`parse-error`&&i.push({severity:`warning`,message:`This read filter isn't a simple field comparison (${t.detail}), so the server may be unable to push it down to the query — depending on the evaluation path it can be dropped and WIDEN access. Prefer a pushdown-able predicate (field vs. value or scope variable).`})}catch{}return i}catch{return[]}}var Tt=[`number`,`text`,`boolean`,`date`,`unknown`];async function Et(e,t={}){if(!e||!e.trim())return null;try{let n=await xt();if(!n?.inferExpressionType)return null;let r=n.inferExpressionType(e,{objectName:t.objectName,fields:t.fields,scope:t.scope??`record`});return Tt.includes(r)?r:`unknown`}catch{return null}}async function Dt(e={}){let t={fields:e.fields??[],roots:e.roots??[],functions:[]};try{let n=await xt();if(!n?.introspectScope)return t;let r=n.introspectScope(e.role??`predicate`,{objectName:e.objectName,fields:e.fields,scope:e.scope??`flattened`});return{fields:r?.fields??e.fields??[],roots:e.roots??r?.roots??[],functions:r?.functions??[]}}catch{return t}}var Ot=/[A-Za-z0-9_$]/,kt=/[A-Za-z_$]/;function At(e,t){let n=t;for(;n>0&&Ot.test(e[n-1]);)n--;if(n===t)return null;let r=e.slice(n,t);return!kt.test(r[0])||n>0&&e[n-1]===`.`?null:{start:n,end:t,text:r}}function jt(e,t){let n=t;for(;n>0&&Ot.test(e[n-1]);)n--;let r=e.slice(n,t);if(r&&!kt.test(r[0])||n===0||e[n-1]!==`.`)return null;let i=n-1;for(;i>0&&Ot.test(e[i-1]);)i--;let a=e.slice(i,n-1);return!a||!kt.test(a[0])||i>0&&e[i-1]===`.`?null:{root:a,start:n,end:t,text:r}}function Mt(e){let t=new Set,n=[],r=(e,r)=>{!e||t.has(e)||(t.add(e),n.push({label:e,kind:r}))};return e.fields.forEach(e=>r(e,`field`)),e.roots.forEach(e=>r(e,`root`)),e.functions.forEach(e=>r(e,`function`)),n}function Nt(e,t,n=!1){let r=t.toLowerCase();if(!r&&!n)return[];let i=[];for(let t of e){let e=t.label.toLowerCase();if(e.startsWith(r)&&e!==r&&i.push(t),i.length>=8)break}return i}async function Pt(e,t){if(!e||!e.trim())return{status:`error`,kind:`parse`,message:`The predicate is empty.`};let n;try{n=await xt()}catch{return{status:`unavailable`}}if(!n?.ExpressionEngine?.evaluate)return{status:`unavailable`};try{let r=t.record??{},i=t.currentUser??{},a={record:r,extra:{...r,record:r,current_user:i,user:i}},o=n.ExpressionEngine.evaluate({dialect:`cel`,source:e},a);if(!o||o.ok!==!0){let e=o&&o.ok===!1?o.error:void 0;return{status:`error`,kind:e?.kind??`runtime`,message:e?.message??`Evaluation failed.`}}return o.value===!0?{status:`allow`}:o.value===!1?{status:`deny`}:{status:`value`,value:o.value}}catch(e){return{status:`error`,kind:`runtime`,message:e?.message??String(e)}}}var Ft=250,It={field:`field`,root:`scope`,function:`fn`},Lt=new Set([`record`,`previous`]),Rt=[];function zt({value:e,onChange:t,disabled:n,placeholder:r,label:i,objectName:a,fieldNames:o=Rt,clause:s,scope:l,roots:u,role:d,onLintChange:f,onInferredTypeChange:p,t:m,id:h}){let g=K.useId(),_=h??g,v=K.useRef(null),[y,b]=K.useState([]),[x,S]=K.useState(!1),[C,w]=K.useState(null),[E,D]=K.useState(null),[O,k]=K.useState(!1),[A,j]=K.useState([]),[M,N]=K.useState(0),P=K.useRef(null),F=K.useRef(null),I=o.join(`,`),te=u?u.join(`,`):``,L=K.useRef(f),R=K.useRef(p);K.useEffect(()=>{L.current=f,R.current=p}),K.useEffect(()=>{let t=!1,n=setTimeout(()=>{let n={objectName:a,fields:o,clause:s,scope:l,role:d};wt(e,n).then(e=>{t||(b(e),S(!0),L.current?.(e))}),d===`value`&&Et(e,n).then(e=>{t||(w(e),R.current?.(e))})},Ft);return()=>{t=!0,clearTimeout(n)}},[e,a,I,s,l,d]),K.useEffect(()=>{e.trim()||(b([]),S(!1),w(null),L.current?.([]),d===`value`&&R.current?.(null))},[e]),K.useEffect(()=>{let e=!1;return Dt({objectName:a,fields:o,scope:l,roots:u}).then(t=>{e||D(t)}),()=>{e=!0}},[a,I,l,te]);let z=K.useMemo(()=>E?Mt(l===`record`?{...E,fields:[]}:E):[],[E,l]),ie=K.useMemo(()=>E?E.fields.map(e=>({label:e,kind:`field`})):[],[E]);K.useEffect(()=>{if(F.current!=null&&v.current){let e=F.current;F.current=null,v.current.setSelectionRange(e,e)}},[e]);let B=K.useCallback(()=>{k(!1),j([]),P.current=null},[]),V=K.useCallback(()=>{let e=v.current;if(!e||n)return B();let t=e.value,r=e.selectionStart??t.length,i=null,a=[],o=At(t,r);if(o)i=o,a=Nt(z,o.text);else{let e=jt(t,r);e&&Lt.has(e.root)&&(i=e,a=Nt(ie,e.text,!0))}if(!i||!a.length)return B();P.current={start:i.start,end:i.end},j(a),N(0),k(!0)},[z,ie,n,B]),ae=K.useCallback(e=>{let n=P.current,r=v.current;if(!n||!r)return;let i=r.value,a=e.kind===`function`?`${e.label}(`:e.label,o=i.slice(0,n.start)+a+i.slice(n.end);F.current=n.start+a.length,B(),t(o)},[t,B]),se=K.useRef(V);K.useEffect(()=>{se.current=V},[V]),K.useEffect(()=>{v.current&&document.activeElement===v.current&&se.current()},[z,ie]);let H=e=>{!O||A.length===0||(e.key===`ArrowDown`?(e.preventDefault(),N(e=>(e+1)%A.length)):e.key===`ArrowUp`?(e.preventDefault(),N(e=>(e-1+A.length)%A.length)):e.key===`Enter`||e.key===`Tab`?(e.preventDefault(),ae(A[M])):e.key===`Escape`&&(e.preventDefault(),B()))},ce=y.filter(e=>e.severity===`error`),le=y.filter(e=>e.severity===`warning`),de=x&&!!e.trim()&&y.length===0,fe=d===`value`&&x&&!!e.trim()&&ce.length===0&&C!==null,pe=`${_}-ac`;return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(c,{className:`text-[10px] uppercase text-muted-foreground`,htmlFor:_,children:i}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(T,{ref:v,id:_,value:e,disabled:n,rows:2,placeholder:r,spellCheck:!1,autoComplete:`off`,role:`combobox`,"aria-expanded":O,"aria-autocomplete":`list`,"aria-controls":O?pe:void 0,"aria-invalid":ce.length>0||void 0,onChange:e=>{t(e.target.value),V()},onKeyDown:H,onClick:V,onBlur:()=>{window.setTimeout(()=>B(),120)},className:re(`font-mono text-xs`,ce.length>0&&`border-destructive focus-visible:ring-destructive/40`)}),O&&A.length>0&&(0,q.jsx)(`ul`,{id:pe,role:`listbox`,"aria-label":m(`perm.cel.suggestions`),className:`absolute z-50 mt-1 max-h-48 w-72 overflow-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md`,children:A.map((e,t)=>(0,q.jsxs)(`li`,{role:`option`,"aria-selected":t===M,onMouseDown:t=>{t.preventDefault(),ae(e)},onMouseEnter:()=>N(t),className:re(`flex cursor-pointer items-center justify-between gap-2 rounded-sm px-2 py-1 text-xs`,t===M?`bg-accent text-accent-foreground`:`hover:bg-accent/60`),children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e.label}),(0,q.jsx)(`span`,{className:`text-[10px] uppercase text-muted-foreground`,children:It[e.kind]})]},`${e.kind}:${e.label}`))})]}),(ce.length>0||le.length>0)&&(0,q.jsxs)(`ul`,{className:`mt-1 space-y-1`,"aria-live":`polite`,children:[ce.map((e,t)=>(0,q.jsxs)(`li`,{className:`flex items-start gap-1.5 text-[11px] text-destructive`,children:[(0,q.jsx)(oe,{className:`mt-[1px] h-3 w-3 shrink-0`}),(0,q.jsx)(`span`,{children:e.message})]},`e${t}`)),le.map((e,t)=>(0,q.jsxs)(`li`,{className:`flex items-start gap-1.5 text-[11px] text-amber-600 dark:text-amber-500`,children:[(0,q.jsx)(ue,{className:`mt-[1px] h-3 w-3 shrink-0`}),(0,q.jsx)(`span`,{children:e.message})]},`w${t}`))]}),de&&(0,q.jsxs)(`p`,{className:`mt-1 flex items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(ne,{className:`h-3 w-3 shrink-0 text-emerald-600 dark:text-emerald-500`}),m(`perm.cel.valid`)]}),fe&&(0,q.jsxs)(`p`,{className:`mt-1 flex items-start gap-1.5 text-[11px] text-muted-foreground`,"aria-live":`polite`,children:[(0,q.jsx)(ee,{className:`mt-[1px] h-3 w-3 shrink-0`}),(0,q.jsxs)(`span`,{children:[m(`perm.cel.type`),` `,(0,q.jsx)(`span`,{className:re(`font-medium`,C!==`unknown`&&`text-foreground`),children:m(`perm.cel.type.${C}`)}),C===`unknown`&&(0,q.jsxs)(q.Fragment,{children:[` — `,m(`perm.cel.type.unknownHint`)]})]})]})]})}var Bt=[{value:`==`,label:`equals`},{value:`!=`,label:`not equals`},{value:`>`,label:`greater than`},{value:`<`,label:`less than`},{value:`>=`,label:`≥`},{value:`<=`,label:`≤`},{value:`truthy`,label:`is set / true`},{value:`falsy`,label:`is empty / false`}],Vt=[{value:`record.id`,label:`record.id`},{value:`user.id`,label:`user.id`},{value:`user.email`,label:`user.email`},{value:`user.role`,label:`user.role`},{value:`user.isAdmin`,label:`user.isAdmin`},{value:`org.id`,label:`org.id`}],Ht=e=>e.replace(/\s+/g,` `).trim(),Ut=RegExp(`^(?:${[`record`,`previous`,`parent`,`user`,`current_user`,`org`].join(`|`)})(?:\\.[A-Za-z_][A-Za-z0-9_]*)+$`);function Wt(e,t=`'`){let n=e.trim();return n===`true`||n===`false`||n===`null`||n!==``&&!Number.isNaN(Number(n))||Ut.test(n)?n:`${t}${t===`'`?n.replace(/'/g,`\\'`):n.replace(/"/g,`\\"`)}${t}`}function Gt(e){let t=e.trim(),n=/^'(.*)'$/.exec(t);if(n)return{value:n[1].replace(/\\'/g,`'`),quote:`'`};let r=/^"(.*)"$/.exec(t);return r?{value:r[1].replace(/\\"/g,`"`),quote:`"`}:{value:t}}function Kt(e,t){return e.filter(e=>e.subject).map(e=>e.op===`truthy`?e.subject:e.op===`falsy`?`!${e.subject}`:`${e.subject} ${e.op} ${Wt(e.value,e.quote)}`).join(` ${t} `)}function qt(e){let t=Ht(e);if(!t)return{rows:[],join:`&&`};let n=t.includes(`&&`),r=t.includes(`||`);if(n&&r)return null;let i=r?`||`:`&&`,a=t.split(r?`||`:`&&`).map(e=>e.trim()),o=[];for(let e of a){let t=/^([a-zA-Z_][\w.]*)\s*(==|!=|>=|<=|>|<)\s*(.+)$/.exec(e);if(t){let e=Gt(t[3]);o.push({subject:t[1],op:t[2],value:e.value,quote:e.quote});continue}let n=/^!\s*([a-zA-Z_][\w.]*)$/.exec(e);if(n){o.push({subject:n[1],op:`falsy`,value:``});continue}let r=/^([a-zA-Z_][\w.]*)$/.exec(e);if(r){o.push({subject:r[1],op:`truthy`,value:``});continue}return null}return{rows:o,join:i}}function Jt(e){let t=qt(e||``);return t&&Ht(Kt(t.rows,t.join))===Ht(e||``)?{rows:t.rows,join:t.join,raw:!1}:{rows:[],join:`&&`,raw:!!e}}function Yt({label:e,value:t,onCommit:n,objectName:r,fields:i,disabled:a,onBlockingIssuesChange:o,subjects:s}){let{fields:l}=yt(r),u=i??l,d=s?.fieldPrefix??`record.`,h=s?.includePrevious??!1,g=s?.context??Vt,_=K.useMemo(()=>{let e=u.filter(e=>!e.hidden),t=e.map(e=>({value:`${d}${e.name}`,label:`${d}${e.name}`})),n=h?[{value:`previous`,label:`previous`},...e.map(e=>({value:`previous.${e.name}`,label:`previous.${e.name}`}))]:[],r=g.map(e=>({value:e.value,label:e.label??e.value}));return[...t,...n,...r]},[u,d,h,g]),y=U(),b=K.useCallback(e=>G(e,y),[y]),x=K.useMemo(()=>u.filter(e=>!e.hidden).map(e=>e.name),[u]),C=K.useMemo(()=>Jt(t),[]),[w,T]=K.useState(C.rows),[E,O]=K.useState(C.join),[k,A]=K.useState(C.raw),M=K.useRef(t||``);K.useEffect(()=>{let e=t||``;if(e===M.current)return;M.current=e;let n=Jt(e);T(n.rows),O(n.join),A(n.raw)},[t]);let N=(e,t)=>{let r=Kt(e,t);M.current=r,n(r)},P=(e,t=E)=>{T(e),O(t),N(e,t)},[ee,I]=K.useState(0),te=K.useCallback(e=>{let t=e.filter(e=>e.severity===`error`).length;I(e=>e===t?e:t)},[]),L=k?ee:0,R=K.useRef(o);K.useEffect(()=>{R.current=o}),K.useEffect(()=>{R.current?.(L)},[L]);let z=Kt(w,E);return k?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e?(0,q.jsx)(c,{className:`text-xs text-muted-foreground`,children:e}):(0,q.jsx)(`span`,{}),(0,q.jsxs)(`button`,{type:`button`,disabled:a,onClick:()=>{let e=Jt(t);(!t||!e.raw)&&(T(e.rows),O(e.join),A(!1))},className:`inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,children:[(0,q.jsx)(D,{className:`h-3 w-3`}),` Builder`]})]}),(0,q.jsx)(zt,{label:b(`engine.condition.celLabel`),value:t,onChange:e=>{M.current=e,n(e)},onLintChange:te,disabled:a,placeholder:`record.status != 'done' && user.isAdmin`,objectName:r,fieldNames:x,t:b}),t&&!qt(t)&&(0,q.jsx)(`div`,{className:`text-[10px] text-muted-foreground/70`,children:b(`engine.condition.advancedHint`)})]}):(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e?(0,q.jsx)(c,{className:`text-xs text-muted-foreground`,children:e}):(0,q.jsx)(`span`,{}),(0,q.jsxs)(`button`,{type:`button`,disabled:a,onClick:()=>A(!0),className:`inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,children:[(0,q.jsx)(fe,{className:`h-3 w-3`}),` Expression`]})]}),w.length===0?(0,q.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2 text-center text-[11px] text-muted-foreground`,children:`Always — no condition.`}):(0,q.jsx)(`div`,{className:`space-y-1.5`,children:w.map((e,t)=>(0,q.jsxs)(`div`,{className:`space-y-1 rounded-md border border-border p-1.5`,children:[t>0&&(0,q.jsx)(`div`,{className:`flex justify-center`,children:(0,q.jsxs)(H,{value:E,onValueChange:e=>P(w,e),disabled:a,children:[(0,q.jsx)(p,{className:`h-6 w-16 text-[10px]`,children:(0,q.jsx)(S,{})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:`&&`,children:`AND`}),(0,q.jsx)(m,{value:`||`,children:`OR`})]})]})}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,q.jsxs)(H,{value:e.subject,onValueChange:e=>P(w.map((n,r)=>r===t?{...n,subject:e}:n)),disabled:a,children:[(0,q.jsx)(p,{className:`h-7 text-xs`,children:(0,q.jsx)(S,{placeholder:`field / context`})}),(0,q.jsxs)(j,{children:[_.map(e=>(0,q.jsx)(m,{value:e.value,children:e.label},e.value)),e.subject&&!_.some(t=>t.value===e.subject)&&(0,q.jsx)(m,{value:e.subject,children:e.subject})]})]})}),(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,disabled:a,"aria-label":`Remove condition`,onClick:()=>P(w.filter((e,n)=>n!==t)),children:(0,q.jsx)(B,{className:`h-3.5 w-3.5`})})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(`div`,{className:`w-28 shrink-0`,children:(0,q.jsxs)(H,{value:e.op,onValueChange:e=>P(w.map((n,r)=>r===t?{...n,op:e}:n)),disabled:a,children:[(0,q.jsx)(p,{className:`h-7 text-xs`,children:(0,q.jsx)(S,{})}),(0,q.jsx)(j,{children:Bt.map(e=>(0,q.jsx)(m,{value:e.value,children:e.label},e.value))})]})}),e.op!==`truthy`&&e.op!==`falsy`&&(0,q.jsx)(v,{className:`h-7 flex-1 text-xs`,value:e.value,placeholder:`value`,disabled:a,onChange:e=>P(w.map((n,r)=>r===t?{...n,value:e.target.value}:n))})]})]},t))}),!a&&(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>P([...w,{subject:``,op:`truthy`,value:``}]),children:[(0,q.jsx)(f,{className:`mr-1 h-3.5 w-3.5`}),` Add condition`]}),z&&(0,q.jsx)(`div`,{className:`rounded bg-muted/40 px-2 py-1 text-[10px] font-mono text-muted-foreground break-all`,children:z})]})}function Xt(e){return typeof e==`number`&&Number.isFinite(e)}function Zt(e){let t=e.position;if(Xt(t?.x)&&Xt(t?.y))return{x:t.x,y:t.y};let n=e.ui;return Xt(n?.x)&&Xt(n?.y)?{x:n.x,y:n.y}:null}function Qt(e){return Zt(e)!==null}function $t(e){return e.some(e=>e&&`ui`in e)?e.map(e=>{if(!e||!(`ui`in e))return e;let{ui:t,...n}=e,r=Zt(e);return r?{...n,position:r}:n}):e}function en(e){if(!e||typeof e!=`object`)return null;let t=e;return!Array.isArray(t.nodes)||t.nodes.length===0?null:{nodes:t.nodes,edges:Array.isArray(t.edges)?t.edges:[]}}function tn(e){let t=e.config??{};switch(e.type){case`loop`:{let e=en(t.body);return e?[{key:`body`,label:void 0,...e}]:[]}case`parallel`:{let e=[];return(Array.isArray(t.branches)?t.branches:[]).forEach((t,n)=>{let r=en(t);if(!r)return;let i=t.name;e.push({key:`branch-${n}`,label:typeof i==`string`&&i?i:`Branch ${n+1}`,...r})}),e}case`try_catch`:{let e=[],n=en(t.try);n&&e.push({key:`try`,label:`Try`,...n});let r=en(t.catch);return r&&e.push({key:`catch`,label:`Catch`,...r}),e}default:return[]}}function nn(e,t,n=()=>66){let r=new Map,i=new Map(e.map(e=>[e.id,n(e)]));if(e.length===0)return{positions:r,heights:i,size:{width:28,height:28}};let a=new Map(e.map(e=>[e.id,e])),o=new Map(e.map((e,t)=>[e.id,t])),s=new Map,c=new Map;for(let t of e)c.set(t.id,0);for(let e of t)!a.has(e.source)||!a.has(e.target)||e.source===e.target||un(e)||(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e.target),c.set(e.target,(c.get(e.target)??0)+1));let l=[];for(let t of e)t.type===`start`&&l.push(t.id);for(let t of e)(c.get(t.id)??0)===0&&!l.includes(t.id)&&l.push(t.id);l.length===0&&l.push(e[0].id);let u=new Map,d=[];for(let e of l)u.set(e,0),d.push(e);let f=e.length*Math.max(1,t.length)+e.length+1,p=0;for(;d.length&&p<f;){p+=1;let e=d.shift(),t=u.get(e)??0;for(let n of s.get(e)??[]){let e=t+1;(u.get(n)??-1)<e&&(u.set(n,e),d.push(n))}}let m=0;for(let e of u.values())m=Math.max(m,e);for(let t of e)u.has(t.id)||(m+=1,u.set(t.id,m));let h=new Map;for(let t of e){let e=u.get(t.id)??0;h.has(e)||h.set(e,[]),h.get(e).push(t.id)}for(let e of h.values())e.sort((e,t)=>(o.get(e)??0)-(o.get(t)??0));let g=[...h.keys()].sort((e,t)=>e-t),_=0,v;for(let e of g){v!==void 0&&(_+=(e-v-1)*122);let t=h.get(e),n=-(t.length*240+(t.length-1)*44)/2,o=66;t.forEach((e,t)=>{r.set(e,{x:n+t*284,y:_});let s=a.get(e);s&&!Qt(s)&&(o=Math.max(o,i.get(e)??66))}),_+=o+56,v=e}let y=1/0,b=1/0;for(let e of r.values())y=Math.min(y,e.x),b=Math.min(b,e.y);if(Number.isFinite(y)&&Number.isFinite(b)){let e=28-y,t=28-b;for(let[n,i]of r)r.set(n,{x:i.x+e,y:i.y+t})}for(let t of e){let e=Zt(t);e&&r.set(t.id,{x:Math.max(0,e.x),y:Math.max(0,e.y)})}let x=0,S=0;for(let[e,t]of r)x=Math.max(x,t.x+240),S=Math.max(S,t.y+(i.get(e)??66));return{positions:r,heights:i,size:{width:x+28,height:S+28}}}function rn(e,t){return nn(e,t).positions}function an(e){let t=0,n=0;for(let r of e.values())t=Math.max(t,r.x+240),n=Math.max(n,r.y+66);return{width:t+28,height:n+28}}function on(e,t=66){return{x:e.x+120,y:e.y+t}}function sn(e){return{x:e.x+120,y:e.y}}function cn(e,t){let n=Math.max(Math.abs(t.y-e.y)*.5,24),r={x:e.x,y:e.y+n},i={x:t.x,y:t.y-n};return`M ${e.x},${e.y} C ${r.x},${r.y} ${i.x},${i.y} ${t.x},${t.y}`}function ln(e,t){return{x:(e.x+t.x)/2,y:(e.y+t.y)/2}}function un(e){return e.type===`back`}function dn(e){return{x:e.x+240,y:e.y+33}}function fn(e,t){return Math.max(64,Math.abs(t.y-e.y)*.35)}function pn(e,t){let n=fn(e,t),r={x:e.x+n,y:e.y},i={x:t.x+n,y:t.y};return`M ${e.x},${e.y} C ${r.x},${r.y} ${i.x},${i.y} ${t.x},${t.y}`}function mn(e,t){let n=fn(e,t);return{x:Math.max(e.x,t.x)+n*.75,y:(e.y+t.y)/2}}function hn(e,t){return e.id||`${e.source}->${e.target}#${t}`}function gn(e){if(e){if(typeof e==`string`)return e;if(typeof e==`object`&&typeof e.source==`string`)return e.source}}function _n(e){return gn(e)??``}function vn(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return typeof e.dialect==`string`?e:void 0}function yn(e,t){if(!t)return;let n=vn(e);if(!n)return t;let r={...n,source:t};return delete r.ast,r}var Y={status:`idle`};function X(e,t){return e.status===`loaded`?e.data:t}function bn(e,t){return e.status===`loaded`?{status:`loaded`,data:t(e.data)}:e}function xn(e){return{status:`loaded`,data:e}}function Sn(e){return{status:`error`,message:e}}function Cn(e){if(e instanceof Error&&e.message)return e.message;let t=e?.message;return typeof t==`string`&&t?t:String(e)}function wn(e,t){return e.status===`loaded`?e.data:t}function Tn(e){return e.status===`loading`}function En(e){return e.status===`error`?e.message:void 0}function Dn(e){let[t,n]=K.useState(()=>e?{status:`loading`}:{status:`idle`});return K.useEffect(()=>{if(!e){n({status:`idle`});return}let t=!1;return n({status:`loading`}),(async()=>{try{let r=await e();t||n({status:`loaded`,data:r})}catch(e){t||n({status:`error`,message:Cn(e)})}})(),()=>{t=!0}},[e]),t}var On=[],kn=[],An=[],jn=[];function Z({message:e,testId:t}){let n=U();return(0,q.jsxs)(`div`,{"data-testid":t,role:`status`,className:`rounded border border-amber-200 bg-amber-50 p-2 text-xs text-amber-900`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium`,children:[(0,q.jsx)(ue,{className:`h-3.5 w-3.5 shrink-0`}),G(`engine.form.optionsLoadFailedTitle`,n)]}),(0,q.jsx)(`p`,{className:`mt-1 text-amber-800`,children:G(`engine.form.optionsLoadFailedDesc`,n)}),e?(0,q.jsx)(`p`,{"data-testid":`${t}-cause`,className:`mt-1 max-w-full break-words font-mono text-[10px] text-amber-700`,children:e}):null]})}function Mn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.objectNames??Y,s=t==null?``:String(t);if(o.status===`error`)return(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsx)(Z,{message:o.message,testId:`ref-object-load-failed`}),(0,q.jsx)(v,{id:e,value:s,disabled:r,onChange:e=>n(e.target.value||void 0)})]});if(Tn(o))return(0,q.jsx)(v,{id:e,value:s,disabled:!0,placeholder:G(`engine.form.loadingObjects`,a)});let c=X(o,On);return c.length===0?(0,q.jsx)(v,{id:e,value:s,disabled:r,onChange:e=>n(e.target.value||void 0),placeholder:G(`engine.form.noObjects`,a)}):(0,q.jsxs)(H,{value:s,onValueChange:e=>n(e||void 0),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectObject`,a)})}),(0,q.jsx)(j,{children:c.map(e=>(0,q.jsx)(m,{value:e,children:e},e))})]})}function Nn(e){let t=[],n=new Set,r=e=>{if(!e||typeof e!=`object`)return;let r=e,a=r.id;typeof a==`string`&&a&&!n.has(a)&&(n.add(a),t.push({id:a,type:typeof r.type==`string`?r.type:void 0,label:typeof r.label==`string`?r.label:void 0})),i(r.components),i(r.children);let o=r.properties;o&&typeof o==`object`&&(i(o.components),i(o.children))},i=e=>{if(Array.isArray(e))for(let t of e)r(t)};if(e&&typeof e==`object`){let t=e.regions;if(Array.isArray(t))for(let e of t)e&&typeof e==`object`&&i(e.components)}return t}function Pn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.componentIds??[],s=t==null?``:String(t);if(o.length===0)return(0,q.jsx)(v,{id:e,value:s,disabled:r,onChange:e=>n(e.target.value||void 0),placeholder:G(`engine.form.noComponents`,a)});let c=!s||o.some(e=>e.id===s);return(0,q.jsxs)(H,{value:s||Q,onValueChange:e=>n(e===Q?void 0:e),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectComponent`,a)})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:Q,children:(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:G(`engine.form.none`,a)})}),!c&&s&&(0,q.jsx)(m,{value:s,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:s}),(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,a)})]})}),o.map(e=>(0,q.jsx)(m,{value:e.id,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e.id}),(e.label||e.type)&&(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.label||e.type})]})},e.id))]})]})}function Fn({id:e,value:t,onChange:n,readOnly:r,context:i,fieldSpec:a}){let o=U(),s=i?.objectNames??Y,c=a?.multiple??!1,l=K.useMemo(()=>t?Array.isArray(t)?t.map(String):String(t).split(`,`).map(e=>e.trim()).filter(Boolean):[],[t]),u=e=>{if(!r){if(!c){n(e);return}n(l.includes(e)?l.filter(t=>t!==e):[...l,e])}},d=e=>{if(r)return;let t=l.filter(t=>t!==e);n(c?t:``)};if(Tn(s))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingObjects`,o),readOnly:!0,disabled:!0});let f=l.length>0&&(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:l.map(e=>(0,q.jsxs)(`div`,{className:`inline-flex items-center gap-1 rounded bg-secondary px-2 py-1 text-sm`,children:[(0,q.jsx)(`span`,{children:e}),!r&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>d(e),className:`text-muted-foreground hover:text-foreground`,children:`×`})]},e))});if(s.status===`error`)return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[f,(0,q.jsx)(Z,{message:s.message,testId:`object-selector-load-failed`})]});let h=X(s,On);return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[f,(0,q.jsxs)(H,{value:``,onValueChange:u,disabled:r||h.length===0,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(c?`engine.form.addObjects`:`engine.form.selectObject`,o)})}),(0,q.jsx)(j,{children:h.map(e=>(0,q.jsxs)(m,{value:e,disabled:!c&&l.includes(e),children:[e,l.includes(e)&&` ✓`]},e))})]})]})}var In=[];async function Ln(e){let t=await fetch(`/api/v1/objects/${e}/fields`),n=null;try{n=await t.json()}catch{}if(!t.ok){let e=n?.error?.message??n?.error??n?.message;throw Error(typeof e==`string`&&e?e:`HTTP ${t.status}`)}return Array.isArray(n?.fields)?n.fields:[]}function Rn({id:e,value:t,onChange:n,readOnly:r,fieldSpec:i,formData:a}){let o=U(),s=i?.dependsOn||i?.reference||`objectName`,c=Array.isArray(s)?s[0]:s,l=a?.[c],u=Dn(K.useMemo(()=>l?()=>Ln(l):null,[l])),d=wn(u,In),f=En(u),h=i?.multiple??!1,g=K.useMemo(()=>t?Array.isArray(t)?t.map(String):String(t).split(`,`).map(e=>e.trim()).filter(Boolean):[],[t]),_=e=>{if(!r){if(!h){n(e);return}n(g.includes(e)?g.filter(t=>t!==e):[...g,e])}},y=e=>{if(r)return;let t=g.filter(t=>t!==e);n(h?t:``)};if(!l)return(0,q.jsx)(v,{id:e,value:G(`engine.form.selectObjectFirst`,o),readOnly:!0,disabled:!0});if(Tn(u))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingFields`,o),readOnly:!0,disabled:!0});let b=g.length>0&&(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:g.map(e=>{let t=d.find(t=>t.name===e);return(0,q.jsxs)(`div`,{className:`inline-flex items-center gap-1 rounded bg-secondary px-2 py-1 text-sm`,children:[(0,q.jsx)(`span`,{children:t?.label||e}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:t?.type}),!r&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>y(e),className:`text-muted-foreground hover:text-foreground`,children:`×`})]},e)})});return f?(0,q.jsxs)(`div`,{className:`space-y-2`,children:[b,(0,q.jsx)(Z,{message:f,testId:`field-selector-load-failed`})]}):(0,q.jsxs)(`div`,{className:`space-y-2`,children:[b,(0,q.jsxs)(H,{value:``,onValueChange:_,disabled:r||d.length===0,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(h?`engine.form.addFields`:`engine.form.selectField`,o)})}),(0,q.jsx)(j,{children:d.map(e=>(0,q.jsx)(m,{value:e.name,disabled:!h&&g.includes(e.name),children:(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.type}),g.includes(e.name)&&` ✓`]})},e.name))})]})]})}function zn({schema:e,value:t,onChange:n,readOnly:r,context:i,ariaLabelledBy:a}){let o=U(),s=e;if(s?.anyOf||s?.oneOf){let e=(s.anyOf??s.oneOf).find(e=>e?.type===`array`&&e?.items?.type===`object`);e&&(s={...s,...e})}let c=s?.items??{},l=c.properties??{},u=new Set(Array.isArray(c.required)?c.required:[]),d=Array.isArray(t)?t:[],p=Object.keys(l);if(p.length===0)return(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":a,className:`rounded border border-dashed border-amber-500/40 bg-amber-500/5 p-2 text-xs text-amber-700 dark:text-amber-300`,children:G(`engine.form.masterDetailSchemaError`,o)});function m(e,t){let r=d.slice();r[e]={...r[e]??{},...t},n(r)}function h(){n([...d,{}])}function g(e){let t=d.slice();t.splice(e,1),n(t)}return(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":a,children:[(0,q.jsx)(`div`,{className:`overflow-x-auto rounded border border-border/40`,children:(0,q.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,q.jsx)(`thead`,{className:`bg-muted/40`,children:(0,q.jsxs)(`tr`,{children:[p.map(e=>(0,q.jsxs)(`th`,{className:`px-2 py-1.5 text-left text-xs font-medium text-muted-foreground`,children:[l[e]?.title??e,u.has(e)&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]},e)),(0,q.jsx)(`th`,{className:`w-8`})]})}),(0,q.jsxs)(`tbody`,{children:[d.length===0&&(0,q.jsx)(`tr`,{children:(0,q.jsx)(`td`,{colSpan:p.length+1,className:`px-2 py-3 text-center text-xs text-muted-foreground`,children:G(`engine.form.noRows`,o)})}),d.map((e,t)=>(0,q.jsxs)(`tr`,{className:`border-t border-border/30`,children:[p.map(n=>(0,q.jsx)(`td`,{className:`p-1`,children:(0,q.jsx)(Bn,{schema:l[n],value:(e??{})[n],readOnly:r,context:i,onChange:e=>m(t,{[n]:e})})},n)),(0,q.jsx)(`td`,{className:`p-1 text-right`,children:(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>g(t),disabled:r,className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.removeRow`,o),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})})]},t))]})]})}),(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:h,disabled:r,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.addRow`,o)]})]})}function Bn({schema:e,value:t,readOnly:n,context:r,onChange:i}){if(e?.widget===`ref:object`)return(0,q.jsx)(Mn,{schema:e,value:t,onChange:i,readOnly:n,context:r});if(e?.widget===`ref:component`)return(0,q.jsx)(Pn,{schema:e,value:t,onChange:i,readOnly:n,context:r});let a=e?.enum;return Array.isArray(a)&&a.length>0?(0,q.jsxs)(H,{value:t==null?``:String(t),onValueChange:e=>i(e||void 0),disabled:n,children:[(0,q.jsx)(p,{className:`h-8 text-xs`,children:(0,q.jsx)(S,{placeholder:`—`})}),(0,q.jsx)(j,{children:a.map(e=>(0,q.jsx)(m,{value:String(e),children:String(e)},String(e)))})]}):e?.type===`boolean`?(0,q.jsx)(`input`,{type:`checkbox`,checked:!!t,disabled:n,onChange:e=>i(e.target.checked),className:`h-4 w-4`}):e?.type===`number`||e?.type===`integer`?(0,q.jsx)(v,{type:`number`,value:t==null?``:String(t),disabled:n,onChange:e=>{let t=e.target.valueAsNumber;i(Number.isFinite(t)?t:void 0)},className:`h-8 text-xs`}):(0,q.jsx)(v,{value:t==null?``:String(t),disabled:n,onChange:e=>i(e.target.value||void 0),className:`h-8 text-xs`})}function Vn({id:e,value:t,onChange:n,readOnly:r}){let i=U(),a=Array.isArray(t)?t:[],[o,s]=K.useState(``);function c(e){let t=e.split(/[,\n]/).map(e=>e.trim()).filter(Boolean);if(t.length===0)return;let r=[...a];for(let e of t)r.includes(e)||r.push(e);n(r),s(``)}function l(e){let t=a.slice();t.splice(e,1),n(t)}return(0,q.jsx)(`div`,{className:`rounded border border-input bg-background p-1.5`,children:(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[a.map((e,t)=>(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-xs`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e}),!r&&(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>l(t),className:`text-muted-foreground hover:text-destructive`,children:`×`})]},t)),(0,q.jsx)(`input`,{id:e,type:`text`,value:o,disabled:r,placeholder:a.length===0?G(`engine.form.tagsPlaceholder`,i):``,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),c(o)):e.key===`Backspace`&&!o&&a.length>0&&l(a.length-1)},onBlur:()=>o&&c(o),className:`min-w-[8rem] flex-1 bg-transparent text-sm outline-none`})]})})}function Hn(e){return e.replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Un({value:e,onChange:t,readOnly:n,schema:r,fieldSpec:i,formData:o,ariaLabelledBy:s}){let c=a(),l=K.useMemo(()=>{if(Array.isArray(i?.options)&&i.options.length)return i.options.map(e=>({label:e.label,value:e.value,visibleWhen:e.visibleWhen}));let e=r?.items?.enum??r?.enum??[];return(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`).map(e=>({label:Hn(e),value:e}))},[i,r]),u=K.useMemo(()=>Ye(l,J(o,c)),[l,o,c]),d=K.useMemo(()=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],[e]);function f(e){if(n)return;let r=new Set(d);r.has(e)?r.delete(e):r.add(e);let i=l.map(e=>e.value).filter(e=>r.has(e));t(i.length?i:void 0)}return l.length===0?(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":s,children:(0,q.jsx)(Vn,{value:e,onChange:t,readOnly:n,schema:r,fieldSpec:i})}):(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,role:`group`,"aria-labelledby":s,children:u.map(e=>{let t=d.includes(e.value);return(0,q.jsxs)(`button`,{type:`button`,role:`checkbox`,"aria-checked":t,disabled:n,onClick:()=>f(e.value),className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium transition-colors `+(t?`border-primary bg-primary/10 text-primary`:`border-input bg-background text-muted-foreground hover:text-foreground hover:bg-muted`)+(n?` opacity-60 cursor-not-allowed`:``),children:[(0,q.jsx)(`span`,{"aria-hidden":!0,className:`flex h-3.5 w-3.5 items-center justify-center rounded-[3px] border text-[9px] leading-none `+(t?`border-primary bg-primary text-primary-foreground`:`border-muted-foreground/40`),children:t?`✓`:``}),e.label]},e.value)})})}var Q=`__none__`;function Wn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.objectFields??Y,s=t==null?``:String(t);if(o.status===`error`)return(0,q.jsx)(Z,{message:o.message,testId:`field-ref-load-failed`});if(Tn(o))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingOptions`,a),readOnly:!0,disabled:!0});let c=X(o,kn),l=!s||c.some(e=>e.name===s);return(0,q.jsxs)(H,{value:s||Q,onValueChange:e=>n(e===Q?``:e),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:c.length?G(`engine.form.selectField`,a):G(`engine.form.noObjectBound`,a)})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:Q,children:(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:G(`engine.form.none`,a)})}),!l&&s&&(0,q.jsxs)(m,{value:s,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:s}),(0,q.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,a)})]}),c.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))]})]})}function Gn(e,t){let n=t?e.find(e=>e.name===t):void 0,r=t&&!n?e.find(e=>e.name.endsWith(`.${t}`)):void 0,i=t==="default"||t===`list`;return{exact:n,suffixMatch:r,isSpecial:i,resolves:!!n||!!r||i,showStored:!!t&&!n}}function Kn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.objectViews??Y,s=t==null?``:String(t);if(o.status===`error`)return(0,q.jsx)(Z,{message:o.message,testId:`view-ref-load-failed`});if(Tn(o))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingOptions`,a),readOnly:!0,disabled:!0});let c=X(o,An),{suffixMatch:l,resolves:u,showStored:d}=Gn(c,s);return(0,q.jsxs)(H,{value:s||Q,onValueChange:e=>n(e===Q?void 0:e),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:c.length?G(`engine.form.selectEllipsis`,a):G(`engine.form.noObjectBound`,a)})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:Q,children:(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:G(`engine.form.none`,a)})}),d&&(0,q.jsx)(m,{value:s,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:l?.label||s}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:l?`\u2192 ${l.name}`:s}),!u&&(0,q.jsx)(`span`,{className:`ml-1 text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,a)})]})}),c.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))]})]})}function qn({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=U(),o=r?.objectFields??Y,s=En(o),c=o.status===`error`?kn:X(o,kn),l=Array.isArray(e)?e.map(String):typeof e==`string`&&e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],u=e=>c.find(t=>t.name===e)?.label||e,d=c.filter(e=>!l.includes(e.name)),f=e=>{l.includes(e)||t([...l,e])},h=e=>{let n=l.slice();n.splice(e,1),t(n)},g=(e,n)=>{let r=e+n;if(r<0||r>=l.length)return;let i=l.slice();[i[e],i[r]]=[i[r],i[e]],t(i)};return(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":i,children:[l.length>0&&(0,q.jsx)(`div`,{className:`space-y-1`,children:l.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-1 rounded border border-input bg-background px-2 py-1 text-sm`,children:[(0,q.jsxs)(`span`,{className:`flex-1 truncate`,children:[u(e),(0,q.jsx)(`code`,{className:`ml-2 text-xs text-muted-foreground`,children:e})]}),!n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move up`,disabled:t===0,onClick:()=>g(t,-1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↑`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move down`,disabled:t===l.length-1,onClick:()=>g(t,1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↓`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>h(t),className:`px-1 text-muted-foreground hover:text-destructive`,children:`×`})]})]},e))}),s&&(0,q.jsx)(Z,{message:s,testId:`field-multi-load-failed`}),!n&&(0,q.jsxs)(H,{value:``,onValueChange:f,disabled:d.length===0,children:[(0,q.jsx)(p,{"aria-label":G(`engine.form.addField`,a),children:(0,q.jsx)(S,{placeholder:s?G(`engine.form.optionsLoadFailedTitle`,a):c.length?d.length?G(`engine.form.addField`,a):G(`engine.form.allFieldsAdded`,a):G(`engine.form.noObjectBound`,a)})}),(0,q.jsx)(j,{children:d.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))})]})]})}var Jn=y,Yn=new Set(Jn),Xn=120;function Zn({id:e,value:t,onChange:n,readOnly:r}){let i=U(),a=t==null?``:String(t),[o,s]=K.useState(!1),[c,l]=K.useState(``),d=a?w(a):``,f=!a||Yn.has(d),p=w(c.trim()),m=K.useMemo(()=>p?Jn.filter(e=>e.includes(p)):Jn,[p]),h=m.slice(0,Xn),g=m.length>h.length,_=e=>{n(e||void 0),s(!1),l(``)};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`button`,{id:e,type:`button`,role:`combobox`,"aria-haspopup":`dialog`,"aria-expanded":o,disabled:r,onClick:()=>!r&&s(!0),className:`flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm text-left disabled:cursor-not-allowed disabled:opacity-60`,children:[(0,q.jsx)(ie,{name:f?a:void 0,className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`flex-1 truncate `+(a?`font-mono`:`text-muted-foreground`),children:a||G(`engine.form.selectEllipsis`,i)}),!f&&a&&(0,q.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,i)}),(0,q.jsx)(L,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0 opacity-50`})]}),(0,q.jsx)(se,{open:o,onOpenChange:e=>{s(e),e||l(``)},children:(0,q.jsxs)(de,{className:`max-w-2xl`,children:[(0,q.jsx)(O,{children:(0,q.jsx)(u,{children:G(`engine.form.chooseIcon`,i)})}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-input bg-background px-3 py-2`,children:[(0,q.jsx)(te,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`input`,{type:`text`,autoFocus:!0,value:c,"aria-label":G(`engine.form.searchIcons`,i),placeholder:G(`engine.form.searchIcons`,i),onChange:e=>l(e.target.value),className:`w-full bg-transparent text-sm outline-none`})]}),(0,q.jsxs)(`div`,{id:e?`${e}-listbox`:void 0,role:`listbox`,className:`grid max-h-[52vh] grid-cols-6 gap-1.5 overflow-y-auto pr-1 sm:grid-cols-8`,children:[a&&(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!1,title:G(`engine.form.none`,i),onClick:()=>_(void 0),className:`flex aspect-square flex-col items-center justify-center gap-1 rounded border border-dashed border-border p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:[(0,q.jsx)(E,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight`,children:`none`})]}),!f&&a&&(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!0,title:a,onClick:()=>_(a),className:`flex aspect-square flex-col items-center justify-center gap-1 rounded bg-accent p-1 text-accent-foreground ring-1 ring-primary`,children:[(0,q.jsx)(ie,{name:void 0,className:`h-4 w-4`}),(0,q.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight`,children:a})]}),h.map(e=>{let t=e===d;return(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t,title:e,onClick:()=>_(e),className:`flex aspect-square flex-col items-center justify-center gap-1 rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground `+(t?`bg-accent text-accent-foreground ring-1 ring-primary`:``),children:[(0,q.jsx)(ie,{name:e,className:`h-5 w-5`}),(0,q.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight`,children:e})]},e)}),h.length===0&&(0,q.jsx)(`p`,{className:`col-span-full px-2 py-6 text-center text-sm text-muted-foreground`,children:G(`engine.form.noMatchingIcons`,i)})]}),g&&(0,q.jsx)(`p`,{className:`text-center text-xs text-muted-foreground`,children:W(`engine.form.iconsTruncated`,i,{shown:h.length,total:m.length})})]})})]})}var Qn=[{key:`none`,label:`None`},{key:`tabs`,label:`Tabs`},{key:`dropdown`,label:`Dropdown`}],$n=e=>(e||``).trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`tab`;function er({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=e&&typeof e==`object`?e:void 0,o=a?.element??(a?`dropdown`:`none`),s=r?.objectFields??Y,c=En(s),l=s.status===`error`?kn:X(s,kn),u=e=>{if(!n){if(e===`none`){t(void 0);return}t({...a??{},element:e})}},d=Array.isArray(a?.fields)?a.fields:[],h=e=>t({...a??{},element:o===`none`?`dropdown`:o,fields:e}),g=new Set(d.map(e=>e.field)),_=l.filter(e=>!g.has(e.name)),y=e=>l.find(t=>t.name===e)?.label||e,b=o===`dropdown`||o===`toggle`,x=(Array.isArray(a?.tabs)?a.tabs:[]).map(e=>({...e,name:e?.name??e?.id??``,label:typeof e?.label==`string`?e.label:e?.name??e?.id??``,filter:Array.isArray(e?.filter)?e.filter:Array.isArray(e?.filters)?e.filters.filter(e=>Array.isArray(e)&&e.length>=2).map(e=>({field:String(e[0]),operator:String(e[1]),value:e[2]})):[],isDefault:e?.isDefault??e?.default})),C=e=>{let t={name:$n(e.label||e.name),label:e.label||e.name||`Tab`};return e.icon&&(t.icon=e.icon),t.filter=Array.isArray(e.filter)?e.filter:[],e.isDefault&&(t.isDefault=!0),t},w=e=>{let n={},r=e.map(C).map(e=>{let t=e.name;if(n[t]){let r=2;for(;n[`${e.name}_${r}`];)r++;t=`${e.name}_${r}`}return n[t]=!0,{...e,name:t}});t({...a??{},element:`tabs`,tabs:r})},T=()=>w([...x,{name:``,label:`Tab ${x.length+1}`,filter:[]}]),D=e=>w(x.filter((t,n)=>n!==e)),O=(e,t)=>{let n=[...x],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],w(n))},k=(e,t)=>w(x.map((n,r)=>r===e?{...n,...t}:n));return(0,q.jsxs)(`div`,{className:`space-y-3`,role:`group`,"aria-labelledby":i,children:[(0,q.jsx)(`div`,{className:`inline-flex rounded-md border border-input bg-background p-0.5`,role:`radiogroup`,"aria-label":`Filter element`,children:Qn.map(e=>{let t=o===e.key;return(0,q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":t,"data-testid":`filter-mode-${e.key}`,disabled:n,onClick:()=>u(e.key),className:`px-3 py-1 text-xs font-medium rounded transition-colors `+(t?`bg-primary text-primary-foreground shadow-sm`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:e.label},e.key)})}),b&&(0,q.jsxs)(`div`,{className:`space-y-2`,"data-testid":`filter-mode-fields`,children:[d.length>0&&(0,q.jsx)(`div`,{className:`space-y-1`,children:d.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded border border-input bg-background px-2 py-1 text-sm`,children:[(0,q.jsxs)(`span`,{className:`flex-1 truncate`,children:[y(e.field),(0,q.jsx)(`code`,{className:`ml-2 text-xs text-muted-foreground`,children:e.field})]}),(0,q.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,q.jsx)(I,{checked:!!e.showCount,disabled:n,onCheckedChange:e=>h(d.map((n,r)=>r===t?{...n,showCount:e}:n))}),`count`]}),!n&&(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove field`,onClick:()=>h(d.filter((e,n)=>n!==t)),className:`px-1 text-muted-foreground hover:text-destructive`,children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]},e.field))}),!n&&_.length>0&&(0,q.jsxs)(H,{onValueChange:e=>h([...d,{field:e}]),children:[(0,q.jsx)(p,{className:`h-8 text-xs`,"data-testid":`filter-mode-add-field`,children:(0,q.jsx)(S,{placeholder:`+ Add filter field…`})}),(0,q.jsx)(j,{children:_.map(e=>(0,q.jsx)(m,{value:e.name,children:e.label||e.name},e.name))})]}),c?(0,q.jsx)(Z,{message:c,testId:`filter-mode-fields-load-failed`}):l.length===0?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Bind a source object to pick filter fields.`}):null]}),o===`tabs`&&(0,q.jsxs)(`div`,{className:`space-y-2`,"data-testid":`filter-mode-tabs-editor`,children:[x.map((e,t)=>(0,q.jsxs)(`div`,{className:`rounded-md border border-input bg-background p-2 space-y-2`,"data-testid":`tab-preset-${t}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsx)(v,{value:e.label,placeholder:`Tab label`,disabled:n,className:`h-8 text-sm flex-1`,"data-testid":`tab-label-${t}`,onChange:e=>k(t,{label:e.target.value})}),(0,q.jsx)(`code`,{className:`text-[10px] text-muted-foreground shrink-0 max-w-[6rem] truncate`,title:e.name,children:e.name}),!n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move tab up`,disabled:t===0,onClick:()=>O(t,-1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,q.jsx)(R,{className:`h-3.5 w-3.5`})}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move tab down`,disabled:t===x.length-1,onClick:()=>O(t,1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,q.jsx)(z,{className:`h-3.5 w-3.5`})}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove tab`,onClick:()=>D(t),className:`px-1 text-muted-foreground hover:text-destructive`,children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]})]}),(0,q.jsx)(`div`,{className:`pl-1`,"data-testid":`tab-${t}-filter`,children:(0,q.jsx)(rr,{value:e.filter,onChange:e=>k(t,{filter:e}),fields:l,loadError:c,readOnly:n})})]},t)),!n&&(0,q.jsxs)(`button`,{type:`button`,"data-testid":`filter-mode-add-tab`,onClick:T,className:`inline-flex items-center text-xs font-medium text-primary hover:underline`,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` Add tab`]}),(0,q.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground pt-1`,children:[(0,q.jsx)(I,{checked:a?.showAllRecords!==!1,disabled:n,"data-testid":`filter-mode-show-all`,onCheckedChange:e=>t({...a??{},element:`tabs`,showAllRecords:e})}),`Show “All records” tab`]}),c?(0,q.jsx)(Z,{message:c,testId:`filter-mode-tabs-load-failed`}):l.length===0?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Bind a source object to build tab filter rules.`}):null]})]})}function tr({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=U(),o=r?.objectActions??Y,s=En(o),c=o.status===`error`?jn:X(o,jn),l=Array.isArray(e)?e.map(String):typeof e==`string`&&e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],u=e=>c.find(t=>t.name===e)?.label||e,d=c.filter(e=>!l.includes(e.name)),f=e=>{l.includes(e)||t([...l,e])},h=e=>{let n=l.slice();n.splice(e,1),t(n)},g=(e,n)=>{let r=e+n;if(r<0||r>=l.length)return;let i=l.slice();[i[e],i[r]]=[i[r],i[e]],t(i)};return(0,q.jsxs)(`div`,{className:`space-y-2`,"data-testid":`action-multi`,role:`group`,"aria-labelledby":i,children:[s&&(0,q.jsx)(Z,{message:s,testId:`action-multi-load-failed`}),l.length>0&&(0,q.jsx)(`div`,{className:`space-y-1`,children:l.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-1 rounded border border-input bg-background px-2 py-1 text-sm`,children:[(0,q.jsxs)(`span`,{className:`flex-1 truncate`,children:[u(e),(0,q.jsx)(`code`,{className:`ml-2 text-xs text-muted-foreground`,children:e})]}),!n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move up`,disabled:t===0,onClick:()=>g(t,-1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↑`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move down`,disabled:t===l.length-1,onClick:()=>g(t,1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↓`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>h(t),className:`px-1 text-muted-foreground hover:text-destructive`,children:`×`})]})]},e))}),!n&&(0,q.jsxs)(H,{value:``,onValueChange:f,disabled:d.length===0,children:[(0,q.jsx)(p,{"data-testid":`action-multi-add`,"aria-label":`Add action button`,children:(0,q.jsx)(S,{placeholder:s?G(`engine.form.optionsLoadFailedTitle`,a):c.length?d.length?`+ Add action button…`:`All actions added`:`Bind a source object to pick actions`})}),(0,q.jsx)(j,{children:d.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))})]})]})}var nr={equals:`equals`,eq:`equals`,not_equals:`notEquals`,ne:`notEquals`,neq:`notEquals`,notEquals:`notEquals`,contains:`contains`,not_contains:`notContains`,notContains:`notContains`,is_empty:`isEmpty`,isEmpty:`isEmpty`,is_not_empty:`isNotEmpty`,isNotEmpty:`isNotEmpty`,greater_than:`greaterThan`,gt:`greaterThan`,greaterThan:`greaterThan`,less_than:`lessThan`,lt:`lessThan`,lessThan:`lessThan`,greater_than_or_equal:`greaterOrEqual`,gte:`greaterOrEqual`,greaterOrEqual:`greaterOrEqual`,less_than_or_equal:`lessOrEqual`,lte:`lessOrEqual`,lessOrEqual:`lessOrEqual`,before:`before`,after:`after`,between:`between`,in:`in`,not_in:`notIn`,nin:`notIn`,notIn:`notIn`};function rr({value:e,onChange:t,fields:n,readOnly:r,id:i,loadError:a}){let{t:o}=s(),c=Array.isArray(e)?e:[],l={id:`g`,logic:`and`,conditions:c.map((e,t)=>({id:`c${t}`,operator:nr[e.operator]??e.operator??`equals`,field:e.field,value:e.value??``}))},u=n.map(e=>({value:e.name,label:e.label||e.name,type:e.type})),d=c.length?c.map(e=>`${n.find(t=>t.name===e.field)?.label||e.field}`).filter(Boolean).join(`, `):``;return(0,q.jsxs)(x,{children:[(0,q.jsx)(g,{asChild:!0,children:(0,q.jsxs)(F,{id:i,variant:`outline`,size:`sm`,disabled:r,className:`h-8 w-full justify-between text-xs font-normal`,"data-testid":`filter-builder-trigger`,children:[(0,q.jsx)(`span`,{className:`truncate text-left`,children:d||(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:`+ Add filter…`})}),(0,q.jsx)(z,{className:`h-3.5 w-3.5 opacity-60 shrink-0`})]})}),(0,q.jsx)(C,{align:`start`,className:`w-[440px] max-w-[90vw] p-3`,children:a?(0,q.jsx)(Z,{message:a,testId:`filter-builder-load-failed`}):n.length===0?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Bind a source object to add filter conditions.`}):(0,q.jsx)(A,{fields:u,value:l,onChange:e=>{let n=Ge(e);if(!n.ok){me.error(o(Ke[n.reason]));return}t(n.rules)}})})]})}function ir({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=i?.objectFields??Y,o=En(a),s=a.status===`error`?kn:X(a,kn);return(0,q.jsx)(rr,{id:e,value:t,onChange:e=>n(e.length?e:void 0),fields:s,loadError:o,readOnly:r})}function ar(e,t){return Array.isArray(t?.options)&&t.options.length?t.options.map(e=>({value:e.value,label:e.label})):Array.isArray(e?.enum)?e.enum.filter(e=>typeof e==`string`).map(e=>({value:e})):[]}function or(e,t){return ar(e,t).length>0?`color-picker`:`color-input`}function sr(e,t,n){return Array.isArray(t?.options)&&t.options.length?Ye(t.options,n).map(e=>({value:e.value,label:e.label})):ar(e,t)}function cr({value:e,onChange:t,readOnly:n,schema:r,fieldSpec:i,formData:o,ariaLabelledBy:s}){let c=a(),l=s?{ariaLabelledBy:s}:{ariaLabel:i?.label??(typeof r?.title==`string`?r.title:void 0)??`Color`};return(0,q.jsx)(vt,{...l,value:e==null?void 0:String(e),onChange:e=>t(e),disabled:n,options:sr(r,i,J(o,c))})}function lr({id:e,value:t,onChange:n,readOnly:r}){let i=U(),a=t==null?``:String(t);return(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`input`,{id:e,type:`color`,value:/^#([0-9a-f]{6})$/i.test(a)?a:`#000000`,disabled:r,onChange:e=>n(e.target.value),className:`h-8 w-10 shrink-0 rounded border border-input bg-background p-0.5 disabled:opacity-60`,"aria-label":e?void 0:`Color`}),(0,q.jsx)(v,{value:a,placeholder:`#RRGGBB`,disabled:r,"aria-label":G(`engine.form.colorHex`,i),onChange:e=>n(e.target.value||void 0),className:`h-8 text-sm font-mono`})]})}function ur({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=r?.objectFields??Y,o=a.status===`loaded`?a.data:void 0;return(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":i,children:(0,q.jsx)(Yt,{value:_n(e),onCommit:n=>t(yn(e,n)),fields:o,disabled:n})})}var dr=`••••••••`;function fr({value:e,onChange:t,readOnly:n,schema:r,id:i}){let a=e===dr,[o,s]=K.useState(!1),[c,l]=K.useState(a||e==null?``:String(e)),u=e=>{l(e),t(e===``?a?dr:void 0:e)};return(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(v,{id:i,type:o?`text`:`password`,value:c,disabled:n,autoComplete:`off`,placeholder:a?r?.description?`•••••••• set — type to replace`:`•••••••• set — leave blank to keep`:typeof r?.description==`string`?``:`Enter a value`,onChange:e=>u(e.target.value),className:`h-8 text-sm font-mono`,"aria-label":i?void 0:`Secret value`}),(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,disabled:n,"aria-label":o?`Hide value`:`Reveal value`,onClick:()=>s(e=>!e),children:o?(0,q.jsx)(d,{className:`h-4 w-4`}):(0,q.jsx)(k,{className:`h-4 w-4`})}),a&&(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 shrink-0 text-destructive hover:text-destructive`,disabled:n,onClick:()=>{l(``),t(null)},children:`Clear`})]})}function pr({value:e,onChange:t,readOnly:n,fieldSpec:r,formData:i,context:a,ariaLabelledBy:o}){let s=Array.isArray(r?.dependsOn)?r.dependsOn[0]:r?.dependsOn,l=s?i?.[s]:void 0,u=l==null?void 0:a?.dynamicSchemas?.[String(l)],d=u?.properties??{},f=new Set(u?.required??[]),h=e&&typeof e==`object`?e:{},g=(e,n)=>{let r={...h};n===void 0||n===``?delete r[e]:r[e]=n,t(r)};return l?!u||Object.keys(d).length===0?(0,q.jsxs)(`div`,{role:`group`,"aria-labelledby":o,className:`text-xs text-muted-foreground`,children:[`No configuration needed for "`,String(l),`".`]}):(0,q.jsx)(`div`,{className:`space-y-2 rounded-md border border-border/60 p-3`,role:`group`,"aria-labelledby":o,children:Object.entries(d).map(([e,t])=>{let r=t?.title||e,i=h[e],a=f.has(e);if(t?.type===`boolean`)return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(c,{className:`text-xs`,children:r}),(0,q.jsx)(I,{"aria-label":r,checked:!!i,disabled:n,onCheckedChange:t=>g(e,t)})]},e);if(Array.isArray(t?.enum))return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(c,{className:`text-xs`,children:[r,a?` *`:``]}),(0,q.jsxs)(H,{value:i==null?``:String(i),onValueChange:t=>g(e,t),disabled:n,children:[(0,q.jsx)(p,{className:`h-8`,"aria-label":r,children:(0,q.jsx)(S,{placeholder:`Select…`})}),(0,q.jsx)(j,{children:t.enum.map(e=>(0,q.jsx)(m,{value:String(e),children:String(e)},String(e)))})]})]},e);let o=t?.format===`password`||t?.writeOnly===!0,s=t?.type===`number`||t?.type===`integer`;return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(c,{className:`text-xs`,children:[r,a?` *`:``]}),o?(0,q.jsx)(fr,{value:i,onChange:t=>g(e,t),readOnly:n,schema:t}):(0,q.jsx)(v,{type:s?`number`:`text`,value:i==null?``:String(i),disabled:n,"aria-label":r,onChange:t=>g(e,s?t.target.value===``?void 0:Number(t.target.value):t.target.value),className:`h-8 text-sm`}),t?.description&&(0,q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:t.description})]},e)})}):(0,q.jsxs)(`div`,{role:`group`,"aria-labelledby":o,className:`text-xs text-muted-foreground`,children:[`Select `,s??`an option`,` to configure.`]})}var mr={"ref:object":Mn,"ref:component":Pn,"filter-mode":er,"object-selector":Fn,"field-selector":Rn,"field-ref":Wn,"field-multi":qn,"action-multi":tr,"filter-builder":ir,"view-ref":Kn,icon:Zn,"color-picker":cr,"color-input":lr,condition:ur,"master-detail":zn,"string-tags":Vn,multiselect:Un,code:yr,secret:fr,"dynamic-config":pr},hr={"ref:object":`control`,"ref:component":`control`,"filter-mode":`group`,"object-selector":`control`,"field-selector":`control`,"field-ref":`control`,"field-multi":`group`,"action-multi":`group`,"filter-builder":`control`,"view-ref":`control`,icon:`control`,"color-picker":`group`,"color-input":`control`,condition:`group`,"master-detail":`group`,"string-tags":`control`,multiselect:`group`,code:`group`,secret:`control`,"dynamic-config":`group`};function gr(e){return e?hr[e]??`control`:`control`}function _r(e,t){if(e?.language)return e.language;if(typeof t?.format==`string`){let e=t.format.toLowerCase();if(e===`sql`||e===`javascript`||e===`typescript`||e===`json`||e===`yaml`||e===`html`||e===`css`||e===`python`)return e}let n=e?.field?.toLowerCase()??``;return n.includes(`sql`)||n===`query`?`sql`:`javascript`}var vr=K.lazy(()=>t(()=>import(`./src-S6pzKItc.js`).then(e=>({default:e.CodeEditorRenderer})),__vite__mapDeps([0]),import.meta.url));function yr({schema:e,value:t,onChange:n,readOnly:r,fieldSpec:i,ariaLabelledBy:a}){let o=_r(i,e),s=typeof t==`string`?t:t==null?``:String(t);return(0,q.jsxs)(`div`,{className:`rounded-md border border-border/50 overflow-hidden`,role:`group`,"aria-labelledby":a,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1 bg-muted/40 border-b border-border/30 text-[10px] font-mono text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:o}),r&&(0,q.jsx)(`span`,{children:`read-only`})]}),(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`h-[280px] flex items-center justify-center text-xs text-muted-foreground`,children:`Loading editor…`}),children:(0,q.jsx)(vr,{schema:{type:`code`,language:o,theme:`vs-dark`,height:`280px`,readOnly:r},value:s,onChange:e=>n(e??``)})})]})}var br=new Set([`text`,`textarea`,`number`,`switch`,`select`,`json`]);function xr(e,t){if(!e)return e;let n=e.oneOf??e.anyOf;if(!Array.isArray(n)||n.length===0)return e;let r=typeof t==`object`&&!!t&&!Array.isArray(t),i=Array.isArray(t),a=r?new Set(Object.keys(t)):null,o=null,s=i&&t.length?t[0]:void 0,c=typeof s==`object`&&!!s&&!Array.isArray(s);for(let e of n){let n=0;if(e.type===`array`&&i){n+=5;let t=e.items?.type;(t===`object`&&c||t===`string`&&typeof s==`string`||t===`number`&&typeof s==`number`||t===`integer`&&typeof s==`number`)&&(n+=3)}if(e.type===`object`&&r&&(n+=5),e.type===`string`&&typeof t==`string`&&(n+=5),e.type===`number`&&typeof t==`number`&&(n+=5),e.type===`boolean`&&typeof t==`boolean`&&(n+=5),a&&Array.isArray(e.required))for(let t of e.required)a.has(t)&&(n+=1);(!o||n>o.score)&&(o={branch:e,score:n})}let l=o?.branch??n[0];return{...e,...l,oneOf:void 0,anyOf:void 0}}function Sr(e,t){if(!e)return{};let n=xr(e,Array.isArray(t)?t:[])?.items;return!n||typeof n!=`object`?{}:xr(n,Array.isArray(t)&&t.length?t[0]:void 0)??{}}function Cr(e,t){if(e?.widget)return e.widget;if(e?.type){let t=e.type;if(t===`text`||t===`email`||t===`url`||t===`phone`||t===`password`)return`text`;if(t===`textarea`||t===`markdown`||t===`html`||t===`richtext`)return`textarea`;if(t===`number`||t===`currency`||t===`percent`)return`number`;if(t===`date`||t===`datetime`||t===`time`)return`date-picker`;if(t===`boolean`||t===`toggle`)return`switch`;if(t===`select`||t===`radio`)return e.multiple?`multiselect`:`select`;if(t===`multiselect`||t===`checkboxes`||t===`tags`)return`string-tags`;if(t===`composite`)return`composite`;if(t===`repeater`)return`repeater`;if(t===`record`)return`record`;if(t===`lookup`||t===`master_detail`||t===`tree`)return`ref-object`;if(t===`image`||t===`file`||t===`avatar`||t===`video`||t===`audio`)return`file-upload`;if(t===`code`)return`code`;if(t===`json`||t===`location`||t===`address`)return`json`;if(t===`color`)return`color-picker`;if(t===`rating`)return`number`;if(t===`slider`)return`slider`;if(t===`signature`)return`signature`;if(t===`qrcode`)return`qrcode`;if(t===`progress`)return`number`;if(t===`formula`||t===`summary`||t===`autonumber`)return`text`;if(t===`vector`)return`json`}if(t){let e=t.type;if(e===`array`&&Array.isArray(t.items?.enum))return`multiselect`;if(e===`array`&&t.items?.type===`string`)return`string-tags`;if(e===`array`&&t.items?.type===`object`)return`master-detail`;if(e===`object`)return`object-fields`;if(e===`boolean`)return`switch`;if(e===`number`||e===`integer`)return`number`;if(Array.isArray(t.enum))return`select`;if(e===`string`){if(t.format===`date`||t.format===`date-time`)return`date-picker`;if(t.format===`email`||t.format===`uri`||t.format===`uri-reference`)return`text`;if(t.format===`multiline`)return`textarea`}}}function wr(e,t,n){if(n?.objectFields&&!Array.isArray(t?.enum)){if(t?.type===`array`&&t.items?.type===`string`&&(/Fields$/.test(e)||e===`columns`||e===`fieldOrder`))return`field-multi`;if((t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(/.Field$/.test(e)||e===`field`))return`field-ref`}}function Tr(e,t){if(!Array.isArray(t?.enum)&&(t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(e===`icon`||/Icon$/.test(e)))return`icon`}function Er(e,t){if((t?.type===`string`||Array.isArray(t?.enum)||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(e===`color`||e===`colorVariant`||/Color$/.test(e)))return`color-picker`}function Dr(e,t,n){return e===`color-picker`||e===`color-input`?or(t,n):e}function Or({fieldSpec:e,widget:t,schema:n,value:r}){if(e?.type===`composite`)return{kind:`composite`};if(e?.type===`repeater`)return{kind:`repeater`,itemSchema:Sr(n,r)};if(e?.type===`record`)return{kind:`record`,itemSchema:n?.additionalProperties??{}};let i=xr(n,r)??n??{},a=e=>e?.type===`object`&&!!e.properties&&typeof e.properties==`object`,o=e=>{if(e?.type!==`array`||!e.items||typeof e.items!=`object`)return;let t=xr(e.items,Array.isArray(r)&&r.length?r[0]:void 0);return a(t)?t:void 0};if(t){if(mr[t])return{kind:`registered`,widget:t};if(a(i))return{kind:`nested-form`,effective:i};let e=o(i);if(e)return{kind:`object-rows`,effective:i,itemSchema:e};if(!br.has(t))return{kind:`raw-json`,hint:t}}let s=i?.type,c=Array.isArray(e?.options)&&e.options.length>0,l=Array.isArray(i?.enum)&&i.enum.length>0;if(c||l||s===`boolean`||t===`switch`||e?.type===`boolean`||e?.type===`toggle`||s===`number`||s===`integer`||s===`string`)return{kind:`scalar`,effective:i};if(s===`array`){let e=i?.items??{};if(e.type===`string`||e.type===`number`||e.type===`integer`)return{kind:`scalar`,effective:i}}if(a(i))return{kind:`nested-form`,effective:i};let u=o(i);return u?{kind:`object-rows`,effective:i,itemSchema:u}:{kind:`raw-json`}}function kr(e){switch(e.kind){case`registered`:return gr(e.widget);case`composite`:case`repeater`:case`record`:case`nested-form`:case`object-rows`:return`group`;case`raw-json`:case`scalar`:return`control`}}var Ar=new Set([`visible`,`hidden`,`disabled`,`visibleOn`,`condition`,`predicate`]);function jr(e,t){if(!Array.isArray(t?.enum)&&(t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(Ar.has(e)||/When$/.test(e)))return`condition`}var Mr=/(^|_)(secret|token|api[_-]?key|access[_-]?key|client[_-]?secret|credential|private[_-]?key|passphrase)$/i;function Nr(e,t){if(t?.format===`password`||t?.writeOnly===!0||!Array.isArray(t?.enum)&&(t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&Mr.test(e))return`secret`}function Pr(e){return e?.visibleWhen??e?.visibleOn}function Fr({schema:e,form:t,value:n,onChange:r,issues:i=[],hiddenFields:o=[],fieldOrder:s=[],readOnly:c=!1,createMode:l=!1,widgetContext:u,idPath:d}){let f=U(),p=a(),m=K.useMemo(()=>{let e={};for(let t of i)(e[t.path]??=[]).push(ge(t.message,f));return e},[i,f]),h=e;if(!h||typeof h!=`object`){if(n&&typeof n==`object`)h=ei(n);else return(0,q.jsx)($r,{value:n,onChange:r,readOnly:c})}let g=h.properties??{},_=Array.isArray(h.required)?h.required:[],v=n??{},y=ri(Object.keys(g),s).filter(e=>!o.includes(e)).filter(e=>{let t=Pr(g[e]);return!t||Xe(t,J(v,p))}),b=n??{};function x(e,t){let n={...b,[e]:t};(t===void 0||t===``)&&delete n[e],r(n)}if(t?.sections?.length){let e=[];for(let n of t.sections)for(let t of n.fields)e.push(typeof t==`string`?t:t.field);let n=e.filter(e=>g[e]).length;if(e.length===0||n>0)return(0,q.jsx)(Wr,{form:t,props:g,idPath:d,required:_,hiddenFields:o,issuesByPath:m,value:b,readOnly:c,createMode:l,widgetContext:u,onChange:x});typeof console<`u`&&console.warn(`[SchemaForm] form layout declares no fields that exist in the schema; falling back to flat schema-driven rendering. Declared:`,e,`Available:`,Object.keys(g))}return(0,q.jsx)(`div`,{className:`space-y-4`,children:y.map(e=>(0,q.jsx)(Kr,{name:e,idPath:d,schema:g[e],value:b[e],required:_.includes(e),issues:m[e],readOnly:c,widgetContext:u,fieldSpec:g[e]?.widget?{field:e,widget:g[e].widget}:void 0,formData:b,onChange:t=>x(e,t)},e))})}var Ir=`drawer-metadata`,Lr=`drawer-embedded-item`,Rr=K.createContext(!1),zr=K.createContext(!1),Br=()=>!1;function Vr(e){let t=K.useRef(null);K.useEffect(()=>{if(!e||!Br()||typeof document>`u`)return;let n=new Set,r=[];for(let e of Array.from(document.querySelectorAll(`[id^="mdf-"]`))){let t=e.id;n.has(t)?r.includes(t)||r.push(t):n.add(t)}let i=r.join(`,`);i!==t.current&&(t.current=i,r.length!==0&&console.error(`[SchemaForm] duplicate field host id(s) in this document: ${r.join(`, `)}. Two SchemaForm instances are mounted at once — the metadata detail drawer sits on top of the page form, which stays in the DOM — and at least one of them renders unscoped top-level ids. A \`label[for]\` resolves to the FIRST match in the document, so the later form's labels name and focus the earlier form's controls (objectui#5092). Give the secondary form a distinct \`idPath\` scope segment — see DRAWER_METADATA_ID_SCOPE / DRAWER_EMBEDDED_ITEM_ID_SCOPE in SchemaForm.tsx.`))})}function Hr(e){let t=K.useContext(Rr),n=K.useContext(zr);Vr(!t);let r=e.createMode===!0||n;return(0,q.jsx)(Rr.Provider,{value:!0,children:(0,q.jsx)(zr.Provider,{value:r,children:(0,q.jsx)(Fr,{...e})})})}function Ur(e){return typeof e==`string`?{field:e}:e}function Wr({form:e,props:t,required:n,hiddenFields:r,issuesByPath:i,value:o,readOnly:s,createMode:c,widgetContext:u,idPath:d,onChange:f}){let p=U(),m=a(),g=(e.sections??[]).filter(e=>{let t=Pr(e);return!t||Xe(t,J(o,m))}),v=e.type===`tabbed`&&g.length>1,y=(e,a)=>{let l=e.fields.map(Ur).filter(e=>{if(e.hidden||r.includes(e.field))return!1;let t=Pr(e);return!(t&&!Xe(t,J(o,m)))});if(l.length===0)return null;let g=e.columns??1,_=(0,q.jsx)(`div`,{className:`grid gap-4`,style:{gridTemplateColumns:`repeat(${g}, minmax(0, 1fr))`},children:l.map(e=>{let r=t[e.field];return r?(0,q.jsx)(`div`,{style:{gridColumn:`span ${e.colSpan??1}`},children:(0,q.jsx)(Kr,{name:e.field,idPath:d,schema:{...r,...e.label?{title:e.label}:{},...e.helpText?{description:e.helpText}:{},...e.placeholder?{placeholder:e.placeholder}:{}},value:o[e.field],required:e.required??n.includes(e.field),issues:i[e.field],readOnly:s||e.readonly||e.immutable&&!c,fieldSpec:e,widgetContext:u,formData:o,onChange:t=>f(e.field,t)})},e.field):(0,q.jsx)(`div`,{className:`rounded border border-dashed border-amber-500/40 bg-amber-500/5 p-2 text-xs text-amber-700 dark:text-amber-300`,style:{gridColumn:`span ${e.colSpan??1}`},children:W(`engine.form.missingField`,p,{field:e.field})},e.field)})});return e.collapsible&&e.label?(0,q.jsxs)(ce,{defaultOpen:!e.collapsed,className:`rounded-md border border-border/40 bg-card/30`,children:[(0,q.jsxs)(h,{className:`group flex w-full items-center justify-between gap-2 p-4 text-left`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`block text-sm font-semibold text-foreground/90`,children:e.label}),e.description&&(0,q.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`,children:e.description})]}),(0,q.jsx)(z,{className:`h-4 w-4 shrink-0 text-muted-foreground transition-transform group-data-[state=closed]:-rotate-90`})]}),(0,q.jsx)(M,{className:`space-y-3 px-4 pb-4`,children:_})]},a):(0,q.jsxs)(`section`,{className:`space-y-3 rounded-md border border-border/40 bg-card/30 p-4`,children:[e.label&&(0,q.jsxs)(`header`,{children:[(0,q.jsx)(`h3`,{className:`text-sm font-semibold text-foreground/90`,children:e.label}),e.description&&(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),_]},a)};if(v){let e=g.filter(e=>e.fields.map(Ur).some(e=>{if(e.hidden||r.includes(e.field))return!1;let t=Pr(e);return!t||Xe(t,J(o,m))}));if(e.length===0)return null;let t=(e[0].label??`section-0`).toLowerCase();return(0,q.jsxs)(pe,{defaultValue:t,className:`w-full`,children:[(0,q.jsx)(P,{className:`flex flex-wrap gap-1`,children:e.map((e,t)=>(0,q.jsx)(_,{value:(e.label??`section-${t}`).toLowerCase(),children:e.label??`Section ${t+1}`},t))}),e.map((e,t)=>(0,q.jsx)(l,{value:(e.label??`section-${t}`).toLowerCase(),className:`mt-4`,children:y(e,t)},t))]})}return(0,q.jsx)(`div`,{className:`space-y-4`,children:g.map(y)})}function $(e,t){return e?`${e}.${t}`:String(t)}function Gr(e){return`mdf-${e}`}function Kr({name:e,idPath:t,schema:n,value:r,required:i,issues:a,readOnly:o,fieldSpec:s,widgetContext:l,formData:u,onChange:d}){let f=U(),p=K.useContext(zr),[m,h]=K.useState(!1),g=K.useCallback(()=>h(!0),[]),_=!p||m?a:void 0,v=K.useCallback(e=>{h(!0),d(e)},[d]),y=s?.label||_e(e,n?.title,f)||ni(e),b=s?.helpText||ve(e,n?.description,f),x=$(t,e),S=Gr(x),C=Cr(s,n);if(!s?.widget){let t=wr(e,n,l);if(t)C=t;else{let t=Nr(e,n);if(t)C=t;else{let t=Tr(e,n);if(t)C=t;else{let t=Er(e,n);if(t)C=t;else{let t=jr(e,n);t&&(C=t)}}}}}C=Dr(C,n,s);let w=kr(Or({fieldSpec:s,widget:C,schema:n,value:r}))===`group`,T=w?`${S}-label`:void 0,E=w?{id:void 0,ariaLabelledBy:T}:{id:S,ariaLabelledBy:void 0},D=w?{id:T}:{htmlFor:S},O=n?.type===`boolean`||C===`switch`,k=n?.default!==void 0,A=i&&!(O&&k),j=ni(e).toLowerCase()===y.toLowerCase();return O?(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-1.5`,onBlur:g,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(c,{...D,className:`text-sm font-medium cursor-pointer`,children:[y,A&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),b&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:b}),_?.map((e,t)=>(0,q.jsx)(`div`,{"data-testid":`schema-form-issue`,className:`text-xs text-destructive mt-0.5`,children:e},t))]}),(0,q.jsx)(qr,{id:E.id,ariaLabelledBy:E.ariaLabelledBy,fieldName:e,idPath:x,schema:n,value:r,onChange:v,readOnly:o,widget:C,fieldSpec:s,widgetContext:l,formData:u})]}):(0,q.jsxs)(`div`,{className:`space-y-1.5`,onBlur:g,children:[(0,q.jsx)(`div`,{className:`flex items-center justify-between gap-2`,children:(0,q.jsxs)(c,{...D,className:`text-sm font-medium`,children:[y,A&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`}),!j&&(0,q.jsx)(`code`,{className:`ml-2 text-[10px] font-mono text-muted-foreground/70`,title:`Machine name`,children:e})]})}),(0,q.jsx)(qr,{id:E.id,ariaLabelledBy:E.ariaLabelledBy,fieldName:e,idPath:x,schema:n,value:r,onChange:v,readOnly:o,widget:C,fieldSpec:s,widgetContext:l,formData:u}),b&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:b}),_?.map((e,t)=>(0,q.jsx)(`div`,{"data-testid":`schema-form-issue`,className:`text-xs text-destructive`,children:e},t))]})}function qr({id:e,ariaLabelledBy:t,fieldName:n,idPath:r,schema:i,value:o,onChange:s,readOnly:c,widget:l,fieldSpec:u,widgetContext:d,formData:f}){let h=U(),g=a(),_=Or({fieldSpec:u,widget:l,schema:i,value:o});if(_.kind===`composite`){let e=u?.fields?.length?u.fields:ii(i);return(0,q.jsx)(Xr,{value:o,fields:e,schema:i,readOnly:c,widgetContext:d,fieldSpec:u,ariaLabelledBy:t,idPath:r,onChange:s})}if(_.kind===`repeater`){let e=_.itemSchema,n=u?.fields?.length?u.fields:ii(e);return(0,q.jsx)(Zr,{value:o,fields:n,schema:{...i,items:e},readOnly:c,widgetContext:d,widget:u?.widget,ariaLabelledBy:t,idPath:r,onChange:s})}if(_.kind===`record`){let e=_.itemSchema,n=u?.fields?.length?u.fields:ii(e);return(0,q.jsx)(Qr,{value:o,fields:n,schema:i,readOnly:c,widgetContext:d,widget:u?.widget,keyField:u?.keyField,formData:f,ariaLabelledBy:t,idPath:r,onChange:s})}if(_.kind===`registered`){let n=mr[_.widget];return(0,q.jsx)(n,{id:e,ariaLabelledBy:t,schema:i,value:o,onChange:s,readOnly:c,context:d,fieldSpec:u,formData:f})}if(_.kind===`nested-form`)return(0,q.jsx)(`div`,{className:`rounded-md border border-border/40 bg-card/30 p-3`,role:`group`,"aria-labelledby":t,children:(0,q.jsx)(Hr,{schema:_.effective,value:o??{},onChange:e=>s(e),readOnly:c,widgetContext:d,idPath:r})});if(_.kind===`object-rows`)return(0,q.jsx)(Zr,{value:o,fields:ii(_.itemSchema),schema:{..._.effective,items:_.itemSchema},readOnly:c,widgetContext:d,widget:u?.widget,ariaLabelledBy:t,idPath:r,onChange:s});if(_.kind===`raw-json`)return _.hint?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)($r,{id:e,ariaLabelledBy:t,value:o,onChange:e=>s(e),readOnly:c}),(0,q.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:W(`engine.form.fallbackJson`,h,{widget:_.hint})})]}):(0,q.jsx)($r,{id:e,ariaLabelledBy:t,value:o,onChange:s,readOnly:c,small:!0});let y=_.effective,b=y?.type,x=u?.options,C=y?.enum??void 0;if(Array.isArray(x)&&x.length>0)return(0,q.jsxs)(H,{value:o==null?``:String(o),onValueChange:e=>s(e),disabled:c,children:[(0,q.jsx)(p,{id:e,"aria-labelledby":t,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectEllipsis`,h)})}),(0,q.jsx)(j,{children:Ye(x,J(f,g)).map(e=>(0,q.jsxs)(m,{value:e.value,children:[e.label,e.color&&(0,q.jsx)(`span`,{className:`ml-2 inline-block h-3 w-3 rounded`,style:{backgroundColor:e.color}})]},e.value))})]});if(Array.isArray(C)&&C.length>0)return(0,q.jsxs)(H,{value:o==null?``:String(o),onValueChange:e=>s(e),disabled:c,children:[(0,q.jsx)(p,{id:e,"aria-labelledby":t,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectEllipsis`,h)})}),(0,q.jsx)(j,{children:C.map(e=>(0,q.jsx)(m,{value:String(e),children:ye(n??``,String(e),h)},String(e)))})]});if(b===`boolean`||l===`switch`||u?.type===`boolean`||u?.type===`toggle`)return(0,q.jsx)(I,{id:e,"aria-labelledby":t,checked:!!o,onCheckedChange:e=>s(e),disabled:c});if(b===`number`||b===`integer`){let n=u?.min,r=u?.max;return(0,q.jsx)(v,{id:e,"aria-labelledby":t,type:`number`,value:o==null?``:String(o),min:n,max:r,onChange:e=>{let t=e.target.value;if(t===``)return s(void 0);let n=b===`integer`?parseInt(t,10):Number(t);s(Number.isFinite(n)?n:void 0)},readOnly:c})}if(b===`string`){let n=u?.maxLength;return y?.format===`multiline`||y?.contentMediaType===`text/markdown`||typeof o==`string`&&o.length>80?(0,q.jsx)(T,{id:e,"aria-labelledby":t,rows:4,value:o??``,maxLength:n,onChange:e=>s(e.target.value||void 0),readOnly:c}):(0,q.jsx)(v,{id:e,"aria-labelledby":t,value:o??``,maxLength:n,onChange:e=>s(e.target.value||void 0),readOnly:c})}if(b===`array`){let n=y?.items??{};if(n.type===`string`||n.type===`number`||n.type===`integer`)return(0,q.jsx)(v,{id:e,"aria-labelledby":t,value:(Array.isArray(o)?o:[]).map(String).join(`, `),placeholder:G(`engine.form.arrayPlaceholder`,h),onChange:e=>{let t=e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean);n.type===`number`||n.type===`integer`?s(t.map(e=>Number(e)).filter(e=>Number.isFinite(e))):s(t)},readOnly:c})}return(0,q.jsx)($r,{id:e,ariaLabelledBy:t,value:o,onChange:s,readOnly:c,small:!0})}function Jr(e,t,n){if(!e)return{};let r;return r=t===`composite`?e.properties:t===`repeater`?e.items?.properties:e.additionalProperties?.properties,r?.[n]??{}}function Yr(e,t){let n=[];for(let r of t){let t=e[r.field];if(t==null||t===``||t===!1)continue;let i=r.label||r.field;t===!0?n.push(i):Array.isArray(t)?t.length&&n.push(t.map(e=>typeof e==`object`&&e?e.field??e.name??``:String(e)).filter(Boolean).join(`, `)):typeof t==`object`?n.push(i):n.push(String(t))}return n.join(` · `)}function Xr({value:e,fields:t,schema:n,readOnly:r,widgetContext:i,fieldSpec:a,ariaLabelledBy:o,idPath:s,onChange:c}){let l=e&&typeof e==`object`&&!Array.isArray(e)?e:{},u=t.map(Ur),d=u.map(e=>{let t=Jr(n,`composite`,e.field);return(0,q.jsx)(Kr,{name:e.field,idPath:s,schema:t,value:l[e.field],required:!!e.required,readOnly:r||e.readonly,fieldSpec:e,widgetContext:i,formData:l,onChange:t=>c({...l,[e.field]:t})},e.field)});if(a?.disclosure===`popover`){let e=Yr(l,u);return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 rounded-md border border-border/50 bg-muted/20 px-3 py-1.5`,role:`group`,"aria-labelledby":o,children:[(0,q.jsx)(`span`,{className:`text-sm text-muted-foreground truncate`,title:e,children:e||(0,q.jsx)(`span`,{className:`italic opacity-70`,children:`Not configured`})}),(0,q.jsxs)(x,{children:[(0,q.jsx)(g,{asChild:!0,children:(0,q.jsx)(F,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 shrink-0`,"aria-label":`Configure`,"data-testid":`composite-popover-${a.field}`,children:(0,q.jsx)(ae,{className:`h-4 w-4`})})}),(0,q.jsx)(C,{align:`end`,className:`w-80 space-y-3`,children:d})]})]})}return(0,q.jsx)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 p-3 space-y-3`,role:`group`,"aria-labelledby":o,children:d})}function Zr({value:e,fields:t,schema:n,readOnly:r,widgetContext:i,widget:a,ariaLabelledBy:o,idPath:s,onChange:c}){let l=U(),u=Array.isArray(e)?e:[],d=t.map(Ur),[p,m]=K.useState(null),h=a===`grid`||a===`table`,g=(e,t)=>Gr($($(s,e),t)),_=e=>`${Gr($(s,e))}-col`,v=(e,t)=>{c(u.map((n,r)=>r===e?{...n,...t}:n))},y=e=>c(u.filter((t,n)=>n!==e)),b=()=>{let e={};d.forEach(t=>{e[t.field]=void 0}),c([...u,e]),m(u.length)};return h?(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":o,children:[(0,q.jsx)(`div`,{className:`overflow-x-auto rounded-md border border-border/50`,children:(0,q.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,q.jsx)(`thead`,{className:`bg-muted/40`,children:(0,q.jsxs)(`tr`,{children:[d.map(e=>(0,q.jsxs)(`th`,{id:_(e.field),scope:`col`,className:`px-2 py-1.5 text-left text-xs font-medium`,children:[e.label||ni(e.field),e.required&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]},e.field)),!r&&(0,q.jsx)(`th`,{scope:`col`,className:`w-8`})]})}),(0,q.jsxs)(`tbody`,{children:[u.length===0&&(0,q.jsx)(`tr`,{children:(0,q.jsx)(`td`,{colSpan:d.length+1,className:`px-2 py-3 text-center text-xs text-muted-foreground`,children:G(`engine.repeater.empty`,l)})}),u.map((e,t)=>(0,q.jsxs)(`tr`,{className:`border-t border-border/30 align-top`,children:[d.map(a=>{let o=Jr(n,`repeater`,a.field);return(0,q.jsx)(`td`,{className:`p-1.5`,children:(0,q.jsx)(qr,{id:g(t,a.field),ariaLabelledBy:_(a.field),fieldName:a.field,idPath:$($(s,t),a.field),schema:o,value:e?.[a.field],readOnly:r||a.readonly,widget:Cr(a,o),fieldSpec:a,widgetContext:i,formData:e,onChange:e=>v(t,{[a.field]:e})})},a.field)}),!r&&(0,q.jsx)(`td`,{className:`p-1.5 text-right`,children:(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>y(t),className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.remove`,l),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})})]},t))]})]})}),!r&&(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:b,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.add`,l)]})]}):(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":o,children:[u.length===0&&(0,q.jsx)(`div`,{className:`rounded-md border border-dashed border-border/50 px-3 py-4 text-center text-xs text-muted-foreground`,children:G(`engine.list.empty`,l)}),u.map((e,t)=>{let a=p===t,o=d.map(t=>e?.[t.field]).find(e=>e!=null&&e!==``);return(0,q.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/10`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-2 py-1.5 border-b border-border/30`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>m(a?null:t),className:`flex items-center gap-1.5 text-sm font-medium text-left flex-1 min-w-0`,children:[a?(0,q.jsx)(z,{className:`h-3.5 w-3.5`}):(0,q.jsx)(V,{className:`h-3.5 w-3.5`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[`#`,t+1,o==null?``:` — ${String(o)}`]})]}),!r&&(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>y(t),className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.remove`,l),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]}),a&&(0,q.jsx)(`div`,{className:`p-3 space-y-3`,children:d.map(a=>{let o=Jr(n,`repeater`,a.field);return(0,q.jsx)(Kr,{name:a.field,idPath:$(s,t),schema:o,value:e?.[a.field],required:!!a.required,readOnly:r||a.readonly,fieldSpec:a,widgetContext:i,formData:e,onChange:e=>v(t,{[a.field]:e})},a.field)})})]},t)}),!r&&(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:b,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.addItem`,l)]})]})}function Qr({value:e,fields:t,schema:n,readOnly:r,widgetContext:i,widget:o,keyField:s,formData:c,ariaLabelledBy:l,idPath:u,onChange:d}){let p=U(),m=a(),[h,g]=K.useState(null),[_,y]=K.useState(``),[x,S]=K.useState(null),[C,w]=K.useState(null),[T,D]=K.useState(null);if(o){let a=mr[o];if(a)return(0,q.jsx)(a,{ariaLabelledBy:l,schema:n,value:e,onChange:d,readOnly:r,context:i,fieldSpec:{field:``,type:`record`,fields:t,widget:o},formData:c})}let O=s?.field??`name`,k=s?.label??ni(O),A=s?.regex?new RegExp(s.regex):null,j=s?.immutable!==!1,M=e&&typeof e==`object`&&!Array.isArray(e)?e:{},N=Object.entries(M),P=t.map(Ur).filter(e=>e.field!==O),ee=e=>d(e),I=(e,t)=>{let n={};for(let[r,i]of N)n[r]=r===e?{...i,...t}:i;ee(n)},te=e=>{let t={};for(let[n,r]of N)n!==e&&(t[n]=r);ee(t)},L=(e,t)=>{if(t===e)return;if(M[t]){S(W(`engine.form.keyExists`,p,{key:t}));return}if(A&&!A.test(t)){S(W(`engine.form.keyPattern`,p,{pattern:String(A)}));return}let n={};for(let[r,i]of N)r===e?n[t]={...i,[O]:t}:n[r]=i;S(null),ee(n)},R=()=>{let e=_.trim();if(!e){S(G(`engine.form.keyRequired`,p));return}if(M[e]){S(W(`engine.form.keyExists`,p,{key:e}));return}if(A&&!A.test(e)){S(W(`engine.form.keyPattern`,p,{pattern:String(A)}));return}let t={[O]:e};P.forEach(e=>{t[e.field]=void 0}),ee({...M,[e]:t}),y(``),S(null),g(e)},ne=(e,t)=>{if(e===t)return;let n=N.map(([e])=>e),r=n.indexOf(e),i=n.indexOf(t);if(r<0||i<0)return;n.splice(r,1),n.splice(i,0,e);let a={};for(let e of n)a[e]=M[e];ee(a)};return(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":l,children:[N.length===0&&(0,q.jsx)(`div`,{className:`rounded-md border border-dashed border-border/50 px-3 py-4 text-center text-xs text-muted-foreground`,children:G(`engine.list.empty`,p)}),N.map(([e,t],a)=>{let o=h===e,c=P.map(e=>t?.[e.field]).find(e=>e!=null&&e!==``);return(0,q.jsxs)(`div`,{className:`rounded-md border bg-muted/10 ${T===e&&C&&C!==e?`border-primary border-2`:`border-border/50`}`,onDragOver:t=>{!C||r||(t.preventDefault(),T!==e&&D(e))},onDragLeave:()=>{T===e&&D(null)},onDrop:t=>{!C||r||(t.preventDefault(),ne(C,e),w(null),D(null))},children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-2 py-1.5 border-b border-border/30`,children:[!r&&(0,q.jsx)(`span`,{draggable:!0,onDragStart:t=>{w(e),t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,e)},onDragEnd:()=>{w(null),D(null)},className:`cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground`,"aria-label":G(`engine.form.dragToReorder`,p),title:G(`engine.form.dragToReorder`,p),children:(0,q.jsx)(b,{className:`h-3.5 w-3.5`})}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>g(o?null:e),className:`flex items-center gap-1.5 text-sm font-medium text-left flex-1 min-w-0`,children:[o?(0,q.jsx)(z,{className:`h-3.5 w-3.5`}):(0,q.jsx)(V,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted/60`,children:e}),c!=null&&(0,q.jsxs)(`span`,{className:`truncate text-muted-foreground`,children:[`— `,String(c)]})]}),!r&&(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>te(e),className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.remove`,p),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]}),o&&(0,q.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,q.jsx)(Kr,{name:O,idPath:$(u,a),schema:{type:`string`},value:e,required:!0,readOnly:r||j,fieldSpec:{field:O,type:`text`,label:k,helpText:s?.helpText},widgetContext:i,formData:t,onChange:t=>L(e,String(t??``).trim())}),P.map(o=>{let s=Pr(o);if(s&&!Xe(s,J(t,m)))return null;let c=Jr(n,`record`,o.field);return(0,q.jsx)(Kr,{name:o.field,idPath:$(u,a),schema:c,value:t?.[o.field],required:!!o.required,readOnly:r||o.readonly,fieldSpec:o,widgetContext:i,formData:t,onChange:t=>I(e,{[o.field]:t})},o.field)})]})]},e)}),!r&&(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(v,{value:_,onChange:e=>{y(e.target.value),x&&S(null)},placeholder:s?.placeholder??k,className:`h-8 text-xs font-mono max-w-[220px]`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),R())}}),(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:R,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.add`,p)]}),x&&(0,q.jsx)(`span`,{className:`text-xs text-destructive`,children:x})]})]})}function $r({id:e,ariaLabelledBy:t,value:n,onChange:r,readOnly:i,small:a}){let o=U(),[s,c]=K.useState(()=>ti(n)),[l,u]=K.useState(null);return K.useEffect(()=>{c(ti(n)),u(null)},[JSON.stringify(n)]),(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(T,{id:e,"aria-labelledby":t,rows:a?4:12,className:`font-mono text-xs`,value:s,readOnly:i,onChange:e=>{let t=e.target.value;if(c(t),!t.trim()){u(null),r(void 0);return}try{let e=JSON.parse(t);u(null),r(e)}catch(e){u(e?.message??G(`engine.form.invalidJson`,o))}}}),l&&(0,q.jsx)(`div`,{className:`text-xs text-destructive`,children:l})]})}function ei(e){let t={};for(let[n,r]of Object.entries(e))if(!n.startsWith(`_`)){if(r==null)t[n]={type:`string`};else if(typeof r==`string`)t[n]=r.length>80||r.includes(`
|
|
2
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{_ as t,b as n,r}from"./vendor-react-CsWFRkED.js";import{Mn as i}from"./vendor-objectstack-BU0HrnMy.js";import{Tt as a,n as o}from"./framework-DFE_Mws9.js";import{y as s}from"./i18n-locales-BBA090ve.js";import{Bn as c,Bt as l,Cr as u,Cs as d,Da as f,Dn as p,En as m,Er as h,Fn as g,Ht as _,In as v,It as y,Ko as b,Nn as x,On as S,Pn as C,Pt as w,Rt as T,Si as E,So as D,Sr as O,Ss as k,St as A,Tn as j,Tr as M,Tt as N,Vt as P,Xr as F,Yi as ee,Yt as I,aa as te,cc as L,fc as R,hc as z,ic as ne,il as re,jt as ie,ni as B,pc as V,ra as ae,sc as oe,vr as se,wn as H,wr as ce,wt as le,yi as ue,yr as de,zs as fe,zt as pe}from"./ui-components-CMHDBJEm.js";import{r as me}from"./vendor-ui-utils-BFw4cGI6.js";import{o as he}from"./createDerive-DtfnFzGm.js";import{g as U,h as ge,i as W,m as _e,p as ve,r as G,s as ye}from"./i18n-DGcOKnTh.js";var K=e(n(),1),q=r(),be=o(`metadataAdminFieldsReadDoor`);function xe(e){let t=be.filter(t=>t in e);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}function Se(e){return Array.isArray(e)?{shape:`array`,entries:e.map((e,t)=>{let{name:n,...r}=e??{};return{name:typeof n==`string`&&n?n:`field_${t+1}`,def:xe(r)}})}:e&&typeof e==`object`?{shape:`record`,entries:Object.entries(e).map(([e,t])=>({name:e,def:xe({...t??{}})}))}:{shape:`record`,entries:[]}}function Ce(e){if(e.shape===`array`)return e.entries.map(e=>({name:e.name,...e.def}));let t={};for(let n of e.entries)t[n.name]=n.def;return t}function we(e,t){return e.entries.findIndex(e=>e.name===t)}function Te(e,t,n){let r={type:t,label:n??Ee(e)};return(t===`select`||t===`multiselect`||t===`radio`||t===`checkboxes`)&&(r.options=[]),{name:e,def:r}}function Ee(e){return e?e.split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):``}function De(e){let t=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).replace(/_{2,}/g,`_`);return t?/^[a-z_]/.test(t)?t:`f_${t}`:`field`}function Oe(e){let t=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+/g,``).replace(/_{2,}/g,`_`);return t?/^[a-z_]/.test(t)?t:`f_${t}`:``}function ke(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`).map(e=>({...e,key:typeof e.key==`string`?e.key:``,label:typeof e.label==`string`?e.label:``})).filter(e=>e.key):[]}function Ae(e,t){let n=/[a-z0-9]/i.test(e)?De(e):`group`;if(!t.includes(n))return n;let r=2;for(;t.includes(`${n}_${r}`);)r+=1;return`${n}_${r}`}function je(e,t){let n=t.trim()||`New section`,r=Ae(n,e.map(e=>e.key));return[...e,{key:r,label:n}]}function Me(e,t,n){let r=n.trim();return r?e.map(e=>e.key===t?{...e,label:r}:e):e}function Ne(e,t,n){return e.map(e=>{if(e.key!==t)return e;let r={...e};for(let[e,t]of Object.entries(n))t===void 0?delete r[e]:r[e]=t;return r})}function Pe(e,t){return e.filter(e=>e.key!==t)}function Fe(e,t,n){let r=e.findIndex(e=>e.key===t);if(r<0)return e;let i=r+n;return i<0||i>=e.length?e:Le(e,r,i)}function Ie(e,t){return{shape:e.shape,entries:e.entries.map(e=>e.def.group===t?{name:e.name,def:{...e.def,group:void 0}}:e)}}function Le(e,t,n){let r=e.slice(),[i]=r.splice(t,1);return r.splice(n,0,i),r}function Re(e,t,n){let r=Array.isArray(t)?t.filter(e=>typeof e?.key==`string`):[],i=new Map;for(let e of r)i.set(e.key,{key:e.key,label:String(e.label??e.key),entries:[]});let a=new Set(r.map(e=>e.key));for(let t of e.entries){let e=typeof t.def.group==`string`?t.def.group:null;e&&a.has(e)?i.get(e).entries.push(t):(i.has(null)||i.set(null,{key:null,label:`Ungrouped`,entries:[]}),i.get(null).entries.push(t))}let o=!!n?.includeEmptyDeclared;return Array.from(i.values()).filter(e=>e.entries.length>0||o&&e.key!==null)}function ze(e,t){return e===t||JSON.stringify(e??null)===JSON.stringify(t??null)}function Be(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]),r=[];for(let i of n)ze(e[i],t[i])||r.push(i);return r.sort()}function Ve(e,t){let n=Se(e),r=Se(t),i=new Map(n.entries.map(e=>[e.name,e])),a=new Set(r.entries.map(e=>e.name)),o={},s=0,c=0;for(let e of r.entries){let t=i.get(e.name);if(!t){o[e.name]={name:e.name,status:`added`,changedKeys:[]},s+=1;continue}let n=Be(t.def,e.def);n.length?(o[e.name]={name:e.name,status:`changed`,changedKeys:n},c+=1):o[e.name]={name:e.name,status:`unchanged`,changedKeys:[]}}let l=n.entries.filter(e=>!a.has(e.name));return{byName:o,removed:l,counts:{added:s,changed:c,removed:l.length}}}var He=new Set([...le,`is_empty`,`is_not_empty`,`is_null`,`is_not_null`]);function Ue(e,t){return!N(String(e??``),t)}function We(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return Array.isArray(t.conditions)||t.logic===`and`||t.logic===`or`}function Ge(e){if(e==null)return{ok:!0,rules:[]};let t=We(e)&&Array.isArray(e.conditions)?e.conditions:[],n=[];for(let e of t){if(We(e))return{ok:!1,reason:`nested_group`};if(typeof e!=`object`||!e)continue;let t=e;if(typeof t.field!=`string`||t.field===``)continue;let r=i(t.operator);if(!He.has(String(t.operator))&&!He.has(String(r))&&Ue(t.operator,t.value))continue;let a={field:t.field,operator:r};t.value!==void 0&&(a.value=t.value),n.push(a)}return(We(e)?e.logic:void 0)===`or`&&n.length>1?{ok:!1,reason:`or_logic`}:{ok:!0,rules:n}}var Ke={or_logic:`console.objectView.filterOrNotSavable`,nested_group:`console.objectView.filterNestedNotSavable`},qe=[`current_user`,`user`,`ctx`,`os`];function J(e,t){let n={data:e??{}};if(t)for(let e of qe)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e]);return n.data=e??{},n}function Je(e,t){return Xe(e.visibleWhen,t)}function Ye(e,t){return e.filter(e=>Je(e,t))}function Xe(e,t){if(e==null)return!0;let n=typeof e==`string`?e:e.source;if(!n)return!0;try{return dt(n.trim(),t,n)}catch(e){return e instanceof Ze&&rt(e.path,n,t),!0}}var Ze=class extends Error{path;constructor(e){super(`unresolved predicate path: ${e}`),this.path=e,this.name=`UnresolvedPathError`}},Qe=new Set,$e=new Set,et=new Set,tt=new Set,nt=()=>!1;function rt(e,t,n){if(!nt())return;let r=`${e}::${t}`;if(Qe.has(r))return;Qe.add(r);let i=e.split(`.`)[0],a=Object.keys(n).sort().map(e=>`\`${e}\``).join(`, `);console.warn(`[metadata-admin] visibility predicate \`${t}\` references \`${e}\`, but \`${i}\` is not a name in this form's evaluation scope — the names here are ${a} (\`data\` is the current draft; the identity roots are bound only under a host \`ExpressionProvider\`). The predicate was treated as TRUE (fail-open) so the field stays visible instead of disappearing without a trace; check the spelling — draft values are addressed as \`data.<field>\` (e.g. \`data.type in [...]\`) and the signed-in user as \`current_user.<field>\`. A predicate served by an older backend is the usual cause (objectstack#6254 re-spelled the bare \`objectForm\` predicates; objectstack#6936).`)}var it=/^[A-Za-z_$][A-Za-z0-9_$]*(?:\.[A-Za-z_$][A-Za-z0-9_$]*)*$/;function at(e,t){if(!nt())return;let n=`${e}::${t}`;$e.has(n)||($e.add(n),console.warn(`[metadata-admin] visibility predicate \`${t}\` compares against \`${e}\`, which looks like a path but is being used as the literal string "${e}" — this evaluator resolves paths only on the LEFT of \`==\` / \`!=\`; the right-hand side is always a literal (supported subset: \`path == 'literal'\`). So \`data.a == data.b\` is FALSE even when both sides hold the same value, and \`data.a != data.b\` is TRUE — the verdict does not depend on the right-hand path at all. If you meant the text, quote it (\`== 'text'\`). If you meant to compare two paths, that is outside this evaluator's subset: it is an interim stand-in for \`@objectstack/formula\` until CEL lands (ROADMAP M9), and predicate expressions are validated at publish time (objectstack#7010). objectui#4049.`))}function ot(e){let t=e.slice(1,-1);if(!t.trim())return null;for(let e of ft(t,`,`)){let t=e.trim();if(t)try{let e=t.replace(/'([^']*)'/g,(e,t)=>JSON.stringify(t));JSON.parse(e)}catch{return t}}return null}function st(e,t){if(!nt())return;let n=`${e}::${t}`;if(et.has(n))return;et.add(n);let r=ot(e);console.warn(`[metadata-admin] visibility predicate \`${t}\` has an \`in\` set \`${e}\``+(r==null?`, which this evaluator could not parse — `:` containing \`${r}\`, which is not a literal this evaluator can parse — `)+"the WHOLE set was treated as EMPTY, so the predicate is FALSE for every row (not just the element that failed — one bad element discards the good literals next to it too). This evaluator only supports literal elements inside `in [...]` (supported subset: `path in ['a','b']`); it does not resolve paths there — paths resolve only on the LEFT of an operator (objectui#4049). If you meant a literal, quote it. If you meant to test membership against another field, that is outside this evaluator's subset: it is an interim stand-in for `@objectstack/formula` until CEL lands (ROADMAP M9), and predicate expressions are validated at publish time (objectstack#7010). objectui#4266.")}var ct=` in `;function lt(e){return ft(e,ct).length>1}function ut(e,t){if(!nt())return;let n=`${e}::${t}`;tt.has(n)||(tt.add(n),console.warn(`[metadata-admin] visibility predicate \`${t}\` spells a membership test \`${e}\` whose right-hand side is not a bracketed literal set. This evaluator matches \`in\` ONLY against a bracketed set of literals (supported subset: \`path in ['a','b']\`), so this text was never treated as a membership test at all — it fell through every operator branch to a BARE TRUTHY check of the whole string, and the verdict has nothing to do with the membership that was written. With a quoted left side — ADR-0068's own headline example \`'admin' in current_user.positions\` — the whole text comes back verbatim as a non-empty string, so the predicate reads TRUE for EVERY user and a gate meant for admins is open to everyone; with a path-shaped left side it reads FALSE for every row instead. There is no working spelling of this form on this surface: a path on the RIGHT of \`in\` CANNOT be written here today. Paths resolve only on the LEFT of an operator (objectui#4049) and the right of \`in\` must be a literal set spelled out in the predicate itself, so testing membership against a value the draft or the signed-in user holds is outside this evaluator's subset and cannot be expressed — not with different punctuation, not with a different spelling, not at all. This evaluator is an interim stand-in for \`@objectstack/formula\` until CEL lands (ROADMAP M9), and predicate expressions are validated at publish time (objectstack#7010). objectui#6617.`))}function dt(e,t,n){let r=ft(e,`||`);if(r.length>1)return r.some(e=>dt(e.trim(),t,n));let i=ft(e,`&&`);if(i.length>1)return i.every(e=>dt(e.trim(),t,n));if(e.startsWith(`!`))return!dt(e.slice(1).trim(),t,n);let a=e.match(/^(.+?)\s+in\s+(\[.*\])$/);if(a){let e=pt(a[1].trim(),t,n),r=mt(a[2],n);return Array.isArray(r)&&r.includes(e)}let o=e.match(/^(.+?)\s*(==|!=)\s*(.+)$/);if(o){let e=pt(o[1].trim(),t,n),r=mt(o[3].trim(),n),i=e=>e==null,a=i(e)&&i(r)?!0:e===r;return o[2]===`==`?a:!a}return lt(e)&&ut(e,n),!!pt(e,t,n)}function ft(e,t){let n=[],r=0,i=null,a=``;for(let o=0;o<e.length;o++){let s=e[o];if(i){a+=s,s===i&&e[o-1]!==`\\`&&(i=null);continue}if(s===`'`||s===`"`){i=s,a+=s;continue}if(s===`(`||s===`[`?r++:(s===`)`||s===`]`)&&r--,r===0&&e.slice(o,o+t.length)===t&&e[o+t.length]!==`=`){n.push(a),a=``,o+=t.length-1;continue}a+=s}return a&&n.push(a),n}function pt(e,t,n){if(/^['"]/.test(e)||/^-?\d/.test(e)||e===`true`||e===`false`||e===`null`)return mt(e,n);let r=e.split(`.`);if(!Object.prototype.hasOwnProperty.call(t,r[0]))throw new Ze(e);let i=t;for(let e of r){if(i==null)return;i=i[e]}return i}function mt(e,t){let n=e.trim();if(n===`true`)return!0;if(n===`false`)return!1;if(n===`null`)return null;if(/^-?\d+(\.\d+)?$/.test(n))return Number(n);if(n.startsWith(`'`)&&n.endsWith(`'`)||n.startsWith(`"`)&&n.endsWith(`"`))return n.slice(1,-1);if(n.startsWith(`[`)&&n.endsWith(`]`))try{let e=n.replace(/'([^']*)'/g,(e,t)=>JSON.stringify(t));return JSON.parse(e)}catch{return st(n,t),[]}return it.test(n)&&at(n,t),n}var ht=[{value:`default`,label:`Default`,css:`#9ca3af`},{value:`blue`,label:`Blue`,css:`#3b82f6`},{value:`teal`,label:`Teal`,css:`#14b8a6`},{value:`orange`,label:`Orange`,css:`#f97316`},{value:`purple`,label:`Purple`,css:`#a855f7`},{value:`success`,label:`Success`,css:`#22c55e`},{value:`warning`,label:`Warning`,css:`#f59e0b`},{value:`danger`,label:`Danger`,css:`#ef4444`},{value:`green`,label:`Green`,css:`#22c55e`},{value:`red`,label:`Red`,css:`#ef4444`},{value:`amber`,label:`Amber`,css:`#f59e0b`}],gt=Object.fromEntries(ht.map(e=>[e.value,e.css]));function _t(e){return e?/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(e)?e:gt[e]??`#9ca3af`:`#9ca3af`}function vt({value:e,onChange:t,disabled:n,options:r,ariaLabelledBy:i,ariaLabel:a}){let o=r?r.map(e=>({value:e.value,label:e.label??e.value,css:_t(e.value)})):ht.slice(0,8),s=e??`default`;return(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,role:`radiogroup`,"aria-labelledby":i,"aria-label":a,children:o.map(e=>{let r=s===e.value;return(0,q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":r,"aria-label":e.label,title:e.label,disabled:n,onClick:()=>t(e.value),className:re(`flex h-7 w-7 items-center justify-center rounded-full border transition-all`,r?`border-transparent ring-2 ring-foreground/60 ring-offset-1 ring-offset-background`:`border-border hover:scale-110`,n&&`cursor-not-allowed opacity-50`),children:(0,q.jsx)(`span`,{className:`h-4 w-4 rounded-full`,style:{backgroundColor:e.css}})},e.value)})})}function yt(e,t){let n=he(),[r,i]=K.useState({fields:[],loading:!t&&!!e,error:null});return K.useEffect(()=>{if(t){i({fields:t,loading:!1,error:null});return}if(!e){i({fields:[],loading:!1,error:null});return}let r=!1;return i(e=>({...e,loading:!0,error:null})),n.get(`object`,e).then(e=>{if(r)return;if(!e){i({fields:[],loading:!1,error:`Object not found`});return}let t=Se(e.fields).entries.map(e=>({name:e.name,label:typeof e.def.label==`string`&&e.def.label?e.def.label:e.name,type:typeof e.def.type==`string`?e.def.type:`text`,hidden:e.def.hidden===!0}));i({fields:t,loading:!1,error:null})}).catch(e=>{r||i({fields:[],loading:!1,error:e?.message??String(e)})}),()=>{r=!0}},[n,e,t]),r}var bt=null;function xt(){return bt||=t(()=>import(`./vendor-objectstack-BU0HrnMy.js`).then(e=>e.q).then(e=>e),[],import.meta.url).catch(()=>null),bt}var St=[`record`,``],Ct=[`current_user`,`user`];async function wt(e,t={}){if(!e||!e.trim())return[];try{let n=await xt();if(!n?.validateExpression)return[];let r=n.validateExpression(t.role??`predicate`,e,{objectName:t.objectName,fields:t.fields,scope:t.scope??`flattened`}),i=[];for(let e of r?.errors??[])e?.message&&i.push({severity:`error`,message:e.message});for(let e of r?.warnings??[])e?.message&&i.push({severity:`warning`,message:e.message});if(i.every(e=>e.severity!==`error`)&&t.clause===`using`&&n.isPushdownableCel)try{let t=n.isPushdownableCel(e,{fieldRoots:St,variableRoots:Ct});t&&t.ok===!1&&t.reason!==`parse-error`&&i.push({severity:`warning`,message:`This read filter isn't a simple field comparison (${t.detail}), so the server may be unable to push it down to the query — depending on the evaluation path it can be dropped and WIDEN access. Prefer a pushdown-able predicate (field vs. value or scope variable).`})}catch{}return i}catch{return[]}}var Tt=[`number`,`text`,`boolean`,`date`,`unknown`];async function Et(e,t={}){if(!e||!e.trim())return null;try{let n=await xt();if(!n?.inferExpressionType)return null;let r=n.inferExpressionType(e,{objectName:t.objectName,fields:t.fields,scope:t.scope??`record`});return Tt.includes(r)?r:`unknown`}catch{return null}}async function Dt(e={}){let t={fields:e.fields??[],roots:e.roots??[],functions:[]};try{let n=await xt();if(!n?.introspectScope)return t;let r=n.introspectScope(e.role??`predicate`,{objectName:e.objectName,fields:e.fields,scope:e.scope??`flattened`});return{fields:r?.fields??e.fields??[],roots:e.roots??r?.roots??[],functions:r?.functions??[]}}catch{return t}}var Ot=/[A-Za-z0-9_$]/,kt=/[A-Za-z_$]/;function At(e,t){let n=t;for(;n>0&&Ot.test(e[n-1]);)n--;if(n===t)return null;let r=e.slice(n,t);return!kt.test(r[0])||n>0&&e[n-1]===`.`?null:{start:n,end:t,text:r}}function jt(e,t){let n=t;for(;n>0&&Ot.test(e[n-1]);)n--;let r=e.slice(n,t);if(r&&!kt.test(r[0])||n===0||e[n-1]!==`.`)return null;let i=n-1;for(;i>0&&Ot.test(e[i-1]);)i--;let a=e.slice(i,n-1);return!a||!kt.test(a[0])||i>0&&e[i-1]===`.`?null:{root:a,start:n,end:t,text:r}}function Mt(e){let t=new Set,n=[],r=(e,r)=>{!e||t.has(e)||(t.add(e),n.push({label:e,kind:r}))};return e.fields.forEach(e=>r(e,`field`)),e.roots.forEach(e=>r(e,`root`)),e.functions.forEach(e=>r(e,`function`)),n}function Nt(e,t,n=!1){let r=t.toLowerCase();if(!r&&!n)return[];let i=[];for(let t of e){let e=t.label.toLowerCase();if(e.startsWith(r)&&e!==r&&i.push(t),i.length>=8)break}return i}async function Pt(e,t){if(!e||!e.trim())return{status:`error`,kind:`parse`,message:`The predicate is empty.`};let n;try{n=await xt()}catch{return{status:`unavailable`}}if(!n?.ExpressionEngine?.evaluate)return{status:`unavailable`};try{let r=t.record??{},i=t.currentUser??{},a={record:r,extra:{...r,record:r,current_user:i,user:i}},o=n.ExpressionEngine.evaluate({dialect:`cel`,source:e},a);if(!o||o.ok!==!0){let e=o&&o.ok===!1?o.error:void 0;return{status:`error`,kind:e?.kind??`runtime`,message:e?.message??`Evaluation failed.`}}return o.value===!0?{status:`allow`}:o.value===!1?{status:`deny`}:{status:`value`,value:o.value}}catch(e){return{status:`error`,kind:`runtime`,message:e?.message??String(e)}}}var Ft=250,It={field:`field`,root:`scope`,function:`fn`},Lt=new Set([`record`,`previous`]),Rt=[];function zt({value:e,onChange:t,disabled:n,placeholder:r,label:i,objectName:a,fieldNames:o=Rt,clause:s,scope:l,roots:u,role:d,onLintChange:f,onInferredTypeChange:p,t:m,id:h}){let g=K.useId(),_=h??g,v=K.useRef(null),[y,b]=K.useState([]),[x,S]=K.useState(!1),[C,w]=K.useState(null),[E,D]=K.useState(null),[O,k]=K.useState(!1),[A,j]=K.useState([]),[M,N]=K.useState(0),P=K.useRef(null),F=K.useRef(null),I=o.join(`,`),te=u?u.join(`,`):``,L=K.useRef(f),R=K.useRef(p);K.useEffect(()=>{L.current=f,R.current=p}),K.useEffect(()=>{let t=!1,n=setTimeout(()=>{let n={objectName:a,fields:o,clause:s,scope:l,role:d};wt(e,n).then(e=>{t||(b(e),S(!0),L.current?.(e))}),d===`value`&&Et(e,n).then(e=>{t||(w(e),R.current?.(e))})},Ft);return()=>{t=!0,clearTimeout(n)}},[e,a,I,s,l,d]),K.useEffect(()=>{e.trim()||(b([]),S(!1),w(null),L.current?.([]),d===`value`&&R.current?.(null))},[e]),K.useEffect(()=>{let e=!1;return Dt({objectName:a,fields:o,scope:l,roots:u}).then(t=>{e||D(t)}),()=>{e=!0}},[a,I,l,te]);let z=K.useMemo(()=>E?Mt(l===`record`?{...E,fields:[]}:E):[],[E,l]),ie=K.useMemo(()=>E?E.fields.map(e=>({label:e,kind:`field`})):[],[E]);K.useEffect(()=>{if(F.current!=null&&v.current){let e=F.current;F.current=null,v.current.setSelectionRange(e,e)}},[e]);let B=K.useCallback(()=>{k(!1),j([]),P.current=null},[]),V=K.useCallback(()=>{let e=v.current;if(!e||n)return B();let t=e.value,r=e.selectionStart??t.length,i=null,a=[],o=At(t,r);if(o)i=o,a=Nt(z,o.text);else{let e=jt(t,r);e&&Lt.has(e.root)&&(i=e,a=Nt(ie,e.text,!0))}if(!i||!a.length)return B();P.current={start:i.start,end:i.end},j(a),N(0),k(!0)},[z,ie,n,B]),ae=K.useCallback(e=>{let n=P.current,r=v.current;if(!n||!r)return;let i=r.value,a=e.kind===`function`?`${e.label}(`:e.label,o=i.slice(0,n.start)+a+i.slice(n.end);F.current=n.start+a.length,B(),t(o)},[t,B]),se=K.useRef(V);K.useEffect(()=>{se.current=V},[V]),K.useEffect(()=>{v.current&&document.activeElement===v.current&&se.current()},[z,ie]);let H=e=>{!O||A.length===0||(e.key===`ArrowDown`?(e.preventDefault(),N(e=>(e+1)%A.length)):e.key===`ArrowUp`?(e.preventDefault(),N(e=>(e-1+A.length)%A.length)):e.key===`Enter`||e.key===`Tab`?(e.preventDefault(),ae(A[M])):e.key===`Escape`&&(e.preventDefault(),B()))},ce=y.filter(e=>e.severity===`error`),le=y.filter(e=>e.severity===`warning`),de=x&&!!e.trim()&&y.length===0,fe=d===`value`&&x&&!!e.trim()&&ce.length===0&&C!==null,pe=`${_}-ac`;return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(c,{className:`text-[10px] uppercase text-muted-foreground`,htmlFor:_,children:i}),(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsx)(T,{ref:v,id:_,value:e,disabled:n,rows:2,placeholder:r,spellCheck:!1,autoComplete:`off`,role:`combobox`,"aria-expanded":O,"aria-autocomplete":`list`,"aria-controls":O?pe:void 0,"aria-invalid":ce.length>0||void 0,onChange:e=>{t(e.target.value),V()},onKeyDown:H,onClick:V,onBlur:()=>{window.setTimeout(()=>B(),120)},className:re(`font-mono text-xs`,ce.length>0&&`border-destructive focus-visible:ring-destructive/40`)}),O&&A.length>0&&(0,q.jsx)(`ul`,{id:pe,role:`listbox`,"aria-label":m(`perm.cel.suggestions`),className:`absolute z-50 mt-1 max-h-48 w-72 overflow-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md`,children:A.map((e,t)=>(0,q.jsxs)(`li`,{role:`option`,"aria-selected":t===M,onMouseDown:t=>{t.preventDefault(),ae(e)},onMouseEnter:()=>N(t),className:re(`flex cursor-pointer items-center justify-between gap-2 rounded-sm px-2 py-1 text-xs`,t===M?`bg-accent text-accent-foreground`:`hover:bg-accent/60`),children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e.label}),(0,q.jsx)(`span`,{className:`text-[10px] uppercase text-muted-foreground`,children:It[e.kind]})]},`${e.kind}:${e.label}`))})]}),(ce.length>0||le.length>0)&&(0,q.jsxs)(`ul`,{className:`mt-1 space-y-1`,"aria-live":`polite`,children:[ce.map((e,t)=>(0,q.jsxs)(`li`,{className:`flex items-start gap-1.5 text-[11px] text-destructive`,children:[(0,q.jsx)(oe,{className:`mt-[1px] h-3 w-3 shrink-0`}),(0,q.jsx)(`span`,{children:e.message})]},`e${t}`)),le.map((e,t)=>(0,q.jsxs)(`li`,{className:`flex items-start gap-1.5 text-[11px] text-amber-600 dark:text-amber-500`,children:[(0,q.jsx)(ue,{className:`mt-[1px] h-3 w-3 shrink-0`}),(0,q.jsx)(`span`,{children:e.message})]},`w${t}`))]}),de&&(0,q.jsxs)(`p`,{className:`mt-1 flex items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(ne,{className:`h-3 w-3 shrink-0 text-emerald-600 dark:text-emerald-500`}),m(`perm.cel.valid`)]}),fe&&(0,q.jsxs)(`p`,{className:`mt-1 flex items-start gap-1.5 text-[11px] text-muted-foreground`,"aria-live":`polite`,children:[(0,q.jsx)(ee,{className:`mt-[1px] h-3 w-3 shrink-0`}),(0,q.jsxs)(`span`,{children:[m(`perm.cel.type`),` `,(0,q.jsx)(`span`,{className:re(`font-medium`,C!==`unknown`&&`text-foreground`),children:m(`perm.cel.type.${C}`)}),C===`unknown`&&(0,q.jsxs)(q.Fragment,{children:[` — `,m(`perm.cel.type.unknownHint`)]})]})]})]})}var Bt=[{value:`==`,label:`equals`},{value:`!=`,label:`not equals`},{value:`>`,label:`greater than`},{value:`<`,label:`less than`},{value:`>=`,label:`≥`},{value:`<=`,label:`≤`},{value:`truthy`,label:`is set / true`},{value:`falsy`,label:`is empty / false`}],Vt=[{value:`record.id`,label:`record.id`},{value:`user.id`,label:`user.id`},{value:`user.email`,label:`user.email`},{value:`user.role`,label:`user.role`},{value:`user.isAdmin`,label:`user.isAdmin`},{value:`org.id`,label:`org.id`}],Ht=e=>e.replace(/\s+/g,` `).trim(),Ut=RegExp(`^(?:${[`record`,`previous`,`parent`,`user`,`current_user`,`org`].join(`|`)})(?:\\.[A-Za-z_][A-Za-z0-9_]*)+$`);function Wt(e,t=`'`){let n=e.trim();return n===`true`||n===`false`||n===`null`||n!==``&&!Number.isNaN(Number(n))||Ut.test(n)?n:`${t}${t===`'`?n.replace(/'/g,`\\'`):n.replace(/"/g,`\\"`)}${t}`}function Gt(e){let t=e.trim(),n=/^'(.*)'$/.exec(t);if(n)return{value:n[1].replace(/\\'/g,`'`),quote:`'`};let r=/^"(.*)"$/.exec(t);return r?{value:r[1].replace(/\\"/g,`"`),quote:`"`}:{value:t}}function Kt(e,t){return e.filter(e=>e.subject).map(e=>e.op===`truthy`?e.subject:e.op===`falsy`?`!${e.subject}`:`${e.subject} ${e.op} ${Wt(e.value,e.quote)}`).join(` ${t} `)}function qt(e){let t=Ht(e);if(!t)return{rows:[],join:`&&`};let n=t.includes(`&&`),r=t.includes(`||`);if(n&&r)return null;let i=r?`||`:`&&`,a=t.split(r?`||`:`&&`).map(e=>e.trim()),o=[];for(let e of a){let t=/^([a-zA-Z_][\w.]*)\s*(==|!=|>=|<=|>|<)\s*(.+)$/.exec(e);if(t){let e=Gt(t[3]);o.push({subject:t[1],op:t[2],value:e.value,quote:e.quote});continue}let n=/^!\s*([a-zA-Z_][\w.]*)$/.exec(e);if(n){o.push({subject:n[1],op:`falsy`,value:``});continue}let r=/^([a-zA-Z_][\w.]*)$/.exec(e);if(r){o.push({subject:r[1],op:`truthy`,value:``});continue}return null}return{rows:o,join:i}}function Jt(e){let t=qt(e||``);return t&&Ht(Kt(t.rows,t.join))===Ht(e||``)?{rows:t.rows,join:t.join,raw:!1}:{rows:[],join:`&&`,raw:!!e}}function Yt({label:e,value:t,onCommit:n,objectName:r,fields:i,disabled:a,onBlockingIssuesChange:o,subjects:s}){let{fields:l}=yt(r),u=i??l,d=s?.fieldPrefix??`record.`,h=s?.includePrevious??!1,g=s?.context??Vt,_=K.useMemo(()=>{let e=u.filter(e=>!e.hidden),t=e.map(e=>({value:`${d}${e.name}`,label:`${d}${e.name}`})),n=h?[{value:`previous`,label:`previous`},...e.map(e=>({value:`previous.${e.name}`,label:`previous.${e.name}`}))]:[],r=g.map(e=>({value:e.value,label:e.label??e.value}));return[...t,...n,...r]},[u,d,h,g]),y=U(),b=K.useCallback(e=>G(e,y),[y]),x=K.useMemo(()=>u.filter(e=>!e.hidden).map(e=>e.name),[u]),C=K.useMemo(()=>Jt(t),[]),[w,T]=K.useState(C.rows),[E,O]=K.useState(C.join),[k,A]=K.useState(C.raw),M=K.useRef(t||``);K.useEffect(()=>{let e=t||``;if(e===M.current)return;M.current=e;let n=Jt(e);T(n.rows),O(n.join),A(n.raw)},[t]);let N=(e,t)=>{let r=Kt(e,t);M.current=r,n(r)},P=(e,t=E)=>{T(e),O(t),N(e,t)},[ee,I]=K.useState(0),te=K.useCallback(e=>{let t=e.filter(e=>e.severity===`error`).length;I(e=>e===t?e:t)},[]),L=k?ee:0,R=K.useRef(o);K.useEffect(()=>{R.current=o}),K.useEffect(()=>{R.current?.(L)},[L]);let z=Kt(w,E);return k?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e?(0,q.jsx)(c,{className:`text-xs text-muted-foreground`,children:e}):(0,q.jsx)(`span`,{}),(0,q.jsxs)(`button`,{type:`button`,disabled:a,onClick:()=>{let e=Jt(t);(!t||!e.raw)&&(T(e.rows),O(e.join),A(!1))},className:`inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,children:[(0,q.jsx)(D,{className:`h-3 w-3`}),` Builder`]})]}),(0,q.jsx)(zt,{label:b(`engine.condition.celLabel`),value:t,onChange:e=>{M.current=e,n(e)},onLintChange:te,disabled:a,placeholder:`record.status != 'done' && user.isAdmin`,objectName:r,fieldNames:x,t:b}),t&&!qt(t)&&(0,q.jsx)(`div`,{className:`text-[10px] text-muted-foreground/70`,children:b(`engine.condition.advancedHint`)})]}):(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e?(0,q.jsx)(c,{className:`text-xs text-muted-foreground`,children:e}):(0,q.jsx)(`span`,{}),(0,q.jsxs)(`button`,{type:`button`,disabled:a,onClick:()=>A(!0),className:`inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,children:[(0,q.jsx)(fe,{className:`h-3 w-3`}),` Expression`]})]}),w.length===0?(0,q.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2 text-center text-[11px] text-muted-foreground`,children:`Always — no condition.`}):(0,q.jsx)(`div`,{className:`space-y-1.5`,children:w.map((e,t)=>(0,q.jsxs)(`div`,{className:`space-y-1 rounded-md border border-border p-1.5`,children:[t>0&&(0,q.jsx)(`div`,{className:`flex justify-center`,children:(0,q.jsxs)(H,{value:E,onValueChange:e=>P(w,e),disabled:a,children:[(0,q.jsx)(p,{className:`h-6 w-16 text-[10px]`,children:(0,q.jsx)(S,{})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:`&&`,children:`AND`}),(0,q.jsx)(m,{value:`||`,children:`OR`})]})]})}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,q.jsxs)(H,{value:e.subject,onValueChange:e=>P(w.map((n,r)=>r===t?{...n,subject:e}:n)),disabled:a,children:[(0,q.jsx)(p,{className:`h-7 text-xs`,children:(0,q.jsx)(S,{placeholder:`field / context`})}),(0,q.jsxs)(j,{children:[_.map(e=>(0,q.jsx)(m,{value:e.value,children:e.label},e.value)),e.subject&&!_.some(t=>t.value===e.subject)&&(0,q.jsx)(m,{value:e.subject,children:e.subject})]})]})}),(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,disabled:a,"aria-label":`Remove condition`,onClick:()=>P(w.filter((e,n)=>n!==t)),children:(0,q.jsx)(B,{className:`h-3.5 w-3.5`})})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(`div`,{className:`w-28 shrink-0`,children:(0,q.jsxs)(H,{value:e.op,onValueChange:e=>P(w.map((n,r)=>r===t?{...n,op:e}:n)),disabled:a,children:[(0,q.jsx)(p,{className:`h-7 text-xs`,children:(0,q.jsx)(S,{})}),(0,q.jsx)(j,{children:Bt.map(e=>(0,q.jsx)(m,{value:e.value,children:e.label},e.value))})]})}),e.op!==`truthy`&&e.op!==`falsy`&&(0,q.jsx)(v,{className:`h-7 flex-1 text-xs`,value:e.value,placeholder:`value`,disabled:a,onChange:e=>P(w.map((n,r)=>r===t?{...n,value:e.target.value}:n))})]})]},t))}),!a&&(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>P([...w,{subject:``,op:`truthy`,value:``}]),children:[(0,q.jsx)(f,{className:`mr-1 h-3.5 w-3.5`}),` Add condition`]}),z&&(0,q.jsx)(`div`,{className:`rounded bg-muted/40 px-2 py-1 text-[10px] font-mono text-muted-foreground break-all`,children:z})]})}function Xt(e){return typeof e==`number`&&Number.isFinite(e)}function Zt(e){let t=e.position;if(Xt(t?.x)&&Xt(t?.y))return{x:t.x,y:t.y};let n=e.ui;return Xt(n?.x)&&Xt(n?.y)?{x:n.x,y:n.y}:null}function Qt(e){return Zt(e)!==null}function $t(e){return e.some(e=>e&&`ui`in e)?e.map(e=>{if(!e||!(`ui`in e))return e;let{ui:t,...n}=e,r=Zt(e);return r?{...n,position:r}:n}):e}function en(e){if(!e||typeof e!=`object`)return null;let t=e;return!Array.isArray(t.nodes)||t.nodes.length===0?null:{nodes:t.nodes,edges:Array.isArray(t.edges)?t.edges:[]}}function tn(e){let t=e.config??{};switch(e.type){case`loop`:{let e=en(t.body);return e?[{key:`body`,label:void 0,...e}]:[]}case`parallel`:{let e=[];return(Array.isArray(t.branches)?t.branches:[]).forEach((t,n)=>{let r=en(t);if(!r)return;let i=t.name;e.push({key:`branch-${n}`,label:typeof i==`string`&&i?i:`Branch ${n+1}`,...r})}),e}case`try_catch`:{let e=[],n=en(t.try);n&&e.push({key:`try`,label:`Try`,...n});let r=en(t.catch);return r&&e.push({key:`catch`,label:`Catch`,...r}),e}default:return[]}}function nn(e,t,n=()=>66){let r=new Map,i=new Map(e.map(e=>[e.id,n(e)]));if(e.length===0)return{positions:r,heights:i,size:{width:28,height:28}};let a=new Map(e.map(e=>[e.id,e])),o=new Map(e.map((e,t)=>[e.id,t])),s=new Map,c=new Map;for(let t of e)c.set(t.id,0);for(let e of t)!a.has(e.source)||!a.has(e.target)||e.source===e.target||un(e)||(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e.target),c.set(e.target,(c.get(e.target)??0)+1));let l=[];for(let t of e)t.type===`start`&&l.push(t.id);for(let t of e)(c.get(t.id)??0)===0&&!l.includes(t.id)&&l.push(t.id);l.length===0&&l.push(e[0].id);let u=new Map,d=[];for(let e of l)u.set(e,0),d.push(e);let f=e.length*Math.max(1,t.length)+e.length+1,p=0;for(;d.length&&p<f;){p+=1;let e=d.shift(),t=u.get(e)??0;for(let n of s.get(e)??[]){let e=t+1;(u.get(n)??-1)<e&&(u.set(n,e),d.push(n))}}let m=0;for(let e of u.values())m=Math.max(m,e);for(let t of e)u.has(t.id)||(m+=1,u.set(t.id,m));let h=new Map;for(let t of e){let e=u.get(t.id)??0;h.has(e)||h.set(e,[]),h.get(e).push(t.id)}for(let e of h.values())e.sort((e,t)=>(o.get(e)??0)-(o.get(t)??0));let g=[...h.keys()].sort((e,t)=>e-t),_=0,v;for(let e of g){v!==void 0&&(_+=(e-v-1)*122);let t=h.get(e),n=-(t.length*240+(t.length-1)*44)/2,o=66;t.forEach((e,t)=>{r.set(e,{x:n+t*284,y:_});let s=a.get(e);s&&!Qt(s)&&(o=Math.max(o,i.get(e)??66))}),_+=o+56,v=e}let y=1/0,b=1/0;for(let e of r.values())y=Math.min(y,e.x),b=Math.min(b,e.y);if(Number.isFinite(y)&&Number.isFinite(b)){let e=28-y,t=28-b;for(let[n,i]of r)r.set(n,{x:i.x+e,y:i.y+t})}for(let t of e){let e=Zt(t);e&&r.set(t.id,{x:Math.max(0,e.x),y:Math.max(0,e.y)})}let x=0,S=0;for(let[e,t]of r)x=Math.max(x,t.x+240),S=Math.max(S,t.y+(i.get(e)??66));return{positions:r,heights:i,size:{width:x+28,height:S+28}}}function rn(e,t){return nn(e,t).positions}function an(e){let t=0,n=0;for(let r of e.values())t=Math.max(t,r.x+240),n=Math.max(n,r.y+66);return{width:t+28,height:n+28}}function on(e,t=66){return{x:e.x+120,y:e.y+t}}function sn(e){return{x:e.x+120,y:e.y}}function cn(e,t){let n=Math.max(Math.abs(t.y-e.y)*.5,24),r={x:e.x,y:e.y+n},i={x:t.x,y:t.y-n};return`M ${e.x},${e.y} C ${r.x},${r.y} ${i.x},${i.y} ${t.x},${t.y}`}function ln(e,t){return{x:(e.x+t.x)/2,y:(e.y+t.y)/2}}function un(e){return e.type===`back`}function dn(e){return{x:e.x+240,y:e.y+33}}function fn(e,t){return Math.max(64,Math.abs(t.y-e.y)*.35)}function pn(e,t){let n=fn(e,t),r={x:e.x+n,y:e.y},i={x:t.x+n,y:t.y};return`M ${e.x},${e.y} C ${r.x},${r.y} ${i.x},${i.y} ${t.x},${t.y}`}function mn(e,t){let n=fn(e,t);return{x:Math.max(e.x,t.x)+n*.75,y:(e.y+t.y)/2}}function hn(e,t){return e.id||`${e.source}->${e.target}#${t}`}function gn(e){if(e){if(typeof e==`string`)return e;if(typeof e==`object`&&typeof e.source==`string`)return e.source}}function _n(e){return gn(e)??``}function vn(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return typeof e.dialect==`string`?e:void 0}function yn(e,t){if(!t)return;let n=vn(e);if(!n)return t;let r={...n,source:t};return delete r.ast,r}var Y={status:`idle`};function X(e,t){return e.status===`loaded`?e.data:t}function bn(e,t){return e.status===`loaded`?{status:`loaded`,data:t(e.data)}:e}function xn(e){return{status:`loaded`,data:e}}function Sn(e){return{status:`error`,message:e}}function Cn(e){if(e instanceof Error&&e.message)return e.message;let t=e?.message;return typeof t==`string`&&t?t:String(e)}function wn(e,t){return e.status===`loaded`?e.data:t}function Tn(e){return e.status===`loading`}function En(e){return e.status===`error`?e.message:void 0}function Dn(e){let[t,n]=K.useState(()=>e?{status:`loading`}:{status:`idle`});return K.useEffect(()=>{if(!e){n({status:`idle`});return}let t=!1;return n({status:`loading`}),(async()=>{try{let r=await e();t||n({status:`loaded`,data:r})}catch(e){t||n({status:`error`,message:Cn(e)})}})(),()=>{t=!0}},[e]),t}var On=[],kn=[],An=[],jn=[];function Z({message:e,testId:t}){let n=U();return(0,q.jsxs)(`div`,{"data-testid":t,role:`status`,className:`rounded border border-amber-200 bg-amber-50 p-2 text-xs text-amber-900`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium`,children:[(0,q.jsx)(ue,{className:`h-3.5 w-3.5 shrink-0`}),G(`engine.form.optionsLoadFailedTitle`,n)]}),(0,q.jsx)(`p`,{className:`mt-1 text-amber-800`,children:G(`engine.form.optionsLoadFailedDesc`,n)}),e?(0,q.jsx)(`p`,{"data-testid":`${t}-cause`,className:`mt-1 max-w-full break-words font-mono text-[10px] text-amber-700`,children:e}):null]})}function Mn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.objectNames??Y,s=t==null?``:String(t);if(o.status===`error`)return(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsx)(Z,{message:o.message,testId:`ref-object-load-failed`}),(0,q.jsx)(v,{id:e,value:s,disabled:r,onChange:e=>n(e.target.value||void 0)})]});if(Tn(o))return(0,q.jsx)(v,{id:e,value:s,disabled:!0,placeholder:G(`engine.form.loadingObjects`,a)});let c=X(o,On);return c.length===0?(0,q.jsx)(v,{id:e,value:s,disabled:r,onChange:e=>n(e.target.value||void 0),placeholder:G(`engine.form.noObjects`,a)}):(0,q.jsxs)(H,{value:s,onValueChange:e=>n(e||void 0),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectObject`,a)})}),(0,q.jsx)(j,{children:c.map(e=>(0,q.jsx)(m,{value:e,children:e},e))})]})}function Nn(e){let t=[],n=new Set,r=e=>{if(!e||typeof e!=`object`)return;let r=e,a=r.id;typeof a==`string`&&a&&!n.has(a)&&(n.add(a),t.push({id:a,type:typeof r.type==`string`?r.type:void 0,label:typeof r.label==`string`?r.label:void 0})),i(r.components),i(r.children);let o=r.properties;o&&typeof o==`object`&&(i(o.components),i(o.children))},i=e=>{if(Array.isArray(e))for(let t of e)r(t)};if(e&&typeof e==`object`){let t=e.regions;if(Array.isArray(t))for(let e of t)e&&typeof e==`object`&&i(e.components)}return t}function Pn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.componentIds??[],s=t==null?``:String(t);if(o.length===0)return(0,q.jsx)(v,{id:e,value:s,disabled:r,onChange:e=>n(e.target.value||void 0),placeholder:G(`engine.form.noComponents`,a)});let c=!s||o.some(e=>e.id===s);return(0,q.jsxs)(H,{value:s||Q,onValueChange:e=>n(e===Q?void 0:e),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectComponent`,a)})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:Q,children:(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:G(`engine.form.none`,a)})}),!c&&s&&(0,q.jsx)(m,{value:s,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:s}),(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,a)})]})}),o.map(e=>(0,q.jsx)(m,{value:e.id,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e.id}),(e.label||e.type)&&(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.label||e.type})]})},e.id))]})]})}function Fn({id:e,value:t,onChange:n,readOnly:r,context:i,fieldSpec:a}){let o=U(),s=i?.objectNames??Y,c=a?.multiple??!1,l=K.useMemo(()=>t?Array.isArray(t)?t.map(String):String(t).split(`,`).map(e=>e.trim()).filter(Boolean):[],[t]),u=e=>{if(!r){if(!c){n(e);return}n(l.includes(e)?l.filter(t=>t!==e):[...l,e])}},d=e=>{if(r)return;let t=l.filter(t=>t!==e);n(c?t:``)};if(Tn(s))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingObjects`,o),readOnly:!0,disabled:!0});let f=l.length>0&&(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:l.map(e=>(0,q.jsxs)(`div`,{className:`inline-flex items-center gap-1 rounded bg-secondary px-2 py-1 text-sm`,children:[(0,q.jsx)(`span`,{children:e}),!r&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>d(e),className:`text-muted-foreground hover:text-foreground`,children:`×`})]},e))});if(s.status===`error`)return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[f,(0,q.jsx)(Z,{message:s.message,testId:`object-selector-load-failed`})]});let h=X(s,On);return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[f,(0,q.jsxs)(H,{value:``,onValueChange:u,disabled:r||h.length===0,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(c?`engine.form.addObjects`:`engine.form.selectObject`,o)})}),(0,q.jsx)(j,{children:h.map(e=>(0,q.jsxs)(m,{value:e,disabled:!c&&l.includes(e),children:[e,l.includes(e)&&` ✓`]},e))})]})]})}var In=[];async function Ln(e){let t=await fetch(`/api/v1/objects/${e}/fields`),n=null;try{n=await t.json()}catch{}if(!t.ok){let e=n?.error?.message??n?.error??n?.message;throw Error(typeof e==`string`&&e?e:`HTTP ${t.status}`)}return Array.isArray(n?.fields)?n.fields:[]}function Rn({id:e,value:t,onChange:n,readOnly:r,fieldSpec:i,formData:a}){let o=U(),s=i?.dependsOn||i?.reference||`objectName`,c=Array.isArray(s)?s[0]:s,l=a?.[c],u=Dn(K.useMemo(()=>l?()=>Ln(l):null,[l])),d=wn(u,In),f=En(u),h=i?.multiple??!1,g=K.useMemo(()=>t?Array.isArray(t)?t.map(String):String(t).split(`,`).map(e=>e.trim()).filter(Boolean):[],[t]),_=e=>{if(!r){if(!h){n(e);return}n(g.includes(e)?g.filter(t=>t!==e):[...g,e])}},y=e=>{if(r)return;let t=g.filter(t=>t!==e);n(h?t:``)};if(!l)return(0,q.jsx)(v,{id:e,value:G(`engine.form.selectObjectFirst`,o),readOnly:!0,disabled:!0});if(Tn(u))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingFields`,o),readOnly:!0,disabled:!0});let b=g.length>0&&(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:g.map(e=>{let t=d.find(t=>t.name===e);return(0,q.jsxs)(`div`,{className:`inline-flex items-center gap-1 rounded bg-secondary px-2 py-1 text-sm`,children:[(0,q.jsx)(`span`,{children:t?.label||e}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:t?.type}),!r&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>y(e),className:`text-muted-foreground hover:text-foreground`,children:`×`})]},e)})});return f?(0,q.jsxs)(`div`,{className:`space-y-2`,children:[b,(0,q.jsx)(Z,{message:f,testId:`field-selector-load-failed`})]}):(0,q.jsxs)(`div`,{className:`space-y-2`,children:[b,(0,q.jsxs)(H,{value:``,onValueChange:_,disabled:r||d.length===0,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:G(h?`engine.form.addFields`:`engine.form.selectField`,o)})}),(0,q.jsx)(j,{children:d.map(e=>(0,q.jsx)(m,{value:e.name,disabled:!h&&g.includes(e.name),children:(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.type}),g.includes(e.name)&&` ✓`]})},e.name))})]})]})}function zn({schema:e,value:t,onChange:n,readOnly:r,context:i,ariaLabelledBy:a}){let o=U(),s=e;if(s?.anyOf||s?.oneOf){let e=(s.anyOf??s.oneOf).find(e=>e?.type===`array`&&e?.items?.type===`object`);e&&(s={...s,...e})}let c=s?.items??{},l=c.properties??{},u=new Set(Array.isArray(c.required)?c.required:[]),d=Array.isArray(t)?t:[],p=Object.keys(l);if(p.length===0)return(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":a,className:`rounded border border-dashed border-amber-500/40 bg-amber-500/5 p-2 text-xs text-amber-700 dark:text-amber-300`,children:G(`engine.form.masterDetailSchemaError`,o)});function m(e,t){let r=d.slice();r[e]={...r[e]??{},...t},n(r)}function h(){n([...d,{}])}function g(e){let t=d.slice();t.splice(e,1),n(t)}return(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":a,children:[(0,q.jsx)(`div`,{className:`overflow-x-auto rounded border border-border/40`,children:(0,q.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,q.jsx)(`thead`,{className:`bg-muted/40`,children:(0,q.jsxs)(`tr`,{children:[p.map(e=>(0,q.jsxs)(`th`,{className:`px-2 py-1.5 text-left text-xs font-medium text-muted-foreground`,children:[l[e]?.title??e,u.has(e)&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]},e)),(0,q.jsx)(`th`,{className:`w-8`})]})}),(0,q.jsxs)(`tbody`,{children:[d.length===0&&(0,q.jsx)(`tr`,{children:(0,q.jsx)(`td`,{colSpan:p.length+1,className:`px-2 py-3 text-center text-xs text-muted-foreground`,children:G(`engine.form.noRows`,o)})}),d.map((e,t)=>(0,q.jsxs)(`tr`,{className:`border-t border-border/30`,children:[p.map(n=>(0,q.jsx)(`td`,{className:`p-1`,children:(0,q.jsx)(Bn,{schema:l[n],value:(e??{})[n],readOnly:r,context:i,onChange:e=>m(t,{[n]:e})})},n)),(0,q.jsx)(`td`,{className:`p-1 text-right`,children:(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>g(t),disabled:r,className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.removeRow`,o),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})})]},t))]})]})}),(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:h,disabled:r,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.addRow`,o)]})]})}function Bn({schema:e,value:t,readOnly:n,context:r,onChange:i}){if(e?.widget===`ref:object`)return(0,q.jsx)(Mn,{schema:e,value:t,onChange:i,readOnly:n,context:r});if(e?.widget===`ref:component`)return(0,q.jsx)(Pn,{schema:e,value:t,onChange:i,readOnly:n,context:r});let a=e?.enum;return Array.isArray(a)&&a.length>0?(0,q.jsxs)(H,{value:t==null?``:String(t),onValueChange:e=>i(e||void 0),disabled:n,children:[(0,q.jsx)(p,{className:`h-8 text-xs`,children:(0,q.jsx)(S,{placeholder:`—`})}),(0,q.jsx)(j,{children:a.map(e=>(0,q.jsx)(m,{value:String(e),children:String(e)},String(e)))})]}):e?.type===`boolean`?(0,q.jsx)(`input`,{type:`checkbox`,checked:!!t,disabled:n,onChange:e=>i(e.target.checked),className:`h-4 w-4`}):e?.type===`number`||e?.type===`integer`?(0,q.jsx)(v,{type:`number`,value:t==null?``:String(t),disabled:n,onChange:e=>{let t=e.target.valueAsNumber;i(Number.isFinite(t)?t:void 0)},className:`h-8 text-xs`}):(0,q.jsx)(v,{value:t==null?``:String(t),disabled:n,onChange:e=>i(e.target.value||void 0),className:`h-8 text-xs`})}function Vn({id:e,value:t,onChange:n,readOnly:r}){let i=U(),a=Array.isArray(t)?t:[],[o,s]=K.useState(``);function c(e){let t=e.split(/[,\n]/).map(e=>e.trim()).filter(Boolean);if(t.length===0)return;let r=[...a];for(let e of t)r.includes(e)||r.push(e);n(r),s(``)}function l(e){let t=a.slice();t.splice(e,1),n(t)}return(0,q.jsx)(`div`,{className:`rounded border border-input bg-background p-1.5`,children:(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[a.map((e,t)=>(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-xs`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e}),!r&&(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>l(t),className:`text-muted-foreground hover:text-destructive`,children:`×`})]},t)),(0,q.jsx)(`input`,{id:e,type:`text`,value:o,disabled:r,placeholder:a.length===0?G(`engine.form.tagsPlaceholder`,i):``,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),c(o)):e.key===`Backspace`&&!o&&a.length>0&&l(a.length-1)},onBlur:()=>o&&c(o),className:`min-w-[8rem] flex-1 bg-transparent text-sm outline-none`})]})})}function Hn(e){return e.replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Un({value:e,onChange:t,readOnly:n,schema:r,fieldSpec:i,formData:o,ariaLabelledBy:s}){let c=a(),l=K.useMemo(()=>{if(Array.isArray(i?.options)&&i.options.length)return i.options.map(e=>({label:e.label,value:e.value,visibleWhen:e.visibleWhen}));let e=r?.items?.enum??r?.enum??[];return(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`).map(e=>({label:Hn(e),value:e}))},[i,r]),u=K.useMemo(()=>Ye(l,J(o,c)),[l,o,c]),d=K.useMemo(()=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],[e]);function f(e){if(n)return;let r=new Set(d);r.has(e)?r.delete(e):r.add(e);let i=l.map(e=>e.value).filter(e=>r.has(e));t(i.length?i:void 0)}return l.length===0?(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":s,children:(0,q.jsx)(Vn,{value:e,onChange:t,readOnly:n,schema:r,fieldSpec:i})}):(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,role:`group`,"aria-labelledby":s,children:u.map(e=>{let t=d.includes(e.value);return(0,q.jsxs)(`button`,{type:`button`,role:`checkbox`,"aria-checked":t,disabled:n,onClick:()=>f(e.value),className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium transition-colors `+(t?`border-primary bg-primary/10 text-primary`:`border-input bg-background text-muted-foreground hover:text-foreground hover:bg-muted`)+(n?` opacity-60 cursor-not-allowed`:``),children:[(0,q.jsx)(`span`,{"aria-hidden":!0,className:`flex h-3.5 w-3.5 items-center justify-center rounded-[3px] border text-[9px] leading-none `+(t?`border-primary bg-primary text-primary-foreground`:`border-muted-foreground/40`),children:t?`✓`:``}),e.label]},e.value)})})}var Q=`__none__`;function Wn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.objectFields??Y,s=t==null?``:String(t);if(o.status===`error`)return(0,q.jsx)(Z,{message:o.message,testId:`field-ref-load-failed`});if(Tn(o))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingOptions`,a),readOnly:!0,disabled:!0});let c=X(o,kn),l=!s||c.some(e=>e.name===s);return(0,q.jsxs)(H,{value:s||Q,onValueChange:e=>n(e===Q?``:e),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:c.length?G(`engine.form.selectField`,a):G(`engine.form.noObjectBound`,a)})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:Q,children:(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:G(`engine.form.none`,a)})}),!l&&s&&(0,q.jsxs)(m,{value:s,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:s}),(0,q.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,a)})]}),c.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))]})]})}function Gn(e,t){let n=t?e.find(e=>e.name===t):void 0,r=t&&!n?e.find(e=>e.name.endsWith(`.${t}`)):void 0,i=t==="default"||t===`list`;return{exact:n,suffixMatch:r,isSpecial:i,resolves:!!n||!!r||i,showStored:!!t&&!n}}function Kn({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=U(),o=i?.objectViews??Y,s=t==null?``:String(t);if(o.status===`error`)return(0,q.jsx)(Z,{message:o.message,testId:`view-ref-load-failed`});if(Tn(o))return(0,q.jsx)(v,{id:e,value:G(`engine.form.loadingOptions`,a),readOnly:!0,disabled:!0});let c=X(o,An),{suffixMatch:l,resolves:u,showStored:d}=Gn(c,s);return(0,q.jsxs)(H,{value:s||Q,onValueChange:e=>n(e===Q?void 0:e),disabled:r,children:[(0,q.jsx)(p,{id:e,children:(0,q.jsx)(S,{placeholder:c.length?G(`engine.form.selectEllipsis`,a):G(`engine.form.noObjectBound`,a)})}),(0,q.jsxs)(j,{children:[(0,q.jsx)(m,{value:Q,children:(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:G(`engine.form.none`,a)})}),d&&(0,q.jsx)(m,{value:s,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:l?.label||s}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:l?`\u2192 ${l.name}`:s}),!u&&(0,q.jsx)(`span`,{className:`ml-1 text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,a)})]})}),c.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))]})]})}function qn({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=U(),o=r?.objectFields??Y,s=En(o),c=o.status===`error`?kn:X(o,kn),l=Array.isArray(e)?e.map(String):typeof e==`string`&&e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],u=e=>c.find(t=>t.name===e)?.label||e,d=c.filter(e=>!l.includes(e.name)),f=e=>{l.includes(e)||t([...l,e])},h=e=>{let n=l.slice();n.splice(e,1),t(n)},g=(e,n)=>{let r=e+n;if(r<0||r>=l.length)return;let i=l.slice();[i[e],i[r]]=[i[r],i[e]],t(i)};return(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":i,children:[l.length>0&&(0,q.jsx)(`div`,{className:`space-y-1`,children:l.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-1 rounded border border-input bg-background px-2 py-1 text-sm`,children:[(0,q.jsxs)(`span`,{className:`flex-1 truncate`,children:[u(e),(0,q.jsx)(`code`,{className:`ml-2 text-xs text-muted-foreground`,children:e})]}),!n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move up`,disabled:t===0,onClick:()=>g(t,-1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↑`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move down`,disabled:t===l.length-1,onClick:()=>g(t,1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↓`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>h(t),className:`px-1 text-muted-foreground hover:text-destructive`,children:`×`})]})]},e))}),s&&(0,q.jsx)(Z,{message:s,testId:`field-multi-load-failed`}),!n&&(0,q.jsxs)(H,{value:``,onValueChange:f,disabled:d.length===0,children:[(0,q.jsx)(p,{"aria-label":G(`engine.form.addField`,a),children:(0,q.jsx)(S,{placeholder:s?G(`engine.form.optionsLoadFailedTitle`,a):c.length?d.length?G(`engine.form.addField`,a):G(`engine.form.allFieldsAdded`,a):G(`engine.form.noObjectBound`,a)})}),(0,q.jsx)(j,{children:d.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))})]})]})}var Jn=y,Yn=new Set(Jn),Xn=120;function Zn({id:e,value:t,onChange:n,readOnly:r}){let i=U(),a=t==null?``:String(t),[o,s]=K.useState(!1),[c,l]=K.useState(``),d=a?w(a):``,f=!a||Yn.has(d),p=w(c.trim()),m=K.useMemo(()=>p?Jn.filter(e=>e.includes(p)):Jn,[p]),h=m.slice(0,Xn),g=m.length>h.length,_=e=>{n(e||void 0),s(!1),l(``)};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`button`,{id:e,type:`button`,role:`combobox`,"aria-haspopup":`dialog`,"aria-expanded":o,disabled:r,onClick:()=>!r&&s(!0),className:`flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm text-left disabled:cursor-not-allowed disabled:opacity-60`,children:[(0,q.jsx)(ie,{name:f?a:void 0,className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`flex-1 truncate `+(a?`font-mono`:`text-muted-foreground`),children:a||G(`engine.form.selectEllipsis`,i)}),!f&&a&&(0,q.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:G(`engine.form.notInObject`,i)}),(0,q.jsx)(L,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0 opacity-50`})]}),(0,q.jsx)(se,{open:o,onOpenChange:e=>{s(e),e||l(``)},children:(0,q.jsxs)(de,{className:`max-w-2xl`,children:[(0,q.jsx)(O,{children:(0,q.jsx)(u,{children:G(`engine.form.chooseIcon`,i)})}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-input bg-background px-3 py-2`,children:[(0,q.jsx)(te,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`input`,{type:`text`,autoFocus:!0,value:c,"aria-label":G(`engine.form.searchIcons`,i),placeholder:G(`engine.form.searchIcons`,i),onChange:e=>l(e.target.value),className:`w-full bg-transparent text-sm outline-none`})]}),(0,q.jsxs)(`div`,{id:e?`${e}-listbox`:void 0,role:`listbox`,className:`grid max-h-[52vh] grid-cols-6 gap-1.5 overflow-y-auto pr-1 sm:grid-cols-8`,children:[a&&(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!1,title:G(`engine.form.none`,i),onClick:()=>_(void 0),className:`flex aspect-square flex-col items-center justify-center gap-1 rounded border border-dashed border-border p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:[(0,q.jsx)(E,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight`,children:`none`})]}),!f&&a&&(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!0,title:a,onClick:()=>_(a),className:`flex aspect-square flex-col items-center justify-center gap-1 rounded bg-accent p-1 text-accent-foreground ring-1 ring-primary`,children:[(0,q.jsx)(ie,{name:void 0,className:`h-4 w-4`}),(0,q.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight`,children:a})]}),h.map(e=>{let t=e===d;return(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t,title:e,onClick:()=>_(e),className:`flex aspect-square flex-col items-center justify-center gap-1 rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground `+(t?`bg-accent text-accent-foreground ring-1 ring-primary`:``),children:[(0,q.jsx)(ie,{name:e,className:`h-5 w-5`}),(0,q.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight`,children:e})]},e)}),h.length===0&&(0,q.jsx)(`p`,{className:`col-span-full px-2 py-6 text-center text-sm text-muted-foreground`,children:G(`engine.form.noMatchingIcons`,i)})]}),g&&(0,q.jsx)(`p`,{className:`text-center text-xs text-muted-foreground`,children:W(`engine.form.iconsTruncated`,i,{shown:h.length,total:m.length})})]})})]})}var Qn=[{key:`none`,label:`None`},{key:`tabs`,label:`Tabs`},{key:`dropdown`,label:`Dropdown`}],$n=e=>(e||``).trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`tab`;function er({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=e&&typeof e==`object`?e:void 0,o=a?.element??(a?`dropdown`:`none`),s=r?.objectFields??Y,c=En(s),l=s.status===`error`?kn:X(s,kn),u=e=>{if(!n){if(e===`none`){t(void 0);return}t({...a??{},element:e})}},d=Array.isArray(a?.fields)?a.fields:[],h=e=>t({...a??{},element:o===`none`?`dropdown`:o,fields:e}),g=new Set(d.map(e=>e.field)),_=l.filter(e=>!g.has(e.name)),y=e=>l.find(t=>t.name===e)?.label||e,b=o===`dropdown`||o===`toggle`,x=(Array.isArray(a?.tabs)?a.tabs:[]).map(e=>({...e,name:e?.name??e?.id??``,label:typeof e?.label==`string`?e.label:e?.name??e?.id??``,filter:Array.isArray(e?.filter)?e.filter:Array.isArray(e?.filters)?e.filters.filter(e=>Array.isArray(e)&&e.length>=2).map(e=>({field:String(e[0]),operator:String(e[1]),value:e[2]})):[],isDefault:e?.isDefault??e?.default})),C=e=>{let t={name:$n(e.label||e.name),label:e.label||e.name||`Tab`};return e.icon&&(t.icon=e.icon),t.filter=Array.isArray(e.filter)?e.filter:[],e.isDefault&&(t.isDefault=!0),t},w=e=>{let n={},r=e.map(C).map(e=>{let t=e.name;if(n[t]){let r=2;for(;n[`${e.name}_${r}`];)r++;t=`${e.name}_${r}`}return n[t]=!0,{...e,name:t}});t({...a??{},element:`tabs`,tabs:r})},T=()=>w([...x,{name:``,label:`Tab ${x.length+1}`,filter:[]}]),D=e=>w(x.filter((t,n)=>n!==e)),O=(e,t)=>{let n=[...x],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],w(n))},k=(e,t)=>w(x.map((n,r)=>r===e?{...n,...t}:n));return(0,q.jsxs)(`div`,{className:`space-y-3`,role:`group`,"aria-labelledby":i,children:[(0,q.jsx)(`div`,{className:`inline-flex rounded-md border border-input bg-background p-0.5`,role:`radiogroup`,"aria-label":`Filter element`,children:Qn.map(e=>{let t=o===e.key;return(0,q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":t,"data-testid":`filter-mode-${e.key}`,disabled:n,onClick:()=>u(e.key),className:`px-3 py-1 text-xs font-medium rounded transition-colors `+(t?`bg-primary text-primary-foreground shadow-sm`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:e.label},e.key)})}),b&&(0,q.jsxs)(`div`,{className:`space-y-2`,"data-testid":`filter-mode-fields`,children:[d.length>0&&(0,q.jsx)(`div`,{className:`space-y-1`,children:d.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded border border-input bg-background px-2 py-1 text-sm`,children:[(0,q.jsxs)(`span`,{className:`flex-1 truncate`,children:[y(e.field),(0,q.jsx)(`code`,{className:`ml-2 text-xs text-muted-foreground`,children:e.field})]}),(0,q.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,q.jsx)(I,{checked:!!e.showCount,disabled:n,onCheckedChange:e=>h(d.map((n,r)=>r===t?{...n,showCount:e}:n))}),`count`]}),!n&&(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove field`,onClick:()=>h(d.filter((e,n)=>n!==t)),className:`px-1 text-muted-foreground hover:text-destructive`,children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]},e.field))}),!n&&_.length>0&&(0,q.jsxs)(H,{onValueChange:e=>h([...d,{field:e}]),children:[(0,q.jsx)(p,{className:`h-8 text-xs`,"data-testid":`filter-mode-add-field`,children:(0,q.jsx)(S,{placeholder:`+ Add filter field…`})}),(0,q.jsx)(j,{children:_.map(e=>(0,q.jsx)(m,{value:e.name,children:e.label||e.name},e.name))})]}),c?(0,q.jsx)(Z,{message:c,testId:`filter-mode-fields-load-failed`}):l.length===0?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Bind a source object to pick filter fields.`}):null]}),o===`tabs`&&(0,q.jsxs)(`div`,{className:`space-y-2`,"data-testid":`filter-mode-tabs-editor`,children:[x.map((e,t)=>(0,q.jsxs)(`div`,{className:`rounded-md border border-input bg-background p-2 space-y-2`,"data-testid":`tab-preset-${t}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsx)(v,{value:e.label,placeholder:`Tab label`,disabled:n,className:`h-8 text-sm flex-1`,"data-testid":`tab-label-${t}`,onChange:e=>k(t,{label:e.target.value})}),(0,q.jsx)(`code`,{className:`text-[10px] text-muted-foreground shrink-0 max-w-[6rem] truncate`,title:e.name,children:e.name}),!n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move tab up`,disabled:t===0,onClick:()=>O(t,-1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,q.jsx)(R,{className:`h-3.5 w-3.5`})}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move tab down`,disabled:t===x.length-1,onClick:()=>O(t,1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,q.jsx)(z,{className:`h-3.5 w-3.5`})}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove tab`,onClick:()=>D(t),className:`px-1 text-muted-foreground hover:text-destructive`,children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]})]}),(0,q.jsx)(`div`,{className:`pl-1`,"data-testid":`tab-${t}-filter`,children:(0,q.jsx)(rr,{value:e.filter,onChange:e=>k(t,{filter:e}),fields:l,loadError:c,readOnly:n})})]},t)),!n&&(0,q.jsxs)(`button`,{type:`button`,"data-testid":`filter-mode-add-tab`,onClick:T,className:`inline-flex items-center text-xs font-medium text-primary hover:underline`,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` Add tab`]}),(0,q.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground pt-1`,children:[(0,q.jsx)(I,{checked:a?.showAllRecords!==!1,disabled:n,"data-testid":`filter-mode-show-all`,onCheckedChange:e=>t({...a??{},element:`tabs`,showAllRecords:e})}),`Show “All records” tab`]}),c?(0,q.jsx)(Z,{message:c,testId:`filter-mode-tabs-load-failed`}):l.length===0?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Bind a source object to build tab filter rules.`}):null]})]})}function tr({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=U(),o=r?.objectActions??Y,s=En(o),c=o.status===`error`?jn:X(o,jn),l=Array.isArray(e)?e.map(String):typeof e==`string`&&e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],u=e=>c.find(t=>t.name===e)?.label||e,d=c.filter(e=>!l.includes(e.name)),f=e=>{l.includes(e)||t([...l,e])},h=e=>{let n=l.slice();n.splice(e,1),t(n)},g=(e,n)=>{let r=e+n;if(r<0||r>=l.length)return;let i=l.slice();[i[e],i[r]]=[i[r],i[e]],t(i)};return(0,q.jsxs)(`div`,{className:`space-y-2`,"data-testid":`action-multi`,role:`group`,"aria-labelledby":i,children:[s&&(0,q.jsx)(Z,{message:s,testId:`action-multi-load-failed`}),l.length>0&&(0,q.jsx)(`div`,{className:`space-y-1`,children:l.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-1 rounded border border-input bg-background px-2 py-1 text-sm`,children:[(0,q.jsxs)(`span`,{className:`flex-1 truncate`,children:[u(e),(0,q.jsx)(`code`,{className:`ml-2 text-xs text-muted-foreground`,children:e})]}),!n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move up`,disabled:t===0,onClick:()=>g(t,-1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↑`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Move down`,disabled:t===l.length-1,onClick:()=>g(t,1),className:`px-1 text-muted-foreground hover:text-foreground disabled:opacity-30`,children:`↓`}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:()=>h(t),className:`px-1 text-muted-foreground hover:text-destructive`,children:`×`})]})]},e))}),!n&&(0,q.jsxs)(H,{value:``,onValueChange:f,disabled:d.length===0,children:[(0,q.jsx)(p,{"data-testid":`action-multi-add`,"aria-label":`Add action button`,children:(0,q.jsx)(S,{placeholder:s?G(`engine.form.optionsLoadFailedTitle`,a):c.length?d.length?`+ Add action button…`:`All actions added`:`Bind a source object to pick actions`})}),(0,q.jsx)(j,{children:d.map(e=>(0,q.jsx)(m,{value:e.name,children:(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e.label||e.name}),(0,q.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})},e.name))})]})]})}var nr={equals:`equals`,eq:`equals`,not_equals:`notEquals`,ne:`notEquals`,neq:`notEquals`,notEquals:`notEquals`,contains:`contains`,not_contains:`notContains`,notContains:`notContains`,is_empty:`isEmpty`,isEmpty:`isEmpty`,is_not_empty:`isNotEmpty`,isNotEmpty:`isNotEmpty`,greater_than:`greaterThan`,gt:`greaterThan`,greaterThan:`greaterThan`,less_than:`lessThan`,lt:`lessThan`,lessThan:`lessThan`,greater_than_or_equal:`greaterOrEqual`,gte:`greaterOrEqual`,greaterOrEqual:`greaterOrEqual`,less_than_or_equal:`lessOrEqual`,lte:`lessOrEqual`,lessOrEqual:`lessOrEqual`,before:`before`,after:`after`,between:`between`,in:`in`,not_in:`notIn`,nin:`notIn`,notIn:`notIn`};function rr({value:e,onChange:t,fields:n,readOnly:r,id:i,loadError:a}){let{t:o}=s(),c=Array.isArray(e)?e:[],l={id:`g`,logic:`and`,conditions:c.map((e,t)=>({id:`c${t}`,operator:nr[e.operator]??e.operator??`equals`,field:e.field,value:e.value??``}))},u=n.map(e=>({value:e.name,label:e.label||e.name,type:e.type})),d=c.length?c.map(e=>`${n.find(t=>t.name===e.field)?.label||e.field}`).filter(Boolean).join(`, `):``;return(0,q.jsxs)(x,{children:[(0,q.jsx)(g,{asChild:!0,children:(0,q.jsxs)(F,{id:i,variant:`outline`,size:`sm`,disabled:r,className:`h-8 w-full justify-between text-xs font-normal`,"data-testid":`filter-builder-trigger`,children:[(0,q.jsx)(`span`,{className:`truncate text-left`,children:d||(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:`+ Add filter…`})}),(0,q.jsx)(z,{className:`h-3.5 w-3.5 opacity-60 shrink-0`})]})}),(0,q.jsx)(C,{align:`start`,className:`w-[440px] max-w-[90vw] p-3`,children:a?(0,q.jsx)(Z,{message:a,testId:`filter-builder-load-failed`}):n.length===0?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Bind a source object to add filter conditions.`}):(0,q.jsx)(A,{fields:u,value:l,onChange:e=>{let n=Ge(e);if(!n.ok){me.error(o(Ke[n.reason]));return}t(n.rules)}})})]})}function ir({id:e,value:t,onChange:n,readOnly:r,context:i}){let a=i?.objectFields??Y,o=En(a),s=a.status===`error`?kn:X(a,kn);return(0,q.jsx)(rr,{id:e,value:t,onChange:e=>n(e.length?e:void 0),fields:s,loadError:o,readOnly:r})}function ar(e,t){return Array.isArray(t?.options)&&t.options.length?t.options.map(e=>({value:e.value,label:e.label})):Array.isArray(e?.enum)?e.enum.filter(e=>typeof e==`string`).map(e=>({value:e})):[]}function or(e,t){return ar(e,t).length>0?`color-picker`:`color-input`}function sr(e,t,n){return Array.isArray(t?.options)&&t.options.length?Ye(t.options,n).map(e=>({value:e.value,label:e.label})):ar(e,t)}function cr({value:e,onChange:t,readOnly:n,schema:r,fieldSpec:i,formData:o,ariaLabelledBy:s}){let c=a(),l=s?{ariaLabelledBy:s}:{ariaLabel:i?.label??(typeof r?.title==`string`?r.title:void 0)??`Color`};return(0,q.jsx)(vt,{...l,value:e==null?void 0:String(e),onChange:e=>t(e),disabled:n,options:sr(r,i,J(o,c))})}function lr({id:e,value:t,onChange:n,readOnly:r}){let i=U(),a=t==null?``:String(t);return(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`input`,{id:e,type:`color`,value:/^#([0-9a-f]{6})$/i.test(a)?a:`#000000`,disabled:r,onChange:e=>n(e.target.value),className:`h-8 w-10 shrink-0 rounded border border-input bg-background p-0.5 disabled:opacity-60`,"aria-label":e?void 0:`Color`}),(0,q.jsx)(v,{value:a,placeholder:`#RRGGBB`,disabled:r,"aria-label":G(`engine.form.colorHex`,i),onChange:e=>n(e.target.value||void 0),className:`h-8 text-sm font-mono`})]})}function ur({value:e,onChange:t,readOnly:n,context:r,ariaLabelledBy:i}){let a=r?.objectFields??Y,o=a.status===`loaded`?a.data:void 0;return(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":i,children:(0,q.jsx)(Yt,{value:_n(e),onCommit:n=>t(yn(e,n)),fields:o,disabled:n})})}var dr=`••••••••`;function fr({value:e,onChange:t,readOnly:n,schema:r,id:i}){let a=e===dr,[o,s]=K.useState(!1),[c,l]=K.useState(a||e==null?``:String(e)),u=e=>{l(e),t(e===``?a?dr:void 0:e)};return(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(v,{id:i,type:o?`text`:`password`,value:c,disabled:n,autoComplete:`off`,placeholder:a?r?.description?`•••••••• set — type to replace`:`•••••••• set — leave blank to keep`:typeof r?.description==`string`?``:`Enter a value`,onChange:e=>u(e.target.value),className:`h-8 text-sm font-mono`,"aria-label":i?void 0:`Secret value`}),(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,disabled:n,"aria-label":o?`Hide value`:`Reveal value`,onClick:()=>s(e=>!e),children:o?(0,q.jsx)(d,{className:`h-4 w-4`}):(0,q.jsx)(k,{className:`h-4 w-4`})}),a&&(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 shrink-0 text-destructive hover:text-destructive`,disabled:n,onClick:()=>{l(``),t(null)},children:`Clear`})]})}function pr({value:e,onChange:t,readOnly:n,fieldSpec:r,formData:i,context:a,ariaLabelledBy:o}){let s=Array.isArray(r?.dependsOn)?r.dependsOn[0]:r?.dependsOn,l=s?i?.[s]:void 0,u=l==null?void 0:a?.dynamicSchemas?.[String(l)],d=u?.properties??{},f=new Set(u?.required??[]),h=e&&typeof e==`object`?e:{},g=(e,n)=>{let r={...h};n===void 0||n===``?delete r[e]:r[e]=n,t(r)};return l?!u||Object.keys(d).length===0?(0,q.jsxs)(`div`,{role:`group`,"aria-labelledby":o,className:`text-xs text-muted-foreground`,children:[`No configuration needed for "`,String(l),`".`]}):(0,q.jsx)(`div`,{className:`space-y-2 rounded-md border border-border/60 p-3`,role:`group`,"aria-labelledby":o,children:Object.entries(d).map(([e,t])=>{let r=t?.title||e,i=h[e],a=f.has(e);if(t?.type===`boolean`)return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(c,{className:`text-xs`,children:r}),(0,q.jsx)(I,{"aria-label":r,checked:!!i,disabled:n,onCheckedChange:t=>g(e,t)})]},e);if(Array.isArray(t?.enum))return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(c,{className:`text-xs`,children:[r,a?` *`:``]}),(0,q.jsxs)(H,{value:i==null?``:String(i),onValueChange:t=>g(e,t),disabled:n,children:[(0,q.jsx)(p,{className:`h-8`,"aria-label":r,children:(0,q.jsx)(S,{placeholder:`Select…`})}),(0,q.jsx)(j,{children:t.enum.map(e=>(0,q.jsx)(m,{value:String(e),children:String(e)},String(e)))})]})]},e);let o=t?.format===`password`||t?.writeOnly===!0,s=t?.type===`number`||t?.type===`integer`;return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(c,{className:`text-xs`,children:[r,a?` *`:``]}),o?(0,q.jsx)(fr,{value:i,onChange:t=>g(e,t),readOnly:n,schema:t}):(0,q.jsx)(v,{type:s?`number`:`text`,value:i==null?``:String(i),disabled:n,"aria-label":r,onChange:t=>g(e,s?t.target.value===``?void 0:Number(t.target.value):t.target.value),className:`h-8 text-sm`}),t?.description&&(0,q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:t.description})]},e)})}):(0,q.jsxs)(`div`,{role:`group`,"aria-labelledby":o,className:`text-xs text-muted-foreground`,children:[`Select `,s??`an option`,` to configure.`]})}var mr={"ref:object":Mn,"ref:component":Pn,"filter-mode":er,"object-selector":Fn,"field-selector":Rn,"field-ref":Wn,"field-multi":qn,"action-multi":tr,"filter-builder":ir,"view-ref":Kn,icon:Zn,"color-picker":cr,"color-input":lr,condition:ur,"master-detail":zn,"string-tags":Vn,multiselect:Un,code:yr,secret:fr,"dynamic-config":pr},hr={"ref:object":`control`,"ref:component":`control`,"filter-mode":`group`,"object-selector":`control`,"field-selector":`control`,"field-ref":`control`,"field-multi":`group`,"action-multi":`group`,"filter-builder":`control`,"view-ref":`control`,icon:`control`,"color-picker":`group`,"color-input":`control`,condition:`group`,"master-detail":`group`,"string-tags":`control`,multiselect:`group`,code:`group`,secret:`control`,"dynamic-config":`group`};function gr(e){return e?hr[e]??`control`:`control`}function _r(e,t){if(e?.language)return e.language;if(typeof t?.format==`string`){let e=t.format.toLowerCase();if(e===`sql`||e===`javascript`||e===`typescript`||e===`json`||e===`yaml`||e===`html`||e===`css`||e===`python`)return e}let n=e?.field?.toLowerCase()??``;return n.includes(`sql`)||n===`query`?`sql`:`javascript`}var vr=K.lazy(()=>t(()=>import(`./src-DEMdKbQy.js`).then(e=>({default:e.CodeEditorRenderer})),__vite__mapDeps([0]),import.meta.url));function yr({schema:e,value:t,onChange:n,readOnly:r,fieldSpec:i,ariaLabelledBy:a}){let o=_r(i,e),s=typeof t==`string`?t:t==null?``:String(t);return(0,q.jsxs)(`div`,{className:`rounded-md border border-border/50 overflow-hidden`,role:`group`,"aria-labelledby":a,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1 bg-muted/40 border-b border-border/30 text-[10px] font-mono text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:o}),r&&(0,q.jsx)(`span`,{children:`read-only`})]}),(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`h-[280px] flex items-center justify-center text-xs text-muted-foreground`,children:`Loading editor…`}),children:(0,q.jsx)(vr,{schema:{type:`code`,language:o,theme:`vs-dark`,height:`280px`,readOnly:r},value:s,onChange:e=>n(e??``)})})]})}var br=new Set([`text`,`textarea`,`number`,`switch`,`select`,`json`]);function xr(e,t){if(!e)return e;let n=e.oneOf??e.anyOf;if(!Array.isArray(n)||n.length===0)return e;let r=typeof t==`object`&&!!t&&!Array.isArray(t),i=Array.isArray(t),a=r?new Set(Object.keys(t)):null,o=null,s=i&&t.length?t[0]:void 0,c=typeof s==`object`&&!!s&&!Array.isArray(s);for(let e of n){let n=0;if(e.type===`array`&&i){n+=5;let t=e.items?.type;(t===`object`&&c||t===`string`&&typeof s==`string`||t===`number`&&typeof s==`number`||t===`integer`&&typeof s==`number`)&&(n+=3)}if(e.type===`object`&&r&&(n+=5),e.type===`string`&&typeof t==`string`&&(n+=5),e.type===`number`&&typeof t==`number`&&(n+=5),e.type===`boolean`&&typeof t==`boolean`&&(n+=5),a&&Array.isArray(e.required))for(let t of e.required)a.has(t)&&(n+=1);(!o||n>o.score)&&(o={branch:e,score:n})}let l=o?.branch??n[0];return{...e,...l,oneOf:void 0,anyOf:void 0}}function Sr(e,t){if(!e)return{};let n=xr(e,Array.isArray(t)?t:[])?.items;return!n||typeof n!=`object`?{}:xr(n,Array.isArray(t)&&t.length?t[0]:void 0)??{}}function Cr(e,t){if(e?.widget)return e.widget;if(e?.type){let t=e.type;if(t===`text`||t===`email`||t===`url`||t===`phone`||t===`password`)return`text`;if(t===`textarea`||t===`markdown`||t===`html`||t===`richtext`)return`textarea`;if(t===`number`||t===`currency`||t===`percent`)return`number`;if(t===`date`||t===`datetime`||t===`time`)return`date-picker`;if(t===`boolean`||t===`toggle`)return`switch`;if(t===`select`||t===`radio`)return e.multiple?`multiselect`:`select`;if(t===`multiselect`||t===`checkboxes`||t===`tags`)return`string-tags`;if(t===`composite`)return`composite`;if(t===`repeater`)return`repeater`;if(t===`record`)return`record`;if(t===`lookup`||t===`master_detail`||t===`tree`)return`ref-object`;if(t===`image`||t===`file`||t===`avatar`||t===`video`||t===`audio`)return`file-upload`;if(t===`code`)return`code`;if(t===`json`||t===`location`||t===`address`)return`json`;if(t===`color`)return`color-picker`;if(t===`rating`)return`number`;if(t===`slider`)return`slider`;if(t===`signature`)return`signature`;if(t===`qrcode`)return`qrcode`;if(t===`progress`)return`number`;if(t===`formula`||t===`summary`||t===`autonumber`)return`text`;if(t===`vector`)return`json`}if(t){let e=t.type;if(e===`array`&&Array.isArray(t.items?.enum))return`multiselect`;if(e===`array`&&t.items?.type===`string`)return`string-tags`;if(e===`array`&&t.items?.type===`object`)return`master-detail`;if(e===`object`)return`object-fields`;if(e===`boolean`)return`switch`;if(e===`number`||e===`integer`)return`number`;if(Array.isArray(t.enum))return`select`;if(e===`string`){if(t.format===`date`||t.format===`date-time`)return`date-picker`;if(t.format===`email`||t.format===`uri`||t.format===`uri-reference`)return`text`;if(t.format===`multiline`)return`textarea`}}}function wr(e,t,n){if(n?.objectFields&&!Array.isArray(t?.enum)){if(t?.type===`array`&&t.items?.type===`string`&&(/Fields$/.test(e)||e===`columns`||e===`fieldOrder`))return`field-multi`;if((t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(/.Field$/.test(e)||e===`field`))return`field-ref`}}function Tr(e,t){if(!Array.isArray(t?.enum)&&(t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(e===`icon`||/Icon$/.test(e)))return`icon`}function Er(e,t){if((t?.type===`string`||Array.isArray(t?.enum)||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(e===`color`||e===`colorVariant`||/Color$/.test(e)))return`color-picker`}function Dr(e,t,n){return e===`color-picker`||e===`color-input`?or(t,n):e}function Or({fieldSpec:e,widget:t,schema:n,value:r}){if(e?.type===`composite`)return{kind:`composite`};if(e?.type===`repeater`)return{kind:`repeater`,itemSchema:Sr(n,r)};if(e?.type===`record`)return{kind:`record`,itemSchema:n?.additionalProperties??{}};let i=xr(n,r)??n??{},a=e=>e?.type===`object`&&!!e.properties&&typeof e.properties==`object`,o=e=>{if(e?.type!==`array`||!e.items||typeof e.items!=`object`)return;let t=xr(e.items,Array.isArray(r)&&r.length?r[0]:void 0);return a(t)?t:void 0};if(t){if(mr[t])return{kind:`registered`,widget:t};if(a(i))return{kind:`nested-form`,effective:i};let e=o(i);if(e)return{kind:`object-rows`,effective:i,itemSchema:e};if(!br.has(t))return{kind:`raw-json`,hint:t}}let s=i?.type,c=Array.isArray(e?.options)&&e.options.length>0,l=Array.isArray(i?.enum)&&i.enum.length>0;if(c||l||s===`boolean`||t===`switch`||e?.type===`boolean`||e?.type===`toggle`||s===`number`||s===`integer`||s===`string`)return{kind:`scalar`,effective:i};if(s===`array`){let e=i?.items??{};if(e.type===`string`||e.type===`number`||e.type===`integer`)return{kind:`scalar`,effective:i}}if(a(i))return{kind:`nested-form`,effective:i};let u=o(i);return u?{kind:`object-rows`,effective:i,itemSchema:u}:{kind:`raw-json`}}function kr(e){switch(e.kind){case`registered`:return gr(e.widget);case`composite`:case`repeater`:case`record`:case`nested-form`:case`object-rows`:return`group`;case`raw-json`:case`scalar`:return`control`}}var Ar=new Set([`visible`,`hidden`,`disabled`,`visibleOn`,`condition`,`predicate`]);function jr(e,t){if(!Array.isArray(t?.enum)&&(t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&(Ar.has(e)||/When$/.test(e)))return`condition`}var Mr=/(^|_)(secret|token|api[_-]?key|access[_-]?key|client[_-]?secret|credential|private[_-]?key|passphrase)$/i;function Nr(e,t){if(t?.format===`password`||t?.writeOnly===!0||!Array.isArray(t?.enum)&&(t?.type===`string`||Array.isArray(t?.anyOf)&&t.anyOf.some(e=>e?.type===`string`))&&Mr.test(e))return`secret`}function Pr(e){return e?.visibleWhen??e?.visibleOn}function Fr({schema:e,form:t,value:n,onChange:r,issues:i=[],hiddenFields:o=[],fieldOrder:s=[],readOnly:c=!1,createMode:l=!1,widgetContext:u,idPath:d}){let f=U(),p=a(),m=K.useMemo(()=>{let e={};for(let t of i)(e[t.path]??=[]).push(ge(t.message,f));return e},[i,f]),h=e;if(!h||typeof h!=`object`){if(n&&typeof n==`object`)h=ei(n);else return(0,q.jsx)($r,{value:n,onChange:r,readOnly:c})}let g=h.properties??{},_=Array.isArray(h.required)?h.required:[],v=n??{},y=ri(Object.keys(g),s).filter(e=>!o.includes(e)).filter(e=>{let t=Pr(g[e]);return!t||Xe(t,J(v,p))}),b=n??{};function x(e,t){let n={...b,[e]:t};(t===void 0||t===``)&&delete n[e],r(n)}if(t?.sections?.length){let e=[];for(let n of t.sections)for(let t of n.fields)e.push(typeof t==`string`?t:t.field);let n=e.filter(e=>g[e]).length;if(e.length===0||n>0)return(0,q.jsx)(Wr,{form:t,props:g,idPath:d,required:_,hiddenFields:o,issuesByPath:m,value:b,readOnly:c,createMode:l,widgetContext:u,onChange:x});typeof console<`u`&&console.warn(`[SchemaForm] form layout declares no fields that exist in the schema; falling back to flat schema-driven rendering. Declared:`,e,`Available:`,Object.keys(g))}return(0,q.jsx)(`div`,{className:`space-y-4`,children:y.map(e=>(0,q.jsx)(Kr,{name:e,idPath:d,schema:g[e],value:b[e],required:_.includes(e),issues:m[e],readOnly:c,widgetContext:u,fieldSpec:g[e]?.widget?{field:e,widget:g[e].widget}:void 0,formData:b,onChange:t=>x(e,t)},e))})}var Ir=`drawer-metadata`,Lr=`drawer-embedded-item`,Rr=K.createContext(!1),zr=K.createContext(!1),Br=()=>!1;function Vr(e){let t=K.useRef(null);K.useEffect(()=>{if(!e||!Br()||typeof document>`u`)return;let n=new Set,r=[];for(let e of Array.from(document.querySelectorAll(`[id^="mdf-"]`))){let t=e.id;n.has(t)?r.includes(t)||r.push(t):n.add(t)}let i=r.join(`,`);i!==t.current&&(t.current=i,r.length!==0&&console.error(`[SchemaForm] duplicate field host id(s) in this document: ${r.join(`, `)}. Two SchemaForm instances are mounted at once — the metadata detail drawer sits on top of the page form, which stays in the DOM — and at least one of them renders unscoped top-level ids. A \`label[for]\` resolves to the FIRST match in the document, so the later form's labels name and focus the earlier form's controls (objectui#5092). Give the secondary form a distinct \`idPath\` scope segment — see DRAWER_METADATA_ID_SCOPE / DRAWER_EMBEDDED_ITEM_ID_SCOPE in SchemaForm.tsx.`))})}function Hr(e){let t=K.useContext(Rr),n=K.useContext(zr);Vr(!t);let r=e.createMode===!0||n;return(0,q.jsx)(Rr.Provider,{value:!0,children:(0,q.jsx)(zr.Provider,{value:r,children:(0,q.jsx)(Fr,{...e})})})}function Ur(e){return typeof e==`string`?{field:e}:e}function Wr({form:e,props:t,required:n,hiddenFields:r,issuesByPath:i,value:o,readOnly:s,createMode:c,widgetContext:u,idPath:d,onChange:f}){let p=U(),m=a(),g=(e.sections??[]).filter(e=>{let t=Pr(e);return!t||Xe(t,J(o,m))}),v=e.type===`tabbed`&&g.length>1,y=(e,a)=>{let l=e.fields.map(Ur).filter(e=>{if(e.hidden||r.includes(e.field))return!1;let t=Pr(e);return!(t&&!Xe(t,J(o,m)))});if(l.length===0)return null;let g=e.columns??1,_=(0,q.jsx)(`div`,{className:`grid gap-4`,style:{gridTemplateColumns:`repeat(${g}, minmax(0, 1fr))`},children:l.map(e=>{let r=t[e.field];return r?(0,q.jsx)(`div`,{style:{gridColumn:`span ${e.colSpan??1}`},children:(0,q.jsx)(Kr,{name:e.field,idPath:d,schema:{...r,...e.label?{title:e.label}:{},...e.helpText?{description:e.helpText}:{},...e.placeholder?{placeholder:e.placeholder}:{}},value:o[e.field],required:e.required??n.includes(e.field),issues:i[e.field],readOnly:s||e.readonly||e.immutable&&!c,fieldSpec:e,widgetContext:u,formData:o,onChange:t=>f(e.field,t)})},e.field):(0,q.jsx)(`div`,{className:`rounded border border-dashed border-amber-500/40 bg-amber-500/5 p-2 text-xs text-amber-700 dark:text-amber-300`,style:{gridColumn:`span ${e.colSpan??1}`},children:W(`engine.form.missingField`,p,{field:e.field})},e.field)})});return e.collapsible&&e.label?(0,q.jsxs)(ce,{defaultOpen:!e.collapsed,className:`rounded-md border border-border/40 bg-card/30`,children:[(0,q.jsxs)(h,{className:`group flex w-full items-center justify-between gap-2 p-4 text-left`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`block text-sm font-semibold text-foreground/90`,children:e.label}),e.description&&(0,q.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`,children:e.description})]}),(0,q.jsx)(z,{className:`h-4 w-4 shrink-0 text-muted-foreground transition-transform group-data-[state=closed]:-rotate-90`})]}),(0,q.jsx)(M,{className:`space-y-3 px-4 pb-4`,children:_})]},a):(0,q.jsxs)(`section`,{className:`space-y-3 rounded-md border border-border/40 bg-card/30 p-4`,children:[e.label&&(0,q.jsxs)(`header`,{children:[(0,q.jsx)(`h3`,{className:`text-sm font-semibold text-foreground/90`,children:e.label}),e.description&&(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),_]},a)};if(v){let e=g.filter(e=>e.fields.map(Ur).some(e=>{if(e.hidden||r.includes(e.field))return!1;let t=Pr(e);return!t||Xe(t,J(o,m))}));if(e.length===0)return null;let t=(e[0].label??`section-0`).toLowerCase();return(0,q.jsxs)(pe,{defaultValue:t,className:`w-full`,children:[(0,q.jsx)(P,{className:`flex flex-wrap gap-1`,children:e.map((e,t)=>(0,q.jsx)(_,{value:(e.label??`section-${t}`).toLowerCase(),children:e.label??`Section ${t+1}`},t))}),e.map((e,t)=>(0,q.jsx)(l,{value:(e.label??`section-${t}`).toLowerCase(),className:`mt-4`,children:y(e,t)},t))]})}return(0,q.jsx)(`div`,{className:`space-y-4`,children:g.map(y)})}function $(e,t){return e?`${e}.${t}`:String(t)}function Gr(e){return`mdf-${e}`}function Kr({name:e,idPath:t,schema:n,value:r,required:i,issues:a,readOnly:o,fieldSpec:s,widgetContext:l,formData:u,onChange:d}){let f=U(),p=K.useContext(zr),[m,h]=K.useState(!1),g=K.useCallback(()=>h(!0),[]),_=!p||m?a:void 0,v=K.useCallback(e=>{h(!0),d(e)},[d]),y=s?.label||_e(e,n?.title,f)||ni(e),b=s?.helpText||ve(e,n?.description,f),x=$(t,e),S=Gr(x),C=Cr(s,n);if(!s?.widget){let t=wr(e,n,l);if(t)C=t;else{let t=Nr(e,n);if(t)C=t;else{let t=Tr(e,n);if(t)C=t;else{let t=Er(e,n);if(t)C=t;else{let t=jr(e,n);t&&(C=t)}}}}}C=Dr(C,n,s);let w=kr(Or({fieldSpec:s,widget:C,schema:n,value:r}))===`group`,T=w?`${S}-label`:void 0,E=w?{id:void 0,ariaLabelledBy:T}:{id:S,ariaLabelledBy:void 0},D=w?{id:T}:{htmlFor:S},O=n?.type===`boolean`||C===`switch`,k=n?.default!==void 0,A=i&&!(O&&k),j=ni(e).toLowerCase()===y.toLowerCase();return O?(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-1.5`,onBlur:g,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(c,{...D,className:`text-sm font-medium cursor-pointer`,children:[y,A&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),b&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:b}),_?.map((e,t)=>(0,q.jsx)(`div`,{"data-testid":`schema-form-issue`,className:`text-xs text-destructive mt-0.5`,children:e},t))]}),(0,q.jsx)(qr,{id:E.id,ariaLabelledBy:E.ariaLabelledBy,fieldName:e,idPath:x,schema:n,value:r,onChange:v,readOnly:o,widget:C,fieldSpec:s,widgetContext:l,formData:u})]}):(0,q.jsxs)(`div`,{className:`space-y-1.5`,onBlur:g,children:[(0,q.jsx)(`div`,{className:`flex items-center justify-between gap-2`,children:(0,q.jsxs)(c,{...D,className:`text-sm font-medium`,children:[y,A&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`}),!j&&(0,q.jsx)(`code`,{className:`ml-2 text-[10px] font-mono text-muted-foreground/70`,title:`Machine name`,children:e})]})}),(0,q.jsx)(qr,{id:E.id,ariaLabelledBy:E.ariaLabelledBy,fieldName:e,idPath:x,schema:n,value:r,onChange:v,readOnly:o,widget:C,fieldSpec:s,widgetContext:l,formData:u}),b&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:b}),_?.map((e,t)=>(0,q.jsx)(`div`,{"data-testid":`schema-form-issue`,className:`text-xs text-destructive`,children:e},t))]})}function qr({id:e,ariaLabelledBy:t,fieldName:n,idPath:r,schema:i,value:o,onChange:s,readOnly:c,widget:l,fieldSpec:u,widgetContext:d,formData:f}){let h=U(),g=a(),_=Or({fieldSpec:u,widget:l,schema:i,value:o});if(_.kind===`composite`){let e=u?.fields?.length?u.fields:ii(i);return(0,q.jsx)(Xr,{value:o,fields:e,schema:i,readOnly:c,widgetContext:d,fieldSpec:u,ariaLabelledBy:t,idPath:r,onChange:s})}if(_.kind===`repeater`){let e=_.itemSchema,n=u?.fields?.length?u.fields:ii(e);return(0,q.jsx)(Zr,{value:o,fields:n,schema:{...i,items:e},readOnly:c,widgetContext:d,widget:u?.widget,ariaLabelledBy:t,idPath:r,onChange:s})}if(_.kind===`record`){let e=_.itemSchema,n=u?.fields?.length?u.fields:ii(e);return(0,q.jsx)(Qr,{value:o,fields:n,schema:i,readOnly:c,widgetContext:d,widget:u?.widget,keyField:u?.keyField,formData:f,ariaLabelledBy:t,idPath:r,onChange:s})}if(_.kind===`registered`){let n=mr[_.widget];return(0,q.jsx)(n,{id:e,ariaLabelledBy:t,schema:i,value:o,onChange:s,readOnly:c,context:d,fieldSpec:u,formData:f})}if(_.kind===`nested-form`)return(0,q.jsx)(`div`,{className:`rounded-md border border-border/40 bg-card/30 p-3`,role:`group`,"aria-labelledby":t,children:(0,q.jsx)(Hr,{schema:_.effective,value:o??{},onChange:e=>s(e),readOnly:c,widgetContext:d,idPath:r})});if(_.kind===`object-rows`)return(0,q.jsx)(Zr,{value:o,fields:ii(_.itemSchema),schema:{..._.effective,items:_.itemSchema},readOnly:c,widgetContext:d,widget:u?.widget,ariaLabelledBy:t,idPath:r,onChange:s});if(_.kind===`raw-json`)return _.hint?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)($r,{id:e,ariaLabelledBy:t,value:o,onChange:e=>s(e),readOnly:c}),(0,q.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:W(`engine.form.fallbackJson`,h,{widget:_.hint})})]}):(0,q.jsx)($r,{id:e,ariaLabelledBy:t,value:o,onChange:s,readOnly:c,small:!0});let y=_.effective,b=y?.type,x=u?.options,C=y?.enum??void 0;if(Array.isArray(x)&&x.length>0)return(0,q.jsxs)(H,{value:o==null?``:String(o),onValueChange:e=>s(e),disabled:c,children:[(0,q.jsx)(p,{id:e,"aria-labelledby":t,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectEllipsis`,h)})}),(0,q.jsx)(j,{children:Ye(x,J(f,g)).map(e=>(0,q.jsxs)(m,{value:e.value,children:[e.label,e.color&&(0,q.jsx)(`span`,{className:`ml-2 inline-block h-3 w-3 rounded`,style:{backgroundColor:e.color}})]},e.value))})]});if(Array.isArray(C)&&C.length>0)return(0,q.jsxs)(H,{value:o==null?``:String(o),onValueChange:e=>s(e),disabled:c,children:[(0,q.jsx)(p,{id:e,"aria-labelledby":t,children:(0,q.jsx)(S,{placeholder:G(`engine.form.selectEllipsis`,h)})}),(0,q.jsx)(j,{children:C.map(e=>(0,q.jsx)(m,{value:String(e),children:ye(n??``,String(e),h)},String(e)))})]});if(b===`boolean`||l===`switch`||u?.type===`boolean`||u?.type===`toggle`)return(0,q.jsx)(I,{id:e,"aria-labelledby":t,checked:!!o,onCheckedChange:e=>s(e),disabled:c});if(b===`number`||b===`integer`){let n=u?.min,r=u?.max;return(0,q.jsx)(v,{id:e,"aria-labelledby":t,type:`number`,value:o==null?``:String(o),min:n,max:r,onChange:e=>{let t=e.target.value;if(t===``)return s(void 0);let n=b===`integer`?parseInt(t,10):Number(t);s(Number.isFinite(n)?n:void 0)},readOnly:c})}if(b===`string`){let n=u?.maxLength;return y?.format===`multiline`||y?.contentMediaType===`text/markdown`||typeof o==`string`&&o.length>80?(0,q.jsx)(T,{id:e,"aria-labelledby":t,rows:4,value:o??``,maxLength:n,onChange:e=>s(e.target.value||void 0),readOnly:c}):(0,q.jsx)(v,{id:e,"aria-labelledby":t,value:o??``,maxLength:n,onChange:e=>s(e.target.value||void 0),readOnly:c})}if(b===`array`){let n=y?.items??{};if(n.type===`string`||n.type===`number`||n.type===`integer`)return(0,q.jsx)(v,{id:e,"aria-labelledby":t,value:(Array.isArray(o)?o:[]).map(String).join(`, `),placeholder:G(`engine.form.arrayPlaceholder`,h),onChange:e=>{let t=e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean);n.type===`number`||n.type===`integer`?s(t.map(e=>Number(e)).filter(e=>Number.isFinite(e))):s(t)},readOnly:c})}return(0,q.jsx)($r,{id:e,ariaLabelledBy:t,value:o,onChange:s,readOnly:c,small:!0})}function Jr(e,t,n){if(!e)return{};let r;return r=t===`composite`?e.properties:t===`repeater`?e.items?.properties:e.additionalProperties?.properties,r?.[n]??{}}function Yr(e,t){let n=[];for(let r of t){let t=e[r.field];if(t==null||t===``||t===!1)continue;let i=r.label||r.field;t===!0?n.push(i):Array.isArray(t)?t.length&&n.push(t.map(e=>typeof e==`object`&&e?e.field??e.name??``:String(e)).filter(Boolean).join(`, `)):typeof t==`object`?n.push(i):n.push(String(t))}return n.join(` · `)}function Xr({value:e,fields:t,schema:n,readOnly:r,widgetContext:i,fieldSpec:a,ariaLabelledBy:o,idPath:s,onChange:c}){let l=e&&typeof e==`object`&&!Array.isArray(e)?e:{},u=t.map(Ur),d=u.map(e=>{let t=Jr(n,`composite`,e.field);return(0,q.jsx)(Kr,{name:e.field,idPath:s,schema:t,value:l[e.field],required:!!e.required,readOnly:r||e.readonly,fieldSpec:e,widgetContext:i,formData:l,onChange:t=>c({...l,[e.field]:t})},e.field)});if(a?.disclosure===`popover`){let e=Yr(l,u);return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 rounded-md border border-border/50 bg-muted/20 px-3 py-1.5`,role:`group`,"aria-labelledby":o,children:[(0,q.jsx)(`span`,{className:`text-sm text-muted-foreground truncate`,title:e,children:e||(0,q.jsx)(`span`,{className:`italic opacity-70`,children:`Not configured`})}),(0,q.jsxs)(x,{children:[(0,q.jsx)(g,{asChild:!0,children:(0,q.jsx)(F,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 shrink-0`,"aria-label":`Configure`,"data-testid":`composite-popover-${a.field}`,children:(0,q.jsx)(ae,{className:`h-4 w-4`})})}),(0,q.jsx)(C,{align:`end`,className:`w-80 space-y-3`,children:d})]})]})}return(0,q.jsx)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 p-3 space-y-3`,role:`group`,"aria-labelledby":o,children:d})}function Zr({value:e,fields:t,schema:n,readOnly:r,widgetContext:i,widget:a,ariaLabelledBy:o,idPath:s,onChange:c}){let l=U(),u=Array.isArray(e)?e:[],d=t.map(Ur),[p,m]=K.useState(null),h=a===`grid`||a===`table`,g=(e,t)=>Gr($($(s,e),t)),_=e=>`${Gr($(s,e))}-col`,v=(e,t)=>{c(u.map((n,r)=>r===e?{...n,...t}:n))},y=e=>c(u.filter((t,n)=>n!==e)),b=()=>{let e={};d.forEach(t=>{e[t.field]=void 0}),c([...u,e]),m(u.length)};return h?(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":o,children:[(0,q.jsx)(`div`,{className:`overflow-x-auto rounded-md border border-border/50`,children:(0,q.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,q.jsx)(`thead`,{className:`bg-muted/40`,children:(0,q.jsxs)(`tr`,{children:[d.map(e=>(0,q.jsxs)(`th`,{id:_(e.field),scope:`col`,className:`px-2 py-1.5 text-left text-xs font-medium`,children:[e.label||ni(e.field),e.required&&(0,q.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]},e.field)),!r&&(0,q.jsx)(`th`,{scope:`col`,className:`w-8`})]})}),(0,q.jsxs)(`tbody`,{children:[u.length===0&&(0,q.jsx)(`tr`,{children:(0,q.jsx)(`td`,{colSpan:d.length+1,className:`px-2 py-3 text-center text-xs text-muted-foreground`,children:G(`engine.repeater.empty`,l)})}),u.map((e,t)=>(0,q.jsxs)(`tr`,{className:`border-t border-border/30 align-top`,children:[d.map(a=>{let o=Jr(n,`repeater`,a.field);return(0,q.jsx)(`td`,{className:`p-1.5`,children:(0,q.jsx)(qr,{id:g(t,a.field),ariaLabelledBy:_(a.field),fieldName:a.field,idPath:$($(s,t),a.field),schema:o,value:e?.[a.field],readOnly:r||a.readonly,widget:Cr(a,o),fieldSpec:a,widgetContext:i,formData:e,onChange:e=>v(t,{[a.field]:e})})},a.field)}),!r&&(0,q.jsx)(`td`,{className:`p-1.5 text-right`,children:(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>y(t),className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.remove`,l),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})})]},t))]})]})}),!r&&(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:b,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.add`,l)]})]}):(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":o,children:[u.length===0&&(0,q.jsx)(`div`,{className:`rounded-md border border-dashed border-border/50 px-3 py-4 text-center text-xs text-muted-foreground`,children:G(`engine.list.empty`,l)}),u.map((e,t)=>{let a=p===t,o=d.map(t=>e?.[t.field]).find(e=>e!=null&&e!==``);return(0,q.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/10`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-2 py-1.5 border-b border-border/30`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>m(a?null:t),className:`flex items-center gap-1.5 text-sm font-medium text-left flex-1 min-w-0`,children:[a?(0,q.jsx)(z,{className:`h-3.5 w-3.5`}):(0,q.jsx)(V,{className:`h-3.5 w-3.5`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[`#`,t+1,o==null?``:` — ${String(o)}`]})]}),!r&&(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>y(t),className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.remove`,l),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]}),a&&(0,q.jsx)(`div`,{className:`p-3 space-y-3`,children:d.map(a=>{let o=Jr(n,`repeater`,a.field);return(0,q.jsx)(Kr,{name:a.field,idPath:$(s,t),schema:o,value:e?.[a.field],required:!!a.required,readOnly:r||a.readonly,fieldSpec:a,widgetContext:i,formData:e,onChange:e=>v(t,{[a.field]:e})},a.field)})})]},t)}),!r&&(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:b,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.addItem`,l)]})]})}function Qr({value:e,fields:t,schema:n,readOnly:r,widgetContext:i,widget:o,keyField:s,formData:c,ariaLabelledBy:l,idPath:u,onChange:d}){let p=U(),m=a(),[h,g]=K.useState(null),[_,y]=K.useState(``),[x,S]=K.useState(null),[C,w]=K.useState(null),[T,D]=K.useState(null);if(o){let a=mr[o];if(a)return(0,q.jsx)(a,{ariaLabelledBy:l,schema:n,value:e,onChange:d,readOnly:r,context:i,fieldSpec:{field:``,type:`record`,fields:t,widget:o},formData:c})}let O=s?.field??`name`,k=s?.label??ni(O),A=s?.regex?new RegExp(s.regex):null,j=s?.immutable!==!1,M=e&&typeof e==`object`&&!Array.isArray(e)?e:{},N=Object.entries(M),P=t.map(Ur).filter(e=>e.field!==O),ee=e=>d(e),I=(e,t)=>{let n={};for(let[r,i]of N)n[r]=r===e?{...i,...t}:i;ee(n)},te=e=>{let t={};for(let[n,r]of N)n!==e&&(t[n]=r);ee(t)},L=(e,t)=>{if(t===e)return;if(M[t]){S(W(`engine.form.keyExists`,p,{key:t}));return}if(A&&!A.test(t)){S(W(`engine.form.keyPattern`,p,{pattern:String(A)}));return}let n={};for(let[r,i]of N)r===e?n[t]={...i,[O]:t}:n[r]=i;S(null),ee(n)},R=()=>{let e=_.trim();if(!e){S(G(`engine.form.keyRequired`,p));return}if(M[e]){S(W(`engine.form.keyExists`,p,{key:e}));return}if(A&&!A.test(e)){S(W(`engine.form.keyPattern`,p,{pattern:String(A)}));return}let t={[O]:e};P.forEach(e=>{t[e.field]=void 0}),ee({...M,[e]:t}),y(``),S(null),g(e)},ne=(e,t)=>{if(e===t)return;let n=N.map(([e])=>e),r=n.indexOf(e),i=n.indexOf(t);if(r<0||i<0)return;n.splice(r,1),n.splice(i,0,e);let a={};for(let e of n)a[e]=M[e];ee(a)};return(0,q.jsxs)(`div`,{className:`space-y-2`,role:`group`,"aria-labelledby":l,children:[N.length===0&&(0,q.jsx)(`div`,{className:`rounded-md border border-dashed border-border/50 px-3 py-4 text-center text-xs text-muted-foreground`,children:G(`engine.list.empty`,p)}),N.map(([e,t],a)=>{let o=h===e,c=P.map(e=>t?.[e.field]).find(e=>e!=null&&e!==``);return(0,q.jsxs)(`div`,{className:`rounded-md border bg-muted/10 ${T===e&&C&&C!==e?`border-primary border-2`:`border-border/50`}`,onDragOver:t=>{!C||r||(t.preventDefault(),T!==e&&D(e))},onDragLeave:()=>{T===e&&D(null)},onDrop:t=>{!C||r||(t.preventDefault(),ne(C,e),w(null),D(null))},children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-2 py-1.5 border-b border-border/30`,children:[!r&&(0,q.jsx)(`span`,{draggable:!0,onDragStart:t=>{w(e),t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,e)},onDragEnd:()=>{w(null),D(null)},className:`cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground`,"aria-label":G(`engine.form.dragToReorder`,p),title:G(`engine.form.dragToReorder`,p),children:(0,q.jsx)(b,{className:`h-3.5 w-3.5`})}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>g(o?null:e),className:`flex items-center gap-1.5 text-sm font-medium text-left flex-1 min-w-0`,children:[o?(0,q.jsx)(z,{className:`h-3.5 w-3.5`}):(0,q.jsx)(V,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted/60`,children:e}),c!=null&&(0,q.jsxs)(`span`,{className:`truncate text-muted-foreground`,children:[`— `,String(c)]})]}),!r&&(0,q.jsx)(F,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>te(e),className:`h-7 w-7 p-0`,"aria-label":G(`engine.form.remove`,p),children:(0,q.jsx)(E,{className:`h-3.5 w-3.5`})})]}),o&&(0,q.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,q.jsx)(Kr,{name:O,idPath:$(u,a),schema:{type:`string`},value:e,required:!0,readOnly:r||j,fieldSpec:{field:O,type:`text`,label:k,helpText:s?.helpText},widgetContext:i,formData:t,onChange:t=>L(e,String(t??``).trim())}),P.map(o=>{let s=Pr(o);if(s&&!Xe(s,J(t,m)))return null;let c=Jr(n,`record`,o.field);return(0,q.jsx)(Kr,{name:o.field,idPath:$(u,a),schema:c,value:t?.[o.field],required:!!o.required,readOnly:r||o.readonly,fieldSpec:o,widgetContext:i,formData:t,onChange:t=>I(e,{[o.field]:t})},o.field)})]})]},e)}),!r&&(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(v,{value:_,onChange:e=>{y(e.target.value),x&&S(null)},placeholder:s?.placeholder??k,className:`h-8 text-xs font-mono max-w-[220px]`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),R())}}),(0,q.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:R,children:[(0,q.jsx)(f,{className:`h-3.5 w-3.5 mr-1`}),` `,G(`engine.form.add`,p)]}),x&&(0,q.jsx)(`span`,{className:`text-xs text-destructive`,children:x})]})]})}function $r({id:e,ariaLabelledBy:t,value:n,onChange:r,readOnly:i,small:a}){let o=U(),[s,c]=K.useState(()=>ti(n)),[l,u]=K.useState(null);return K.useEffect(()=>{c(ti(n)),u(null)},[JSON.stringify(n)]),(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(T,{id:e,"aria-labelledby":t,rows:a?4:12,className:`font-mono text-xs`,value:s,readOnly:i,onChange:e=>{let t=e.target.value;if(c(t),!t.trim()){u(null),r(void 0);return}try{let e=JSON.parse(t);u(null),r(e)}catch(e){u(e?.message??G(`engine.form.invalidJson`,o))}}}),l&&(0,q.jsx)(`div`,{className:`text-xs text-destructive`,children:l})]})}function ei(e){let t={};for(let[n,r]of Object.entries(e))if(!n.startsWith(`_`)){if(r==null)t[n]={type:`string`};else if(typeof r==`string`)t[n]=r.length>80||r.includes(`
|
|
3
3
|
`)?{type:`string`,format:`multiline`}:{type:`string`};else if(typeof r==`number`)t[n]={type:Number.isInteger(r)?`integer`:`number`};else if(typeof r==`boolean`)t[n]={type:`boolean`};else if(Array.isArray(r)){if(r.length>0&&typeof r[0]==`string`)t[n]={type:`array`,items:{type:`string`}};else if(r.length>0&&typeof r[0]==`object`&&r[0]!==null){let e=r[0],i={};for(let t of Object.keys(e))i[t]={type:`string`};t[n]={type:`array`,items:{type:`object`,properties:i}}}else t[n]={type:`array`,items:{type:`string`}}}else t[n]=typeof r==`object`?{type:`object`,additionalProperties:!0}:{type:`string`}}return{type:`object`,properties:t,additionalProperties:!0}}function ti(e){if(e===void 0)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ni(e){return e.replace(/[_-]+/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function ri(e,t){if(!t.length)return e;let n=new Set(e),r=t.filter(e=>n.has(e)),i=e.filter(e=>!t.includes(e));return[...r,...i]}function ii(e){let t=e?.properties??{};return Object.keys(t)}export{wt as A,Fe as B,tn as C,$t as D,sn as E,je as F,Me as G,Se as H,Ie as I,Ne as J,De as K,Ve as L,yt as M,vt as N,Yt as O,He as P,Re as R,cn as S,dn as T,ke as U,Te as V,Pe as W,Ce as Y,nn as _,Nn as a,hn as b,xn as c,_n as d,yn as f,rn as g,on as h,Zn as i,Pt as j,zt as k,bn as l,pn as m,Ir as n,Sn as o,mn as p,Oe as q,Hr as r,Cn as s,Lr as t,Dn as u,gn as v,un as w,ln as x,an as y,we as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,b as n,g as r,h as i,r as a}from"./vendor-react-CsWFRkED.js";import{g as o}from"./infrastructure-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,b as n,g as r,h as i,r as a}from"./vendor-react-CsWFRkED.js";import{g as o}from"./infrastructure-B4zG1jNa.js";import{J as s,S as c,q as l,sr as u}from"./framework-DFE_Mws9.js";import{y as d}from"./i18n-locales-BBA090ve.js";import{In as f,Ms as p,Oo as m,Or as h,Pr as g,Qc as _,Tc as v,aa as y,kr as b,us as x}from"./ui-components-CMHDBJEm.js";import{i as S}from"./appRoute-DEVGXLLH.js";import{n as C}from"./utils-MjUhYVsx.js";import{o as w}from"./ui-layout-Jk_qY9Ni.js";import{t as T}from"./getIcon-B4Pp7Q-0.js";var E=e(n(),1),D=a();function O(e){let t=[];for(let n of e)n.type===`group`&&n.children?t.push(...O(n.children)):t.push(n);return t}var k={object:p,dashboard:m,page:x,report:v},A={object:`bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200`,dashboard:`bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200`,page:`bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200`,report:`bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200`};function j(){let{t:e}=d(),{appName:n}=i(),[a,m]=r(),v=a.get(`q`)||``,[x,j]=(0,E.useState)(v),{apps:M,objects:N}=s(),P=M||[],F=(0,E.useMemo)(()=>N||[],[N]),I=S(P,n)||P[0],L=`/apps/${n}`,{user:R,activeOrganization:z}=o(),B=l(),V=(0,E.useMemo)(()=>{if(!I)return[];let e=O(I.navigation||[]),t={currentUserId:R?.id??null,currentOrgId:z?.id??null};return e.map(e=>{let{href:n}=w(e,L,t);return{id:e.id,label:e.label||e.objectName||e.dashboardName||e.pageName||e.reportName||``,href:n,type:e.type,description:e.description}}).filter(e=>e.href!==`#`)},[I,L,R?.id]),H=(0,E.useMemo)(()=>{if(!x.trim())return V;let e=x.toLowerCase();return V.filter(t=>t.label.toLowerCase().includes(e)||t.type.toLowerCase().includes(e)||t.description&&t.description.toLowerCase().includes(e))},[V,x]),U=e=>{j(e),m(e?{q:e}:{})},W=(0,E.useMemo)(()=>{let e={};for(let t of H)(e[t.type]||=[]).push(t);return e},[H]),G=(0,E.useMemo)(()=>I?O(I.navigation||[]).filter(e=>e.type===`object`&&typeof e.objectName==`string`).map(e=>e.objectName):[],[I]),{results:K,isSearching:q}=c({query:x,objects:F,dataSource:B,objectNames:G,enabled:!!B&&x.trim().length>=2,topPerObject:5,maxObjectsQueried:12,getDisplayName:u}),J=(0,E.useMemo)(()=>{let e=new Map;for(let t of F)typeof t?.name==`string`&&e.set(t.name,t);return e},[F]),Y=(0,E.useMemo)(()=>{let t=[],n=new Map;for(let r of K){let i=n.get(r.objectName);if(!i){let a=J.get(r.objectName);i={label:C(a?.label,e)||r.objectLabel,icon:a?.icon??r.icon,hits:[]},n.set(r.objectName,i),t.push(r.objectName)}i.hits.push(r)}return t.map(e=>({objectName:e,...n.get(e)}))},[K,J,e]),X=H.length+K.length,Z=X>0;return(0,D.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6 max-w-4xl mx-auto`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsxs)(t,{to:L,className:`flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors`,children:[(0,D.jsx)(_,{className:`h-4 w-4`}),e(`search.back`)]}),(0,D.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`search.title`)})]}),(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(`label`,{htmlFor:`search-results-input`,className:`sr-only`,children:e(`search.placeholder`)}),(0,D.jsx)(y,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,D.jsx)(f,{id:`search-results-input`,value:x,onChange:e=>U(e.target.value),placeholder:e(`search.placeholder`),className:`pl-10 h-11 text-base`,autoFocus:!0})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,D.jsx)(`span`,{children:x.trim()?e(X===1?`search.resultsCount`:`search.resultsCountPlural`,{count:X,query:x}):e(`search.itemsAvailable`,{count:V.length})}),q&&(0,D.jsx)(`span`,{"aria-hidden":!0,className:`inline-block h-1.5 w-1.5 rounded-full bg-primary motion-safe:animate-pulse`})]}),!Z&&!q?(0,D.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 text-center`,children:[(0,D.jsx)(y,{className:`h-12 w-12 text-muted-foreground/30 mb-4`}),(0,D.jsx)(`p`,{className:`text-lg font-medium text-muted-foreground`,children:e(`search.noResults`)}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground/80 mt-1`,children:e(`search.noResultsHint`)})]}):(0,D.jsxs)(`div`,{className:`space-y-6`,children:[Y.map(e=>{let n=T(e.icon);return(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`h2`,{className:`text-sm font-medium text-muted-foreground mb-2 flex items-center gap-1.5`,children:[(0,D.jsx)(n,{className:`h-4 w-4`}),e.label,(0,D.jsx)(g,{variant:`secondary`,className:`ml-1 text-xs`,children:e.hits.length})]}),(0,D.jsx)(`div`,{className:`grid gap-2`,children:e.hits.map(e=>{let n=T(e.icon);return(0,D.jsx)(t,{to:`${L}/${e.objectName}/record/${e.recordId}`,className:`rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:(0,D.jsx)(h,{className:`hover:bg-accent/50 transition-colors cursor-pointer`,children:(0,D.jsxs)(b,{className:`flex items-center gap-3 p-3`,children:[(0,D.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded bg-primary/10 text-primary`,children:(0,D.jsx)(n,{className:`h-4 w-4`})}),(0,D.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,D.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.display}),e.subtitle&&(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:e.subtitle})]})]})})},`${e.objectName}:${e.recordId}`)})})]},`records:${e.objectName}`)}),Object.entries(W).map(([n,r])=>{let i=k[n]||p,a=`search.type${n.charAt(0).toUpperCase()}${n.slice(1)}s`;return(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`h2`,{className:`text-sm font-medium text-muted-foreground mb-2 flex items-center gap-1.5`,children:[(0,D.jsx)(i,{className:`h-4 w-4`}),e(a),(0,D.jsx)(g,{variant:`secondary`,className:`ml-1 text-xs`,children:r.length})]}),(0,D.jsx)(`div`,{className:`grid gap-2`,children:r.map(n=>{let r=k[n.type]||p,i=`search.badge${n.type.charAt(0).toUpperCase()}${n.type.slice(1)}`;return(0,D.jsx)(t,{to:n.href,className:`rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:(0,D.jsx)(h,{className:`hover:bg-accent/50 transition-colors cursor-pointer`,children:(0,D.jsxs)(b,{className:`flex items-center gap-3 p-3`,children:[(0,D.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded ${A[n.type]||``}`,children:(0,D.jsx)(r,{className:`h-4 w-4`})}),(0,D.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,D.jsx)(`p`,{className:`text-sm font-medium truncate`,children:n.label}),n.description&&(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:n.description})]}),(0,D.jsx)(g,{variant:`outline`,className:`text-xs shrink-0`,children:e(i)})]})})},n.id)})})]},n)})]})]})}export{j as SearchResultsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,p as n,r}from"./vendor-react-CsWFRkED.js";import{y as i}from"./i18n-locales-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,p as n,r}from"./vendor-react-CsWFRkED.js";import{y as i}from"./i18n-locales-BBA090ve.js";import{Ar as a,Mr as o,Or as s,Pr as c,gn as l,jr as u,kr as d,na as f}from"./ui-components-CMHDBJEm.js";import{c as p,i as m,n as h,t as g}from"./useSettingsLabel-CW2sBbmj.js";var _=e(t(),1),v=r();function y({m:e,onOpen:t}){let{t:n}=i(),r=g(e.namespace),l=e.icon?p(e.icon):f,m=h(e.label),_=r.title(m),y=r.description(e.description??void 0);return(0,v.jsxs)(s,{className:`cursor-pointer hover:border-primary/50 hover:shadow-sm transition-all`,onClick:t,children:[(0,v.jsxs)(u,{className:`pb-3`,children:[(0,v.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,v.jsx)(l,{className:`h-6 w-6 text-muted-foreground`}),e.beta?(0,v.jsx)(c,{variant:`secondary`,className:`text-[10px]`,children:n(`console.settingsHub.beta`)}):null]}),(0,v.jsx)(o,{className:`text-base mt-2`,children:_}),y?(0,v.jsx)(a,{className:`text-xs`,children:y}):null]}),(0,v.jsx)(d,{className:`pt-0`,children:(0,v.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:n(`console.settingsHub.settingsCount`,{n:e.specifiers.length})})})]})}function b(){let e=n(),{t}=i(),[r,a]=(0,_.useState)(null),[o,c]=(0,_.useState)(null);(0,_.useEffect)(()=>{m().then(e=>a(e.manifests??[])).catch(e=>c(e?.message??t(`console.settingsHub.loadError`)))},[t]);let u=(0,_.useMemo)(()=>{if(!r)return null;let e=new Map;for(let t of[...r].sort((e,t)=>(e.order??999)-(t.order??999))){let n=t.category??`Other`,r=e.get(n)??[];r.push(t),e.set(n,r)}return e},[r]);return(0,v.jsxs)(`div`,{className:`p-6 max-w-6xl mx-auto`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-3 mb-6`,children:[(0,v.jsx)(f,{className:`h-7 w-7 text-muted-foreground`}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:t(`console.settingsHub.title`)}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t(`console.settingsHub.subtitle`)})]})]}),o?(0,v.jsx)(s,{children:(0,v.jsx)(d,{className:`py-8 text-center text-sm text-destructive`,children:o})}):null,r?r.length===0?(0,v.jsx)(s,{children:(0,v.jsx)(d,{className:`py-12 text-center text-sm text-muted-foreground`,children:t(`console.settingsHub.empty`)})}):Array.from(u??[]).map(([n,r])=>(0,v.jsxs)(`section`,{className:`mb-8`,children:[(0,v.jsx)(`h2`,{className:`text-sm font-semibold tracking-wide uppercase text-muted-foreground mb-3`,children:t(`console.settingsHub.categories.${n}`,{defaultValue:n})}),(0,v.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4`,children:r.map(t=>(0,v.jsx)(y,{m:t,onOpen:()=>e(`/system/settings/${t.namespace}`)},t.namespace))})]},n)):(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsx)(l,{className:`h-6 w-32`}),(0,v.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4`,children:Array.from({length:3}).map((e,t)=>(0,v.jsx)(l,{className:`h-32 w-full`},t))})]})]})}export{b as SettingsHub};
|