@objectstack/console 17.5.0 → 17.6.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.
Files changed (271) hide show
  1. package/CHANGELOG.md +378 -0
  2. package/dist/.objectstack-injection.json +2 -2
  3. package/dist/.objectui-sha +1 -1
  4. package/dist/assets/{ActionResultDialog-CLdIyOW6.js → ActionResultDialog-4kHDGnT3.js} +3 -3
  5. package/dist/assets/{AiPendingActionsPage-OKYz66yR.js → AiPendingActionsPage-JjOddm0h.js} +1 -1
  6. package/dist/assets/{ApiConsolePage-CcrKovu8.js → ApiConsolePage-BgS26lbp.js} +1 -1
  7. package/dist/assets/AppDocsIndex-BDoH5ECM.js +1 -0
  8. package/dist/assets/{AppManagementPage-D_xz8cTZ.js → AppManagementPage-CCgKmNTj.js} +1 -1
  9. package/dist/assets/ApprovalsInboxPage-C6S1vk0X.js +1 -0
  10. package/dist/assets/AuditLogPage-v2dKXMuk.js +1 -0
  11. package/dist/assets/BookPage-DwFMcTSN.js +1 -0
  12. package/dist/assets/{ComponentNavView-BxsixSU9.js → ComponentNavView-B5g9c6fx.js} +1 -1
  13. package/dist/assets/{CreateViewDialog-xyKlpLEW.js → CreateViewDialog-D3l-tYHM.js} +1 -1
  14. package/dist/assets/DashboardView-BOcovpPd.js +1 -0
  15. package/dist/assets/DocPage-B6AkH5WI.js +1 -0
  16. package/dist/assets/{DocsIndex-B2zw_HAp.js → DocsIndex-DwW2QsYY.js} +1 -1
  17. package/dist/assets/{DocsLayout-DezZ8x7_.js → DocsLayout-D63StSgd.js} +1 -1
  18. package/dist/assets/DocsSlug-CP9fcabi.js +1 -0
  19. package/dist/assets/ExpressionProvider-CrL6jhVq.js +1 -0
  20. package/dist/assets/{FlowRunsPage-CvY3nJMF.js → FlowRunsPage-CxdaiUyk.js} +1 -1
  21. package/dist/assets/{IntegrationsPage-2leVkVDH.js → IntegrationsPage-DvG0x0Nb.js} +2 -2
  22. package/dist/assets/{InterfaceListPage-BdECC_i3.js → InterfaceListPage-C4wPYohR.js} +1 -1
  23. package/dist/assets/{MarketplaceInstalledPage-EPPHSitW.js → MarketplaceInstalledPage-B7KETQG2.js} +1 -1
  24. package/dist/assets/MarketplacePackagePage-CfgKDpNH.js +4 -0
  25. package/dist/assets/{MarketplacePage-BnQKykgv.js → MarketplacePage-DNEyU5AE.js} +1 -1
  26. package/dist/assets/{MetadataInspector-BWxLkr0O.js → MetadataInspector-EP0I3-Kq.js} +1 -1
  27. package/dist/assets/{ObjectDataPage-BIzp65Mo.js → ObjectDataPage-CykEm9MD.js} +1 -1
  28. package/dist/assets/PageView-C6u86tni.js +1 -0
  29. package/dist/assets/{ProfilePage-D2qGgxPK.js → ProfilePage-C3SjXMzi.js} +1 -1
  30. package/dist/assets/{PublicFormsPage-DlE6tck_.js → PublicFormsPage-D3uCTR-8.js} +1 -1
  31. package/dist/assets/RecordDetailView-DgR_zhP4.js +3 -0
  32. package/dist/assets/RecordFormPage-kiJI-ieF.js +1 -0
  33. package/dist/assets/ReportDefaultInspector-BIinF0EQ.js +1 -0
  34. package/dist/assets/{ReportView-GIdKJdOt.js → ReportView-BREO-ADE.js} +1 -1
  35. package/dist/assets/{RuntimeDraftBar-BbMdi3Kp.js → RuntimeDraftBar-BCWfd2yS.js} +1 -1
  36. package/dist/assets/SchemaForm-C4uMMZ13.js +3 -0
  37. package/dist/assets/SearchResultsPage-C6Hw_Lpn.js +1 -0
  38. package/dist/assets/{SettingsHub-BGKIj-Zq.js → SettingsHub-DP1mrzEN.js} +1 -1
  39. package/dist/assets/SettingsView-u7mc6pcc.js +1 -0
  40. package/dist/assets/{SkeletonDetail-C8fMI-Mu.js → SkeletonDetail-DIwlbHTr.js} +1 -1
  41. package/dist/assets/{af-BfSmLD34.js → af-DPUgkQl0.js} +1 -1
  42. package/dist/assets/ai-DPBykF2N.js +3 -0
  43. package/dist/assets/{app-shell-eager-leaves-CDVclng4.js → app-shell-eager-leaves-Cf2bM6uT.js} +1 -1
  44. package/dist/assets/{ar-B9ttrM75.js → ar-B-6GTIRU.js} +1 -1
  45. package/dist/assets/{ar-DZ-C1rn-cyl.js → ar-DZ-wEl298ti.js} +1 -1
  46. package/dist/assets/{ar-EG-BaDxKP_o.js → ar-EG-YBT90_S0.js} +1 -1
  47. package/dist/assets/{ar-MA-DbxNEcmd.js → ar-MA-3uT-EYh6.js} +1 -1
  48. package/dist/assets/{ar-SA-DeC5LXcX.js → ar-SA-SiQsjhhc.js} +1 -1
  49. package/dist/assets/{ar-TN-C9KpTFJz.js → ar-TN-CfzXjKzS.js} +1 -1
  50. package/dist/assets/{az-cMerDwRO.js → az-BqAfcNza.js} +1 -1
  51. package/dist/assets/{be-ZTSbszQh.js → be-CQgWXa9_.js} +1 -1
  52. package/dist/assets/{be-tarask-BXZEUrgX.js → be-tarask-BmNg0Sir.js} +1 -1
  53. package/dist/assets/{bg-BDogpmn5.js → bg-D3evgRuS.js} +1 -1
  54. package/dist/assets/{bn-Cz04uxmh.js → bn-uItkARwm.js} +1 -1
  55. package/dist/assets/{bs-CpFnCl-j.js → bs-DueReOpO.js} +1 -1
  56. package/dist/assets/{ca-CHC4M52Z.js → ca-Cr3AHktR.js} +1 -1
  57. package/dist/assets/{ckb-Dxw-RNm8.js → ckb-CTi5BET7.js} +1 -1
  58. package/dist/assets/contracts-DieHW666.js +1 -0
  59. package/dist/assets/{createDerive-DvA_JGNq.js → createDerive-CjN1i5vn.js} +1 -1
  60. package/dist/assets/{cs-DsFaJ5Z7.js → cs-43mFX9jr.js} +1 -1
  61. package/dist/assets/{cy-FH4JFDTs.js → cy-BBSkg3F8.js} +1 -1
  62. package/dist/assets/{da-D1pVjaAq.js → da-C5oA5qcs.js} +1 -1
  63. package/dist/assets/data-adapter-Cymvlczj.js +1 -0
  64. package/dist/assets/{de-AT-DUMQCisj.js → de-AT-CApxwJzu.js} +1 -1
  65. package/dist/assets/{de-DKrxSvnP.js → de-CPtbLlAf.js} +1 -1
  66. package/dist/assets/default-inspector-registry-Bs6GBn00.js +1 -0
  67. package/dist/assets/dist-BF-ssUpn.js +14 -0
  68. package/dist/assets/{el-l3-bHySV.js → el-Dto2xBQU.js} +1 -1
  69. package/dist/assets/en-AU-FVwCiDJO.js +1 -0
  70. package/dist/assets/{en-CA-DGH5NF0a.js → en-CA-DKuJPN1U.js} +1 -1
  71. package/dist/assets/en-GB-DQ_y5VbJ.js +1 -0
  72. package/dist/assets/en-IE-DaXOhsZW.js +1 -0
  73. package/dist/assets/en-IN-CnRZnAom.js +1 -0
  74. package/dist/assets/en-NZ-CBZLEToK.js +1 -0
  75. package/dist/assets/en-ZA-BE59v0wZ.js +1 -0
  76. package/dist/assets/{eo-CL6CXHZx.js → eo-BL8JXIWd.js} +1 -1
  77. package/dist/assets/{es-BIJ0rksI.js → es-BnoaNxsu.js} +1 -1
  78. package/dist/assets/{et-BGgMzjm1.js → et-tPYLNenO.js} +1 -1
  79. package/dist/assets/{eu-CqvAoRrX.js → eu-CUBG6bT0.js} +1 -1
  80. package/dist/assets/{fa-IR-DNz3oA1-.js → fa-IR-Rr2d9xSs.js} +1 -1
  81. package/dist/assets/{fi-DNSfKWuW.js → fi-B0NVIZsV.js} +1 -1
  82. package/dist/assets/{formatLong-CHb9WA3O.js → formatLong-1-gt9bpo.js} +1 -1
  83. package/dist/assets/{fr-DYRJCirJ.js → fr-BbhHek8e.js} +1 -1
  84. package/dist/assets/{fr-CA-CotiswPx.js → fr-CA-CBDvLXFg.js} +1 -1
  85. package/dist/assets/{fr-CH-CpiEYWpc.js → fr-CH-WPNmwPn7.js} +1 -1
  86. package/dist/assets/framework-DFR4HNtj.js +35 -0
  87. package/dist/assets/{fy-B69yM3FE.js → fy-DvOBbvEF.js} +1 -1
  88. package/dist/assets/{gd-BAy8AsX6.js → gd-BQPiTPX5.js} +1 -1
  89. package/dist/assets/getIcon-Cfwf-Egt.js +1 -0
  90. package/dist/assets/{gl-soLn_weL.js → gl-BJCXK8uO.js} +1 -1
  91. package/dist/assets/{gu-B19Yo9yC.js → gu-CctPRz3V.js} +1 -1
  92. package/dist/assets/{he-DYTPo33p.js → he-CVFMk6p2.js} +1 -1
  93. package/dist/assets/{hi-D2dIK7Oy.js → hi-Ba30-RwS.js} +1 -1
  94. package/dist/assets/{highlighted-body-OFNGDK62-CExufvVt.js → highlighted-body-OFNGDK62-BQ57IrBV.js} +1 -1
  95. package/dist/assets/{hr-BV-VOPMu.js → hr-BZUqTbZs.js} +1 -1
  96. package/dist/assets/{ht-C7MM4qkS.js → ht-BLe05tPx.js} +1 -1
  97. package/dist/assets/{hu-Rha1m2Ym.js → hu-2CQ_Mkww.js} +1 -1
  98. package/dist/assets/{hy-CiTNgbdV.js → hy-CclcPG4H.js} +1 -1
  99. package/dist/assets/i18n-BnUsCaSC.js +17 -0
  100. package/dist/assets/i18n-locale-ar-92O_xtDZ.js +4 -0
  101. package/dist/assets/i18n-locale-de-T5ic3yH9.js +4 -0
  102. package/dist/assets/i18n-locale-en-rxr7WJYl.js +4 -0
  103. package/dist/assets/i18n-locale-es-D_WOifJ_.js +4 -0
  104. package/dist/assets/i18n-locale-fr-3cvyjMkp.js +4 -0
  105. package/dist/assets/i18n-locale-ja-DXlIkB8I.js +4 -0
  106. package/dist/assets/i18n-locale-ko-DngRpS45.js +4 -0
  107. package/dist/assets/i18n-locale-pt-BkPaFCqZ.js +4 -0
  108. package/dist/assets/i18n-locale-ru-E5wLh-y6.js +4 -0
  109. package/dist/assets/i18n-locale-zh-BL4_Yand.js +4 -0
  110. package/dist/assets/{i18n-runtime-CTgAQF4N.js → i18n-runtime-97_bDVjP.js} +1 -1
  111. package/dist/assets/{id-Cijsfjt-.js → id-6JLB8s-f.js} +1 -1
  112. package/dist/assets/index-Cadlh4t_.css +2 -0
  113. package/dist/assets/index-D98sa5GF.js +20 -0
  114. package/dist/assets/{infrastructure-BHSync5f.js → infrastructure-Cc34lEqb.js} +2 -2
  115. package/dist/assets/integration-CeAF4JFT.js +1 -0
  116. package/dist/assets/{is-xS1WTyeC.js → is-to0CWzm1.js} +1 -1
  117. package/dist/assets/isSameWeek-DBXaA1Gd.js +1 -0
  118. package/dist/assets/{it-CH-l516ZNXj.js → it-CH-DhdfjP5Z.js} +1 -1
  119. package/dist/assets/{it-C2i_c9sd.js → it-ea0B8Ujp.js} +1 -1
  120. package/dist/assets/{ja-D9_ewLny.js → ja-B1bzkgDW.js} +1 -1
  121. package/dist/assets/{ja-Hira-D_6ExgHw.js → ja-Hira-CMrY5hXO.js} +1 -1
  122. package/dist/assets/{ka-BYHGyees.js → ka-DKSXLnXP.js} +1 -1
  123. package/dist/assets/{kk-CbTFtuqb.js → kk-DHwMv8Dn.js} +1 -1
  124. package/dist/assets/{km-Dr2gwhIn.js → km-tpLG1xNr.js} +1 -1
  125. package/dist/assets/{kn-CprH8JD7.js → kn-MLreVnHA.js} +1 -1
  126. package/dist/assets/{ko-CsFS2u5i.js → ko-CI0DBazn.js} +1 -1
  127. package/dist/assets/{lb-CbFKN7Ob.js → lb-CmL572Xe.js} +1 -1
  128. package/dist/assets/{lt-Bq0xkLp0.js → lt-DRtUOLdw.js} +1 -1
  129. package/dist/assets/{lv-Cj6vg6Qo.js → lv-COSHgkOP.js} +1 -1
  130. package/dist/assets/{match-C_jFGO9e.js → match-B-ergJQb.js} +1 -1
  131. package/dist/assets/{match-CiPp9BME.js → match-BQoOW8Cj.js} +1 -1
  132. package/dist/assets/{match-Co4ivumx.js → match-dfBS0YSQ.js} +1 -1
  133. package/dist/assets/mermaid-GHXKKRXX-Bb17TtNP.js +1 -0
  134. package/dist/assets/metadata-admin-CABUxbJl.js +9 -0
  135. package/dist/assets/{mk-MXFM99YL.js → mk-B0IH_YL_.js} +1 -1
  136. package/dist/assets/{mn-D5Q9B6Jt.js → mn-P-QdQ2n3.js} +1 -1
  137. package/dist/assets/{ms-CCzPRldx.js → ms-CtyEOINy.js} +1 -1
  138. package/dist/assets/{mt-mjJpN6xW.js → mt-DfuZ2HRm.js} +1 -1
  139. package/dist/assets/{nb-BIlNqdEb.js → nb-2Hp-5Tnt.js} +1 -1
  140. package/dist/assets/{nl-BE-FwXjQsmV.js → nl-BE-mmxbfNoR.js} +1 -1
  141. package/dist/assets/{nl-D2uBtIxG.js → nl-CZ_nLREz.js} +1 -1
  142. package/dist/assets/{nn-B0loJ7SV.js → nn-ccWhYsNa.js} +1 -1
  143. package/dist/assets/{oc-U7-yH1sO.js → oc-z504BFRV.js} +1 -1
  144. package/dist/assets/{pl-mTy0JYgi.js → pl-DeQ7ASt-.js} +1 -1
  145. package/dist/assets/plugin-calendar-Cn5HaZU8.js +1 -0
  146. package/dist/assets/plugin-charts-B6RcFWbo.js +7 -0
  147. package/dist/assets/plugin-chatbot-Ck47EhDX.js +122 -0
  148. package/dist/assets/plugin-dashboard-DjEx8e5Y.js +6 -0
  149. package/dist/assets/plugin-form-CLDvL0up.js +1 -0
  150. package/dist/assets/plugin-gantt-CrVrxVdi.js +63 -0
  151. package/dist/assets/plugin-grid-D2rmQEW_.js +11 -0
  152. package/dist/assets/plugin-kanban-BUNHFfIC.js +1 -0
  153. package/dist/assets/plugin-map-y-7RQQC5.js +1 -0
  154. package/dist/assets/{plugin-markdown-D1nTQc1T.js → plugin-markdown-BOkHcir_.js} +1 -1
  155. package/dist/assets/plugin-report-mT3jpna0.js +59 -0
  156. package/dist/assets/plugin-timeline-B1EF83D3.js +1 -0
  157. package/dist/assets/plugin-tree-MTHUt3_S.js +1 -0
  158. package/dist/assets/plugin-view-DHJI-ahf.js +1 -0
  159. package/dist/assets/plugins-views-CfkgqD30.js +3 -0
  160. package/dist/assets/{pt-BR-2KtO5Js1.js → pt-BR-D80_lPYF.js} +1 -1
  161. package/dist/assets/{pt-Bet5OOQf.js → pt-CJJ1RmXd.js} +1 -1
  162. package/dist/assets/{ro-37U6sgzi.js → ro-EuFb2TCj.js} +1 -1
  163. package/dist/assets/{ru-CyuAY-5E.js → ru-CMaVQScp.js} +1 -1
  164. package/dist/assets/{runtime-metadata-persistence-afAW-MeD.js → runtime-metadata-persistence-ClOTznqa.js} +1 -1
  165. package/dist/assets/{se-DeJabuC6.js → se-DsfdKLdF.js} +1 -1
  166. package/dist/assets/{sk-DWEpjfkR.js → sk-BNV9omI8.js} +1 -1
  167. package/dist/assets/{sl-4oSvNhIR.js → sl-DJS_nINU.js} +1 -1
  168. package/dist/assets/{sq-BjkBCaXW.js → sq-HEgjcbHe.js} +1 -1
  169. package/dist/assets/{sr-Dxm1DsRS.js → sr-CO0CFu4X.js} +1 -1
  170. package/dist/assets/{sr-Latn-Dawg6oP2.js → sr-Latn-eE1Idzey.js} +1 -1
  171. package/dist/assets/{src-C8NYjdVm.js → src-BU7L2v4J.js} +1 -1
  172. package/dist/assets/src-BUtIBFDA.js +1 -0
  173. package/dist/assets/src-C0eXlKtx.js +16 -0
  174. package/dist/assets/{studioEntry-nXQP3iL0.js → studioEntry-WeMfaSGn.js} +1 -1
  175. package/dist/assets/{submitRedirect-jK-cEIbP.js → submitRedirect-C2lfZSHt.js} +1 -1
  176. package/dist/assets/{sv-CROOGJGz.js → sv-5uTzgQT3.js} +1 -1
  177. package/dist/assets/{ta-BZnTmFI_.js → ta-BzgdkBZG.js} +1 -1
  178. package/dist/assets/{te-BN0v0x5t.js → te-Ct_pl7ZJ.js} +1 -1
  179. package/dist/assets/{th-CBjKhp_U.js → th-DouAlk0-.js} +1 -1
  180. package/dist/assets/{tr-x0Ne4N4H.js → tr-3XNBsI40.js} +1 -1
  181. package/dist/assets/types-zod-DXpXw10W.js +1 -0
  182. package/dist/assets/{ug-sgzNhsKo.js → ug-B9n24h9G.js} +1 -1
  183. package/dist/assets/ui-components-D6cEVg0T.js +37 -0
  184. package/dist/assets/ui-layout-DgVDuPEM.js +1 -0
  185. package/dist/assets/{uk-o_DQ5VHJ.js → uk-DCAenByf.js} +1 -1
  186. package/dist/assets/use-book-data-CwRldFxP.js +1 -0
  187. package/dist/assets/{useActionModal-CSvbHkQ7.js → useActionModal-Blp4rhOk.js} +1 -1
  188. package/dist/assets/useCanAuthorMetadata-BxCMgFRf.js +1 -0
  189. package/dist/assets/useNavSelDeepLink-67Y4qCNO.js +1 -0
  190. package/dist/assets/useNavTargetLabel-BOJncjIb.js +1 -0
  191. package/dist/assets/{useOpenRecordList-B5-qaFUx.js → useOpenRecordList-BrwJFojQ.js} +1 -1
  192. package/dist/assets/{usePackageL10n-CMx66am-.js → usePackageL10n-Ci9uVkRZ.js} +1 -1
  193. package/dist/assets/{useSettingsLabel-Kkr2q0Oo.js → useSettingsLabel-CeMnMWsh.js} +1 -1
  194. package/dist/assets/{uz-Cyrl-DbtkQtz_.js → uz-Cyrl-JSeHEqu-.js} +1 -1
  195. package/dist/assets/{uz-Be41d4jl.js → uz-DT3s9bZS.js} +1 -1
  196. package/dist/assets/vendor-objectstack-DFqu45yM.js +138 -0
  197. package/dist/assets/{vi-84mZmklk.js → vi-D2p-h6bY.js} +1 -1
  198. package/dist/assets/{zh-CN-DD1reegJ.js → zh-CN-DHOKqAit.js} +1 -1
  199. package/dist/assets/{zh-HK-B05u30WI.js → zh-HK-D4iIPY7I.js} +1 -1
  200. package/dist/assets/{zh-TW-Bb-WimPD.js → zh-TW-gORQ_tZh.js} +1 -1
  201. package/dist/chunk-membership.json +100 -90
  202. package/dist/eager-closure.json +110 -110
  203. package/dist/index.html +4 -4
  204. package/dist/sdui.manifest.json +520 -60
  205. package/package.json +1 -1
  206. package/dist/assets/AppDocsIndex-F4zDq2zz.js +0 -1
  207. package/dist/assets/ApprovalsInboxPage-DrEUmaDb.js +0 -1
  208. package/dist/assets/AuditLogPage-CoghqsZb.js +0 -1
  209. package/dist/assets/DashboardView-CGC-_Om8.js +0 -1
  210. package/dist/assets/DocPage-CIZE5kdj.js +0 -1
  211. package/dist/assets/DocsSlug-DXdFdwlS.js +0 -1
  212. package/dist/assets/ExpressionProvider-DZfMwyMs.js +0 -1
  213. package/dist/assets/MarketplacePackagePage-C7NOu2Ir.js +0 -4
  214. package/dist/assets/PageView-CVLgCRSF.js +0 -1
  215. package/dist/assets/RecordDetailView-DQKydU7X.js +0 -3
  216. package/dist/assets/RecordFormPage-BTjwxJIA.js +0 -1
  217. package/dist/assets/ReportDefaultInspector-DdsQAkd7.js +0 -1
  218. package/dist/assets/SchemaForm-C8X1ve4p.js +0 -3
  219. package/dist/assets/SearchResultsPage-Jwhqsdyo.js +0 -1
  220. package/dist/assets/SettingsView-D8SMKdrc.js +0 -1
  221. package/dist/assets/appRoute-DbnWDEa1.js +0 -1
  222. package/dist/assets/data-adapter-DMbe6Njk.js +0 -1
  223. package/dist/assets/default-inspector-registry-CpL3fFhl.js +0 -1
  224. package/dist/assets/dist-BXrEV1ag.js +0 -13
  225. package/dist/assets/en-AU-C6x7mDhH.js +0 -1
  226. package/dist/assets/en-GB-0-nho2eK.js +0 -1
  227. package/dist/assets/en-IE-2fC3BkfV.js +0 -1
  228. package/dist/assets/en-IN-C1QcFhxn.js +0 -1
  229. package/dist/assets/en-NZ-C80ptZT7.js +0 -1
  230. package/dist/assets/en-ZA-ByZDrjeb.js +0 -1
  231. package/dist/assets/framework-DcWkeiND.js +0 -35
  232. package/dist/assets/getIcon-BEVyC4y3.js +0 -1
  233. package/dist/assets/i18n-CEKxYdmD.js +0 -9
  234. package/dist/assets/i18n-locale-ar-DN7sl3GF.js +0 -4
  235. package/dist/assets/i18n-locale-de-C40JErvb.js +0 -4
  236. package/dist/assets/i18n-locale-en-CITPDIHy.js +0 -4
  237. package/dist/assets/i18n-locale-es-C8DdWN6c.js +0 -4
  238. package/dist/assets/i18n-locale-fr-COIdEZZl.js +0 -4
  239. package/dist/assets/i18n-locale-ja-DYF_rU_s.js +0 -4
  240. package/dist/assets/i18n-locale-ko-B-ODYAtX.js +0 -4
  241. package/dist/assets/i18n-locale-pt-CK1SyBIm.js +0 -4
  242. package/dist/assets/i18n-locale-ru-jLzvShMO.js +0 -4
  243. package/dist/assets/i18n-locale-zh-Bf9Gbbvl.js +0 -4
  244. package/dist/assets/index-CLyvpiGc.css +0 -2
  245. package/dist/assets/index-CfnfGw5W.js +0 -20
  246. package/dist/assets/isSameWeek-DWYeNyh8.js +0 -1
  247. package/dist/assets/mermaid-GHXKKRXX-DVLc_uym.js +0 -1
  248. package/dist/assets/metadata-admin-CybaOCdO.js +0 -9
  249. package/dist/assets/nav-selection-Dzm_mA3C.js +0 -1
  250. package/dist/assets/plugin-calendar-CKRBcML7.js +0 -1
  251. package/dist/assets/plugin-charts-DGTJxXCB.js +0 -7
  252. package/dist/assets/plugin-chatbot-DwtwNA-y.js +0 -122
  253. package/dist/assets/plugin-dashboard-C1AYKmGX.js +0 -6
  254. package/dist/assets/plugin-form-CV8ZY04-.js +0 -1
  255. package/dist/assets/plugin-gantt-BRIb2_8G.js +0 -63
  256. package/dist/assets/plugin-grid-C9h7mRVv.js +0 -11
  257. package/dist/assets/plugin-kanban-BcJ0Dhys.js +0 -1
  258. package/dist/assets/plugin-map-D24ZUOUj.js +0 -1
  259. package/dist/assets/plugin-report-BfGintAq.js +0 -59
  260. package/dist/assets/plugin-timeline-CbBRq_qt.js +0 -1
  261. package/dist/assets/plugin-tree-BNX2A5J5.js +0 -1
  262. package/dist/assets/plugin-view-DzWQWYyH.js +0 -1
  263. package/dist/assets/plugins-views-DraK4xz0.js +0 -3
  264. package/dist/assets/src-B8lv0plz.js +0 -18
  265. package/dist/assets/src-DoDvT77T.js +0 -1
  266. package/dist/assets/types-zod-Y2RwUUeJ.js +0 -1
  267. package/dist/assets/ui-components-BTB1NkUW.js +0 -37
  268. package/dist/assets/ui-layout-bZfafwJa.js +0 -1
  269. package/dist/assets/use-book-data-C3eyZJSG.js +0 -1
  270. package/dist/assets/vendor-objectstack-XuWC71M9.js +0 -266
  271. package/dist/assets/vendor-zod-CHLW1iCr.js +0 -64
@@ -1,18 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ui-components-BL3SEdAz.css","./plugin-dashboard-DnNKJB60.css"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,h as n,l as r,p as i,r as a,t as o,u as s,v as c}from"./vendor-react-BggL7APJ.js";import{a as l,p as u,v as d}from"./infrastructure-BHSync5f.js";import{$n as f,Cr as p,E as m,Fr as h,Gr as g,Ln as _,M as v,N as y,Nr as b,O as x,P as S,Ut as C,Y as w,Yn as T,_ as E,ct as D,f as O,g as k,gr as A,gt as j,ht as M,j as N,jr as P,jt as ee,m as te,ot as ne,rn as re,rt as ie,s as F,y as ae,yt as oe}from"./vendor-objectstack-XuWC71M9.js";import{$ as se,$t as ce,An as le,Ar as ue,Br as de,Cr as fe,D as pe,Dn as me,Dr as he,Er as ge,Fn as _e,Fr as ve,Ft as ye,Gn as be,Hr as xe,Ht as Se,In as Ce,Ir as we,It as Te,Kn as Ee,Kt as De,L as Oe,Ln as ke,Lr as Ae,Mn as je,Mr as Me,Mt as Ne,Nn as Pe,Nr as Fe,O as Ie,Ot as Le,Pn as Re,Pr as ze,Qt as Be,Rn as Ve,Rr as He,Tr as Ue,Tt as We,Ur as Ge,Wn as Ke,Wt as qe,Xt as Je,Yt as Ye,Zn as I,Zt as Xe,an as Ze,bi as L,en as Qe,in as $e,jn as et,jr as tt,kn as nt,kr as rt,lt as it,ni as R,nn as at,on as ot,qn as z,rn as st,tn as ct,vi as B,wr as lt,wt as ut,xr as dt,zn as ft,zr as pt}from"./ui-components-BTB1NkUW.js";import{Ct as mt,G as ht,K as gt,Kr as _t,Mt as vt,Nt as yt,Pr as bt,Ri as xt,Rn as St,T as Ct,Tt as wt,Ui as Tt,Wr as Et,Z as Dt,an as Ot,hr as kt,ht as At,it as jt,on as Mt,ot as Nt,qn as Pt,qr as Ft,sn as It,wi as Lt,x as Rt,y as zt,zi as Bt}from"./framework-DcWkeiND.js";import{d as Vt,f as Ht,g as Ut,m as Wt,p as Gt,s as Kt,t as qt,w as Jt}from"./i18n-runtime-CTgAQF4N.js";import{c as Yt}from"./data-adapter-DMbe6Njk.js";import{r as Xt}from"./vendor-ui-utils-DIUdEYii.js";import{t as Zt}from"./vendor-icon-activity-CkniytwY.js";import{t as Qt}from"./vendor-icon-alarm-clock-Cydb_k9Y.js";import{t as $t}from"./vendor-icon-app-window-Ba5lrpTr.js";import{t as en}from"./vendor-icon-arrow-down-Bo-fuW7k.js";import{t as tn}from"./vendor-icon-arrow-right-RqsZZ458.js";import{t as nn}from"./vendor-icon-arrow-up-CzdjEQwQ.js";import{t as rn}from"./vendor-icon-asterisk-Dgld450r.js";import{t as an}from"./vendor-icon-at-sign-B71HJHhC.js";import{t as on}from"./vendor-icon-bell-6t8He8Wt.js";import{t as sn}from"./vendor-icon-book-open-DKPXYwQK.js";import{t as cn}from"./vendor-icon-bot-B9KkwkON.js";import{t as ln}from"./vendor-icon-box-YdZpEqfe.js";import{t as un}from"./vendor-icon-boxes-D-Ov3dJw.js";import{t as dn}from"./vendor-icon-braces-DpucUCEz.js";import{t as fn}from"./vendor-icon-brain-circuit-t2dx4jHG.js";import{t as pn}from"./vendor-icon-bug-BdoY1KRy.js";import{t as mn}from"./vendor-icon-building-2-GgGvlXZt.js";import{t as hn}from"./vendor-icon-calendar-BsoUBIef.js";import{t as gn}from"./vendor-icon-chart-area-D8lW2P2T.js";import{t as _n}from"./vendor-icon-chart-column-DicJIApF.js";import{t as vn}from"./vendor-icon-chart-line-DOxarYni.js";import{t as yn}from"./vendor-icon-chart-no-axes-column-increasing-B83_C-Nw.js";import{t as bn}from"./vendor-icon-chart-no-axes-column-BfpSKd1L.js";import{t as xn}from"./vendor-icon-chart-pie-OmZxepOF.js";import{t as Sn}from"./vendor-icon-chart-scatter-Dw4KAem0.js";import{t as Cn}from"./vendor-icon-check-vpu9Zukp.js";import{t as wn}from"./vendor-icon-chevron-down-BEf_jTEE.js";import{t as Tn}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as En}from"./vendor-icon-chevron-up-C-6o_0je.js";import{t as Dn}from"./vendor-icon-chevrons-down-up-BnOaG_Oo.js";import{t as On}from"./vendor-icon-chevrons-up-down-CbDukqtA.js";import{t as kn}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as An}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as jn}from"./vendor-icon-circle-dot-vUSXdUmv.js";import{t as Mn}from"./vendor-icon-circle-pause-BtwoIgat.js";import{t as Nn}from"./vendor-icon-circle-play-BTJWb_ac.js";import{t as Pn}from"./vendor-icon-circle-stop-DLu8C6yn.js";import{t as Fn}from"./vendor-icon-circle-x-Nkh1Yr7N.js";import{t as In}from"./vendor-icon-circle-5-gUQbxi.js";import{t as Ln}from"./vendor-icon-clipboard-list-Cj86xStJ.js";import{t as Rn}from"./vendor-icon-clock-CTLnah0r.js";import{t as zn}from"./vendor-icon-cloud-off-BcxbO-CE.js";import{t as Bn}from"./vendor-icon-cloud-eTQppJmM.js";import{t as Vn}from"./vendor-icon-code-xml-C9EWHSC8.js";import{t as Hn}from"./vendor-icon-code-C7LFGCxG.js";import{t as Un}from"./vendor-icon-columns-3-DsEBPpuZ.js";import{t as Wn}from"./vendor-icon-compass-CXq7Xl5b.js";import{t as Gn}from"./vendor-icon-copy-B5M-KdZo.js";import{t as Kn}from"./vendor-icon-database-zap-7MfjG9vP.js";import{t as qn}from"./vendor-icon-database-C8JGjSkn.js";import{t as Jn}from"./vendor-icon-diamond-L7C1CJFo.js";import{t as Yn}from"./vendor-icon-donut-NivfVjRq.js";import{t as Xn}from"./vendor-icon-download-C3csYSaD.js";import{t as Zn}from"./vendor-icon-earth-KgMAAeNO.js";import{t as Qn}from"./vendor-icon-ellipsis-BjiiCS3N.js";import{t as $n}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as er}from"./vendor-icon-eye-off-Dy3GIcvl.js";import{t as tr}from"./vendor-icon-eye-C3HaEGOo.js";import{t as nr}from"./vendor-icon-file-braces-D8irpr63.js";import{t as rr}from"./vendor-icon-file-code-corner-CdiQRG_f.js";import{t as ir}from"./vendor-icon-file-pen-l-DSznsL.js";import{t as ar}from"./vendor-icon-file-plus-DMAKv9CD.js";import{t as or}from"./vendor-icon-file-search-G3ut07Ux.js";import{t as sr}from"./vendor-icon-file-text-7BKAVNof.js";import{t as cr}from"./vendor-icon-file-x-BcqWCCDH.js";import{t as lr}from"./vendor-icon-flask-conical-CaTZd1FS.js";import{t as ur}from"./vendor-icon-folder-input-CeRcsOb0.js";import{t as dr}from"./vendor-icon-folder-plus-DX3Wm6yc.js";import{t as fr}from"./vendor-icon-folder-tree-BQ1wv9bt.js";import{t as pr}from"./vendor-icon-folder-GbhohOfU.js";import{t as mr}from"./vendor-icon-folders-CbV1Socn.js";import{t as hr}from"./vendor-icon-funnel-CtmEg9FH.js";import{t as gr}from"./vendor-icon-gauge-CIVyyDJV.js";import{t as _r}from"./vendor-icon-git-branch-CpQpJlYB.js";import{t as vr}from"./vendor-icon-git-compare-arrows-BAqrva2j.js";import{t as yr}from"./vendor-icon-git-fork-DEQeROkn.js";import{t as br}from"./vendor-icon-globe-BaOanPH5.js";import{t as xr}from"./vendor-icon-grip-vertical-B01-ovq0.js";import{t as Sr}from"./vendor-icon-hard-drive-DhSx4UAI.js";import{t as Cr}from"./vendor-icon-hash-Lkwzb5Ny.js";import{t as wr}from"./vendor-icon-image-D2YAsa8l.js";import{t as Tr}from"./vendor-icon-inbox-ByVQ4l4S.js";import{t as Er}from"./vendor-icon-info-DBwRTfSE.js";import{t as Dr}from"./vendor-icon-iteration-ccw-S525B89r.js";import{t as Or}from"./vendor-icon-key-round-hQwGYgPA.js";import{t as kr}from"./vendor-icon-languages-CI3j7ujw.js";import{t as Ar}from"./vendor-icon-layers-DXBEefR1.js";import{t as jr}from"./vendor-icon-layout-dashboard-wba2hvZp.js";import{t as Mr}from"./vendor-icon-layout-grid-B3quJ1GF.js";import{t as Nr}from"./vendor-icon-link-2-EAo0juhN.js";import{t as Pr}from"./vendor-icon-link-RPcdxfUF.js";import{t as Fr}from"./vendor-icon-list-checks-Df4Wgu_H.js";import{t as Ir}from"./vendor-icon-list-TLz-7vfa.js";import{t as V}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as Lr}from"./vendor-icon-lock-B_psRnly.js";import{t as Rr}from"./vendor-icon-mail-BfkRvgNr.js";import{t as zr}from"./vendor-icon-map-pin-BS-hHv53.js";import{t as Br}from"./vendor-icon-maximize-2-C215UtMO.js";import{t as Vr}from"./vendor-icon-menu-9YHQR0RT.js";import{t as Hr}from"./vendor-icon-message-circle-BqNTtTOp.js";import{t as Ur}from"./vendor-icon-message-square-BObk9Jes.js";import{t as Wr}from"./vendor-icon-minus-CMTDFpmk.js";import{t as Gr}from"./vendor-icon-monitor-smartphone-CM4rljlr.js";import{t as Kr}from"./vendor-icon-mouse-pointer-click-WdN96Sza.js";import{t as qr}from"./vendor-icon-octagon-x-DJaJymPi.js";import{t as Jr}from"./vendor-icon-package-open-D7O9qUER.js";import{t as Yr}from"./vendor-icon-package-B6zAlWd3.js";import{t as Xr}from"./vendor-icon-palette-CazWMHVl.js";import{t as Zr}from"./vendor-icon-panel-bottom-DmyC876M.js";import{t as Qr}from"./vendor-icon-panel-left-Cml87N0K.js";import{t as $r}from"./vendor-icon-panel-right-CzpSEi8j.js";import{t as ei}from"./vendor-icon-panel-top-BRy5u3nR.js";import{t as ti}from"./vendor-icon-paperclip-zxZDBuvr.js";import{t as ni}from"./vendor-icon-pencil-CMubUBjW.js";import{t as ri}from"./vendor-icon-phone-H1S8HSi1.js";import{t as ii}from"./vendor-icon-play-BfFoh-7G.js";import{t as ai}from"./vendor-icon-plug-CL1O_4J3.js";import{t as H}from"./vendor-icon-plus-BlfcDDsa.js";import{t as oi}from"./vendor-icon-power-CySrWbJV.js";import{t as si}from"./vendor-icon-puzzle-D0_dPnVP.js";import{t as ci}from"./vendor-icon-rectangle-ellipsis-CAvWLjnI.js";import{t as li}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as ui}from"./vendor-icon-regex-B4Eime8Q.js";import{t as di}from"./vendor-icon-repeat-_fqynyPW.js";import{t as fi}from"./vendor-icon-rocket-9sBBTCrW.js";import{t as pi}from"./vendor-icon-rotate-ccw-clock-DyTX5-aX.js";import{t as mi}from"./vendor-icon-rotate-ccw-lr5YKsxC.js";import{t as hi}from"./vendor-icon-rows-3-Bl0iGPg_.js";import{t as gi}from"./vendor-icon-save-CuavGNuU.js";import{t as _i}from"./vendor-icon-scroll-text-DENjQLzo.js";import{t as vi}from"./vendor-icon-search-B2Uqtp_W.js";import{t as yi}from"./vendor-icon-settings-2-BHIWdy1J.js";import{t as bi}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as xi}from"./vendor-icon-shield-check-CdDzbial.js";import{t as Si}from"./vendor-icon-shield-x-C3Af1iLQ.js";import{t as Ci}from"./vendor-icon-shield-DsNraEeY.js";import{t as wi}from"./vendor-icon-sigma-DSt0XKnk.js";import{t as Ti}from"./vendor-icon-skip-forward-CfRT1Tc0.js";import{t as Ei}from"./vendor-icon-sparkles-RGpJ39Rc.js";import{t as Di}from"./vendor-icon-square-check-big-B4UVzWzR.js";import{t as Oi}from"./vendor-icon-square-D32ztiBM.js";import{t as ki}from"./vendor-icon-star-DfusowFE.js";import{t as Ai}from"./vendor-icon-step-forward-5ECOEIqn.js";import{t as ji}from"./vendor-icon-store-CwiX9Ffi.js";import{t as Mi}from"./vendor-icon-table-2-DMQ6UahM.js";import{t as Ni}from"./vendor-icon-table-CeQhi8NL.js";import{t as Pi}from"./vendor-icon-tag-iKhUiq-2.js";import{t as Fi}from"./vendor-icon-timer-reset-Wg02gBEl.js";import{t as Ii}from"./vendor-icon-timer-DT4EckeV.js";import{t as Li}from"./vendor-icon-trash-BLsWkwB9.js";import{t as Ri}from"./vendor-icon-trending-down-C8VFA2s8.js";import{t as zi}from"./vendor-icon-triangle-alert-D5n0T3q_.js";import{t as Bi}from"./vendor-icon-type-DudTuHpS.js";import{t as Vi}from"./vendor-icon-unplug-BgYklMNm.js";import{t as Hi}from"./vendor-icon-user-check-DDH3nUIb.js";import{t as Ui}from"./vendor-icon-users-Db5uTXC8.js";import{t as Wi}from"./vendor-icon-variable-BIgoZQoz.js";import{t as Gi}from"./vendor-icon-workflow-B9ASq0nN.js";import{t as Ki}from"./vendor-icon-wrench-BX7gnYSA.js";import{t as qi}from"./vendor-icon-x-CcLtgRNL.js";import{t as Ji}from"./vendor-icon-zap-3ulAPCbu.js";import{t as Yi}from"./vendor-icon-zoom-out-IlqZRNIF.js";import{t as Xi}from"./vendor-icon-zoom-in-ShI9ftXk.js";import{n as Zi,o as Qi,s as $i}from"./createDerive-DvA_JGNq.js";import{n as ea}from"./assistantBus-DoNtw1Tf.js";import{a as ta,r as na}from"./ExpressionProvider-DZfMwyMs.js";import{a as ra,f as ia,i as aa,l as oa,p as sa,u as ca}from"./ActionResultDialog-CLdIyOW6.js";import{A as la,C as ua,M as da,N as fa,P as pa,a as ma,i as ha,j as ga,k as _a,x as va}from"./RecordDetailView-DQKydU7X.js";import{a as ya,i as ba,o as xa,r as Sa,t as Ca}from"./appRoute-DbnWDEa1.js";import{f as wa,m as Ta}from"./plugin-chatbot-DwtwNA-y.js";import{T as Ea}from"./vendor-zod-CHLW1iCr.js";import"./app-shell-eager-leaves-CDVclng4.js";import{n as Da}from"./utils-MjUhYVsx.js";import{S as Oa,T as ka,a as Aa,f as ja,l as Ma,n as Na,o as Pa,x as Fa,y as Ia}from"./default-inspector-registry-CpL3fFhl.js";import{a as La,i as Ra,n as za,o as Ba,s as Va}from"./ui-layout-bZfafwJa.js";import{d as Ha}from"./plugin-grid-C9h7mRVv.js";import{t as Ua}from"./InterfaceListPage-BdECC_i3.js";import{t as Wa}from"./getIcon-BEVyC4y3.js";import{A as Ga,B as Ka,C as qa,D as Ja,E as Ya,G as Xa,H as Za,I as Qa,J as $a,K as eo,L as to,M as no,N as ro,O as io,P as ao,Q as oo,R as so,S as co,T as lo,U as uo,V as fo,W as po,X as mo,Y as ho,Z as go,_ as _o,a as vo,b as yo,c as bo,et as xo,g as So,h as Co,i as wo,j as To,k as Eo,m as Do,o as Oo,p as ko,q as Ao,r as jo,u as Mo,v as No,w as Po,x as Fo,y as Io}from"./SchemaForm-C8X1ve4p.js";import{c as Lo,d as Ro,f as zo,g as Bo,i as U,n as Vo,r as W,t as Ho}from"./i18n-CEKxYdmD.js";import{C as G,S as Uo,_ as Wo,a as Go,b as Ko,c as qo,d as K,f as Jo,g as q,h as Yo,i as Xo,l as Zo,m as Qo,n as $o,o as es,p as ts,r as ns,s as rs,t as is,u as as,v as J,x as os,y as ss}from"./ReportDefaultInspector-DdsQAkd7.js";import{r as cs,t as ls}from"./componentRegistry-DlSbJucP.js";var Y=e(c(),1),X=o(),us={info:(e,t)=>Xt.info(e,t),success:(e,t)=>Xt.success(e,t),warning:(e,t)=>Xt.warning(e,t),error:(e,t)=>Xt.error(e,t)};function ds(e,t){let n=us[e.severity]??us.info,r=e.actions?.[0],i=qe(e.icon)?(0,X.jsx)(Se,{name:e.icon,className:`h-4 w-4`}):void 0,a=Dt(e,t),o=a?it[a]:void 0;n(e.title,{description:e.message,duration:e.duration===0?1/0:e.duration,dismissible:e.dismissible,...i?{icon:i}:{},...o?{position:o}:{},...r?{action:{label:r.label,onClick:r.onClick}}:{}})}function fs(){let e={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},t=e.VITE_AI_BASE_URL;return t?t.replace(/\/$/,``):`${(e.VITE_SERVER_URL??``).replace(/\/$/,``)}/api/v1/ai`}function ps(){let{agents:e,isLoading:t}=wa({apiBase:fs()}),n=(0,Y.useRef)(!1);t&&(n.current=!0);let r=e.length>0;return{enabled:r,isLoading:r?!1:t||!n.current}}var ms=`flow-palette-recents`,hs=ms,gs=5;function _s(){try{if(typeof localStorage>`u`)return[];let e=localStorage.getItem(hs);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).slice(0,gs):[]}catch{return[]}}function vs(e){if(e)try{if(typeof localStorage>`u`)return;let t=[e,..._s().filter(t=>t!==e)].slice(0,gs);localStorage.setItem(hs,JSON.stringify(t))}catch{}}var ys=ms;function bs(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).slice(0,5):[]}function xs(e){try{let t=localStorage.getItem(ca(ys,e));return t?bs(JSON.parse(t)):[]}catch{return[]}}function Ss(e,t){try{localStorage.setItem(ca(ys,t),JSON.stringify(e))}catch{}}function Cs(e,t){if(!t)return{list:e,didMigrate:!1};let n;try{n=localStorage.getItem(ys)}catch{return{list:e,didMigrate:!1}}if(n==null)return{list:e,didMigrate:!1};let r=[];try{r=bs(JSON.parse(n))}catch{}try{localStorage.removeItem(ys)}catch{}if(r.length===0)return{list:e,didMigrate:!0};let i=[...e];for(let e of r)i.includes(e)||i.push(e);return{list:i.slice(0,5),didMigrate:!0}}var ws=(0,Y.createContext)(null);function Ts({children:e}){let{user:t}=u(),n=t?.id??null,r=sa(`flowPaletteRecents`),[i,a]=(0,Y.useState)(()=>xs(n));ia(ca(ys,n),e=>{a(bs(e))});let o=(0,Y.useMemo)(()=>oa(async e=>{r&&await r.save(e)},500),[r]);(0,Y.useEffect)(()=>()=>void o.flush(),[o]);let s=(0,Y.useCallback)(e=>{Ss(e,n),r&&o.schedule(e)},[n,r,o]),c=(0,Y.useRef)(0);(0,Y.useEffect)(()=>{let e=++c.current,t=!1;return(async()=>{let i=xs(n),s=r?bs(await r.load().catch(()=>[])):[];if(t||e!==c.current)return;let{list:l,didMigrate:u}=Cs(s.length?s:i,n);a(l),Ss(l,n),u&&r&&o.schedule(l)})(),()=>{t=!0}},[r,n,o]);let l=(0,Y.useCallback)(e=>{e&&a(t=>{let n=[e,...t.filter(t=>t!==e)].slice(0,5);return s(n),n})},[s]),d=(0,Y.useMemo)(()=>({recents:i,recordRecent:l}),[i,l]);return(0,X.jsx)(ws.Provider,{value:d,children:e})}function Es(){let e=(0,Y.useContext)(ws),[t,n]=(0,Y.useState)(()=>_s()),r=(0,Y.useCallback)(e=>{vs(e),n(_s())},[]);return e||{recents:t,recordRecent:r}}function Ds(){if(typeof globalThis>`u`)return null;let e=globalThis.Notification;return typeof e==`function`?e:null}function Os(){return Ds()!==null}function ks(){let e=Ds();if(!e)return`unsupported`;let t=e.permission;return t===`granted`||t===`denied`?t:`default`}async function As(){let e=Ds();if(!e)return`unsupported`;if(e.permission===`granted`||e.permission===`denied`)return e.permission;if(typeof e.requestPermission!=`function`)return ks();try{let t=await e.requestPermission();return t===`granted`||t===`denied`?t:`default`}catch{return ks()}}function js(e){let t=Ds();if(!t||t.permission!==`granted`)return!1;try{let n=new t(e.title,{...e.body?{body:e.body}:{},...e.tag?{tag:e.tag}:{}});return n.onclick=()=>{globalThis.focus?.(),e.onActivate?.(),n.close?.()},!0}catch{return!1}}var Ms=`objectui.notificationPreferences`,Ns=Object.freeze({toast:!0,desktop:!1});function Ps(e){let t=e;return{toast:typeof t?.toast==`boolean`?t.toast:Ns.toast,desktop:typeof t?.desktop==`boolean`?t.desktop:Ns.desktop}}function Fs(e){if(typeof window>`u`)return Ns;try{let t=window.localStorage.getItem(ca(Ms,e));return Ps(t?JSON.parse(t):null)}catch{return Ns}}function Is(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(ca(Ms,e),JSON.stringify(t))}catch{}}var Ls=new Set,Rs=null;function zs(e,t){return(!Rs||Rs.key!==e)&&(Rs={key:e,value:Fs(t)}),Rs.value}function Bs(e,t){Rs={key:e,value:t};for(let e of[...Ls])e()}function Vs(e){return Ls.add(e),()=>{Ls.delete(e)}}function Hs(){let{user:e}=u(),t=e?.id??null,n=ca(Ms,t),r=(0,Y.useSyncExternalStore)(Vs,()=>zs(n,t),()=>zs(n,t));ia(n,e=>{Bs(n,Ps(e))});let i=ks(),a=Os(),o=(0,Y.useCallback)(e=>{Is(t,e),Bs(ca(Ms,t),e)},[t]),s=(0,Y.useCallback)(e=>{o({...Fs(t),toast:e})},[o,t]),c=(0,Y.useCallback)(async()=>{let e=await As();return o({...Fs(t),desktop:e===`granted`}),e},[o,t]),l=(0,Y.useCallback)(()=>{o({...Fs(t),desktop:!1})},[o,t]);return(0,Y.useMemo)(()=>({preferences:r,desktopPermission:i,desktopSupported:a,setToastEnabled:s,enableDesktop:c,disableDesktop:l}),[r,i,a,s,c,l])}function Us(e,t){if(!e)return``;let n=new Date(e).getTime();return Number.isNaN(n)?``:Vt(n,t)}function Ws(e){let t=[],n=new Map;for(let r of e){let e=(r.type??``).trim(),i=(r.title??``).trim(),a=e||i?`${e}\u0000${i}`:`__row__${r.id}`,o=n.get(a);o||(o={key:a,type:r.type,title:r.title,items:[],unreadCount:0,latestCreatedAt:r.created_at},n.set(a,o),t.push(o)),o.items.push(r),r.is_read||(o.unreadCount+=1),r.created_at&&(!o.latestCreatedAt||r.created_at>o.latestCreatedAt)&&(o.latestCreatedAt=r.created_at)}return t}function Gs({notifications:e,unreadCount:n,pendingApprovalsCount:r,activities:a,onMarkAllRead:o,onMarkRead:s,onMarkManyRead:c}){let{t:l}=Jt(),u=qt(),d=t(),f=i(),{currentAppName:p}=ua(),{apps:m}=gt(),[h,g]=(0,Y.useState)(!1),[_,v]=(0,Y.useState)(`notifications`),[y,b]=(0,Y.useState)(`unread`),[x,S]=(0,Y.useState)(()=>new Set),C=(0,Y.useMemo)(()=>Ws(e),[e]).reduce((e,t)=>e+ +(t.unreadCount>0),0),w=C+r,T=l(`sidebar.inboxAriaLabel`,{defaultValue:`Open inbox`}),E=(0,Y.useRef)(null),[D,O]=(0,Y.useState)(!1);(0,Y.useEffect)(()=>{let e=E.current;if(e!==null&&w>e){O(!0);let e=window.setTimeout(()=>O(!1),1200);return()=>window.clearTimeout(e)}E.current=w},[w]),(0,Y.useEffect)(()=>{D||(E.current=w)},[D,w]);let k=()=>{g(!1);let e=p??f.appName;d(e?`/apps/${e}/system/approvals`:`/apps/setup/system/approvals`)},A=ya(m,p??f.appName),j=()=>{g(!1),d(`/apps/${A}/sys_inbox_message?view=mine`)},M=()=>{g(!1),d(`/apps/${A}/sys_activity`)},N=e=>{s(e.id);let t=xa(e.action_url,A);if(!t){j();return}if(g(!1),t.kind===`external`){window.open(t.url,`_blank`,`noopener,noreferrer`);return}d(t.path)},P=e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ee=e=>{let t=e.items.filter(e=>!e.is_read).map(e=>e.id);t.length!==0&&(c?c(t):t.forEach(s))},te=(e,t)=>(0,X.jsx)(`button`,{type:`button`,onClick:()=>N(e),className:`w-full text-left ${t?`pl-9 pr-3 py-2`:`px-3 py-2.5`} hover:bg-accent transition-colors duration-150 ${e.is_read?``:`bg-accent/40`}`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(`span`,{className:`mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-primary transition-opacity duration-200 ${e.is_read?`opacity-0`:`opacity-100`}`,"aria-hidden":!0}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`div`,{className:`text-sm font-medium leading-tight truncate`,children:e.title}),e.body&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2 mt-0.5`,children:e.body}),(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:Us(e.created_at,u)})]})]})});return(0,X.jsxs)(Ke,{open:h,onOpenChange:g,children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsxs)(B,{variant:`ghost`,size:`icon`,className:`h-8 w-8 relative shrink-0 ${D?`motion-safe:animate-bounce`:``}`,"aria-label":T,title:l(`sidebar.inbox`,{defaultValue:`Inbox`}),children:[(0,X.jsx)(on,{className:`h-4 w-4`}),w>0&&(0,X.jsx)(`span`,{"data-testid":`inbox-bell-badge`,className:`absolute -top-0.5 -right-0.5 h-4 min-w-[16px] rounded-full bg-red-500 text-[10px] leading-4 text-white text-center px-1 motion-safe:animate-in motion-safe:zoom-in-50 motion-safe:fade-in-0 motion-safe:duration-200`,children:w>9?`9+`:w},w)]})}),(0,X.jsxs)(be,{align:`end`,sideOffset:8,className:`w-96 p-0`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between px-3 pt-3 pb-1`,children:[(0,X.jsx)(`div`,{className:`text-sm font-semibold`,children:l(`sidebar.inbox`,{defaultValue:`Inbox`})}),_===`notifications`&&n>0&&(0,X.jsx)(`button`,{type:`button`,onClick:o,className:`text-xs text-muted-foreground hover:text-foreground`,children:l(`notifications.markAllRead`,{defaultValue:`Mark all read`})})]}),w>0&&(0,X.jsxs)(`div`,{"data-testid":`inbox-badge-breakdown`,className:`flex flex-wrap items-center gap-x-2 gap-y-1 px-3 pb-2 text-xs text-muted-foreground`,children:[(0,X.jsx)(`span`,{"data-testid":`inbox-badge-breakdown-total`,className:`font-medium text-foreground`,children:l(`notifications.badgeTotal`,{defaultValue:`{{total}} total`,total:w})}),(0,X.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,X.jsx)(`span`,{"data-testid":`inbox-badge-breakdown-notifications`,children:l(`notifications.badgeNotifications`,{defaultValue:`{{unread}} notifications`,unread:C})}),(0,X.jsx)(`span`,{"aria-hidden":!0,children:`+`}),(0,X.jsx)(`span`,{"data-testid":`inbox-badge-breakdown-approvals`,children:l(`notifications.badgeApprovals`,{defaultValue:`{{approvals}} pending approvals`,approvals:r})})]}),(0,X.jsxs)(Je,{value:_,onValueChange:e=>v(e),className:`w-full`,children:[(0,X.jsxs)(Be,{className:`w-full justify-start rounded-none border-b bg-transparent px-1 h-9`,children:[(0,X.jsxs)(ce,{value:`notifications`,className:`text-xs gap-1.5 data-[state=active]:bg-transparent`,children:[(0,X.jsx)(on,{className:`h-3.5 w-3.5`}),l(`sidebar.notifications`,{defaultValue:`Notifications`}),C>0&&(0,X.jsx)(`span`,{className:`ml-0.5 inline-flex h-4 min-w-[16px] items-center justify-center rounded-full bg-red-500 px-1 text-[10px] text-white motion-safe:animate-in motion-safe:zoom-in-75 motion-safe:duration-200`,children:C>9?`9+`:C},`notif-${C}`)]}),(0,X.jsxs)(ce,{value:`approvals`,className:`text-xs gap-1.5 data-[state=active]:bg-transparent`,children:[(0,X.jsx)(Di,{className:`h-3.5 w-3.5`}),l(`sidebar.approvals`,{defaultValue:`Approvals`}),r>0&&(0,X.jsx)(`span`,{className:`ml-0.5 inline-flex h-4 min-w-[16px] items-center justify-center rounded-full bg-amber-500 px-1 text-[10px] text-white motion-safe:animate-in motion-safe:zoom-in-75 motion-safe:duration-200`,children:r>9?`9+`:r},`appr-${r}`)]}),(0,X.jsxs)(ce,{value:`activity`,className:`text-xs gap-1.5 data-[state=active]:bg-transparent`,children:[(0,X.jsx)(Zt,{className:`h-3.5 w-3.5`}),l(`sidebar.activityFeed`,{defaultValue:`Activity feed`})]})]}),(0,X.jsxs)(Xe,{value:`notifications`,className:`m-0 max-h-80 overflow-auto`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1 border-b px-2 py-1.5`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>b(`unread`),className:`text-xs px-2 py-1 rounded-md transition-colors ${y===`unread`?`bg-accent text-foreground font-medium`:`text-muted-foreground hover:text-foreground`}`,children:[l(`notifications.filterUnread`,{defaultValue:`Unread`}),C>0&&(0,X.jsx)(`span`,{className:`ml-1 text-[10px] opacity-70`,children:C})]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>b(`all`),className:`text-xs px-2 py-1 rounded-md transition-colors ${y===`all`?`bg-accent text-foreground font-medium`:`text-muted-foreground hover:text-foreground`}`,children:l(`notifications.filterAll`,{defaultValue:`All`})})]}),(()=>{let t=y===`unread`?e.filter(e=>!e.is_read):e;if(t.length===0)return(0,X.jsx)(`div`,{className:`px-3 py-8 text-sm text-muted-foreground text-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-300`,children:y===`unread`?l(`notifications.emptyUnread`,{defaultValue:`You're all caught up`}):l(`notifications.empty`,{defaultValue:`No notifications`})});let n=Ws(t);return(0,X.jsx)(`ul`,{className:`divide-y`,children:n.map((e,t)=>{let n={className:`motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-top-1 motion-safe:duration-200`,style:{animationDelay:`${Math.min(t,6)*20}ms`}};if(e.items.length===1)return(0,X.jsx)(`li`,{...n,children:te(e.items[0],!1)},e.key);let r=x.has(e.key);return(0,X.jsxs)(`li`,{...n,children:[(0,X.jsxs)(`div`,{className:`flex items-stretch`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>P(e.key),"aria-expanded":r,className:`flex-1 min-w-0 text-left px-3 py-2.5 hover:bg-accent transition-colors duration-150 ${e.unreadCount>0?`bg-accent/40`:``}`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(`span`,{className:`mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-primary transition-opacity duration-200 ${e.unreadCount>0?`opacity-100`:`opacity-0`}`,"aria-hidden":!0}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium leading-tight truncate`,children:e.title}),(0,X.jsxs)(`span`,{className:`shrink-0 rounded-full bg-muted px-1.5 text-[10px] font-medium leading-4 text-muted-foreground`,"aria-label":l(`notifications.groupCount`,{defaultValue:`{{count}} notifications`,count:e.items.length}),children:[`×`,e.items.length]})]}),e.items[0].body&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-1 mt-0.5`,children:e.items[0].body}),(0,X.jsxs)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:[Us(e.latestCreatedAt,u),e.unreadCount>0&&(0,X.jsxs)(`span`,{className:`ml-1`,children:[`·`,` `,l(`notifications.groupUnread`,{defaultValue:`{{count}} unread`,count:e.unreadCount})]})]})]}),(0,X.jsx)(Tn,{className:`mt-1 h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200 ${r?`rotate-90`:``}`,"aria-hidden":!0})]})}),e.unreadCount>0&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>ee(e),className:`shrink-0 px-2 text-[10px] text-muted-foreground hover:text-foreground hover:bg-accent transition-colors border-l`,title:l(`notifications.groupMarkReadTitle`,{defaultValue:`Mark all of this type read`}),children:l(`notifications.groupMarkRead`,{defaultValue:`Mark read`})})]}),r&&(0,X.jsx)(`ul`,{className:`divide-y border-t bg-muted/20`,children:e.items.map(e=>(0,X.jsx)(`li`,{children:te(e,!0)},e.id))})]},e.key)})})})(),(0,X.jsx)(`div`,{className:`border-t px-3 py-2 text-center`,children:(0,X.jsx)(`button`,{type:`button`,onClick:j,className:`text-xs text-primary hover:underline`,children:l(`notifications.viewAll`,{defaultValue:`View all notifications`})})})]}),(0,X.jsx)(Xe,{value:`approvals`,className:`m-0 max-h-80 overflow-auto`,children:(0,X.jsx)(`div`,{className:`px-3 py-6 text-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-300`,children:r>0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Di,{className:`mx-auto h-6 w-6 text-amber-500 motion-safe:animate-in motion-safe:zoom-in-50 motion-safe:duration-300`}),(0,X.jsx)(`div`,{className:`mt-2 text-sm font-medium`,children:l(`notifications.approvalsPending`,{defaultValue:`{{count}} pending approvals`,count:r})}),(0,X.jsx)(B,{size:`sm`,className:`mt-3`,onClick:k,children:l(`notifications.viewApprovals`,{defaultValue:`View approvals`})})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:l(`notifications.noPendingApprovals`,{defaultValue:`No pending approvals`})}),(0,X.jsx)(`button`,{type:`button`,onClick:k,className:`mt-2 text-xs text-primary hover:underline`,children:l(`notifications.openApprovalsInbox`,{defaultValue:`Open Approvals Inbox`})})]})})}),(0,X.jsxs)(Xe,{value:`activity`,className:`m-0 max-h-80 overflow-auto`,children:[a.length===0?(0,X.jsx)(`div`,{className:`px-3 py-8 text-sm text-muted-foreground text-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-300`,children:l(`layout.activityFeed.empty`,{defaultValue:`No recent activity`})}):(0,X.jsx)(`ul`,{className:`divide-y`,children:a.slice(0,20).map((e,t)=>(0,X.jsxs)(`li`,{className:`px-3 py-2.5 motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-top-1 motion-safe:duration-200`,style:{animationDelay:`${Math.min(t,6)*20}ms`},children:[(0,X.jsxs)(`div`,{className:`text-sm leading-tight truncate`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:e.user}),` `,(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:e.description})]}),(0,X.jsxs)(`div`,{className:`text-[10px] text-muted-foreground mt-0.5`,children:[Us(e.timestamp,u),` · `,e.objectName]})]},e.id))}),(0,X.jsx)(`div`,{className:`border-t px-3 py-2 text-center`,children:(0,X.jsx)(`button`,{type:`button`,onClick:M,className:`text-xs text-primary hover:underline`,children:l(`layout.activityFeed.viewAll`,{defaultValue:`View all activity`})})})]})]})]})]})}function Ks(e){return e===void 0||e===`ready`||e===`error`}function qs(e,t,n){return t!==void 0&&t!==`ready`||n.length===0?`unknown`:n.some(t=>t?.name===e)?`present`:`absent`}function Js(e){let{getItemsByType:t,getTypeStatus:n}=gt(),r=t(`object`),i=n?.(`object`);return{presence:qs(e,i,r),settled:Ks(i)}}var Ys={created:`create`,updated:`update`,deleted:`delete`,assigned:`update`,shared:`update`,commented:`comment`,mentioned:`comment`,system:`system`,completed:`system`,scheduled:`system`,login:`system`,logout:`system`},Xs=`system`,Zs=new Set;function Qs(e){Zs.has(e)||(Zs.add(e),console.warn(`[app-shell] rendered a sys_activity row with type "${e}" through the generic "${Xs}" presentation: no activity item type is mapped for it. \`sys_activity.type\` is author-extensible (objectstack#11507, ruled 2026-08-24) and is not validated on write, so a producer can store a value the platform never declared — the row is shown rather than dropped, and it no longer claims to be an update. Map it in ACTIVITY_TYPE_TO_ACTIVITY_ITEM_TYPE (@object-ui/app-shell, layout/activityItemType.ts) to give it its own presentation.`))}function $s(e){return(Object.prototype.hasOwnProperty.call(Ys,e)?Ys[e]:void 0)||(Qs(e),Xs)}function ec(e){let t=e.timestamp;return String(!t||t===`NOW()`||Number.isNaN(Date.parse(String(t)))?e.created_at??``:t)}function tc(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.type!=`string`||String(t.summary??``).trim().length===0?null:{id:String(t.id),type:$s(t.type),objectName:String(t.object_name??``),recordId:t.record_id==null?void 0:String(t.record_id),user:String(t.actor_name??``),description:String(t.summary??``),timestamp:ec(t)}}var nc=3e4,rc=1e4,ic=6e4,ac=12e4,oc=3e4,sc=6e4,cc=[],lc=[],uc=class{empty;pollMs;snapshot;key=null;listeners=new Set;runner=null;consumers=0;inFlight=!1;unavailable=!1;retiredAt=0;probesLeft=3;fetchedAt=0;timer=null;backoffMs;visibilityBound=!1;constructor(e,t){this.empty=e,this.pollMs=t,this.snapshot={value:e,status:`idle`},this.idleSnapshot=this.snapshot,this.backoffMs=t}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.snapshot;idleSnapshot;attach(e,t){return e!==this.key&&(this.key=e,this.unavailable=!1,this.retiredAt=0,this.probesLeft=3,this.fetchedAt=0,this.backoffMs=this.pollMs,this.publish(this.empty,`idle`)),this.runner=t,this.consumers+=1,this.consumers===1&&(this.bindVisibility(),this.schedule()),this.refresh(),()=>{this.consumers=Math.max(0,this.consumers-1),this.consumers===0&&(this.stopPolling(),this.unbindVisibility())}}async refresh(e=!1){let t=this.runner;if(!t||this.inFlight)return;let n=this.unavailable;if(n&&!this.mayProbe()||!e&&!n&&this.fetchedAt&&Date.now()-this.fetchedAt<oc)return;this.inFlight=!0,this.snapshot.status===`idle`&&this.publish(this.snapshot.value,`loading`);let r=!1;try{let e=await t({markUnavailable:()=>n?this.spendProbe():this.retire(),markFailed:()=>{r=!0}});e===void 0?r&&(n?this.spendProbe():this.fail()):(this.unavailable=!1,this.probesLeft=3,this.fetchedAt=Date.now(),this.backoffMs=this.pollMs,this.publish(e,`ready`))}catch{n?this.spendProbe():this.fail()}finally{this.inFlight=!1,this.consumers>0&&this.schedule()}}mayProbe(){return this.probesLeft>0&&Date.now()-this.retiredAt>=6e4}retire(){this.unavailable=!0,this.retiredAt=Date.now(),this.fetchedAt=Date.now(),this.stopPolling(),this.publish(this.snapshot.value,`ready`)}spendProbe(){this.probesLeft=Math.max(0,this.probesLeft-1),this.retiredAt=Date.now(),this.fetchedAt=Date.now(),this.stopPolling()}fail(){this.backoffMs=Math.min(Math.max(this.backoffMs,this.pollMs)*2,ac),this.publish(this.snapshot.value,`error`)}schedule(){if(this.timer)return;if(this.unavailable){if(this.probesLeft<=0)return;this.timer=setTimeout(()=>{this.timer=null,this.refresh(!0)},sc);return}if(this.pollMs<=0)return;let e=typeof document<`u`&&document.hidden?Math.max(ic,this.backoffMs):this.backoffMs;this.timer=setTimeout(()=>{this.timer=null,this.refresh(!0)},e)}onVisibilityChange=()=>{typeof document>`u`||document.hidden||this.consumers!==0&&(!this.unavailable||this.mayProbe())&&(this.stopPolling(),this.unavailable||(this.backoffMs=this.pollMs),this.refresh(!0))};bindVisibility(){this.pollMs<=0||this.visibilityBound||typeof document>`u`||(document.addEventListener(`visibilitychange`,this.onVisibilityChange),this.visibilityBound=!0)}unbindVisibility(){!this.visibilityBound||typeof document>`u`||(document.removeEventListener(`visibilitychange`,this.onVisibilityChange),this.visibilityBound=!1)}stopPolling(){this.timer&&=(clearTimeout(this.timer),null)}publish(e,t){if(!(Object.is(e,this.snapshot.value)&&t===this.snapshot.status)){this.snapshot={value:e,status:t};for(let e of[...this.listeners])e()}}reset(){this.stopPolling(),this.unbindVisibility(),this.snapshot={value:this.empty,status:`idle`},this.key=null,this.runner=null,this.consumers=0,this.inFlight=!1,this.unavailable=!1,this.retiredAt=0,this.probesLeft=3,this.fetchedAt=0,this.backoffMs=this.pollMs}};function dc(e,t,n){let r=(0,Y.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot),i=(0,Y.useRef)(n);return(0,Y.useEffect)(()=>{i.current=n}),(0,Y.useEffect)(()=>{if(t)return e.attach(t,e=>i.current(e))},[e,t]),t?r:e.idleSnapshot}var fc=new uc(0,nc);function pc(e){let t=e,n=[];t?.id&&n.push(t.id),t?.email&&n.push(t.email);for(let e of t?.positions??[])e&&n.push(`role:${e}`);return n}function mc(){let{user:e}=u(),t=pc(e);return dc(fc,e?.id&&t.length>0?t.join(`,`):null,async({markUnavailable:e,markFailed:n})=>{let r=``.replace(/\/$/,``),i=new URLSearchParams({status:`pending`,approverId:t.join(`,`)}),a=await fetch(`${r}/api/v1/approvals/requests?${i}`,{credentials:`include`,headers:ma()});if(a.status===404){e();return}if(!a.ok){n();return}let o=await a.json().catch(()=>null),s=new Set;for(let e of o?.data||[])s.add(e.id);return s.size}).value}var hc=new uc(cc,0),gc=new WeakMap,_c=0;function vc(e){if(!e||typeof e!=`object`)return null;let t=gc.get(e);return t||(t=`adapter@${++_c}`,gc.set(e,t)),t}function yc(e){return e.map(e=>tc(e)).filter(e=>e!==null)}function bc(e){let t=e;return t?.httpStatus===404||t?.status===404||Et(e,`OBJECT_NOT_FOUND`)}function xc(){let e=ht(),t=Js(`sys_activity`);return dc(hc,t.settled?vc(e):null,async({markUnavailable:n,markFailed:r})=>{if(!e)return;if(t.presence===`absent`){n();return}let i=await Promise.resolve(e.find(`sys_activity`,{$orderby:{timestamp:`desc`},$top:20})).catch(e=>(bc(e)?n():r(),null));if(i)return yc(Array.isArray(i.data)?i.data:[])}).value}function Sc(e){let t=xc();return(0,Y.useMemo)(()=>t.filter(e=>{let t=e.user.trim();return t.length>0&&t.toLowerCase()!==`system`}).slice(0,e),[t,e])}var Cc=new uc(lc,rc),wc=new Set([`read`,`clicked`,`dismissed`]);function Tc(e,t){let n=new Map;for(let e of t){let t=e,r=t?.notification_id==null?``:String(t.notification_id);if(!r)continue;let i=String(t?.state??``),a=n.get(r);(!a||!wc.has(a.state)&&wc.has(i))&&n.set(r,{id:String(t?.id),state:i})}return e.map(e=>{let t=e,r=t?.notification_id==null?null:String(t.notification_id),i=r?n.get(r):void 0;return{id:String(t.id),notification_id:r,receipt_id:i?.id??null,type:t.topic??`notification`,title:t.title??``,body:t.body_md??null,action_url:t.action_url??null,is_read:i?wc.has(i.state):!1,created_at:t.created_at,actor_id:typeof t.actor_id==`string`?t.actor_id:null}})}function Ec(e){let t=new Set;for(let n of e){let e=n?.notification_id;if(e==null)continue;let r=String(e);r&&t.add(r)}return[...t]}function Dc(){let e=ht(),{user:t}=u(),n=t?.id,r=vc(e);return dc(Cc,r&&n?`${r}:${n}`:null,async({markUnavailable:t,markFailed:r})=>{if(e&&n)try{let t=await Promise.resolve(e.find(`sys_inbox_message`,{$filter:{user_id:n},$orderby:{created_at:`desc`},$top:20})),r=Array.isArray(t?.data)?t.data:[],i=Ec(r),a=i.length===0?{data:[]}:await Promise.resolve(e.find(`sys_notification_receipt`,{$filter:{user_id:n,channel:`inbox`,notification_id:{$in:i}},$top:i.length})).catch(()=>({data:[]}));return Tc(r,Array.isArray(a?.data)?a.data:[])}catch(e){bc(e)?t():r();return}})}var Oc=Object.freeze([]),kc={key:null,seen:[]};function Ac(e,t,n=500){let r=new Set(t),i=[...e.filter(e=>!r.has(e)),...t];return i.length>n?i.slice(i.length-n):i}function jc(e,t){let n=t.map(e=>e.id);if(e!==kc.key)return kc.key=e,kc.seen=Ac([],n),Oc;let r=new Set(kc.seen),i=t.filter(t=>!r.has(t.id)&&!t.is_read&&!Mc(t,e));return kc.seen=Ac(kc.seen,n),i.length>0?i:Oc}function Mc(e,t){return typeof e.actor_id==`string`&&e.actor_id===t}function Nc(e){return e.length===0?null:{target:e[0],count:e.length,groups:Ws([...e])}}function Pc({notifications:e,status:n,markRead:r}){let{t:a}=Jt(),{user:o}=u(),s=o?.id??null,c=t(),l=i(),{currentAppName:d}=ua(),{apps:f}=gt(),p=Hs(),m=ya(f,d??l.appName),h=(0,Y.useRef)({markRead:r,navigate:c,hostAppSegment:m,preferences:p,t:a});(0,Y.useEffect)(()=>{h.current={markRead:r,navigate:c,hostAppSegment:m,preferences:p,t:a}});let g=(0,Y.useCallback)(e=>{let{markRead:t,navigate:n,hostAppSegment:r}=h.current;t(e.id);let i=xa(e.action_url,r);if(!i){n(`/apps/${r}/sys_inbox_message?view=mine`);return}if(i.kind===`external`){window.open(i.url,`_blank`,`noopener,noreferrer`);return}n(i.path)},[]);(0,Y.useEffect)(()=>{if(n!==`ready`||!s)return;let t=Nc(jc(s,e));if(!t)return;let{preferences:r,t:i}=h.current,a=t.groups.length===1,o=t.groups[0],c=a?o.title||o.type:i(`notifications.arrivalMany`,{count:t.count,defaultValue:`{{count}} new messages`}),l=a?o.items.length>1?i(`notifications.arrivalRepeats`,{count:o.items.length,defaultValue:`{{count}} new messages on this topic`}):(t.target.body??void 0)||void 0:t.target.title;if(typeof document<`u`&&document.visibilityState===`visible`){if(!r.preferences.toast)return;ds({id:`inbox-arrival-${t.target.id}`,title:c,...l?{message:l}:{},severity:`info`,createdAt:new Date,icon:`Bell`,actions:[{label:i(`notifications.arrivalOpen`,{defaultValue:`View`}),onClick:()=>g(t.target)}]});return}r.preferences.desktop&&r.desktopPermission===`granted`&&js({title:c,...l?{body:l}:{},tag:`objectui-inbox-${o.type||o.key}`,onActivate:()=>g(t.target)})},[e,n,s,g])}var Fc=new Set;function Ic(){let{value:e,status:t}=Dc(),[n,r]=(0,Y.useState)(Fc),i=(0,Y.useMemo)(()=>n.size===0?e:e.map(e=>n.has(e.id)?{...e,is_read:!0}:e),[e,n]),a=mc(),o=i.reduce((e,t)=>e+ +!t.is_read,0),s=(0,Y.useCallback)(async(e,t)=>{let n=``.replace(/\/$/,``);await fetch(`${n}/api/v1/notifications/${e}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,...ma()},body:JSON.stringify(t?{ids:t}:{})})},[]),c=(0,Y.useCallback)(e=>{e.length!==0&&r(t=>{let n=new Set(t);for(let t of e)n.add(t);return n})},[]),l=(0,Y.useCallback)(async e=>{let t=i.find(t=>t.id===e);if(c([e]),t?.notification_id)try{await s(`read`,[t.notification_id])}catch{}},[i,c,s]),u=(0,Y.useCallback)(async()=>{if(i.filter(e=>!e.is_read).length){c(i.map(e=>e.id));try{await s(`read/all`)}catch{}}},[i,c,s]),d=(0,Y.useCallback)(async e=>{let t=new Set(e),n=i.filter(e=>t.has(e.id)&&!e.is_read).map(e=>e.notification_id).filter(e=>!!e);if(c(e),n.length)try{await s(`read`,n)}catch{}},[i,c,s]);return Pc({notifications:i,status:t,markRead:l}),{notifications:i,status:t,unreadCount:o,pendingApprovalsCount:a,markAllRead:u,markRead:l,markManyRead:d}}function Lc(){let{execute:e}=jt(),{getItem:t}=gt();return(0,Y.useCallback)(n=>{(async()=>{let r=n.actionDef,i=r?.actionName;if(!i){console.warn(`[nav] action item has no actionDef.actionName — nothing to dispatch`,n?.id),Xt.error(`This menu item is not configured to run an action.`);return}let a;try{a=await t(`action`,i)}catch(e){console.warn(`[nav] failed to resolve action '${i}'`,e),Xt.error(`Could not load action "${i}".`);return}if(!a){console.warn(`[nav] action '${i}' is not defined — nav item ${n?.id} cannot run`),Xt.error(`Action "${i}" is not defined.`);return}try{let{params:t,...n}=a,i={...n},o=Array.isArray(t)?t:[];o.length>0&&(i.actionParams=o),r?.params&&typeof r.params==`object`&&(i.params={...r.params}),await e(i)}catch(e){console.warn(`[nav] action '${i}' failed`,e),Xt.error(`Action "${i}" failed to run.`)}})()},[e,t])}function Rc(e,t){let n=new Set(t.filter(e=>typeof e==`string`));for(let t=1;t<1e4;t++){let r=`${e}_${t}`;if(!n.has(r))return r}return`${e}_${Date.now()}`}function zc(e,t){if(!t)return!0;let n=t.toLowerCase();return e.value.toLowerCase().includes(n)||e.label.toLowerCase().includes(n)||(e.group?.toLowerCase().includes(n)??!1)}function Bc({label:e,ariaLabel:t,id:n,value:r,onCommit:i,options:a,placeholder:o,searchPlaceholder:s,emptyText:c,disabled:l,loading:u,allowCustom:d=!0,mono:f,className:p}){let[m,h]=Y.useState(!1),[g,_]=Y.useState(``),v=Bo(),y=o??W(`engine.form.selectEllipsis`,v),b=s??W(`engine.inspector.combo.search`,v),x=c??W(`engine.inspector.combo.noMatch`,v),S=Y.useId(),C=e?S:n,w=a.find(e=>e.value===r),T=w?w.label:r||(u?W(`engine.inspector.combo.loading`,v):y),E=Y.useMemo(()=>a.filter(e=>zc(e,g)),[a,g]),D=Y.useMemo(()=>{let e=[],t=new Map;for(let n of E){let r=n.group??``;t.has(r)||(t.set(r,[]),e.push(r)),t.get(r).push(n)}return e.map(e=>({heading:e,items:t.get(e)}))},[E]),O=g.trim(),k=d&&!!O&&!a.some(e=>e.value===O),[A,j=``]=W(`engine.inspector.combo.useCustom`,v).split(`{value}`),M=e=>{i(e),h(!1),_(``)},N=(0,X.jsxs)(Ke,{open:m,onOpenChange:e=>{h(e),e||_(``)},children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsxs)(B,{type:`button`,variant:`outline`,role:`combobox`,id:C,"aria-label":t,"aria-expanded":m,disabled:l,className:L(`h-8 w-full justify-between px-2 text-sm font-normal`,p),children:[(0,X.jsx)(`span`,{className:L(`truncate`,f&&`font-mono`,!w&&!r&&`text-muted-foreground`),children:T}),(0,X.jsx)(On,{className:`ml-2 h-3.5 w-3.5 shrink-0 opacity-50`})]})}),(0,X.jsx)(be,{align:`start`,className:`w-[var(--radix-popover-trigger-width)] min-w-[14rem] p-0`,children:(0,X.jsxs)(dt,{shouldFilter:!1,children:[(0,X.jsx)(Ue,{value:g,onValueChange:_,placeholder:b}),(0,X.jsxs)(he,{children:[!k&&E.length===0&&(0,X.jsx)(fe,{children:x}),k&&(0,X.jsx)(lt,{children:(0,X.jsx)(ge,{value:`__custom__${O}`,onSelect:()=>M(O),children:(0,X.jsxs)(`span`,{className:`truncate`,children:[A,(0,X.jsxs)(`span`,{className:`font-mono`,children:[`“`,O,`”`]}),j]})})}),D.map((e,t)=>(0,X.jsx)(lt,{heading:e.heading||void 0,children:e.items.map(e=>(0,X.jsxs)(ge,{value:e.value,onSelect:()=>M(e.value),children:[(0,X.jsx)(Cn,{className:L(`h-3.5 w-3.5`,e.value===r?`opacity-100`:`opacity-0`)}),(0,X.jsx)(`span`,{className:`truncate font-mono`,children:e.value}),e.label&&e.label!==e.value&&(0,X.jsx)(`span`,{className:`ml-1 truncate text-muted-foreground`,children:e.label}),e.hint&&(0,X.jsx)(`span`,{className:`ml-auto pl-2 text-[10px] text-muted-foreground`,children:e.hint})]},e.value))},e.heading||`g${t}`))]})]})})]});return e?(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{htmlFor:S,className:`text-xs text-muted-foreground`,children:e}),N]}):N}var Vc=new Set([`lookup`,`master_detail`,`masterdetail`,`master-detail`]);function Hc(e,t){if(typeof e==`string`&&e)return e;if(e&&typeof e==`object`){let t=e.default;if(typeof t==`string`&&t)return t}return t}function Uc(e){let t=e.reference;return typeof t==`string`&&t?t:void 0}function Wc(e){switch(e){case`lookup`:case`master_detail`:case`masterDetail`:case`master-detail`:return`lookup`;case`date`:case`datetime`:case`time`:return`date`;case`number`:case`currency`:case`percent`:case`int`:case`integer`:case`float`:case`double`:case`autonumber`:return`number`;case`boolean`:case`toggle`:return`boolean`;default:return`string`}}function Gc(e,t){if(!e)return{label:t,fields:[],relationships:[]};let n=Hc(e.label,t),r=Ao(e.fields).entries.map(e=>({name:e.name,label:Hc(e.def.label,e.name),type:typeof e.def.type==`string`?e.def.type:void 0,def:e.def}));return{label:n,fields:r,relationships:r.filter(e=>e.type&&Vc.has(e.type.toLowerCase())).map(e=>({name:e.name,label:e.label,referenceTo:Uc(e.def)}))}}function Kc(e,t,n){let r=e,i=[];for(let e of t.split(`.`)){let t=r.relationships.find(t=>t.name===e);if(!t?.referenceTo)return;let a=n[t.referenceTo];if(!a)return;i.push(t.label),r=a}return{target:r,labels:i}}function qc(e,t,n){let r=e.fields.map(t=>({value:t.name,label:t.label,type:t.type,group:e.label}));for(let i of t){let t=Kc(e,i,n);if(!t)continue;let a=[...t.labels,t.target.label].join(` → `);for(let e of t.target.fields)r.push({value:`${i}.${e.name}`,label:e.label,type:e.type,group:a})}return r}function Jc(e,t){if(!e||typeof e!=`object`)return!1;if(Array.isArray(e))return e.some(e=>Jc(e,t));let n=e;return typeof n.dataset==`string`&&n.dataset===t||Object.values(n).some(e=>e&&typeof e==`object`&&Jc(e,t))}function Yc(){let e=Qi(),[t,n]=Y.useState({options:[],loading:!0});return Y.useEffect(()=>{let t=!1;return n(e=>({...e,loading:!0})),e.list(`object`).then(e=>{if(t)return;let r=(Array.isArray(e)?e:[]).map(e=>({name:typeof e.name==`string`?e.name:``,label:Hc(e.label,typeof e.name==`string`?e.name:``)})).filter(e=>!!e.name).sort((e,t)=>e.label.localeCompare(t.label));n({options:r,loading:!1})}).catch(()=>{t||n({options:[],loading:!1})}),()=>{t=!0}},[e]),t}function Xc(e,t){let n=Qi(),r=JSON.stringify(t),[i,a]=Y.useState({relationships:[],fieldOptions:[],loading:!!e});return Y.useEffect(()=>{if(!e){a({relationships:[],fieldOptions:[],loading:!1});return}let t=!1;return a(e=>({...e,loading:!0})),(async()=>{try{let i=await n.get(`object`,e);if(t)return;let o=Gc(i,e),s=JSON.parse(r),c={[e]:o},l=async e=>{if(c[e])return c[e];let t;try{t=Gc(await n.get(`object`,e),e)}catch{t=Gc(null,e)}return c[e]=t,t};for(let e of s){let t=o;for(let n of e.split(`.`)){let e=t.relationships.find(e=>e.name===n);if(!e?.referenceTo)break;t=await l(e.referenceTo)}}if(t)return;let u=[...o.relationships];for(let e of s){if(e.split(`.`).length>=3)continue;let t=Kc(o,e,c);if(t)for(let n of t.target.relationships)u.push({name:`${e}.${n.name}`,label:`${e}.${n.name}`,referenceTo:n.referenceTo})}a({relationships:u,fieldOptions:qc(o,s,c),loading:!1})}catch{t||a({relationships:[],fieldOptions:[],loading:!1})}})(),()=>{t=!0}},[n,e,r]),i}function Zc(e){let t=Qi(),[n,r]=Y.useState({reports:0,dashboards:0,loading:!!e});return Y.useEffect(()=>{if(!e){r({reports:0,dashboards:0,loading:!1});return}let n=!1;return r(e=>({...e,loading:!0})),(async()=>{let[i,a]=await Promise.all([t.list(`report`).catch(()=>[]),t.list(`dashboard`).catch(()=>[])]);n||r({reports:(Array.isArray(i)?i:[]).filter(t=>Jc(t,e)).length,dashboards:(Array.isArray(a)?a:[]).filter(t=>Jc(t,e)).length,loading:!1})})(),()=>{n=!0}},[t,e]),n}function Qc(e,t,n=e=>`col ${e}`){if(typeof e==`string`)return e||n(t+1);if(e&&typeof e==`object`){let r=e;return String(r.label??r.field??n(t+1))}return n(t+1)}function $c(e){if(typeof e==`string`)return e||void 0;if(e&&typeof e==`object`){let t=e.field;return typeof t==`string`&&t?t:void 0}}function el(e){let t=new Set;for(let n of e){let e=$c(n);e&&t.add(e)}return t}function tl(e,t,n){if(e)return t;let r={field:t};return n&&n!==t&&(r.label=n),r}function nl(e,t){return e===t?null:e>t?e-1:e}function rl(e,t,n){if(e===t)return n;let r=e;return t<r&&--r,n<=r&&(r+=1),r}function il(e,t,n){return Qc(e,t,e=>U(`engine.fieldsListEditor.colN`,n,{n:e}))}function al({variantKey:e,schema:t,columns:n,allStrings:r,objectName:i,objectFieldsOverride:a,selectedIndex:o,readOnly:s,onPatch:c,onSelectionChange:l}){let u=!s,d=Bo(),{fields:f,loading:p,error:m}=to(i||void 0,a),h=Y.useMemo(()=>{let e=new Map;for(let t of f)e.set(t.name,t.type);return e},[f]),[g,_]=Y.useState(null),[v,y]=Y.useState(null),b=Y.useCallback(n=>{c({[e]:{...t,columns:n}})},[c,e,t]),x=Y.useCallback(t=>{let i=tl(r,t.name,t.label),a=ss(n,i);b(a),l?.({kind:`column`,id:`${e}.columns[${a.length-1}]`,label:t.label})},[r,n,b,e,l]),S=Y.useCallback(t=>{let r=G(n,t,null);if(b(r),o!=null){let n=nl(o,t);n==null?l?.(null):l?.({kind:`column`,id:`${e}.columns[${n}]`,label:il(r[n],n,d)})}},[n,b,o,e,l,d]),C=Y.useCallback((t,r)=>{if(t===r)return;let i=os(n,t,r);if(b(i),o!=null){let n=rl(o,t,r);l?.({kind:`column`,id:`${e}.columns[${n}]`,label:il(i[n],n,d)})}},[n,b,o,e,l,d]),w=Y.useCallback(t=>{l?.({kind:`column`,id:`${e}.columns[${t}]`,label:il(n[t],t,d)})},[n,e,l,d]),T=el(n);return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:W(`engine.fieldsListEditor.columns`,d)}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:n.length})]}),n.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-3 text-center text-[11px] text-muted-foreground`,children:W(`engine.fieldsListEditor.empty`,d)}):(0,X.jsx)(`div`,{className:`space-y-1`,children:n.map((e,t)=>(0,X.jsx)(rs,{index:t,label:il(e,t,d),fieldName:$c(e),fieldType:h.get($c(e)??``)??`text`,selected:o===t,canEdit:u,dragging:g!==null,dropBefore:v===t&&g!==null&&g!==t,onSelect:()=>w(t),onRemove:()=>S(t),onDragStart:()=>_(t),onDragEnd:()=>{_(null),y(null)},onDragOverRow:()=>y(t),onDropRow:()=>{g!=null&&g!==t&&C(g,t),_(null),y(null)}},t))}),u&&(0,X.jsx)(es,{fields:f,usedNames:T,loading:p,error:m,onAdd:x})]})}var ol=[`record`,`current_user`,`user`,`features`,`os`,`ctx`];function sl(e){if(e==null)return`null`;let t=typeof e;return t===`string`?JSON.stringify(e):t===`number`||t===`boolean`?String(e):Array.isArray(e)?`[${e.map(sl).join(`, `)}]`:JSON.stringify(String(e))}function cl(e){if(!e.field||!e.operator)return``;let t=`record[${JSON.stringify(e.field)}]`;switch(e.operator){case`equals`:return`${t} == ${sl(e.value)}`;case`not_equals`:return`${t} != ${sl(e.value)}`;case`greater_than`:return`${t} > ${sl(e.value)}`;case`less_than`:return`${t} < ${sl(e.value)}`;case`contains`:return`${t}.contains(${sl(e.value)})`;case`in`:return`${t} in ${sl(Array.isArray(e.value)?e.value:[e.value])}`;default:return``}}function ll(e){return typeof e.condition==`string`?e.condition:e.condition&&typeof e.condition==`object`&&typeof e.condition.source==`string`?e.condition.source:typeof e.expression==`string`?e.expression:cl(e)}function ul(e){let t=ll(e),n={};if(e.style&&typeof e.style==`object`)for(let[t,r]of Object.entries(e.style))r!=null&&(n[t]=String(r));return e.backgroundColor&&(n.backgroundColor=String(e.backgroundColor)),e.textColor&&(n.color=String(e.textColor)),e.borderColor&&(n.borderColor=String(e.borderColor)),{condition:t,style:n}}function dl({label:e,value:t,onChange:n,disabled:r}){return(0,X.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:e}),(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`input`,{type:`color`,value:/^#([0-9a-f]{6})$/i.test(t)?t:`#000000`,disabled:r,onChange:e=>n(e.target.value),className:`h-7 w-8 shrink-0 rounded border border-input bg-background p-0.5 disabled:opacity-60`,"aria-label":e}),(0,X.jsx)(z,{value:t,placeholder:`#RRGGBB`,disabled:r,onChange:e=>n(e.target.value),className:`h-7 text-xs font-mono`})]})]})}function fl({rules:e,onChange:t,objectName:n,fieldNames:r,disabled:i,t:a,onBlockingIssuesChange:o}){let s=Y.useMemo(()=>Array.isArray(e)?e.map(ul):[],[e]),[c,l]=Y.useState({}),u=Y.useCallback((e,t)=>{let n=t.filter(e=>e.severity===`error`).length;l(t=>t[e]===n?t:{...t,[e]:n})},[]),d=s.length,f=Y.useMemo(()=>{let e=0;for(let[t,n]of Object.entries(c))Number(t)>=d||(e+=n);return e},[c,d]),p=Y.useRef(o);Y.useEffect(()=>{p.current=o}),Y.useEffect(()=>{p.current?.(f)},[f]);let m=e=>t(e),h=(e,t)=>{let n=s.map((n,r)=>r===e?{...n,...t}:n);m(n)},g=(e,t,n)=>{let r={...s[e].style};n?r[t]=n:delete r[t],h(e,{style:r})},_=()=>m([...s,{condition:``,style:{}}]),v=e=>m(s.filter((t,n)=>n!==e)),y=(e,t)=>{let n=e+t;if(n<0||n>=s.length)return;let r=s.slice();[r[e],r[n]]=[r[n],r[e]],m(r)};return(0,X.jsxs)(`div`,{className:`space-y-2`,"data-testid":`cf-editor`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:a(`engine.inspector.view.cf.title`)}),(0,X.jsxs)(B,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 px-2 text-xs`,disabled:i,onClick:_,"data-testid":`cf-add`,children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),a(`engine.inspector.view.cf.add`)]})]}),s.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:a(`engine.inspector.view.cf.empty`)}),s.map((e,t)=>(0,X.jsxs)(`div`,{className:`rounded-md border border-border p-2 space-y-2`,"data-testid":`cf-rule-${t}`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:[a(`engine.inspector.view.cf.rule`),` `,t+1]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,X.jsx)(B,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6`,disabled:i||t===0,onClick:()=>y(t,-1),"aria-label":a(`engine.inspector.view.cf.moveUp`),"data-testid":`cf-up-${t}`,children:(0,X.jsx)(En,{className:`h-3.5 w-3.5`})}),(0,X.jsx)(B,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6`,disabled:i||t===s.length-1,onClick:()=>y(t,1),"aria-label":a(`engine.inspector.view.cf.moveDown`),"data-testid":`cf-down-${t}`,children:(0,X.jsx)(wn,{className:`h-3.5 w-3.5`})}),(0,X.jsx)(B,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6 text-destructive hover:text-destructive`,disabled:i,onClick:()=>v(t),"aria-label":a(`engine.inspector.view.cf.remove`),"data-testid":`cf-remove-${t}`,children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]})]}),(0,X.jsx)(ao,{label:a(`engine.inspector.view.cf.when`),value:e.condition,disabled:i,placeholder:`record.status == 'overdue'`,objectName:n,fieldNames:r,scope:`record`,roots:ol,onChange:e=>h(t,{condition:e}),onLintChange:e=>u(t,e),t:a,id:`cf-condition-${t}`}),(0,X.jsxs)(`div`,{className:L(`grid gap-2 sm:grid-cols-3`),children:[(0,X.jsx)(dl,{label:a(`engine.inspector.view.cf.background`),value:e.style.backgroundColor??``,disabled:i,onChange:e=>g(t,`backgroundColor`,e)}),(0,X.jsx)(dl,{label:a(`engine.inspector.view.cf.text`),value:e.style.color??``,disabled:i,onChange:e=>g(t,`color`,e)}),(0,X.jsx)(dl,{label:a(`engine.inspector.view.cf.border`),value:e.style.borderColor??``,disabled:i,onChange:e=>g(t,`borderColor`,e)})]}),(0,X.jsx)(`div`,{className:`rounded border border-dashed border-border px-2 py-1 text-xs`,style:e.style,"data-testid":`cf-preview-${t}`,children:a(`engine.inspector.view.cf.preview`)})]},t))]})}var pl={io:`input`,unrepresentable:`any`},ml=new Set([`columns`,`data`,`name`]),hl,gl=!1;function _l(){if(hl||gl)return hl;try{hl=Ea(A,pl)}catch(e){gl=!0,typeof console<`u`&&console.warn(`[view-schema] failed to derive View JSONSchema from spec`,e)}return hl}function vl(){return _l()?.properties?.list}function yl(){return _l()?.properties?.form}var bl,xl=!1;function Sl(){if(bl||xl)return bl;try{bl=Ea(T,pl)}catch(e){xl=!0,typeof console<`u`&&console.warn(`[view-schema] failed to derive ListColumn JSONSchema from spec`,e)}return bl}var Cl;function wl(){if(Cl)return Cl;if(h&&typeof h==`object`){try{let e=JSON.parse(JSON.stringify(h));for(let t of e.sections??[])t.fields=(t.fields??[]).filter(e=>{let t=typeof e==`string`?e:e?.field;return!ml.has(t)});e.sections=(e.sections??[]).filter(e=>(e.fields??[]).length>0),Cl=e}catch(e){typeof console<`u`&&console.warn(`[view-schema] failed to prepare viewForm from spec`,e);return}return Cl}}var Tl=new Set([`form`,`detail`]);function El(e){return Tl.has(e)}function Dl(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Ol(e,t){return typeof e==`string`&&Tl.has(e)?e:typeof e==`string`&&e?`list`:typeof t==`string`&&Tl.has(t)?`form`:`list`}function kl(e){let t=e.config;return Dl(t)?[{storeKey:`config`,familyKey:Ol(e.viewKind,t.type),schema:t}]:[]}function Al(e){return kl(e)[0]}function jl(e,t){return Al(e)}var Ml=new Set([`current_user`,`user`,`ctx`,`os`,`features`,`app`,`page`]);function Nl(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Pl(e){let t=e.visibleWhen,n;if(typeof t==`string`)n=t;else if(Nl(t)){if(t.dialect!==void 0&&t.dialect!==`cel`)return null;n=t.source}return typeof n==`string`&&n.trim()||null}function Fl(e){let t=e.fields;if(!Array.isArray(t))return[];let n=[];for(let e of t)typeof e==`string`&&e?n.push(e):Nl(e)&&typeof e.field==`string`&&e.field&&n.push(e.field);return n}function Il(e){if(!e)return[];let t=e.sections===void 0?e.groups:e.sections;if(!Array.isArray(t))return[];let n=[];return t.forEach((e,t)=>{if(!Nl(e))return;let r=typeof e.label==`string`&&e.label?e.label:``,i=typeof e.name==`string`&&e.name?e.name:``;n.push({index:t,title:r||i||`#${t+1}`,predicate:Pl(e),members:Fl(e)})}),n}function Ll(e){let t=new Map;for(let n of e)n.required===!0&&t.set(n.name,n.label||n.name);return t}function Rl(e,t){let n=Ll(t),r=new Set;for(let t of e)t.predicate&&t.members.some(e=>n.has(e))&&r.add(t.predicate);return[...r]}function zl(e,t,n){let r=Ll(t),i=[];for(let t of e){if(!t.predicate)continue;let e=t.members.filter(e=>r.has(e));if(e.length===0)continue;let a=n(t.predicate);if(!a)continue;let o=[...new Set(a.filter(e=>Ml.has(e)))];if(o.length!==0)for(let n of new Set(e))i.push({sectionIndex:t.index,section:t.title,predicate:t.predicate,roots:o,field:n,fieldLabel:r.get(n)??n})}return i}var Bl=null;function Vl(){return Bl||=n(async()=>{let{collectCelRootIdentifiers:e}=await import(`./vendor-objectstack-XuWC71M9.js`).then(e=>e.ut);return{collectCelRootIdentifiers:e}},[],import.meta.url).then(({collectCelRootIdentifiers:e})=>typeof e==`function`?e:null).catch(()=>null),Bl}function Hl(e,t){if(!e)return null;try{let n=e(t);return n.ok?n.roots:null}catch{return null}}function Ul(e,t){let n=Il(e),r=JSON.stringify(Rl(n,t)),[i,a]=Y.useState({key:`[]`,roots:{}});return Y.useEffect(()=>{let e=JSON.parse(r);if(e.length===0)return;let t=!1;return Vl().then(n=>{if(t)return;let i={};for(let t of e)i[t]=Hl(n,t);a({key:r,roots:i})}),()=>{t=!0}},[r]),i.key===r?zl(n,t,e=>Object.prototype.hasOwnProperty.call(i.roots,e)?i.roots[e]:null):[]}function Wl({label:e,value:t,onCommit:n,placeholder:r,searchPlaceholder:i,disabled:a}){let{options:o,loading:s}=Yc();return(0,X.jsx)(Bc,{label:e,value:t,onCommit:n,options:o.map(e=>({value:e.name,label:e.label})),loading:s,placeholder:r,searchPlaceholder:i,disabled:a,mono:!0})}var Gl=new Set([`type`,`object`,`label`,`columns`,`conditionalFormatting`]),Kl={grid:`Table / List`,kanban:`Kanban`,calendar:`Calendar`,gallery:`Gallery`,gantt:`Gantt`,timeline:`Timeline`,map:`Map`,chart:`Chart`};function ql(e,t){let n=`engine.inspector.view.type.${e}`,r=W(n,t);return r===n?Kl[e]??e:r}var Jl=[`columns`,`data`,`name`];function Yl(e,t){let n=e.data;return n&&typeof n==`object`&&typeof n.object==`string`&&n.object?{value:n.object,path:`data.object`}:typeof e.object==`string`&&e.object?{value:e.object,path:`object`}:typeof t.object==`string`&&t.object?{value:t.object,path:`top`}:{value:``,path:`top`}}function Xl(e){return Y.useMemo(()=>{let t=vl()?.properties?.type?.enum;return(Array.isArray(t)&&t.length?t.filter(e=>typeof e==`string`):[`grid`,`kanban`,`calendar`,`gallery`,`gantt`,`timeline`]).map(t=>({value:t,label:ql(t,e)}))},[e])}function Zl({draft:e,variantKey:t,familyKey:n,isHome:r,onPatch:i,readOnly:a,onClearSelection:o,onSelectionChange:s,onBlockingIssuesChange:c,objectFieldsOverride:l,locale:u,serverSchema:d}){let f=e[t]??{},p=El(n??t),m=typeof f.type==`string`?f.type:`grid`,h=Xl(u),g=Yl(f,e),_=typeof e.label==`string`&&e.label||(typeof f.label==`string`?f.label:``)||``,v=Array.isArray(f.columns)?f.columns:[],y=v.length>0&&v.every(e=>typeof e==`string`),{fields:b,loading:x,error:S}=to(g.value||void 0,l),C=Y.useCallback(e=>W(e,u),[u]),w=Y.useMemo(()=>b.map(e=>e.name),[b]),T=Array.isArray(f.conditionalFormatting)?f.conditionalFormatting:[],[E,D]=Y.useState({variant:t,count:0}),O=Y.useCallback(e=>{D(n=>n.variant===t&&n.count===e?n:{variant:t,count:e})},[t]),k=E.variant===t&&!p?E.count:0,A=Ul(p?f:void 0,b),j=k+(p?A.length:0),M=Y.useRef(c);Y.useEffect(()=>{M.current=c}),Y.useEffect(()=>{M.current?.(j)},[j]);let N=Y.useMemo(()=>{let e;return e=S?bo(S):x?{status:`loading`}:Mo(b.map(e=>({name:e.name,label:e.label,type:e.type}))),{conditionScope:`none`,objectFields:e}},[b,x,S]),P=(()=>{let e=d?.properties;return p?e?.form:e?.list})(),{schema:ee,form:te}=Y.useMemo(()=>Go({bundledSchema:p?yl():vl(),bundledForm:p?void 0:wl(),serverSchema:P,excludeFields:Gl,sectionTitle:W(`engine.inspector.moreFields`,u)}),[p,P,u]),ne=e=>{i({[t]:{...f,...e}})};return(0,X.jsxs)(Wo,{kindLabel:W(`engine.inspector.view.kind`,u),title:String(_||e.name||t),onClose:()=>o?.(),closeLabel:W(`engine.inspector.view.close`,u),hideClose:r,children:[(0,X.jsx)(J,{label:W(`engine.inspector.view.label`,u),value:_,onCommit:e=>{i({label:e,[t]:{...f,label:e}})},placeholder:W(`engine.inspector.view.labelPlaceholder`,u),disabled:a}),(0,X.jsx)(q,{label:W(`engine.inspector.view.type`,u),value:m,options:h,unknownValueLabel:e=>Ko(ql(e,u),W(`engine.form.notFound`,u),u),onCommit:e=>ne({type:e}),disabled:a}),(0,X.jsx)(Wl,{label:W(`engine.inspector.view.object`,u),value:g.value,onCommit:e=>{let n={object:e};f.data&&typeof f.data==`object`?n[t]={...f,data:{...f.data,object:e}}:g.path===`object`&&(n[t]={...f,object:e}),i(n)},placeholder:W(`engine.inspector.view.objectPlaceholder`,u),searchPlaceholder:W(`engine.inspector.dataset.searchObjects`,u),disabled:a}),p&&A.length>0&&(0,X.jsxs)(`div`,{className:`space-y-2 rounded-md border border-destructive/50 bg-destructive/5 p-2 text-[11px] leading-snug text-destructive`,role:`alert`,"data-testid":`view-gated-required-issues`,children:[(0,X.jsx)(`p`,{className:`font-medium`,children:W(`engine.inspector.view.gatedRequired.title`,u)}),A.map(e=>{let t={field:e.field,fieldLabel:e.fieldLabel,object:g.value,section:e.section,predicate:e.predicate};return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(`p`,{children:U(`engine.inspector.view.gatedRequired.issue`,u,t)}),(0,X.jsx)(`p`,{children:W(`engine.inspector.view.gatedRequired.remedies`,u)}),(0,X.jsxs)(`ul`,{className:`list-disc space-y-0.5 pl-4`,children:[(0,X.jsx)(`li`,{children:U(`engine.inspector.view.gatedRequired.remedyMove`,u,t)}),(0,X.jsx)(`li`,{children:U(`engine.inspector.view.gatedRequired.remedyDrop`,u,t)}),(0,X.jsx)(`li`,{children:U(`engine.inspector.view.gatedRequired.remedyUnrequire`,u,t)})]})]},`${e.sectionIndex}:${e.field}`)})]}),!p&&(0,X.jsx)(`div`,{className:`border-t pt-3`,children:(0,X.jsx)(al,{variantKey:t,schema:f,columns:v,allStrings:y,objectName:g.value||void 0,objectFieldsOverride:l,selectedIndex:null,readOnly:a,onPatch:i,onSelectionChange:s})}),!p&&(0,X.jsx)(`div`,{className:`border-t pt-3`,children:(0,X.jsx)(fl,{rules:T,objectName:g.value||void 0,fieldNames:w,disabled:a,t:C,onChange:e=>ne({conditionalFormatting:e.length>0?e:void 0}),onBlockingIssuesChange:O})}),(0,X.jsx)(`div`,{className:`border-t pt-3`,children:ee?(0,X.jsx)(jo,{schema:ee,form:te,value:f,hiddenFields:[`type`,`object`,`label`],readOnly:a,widgetContext:N,onChange:e=>{let n={...e};for(let e of Jl)e in f?n[e]=f[e]:delete n[e];i({[t]:n})}}):(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:W(`engine.inspector.view.noSchema`,u)})})]})}function Ql(){try{let e=new URLSearchParams(window.location.search).get(za);return e&&e!==``?e:null}catch{return null}}function $l(e,t){let n=(0,Y.useRef)(!1),r=e!==null&&!n.current&&t(e);return(0,Y.useEffect)(()=>{if(r){n.current=!0;try{let e=new URL(window.location.href);e.searchParams.delete(za),window.history.replaceState(window.history.state,``,e)}catch{}}},[r]),r?e:null}function eu(e){let[t]=(0,Y.useState)(Ql);return $l(t,e)}function tu(e,t,n){let[r]=(0,Y.useState)(Ql),i=n&&r!==null?e.find(e=>e?.name===r&&t(e)):void 0,a=yt(void 0),o=vt(Bt(i?.visible),a,{throwOnError:!0,label:`action "${i?.name??i?.label??`action:button`}" (visible)`}),s=i!==void 0&&xt(i.visible)&&!o,{t:c}=Jt(),l=(0,Y.useRef)(!1);return(0,Y.useEffect)(()=>{s&&i&&!l.current&&(l.current=!0,Xt.warning(c(`actions.notAvailableHere`,{defaultValue:`"{{action}}" is not available on the current page.`,action:i.label||i.name||``}),{id:`auto-trigger-refused:${i.name??i.label??``}`}))},[s,i,c]),$l(r,()=>i!==void 0&&!s)}function nu(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}${za}=${encodeURIComponent(t)}`:e}var ru=19,iu=[`from-blue-500 to-indigo-600`,`from-violet-500 to-purple-600`,`from-pink-500 to-rose-600`,`from-amber-400 to-orange-500`,`from-emerald-500 to-teal-600`,`from-sky-500 to-cyan-600`,`from-fuchsia-500 to-pink-600`,`from-orange-500 to-red-600`,`from-indigo-500 to-blue-600`,`from-teal-500 to-green-600`],au=`shadow-[0_4px_10px_-2px_rgb(0_0_0/0.25),inset_0_1px_0_0_rgb(255_255_255/0.45)]`;function ou(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)}function su({apps:e,favorites:t,onOpen:n,onBrowseMarketplace:r,isAdmin:i,canAuthorMetadata:a=!0,marketplaceEnabled:o=!0}){let{t:s}=Jt(),{appLabel:c}=Ht(),[l,u]=(0,Y.useState)(!1),d=(0,Y.useMemo)(()=>new Set(t.filter(e=>e.id.startsWith(`app:`)).map(e=>e.id.slice(4))),[t]),f=(0,Y.useMemo)(()=>[...e].sort((e,t)=>+!!d.has(t.name)-!!d.has(e.name)),[e,d]),p=f.length-ru,m=l?f:f.slice(0,ru);return(0,X.jsxs)(`section`,{className:`mb-6`,children:[(0,X.jsxs)(`div`,{className:`mb-3 flex items-center gap-2.5`,children:[(0,X.jsx)(`span`,{className:`inline-flex h-8 w-8 items-center justify-center rounded-xl border border-border bg-muted text-muted-foreground`,children:(0,X.jsx)(Mr,{className:`h-4 w-4`})}),(0,X.jsx)(`h2`,{className:`text-base font-semibold tracking-tight`,children:s(`home.yourApps`,{defaultValue:`Your apps`})}),(0,X.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:f.length}),i&&a&&o&&(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`ml-auto h-8 text-muted-foreground`,onClick:r,"data-testid":`browse-marketplace-btn`,children:[(0,X.jsx)(ji,{className:`mr-1.5 h-4 w-4`}),s(`home.browseMarketplace`,{defaultValue:`Browse App Marketplace`})]})]}),(0,X.jsxs)(`div`,{className:`grid grid-cols-4 gap-1 sm:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10`,children:[m.map(e=>{let t=Wa(e.icon),r=c({name:e.name,label:Da(e.label,s)}),i=d.has(e.name),a=iu[ou(e.name)%iu.length];return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:`group relative flex flex-col items-center gap-2 rounded-xl p-2.5 text-center transition hover:bg-muted/40 active:scale-[0.96]`,"data-testid":`app-tile-${e.name}`,children:[(0,X.jsxs)(`span`,{className:L(`relative inline-flex h-12 w-12 items-center justify-center rounded-[13px]`,`bg-gradient-to-br text-white transition-transform group-hover:scale-105`,au,a),children:[(0,X.jsx)(t,{className:`h-6 w-6`}),i&&(0,X.jsx)(`span`,{className:`absolute -right-1 -top-1 inline-flex h-4 w-4 items-center justify-center rounded-full bg-amber-400 ring-2 ring-background`,children:(0,X.jsx)(ki,{className:`h-2.5 w-2.5 fill-white text-white`})})]}),(0,X.jsx)(`span`,{className:`w-full truncate text-xs font-medium`,children:r})]},e.name)}),!l&&p>0&&(0,X.jsxs)(`button`,{type:`button`,onClick:()=>u(!0),className:`group flex flex-col items-center gap-2 rounded-xl p-2.5 text-center transition hover:bg-muted/40 active:scale-[0.96]`,"data-testid":`apps-show-all`,children:[(0,X.jsxs)(`span`,{className:`inline-flex h-12 w-12 items-center justify-center rounded-[13px] border border-dashed border-border text-sm font-medium text-muted-foreground transition-colors group-hover:border-foreground/30 group-hover:text-foreground`,children:[`+`,p]}),(0,X.jsx)(`span`,{className:`w-full truncate text-xs text-muted-foreground`,children:s(`home.showMoreApps`,{defaultValue:`More`})})]})]}),l&&p>0&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>u(!1),className:`mt-2.5 text-xs text-primary hover:underline`,children:s(`home.showLess`,{defaultValue:`Show less`})})]})}function cu(e){let t=e.slice(0,20);if(t.length===0)return`{
3
- "id": "record-1"
4
- }`;let n={};for(let e of t)n[e]=null;return JSON.stringify(n,null,2)}var lu=JSON.stringify({id:`user-1`,organization_id:`org-1`,positions:[`admin`]},null,2),uu=[];function du({open:e,onOpenChange:t,policyName:n,objectName:r,fieldNames:i=uu,using:a,check:o,t:s}){let c=Y.useMemo(()=>{let e=[];return a&&a.trim()&&e.push(`using`),o&&o.trim()&&e.push(`check`),e},[a,o]),[l,u]=Y.useState(`using`),[d,f]=Y.useState(`{}`),[p,m]=Y.useState(lu),[h,g]=Y.useState(null),[_,v]=Y.useState(null),[y,b]=Y.useState(!1);Y.useEffect(()=>{e&&(u(c[0]??`using`),f(cu(i)),m(lu),g(null),v(null))},[e]);let x=l===`using`?a??``:o??``;async function S(){g(null),v(null);let e=fu(d,s(`perm.cel.test.record`),s);if(!e.ok)return v(e.error);let t=fu(p,s(`perm.cel.test.user`),s);if(!t.ok)return v(t.error);b(!0);try{g(await Qa(x,{record:e.value,currentUser:t.value}))}finally{b(!1)}}return(0,X.jsx)(rt,{open:e,onOpenChange:t,children:(0,X.jsxs)(ue,{className:`sm:max-w-2xl`,children:[(0,X.jsxs)(Fe,{children:[(0,X.jsxs)(ze,{className:`flex items-center gap-2`,children:[(0,X.jsx)(lr,{className:`h-4 w-4 text-muted-foreground`}),s(`perm.cel.test.title`),n?(0,X.jsxs)(`span`,{className:`text-muted-foreground font-normal`,children:[`· `,n]}):null]}),(0,X.jsx)(tt,{children:s(`perm.cel.test.help`)})]}),c.length===0?(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground italic py-4`,children:s(`perm.cel.test.noPredicate`)}):(0,X.jsxs)(`div`,{className:`space-y-3`,children:[c.length>1&&(0,X.jsx)(`div`,{className:`flex items-center gap-1.5`,role:`tablist`,"aria-label":s(`perm.cel.test.clause`),children:c.map(e=>(0,X.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":l===e,onClick:()=>{u(e),g(null)},className:L(`rounded-md border px-3 py-1 text-xs transition-colors`,l===e?`border-primary bg-primary text-primary-foreground`:`border-input bg-background hover:bg-accent`),children:s(e===`using`?`perm.rls.using`:`perm.rls.check`)},e))}),(0,X.jsxs)(`div`,{className:`rounded-md border bg-muted/40 px-3 py-2`,children:[(0,X.jsxs)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:[s(l===`using`?`perm.rls.using`:`perm.rls.check`),r?` · ${r}`:``]}),(0,X.jsx)(`code`,{className:`block whitespace-pre-wrap break-words font-mono text-xs`,children:x})]}),(0,X.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-[10px] uppercase text-muted-foreground`,htmlFor:`cel-test-record`,children:s(`perm.cel.test.record`)}),(0,X.jsx)(Ye,{id:`cel-test-record`,value:d,onChange:e=>f(e.target.value),rows:8,spellCheck:!1,className:`font-mono text-xs`})]}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(I,{className:`text-[10px] uppercase text-muted-foreground`,htmlFor:`cel-test-user`,children:[s(`perm.cel.test.user`),` `,(0,X.jsx)(`span`,{className:`font-mono normal-case`,children:`current_user`})]}),(0,X.jsx)(Ye,{id:`cel-test-user`,value:p,onChange:e=>m(e.target.value),rows:8,spellCheck:!1,className:`font-mono text-xs`})]})]}),_&&(0,X.jsxs)(`p`,{className:`flex items-start gap-1.5 text-xs text-destructive`,children:[(0,X.jsx)(kn,{className:`mt-[1px] h-3.5 w-3.5 shrink-0`}),_]}),h&&(0,X.jsx)(pu,{outcome:h,t:s})]}),(0,X.jsxs)(Me,{children:[(0,X.jsx)(B,{variant:`ghost`,onClick:()=>t(!1),children:s(`engine.cancel`)}),(0,X.jsxs)(B,{onClick:S,disabled:y||c.length===0,children:[(0,X.jsx)(lr,{className:`h-4 w-4 mr-1`}),s(`perm.cel.test.run`)]})]})]})})}function fu(e,t,n){let r;try{r=JSON.parse(e||`{}`)}catch(e){return{ok:!1,error:`${t}: ${e.message}`}}return!r||typeof r!=`object`||Array.isArray(r)?{ok:!1,error:`${t}: ${n(`engine.celTest.notObject`)}`}:{ok:!0,value:r}}function pu({outcome:e,t}){return e.status===`allow`?(0,X.jsx)(hu,{tone:`allow`,icon:(0,X.jsx)(xi,{className:`h-4 w-4 shrink-0`}),title:t(`perm.cel.test.allow`),children:t(`perm.cel.test.allowHint`)}):e.status===`deny`?(0,X.jsx)(hu,{tone:`deny`,icon:(0,X.jsx)(Si,{className:`h-4 w-4 shrink-0`}),title:t(`perm.cel.test.deny`),children:t(`perm.cel.test.denyHint`)}):e.status===`value`?(0,X.jsxs)(hu,{tone:`warn`,icon:(0,X.jsx)(zi,{className:`h-4 w-4 shrink-0`}),title:t(`perm.cel.test.nonBool`),children:[(0,X.jsx)(`code`,{className:`font-mono`,children:JSON.stringify(e.value)}),` — `,t(`perm.cel.test.nonBoolHint`)]}):e.status===`unavailable`?(0,X.jsx)(hu,{tone:`warn`,icon:(0,X.jsx)(zi,{className:`h-4 w-4 shrink-0`}),title:t(`perm.cel.test.unavailable`),children:t(`perm.cel.test.unavailableHint`)}):(0,X.jsx)(hu,{tone:`error`,icon:(0,X.jsx)(kn,{className:`h-4 w-4 shrink-0`}),title:t(`perm.cel.test.error`),children:(0,X.jsx)(`code`,{className:`block whitespace-pre-wrap break-words font-mono text-[11px]`,children:e.messageKey?t(e.messageKey):e.message})})}var mu={allow:`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`,deny:`border-destructive/40 bg-destructive/10 text-destructive`,warn:`border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-400`,error:`border-destructive/40 bg-destructive/10 text-destructive`};function hu({tone:e,icon:t,title:n,children:r}){return(0,X.jsxs)(`div`,{className:L(`rounded-md border px-3 py-2 text-xs`,mu[e]),role:`status`,"aria-live":`polite`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium`,children:[t,n]}),(0,X.jsx)(`div`,{className:`mt-1 opacity-90`,children:r})]})}var gu=[`priority`];function _u(e){if(!e||typeof e!=`object`)return e;let t=gu.filter(t=>t in e);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}var vu=[`all`,`select`,`insert`,`update`,`delete`],yu=[`visible`,`hidden`,`default_on`,`default_off`];function bu(e){if(Array.isArray(e))return e;if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}return[]}function xu(e){if(e&&typeof e==`object`&&!Array.isArray(e))return e;if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{}return{}}var Su=`h-8 rounded-md border border-input bg-background px-2 text-sm disabled:opacity-50`;function Cu({title:e,icon:t,count:n,children:r,defaultOpen:i}){let[a,o]=Y.useState(!!i);return(0,X.jsxs)(ve,{open:a,onOpenChange:o,className:`border-b`,children:[(0,X.jsxs)(Ae,{className:`flex w-full items-center gap-2 px-6 py-2.5 text-left hover:bg-muted/40`,children:[(0,X.jsx)(Tn,{className:L(`h-4 w-4 text-muted-foreground transition-transform`,a&&`rotate-90`)}),t,(0,X.jsx)(`span`,{className:`text-sm font-medium`,children:e}),n!=null&&n>0&&(0,X.jsx)(R,{variant:`secondary`,className:`text-[10px]`,children:n})]}),(0,X.jsx)(we,{className:`px-6 pb-4 pt-1`,children:r})]})}function wu({draft:e,setDraft:t,writable:n,allSetNames:r,loadObjectFields:i,onCelErrorsChange:a,t:o}){let s=Y.useMemo(()=>bu(e.rowLevelSecurity).map(_u),[e.rowLevelSecurity]),c=Y.useMemo(()=>xu(e.adminScope),[e.adminScope]),l=Y.useMemo(()=>xu(e.tabPermissions),[e.tabPermissions]),[u,d]=Y.useState({}),f=Y.useRef(new Set),p=Y.useCallback(e=>{let t=(e??``).trim();t&&t!==`*`&&i&&(f.current.has(t)||(f.current.add(t),i(t).then(e=>d(n=>({...n,[t]:e}))).catch(()=>d(e=>({...e,[t]:[]})))))},[i]),m=e=>u[(e??``).trim()]??[],[h,g]=Y.useState({}),_=Y.useCallback((e,t)=>{let n=t.filter(e=>e.severity===`error`).length;g(t=>t[e]===n?t:{...t,[e]:n})},[]),[v,y]=Y.useState(null);Y.useEffect(()=>{s.forEach(e=>p(e.object)),g(e=>{let t=new Set;s.forEach((e,n)=>{t.add(`${n}:using`),t.add(`${n}:check`)});let n=!1,r={};for(let i of Object.keys(e))t.has(i)?r[i]=e[i]:n=!0;return n?r:e})},[s,p]);let b=Y.useMemo(()=>Object.values(h).reduce((e,t)=>e+t,0),[h]),x=Y.useRef(a);Y.useEffect(()=>{x.current=a}),Y.useEffect(()=>{x.current?.(b)},[b]);let S=v==null?void 0:s[v],C=e=>t(t=>({...t,rowLevelSecurity:e})),w=e=>t(t=>({...t,adminScope:{...xu(t.adminScope),...e}})),T=typeof c.businessUnit==`string`&&c.businessUnit.trim()!==``,E=e=>{T&&w(e)},D=Object.keys(c).length>0,O=D&&typeof c.businessUnit!=`string`,k=e=>t(t=>({...t,tabPermissions:e})),A=Object.entries(l);return(0,X.jsxs)(`div`,{className:`border-b bg-muted/10`,children:[(0,X.jsxs)(Cu,{title:o(`perm.rls.title`),icon:(0,X.jsx)(Lr,{className:`h-4 w-4 text-muted-foreground`}),count:s.length,children:[(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:o(`perm.rls.help`)}),(0,X.jsxs)(`div`,{className:`space-y-3`,children:[s.map((e,t)=>(0,X.jsxs)(`div`,{className:`rounded-md border p-3 space-y-2 bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,X.jsx)(z,{value:e.name??``,disabled:!n,placeholder:o(`perm.rls.name`),onChange:n=>{let r=[...s];r[t]={...e,name:n.target.value},C(r)},className:`h-8 w-48`}),(0,X.jsx)(z,{value:e.object??``,disabled:!n,placeholder:o(`perm.rls.object`),onChange:n=>{let r=[...s];r[t]={...e,object:n.target.value},C(r)},className:`h-8 w-40`}),(0,X.jsx)(`select`,{value:e.operation??`all`,disabled:!n,onChange:n=>{let r=[...s];r[t]={...e,operation:n.target.value},C(r)},className:Su,children:vu.map(e=>(0,X.jsx)(`option`,{value:e,children:e},e))}),(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,X.jsx)(ot,{checked:e.enabled!==!1,disabled:!n,onCheckedChange:n=>{let r=[...s];r[t]={...e,enabled:!!n},C(r)}}),o(`perm.rls.enabled`)]}),(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`h-7 ml-auto text-xs text-muted-foreground`,onClick:()=>y(t),title:o(`perm.cel.test.title`),children:[(0,X.jsx)(lr,{className:`h-3.5 w-3.5 mr-1`}),o(`perm.cel.test.run`)]}),n&&(0,X.jsx)(B,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:()=>C(s.filter((e,n)=>n!==t)),children:(0,X.jsx)(Li,{className:`h-4 w-4`})})]}),(0,X.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,X.jsx)(ao,{label:o(`perm.rls.using`),value:e.using??``,disabled:!n,placeholder:`organization_id == current_user.organization_id`,objectName:e.object,fieldNames:m(e.object),clause:`using`,onLintChange:e=>_(`${t}:using`,e),onChange:n=>{let r=[...s];r[t]={...e,using:n},C(r)},t:o}),(0,X.jsx)(ao,{label:o(`perm.rls.check`),value:e.check??``,disabled:!n,placeholder:o(`perm.rls.checkPlaceholder`),objectName:e.object,fieldNames:m(e.object),clause:`check`,onLintChange:e=>_(`${t}:check`,e),onChange:n=>{let r=[...s];r[t]={...e,check:n},C(r)},t:o})]})]},t)),s.length===0&&(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:o(`perm.rls.empty`)}),n&&(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:()=>C([...s,{name:``,object:`*`,operation:`all`,using:``,enabled:!0}]),children:[(0,X.jsx)(H,{className:`h-4 w-4 mr-1`}),` `,o(`perm.rls.add`)]})]})]}),(0,X.jsx)(du,{open:v!=null,onOpenChange:e=>y(e?v:null),policyName:S?.name||void 0,objectName:S?.object,fieldNames:m(S?.object),using:S?.using,check:S?.check,t:o}),(0,X.jsxs)(Cu,{title:o(`perm.tabs.title`),icon:(0,X.jsx)(ei,{className:`h-4 w-4 text-muted-foreground`}),count:A.length,children:[(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:o(`perm.tabs.help`)}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[A.map(([e,t])=>(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(z,{value:e,disabled:!n,onChange:t=>{let n=t.target.value,r={};for(let[t,i]of A)r[t===e?n:t]=i;k(r)},className:`h-8 w-64`}),(0,X.jsx)(`select`,{value:t,disabled:!n,onChange:t=>k({...l,[e]:t.target.value}),className:Su,children:yu.map(e=>(0,X.jsx)(`option`,{value:e,children:o(`perm.tabs.vis.${e}`)},e))}),n&&(0,X.jsx)(B,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:()=>{let t={...l};delete t[e],k(t)},children:(0,X.jsx)(Li,{className:`h-4 w-4`})})]},e)),A.length===0&&(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:o(`perm.tabs.empty`)}),n&&(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:()=>{l[``]===void 0&&k({...l,"":`visible`})},children:[(0,X.jsx)(H,{className:`h-4 w-4 mr-1`}),` `,o(`perm.tabs.add`)]})]})]}),(0,X.jsxs)(Cu,{title:o(`perm.admin.title`),icon:(0,X.jsx)(Ci,{className:`h-4 w-4 text-muted-foreground`}),count:+!!D,children:[(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:o(`perm.admin.help`)}),(0,X.jsxs)(`div`,{className:`space-y-3 max-w-2xl`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-end gap-4`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs`,children:o(`perm.admin.businessUnit`)}),(0,X.jsx)(z,{value:c.businessUnit??``,disabled:!n,onChange:e=>w({businessUnit:e.target.value}),className:`h-8 w-64`})]}),(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs pb-1.5`,children:[(0,X.jsx)(ot,{checked:!!c.includeSubtree,disabled:!n||!T,onCheckedChange:e=>E({includeSubtree:!!e})}),o(`perm.admin.includeSubtree`)]})]}),!T&&(0,X.jsx)(`p`,{className:L(`text-xs`,O?`text-destructive`:`text-muted-foreground`),children:o(`perm.admin.businessUnitRequired`)}),(0,X.jsx)(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2`,children:[[`manageAssignments`,`perm.admin.manageAssignments`],[`manageBindings`,`perm.admin.manageBindings`],[`authorEnvironmentSets`,`perm.admin.authorEnvironmentSets`]].map(([e,t])=>(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,X.jsx)(ot,{checked:!!c[e],disabled:!n||!T,onCheckedChange:t=>E({[e]:!!t})}),o(t)]},e))}),(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{className:`text-xs`,children:o(`perm.admin.assignableSets`)}),(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[r.length===0&&(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:o(`perm.admin.noSets`)}),r.map(e=>{let t=(c.assignablePermissionSets??[]).includes(e);return(0,X.jsx)(`button`,{type:`button`,disabled:!n||!T,"aria-pressed":t,onClick:()=>{let n=c.assignablePermissionSets??[],r=t?n.filter(t=>t!==e):[...n,e];E({assignablePermissionSets:r})},className:L(`rounded-full border px-3 py-1 text-xs transition-colors disabled:opacity-50`,t?`border-primary bg-primary text-primary-foreground`:`border-input bg-background hover:bg-accent`),children:e},e)})]})]})]})]})]})}var Tu=`sys_permission_set`,Eu=`clone_permission_set`;function Du(e){let t=(Array.isArray(e)?e:[]).find(e=>e?.name===Tu);return(Array.isArray(t?.actions)?t.actions:[]).find(e=>e?.name===Eu)}function Ou(e,t,n){let{params:r,...i}=e,a={...n(Tu,i),objectName:Tu,params:{_rowRecord:t}};return Array.isArray(r)&&r.length>0&&(a.actionParams=r),a}var ku=[`name`,`label`,`isDefault`,`objects`,`fields`,`systemPermissions`,`rowLevelSecurity`,`tabPermissions`,`adminScope`];function Au(e){let t=e.indexOf(`.`);return t===-1?e:e.slice(0,t)}function ju(e){return e instanceof Set?e:new Set(e)}function Mu(e,t){let n=ju(t),r={};for(let[t,i]of Object.entries(e.objects??{}))n.has(t)&&(r[t]=i);let i={};for(let[t,r]of Object.entries(e.fields??{}))n.has(Au(t))&&(i[t]=r);return{objects:r,fields:i}}function Nu(e,t,n){let r=ju(n),i={};for(let[t,n]of Object.entries(e.objects??{}))r.has(t)||(i[t]=n);for(let[e,n]of Object.entries(t.objects??{}))r.has(e)&&(i[e]=n);let a={};for(let[t,n]of Object.entries(e.fields??{}))r.has(Au(t))||(a[t]=n);for(let[e,n]of Object.entries(t.fields??{}))r.has(Au(e))&&(a[e]=n);let o={...e};for(let e of ku)e in t&&(o[e]=t[e]);return o.objects=i,o.fields=a,o}function Pu(e){let t=e?.code;return t!=null&&t._packageId!==`sys_metadata`&&e?.provenance!==`org`}function Fu(e,t){let n={private:`perm.owd.private`,public_read:`perm.owd.public_read`,public_read_write:`perm.owd.public_read_write`,controlled_by_parent:`perm.owd.controlled_by_parent`};return n[t]?e(n[t]):t}function Iu(e){return[{key:`allowCreate`,short:`C`,tip:W(`perm.action.create`,e)},{key:`allowRead`,short:`R`,tip:W(`perm.action.read`,e)},{key:`allowEdit`,short:`U`,tip:W(`perm.action.edit`,e)},{key:`allowDelete`,short:`D`,tip:W(`perm.action.delete`,e)},{key:`allowTransfer`,short:`Tr`,tip:W(`perm.action.transfer`,e)},{key:`viewAllRecords`,short:`VA`,tip:W(`perm.action.viewAll`,e)},{key:`modifyAllRecords`,short:`MA`,tip:W(`perm.action.modifyAll`,e)}]}function Lu({type:e,name:n,packageId:r,onDraftSaved:i,publishNonce:a,onOpenOwd:o,onDirtyChange:s,readOnly:c=!1,embedded:l=!1}){let u=t(),d=Qi(),f=ht(),{execute:p}=jt(),m=gt(),h=Ct(),{entries:g}=$i(d),_=g.find(t=>t.type===e),[v,y]=Y.useState(!1),b=!r&&v,x=(b?!!_?.allowOrgOverride:!!(_?.allowOrgOverride||_?.allowRuntimeCreate))&&!c,S=b&&!_?.allowOrgOverride&&!!_?.allowRuntimeCreate,C=Bo(),w=Y.useCallback(e=>W(e,C),[C]),T=Y.useMemo(()=>Iu(C),[C]),[E,D]=Y.useState({name:n,objects:{},fields:{}}),O=Y.useRef(null),k=Y.useCallback(e=>{try{O.current=JSON.stringify(e)}catch{O.current=null}D({...e})},[]),[A,j]=Y.useState([]),[M,N]=Y.useState({}),[P,ee]=Y.useState(new Set),[te,ne]=Y.useState(!0),[re,F]=Y.useState(!1),[ae,oe]=Y.useState(null),[se,ce]=Y.useState(!1),[de,fe]=Y.useState(!1),[me,he]=Y.useState(null),[ge,_e]=Y.useState(null),[ve,ye]=Y.useState(null),[be,xe]=Y.useState(``),[Se,Ce]=Y.useState(!1),[we,Te]=Y.useState(!1),[Ee,De]=Y.useState(!1),[Oe,ke]=Y.useState(!1),[Ae,Ne]=Y.useState([]);Y.useEffect(()=>{let e=!1;return d.list(`permission`,{}).then(t=>{e||Ne((t||[]).map(e=>e?.name).filter(e=>!!e))}).catch(()=>{}),()=>{e=!0}},[d]),Y.useEffect(()=>{let t=!1;return ne(!0),y(!1),ce(!1),_e(null),he(null),(async()=>{try{let[i,a,o]=await Promise.all([d.layered(e,n).catch(()=>null),d.list(`object`,r?{packageId:r}:{}).catch(()=>[]),r?d.getDraft(e,n,{packageId:r}).catch(()=>null):Promise.resolve(null)]);if(t)return;y(Pu(i));let s=(o?ie(o.item??o):null)??i?.effective??i?.code??{name:n,objects:{}},c=(a??[]).map(e=>{let t=e?.item??e;return{name:String(t?.name??``),label:t?.label,accessDefault:t?.access?.default,owd:typeof t?.sharingModel==`string`?t.sharingModel:void 0,owdExternal:typeof t?.externalSharingModel==`string`?t.externalSharingModel:void 0}}).filter(e=>!!e.name).sort((e,t)=>e.name.localeCompare(t.name));j(c);let l={...s,name:String(s?.name??n),objects:s?.objects??{},fields:s?.fields??{}};if(r){let e=Mu(l,c.map(e=>e.name));k({...l,objects:e.objects,fields:e.fields})}else k(l)}catch(e){oe(e?.message??String(e))}finally{t||ne(!1)}})(),()=>{t=!0}},[d,e,n,r,a,k]);async function Le(e){if(!M[e])try{let t=(await d.get(`object`,e))?.fields,n=(Array.isArray(t)?t.map(e=>({name:String(e?.name??``),label:e?.label})):t&&typeof t==`object`?Object.entries(t).map(([e,t])=>({name:String(t?.name??e),label:t?.label})):[]).filter(e=>!!e.name).sort((e,t)=>e.name.localeCompare(t.name));N(t=>({...t,[e]:n}))}catch{N(t=>({...t,[e]:[]}))}}let Re=Y.useCallback(async e=>{try{let t=(await d.get(`object`,e))?.fields,n=(Array.isArray(t)?t.map(e=>String(e?.name??``)):t&&typeof t==`object`?Object.entries(t).map(([e,t])=>String(t?.name??e)):[]).filter(Boolean);return Array.from(new Set(n)).sort((e,t)=>e.localeCompare(t))}catch{return[]}},[d]),[Be,Ve]=Y.useState(0),He=Y.useMemo(()=>{let e=O.current;if(e==null)return!1;try{return JSON.stringify(E)!==e}catch{return!1}},[E]),Ue=Y.useRef(s);Y.useEffect(()=>{Ue.current=s}),Y.useEffect(()=>{Ue.current?.(He)},[He]),Y.useEffect(()=>()=>{Ue.current?.(!1)},[]),Y.useEffect(()=>{if(!He)return;let e=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[He]);function We(e){ee(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(n.add(e),Le(e)),n})}function Ge(e,t,n){D(r=>{let i={...r.objects[e]??{},[t]:n};return t===`viewAllRecords`&&n&&(i.allowRead=!0),t===`modifyAllRecords`&&n&&(i.allowEdit=!0,i.allowRead=!0),{...r,objects:{...r.objects,[e]:i}}})}function Ke(e,t){D(n=>{if(t===`none`)return{...n,objects:{...n.objects,[e]:{}}};let r={...n.objects[e]??{}};for(let e of T)delete r[e.key];let i=t===`all`?T.map(e=>e.key):t===`crud`?[`allowCreate`,`allowRead`,`allowEdit`,`allowDelete`]:[`allowRead`];for(let e of i)r[e]=!0;return{...n,objects:{...n.objects,[e]:r}}})}function qe(e,t,n,r){let i=`${e}.${t}`;D(e=>{let t={...e.fields??{}},a={...t[i]??{readable:!0,editable:!1},[n]:r};return n===`readable`&&!r&&(a.editable=!1),n===`editable`&&r&&(a.readable=!0),t[i]=a,{...e,fields:t}})}function Je(e,t,n){n.length!==0&&D(r=>{let i={...r.fields??{}};for(let r of n){let n=`${e}.${r}`;t===`clear`?delete i[n]:i[n]=t===`readable`?{readable:!0,editable:!1}:{readable:!0,editable:!0}}return{...r,fields:i}})}function Ye(e){if(!r)return e;let t=Mu(e,A.map(e=>e.name));return{...e,objects:t.objects,fields:t.fields}}async function Xe(t,n){let a=n??E;F(!0),oe(null),ce(!1),_e(null);try{let n=a;if(r){let t=A.map(e=>e.name),r=!1,i=await d.layered(e,a.name).catch(()=>(r=!0,null));if(r)throw Error(w(`perm.save.rereadFailed`));n=Nu(i?.effective??a,a,t)}if(await d.save(e,a.name,n,{force:t,...r?{mode:`draft`,packageId:r}:{}}),r)k(Ye(n)),i?.();else{let t=!1,r=await d.layered(e,a.name).catch(()=>(t=!0,null));k(Ye(r?.effective??n)),ce(t)}ye(null)}catch(e){if(e?.status===409&&Et(e,`DESTRUCTIVE_CHANGE`)){let t=e?.body?.issues??[];ye({issues:Array.isArray(t)?t:[],pending:a})}else!r&&e?.status===403&&Et(e,`NOT_OVERRIDABLE`)?_e(e?.message??String(e)):oe(e?.message??String(e))}finally{F(!1)}}async function Ze(){if(!de){fe(!0),oe(null),he(null);try{let e=Du(await m.ensureType(`object`));if(!e)throw Error(w(`perm.clone.actionMissing`));let t=((f?await f.find(`sys_permission_set`,{$filter:{name:n},$top:1}):null)?.data??[])[0];if(!t)throw Error(U(`perm.clone.rowMissing`,C,{name:n}));let r=await p(Ou(e,t,h));if(!r.success)return;let i=r.data,a=typeof i?.record?.name==`string`?i.record.name:``;if(!a){oe(w(`perm.clone.noName`));return}l?he(a):u(`../${encodeURIComponent(a)}`,{relative:`path`})}catch(e){oe(e?.message??String(e))}finally{fe(!1)}}}let L=Y.useMemo(()=>{let e=be.trim().toLowerCase();return A.filter(t=>{if(Se){let e=E.objects[t.name];if(!e||!Object.values(e).some(Boolean))return!1}return!e||t.name.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)})},[A,be,Se,E.objects]),Qe=[{label:w(`perm.stat.objectsGranted`),value:Object.values(E.objects).filter(e=>Object.values(e).some(Boolean)).length},{label:w(`perm.stat.fieldOverrides`),value:Object.keys(E.fields??{}).length}],$e=(0,X.jsxs)(B,{size:`sm`,onClick:()=>void Ze(),disabled:de,title:w(`perm.clone.hint`),children:[de?(0,X.jsx)(V,{className:`h-4 w-4 mr-1 animate-spin`}):(0,X.jsx)(Gn,{className:`h-4 w-4 mr-1`}),w(`perm.clone.action`)]});return te?(0,X.jsx)(Fa,{entry:_,itemName:n,embedded:l,readOnly:c,children:(0,X.jsxs)(`div`,{className:`p-6 text-sm text-muted-foreground flex items-center gap-2`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` `,w(`perm.loading`).replace(`{name}`,n)]})}):(0,X.jsxs)(Fa,{entry:_??{type:e,label:e},itemName:n,subtitle:w(`perm.subtitle.set`),stats:Qe,embedded:l,readOnly:c,actions:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,onClick:()=>l?ke(!0):u(`./history?type=${encodeURIComponent(e)}`),children:[(0,X.jsx)(pi,{className:`h-4 w-4 mr-1`}),` `,w(`engine.edit.history`)]}),x&&(0,X.jsxs)(B,{size:`sm`,onClick:()=>Xe(!1),disabled:re||Be>0,title:Be>0?w(`perm.cel.saveBlocked`):void 0,children:[re?(0,X.jsx)(V,{className:`h-4 w-4 mr-1 animate-spin`}):(0,X.jsx)(gi,{className:`h-4 w-4 mr-1`}),w(`engine.edit.save`)]}),S&&$e]}),children:[(0,X.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[ae&&(0,X.jsxs)(`div`,{className:`m-4 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm text-destructive flex items-start gap-2`,children:[(0,X.jsx)(zi,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,X.jsx)(`span`,{children:ae})]}),S&&(0,X.jsxs)(`div`,{role:`note`,className:`m-4 rounded-md border bg-muted/40 p-3 text-sm flex items-start gap-2`,children:[(0,X.jsx)(Lr,{className:`h-4 w-4 mt-0.5 shrink-0 text-muted-foreground`}),(0,X.jsx)(`span`,{children:w(`perm.clone.guidance`)})]}),ge!==null&&(0,X.jsxs)(`div`,{role:`alert`,className:`m-4 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm text-destructive flex flex-col gap-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(zi,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,X.jsx)(`span`,{children:w(`perm.save.locked`)})]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 pl-6`,children:[$e,(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:ge})]})]}),me!==null&&(0,X.jsxs)(`div`,{role:`status`,className:`m-4 rounded-md border border-amber-300/60 bg-amber-50 dark:bg-amber-950/30 p-3 text-sm text-amber-800 dark:text-amber-200 flex items-start gap-2`,children:[(0,X.jsx)(Gn,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,X.jsx)(`span`,{children:U(`perm.clone.done`,C,{name:me})})]}),se&&(0,X.jsxs)(`div`,{role:`status`,className:`m-4 rounded-md border border-amber-300/60 bg-amber-50 dark:bg-amber-950/30 p-3 text-sm text-amber-800 dark:text-amber-200 flex items-start gap-2`,children:[(0,X.jsx)(zi,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,X.jsx)(`span`,{children:w(`perm.save.rereadStale`)})]}),(0,X.jsxs)(`div`,{className:`border-b bg-muted/30`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>Te(e=>!e),"aria-expanded":we,className:`w-full px-6 py-2.5 flex items-center gap-2 text-left hover:bg-muted/50 transition-colors`,children:[we?(0,X.jsx)(wn,{className:`h-4 w-4 shrink-0 text-muted-foreground`}):(0,X.jsx)(Tn,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`font-medium truncate`,children:E.label||E.name}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px] shrink-0`,children:E.managedBy===`platform`?w(`perm.badge.platform`):E.managedBy===`package`||r?w(`perm.badge.package`):w(`perm.badge.custom`)}),!!E.isDefault&&(0,X.jsx)(R,{variant:`secondary`,className:`text-[10px] shrink-0`,children:w(`perm.badge.default`)}),x&&(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:w(`perm.basics.editHint`)}),!x&&(0,X.jsx)(R,{variant:`secondary`,className:`ml-auto shrink-0`,title:w(c?`engine.studio.pkg.readonlyHint`:S?`perm.readOnly.artifact.hint`:`perm.readOnly.hint`),children:w(c?`engine.studio.pkg.readonly`:S?`perm.readOnly.artifact`:`perm.readOnly`)})]}),we&&(0,X.jsxs)(`div`,{className:`px-6 pb-3 flex flex-wrap items-end gap-4`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{htmlFor:`perm-name`,className:`text-xs`,children:w(`perm.field.name`)}),(0,X.jsx)(z,{id:`perm-name`,value:E.name,disabled:!x,onChange:e=>D(t=>({...t,name:e.target.value})),className:`h-8 w-56`})]}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{htmlFor:`perm-label`,className:`text-xs`,children:w(`perm.field.label`)}),(0,X.jsx)(z,{id:`perm-label`,value:E.label??``,disabled:!x,onChange:e=>D(t=>({...t,label:e.target.value})),className:`h-8 w-72`})]})]})]}),x&&(E.systemPermissions??[]).length===0&&!Ee?(0,X.jsxs)(`div`,{className:`px-6 py-2.5 border-b flex items-center gap-2 text-xs`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:w(`perm.field.systemCapabilities`)}),(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:w(`perm.cap.none`)}),(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-2 text-xs`,onClick:()=>De(!0),children:[`+ `,w(`perm.cap.add`)]})]}):(0,X.jsxs)(`div`,{className:`px-6 py-3 border-b`,children:[(0,X.jsx)(I,{className:`text-xs`,children:w(`perm.field.systemCapabilities`)}),(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5 mb-2`,children:w(`perm.field.systemCapabilitiesHelp`)}),(0,X.jsx)(`div`,{"data-testid":`capability-scroll`,className:`max-h-[30vh] overflow-y-auto overscroll-contain`,children:(0,X.jsx)(pe,{value:JSON.stringify(E.systemPermissions??[]),onChange:e=>D(t=>({...t,systemPermissions:Ie(e)})),field:{name:`system_permissions`},dataSource:f,readonly:!x})})]}),(0,X.jsxs)(`div`,{className:`px-6 py-3 border-b flex items-center gap-3`,children:[(0,X.jsx)(z,{placeholder:w(`perm.filter.placeholder`),value:be,onChange:e=>xe(e.target.value),className:`h-8 w-72`}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(ot,{id:`only-enabled`,checked:Se,onCheckedChange:e=>Ce(!!e)}),(0,X.jsx)(I,{htmlFor:`only-enabled`,className:`text-xs`,children:w(`perm.filter.onlyGranted`)})]}),(0,X.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:[L.length,` / `,A.length,` `,w(`perm.stat.objectsSuffix`)]})]}),(0,X.jsx)(`div`,{className:`px-6 py-2 border-b flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:T.map(e=>(0,X.jsxs)(`span`,{className:`whitespace-nowrap`,children:[(0,X.jsx)(`span`,{className:`font-medium text-foreground`,children:e.short}),` `,e.tip]},e.key))}),(0,X.jsxs)(`div`,{className:`flex-1 overflow-auto`,children:[(0,X.jsx)(Ru,{objects:L,draft:E,expanded:P,fieldsByObject:M,writable:x,objectActions:T,t:w,onToggleExpand:We,onObjectPerm:Ge,onFieldPerm:qe,onBulkSet:Ke,onFieldBulk:Je,onOpenOwd:o}),(0,X.jsx)(wu,{draft:E,setDraft:D,writable:x,allSetNames:Ae,loadObjectFields:Re,onCelErrorsChange:Ve,t:w})]})]}),(0,X.jsx)(rt,{open:!!ve,onOpenChange:e=>!e&&ye(null),children:(0,X.jsxs)(ue,{children:[(0,X.jsxs)(Fe,{children:[(0,X.jsxs)(ze,{className:`flex items-center gap-2`,children:[(0,X.jsx)(zi,{className:`h-4 w-4 text-amber-500`}),` `,w(`engine.edit.destructive`)]}),(0,X.jsx)(tt,{children:w(`engine.edit.destructiveHint`)})]}),(0,X.jsx)(`ul`,{className:`text-sm space-y-1 max-h-64 overflow-auto`,children:ve?.issues.map((e,t)=>(0,X.jsxs)(`li`,{className:`border-l-2 border-amber-500 pl-2`,children:[e.kind&&(0,X.jsx)(R,{variant:`outline`,className:`mr-2`,children:e.kind}),e.message??JSON.stringify(e)]},t))}),(0,X.jsxs)(Me,{children:[(0,X.jsx)(B,{variant:`ghost`,onClick:()=>ye(null),children:w(`engine.cancel`)}),(0,X.jsxs)(B,{variant:`destructive`,onClick:()=>ve&&Xe(!0,ve.pending),disabled:re,children:[re&&(0,X.jsx)(V,{className:`h-4 w-4 mr-1 animate-spin`}),w(`engine.edit.forceSave`)]})]})]})}),l&&(0,X.jsx)(nt,{open:Oe,onOpenChange:ke,children:(0,X.jsxs)(le,{side:`right`,className:`w-[92vw] sm:max-w-[720px] p-0 flex flex-col gap-0`,children:[(0,X.jsxs)(je,{className:`px-4 py-3 border-b`,children:[(0,X.jsx)(Pe,{className:`text-base`,children:w(`engine.edit.history`)}),(0,X.jsxs)(et,{className:`text-xs`,children:[e,` / `,n]})]}),(0,X.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto p-4`,children:Oe&&(0,X.jsx)(Ia,{type:e,name:n,client:d})})]})})]})}function Ru({objects:e,draft:t,expanded:n,fieldsByObject:r,writable:i,objectActions:a,t:o,onToggleExpand:s,onObjectPerm:c,onFieldPerm:l,onBulkSet:u,onFieldBulk:d,onOpenOwd:f}){return(0,X.jsxs)(`table`,{className:`w-full min-w-[960px] text-sm`,children:[(0,X.jsx)(`thead`,{className:`sticky top-0 bg-background border-b z-10`,children:(0,X.jsxs)(`tr`,{children:[(0,X.jsx)(`th`,{className:`text-left px-4 py-2 font-medium w-72`,children:o(`perm.col.object`)}),a.map(e=>(0,X.jsx)(`th`,{className:`px-2 py-2 font-medium text-center w-14`,title:e.tip,children:e.short},e.key)),(0,X.jsx)(`th`,{className:`px-2 py-2 font-medium w-44 text-right`,children:o(`perm.col.bulk`)})]})}),(0,X.jsxs)(`tbody`,{children:[e.length===0&&(0,X.jsx)(`tr`,{children:(0,X.jsx)(`td`,{colSpan:a.length+2,className:`px-4 py-8 text-center text-muted-foreground`,children:o(`perm.filter.empty`)})}),e.map(e=>{let p=t.objects[e.name]??{},m=n.has(e.name);return(0,X.jsxs)(Y.Fragment,{children:[(0,X.jsxs)(`tr`,{className:`border-b hover:bg-muted/30`,children:[(0,X.jsxs)(`td`,{className:`px-2 py-1.5 align-middle`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>s(e.name),className:`inline-flex items-center gap-1.5 hover:text-foreground`,children:[m?(0,X.jsx)(wn,{className:`h-3.5 w-3.5`}):(0,X.jsx)(Tn,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`font-medium`,children:e.label??e.name}),e.label&&(0,X.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,e.name,`)`]})]}),e.accessDefault===`private`&&(0,X.jsx)(R,{variant:`outline`,className:`ml-2 border-amber-500/50 text-amber-600 dark:text-amber-400 text-[10px] px-1.5 py-0 align-middle`,title:o(`perm.posture.private.tip`),children:o(`perm.posture.private`)}),(0,X.jsx)(R,{variant:`outline`,className:`ml-2 text-[10px] px-1.5 py-0 align-middle text-muted-foreground`+(f?` cursor-pointer hover:text-foreground hover:border-foreground/40 focus:outline-none focus:ring-1 focus:ring-primary`:``),title:o(f?`perm.owd.editLink`:`perm.owd.tip`),...f?{role:`button`,tabIndex:0,"data-testid":`owd-badge-${e.name}`,onClick:()=>f(e.name),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),f(e.name))}}:{},children:`OWD ${e.owd?Fu(o,e.owd):o(`perm.owd.defaultPrivate`)}`}),e.owdExternal&&(0,X.jsx)(R,{variant:`outline`,className:`ml-1 text-[10px] px-1.5 py-0 align-middle text-muted-foreground`,title:o(`perm.owd.ext.tip`),children:`Ext ${Fu(o,e.owdExternal)}`})]}),a.map(t=>(0,X.jsx)(`td`,{className:`text-center px-2 py-1.5`,children:(0,X.jsx)(He,{checked:!!p[t.key],disabled:!i,onCheckedChange:n=>c(e.name,t.key,!!n),"aria-label":`${e.name} ${t.tip}`})},t.key)),(0,X.jsxs)(`td`,{className:`px-2 py-1.5 text-right space-x-1`,children:[(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:!i,onClick:()=>u(e.name,`read`),children:o(`perm.bulk.read`)}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:!i,onClick:()=>u(e.name,`crud`),children:o(`perm.bulk.crud`)}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:!i,onClick:()=>u(e.name,`all`),children:o(`perm.bulk.all`)}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:!i,onClick:()=>u(e.name,`none`),children:o(`perm.bulk.none`)})]})]}),m&&(0,X.jsx)(`tr`,{className:`bg-muted/10`,children:(0,X.jsx)(`td`,{colSpan:a.length+2,className:`px-12 py-3`,children:(0,X.jsx)(zu,{objectName:e.name,fields:r[e.name],fieldsState:t.fields??{},writable:i,t:o,onFieldPerm:l,onFieldBulk:d})})})]},e.name)})]})]})}function zu({objectName:e,fields:t,fieldsState:n,writable:r,t:i,onFieldPerm:a,onFieldBulk:o}){let[s,c]=Y.useState(``);if(!t)return(0,X.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-2`,children:[(0,X.jsx)(V,{className:`h-3 w-3 animate-spin`}),` `,i(`perm.field.loading`)]});if(t.length===0)return(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:i(`perm.field.empty`)});let l=s.trim().toLowerCase(),u=l?t.filter(e=>e.name.toLowerCase().includes(l)||(e.label??``).toLowerCase().includes(l)):t,d=u.map(e=>e.name);return(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[t.length>6&&(0,X.jsx)(z,{value:s,onChange:e=>c(e.target.value),placeholder:i(`perm.field.filter`),"aria-label":i(`perm.field.filter`),className:`h-7 w-44 text-xs`}),r&&(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:d.length===0,onClick:()=>o(e,`readable`,d),children:i(`perm.field.bulk.readable`)}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:d.length===0,onClick:()=>o(e,`writable`,d),children:i(`perm.field.bulk.writable`)}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 text-xs`,disabled:d.length===0,onClick:()=>o(e,`clear`,d),children:i(`perm.field.bulk.clear`)})]}),(0,X.jsxs)(`span`,{className:`ml-auto text-[11px] text-muted-foreground`,children:[u.length,` / `,t.length]})]}),u.length===0?(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:i(`perm.field.filterEmpty`)}):(0,X.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,X.jsx)(`thead`,{children:(0,X.jsxs)(`tr`,{className:`text-muted-foreground`,children:[(0,X.jsx)(`th`,{className:`text-left py-1 font-medium`,children:i(`perm.field.col.name`)}),(0,X.jsx)(`th`,{className:`px-2 py-1 font-medium w-16 text-center`,title:i(`perm.field.read`),children:i(`perm.field.read`)}),(0,X.jsx)(`th`,{className:`px-2 py-1 font-medium w-16 text-center`,title:i(`perm.field.edit`),children:i(`perm.field.edit`)})]})}),(0,X.jsx)(`tbody`,{children:u.map(t=>{let i=n[`${e}.${t.name}`]??{readable:!0,editable:!1};return(0,X.jsxs)(`tr`,{className:`border-t border-muted`,children:[(0,X.jsxs)(`td`,{className:`py-1`,children:[t.label??t.name,t.label&&(0,X.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,t.name,`)`]})]}),(0,X.jsx)(`td`,{className:`px-2 py-1 text-center`,children:(0,X.jsx)(He,{checked:!!i.readable,disabled:!r,onCheckedChange:n=>a(e,t.name,`readable`,!!n),"aria-label":`${e}.${t.name} readable`})}),(0,X.jsx)(`td`,{className:`px-2 py-1 text-center`,children:(0,X.jsx)(He,{checked:!!i.editable,disabled:!r,onCheckedChange:n=>a(e,t.name,`editable`,!!n),"aria-label":`${e}.${t.name} editable`})})]},t.name)})})]})]})}function Bu(){return`${``.replace(/\/$/,``)}/api/v1`}function Vu(e){let t=e,n=t?._packageId;return typeof n!=`string`||!n||n===`sys_metadata`?!1:t?._provenance!==`org`}function Hu(e,t){let n=new Map;for(let e of t){let t=e,r=t?.name;typeof r==`string`&&r&&Vu(t)&&n.set(r,t)}let r=[];for(let t of e){let e=t?.name;if(typeof e!=`string`||!e)continue;let i=n.get(e);if(!i)continue;let a=i.label;r.push({name:e,label:typeof a==`string`&&a?a:e,enabled:t.enabled!==!1})}return r.sort((e,t)=>e.label.localeCompare(t.label)||e.name.localeCompare(t.name))}function Uu(e){let t=e?.data;return!t||typeof t!=`object`||Array.isArray(t)?{}:t}function Wu(e){return e?.success===!1}function Gu(e){let t=e,n=t?.data?.flows??t?.flows??[];return Array.isArray(n)?n:[]}function Ku(e){if(Array.isArray(e))return e;let t=e?.items;return Array.isArray(t)?t:[]}var qu=`global`;function Ju(e){let t=e,n=t?.data?.records??t?.records??[];return Array.isArray(n)?n:[]}function Yu(e){let t=e;return(t?.data?.hasMore??t?.hasMore)===!0}function Xu(e){let t=new Map;for(let n of e){if(n?.metadata_type!==`action`||n?.organization_id!=null)continue;let e=n?.name;if(typeof e!=`string`||!e)continue;let r=n?.active;t.set(e,r!==!1&&r!==0)}return t}function Zu(e){let t=e;return typeof t?.objectName==`string`&&t.objectName.length>0?t.objectName:typeof t?.object==`string`&&t.object.length>0?t.object:qu}function Qu(e,t){let n=e;return typeof n?._packageId==`string`||typeof n?._provenance==`string`?e:t}function $u(e,t,n){let r=[],i=new Set,a=(e,t,a)=>{let o=e,s=o?.name;if(typeof s!=`string`||!s)return;let c=`${t}:${s}`;if(i.has(c)||(i.add(c),!Vu(Qu(e,a))))return;let l=o?.label;r.push({name:s,objectName:t,label:typeof l==`string`&&l?l:s,enabled:n.get(s)??!0})},o=new Map;for(let t of e){let e=t;typeof e?.name==`string`&&e.name&&o.set(e.name,t)}for(let t of e){let e=t,n=e?.name;if(typeof n==`string`&&n)for(let r of Array.isArray(e?.actions)?e.actions:[])a(r,n,t)}for(let e of t){let t=Zu(e);a(e,t,o.get(t))}return r.sort((e,t)=>e.label.localeCompare(t.label)||e.objectName.localeCompare(t.objectName)||e.name.localeCompare(t.name))}var ed={Accept:`application/json`},td=1e3;async function nd(e){return e.json().catch(()=>null)}async function rd(e,t){return fetch(`${Bu()}${e}`,{credentials:`include`,headers:ed,cache:`no-store`,signal:t})}async function id(e){let t=await rd(`/meta/object`,e);if(!t.ok)throw Error(`object metadata HTTP ${t.status}`);return Ku(await nd(t))}async function ad(e){try{let t=await rd(`/meta/action`,e);return t.ok?Ku(await nd(t)):[]}catch(e){if(e?.name===`AbortError`)throw e;return[]}}async function od(e){let t=await rd(`/data/sys_metadata_activation?top=${td}`,e);if(!t.ok)throw Error(`activation ledger HTTP ${t.status}`);let n=await nd(t);if(Yu(n))throw Error(`activation ledger returned more than ${td} rows; refusing to show a partial ledger because a missing row reads as "active"`);return Xu(Ju(n))}function sd(e){return`${e.objectName}:${e.name}`}function cd({nonce:e=0}){let{t}=Jt(),[n,r]=Y.useState(null),[i,a]=Y.useState(null),[o,s]=Y.useState(null),[c,l]=Y.useState({});Y.useEffect(()=>{let e=new AbortController,n=!1;return a(null),(async()=>{try{let[t,i,a]=await Promise.all([id(e.signal),ad(e.signal),od(e.signal)]);if(n)return;r($u(t,i,a))}catch(i){if(n||e.signal.aborted)return;r([]),a(i instanceof Error&&i.message?i.message:t(`packagedAutomation.actionsLoadFailed`,{defaultValue:`Could not load packaged actions.`}))}})(),()=>{n=!0,e.abort()}},[e,t]);let u=Y.useCallback(e=>{l(t=>{if(!(e in t))return t;let n={...t};return delete n[e],n})},[]);async function d(e,n){let i=sd(e);s(i),u(i);try{let a=await fetch(`${Bu()}/actions/_activation/${encodeURIComponent(e.objectName)}/${encodeURIComponent(e.name)}`,{method:`POST`,credentials:`include`,headers:{...ed,"Content-Type":`application/json`},body:JSON.stringify({enabled:n})}),o=await nd(a);if(!a.ok||Wu(o)){l(e=>({...e,[i]:kt(o,t(`packagedAutomation.toggleFailedHttp`,{defaultValue:`Could not change activation (HTTP {{status}}).`,status:a.status}))}));return}let s=Uu(o).enabled,c=typeof s==`boolean`?s:n;r(e=>e?.map(e=>sd(e)===i?{...e,enabled:c}:e)??e)}catch(e){l(n=>({...n,[i]:e instanceof Error&&e.message?e.message:t(`packagedAutomation.toggleFailed`,{defaultValue:`Could not change activation.`})}))}finally{s(null)}}return(0,X.jsxs)(`section`,{className:`space-y-3`,"data-testid":`packaged-actions-section`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(`h2`,{className:`text-base font-semibold`,children:t(`packagedAutomation.actionsHeading`,{defaultValue:`Packaged actions`})}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-2xl`,children:t(`packagedAutomation.actionsSubtitle`,{defaultValue:`Actions shipped by installed packages. Turn one off for this deployment and it stops running everywhere it is offered. Authoring your own action alongside it stays open in Studio.`})})]}),i&&(0,X.jsx)(`div`,{role:`alert`,className:`rounded-md border border-destructive/40 bg-destructive/10 p-3 text-sm`,children:i}),n===null&&(0,X.jsxs)(`div`,{className:`space-y-2`,"data-testid":`packaged-actions-loading`,children:[(0,X.jsx)(me,{className:`h-10 w-full`}),(0,X.jsx)(me,{className:`h-10 w-full`})]}),n!==null&&n.length===0&&!i&&(0,X.jsxs)(ut,{children:[(0,X.jsx)(Le,{children:t(`packagedAutomation.actionsEmptyTitle`,{defaultValue:`No packaged actions`})}),(0,X.jsx)(We,{children:t(`packagedAutomation.actionsEmptyBody`,{defaultValue:`No installed package declares an action on this deployment. Actions you author yourself live in Studio.`})})]}),n!==null&&n.length>0&&(0,X.jsxs)(Qe,{children:[(0,X.jsx)($e,{children:(0,X.jsxs)(Ze,{children:[(0,X.jsx)(st,{children:t(`packagedAutomation.colAction`,{defaultValue:`Action`})}),(0,X.jsx)(st,{className:`w-[200px]`,children:t(`packagedAutomation.colObject`,{defaultValue:`Object`})}),(0,X.jsx)(st,{className:`w-[220px]`,children:t(`packagedAutomation.colActivation`,{defaultValue:`Activation`})})]})}),(0,X.jsx)(ct,{children:n.map(e=>{let n=sd(e),r=c[n];return(0,X.jsxs)(Ze,{"data-testid":`packaged-action-${e.objectName}-${e.name}`,children:[(0,X.jsxs)(at,{className:`align-top`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:e.label}),(0,X.jsx)(`code`,{className:`font-mono text-xs text-muted-foreground`,children:e.name}),r&&(0,X.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-destructive`,children:r})]}),(0,X.jsx)(at,{className:`align-top`,children:(0,X.jsx)(`code`,{className:`font-mono text-xs text-muted-foreground`,children:e.objectName})}),(0,X.jsx)(at,{className:`align-top`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(ot,{checked:e.enabled,disabled:o===n,onCheckedChange:t=>void d(e,t),"aria-label":t(`packagedAutomation.actionToggleLabel`,{defaultValue:`Activation for {{label}} on {{object}}`,label:e.label,object:e.objectName})}),(0,X.jsx)(R,{variant:e.enabled?`default`:`secondary`,children:e.enabled?t(`packagedAutomation.on`,{defaultValue:`On`}):t(`packagedAutomation.off`,{defaultValue:`Off`})})]})})]},n)})})]})]})}var ld={Accept:`application/json`};async function ud(e){return e.json().catch(()=>null)}async function dd(e){let t=await fetch(`${Bu()}/automation/_status`,{credentials:`include`,headers:ld,cache:`no-store`,signal:e});if(!t.ok)throw Error(`automation status HTTP ${t.status}`);return Gu(await ud(t))}async function fd(e){let t=await fetch(`${Bu()}/meta/flow`,{credentials:`include`,headers:ld,cache:`no-store`,signal:e});if(!t.ok)throw Error(`flow metadata HTTP ${t.status}`);return Ku(await ud(t))}function pd(){let{t:e}=Jt(),[t,n]=Y.useState(null),[r,i]=Y.useState(null),[a,o]=Y.useState(0),[s,c]=Y.useState(null),[l,u]=Y.useState({}),[d,f]=Y.useState(null),[p,m]=Y.useState(null);Y.useEffect(()=>{let t=new AbortController,r=!1;return i(null),(async()=>{try{let[e,i]=await Promise.all([dd(t.signal),fd(t.signal)]);if(r)return;n(Hu(e,i))}catch(a){if(r||t.signal.aborted)return;n([]),i(a instanceof Error&&a.message?a.message:e(`packagedAutomation.loadFailed`,{defaultValue:`Could not load packaged automation.`}))}})(),()=>{r=!0,t.abort()}},[a,e]);let h=Y.useCallback(e=>{u(t=>{if(!(e in t))return t;let n={...t};return delete n[e],n})},[]);async function g(t,r){c(t.name),h(t.name),m(null);try{let i=await fetch(`${Bu()}/automation/${encodeURIComponent(t.name)}/toggle`,{method:`POST`,credentials:`include`,headers:{...ld,"Content-Type":`application/json`},body:JSON.stringify({enabled:r})}),a=await ud(i);if(!i.ok||Wu(a)){u(n=>({...n,[t.name]:kt(a,e(`packagedAutomation.toggleFailedHttp`,{defaultValue:`Could not change activation (HTTP {{status}}).`,status:i.status}))}));return}let o=Uu(a).enabled,s=typeof o==`boolean`?o:r;n(e=>e?.map(e=>e.name===t.name?{...e,enabled:s}:e)??e)}catch(n){u(r=>({...r,[t.name]:n instanceof Error&&n.message?n.message:e(`packagedAutomation.toggleFailed`,{defaultValue:`Could not change activation.`})}))}finally{c(null)}}async function _(t){f({...t,busy:!0,refusal:null});try{let n=await fetch(`${Bu()}/automation/${encodeURIComponent(t.source)}/clone`,{method:`POST`,credentials:`include`,headers:{...ld,"Content-Type":`application/json`},body:JSON.stringify({name:t.name.trim(),label:t.label.trim()})}),r=await ud(n);if(!n.ok||Wu(r)){f({...t,busy:!1,refusal:kt(r,e(`packagedAutomation.cloneFailedHttp`,{defaultValue:`Could not clone this flow (HTTP {{status}}).`,status:n.status}))});return}let i=Uu(r),a=i.flow?.name,s=i.notice;f(null),m({name:typeof a==`string`&&a?a:t.name.trim(),notice:typeof s==`string`?s:``}),o(e=>e+1)}catch(n){f({...t,busy:!1,refusal:n instanceof Error&&n.message?n.message:e(`packagedAutomation.cloneFailed`,{defaultValue:`Could not clone this flow.`})})}}let v=e(`packagedAutomation.title`,{defaultValue:`Packaged automation`}),y=!!d&&d.name.trim()!==``&&d.label.trim()!==``;return(0,X.jsxs)(`div`,{className:`p-6 space-y-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(`h1`,{className:`text-xl font-semibold`,children:v}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-2xl`,children:e(`packagedAutomation.subtitle`,{defaultValue:`Flows and actions shipped by installed packages. Turn one off for this deployment, or clone a flow under a new name to customize it. Editing happens in Studio.`})})]}),(0,X.jsx)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>o(e=>e+1),"aria-label":e(`packagedAutomation.refresh`,{defaultValue:`Refresh`}),children:(0,X.jsx)(li,{className:`h-4 w-4`})})]}),(0,X.jsx)(`h2`,{className:`text-base font-semibold`,children:e(`packagedAutomation.flowsHeading`,{defaultValue:`Packaged flows`})}),p&&(0,X.jsxs)(`div`,{role:`status`,className:`rounded-md border border-border bg-muted/40 p-3 text-sm space-y-1`,children:[(0,X.jsx)(`p`,{className:`font-medium`,children:e(`packagedAutomation.cloneCreated`,{defaultValue:`Created flow "{{name}}".`,name:p.name})}),p.notice&&(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:p.notice})]}),r&&(0,X.jsx)(`div`,{role:`alert`,className:`rounded-md border border-destructive/40 bg-destructive/10 p-3 text-sm`,children:r}),t===null&&(0,X.jsxs)(`div`,{className:`space-y-2`,"data-testid":`packaged-automation-loading`,children:[(0,X.jsx)(me,{className:`h-10 w-full`}),(0,X.jsx)(me,{className:`h-10 w-full`}),(0,X.jsx)(me,{className:`h-10 w-full`})]}),t!==null&&t.length===0&&!r&&(0,X.jsxs)(ut,{children:[(0,X.jsx)(Le,{children:e(`packagedAutomation.emptyTitle`,{defaultValue:`No packaged flows`})}),(0,X.jsx)(We,{children:e(`packagedAutomation.emptyBody`,{defaultValue:`No installed package ships an automation flow on this deployment. Flows you author yourself live in Studio.`})})]}),t!==null&&t.length>0&&(0,X.jsxs)(Qe,{children:[(0,X.jsx)($e,{children:(0,X.jsxs)(Ze,{children:[(0,X.jsx)(st,{children:e(`packagedAutomation.colFlow`,{defaultValue:`Flow`})}),(0,X.jsx)(st,{className:`w-[220px]`,children:e(`packagedAutomation.colActivation`,{defaultValue:`Activation`})}),(0,X.jsx)(st,{className:`w-[140px] text-right`,children:e(`packagedAutomation.colActions`,{defaultValue:`Actions`})})]})}),(0,X.jsx)(ct,{children:t.map(t=>{let n=l[t.name];return(0,X.jsxs)(Ze,{"data-testid":`packaged-flow-${t.name}`,children:[(0,X.jsxs)(at,{className:`align-top`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:t.label}),(0,X.jsx)(`code`,{className:`font-mono text-xs text-muted-foreground`,children:t.name}),n&&(0,X.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-destructive`,children:n})]}),(0,X.jsx)(at,{className:`align-top`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(ot,{checked:t.enabled,disabled:s===t.name,onCheckedChange:e=>void g(t,e),"aria-label":e(`packagedAutomation.toggleLabel`,{defaultValue:`Activation for {{label}}`,label:t.label})}),(0,X.jsx)(R,{variant:t.enabled?`default`:`secondary`,children:t.enabled?e(`packagedAutomation.on`,{defaultValue:`On`}):e(`packagedAutomation.off`,{defaultValue:`Off`})})]})}),(0,X.jsx)(at,{className:`align-top text-right`,children:(0,X.jsx)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>f({source:t.name,name:``,label:``,refusal:null,busy:!1}),children:e(`packagedAutomation.clone`,{defaultValue:`Clone`})})})]},t.name)})})]}),(0,X.jsx)(cd,{nonce:a}),(0,X.jsx)(rt,{open:!!d,onOpenChange:e=>!e&&f(null),children:(0,X.jsxs)(ue,{children:[(0,X.jsxs)(Fe,{children:[(0,X.jsx)(ze,{children:e(`packagedAutomation.cloneTitle`,{defaultValue:`Clone packaged flow`})}),(0,X.jsx)(tt,{children:e(`packagedAutomation.cloneBody`,{defaultValue:`The copy carries the whole definition and takes a new machine name and label. Edit the copy in Studio.`})})]}),d&&(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{htmlFor:`packaged-clone-name`,children:e(`packagedAutomation.cloneName`,{defaultValue:`New machine name`})}),(0,X.jsx)(z,{id:`packaged-clone-name`,value:d.name,onChange:e=>f({...d,name:e.target.value,refusal:null})})]}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{htmlFor:`packaged-clone-label`,children:e(`packagedAutomation.cloneLabel`,{defaultValue:`New label`})}),(0,X.jsx)(z,{id:`packaged-clone-label`,value:d.label,onChange:e=>f({...d,label:e.target.value,refusal:null})})]}),d.refusal&&(0,X.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:d.refusal})]}),(0,X.jsxs)(Me,{children:[(0,X.jsx)(B,{type:`button`,variant:`ghost`,onClick:()=>f(null),children:e(`packagedAutomation.cancel`,{defaultValue:`Cancel`})}),(0,X.jsx)(B,{type:`button`,disabled:!y||!!d?.busy,onClick:()=>d&&void _(d),children:e(`packagedAutomation.cloneConfirm`,{defaultValue:`Create clone`})})]})]})})]})}function md(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function hd(e){if(!md(e))return;let t=e.config;if(md(t)&&typeof t.type==`string`)return t.type;if(typeof e.type==`string`)return e.type;if(e.viewKind===`form`)return`form`;if(e.viewKind===`list`)return`list`}var gd=(0,Y.lazy)(()=>n(()=>import(`./metadata-admin-CybaOCdO.js`).then(e=>({default:e.MetadataDirectoryPage})),__vite__mapDeps([0]),import.meta.url)),_d=(0,Y.lazy)(()=>n(()=>import(`./metadata-admin-CybaOCdO.js`).then(e=>({default:e.MetadataResourceRouter})),__vite__mapDeps([0]),import.meta.url));function vd({label:e}){return(0,X.jsxs)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:[`Loading `,e,`…`]})}cs({ref:`metadata:directory`,label:`All Metadata Types`,source:`@object-ui/app-shell`,component:e=>(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsx)(vd,{label:`metadata types`}),children:(0,X.jsx)(gd,{...e})})}),cs({ref:`metadata:resource`,label:`Metadata Resource`,source:`@object-ui/app-shell`,component:e=>(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsx)(vd,{label:`metadata resource`}),children:(0,X.jsx)(_d,{...e})})}),cs({ref:`developer:packages`,label:`Packages`,source:`@object-ui/app-shell`,component:ja}),cs({ref:`automation:packaged`,label:`Packaged Automation`,source:`@object-ui/app-shell`,component:pd}),ka({type:`object`,label:`Objects`,description:`Domain entities — tables in the data model. Each object owns its fields, relationships, validations, and lifecycle hooks.`,domain:`data`,searchableFields:[`name`,`label`,`description`],listColumns:[{key:`name`,label:`Name`,width:`25%`},{key:`label`,label:`Label`,width:`25%`},{key:`description`,label:`Description`}]}),ka({type:`field`,label:`Fields`,description:`Columns attached to objects — name, type, validation, and storage settings.`,domain:`data`,searchableFields:[`name`,`label`,`object`,`type`],listColumns:[{key:`name`,label:`Name`,width:`25%`},{key:`object`,label:`Object`,width:`20%`},{key:`type`,label:`Type`,width:`15%`},{key:`label`,label:`Label`}]}),ka({type:`permission`,label:`Permission sets`,description:`Object-level CRUD + VAMA + lifecycle permissions, and field-level R/W. The only capability container (ADR-0090); distributed to users via positions.`,domain:`security`,EditPage:Lu,searchableFields:[`name`,`label`],listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`managedBy`,label:`Source`,width:`15%`,render:e=>e===`package`?`Package`:`Custom`}]}),ka({type:`view`,label:`Views`,description:`Saved list / kanban / calendar / gantt configurations on top of an object.`,domain:`ui`,listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`object`,label:`Object`,width:`20%`},{key:`type`,label:`Type`,width:`15%`,render:(e,t)=>hd(t)??`—`},{key:`label`,label:`Label`}],listFilter:e=>!g(e)}),ka({type:`dashboard`,label:`Dashboards`,description:`Composed dashboards with charts, KPIs, and tables.`,domain:`ui`,listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`description`,label:`Description`}]}),ka({type:`page`,label:`Pages`,description:`Visual page layouts authored as JSON metadata.`,domain:`ui`,listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`route`,label:`Route`}]}),ka({type:`book`,label:`Documentation Books`,description:`Documentation navigation spine — ordered groups with membership derived over docs (glob/tag rules), plus an explicit pages override for curated order.`,domain:`system`,searchableFields:[`name`,`label`,`description`,`slug`],listColumns:[{key:`name`,label:`Name`,width:`25%`},{key:`label`,label:`Label`,width:`25%`},{key:`audience`,label:`Audience`,width:`12%`,render:e=>e==null?`org`:typeof e==`object`&&e&&`permissionSet`in e?`permission set: ${e.permissionSet}`:String(e)},{key:`groups`,label:`Groups`,width:`10%`,render:e=>Array.isArray(e)?String(e.length):`0`},{key:`description`,label:`Description`}]});var yd=`/api/v1/cloud-connection`;function bd(e,t,n){for(let r of[t,n]){if(r===`expired_token`)return e(`cloudConnection.errors.expired`);if(r===`access_denied`)return e(`cloudConnection.errors.accessDenied`)}return null}async function xd(e,t){let n=await fetch(e,{credentials:`same-origin`,headers:{"Content-Type":`application/json`},...t}),r=await n.json().catch(()=>({}));if(!n.ok&&r?.success!==!0){let e=r?.error?.message??r?.error?.code??r?.error??`HTTP ${n.status}`;throw Object.assign(Error(typeof e==`string`?e:JSON.stringify(e)),{declaredCode:typeof r?.error?.declaredCode==`string`?r.error.declaredCode:void 0,code:typeof r?.error?.code==`string`?r.error.code:void 0})}return r}function Sd(){let{t:e}=Jt(),t=qt(),[n,r]=(0,Y.useState)({kind:`loading`}),[i,a]=(0,Y.useState)(!1),[o,s]=(0,Y.useState)(!1),c=(0,Y.useRef)(null),l=(0,Y.useRef)(e);(0,Y.useEffect)(()=>{l.current=e},[e]);let u=(0,Y.useCallback)(e=>{let t=e;return bd(l.current,t?.declaredCode,t?.code)??t?.message??String(e)},[]),d=(0,Y.useCallback)(()=>{c.current&&=(clearTimeout(c.current),null)},[]),f=(0,Y.useCallback)(async()=>{try{let e=(await xd(`${yd}/status`))?.data??{environmentId:null,bound:!1,connection:null};r(e.bound?{kind:`bound`,status:e}:{kind:`unbound`})}catch(e){r({kind:`error`,message:u(e)})}},[u]);(0,Y.useEffect)(()=>(f(),d),[f,d]);let p=(0,Y.useCallback)((t,n)=>{let i=Math.max(t.interval,2)*1e3,a=async()=>{if(Date.now()-n>t.expires_in*1e3){r({kind:`error`,message:e(`cloudConnection.errors.expired`)});return}try{let n=await xd(`${yd}/bind/poll`,{method:`POST`,body:JSON.stringify({device_code:t.device_code})});if(n?.data?.pending){c.current=setTimeout(a,i);return}if(n?.data?.bound||n?.success){await f();return}r({kind:`error`,message:bd(e,n?.error?.declaredCode,n?.error?.code)??n?.error?.message??n?.error?.code??e(`cloudConnection.errors.bindFailed`)})}catch(e){r({kind:`error`,message:u(e)})}};c.current=setTimeout(a,i)},[u,f,e]),m=(0,Y.useCallback)(async()=>{a(!0);try{let t=(await xd(`${yd}/bind/start`,{method:`POST`,body:`{}`}))?.data;if(!t?.device_code||!t?.user_code)throw Error(e(`cloudConnection.errors.deviceCodeFailed`));let n=t.verification_uri_complete??t.verification_uri,i=!1;if(n)try{i=!!window.open(n,`_blank`,`noopener,width=520,height=720`)}catch{}r({kind:`waiting`,code:t,popupOpened:i}),p(t,Date.now())}catch(e){r({kind:`error`,message:u(e)})}finally{a(!1)}},[u,p,e]),h=(0,Y.useCallback)(async()=>{a(!0);try{await xd(`${yd}/unbind`,{method:`POST`,body:`{}`}),await f()}catch(e){r({kind:`error`,message:u(e)})}finally{a(!1)}},[u,f]),g=(0,Y.useCallback)(async e=>{try{await navigator.clipboard.writeText(e),s(!0),setTimeout(()=>s(!1),1500)}catch{}},[]);if(n.kind===`loading`)return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border p-6 text-sm text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),` `,e(`cloudConnection.checking`)]});if(n.kind===`error`)return(0,X.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-destructive/40 bg-destructive/5 p-6`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-destructive`,children:[(0,X.jsx)(kn,{className:`h-4 w-4`,"aria-hidden":`true`}),` `,n.message]}),(0,X.jsx)(`button`,{type:`button`,className:`self-start rounded-md border px-3 py-1.5 text-sm hover:bg-accent`,onClick:()=>{d(),f()},children:e(`cloudConnection.retry`)})]});if(n.kind===`waiting`){let t=n.code.verification_uri_complete??n.code.verification_uri;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg border p-6`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),n.popupOpened?e(`cloudConnection.waiting.popupOpened`):e(`cloudConnection.waiting.polling`)]}),!n.popupOpened&&t?(0,X.jsxs)(`a`,{className:`inline-flex items-center gap-1.5 self-start rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,href:t,target:`_blank`,rel:`noreferrer`,children:[e(`cloudConnection.waiting.openApproval`),` `,(0,X.jsx)($n,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})]}):null,(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(`code`,{className:`rounded-md bg-muted px-4 py-2 text-2xl font-semibold tracking-[0.25em]`,children:n.code.user_code}),(0,X.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-accent`,onClick:()=>void g(n.code.user_code),children:[(0,X.jsx)(Gn,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),e(o?`cloudConnection.waiting.copied`:`cloudConnection.waiting.copy`)]})]}),(0,X.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[e(`cloudConnection.waiting.codePrefilled`),n.popupOpened&&t?(0,X.jsxs)(X.Fragment,{children:[` `,(0,X.jsxs)(`a`,{className:`inline-flex items-center gap-1 text-primary underline-offset-2 hover:underline`,href:t,target:`_blank`,rel:`noreferrer`,children:[e(`cloudConnection.waiting.openItHere`),` `,(0,X.jsx)($n,{className:`h-3 w-3`,"aria-hidden":`true`})]})]}):null]}),(0,X.jsx)(`button`,{type:`button`,className:`self-start rounded-md border px-3 py-1.5 text-sm hover:bg-accent`,onClick:()=>{d(),f()},children:e(`cloudConnection.waiting.cancel`)})]})}if(n.kind===`bound`){let r=n.status.connection??{},a=r.runtime_id??n.status.runtimeId;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg border p-6`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(An,{className:`h-5 w-5 text-emerald-600`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`font-medium`,children:e(`cloudConnection.bound.title`)})]}),(0,X.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-6 gap-y-1.5 text-sm`,children:[r.name?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.runtime`)}),(0,X.jsx)(`dd`,{children:r.name})]}):null,r.organization_id?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.organization`)}),(0,X.jsx)(`dd`,{className:`font-mono`,children:r.organization_id})]}):null,r.account_email?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.approvedBy`)}),(0,X.jsx)(`dd`,{children:r.account_email})]}):null,a?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.runtimeId`)}),(0,X.jsx)(`dd`,{className:`font-mono text-xs`,children:a})]}):null,n.status.environmentId?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.environment`)}),(0,X.jsx)(`dd`,{className:`font-mono`,children:n.status.environmentId})]}):null,r.bound_at?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.since`)}),(0,X.jsx)(`dd`,{children:new Date(r.bound_at).toLocaleString(t)})]}):null]}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`cloudConnection.bound.privatePackages`)}),(0,X.jsxs)(`button`,{type:`button`,disabled:i,className:`inline-flex items-center gap-1.5 self-start rounded-md border border-destructive/40 px-3 py-1.5 text-sm text-destructive hover:bg-destructive/5 disabled:opacity-50`,onClick:()=>void h(),children:[(0,X.jsx)(Vi,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),` `,e(`cloudConnection.bound.disconnect`)]})]})}return(0,X.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg border p-6`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(zn,{className:`h-5 w-5 text-muted-foreground`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`font-medium`,children:e(`cloudConnection.unbound.title`)})]}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`cloudConnection.unbound.body`)}),(0,X.jsxs)(`button`,{type:`button`,disabled:i,className:`inline-flex items-center gap-1.5 self-start rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50`,onClick:()=>void m(),children:[i?(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}):(0,X.jsx)(Bn,{className:`h-4 w-4`,"aria-hidden":`true`}),e(`cloudConnection.unbound.connect`)]})]})}Tt.register(`cloud-connection:panel`,()=>(0,X.jsx)(Sd,{}),{namespace:`app-shell`,label:`Cloud Connection Panel`,category:`plugin`,inputs:[]});var Cd=``.replace(/\/$/,``);function wd(e){let t=d.get();return t?{...e,Authorization:`Bearer ${t}`}:e}function Td(e){let t=Cd||(typeof window<`u`?window.location.origin:``);try{return new URL(e,t||void 0).toString()}catch{return e}}function Ed({text:e,label:t}){let[n,r]=(0,Y.useState)(!1);return(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:async()=>{try{await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1500)}catch{}},children:[n?(0,X.jsx)(Cn,{className:`h-3.5 w-3.5`}):(0,X.jsx)(Gn,{className:`h-3.5 w-3.5`}),t?(0,X.jsx)(`span`,{className:`ml-1`,children:t}):null]})}function Dd({text:e}){return(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(`pre`,{className:`flex-1 overflow-x-auto rounded-md bg-muted px-3 py-2 text-xs leading-relaxed`,children:(0,X.jsx)(`code`,{children:e})}),(0,X.jsx)(Ed,{text:e})]})}function Od(){let{t:e}=Jt(),[t,n]=(0,Y.useState)(!0),[r,i]=(0,Y.useState)(null),[a,o]=(0,Y.useState)(null),[s,c]=(0,Y.useState)(``),[l,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(null),[p,m]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{(async()=>{try{let e=await(await fetch(`${Cd}/api/v1/discovery`,{credentials:`include`})).json().catch(()=>({})),t=(e?.data??e)?.routes??{};i(typeof t.mcp==`string`?Td(t.mcp):null)}catch(e){o(e?.message??String(e))}finally{n(!1)}})()},[]);let h=r?`${r}/skill`:null,g=(0,Y.useMemo)(()=>{if(!r)return null;let e=btoa(JSON.stringify({url:r}));return`cursor://anysphere.cursor-deeplink/mcp/install?name=objectstack&config=${encodeURIComponent(e)}`},[r]);return t?(0,X.jsxs)(`div`,{className:`space-y-3 p-1`,children:[(0,X.jsx)(me,{className:`h-10 w-full`}),(0,X.jsx)(me,{className:`h-40 w-full`})]}):r?(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsxs)(Ge,{className:`flex items-center gap-2 text-base`,children:[(0,X.jsx)(cn,{className:`h-4 w-4`}),e(`connectAgent.url.title`)]})}),(0,X.jsxs)(de,{className:`space-y-3`,children:[(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`connectAgent.url.body`)}),(0,X.jsx)(Dd,{text:r}),(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[h&&(0,X.jsx)(B,{variant:`outline`,size:`sm`,asChild:!0,children:(0,X.jsxs)(`a`,{href:h,download:`SKILL.md`,children:[(0,X.jsx)(Xn,{className:`mr-1 h-3.5 w-3.5`}),e(`connectAgent.url.downloadSkill`)]})}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`connectAgent.url.skillHint`)})]})]})]}),(0,X.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsx)(Ge,{className:`text-base`,children:`Claude (claude.ai / Desktop)`})}),(0,X.jsxs)(de,{className:`space-y-2 text-sm`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.claude.body`)}),(0,X.jsx)(Dd,{text:r}),(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`connectAgent.claude.reachability`)})]})]}),(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsx)(Ge,{className:`text-base`,children:`Claude Code`})}),(0,X.jsxs)(de,{className:`space-y-2 text-sm`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.claudeCode.body`)}),(0,X.jsx)(Dd,{text:`claude mcp add --transport http objectstack ${r}`}),(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.claudeCode.plugin`)}),(0,X.jsx)(Dd,{text:`claude plugin marketplace add objectstack-ai/claude-plugin`})]})]}),(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsxs)(Ge,{className:`flex items-center justify-between text-base`,children:[`Cursor`,g&&(0,X.jsx)(B,{variant:`outline`,size:`sm`,asChild:!0,children:(0,X.jsxs)(`a`,{href:g,children:[(0,X.jsx)($n,{className:`mr-1 h-3.5 w-3.5`}),e(`connectAgent.cursor.addButton`)]})})]})}),(0,X.jsxs)(de,{className:`space-y-2 text-sm`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.cursor.body`)}),(0,X.jsx)(Dd,{text:JSON.stringify({mcpServers:{objectstack:{url:r}}},null,2)})]})]}),(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsx)(Ge,{className:`text-base`,children:`VS Code / Copilot`})}),(0,X.jsxs)(de,{className:`space-y-2 text-sm`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.vscode.body`)}),(0,X.jsx)(Dd,{text:JSON.stringify({servers:{objectstack:{type:`http`,url:r}}},null,2)})]})]}),(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsx)(Ge,{className:`text-base`,children:`Codex CLI`})}),(0,X.jsxs)(de,{className:`space-y-2 text-sm`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.codex.body`)}),(0,X.jsx)(Dd,{text:`[mcp_servers.objectstack]\nurl = "${r}"`})]})]}),(0,X.jsxs)(pt,{children:[(0,X.jsx)(xe,{className:`pb-2`,children:(0,X.jsxs)(Ge,{className:`flex items-center gap-2 text-base`,children:[(0,X.jsx)(Or,{className:`h-4 w-4`}),e(`connectAgent.apiKey.title`),(0,X.jsx)(R,{variant:`secondary`,children:e(`connectAgent.apiKey.badge`)})]})}),(0,X.jsxs)(de,{className:`space-y-2 text-sm`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.apiKey.body`)}),d?(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`p`,{className:`text-xs font-medium text-amber-600 dark:text-amber-400`,children:e(`connectAgent.apiKey.showOnce`,{name:d.name})}),(0,X.jsx)(Dd,{text:d.key}),(0,X.jsx)(Dd,{text:`x-api-key: ${d.key}`}),(0,X.jsx)(B,{variant:`outline`,size:`sm`,onClick:()=>f(null),children:e(`connectAgent.apiKey.done`)})]}):(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(z,{value:s,onChange:e=>c(e.target.value),placeholder:e(`connectAgent.apiKey.namePlaceholder`),className:`h-8 max-w-56`}),(0,X.jsx)(B,{size:`sm`,onClick:async()=>{u(!0),m(null);try{let e=await fetch(`${Cd}/api/v1/keys`,{method:`POST`,credentials:`include`,headers:wd({"content-type":`application/json`}),body:JSON.stringify({name:s.trim()||`agent-key`})}),t=await e.json().catch(()=>({}));if(!e.ok||t?.success===!1)throw Error(t?.error?.message??t?.error??`HTTP ${e.status}`);let n=t?.data??t;f({name:n?.name??s,key:n?.key??``}),c(``)}catch(e){m(e?.message??String(e))}finally{u(!1)}},disabled:l,children:e(l?`connectAgent.apiKey.minting`:`connectAgent.apiKey.mint`)})]}),p&&(0,X.jsxs)(`p`,{className:`flex items-center gap-1 text-xs text-destructive`,children:[(0,X.jsx)(kn,{className:`h-3.5 w-3.5`}),` `,p]})]})]})]})]}):(0,X.jsx)(pt,{children:(0,X.jsxs)(de,{className:`flex items-center gap-3 py-8 text-muted-foreground`,children:[(0,X.jsx)(kn,{className:`h-5 w-5 shrink-0`}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`font-medium text-foreground`,children:e(`connectAgent.disabled.title`)}),(0,X.jsx)(`div`,{className:`text-sm`,children:a||e(`connectAgent.disabled.body`)})]})]})})}Tt.register(`mcp:connect-agent`,()=>(0,X.jsx)(Od,{}),{namespace:`app-shell`,label:`Connect an Agent`,category:`plugin`,inputs:[]});var kd=`/api/v1/cloud/environments/production/sso-open`,Ad=`/apps/cloud_control/sys_environment`,jd=`create_environment`;function Md(e){let{activeOrganization:t}=u(),n=t?.id,r=(0,Y.useMemo)(()=>l(),[]),[i,a]=(0,Y.useState)({phase:`loading`});return(0,Y.useEffect)(()=>{let t=!1,i=``.replace(/\/+$/,``),o=n?`?organizationId=${encodeURIComponent(n)}`:``;return(async()=>{try{let n=await r(`${i}/api/v1/cloud/environment-entitlements${o}`,{method:`GET`,credentials:`include`});if(!n.ok)throw Error(`entitlements ${n.status}`);let s=(await n.json().catch(()=>null))?.data;if(t)return;if(!s||typeof s!=`object`){a({phase:`unknown`});return}let c=s.hasProductionEnv===!0;a({phase:`ready`,hasProductionEnv:c}),c&&e&&r(`${i}${e}`,{method:`GET`,credentials:`include`}).catch(()=>{})}catch{t||a({phase:`unknown`})}})(),()=>{t=!0}},[r,n,e]),i}function Nd(e){window.location.href=e}function Pd({properties:e}){let{t:n}=Jt(),r=t(),i=Md(e?.warmUrl),a=e?.openProductionUrl||kd,o=e?.environmentsRoute||Ad,s=e?.createAction||jd;if(i.phase===`loading`)return(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-3`,"data-onboarding":`loading`,children:[(0,X.jsx)(me,{className:`h-11 w-44 rounded-md`}),(0,X.jsx)(me,{className:`h-11 w-44 rounded-md`})]});let c=i.phase===`ready`&&!i.hasProductionEnv?n(`cloudOnboarding.hintCreate`):n(`cloudOnboarding.hintReady`),l=i.phase===`ready`&&!i.hasProductionEnv;return(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,"data-onboarding":i.phase,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-3`,children:[l?(0,X.jsxs)(B,{size:`lg`,onClick:()=>r(nu(o,s)),children:[(0,X.jsx)(H,{className:`mr-2 h-4 w-4`}),n(`cloudOnboarding.createEnvironment`)]}):(0,X.jsxs)(B,{size:`lg`,onClick:()=>Nd(a),children:[(0,X.jsx)(fi,{className:`mr-2 h-4 w-4`}),n(`cloudOnboarding.openProduction`)]}),(0,X.jsxs)(B,{size:`lg`,variant:`secondary`,onClick:()=>r(o),children:[(0,X.jsx)(yi,{className:`mr-2 h-4 w-4`}),n(`cloudOnboarding.manageEnvironments`)]})]}),(0,X.jsx)(`p`,{className:`max-w-xl text-center text-sm text-muted-foreground`,children:c})]})}Tt.register(`cloud:onboarding-next`,e=>(0,X.jsx)(Pd,{...e}),{namespace:`app-shell`,label:`Cloud Onboarding Next-Step`,category:`plugin`,inputs:[]});var Fd=`/api/v1/ai/effective-model`;function Id(e,t){return e===`code-default`?t(`aiModelStatus.sourceCodeDefault`):e===`inherits-conversational`?t(`aiModelStatus.sourceInherits`):e.startsWith(`env:`)?t(`aiModelStatus.sourcePinned`,{source:e.slice(4)}):e===`unknown`?t(`aiModelStatus.sourceUnknown`):e}function Ld(e){return e.startsWith(`env:`)?`default`:`secondary`}function Rd(e){let t=(0,Y.useMemo)(()=>l(),[]),[n,r]=(0,Y.useState)({phase:`loading`});return(0,Y.useEffect)(()=>{let n=!1,i=``.replace(/\/+$/,``);return(async()=>{try{let a=await t(`${i}${e}`,{method:`GET`,credentials:`include`});if(!a.ok){n||r({phase:`error`,status:a.status});return}let o=await a.json().catch(()=>null),s=o?.data??o;if(n)return;if(!s||typeof s!=`object`||!s.conversational){r({phase:`error`});return}r({phase:`ready`,report:s})}catch{n||r({phase:`error`})}})(),()=>{n=!0}},[t,e]),n}function zd({label:e,model:t,source:n,t:r}){return(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 py-2 border-b border-border last:border-b-0`,children:[(0,X.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e}),(0,X.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`code`,{className:`text-sm font-medium`,children:t??`—`}),(0,X.jsx)(R,{variant:Ld(n),children:Id(n,r)})]})]})}function Bd({properties:e}){let{t}=Jt(),n=Rd(e?.effectiveModelUrl||Fd);if(n.phase===`loading`)return(0,X.jsxs)(`div`,{className:`space-y-2`,"data-ai-model-status":`loading`,children:[(0,X.jsx)(me,{className:`h-5 w-3/4 rounded`}),(0,X.jsx)(me,{className:`h-10 w-full rounded`}),(0,X.jsx)(me,{className:`h-10 w-full rounded`})]});if(n.phase===`error`)return(0,X.jsx)(`div`,{className:`text-sm text-muted-foreground`,"data-ai-model-status":`error`,children:n.status?t(`aiModelStatus.readFailedWithStatus`,{status:n.status}):t(`aiModelStatus.readFailed`)});let{report:r}=n,i=Object.entries(r.overrides).filter(([,e])=>e!=null),a=t(`aiModelStatus.modelUnknown`);return(0,X.jsxs)(`div`,{className:`space-y-4`,"data-ai-model-status":`ready`,children:[(0,X.jsxs)(`p`,{className:`text-sm text-foreground`,"data-testid":`ai-model-summary`,children:[t(`aiModelStatus.summary`,{conversational:r.conversational.model??a,conversationalSource:Id(r.conversational.source,t),structured:r.structured.model??a,structuredSource:Id(r.structured.source,t)}),r.routing?(0,X.jsxs)(X.Fragment,{children:[` `,t(`aiModelStatus.summaryRouting`,{free:r.routing.free,paid:r.routing.paid})]}):null]}),(0,X.jsxs)(`div`,{className:`rounded-md border border-border px-3`,children:[(0,X.jsx)(zd,{label:t(`aiModelStatus.rowConversational`),t,model:r.conversational.model,source:r.conversational.source}),(0,X.jsx)(zd,{label:t(`aiModelStatus.rowStructured`),t,model:r.structured.model,source:r.structured.source}),(0,X.jsx)(zd,{label:t(`aiModelStatus.rowReasoning`),t,model:r.reasoningEffort.effective,source:r.reasoningEffort.source})]}),(0,X.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:t(`aiModelStatus.overridesInEffect`)}),i.length===0?(0,X.jsx)(`span`,{children:t(`aiModelStatus.noOverrides`)}):(0,X.jsx)(`code`,{children:i.map(([e,t])=>`${e}=${t}`).join(` · `)})]}),(0,X.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t(`aiModelStatus.adapter`),(0,X.jsxs)(`code`,{children:[r.adapter,r.provider?` / ${r.provider}`:``]})]})]})}Tt.register(`cloud:ai-model-status`,e=>(0,X.jsx)(Bd,{...e}),{namespace:`app-shell`,label:`Cloud AI Model Status`,category:`plugin`,inputs:[]});var Vd=e=>{let{"data-obj-id":t,"data-obj-type":n,style:r,...i}=e||{};return{designer:{"data-obj-id":t,"data-obj-type":n,style:r},rest:i}};Tt.register(`attachments`,({schema:e,className:t,...n})=>{let r=wt(),{user:i}=u(),{designer:a}=Vd(n),o=r?.objectName,s=r?.recordId==null?``:String(r.recordId);return!o||!s?null:(0,X.jsx)(`div`,{className:t,...a,children:(0,X.jsx)(ha,{objectName:o,recordId:s,dataSource:r?.dataSource,currentUserId:i?.id})})},{namespace:`record`,skipFallback:!0,category:`record`,label:`Attachments`,icon:`Paperclip`,inputs:[{name:`className`,type:`string`}]});var Hd=e=>{let{"data-obj-id":t,"data-obj-type":n,style:r}=e||{};return{"data-obj-id":t,"data-obj-type":n,style:r}};Tt.register(`search`,({className:e,schema:t,...n})=>{let{t:r}=Jt(),[o,s]=(0,Y.useState)(``),{objects:c}=gt(),l=ht(),{appName:u}=i(),{currentAppName:d}=ua(),f=(0,Y.useMemo)(()=>c||[],[c]),p=se(),{results:m,isSearching:h}=zt({query:o,objects:f,dataSource:l,enabled:!!l,getDisplayName:bt,fieldReadPolicy:p}),g=`/apps/${u||d||``}`,_=r(`search.placeholder`,{defaultValue:`Search objects, dashboards, pages, reports…`}),v=r(`search.inputAriaLabel`,{defaultValue:`Search objects, dashboards, pages, reports`});return(0,X.jsxs)(`div`,{className:e,"data-block":`global:search`,role:`search`,...Hd(n),children:[(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(vi,{className:`pointer-events-none absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`,"aria-hidden":!0}),(0,X.jsx)(z,{type:`search`,className:`pl-8`,value:o,"aria-label":v,placeholder:_,onChange:e=>s(e.target.value)})]}),h&&(0,X.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:r(`console.commandPalette.searching`,{defaultValue:`Searching…`})}),m.length>0&&(0,X.jsx)(`ul`,{className:`mt-2 grid gap-2`,"aria-label":r(`console.commandPalette.records`,{defaultValue:`Records`}),children:m.map(e=>{let t=Wa(e.icon);return(0,X.jsx)(`li`,{children:(0,X.jsx)(a,{to:`${g}/${e.objectName}/record/${e.recordId}`,className:`block rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:(0,X.jsx)(pt,{className:`hover:bg-accent/50 transition-colors`,children:(0,X.jsxs)(de,{className:`flex items-center gap-3 p-3`,children:[(0,X.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded bg-primary/10 text-primary`,children:(0,X.jsx)(t,{className:`h-4 w-4`})}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`p`,{className:`truncate text-sm font-medium`,children:e.display}),e.subtitle&&(0,X.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:e.subtitle})]}),(0,X.jsx)(R,{variant:`outline`,className:`shrink-0 text-xs`,children:e.objectLabel})]})})})},`${e.objectName}:${e.recordId}`)})})]})},{namespace:`global`,skipFallback:!0,category:`navigation`,label:`Global Search`,icon:`Search`});var Ud=e=>{let{"data-obj-id":t,"data-obj-type":n,style:r}=e||{};return{"data-obj-id":t,"data-obj-type":n,style:r}};Tt.register(`notifications`,({className:e,schema:t,...n})=>{let{notifications:r,unreadCount:i,pendingApprovalsCount:a,markAllRead:o,markRead:s,markManyRead:c}=Ic(),l=xc();return(0,X.jsx)(`div`,{className:e,"data-block":`global:notifications`,...Ud(n),children:(0,X.jsx)(Gs,{notifications:r,unreadCount:i,pendingApprovalsCount:a,activities:l,onMarkAllRead:o,onMarkRead:s,onMarkManyRead:c})})},{namespace:`global`,skipFallback:!0,category:`navigation`,label:`Notifications`,icon:`Bell`});var Wd=e=>{let{"data-obj-id":t,"data-obj-type":n,style:r}=e||{};return{"data-obj-id":t,"data-obj-type":n,style:r}};Tt.register(`launcher`,({className:e,schema:n,...r})=>{let{t:i}=Jt(),a=t(),{apps:o}=gt(),{favorites:s}=va(),c=(0,Y.useMemo)(()=>Sa(o),[o]),l=(0,Y.useCallback)(e=>a(`/apps/${Ca(e)??e?.name}`),[a]);return(0,X.jsx)(`nav`,{className:e,"aria-label":i(`console.nav.launcherLabel`,{defaultValue:`App launcher`}),"data-block":`app:launcher`,...Wd(r),children:(0,X.jsx)(su,{apps:c,favorites:s,onOpen:l,isAdmin:!1,onBrowseMarketplace:()=>{}})})},{namespace:`app`,skipFallback:!0,category:`navigation`,label:`App Launcher`,icon:`LayoutGrid`});var Gd=e=>{let{"data-obj-id":t,"data-obj-type":n,style:r}=e||{};return{"data-obj-id":t,"data-obj-type":n,style:r}},Kd=`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm text-foreground/80 transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`;Tt.register(`menu`,({className:e,schema:t,...n})=>{let{t:r}=Jt(),{objectLabel:o,viewLabel:c,dashboardLabel:l}=Ht(),{apps:d,objects:f}=gt(),{appName:p}=i(),{currentAppName:m}=ua(),{pathname:h,search:g}=s(),{user:_,activeOrganization:v}=u(),y=Lc(),{evaluator:b}=ta(),x=(0,Y.useCallback)(e=>na(e,b),[b]),{can:S,hasCapabilities:C}=se(),w=(0,Y.useCallback)(e=>e.every(e=>{let t=e.split(`:`);return t.length>=2?S(t[0],t[1]):C([e])||S(e,`read`)}),[S,C]),T=(0,Y.useMemo)(()=>new Set((f||[]).map(e=>e?.name).filter(Boolean)),[f]),E=(0,Y.useCallback)((e,t)=>e!==`object`||T.size===0||T.has(t),[T]),D=(0,Y.useMemo)(()=>{let e=(d||[]).filter(e=>e?.active!==!1);return ba(e,p??m??null)},[d,p,m]),O=(0,Y.useMemo)(()=>({evaluateVisibility:x,checkPermission:w,checkCapability:E,hasActionHandler:!0}),[x,w,E]),k=(0,Y.useMemo)(()=>{let e=D?.areas||[];if(e.length>0){let t=e.find(e=>Ra(e?.navigation??[],O));if(t)return t.navigation??[]}return D?.navigation??[]},[D,O]),A=D?`/apps/${Ca(D)??D.name}`:``,j=(0,Y.useMemo)(()=>({currentUserId:_?.id??null,currentOrgId:v?.id??null}),[_?.id,v?.id]),M=(0,Y.useMemo)(()=>La(k,h,g,A,j)?.id??null,[k,h,g,A,j]),N=(0,Y.useCallback)(e=>Va(e,(e,t)=>o({name:e,label:t}),r,(e,t)=>l({name:e,label:t}),(e,t,n)=>c(e,t,n)),[o,l,c,r]);function P(e){if(!x(e.visible)||e.requiredPermissions?.length&&!w(e.requiredPermissions)||e.requiresObject&&!E(`object`,e.requiresObject)||e.requiresService&&!E(`service`,e.requiresService))return null;if(e.type===`separator`)return(0,X.jsx)(`li`,{"aria-hidden":`true`,className:`py-1`,children:(0,X.jsx)(Re,{})},e.id);if(e.type===`group`){let t=(e.children??[]).map(e=>P(e)).filter(Boolean);return t.length===0?null:(0,X.jsxs)(`li`,{children:[(0,X.jsx)(`div`,{className:`px-2 py-1 text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:N(e)}),(0,X.jsx)(`ul`,{className:`ml-2 grid gap-0.5 border-l pl-2`,children:t})]},e.id)}let t=Wa(e.icon),n=N(e),r=e.badge!==void 0&&e.badge!==null&&e.badge!==``?(0,X.jsx)(R,{variant:e.badgeVariant??`secondary`,className:`ml-auto shrink-0`,children:e.badge}):null,i=(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(t,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`truncate`,children:n}),r]}),o=M!==null&&e.id===M,s=L(Kd,o&&`bg-accent font-medium text-foreground`);if(e.type===`action`)return(0,X.jsx)(`li`,{children:(0,X.jsx)(`button`,{type:`button`,className:s,onClick:()=>y(e),children:i})},e.id);let{href:c,external:l}=Ba(e,A,j);return(0,X.jsx)(`li`,{children:l?(0,X.jsx)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,className:s,"aria-current":o?`page`:void 0,children:i}):(0,X.jsx)(a,{to:c,className:s,"aria-current":o?`page`:void 0,children:i})},e.id)}let ee=k.map(e=>P(e)).filter(Boolean);return(0,X.jsx)(`nav`,{className:e,"aria-label":r(`console.nav.menuLabel`,{defaultValue:`App navigation`}),"data-block":`nav:menu`,...Gd(n),children:ee.length>0?(0,X.jsx)(`ul`,{className:`grid gap-0.5`,children:ee}):(0,X.jsx)(`p`,{className:`px-2 py-1.5 text-sm text-muted-foreground`,children:r(`console.nav.menuEmpty`,{defaultValue:`This app has no navigation entries you can open.`})})})},{namespace:`nav`,skipFallback:!0,category:`navigation`,label:`Nav Menu`,icon:`Menu`});function qd(){ka({type:`__object_field`,label:`Field`,anchors:[{anchorType:`object`,source:`embedded`,editAs:`field`,embeddedPath:`fields`,extract:e=>Jd(e.fields),groupLabel:`Fields`,order:5}]}),ka({type:`__object_index`,label:`Index`,anchors:[{anchorType:`object`,source:`embedded`,editAs:`index`,embeddedPath:`indexes`,extract:e=>{let t=e.indexes;return Array.isArray(t)?t.map((e,t)=>{let n=Array.isArray(e.fields)?e.fields.join(`,`):``;return{name:n?`idx_${n}`:`index_${t}`,...e}}):[]},groupLabel:`Indexes`,order:10}]}),ka({type:`__object_validation`,label:`Embedded validation`,anchors:[{anchorType:`object`,source:`embedded`,editAs:`validation`,embeddedPath:`validations`,extract:e=>Jd(e.validations),groupLabel:`Embedded Validations`,order:15}]}),ka({type:`hook`,anchors:[{anchorType:`object`,match:Oa(`object`),groupLabel:`Hooks`,order:20}],createFields:[`label`,`name`,`object`,`description`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createSchema:{type:`object`,required:[`label`,`name`,`object`],properties:{label:{type:`string`,title:`Label`,description:`Human-readable hook name.`},name:{type:`string`,title:`Name`,description:`Hook key (snake_case).`,pattern:`^[a-z_][a-z0-9_]*$`},object:{type:`string`,title:`Object`,widget:`ref:object`,description:`The object whose row lifecycle (beforeInsert / afterUpdate / …) this hook runs on.`},description:{type:`string`,title:`Description`,description:`What this hook does.`}}},createDefaults:{events:[]}}),ka({type:`page`,anchors:[{anchorType:`object`,match:Oa(`object`),groupLabel:`Pages`,order:40}],createFields:[`label`,`name`,`object`,`type`,`kind`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createSchema:{type:`object`,required:[`label`,`name`,`type`],properties:{label:{type:`string`,title:`Label`,description:`Human-readable page title.`},name:{type:`string`,title:`Name`,description:`Page key (snake_case).`,pattern:`^[a-z_][a-z0-9_]*$`},type:{type:`string`,title:`Page type`,enum:[`list`,`record`,`home`,`app`,`utility`],default:`list`,description:`List / Interface page = a data view (Airtable-style: columns, filters, visualizations). Record page renders one object record.`},object:{type:`string`,title:`Object`,widget:`ref:object`,description:`The object this page reads from — the data source for a list page, or the record object for a record page.`},kind:{type:`string`,title:`Kind`,enum:[`full`,`slotted`],default:`full`,description:`full = the whole page; slotted = override only named slots of the default.`}}},createDefaults:{type:`list`,kind:`full`,regions:[]},createSeed:async(e,{client:t})=>{if(e?.type===`list`)return e?.object?{interfaceConfig:{source:String(e.object)}}:{};if(e?.type!==`record`||!e?.object)return{};try{let r=await t.get(`object`,String(e.object));if(!r||typeof r!=`object`)return{};let{buildDefaultPageSchema:i}=await n(async()=>{let{buildDefaultPageSchema:e}=await import(`./plugin-grid-C9h7mRVv.js`).then(e=>e.i);return{buildDefaultPageSchema:e}},__vite__mapDeps([0]),import.meta.url),a=i(r),o={};return Array.isArray(a?.regions)&&a.regions.length&&(o.regions=a.regions),a?.template&&(o.template=a.template),o}catch{return{}}}}),ka({type:`view`,anchors:[{anchorType:`object`,match:Oa([`object`,`config.data.object`]),groupLabel:`Views`,order:30}],createFields:[`label`,`name`,`object`,`viewKind`,`kind`,`formType`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createSchema:{type:`object`,required:[`label`,`name`,`object`,`viewKind`],properties:{label:{type:`string`,title:`Label`,description:`Human-readable view name.`},name:{type:`string`,title:`Name`,description:`View key (snake_case). Qualified to <object>.<key> on save.`,pattern:`^[a-z_][a-z0-9_]*$`},object:{type:`string`,title:`Object`,widget:`ref:object`,description:`The object this view displays.`},viewKind:{type:`string`,title:`View family`,enum:[`list`,`form`],default:`list`,description:`List views show many records as a collection (grid, kanban, …). Form views show one record as a field layout (simple, tabbed, …).`},kind:{type:`string`,title:`List layout`,enum:[`grid`,`kanban`,`gallery`,`calendar`,`timeline`,`gantt`,`chart`],default:`grid`,description:`Pick a starter layout. Switch later in the designer.`,visibleOn:`data.viewKind == 'list'`},formType:{type:`string`,title:`Form layout`,enum:[`simple`,`tabbed`,`wizard`,`split`,`drawer`,`modal`],default:`simple`,description:`Pick a starter form layout. Switch later in the designer.`,visibleOn:`data.viewKind == 'form'`}}},createBuildBody:e=>{let t=String(e.object??``),n=String(e.name??``),r=n.includes(`.`)||!t?n:`${t}.${n}`,i=e.viewKind===`form`,a=e.formType||`simple`,o=i?{type:a,data:{provider:`object`,object:t},sections:a===`wizard`?[{label:`Step 1`,fields:[]}]:[]}:{type:e.kind||`grid`,columns:[],data:{provider:`object`,object:t}};return{name:r,object:t,viewKind:i?`form`:`list`,label:e.label,config:o}}}),ka({type:`flow`,anchors:[{anchorType:`object`,match:Oa([`object`,`on.object`,`trigger.object`]),groupLabel:`Flows`,order:50}],createFields:[`label`,`name`,`type`,`description`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createDefaults:{type:`autolaunched`,nodes:[],edges:[]}}),ka({type:`permission`,anchors:[{anchorType:`object`,match:(e,t)=>{let n=e?.objects;return!!n&&typeof n==`object`&&t in n},groupLabel:`Permissions`,order:60}],createFields:[`label`,`name`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createDefaults:{objects:{}}}),ka({type:`action`,anchors:[{anchorType:`object`,match:Oa([`object`,`target.object`,`on.object`]),groupLabel:`Actions`,order:55}],createFields:[`label`,`name`,`objectName`,`icon`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createSchema:{type:`object`,required:[`label`,`name`],properties:{label:{type:`string`,title:`Label`,description:`Human-readable action name.`},name:{type:`string`,title:`Name`,description:`Action key (snake_case). Used in URLs.`,pattern:`^[a-z_][a-z0-9_]*$`},objectName:{type:`string`,title:`Object`,widget:`ref:object`,description:`The object this action is bound to. Leave empty for a global / record-scoped action.`},icon:{type:`string`,title:`Icon`,widget:`icon`,description:`Optional icon shown on the action button.`}}},createDefaults:{type:`script`,body:{language:`js`,source:`return { success: true };`}}}),ka({type:`dashboard`,anchors:[{anchorType:`object`,match:Oa([`object`,`data.object`]),groupLabel:`Dashboards`,order:80}],createFields:[`label`,`name`,`description`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createDefaults:{widgets:[]}}),ka({type:`report`,anchors:[{anchorType:`object`,match:Oa([`object`,`data.object`]),groupLabel:`Reports`,order:81}],createFields:[`label`,`name`,`description`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0}],createDefaults:{type:`summary`,drilldown:!0}}),ka({type:`object`,iconName:`database`,domain:`data`,createFields:[`label`,`pluralLabel`,`name`,`description`],createDerive:[{from:`label`,to:`name`,transform:`slugify`,untilUserEdits:!0},{from:`label`,to:`pluralLabel`,transform:`plural-en`,untilUserEdits:!0}],createDefaults:{fields:{}},searchableFields:[`name`,`label`,`pluralLabel`,`description`],listColumns:[{key:`name`,label:`Name`,width:`24%`},{key:`label`,label:`Label`,width:`22%`},{key:`pluralLabel`,label:`Plural`,width:`22%`},{key:`fields`,label:`Fields`,width:`90px`,render:e=>e==null?`—`:Array.isArray(e)?e.length:typeof e==`object`?Object.keys(e).length:0},{key:`description`,label:`Description`}]})}function Jd(e){return Array.isArray(e)?e:e&&typeof e==`object`?Object.entries(e).map(([e,t])=>({name:e,...t&&typeof t==`object`?t:{}})):[]}var Yd={name:{type:`string`,title:`Name`,description:`Machine name. snake_case, used as the URL path and DB key.`,pattern:`^[a-z_][a-z0-9_]*$`},label:{type:`string`,title:`Label`,description:`Human-readable display name.`},description:{type:`string`,title:`Description`,format:`multiline`}},Xd={position:{type:`object`,title:`Position`,required:[`name`],properties:{...Yd}},permission:{type:`object`,title:`Permission`,required:[`id`,`resource`,`actions`,`description`],properties:{id:{type:`string`,title:`ID`,description:`Stable identifier (e.g. crm.account.read).`},resource:{type:`string`,title:`Resource`,description:`What this permission applies to.`,enum:[`data.object`,`data.record`,`data.field`,`ui.view`,`ui.dashboard`,`ui.report`,`system.config`,`system.plugin`,`system.api`,`system.service`,`storage.file`,`storage.database`,`network.http`,`network.websocket`,`process.spawn`,`process.env`]},actions:{type:`array`,title:`Actions`,description:`Permitted operations on the resource.`,items:{type:`string`,enum:[`create`,`read`,`update`,`delete`,`execute`,`admin`,`manage`,`configure`,`import`,`export`,`share`]}},description:{type:`string`,title:`Description`,description:`Why this permission exists (shown in admin UIs).`},scope:{type:`string`,title:`Scope`,enum:[`tenant`,`user`,`plugin`,`global`,`resource`],default:`tenant`},required:{type:`boolean`,title:`Required`,description:`Must be present for the holder to function.`},justification:{type:`string`,title:`Justification`}}},translation:{type:`object`,title:`Translation Bundle`,required:[`name`],properties:{name:{...Yd.name,description:`Bundle id (e.g. zh_CN, en_US, package-locale).`},label:Yd.label,description:Yd.description,locale:{type:`string`,title:`Locale`,description:`BCP-47 tag, e.g. en, zh-Hans, ja-JP.`},strings:{type:`object`,title:`Strings`,description:`Key → translated string map.`}}},tool:{type:`object`,title:`AI Tool`,required:[`name`],properties:{...Yd,kind:{type:`string`,title:`Kind`,enum:[`function`,`http`,`mcp`]},inputSchema:{type:`object`,title:`Input Schema (JSON Schema)`},outputSchema:{type:`object`,title:`Output Schema (JSON Schema)`}}},skill:{type:`object`,title:`AI Skill`,required:[`name`],properties:{...Yd,instructions:{type:`string`,title:`Instructions`,format:`multiline`},tools:{type:`array`,title:`Tools`,items:{type:`string`}},surface:{type:`string`,title:`Surface`,description:`Agent surface this skill binds to (ADR-0063).`,enum:[`ask`,`build`,`both`]},triggerPhrases:{type:`array`,title:`Trigger Phrases`,description:`Natural-language phrases that activate this skill.`,items:{type:`string`}},triggerConditions:{type:`array`,title:`Trigger Conditions`,description:`Programmatic activation conditions (context field / operator / value). The activation-critical field — previously only hand-editable (#1878/#1895).`,items:{type:`object`,properties:{field:{type:`string`,title:`Field`},operator:{type:`string`,title:`Operator`,enum:[`eq`,`neq`,`in`,`not_in`,`contains`]},value:{type:`string`,title:`Value`}}}}}},app:{type:`object`,title:`Application`,required:[`name`],properties:{...Yd,icon:{type:`string`,title:`Icon`},navigation:{type:`array`,title:`Navigation`,items:{type:`object`}}}},page:{type:`object`,title:`Page`,required:[`name`],properties:{...Yd,route:{type:`string`,title:`Route`,description:`URL path under the app.`},layout:{type:`string`,title:`Layout`}}},view:{type:`object`,title:`View`,required:[`name`],properties:{...Yd,type:{type:`string`,title:`View Type`,enum:[`grid`,`kanban`,`calendar`,`gantt`,`simple`,`tabbed`,`wizard`,`split`,`drawer`,`modal`]}}},dashboard:{type:`object`,title:`Dashboard`,required:[`name`],properties:{...Yd,widgets:{type:`array`,title:`Widgets`,items:{type:`object`}}}},report:{type:`object`,title:`Report`,required:[`name`],properties:{...Yd,object:{type:`string`,title:`Object`},filters:{type:`array`,title:`Filters`,items:{type:`object`}}}},book:{type:`object`,title:`Documentation Book`,required:[`name`,`groups`],properties:{...Yd,slug:{type:`string`,title:`Slug`,description:`Portal URL segment; defaults to the name without its package prefix.`},icon:{type:`string`,title:`Icon`},order:{type:`number`,title:`Order`,description:`Orders books within the portal.`},audience:{title:`Audience`,description:`Access audience. 'org' (default) inherits the package grant; 'public' is anonymously readable; { permissionSet } gates by a permission set the reader must hold (ADR-0090).`,oneOf:[{type:`string`,enum:[`org`,`public`]},{type:`object`,title:`Permission-set gated`,properties:{permissionSet:{type:`string`,title:`Permission set`}},required:[`permissionSet`]}]},groups:{type:`array`,title:`Groups (spine)`,description:`Ordered sections. Membership is derived from each group's include rule — edit the structure visually in the Preview tab.`,items:{type:`object`,required:[`key`,`label`],properties:{key:{type:`string`,title:`Key`,pattern:`^[a-z][a-z0-9_]*$`},label:{type:`string`,title:`Label`},order:{type:`number`,title:`Order`},include:{title:`Include rule`,description:`Glob over doc names (e.g. crm_guide_*) or { tag }.`},package:{type:`string`,title:`Package scope`},pages:{type:`array`,title:`Explicit pages (override)`,items:{}}}}}}},email_template:{type:`object`,title:`Email Template`,required:[`name`,`label`,`subject`,`bodyHtml`],properties:{...Yd,category:{type:`string`,title:`Category`,enum:[`auth`,`notification`,`workflow`,`marketing`,`custom`],default:`custom`},locale:{type:`string`,title:`Locale`,default:`en-US`,description:`BCP-47 tag (en-US, zh-CN, …)`},subject:{type:`string`,title:`Subject`,description:`Supports {{var.path}} interpolation`},bodyHtml:{type:`string`,title:`HTML Body`,format:`multiline`},bodyText:{type:`string`,title:`Plain-Text Body`,format:`multiline`},variables:{type:`array`,title:`Variables`,items:{type:`object`}},fromOverride:{type:`object`,title:`From Override`},replyTo:{type:`string`,title:`Reply-To`},active:{type:`boolean`,title:`Active`,default:!0},isSystem:{type:`boolean`,title:`System Template`,default:!1}}}};function Zd(){for(let[e,t]of Object.entries(Xd))ka({type:e,defaultSchema:t,fieldOrder:[`name`,`label`,`description`]})}function Qd({status:e,reason:t}){if(!e)return null;let n=(e,n)=>(0,X.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 font-medium ${e}`,title:t||void 0,children:n});switch(e){case`ok`:return n(`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`,`connected`);case`error`:return n(`bg-destructive/10 text-destructive`,`connect failed`);case`blocked`:return n(`bg-amber-500/10 text-amber-600 dark:text-amber-400`,`blocked by policy`);case`unvalidated`:return n(`bg-muted text-muted-foreground`,`not connected`);default:return n(`bg-muted text-muted-foreground`,e)}}var $d=[{value:`managed`,label:`Managed (ObjectStack owns the schema)`},{value:`external`,label:`External (read existing schema as-is)`},{value:`validate-only`,label:`Validate only`}],ef=``.replace(/\/+$/,``),tf=e=>e.format===`password`;function nf(e){let t=e?.configSchema?.properties??{},n={};for(let[e,r]of Object.entries(t))tf(r)||r.default!==void 0&&(n[e]=r.default);return n}function rf(e){let t=Y.useMemo(()=>l(),[]),n=Qi(),[r,i]=Y.useState([]),[a,o]=Y.useState(!0),[s,c]=Y.useState(null),u=Y.useCallback(async(e,n)=>{let r=await t(`${ef}${e}`,{credentials:`include`,headers:{"Content-Type":`application/json`},...n}),i=await r.text(),a=i;try{a=JSON.parse(i)}catch{}if(!r.ok){let e=a&&typeof a.error==`object`&&a.error?.message||(a&&typeof a.error==`string`?a.error:void 0)||a&&a.message||`HTTP ${r.status}`;throw Error(e)}return a&&typeof a.success==`boolean`&&`data`in a?a.data:a},[t]),d=Y.useCallback(async()=>{o(!0);try{let e=await u(`/api/v1/datasources`);i(Array.isArray(e?.datasources)?e.datasources:[])}catch(e){Xt.error(`Load datasources: ${e.message}`),i([])}finally{o(!1)}},[u]);Y.useEffect(()=>{d()},[d]);let f=async e=>{c(`test:${e}`);try{let t=await u(`/api/v1/datasources/${encodeURIComponent(e)}/test`,{method:`POST`,body:`{}`});Xt.success(t?.ok===!1?`${e}: ${t?.error??`failed`}`:`${e}: connection ok${t?.latencyMs==null?``:` (${t.latencyMs}ms)`}`),d()}catch(t){Xt.error(`${e}: ${t.message}`)}finally{c(null)}},p=async e=>{if(window.confirm(`Delete datasource “${e}”? This cannot be undone.`)){c(`del:${e}`);try{await u(`/api/v1/datasources/${encodeURIComponent(e)}`,{method:`DELETE`}),Xt.success(`Deleted ${e}.`),d()}catch(t){Xt.error(`Delete ${e}: ${t.message}`)}finally{c(null)}}},[m,h]=Y.useState([]),[g,_]=Y.useState(!1),[v,y]=Y.useState(null),[b,x]=Y.useState(null),[S,C]=Y.useState(!1),[w,T]=Y.useState(!1),[E,D]=Y.useState(null),[O,k]=Y.useState(!1),A=Y.useCallback(async()=>{if(m.length)return m;try{let e=await u(`/api/v1/datasources/drivers`),t=Array.isArray(e?.drivers)?e.drivers:[];return h(t),t}catch(e){return Xt.error(`Load drivers: ${e.message}`),[]}},[u,m]),j=Y.useMemo(()=>m.find(e=>e.id===b?.driver),[m,b?.driver]),M=async()=>{let e=await A(),t=e.find(e=>e.id!==`memory`)??e[0];y(null),C(!1),D(null),x({name:``,label:``,driver:t?.id??``,schemaMode:`managed`,config:nf(t),secret:``}),_(!0)},N=async e=>{let t=await A();c(`edit:${e.name}`);try{let n=(await u(`/api/v1/datasources/${encodeURIComponent(e.name)}`))?.datasource??{};y(e.name),C(!!n.hasSecret),D(null),x({name:n.name??e.name,label:n.label??``,driver:n.driver??e.driver??t[0]?.id??``,schemaMode:n.schemaMode??`managed`,config:{...n.config??{}},secret:``}),_(!0)}catch(t){Xt.error(`Open ${e.name}: ${t.message}`)}finally{c(null)}},P=e=>{x(t=>t&&{...t,driver:e,config:nf(m.find(t=>t.id===e)),secret:``}),D(null)},ee=(e,t)=>x(n=>n&&{...n,config:{...n.config,[e]:t}}),te=e=>{let t={label:e.label||void 0,driver:e.driver,schemaMode:e.schemaMode,config:e.config};return e.secret&&(t.secret=e.secret),t},ne=async()=>{if(b){k(!0),D(null);try{let e=await u(`/api/v1/datasources/test`,{method:`POST`,body:JSON.stringify({driver:b.driver,config:b.config,...b.secret?{secret:b.secret}:{}})}),t=e?.result??e;t?.ok===!1?D({ok:!1,text:t?.error??`Connection failed`}):D({ok:!0,text:`Connection ok${t?.latencyMs==null?``:` (${t.latencyMs}ms)`}`})}catch(e){D({ok:!1,text:e.message})}finally{k(!1)}}},re=async()=>{if(b){T(!0);try{v?(await u(`/api/v1/datasources/${encodeURIComponent(v)}`,{method:`PATCH`,body:JSON.stringify(te(b))}),Xt.success(`Updated ${v}.`)):(await u(`/api/v1/datasources`,{method:`POST`,body:JSON.stringify({name:b.name,...te(b)})}),Xt.success(`Created ${b.name}.`)),_(!1),d()}catch(e){Xt.error(`Save: ${e.message}`)}finally{T(!1)}}},ie=v?!0:/^[a-z_][a-z0-9_]*$/.test(b?.name??``),F=!!b&&!!b.driver&&ie&&!w,[ae,oe]=Y.useState(null),[se,ce]=Y.useState(null),[le,de]=Y.useState(new Set),[fe,pe]=Y.useState(!1),me=async e=>{oe(e),ce(null),de(new Set);try{let t=await u(`/api/v1/datasources/${encodeURIComponent(e)}/remote-tables`);ce(Array.isArray(t?.tables)?t.tables:[])}catch(t){Xt.error(`Introspect ${e}: ${t.message}`),ce([])}},he=e=>de(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),ge=async()=>{if(!ae||le.size===0)return;pe(!0);let e=0,t=[];for(let r of le)try{let{draft:t}=await u(`/api/v1/datasources/${encodeURIComponent(ae)}/object-draft`,{method:`POST`,body:JSON.stringify({table:r})});await n.save(`object`,t.name,t.definition),e+=1}catch(e){t.push(`${r}: ${e.message}`)}pe(!1),e&&Xt.success(`Synced ${e} object${e>1?`s`:``} from ${ae}.`),t.length&&Xt.error(`Failed: ${t.join(`; `)}`),oe(null)},ve=(e,t)=>{let n=t.title||e,r=(j?.configSchema?.required??[]).includes(e);if(tf(t))return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(I,{className:`text-xs`,children:[n,r&&!v?` *`:``]}),(0,X.jsx)(z,{type:`password`,value:b?.secret??``,placeholder:v&&S?`•••••••• (leave blank to keep)`:``,onChange:e=>x(t=>t&&{...t,secret:e.target.value})}),t.description&&(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:t.description})]},e);let i=b?.config[e];if(t.type===`boolean`)return(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2 py-1`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(I,{className:`text-xs`,children:n}),t.description&&(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:t.description})]}),(0,X.jsx)(ot,{checked:!!i,onCheckedChange:t=>ee(e,t)})]},e);if(Array.isArray(t.enum))return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(I,{className:`text-xs`,children:[n,r?` *`:``]}),(0,X.jsxs)(_e,{value:i==null?``:String(i),onValueChange:t=>ee(e,t),children:[(0,X.jsx)(Ve,{children:(0,X.jsx)(ft,{placeholder:`Select…`})}),(0,X.jsx)(Ce,{children:t.enum.map(e=>(0,X.jsx)(ke,{value:String(e),children:String(e)},String(e)))})]})]},e);let a=t.type===`number`||t.type===`integer`;return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(I,{className:`text-xs`,children:[n,r?` *`:``]}),(0,X.jsx)(z,{type:a?`number`:`text`,value:i==null?``:String(i),onChange:t=>ee(e,a?t.target.value===``?void 0:Number(t.target.value):t.target.value)}),t.description&&(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:t.description})]},e)};return(0,X.jsxs)(`div`,{className:`mx-auto max-w-4xl px-6 py-8`,children:[(0,X.jsxs)(`div`,{className:`mb-6 flex items-center justify-between`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`h1`,{className:`flex items-center gap-2 text-xl font-semibold`,children:[(0,X.jsx)(qn,{className:`h-5 w-5`}),` Datasources`]}),(0,X.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Connect external databases and sync their tables in as objects.`})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:()=>void d(),disabled:a,children:[(0,X.jsx)(li,{className:`mr-1.5 h-4 w-4`+(a?` animate-spin`:``)}),` Refresh`]}),(0,X.jsxs)(B,{size:`sm`,onClick:()=>void M(),children:[(0,X.jsx)(H,{className:`mr-1.5 h-4 w-4`}),` New datasource`]})]})]}),a?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 py-12 text-sm text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` Loading…`]}):r.length===0?(0,X.jsxs)(`div`,{className:`rounded-lg border border-dashed bg-muted/20 py-16 text-center text-sm text-muted-foreground`,children:[`No datasources yet. Click `,(0,X.jsx)(`span`,{className:`font-medium`,children:`New datasource`}),` to connect one.`]}):(0,X.jsx)(`div`,{className:`divide-y rounded-lg border bg-card`,children:r.map(e=>{let t=e.origin===`code`;return(0,X.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,X.jsx)(qn,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:e.label||e.name}),(0,X.jsx)(`code`,{className:`text-[11px] text-muted-foreground`,children:e.name})]}),(0,X.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-[11px] text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono`,children:e.driver}),(0,X.jsx)(Qd,{status:e.status,reason:e.statusReason}),e.origin&&(0,X.jsxs)(`span`,{children:[`· `,e.origin]})]}),e.statusReason&&(e.status===`error`||e.status===`blocked`)&&(0,X.jsx)(`div`,{className:`mt-0.5 truncate text-[11px] text-muted-foreground`,title:e.statusReason,children:e.statusReason})]}),(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,disabled:s===`test:${e.name}`,onClick:()=>void f(e.name),children:[s===`test:${e.name}`?(0,X.jsx)(V,{className:`mr-1.5 h-4 w-4 animate-spin`}):(0,X.jsx)(ai,{className:`mr-1.5 h-4 w-4`}),` Test`]}),(0,X.jsxs)(B,{variant:`secondary`,size:`sm`,onClick:()=>void me(e.name),children:[(0,X.jsx)(un,{className:`mr-1.5 h-4 w-4`}),` Sync objects`]}),!t&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(B,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,title:`Edit`,disabled:s===`edit:${e.name}`,onClick:()=>void N(e),children:s===`edit:${e.name}`?(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}):(0,X.jsx)(ni,{className:`h-4 w-4`})}),(0,X.jsx)(B,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-destructive hover:text-destructive`,title:`Delete`,disabled:s===`del:${e.name}`,onClick:()=>void p(e.name),children:s===`del:${e.name}`?(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}):(0,X.jsx)(Li,{className:`h-4 w-4`})})]})]},e.name)})}),(0,X.jsx)(rt,{open:g,onOpenChange:e=>{e||_(!1)},children:(0,X.jsxs)(ue,{className:`max-w-lg`,children:[(0,X.jsxs)(Fe,{children:[(0,X.jsx)(ze,{children:v?`Edit “${v}”`:`New datasource`}),(0,X.jsx)(tt,{children:v?`Update the connection. Leave the credential blank to keep the current one.`:`Connect an external database. Credentials are encrypted and never stored in metadata.`})]}),b&&(0,X.jsxs)(`div`,{className:`max-h-[60vh] space-y-3 overflow-y-auto pr-1`,children:[!v&&(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs`,children:`Name *`}),(0,X.jsx)(z,{value:b.name,placeholder:`my_database`,onChange:e=>x(t=>t&&{...t,name:e.target.value})}),!ie&&b.name.length>0&&(0,X.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Lowercase letters, digits, and underscores; must not start with a digit.`})]}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs`,children:`Label`}),(0,X.jsx)(z,{value:b.label,placeholder:`Human-friendly name`,onChange:e=>x(t=>t&&{...t,label:e.target.value})})]}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs`,children:`Driver *`}),(0,X.jsxs)(_e,{value:b.driver,onValueChange:P,disabled:!!v,children:[(0,X.jsx)(Ve,{children:(0,X.jsx)(ft,{placeholder:`Choose a driver`})}),(0,X.jsx)(Ce,{children:m.map(e=>(0,X.jsx)(ke,{value:e.id,children:e.label},e.id))})]}),j?.description&&(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:j.description})]}),Object.entries(j?.configSchema?.properties??{}).map(([e,t])=>ve(e,t)),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs`,children:`Schema mode`}),(0,X.jsxs)(_e,{value:b.schemaMode,onValueChange:e=>x(t=>t&&{...t,schemaMode:e}),children:[(0,X.jsx)(Ve,{children:(0,X.jsx)(ft,{})}),(0,X.jsx)(Ce,{children:$d.map(e=>(0,X.jsx)(ke,{value:e.value,children:e.label},e.value))})]})]}),E&&(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs `+(E.ok?`text-emerald-600`:`text-destructive`),children:[E.ok?(0,X.jsx)(An,{className:`h-3.5 w-3.5`}):(0,X.jsx)(Fn,{className:`h-3.5 w-3.5`}),E.text]})]}),(0,X.jsxs)(Me,{className:`gap-2 sm:justify-between`,children:[(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,disabled:!b?.driver||O,onClick:()=>void ne(),children:[O?(0,X.jsx)(V,{className:`mr-1.5 h-4 w-4 animate-spin`}):(0,X.jsx)(ai,{className:`mr-1.5 h-4 w-4`}),` Test connection`]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(B,{variant:`ghost`,size:`sm`,onClick:()=>_(!1),children:`Cancel`}),(0,X.jsxs)(B,{size:`sm`,disabled:!F,onClick:()=>void re(),children:[w&&(0,X.jsx)(V,{className:`mr-1.5 h-4 w-4 animate-spin`}),v?`Save changes`:`Create datasource`]})]})]})]})}),(0,X.jsx)(rt,{open:!!ae,onOpenChange:e=>{e||oe(null)},children:(0,X.jsxs)(ue,{className:`max-w-lg`,children:[(0,X.jsxs)(Fe,{children:[(0,X.jsxs)(ze,{children:[`Sync objects from “`,ae,`”`]}),(0,X.jsx)(tt,{children:`Pick the remote tables to import as objects. Each becomes an object definition.`})]}),se==null?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 py-8 text-sm text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` Introspecting…`]}):se.length===0?(0,X.jsx)(`p`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No remote tables found on this datasource.`}):(0,X.jsx)(`div`,{className:`max-h-[50vh] space-y-1 overflow-y-auto`,children:se.map(e=>{let t=e.schema?`${e.schema}.${e.name}`:e.name;return(0,X.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm hover:bg-accent`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:le.has(e.name),onChange:()=>he(e.name),className:`h-4 w-4`}),(0,X.jsx)(`span`,{className:`flex-1`,children:t}),e.columnCount!=null&&(0,X.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.columnCount,` cols`]})]},t)})}),(0,X.jsxs)(`div`,{className:`mt-2 flex items-center justify-end gap-2`,children:[(0,X.jsx)(B,{variant:`ghost`,size:`sm`,onClick:()=>oe(null),children:`Cancel`}),(0,X.jsxs)(B,{size:`sm`,disabled:fe||le.size===0,onClick:()=>void ge(),children:[fe?(0,X.jsx)(V,{className:`mr-1.5 h-4 w-4 animate-spin`}):(0,X.jsx)(un,{className:`mr-1.5 h-4 w-4`}),`Create `,le.size||``,` object`,le.size===1?``:`s`]})]})]})})]})}var af=!1;function of(){af||(af=!0,ka({type:`datasource`,label:`Datasources`,domain:`data`,ListPage:rf}))}function Z({toolbar:e,children:t}){return(0,X.jsxs)(`div`,{className:`rounded-lg border bg-background overflow-hidden flex flex-col h-full`,children:[e!=null&&(0,X.jsx)(`div`,{className:`flex items-center justify-end border-b bg-muted/20 px-2 py-1 min-h-[32px]`,children:e}),(0,X.jsx)(`div`,{className:`bg-background flex-1 min-h-0 overflow-auto`,children:t})]})}function sf({tone:e=`info`,children:t}){return(0,X.jsxs)(`div`,{className:`m-4 rounded border p-3 text-sm flex items-start gap-2 ${e===`warn`?`text-amber-800 bg-amber-50 border-amber-200`:e===`error`?`text-destructive bg-destructive/5 border-destructive/30`:`text-muted-foreground border-muted`}`,children:[e!==`info`&&(0,X.jsx)(kn,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,X.jsx)(`div`,{className:`flex-1`,children:t})]})}function cf({icon:e,title:t,description:n,action:r,tone:i=`info`}){let a=i===`warn`?`text-amber-700 bg-amber-50/40 border-amber-200/60`:`text-muted-foreground border-dashed border-muted-foreground/25 bg-muted/10`,o=e??(0,X.jsx)(Tr,{className:`h-8 w-8 opacity-50`});return(0,X.jsx)(`div`,{className:`h-full w-full flex items-center justify-center p-6`,children:(0,X.jsxs)(`div`,{className:`max-w-md w-full rounded-lg border ${a} px-6 py-10 flex flex-col items-center gap-3 text-center`,children:[(0,X.jsx)(`div`,{className:`text-foreground/60`,children:o}),(0,X.jsx)(`div`,{className:`text-sm font-medium text-foreground/90`,children:t}),n&&(0,X.jsx)(`div`,{className:`text-xs leading-relaxed`,children:n}),r&&(0,X.jsx)(`div`,{className:`mt-1`,children:r})]})})}function lf(){let e=Bo();return(0,X.jsx)(`div`,{className:`font-medium`,children:W(`engine.previewShell.renderFailed`,e)})}var Q=class extends Y.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e){console.error(`[MetadataPreview] render failed`,e)}render(){return this.state.error?(0,X.jsxs)(sf,{tone:`error`,children:[(0,X.jsx)(lf,{}),(0,X.jsx)(`div`,{className:`text-xs mt-1 font-mono opacity-80`,children:this.state.error.message}),this.props.fallbackHint&&(0,X.jsx)(`div`,{className:`text-xs mt-2 opacity-70`,children:this.props.fallbackHint})]}):this.props.children}};function uf({title:e,entries:t,selectedId:n,onSelect:r,onAdd:i,addLabel:a}){return t.length===0&&!i?null:(0,X.jsxs)(`div`,{className:`border-b bg-muted/30 px-3 py-2`,children:[(0,X.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground mb-1.5`,children:e}),(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[t.map(e=>(0,X.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),r(e)},className:L(`rounded border bg-background px-2 py-0.5 text-xs hover:border-primary/50 cursor-pointer`,n===e.id&&`ring-2 ring-primary border-primary`),children:e.label},e.id)),i&&(0,X.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),i()},className:`rounded border border-dashed bg-background px-2 py-0.5 text-xs text-muted-foreground hover:border-primary hover:text-primary cursor-pointer inline-flex items-center gap-1`,"aria-label":a??`Add`,title:a??`Add`,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:a??`Add`})]})]})]})}var df=Y.lazy(async()=>({default:(await n(()=>import(`./dist-Dc_9i5rZ.js`).then(e=>e.n),[],import.meta.url)).Editor}));function ff(e){let t=e.languages.typescript;t.typescriptDefaults.setDiagnosticsOptions({noSemanticValidation:!0,noSyntaxValidation:!0,noSuggestionDiagnostics:!0}),t.typescriptDefaults.setCompilerOptions({jsx:t.JsxEmit.React,target:t.ScriptTarget.Latest,allowNonTsExtensions:!0,allowJs:!0,noEmit:!0})}function pf({draft:e,onPatch:t,readOnly:n,fallbackDelayMs:r=4e3,mode:i=`split`,locale:a}){let o=e.kind===`react`?`react`:`html`,s=typeof e.source==`string`?e.source:``,[c,l]=Y.useState(s),u=Y.useRef(s);Y.useEffect(()=>{s!==u.current&&(l(s),u.current=s)},[s]);let[d,f]=Pa(r),[p,m]=Y.useState(()=>typeof document<`u`&&document.documentElement.classList.contains(`dark`)?`vs-dark`:`light`);Y.useEffect(()=>{if(typeof document>`u`)return;let e=document.documentElement,t=new MutationObserver(()=>m(e.classList.contains(`dark`)?`vs-dark`:`light`));return t.observe(e,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let h=e=>{let n=e??``;l(n),u.current=n,t?.({source:n})},g=Y.useMemo(()=>({...e,type:e.type??`page`}),[e]),_=(0,X.jsx)(`div`,{ref:f,className:`h-full min-h-[260px] overflow-hidden bg-background`,children:d?(0,X.jsx)(`textarea`,{value:c,onChange:e=>h(e.target.value),readOnly:n,spellCheck:!1,"aria-label":W(`engine.sourcePageEditor.source`,a),className:`h-full w-full resize-none bg-background p-3 font-mono text-xs leading-relaxed outline-none`}):(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsx)(me,{className:`h-full w-full`}),children:(0,X.jsx)(df,{value:c,language:`typescript`,path:o===`react`?`page.tsx`:`page.html.tsx`,theme:p,beforeMount:ff,onChange:h,options:{readOnly:n,minimap:{enabled:!1},fontSize:12,lineNumbers:`on`,scrollBeyondLastLine:!1,automaticLayout:!0,folding:!0,wordWrap:`on`,tabSize:2,scrollbar:{verticalScrollbarSize:10,horizontalScrollbarSize:10}}})})}),v=(0,X.jsx)(`div`,{className:`h-full min-h-[260px] overflow-auto bg-muted/20`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.sourcePageEditor.renderFailed`,a),children:(0,X.jsx)(At,{schema:g})})});return i===`editor`?_:i===`preview`?(0,X.jsx)(Z,{hint:`page · ${o} source`,children:v}):(0,X.jsx)(Z,{hint:`page · ${o} source`,children:(0,X.jsxs)(`div`,{className:`grid h-full grid-cols-1 divide-y divide-border lg:grid-cols-2 lg:divide-x lg:divide-y-0`,children:[_,v]})})}var mf={grid:{label:`Grid`,labelKey:`engine.pageBlockCanvas.type.grid`,category:`data`,Icon:Mr},"object-grid":{label:`Table`,labelKey:`engine.pageBlockCanvas.type.objectGrid`,category:`data`,Icon:Ni},"object-form":{label:`Form`,labelKey:`engine.pageBlockCanvas.type.objectForm`,category:`data`,Icon:ci},"object-metric":{label:`Metric`,labelKey:`engine.pageBlockCanvas.type.objectMetric`,category:`data`,Icon:gr},"object-kanban":{label:`Kanban`,labelKey:`engine.pageBlockCanvas.type.objectKanban`,category:`data`,Icon:Un},"page:header":{label:`Header`,labelKey:`engine.pageBlockCanvas.type.pageHeader`,category:`layout`,Icon:ei},"page:footer":{label:`Footer`,labelKey:`engine.pageBlockCanvas.type.pageFooter`,category:`layout`,Icon:Zr},"page:sidebar":{label:`Sidebar`,labelKey:`engine.pageBlockCanvas.type.pageSidebar`,category:`layout`,Icon:Qr},"page:tabs":{label:`Tabs`,labelKey:`engine.pageBlockCanvas.type.pageTabs`,category:`layout`,Icon:mr},"page:accordion":{label:`Accordion`,labelKey:`engine.pageBlockCanvas.type.pageAccordion`,category:`layout`,Icon:On},"page:card":{label:`Card`,labelKey:`engine.pageBlockCanvas.type.pageCard`,category:`layout`,Icon:Oi},"page:section":{label:`Section`,labelKey:`engine.pageBlockCanvas.type.pageSection`,category:`layout`,Icon:Ar},"record:details":{label:`Record details`,labelKey:`engine.pageBlockCanvas.type.recordDetails`,category:`record`,Icon:sr},"record:highlights":{label:`Highlights`,labelKey:`engine.pageBlockCanvas.type.recordHighlights`,category:`record`,Icon:Pi},"record:related_list":{label:`Related list`,labelKey:`engine.pageBlockCanvas.type.recordRelatedList`,category:`record`,Icon:Fr},"record:activity":{label:`Activity timeline`,labelKey:`engine.pageBlockCanvas.type.recordActivity`,category:`record`,Icon:Zt},"record:discussion":{label:`Discussion`,labelKey:`engine.pageBlockCanvas.type.recordDiscussion`,category:`record`,Icon:Ur},"record:path":{label:`Stage path`,labelKey:`engine.pageBlockCanvas.type.recordPath`,category:`record`,Icon:Wn},"record:alert":{label:`Alert banner`,labelKey:`engine.pageBlockCanvas.type.recordAlert`,category:`record`,Icon:zi},"record:quick_actions":{label:`Quick actions`,labelKey:`engine.pageBlockCanvas.type.recordQuickActions`,category:`record`,Icon:Ji},"record:reference_rail":{label:`Reference rail`,labelKey:`engine.pageBlockCanvas.type.recordReferenceRail`,category:`record`,Icon:sn},"record:history":{label:`History`,labelKey:`engine.pageBlockCanvas.type.recordHistory`,category:`record`,Icon:pi},"nav:menu":{label:`Nav menu`,labelKey:`engine.pageBlockCanvas.type.navMenu`,category:`navigation`,Icon:Vr},"nav:breadcrumb":{label:`Breadcrumb`,labelKey:`engine.pageBlockCanvas.type.navBreadcrumb`,category:`navigation`,Icon:Wn},"global:search":{label:`Global search`,labelKey:`engine.pageBlockCanvas.type.globalSearch`,category:`navigation`,Icon:vi},"ai:suggestion":{label:`AI suggestion`,labelKey:`engine.pageBlockCanvas.type.aiSuggestion`,category:`ai`,Icon:Ei},"element:text":{label:`Text`,labelKey:`engine.pageBlockCanvas.type.elementText`,category:`element`,Icon:Bi},"element:number":{label:`Number`,labelKey:`engine.pageBlockCanvas.type.elementNumber`,category:`element`,Icon:Cr},"element:image":{label:`Image`,labelKey:`engine.pageBlockCanvas.type.elementImage`,category:`element`,Icon:wr},"element:divider":{label:`Divider`,labelKey:`engine.pageBlockCanvas.type.elementDivider`,category:`element`,Icon:Wr},"element:button":{label:`Button`,labelKey:`engine.pageBlockCanvas.type.elementButton`,category:`element`,Icon:Kr},"element:definition-list":{label:`Definition list`,labelKey:`engine.pageBlockCanvas.type.elementDefinitionList`,category:`element`,Icon:Ir},"element:repeater":{label:`Repeater`,labelKey:`engine.pageBlockCanvas.type.elementRepeater`,category:`element`,Icon:hi}},hf=[[`record:discussion`,`record:chatter`]],gf={data:`engine.pageBlockCanvas.category.data`,layout:`engine.pageBlockCanvas.category.layout`,record:`engine.pageBlockCanvas.category.record`,navigation:`engine.pageBlockCanvas.category.navigation`,element:`engine.pageBlockCanvas.category.element`,ai:`engine.pageBlockCanvas.category.ai`,misc:`engine.pageBlockCanvas.category.misc`},_f=(()=>{let e={data:[],layout:[],record:[],navigation:[],element:[],ai:[],misc:[]};for(let[t,n]of Object.entries(mf))e[n.category].push(t);return[`data`,`layout`,`record`,`element`,`navigation`,`ai`,`misc`].map(t=>({category:t,types:e[t]})).filter(e=>e.types.length>0)})(),vf=ln,yf={data:{icon:`text-emerald-500 dark:text-emerald-400`,badge:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-300`},layout:{icon:`text-slate-500 dark:text-slate-400`,badge:`border-slate-200 bg-slate-50 text-slate-700 dark:border-slate-800 dark:bg-slate-900/40 dark:text-slate-300`},record:{icon:`text-blue-500 dark:text-blue-400`,badge:`border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900 dark:bg-blue-950/40 dark:text-blue-300`},navigation:{icon:`text-indigo-500 dark:text-indigo-400`,badge:`border-indigo-200 bg-indigo-50 text-indigo-700 dark:border-indigo-900 dark:bg-indigo-950/40 dark:text-indigo-300`},element:{icon:`text-teal-500 dark:text-teal-400`,badge:`border-teal-200 bg-teal-50 text-teal-700 dark:border-teal-900 dark:bg-teal-950/40 dark:text-teal-300`},ai:{icon:`text-violet-500 dark:text-violet-400`,badge:`border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-900 dark:bg-violet-950/40 dark:text-violet-300`},misc:{icon:`text-zinc-500 dark:text-zinc-400`,badge:`border-zinc-200 bg-zinc-50 text-zinc-600 dark:border-zinc-800 dark:bg-zinc-900/40 dark:text-zinc-400`}};function bf(e){let t=mf[e];if(t)return{Icon:t.Icon,category:t.category};for(let t of hf)if(t.includes(e))for(let e of t){let t=mf[e];if(t)return{Icon:t.Icon,category:t.category}}}function xf(e){return yf[bf(e)?.category??`misc`]}var Sf={"object-grid":[{name:`objectName`,label:`engine.inspector.pageBlock.field.object-grid.objectName`,kind:`object-picker`},{name:`columns`,label:`engine.inspector.pageBlock.field.object-grid.columns`,kind:`field-list`,objectFrom:`self`,objectProp:`objectName`},{name:`pageSize`,label:`engine.inspector.pageBlock.field.object-grid.pageSize`,kind:`number`,placeholder:{literal:`20`}}],"object-form":[{name:`objectName`,label:`engine.inspector.pageBlock.field.object-form.objectName`,kind:`object-picker`},{name:`mode`,label:`engine.inspector.pageBlock.field.object-form.mode`,kind:`select`,options:[{value:`create`,label:`engine.inspector.pageBlock.option.mode.create`},{value:`edit`,label:`engine.inspector.pageBlock.option.mode.edit`},{value:`view`,label:`engine.inspector.pageBlock.option.mode.view`}]},{name:`formType`,label:`engine.inspector.pageBlock.field.object-form.formType`,kind:`select`,options:[{value:`simple`,label:`engine.inspector.pageBlock.option.formType.simple`},{value:`tabbed`,label:`engine.inspector.pageBlock.option.formType.tabbed`},{value:`wizard`,label:`engine.inspector.pageBlock.option.formType.wizard`},{value:`split`,label:`engine.inspector.pageBlock.option.formType.split`},{value:`drawer`,label:`engine.inspector.pageBlock.option.formType.drawer`},{value:`modal`,label:`engine.inspector.pageBlock.option.formType.modal`}]},{name:`layout`,label:`engine.inspector.pageBlock.field.object-form.layout`,kind:`select`,options:[{value:`vertical`,label:`engine.inspector.pageBlock.option.layout.vertical`},{value:`horizontal`,label:`engine.inspector.pageBlock.option.layout.horizontal`},{value:`inline`,label:`engine.inspector.pageBlock.option.layout.inline`},{value:`grid`,label:`engine.inspector.pageBlock.option.layout.grid`}]},{name:`columns`,label:`engine.inspector.pageBlock.field.object-form.columns`,kind:`number`,placeholder:{literal:`2`}},{name:`fields`,label:`engine.inspector.pageBlock.field.object-form.fields`,kind:`field-list`,objectFrom:`self`,objectProp:`objectName`},{name:`title`,label:`engine.inspector.pageBlock.field.object-form.title`,kind:`text`},{name:`description`,label:`engine.inspector.pageBlock.field.object-form.description`,kind:`text`}],"object-metric":[{name:`objectName`,label:`engine.inspector.pageBlock.field.object-metric.objectName`,kind:`object-picker`},{name:`label`,label:`engine.inspector.pageBlock.field.object-metric.label`,kind:`text`},{name:`description`,label:`engine.inspector.pageBlock.field.object-metric.description`,kind:`text`},{name:`icon`,label:`engine.inspector.pageBlock.field.object-metric.icon`,kind:`text`,placeholder:{key:`engine.inspector.pageBlock.placeholder.object-metric.icon`}},{name:`colorVariant`,label:`engine.inspector.pageBlock.field.object-metric.colorVariant`,kind:`color`,options:[{value:`default`,label:`engine.inspector.pageBlock.option.colorVariant.default`},{value:`blue`,label:`engine.inspector.pageBlock.option.colorVariant.blue`},{value:`teal`,label:`engine.inspector.pageBlock.option.colorVariant.teal`},{value:`orange`,label:`engine.inspector.pageBlock.option.colorVariant.orange`},{value:`purple`,label:`engine.inspector.pageBlock.option.colorVariant.purple`},{value:`success`,label:`engine.inspector.pageBlock.option.colorVariant.success`},{value:`warning`,label:`engine.inspector.pageBlock.option.colorVariant.warning`},{value:`danger`,label:`engine.inspector.pageBlock.option.colorVariant.danger`}]},{name:`format`,label:`engine.inspector.pageBlock.field.object-metric.format`,kind:`select`,options:[{value:`number`,label:`engine.inspector.pageBlock.option.format.number`},{value:`currency`,label:`engine.inspector.pageBlock.option.format.currency`},{value:`percent`,label:`engine.inspector.pageBlock.option.format.percent`}]},{name:`prefix`,label:`engine.inspector.pageBlock.field.object-metric.prefix`,kind:`text`},{name:`suffix`,label:`engine.inspector.pageBlock.field.object-metric.suffix`,kind:`text`}],"object-kanban":[{name:`objectName`,label:`engine.inspector.pageBlock.field.object-kanban.objectName`,kind:`object-picker`},{name:`groupBy`,label:`engine.inspector.pageBlock.field.object-kanban.groupBy`,kind:`field-picker`,objectFrom:`self`,objectProp:`objectName`},{name:`titleField`,label:`engine.inspector.pageBlock.field.object-kanban.titleField`,kind:`field-picker`,objectFrom:`self`,objectProp:`objectName`},{name:`cardFields`,label:`engine.inspector.pageBlock.field.object-kanban.cardFields`,kind:`field-list`,objectFrom:`self`,objectProp:`objectName`},{name:`limit`,label:`engine.inspector.pageBlock.field.object-kanban.limit`,kind:`number`,placeholder:{literal:`100`}}],grid:[{name:`columns`,label:`engine.inspector.pageBlock.field.grid.columns`,kind:`number`,placeholder:{literal:`3`}},{name:`gap`,label:`engine.inspector.pageBlock.field.grid.gap`,kind:`number`,placeholder:{literal:`4`}}],"element:text":[{name:`content`,label:`engine.inspector.pageBlock.field.element:text.content`,kind:`text`,placeholder:{key:`engine.inspector.pageBlock.placeholder.element:text.content`}},{name:`variant`,label:`engine.inspector.pageBlock.field.element:text.variant`,kind:`select`,options:[{value:`heading`,label:`engine.inspector.pageBlock.option.variant.heading`},{value:`subheading`,label:`engine.inspector.pageBlock.option.variant.subheading`},{value:`body`,label:`engine.inspector.pageBlock.option.variant.body`},{value:`caption`,label:`engine.inspector.pageBlock.option.variant.caption`}]},{name:`align`,label:`engine.inspector.pageBlock.field.element:text.align`,kind:`select`,options:[{value:`left`,label:`engine.inspector.pageBlock.option.align.left`},{value:`center`,label:`engine.inspector.pageBlock.option.align.center`},{value:`right`,label:`engine.inspector.pageBlock.option.align.right`}]}],"element:image":[{name:`src`,label:`engine.inspector.pageBlock.field.element:image.src`,kind:`text`,placeholder:{literal:`https://…`}},{name:`alt`,label:`engine.inspector.pageBlock.field.element:image.alt`,kind:`text`},{name:`fit`,label:`engine.inspector.pageBlock.field.element:image.fit`,kind:`select`,options:[{value:`cover`,label:`engine.inspector.pageBlock.option.fit.cover`},{value:`contain`,label:`engine.inspector.pageBlock.option.fit.contain`},{value:`fill`,label:`engine.inspector.pageBlock.option.fit.fill`}]}],"element:definition-list":[{name:`items`,label:`engine.inspector.pageBlock.field.element:definition-list.items`,kind:`array`,addLabel:`engine.inspector.pageBlock.add.element:definition-list.items`,itemFields:[{name:`term`,label:`engine.inspector.pageBlock.field.element:definition-list.items.term`,kind:`text`},{name:`description`,label:`engine.inspector.pageBlock.field.element:definition-list.items.description`,kind:`text`}]},{name:`columns`,label:`engine.inspector.pageBlock.field.element:definition-list.columns`,kind:`number`,placeholder:{literal:`1`}},{name:`inline`,label:`engine.inspector.pageBlock.field.element:definition-list.inline`,kind:`boolean`}],"element:repeater":[{name:`object`,label:`engine.inspector.pageBlock.field.element:repeater.object`,kind:`object-picker`},{name:`titleField`,label:`engine.inspector.pageBlock.field.element:repeater.titleField`,kind:`field-picker`,objectFrom:`self`,objectProp:`object`},{name:`fields`,label:`engine.inspector.pageBlock.field.element:repeater.fields`,kind:`field-list`,objectFrom:`self`,objectProp:`object`},{name:`limit`,label:`engine.inspector.pageBlock.field.element:repeater.limit`,kind:`number`,placeholder:{literal:`10`}},{name:`emptyText`,label:`engine.inspector.pageBlock.field.element:repeater.emptyText`,kind:`text`},{name:`divided`,label:`engine.inspector.pageBlock.field.element:repeater.divided`,kind:`boolean`}],"element:number":[{name:`object`,label:`engine.inspector.pageBlock.field.element:number.object`,kind:`object-picker`},{name:`field`,label:`engine.inspector.pageBlock.field.element:number.field`,kind:`field-picker`,objectFrom:`self`,objectProp:`object`},{name:`aggregate`,label:`engine.inspector.pageBlock.field.element:number.aggregate`,kind:`select`,options:[{value:`count`,label:`engine.inspector.pageBlock.option.aggregate.count`},{value:`sum`,label:`engine.inspector.pageBlock.option.aggregate.sum`},{value:`avg`,label:`engine.inspector.pageBlock.option.aggregate.avg`},{value:`min`,label:`engine.inspector.pageBlock.option.aggregate.min`},{value:`max`,label:`engine.inspector.pageBlock.option.aggregate.max`}]},{name:`format`,label:`engine.inspector.pageBlock.field.element:number.format`,kind:`select`,options:[{value:`number`,label:`engine.inspector.pageBlock.option.format.number`},{value:`currency`,label:`engine.inspector.pageBlock.option.format.currency`},{value:`percent`,label:`engine.inspector.pageBlock.option.format.percent`}]},{name:`prefix`,label:`engine.inspector.pageBlock.field.element:number.prefix`,kind:`text`},{name:`suffix`,label:`engine.inspector.pageBlock.field.element:number.suffix`,kind:`text`}],"element:button":[{name:`label`,label:`engine.inspector.pageBlock.field.element:button.label`,kind:`text`},{name:`variant`,label:`engine.inspector.pageBlock.field.element:button.variant`,kind:`select`,options:[{value:`primary`,label:`engine.inspector.pageBlock.option.variant.primary`},{value:`secondary`,label:`engine.inspector.pageBlock.option.variant.secondary`},{value:`danger`,label:`engine.inspector.pageBlock.option.variant.danger`},{value:`ghost`,label:`engine.inspector.pageBlock.option.variant.ghost`},{value:`link`,label:`engine.inspector.pageBlock.option.variant.link`}]},{name:`size`,label:`engine.inspector.pageBlock.field.element:button.size`,kind:`select`,options:[{value:`small`,label:`engine.inspector.pageBlock.option.size.small`},{value:`medium`,label:`engine.inspector.pageBlock.option.size.medium`},{value:`large`,label:`engine.inspector.pageBlock.option.size.large`}]},{name:`icon`,label:`engine.inspector.pageBlock.field.element:button.icon`,kind:`text`,placeholder:{key:`engine.inspector.pageBlock.placeholder.element:button.icon`}},{name:`action`,label:`engine.inspector.pageBlock.field.element:button.action`,kind:`json`,placeholder:{literal:`{ "type": "url", "target": "/environments" }`}}],"page:header":[{name:`title`,label:`engine.inspector.pageBlock.field.page:header.title`,kind:`text`},{name:`subtitle`,label:`engine.inspector.pageBlock.field.page:header.subtitle`,kind:`text`},{name:`breadcrumb`,label:`engine.inspector.pageBlock.field.page:header.breadcrumb`,kind:`boolean`}],"page:card":[{name:`title`,label:`engine.inspector.pageBlock.field.page:card.title`,kind:`text`},{name:`bordered`,label:`engine.inspector.pageBlock.field.page:card.bordered`,kind:`boolean`}],"page:tabs":[{name:`items`,label:`engine.inspector.pageBlock.field.page:tabs.items`,kind:`array`,addLabel:`engine.inspector.pageBlock.add.page:tabs.items`,itemFields:[{name:`value`,label:`engine.inspector.pageBlock.field.page:tabs.items.value`,kind:`text`},{name:`label`,label:`engine.inspector.pageBlock.field.page:tabs.items.label`,kind:`text`}]}],"page:accordion":[{name:`items`,label:`engine.inspector.pageBlock.field.page:accordion.items`,kind:`array`,addLabel:`engine.inspector.pageBlock.add.page:accordion.items`,itemFields:[{name:`label`,label:`engine.inspector.pageBlock.field.page:accordion.items.label`,kind:`text`}]}],"record:related_list":[{name:`objectName`,label:`engine.inspector.pageBlock.field.record:related_list.objectName`,kind:`object-picker`},{name:`relationshipField`,label:`engine.inspector.pageBlock.field.record:related_list.relationshipField`,kind:`field-picker`,objectFrom:`self`,objectProp:`objectName`},{name:`title`,label:`engine.inspector.pageBlock.field.record:related_list.title`,kind:`text`},{name:`limit`,label:`engine.inspector.pageBlock.field.record:related_list.limit`,kind:`number`,placeholder:{literal:`10`}}],"record:highlights":[{name:`fields`,label:`engine.inspector.pageBlock.field.record:highlights.fields`,kind:`field-list`,objectFrom:`page`}],"record:details":[{name:`sections`,label:`engine.inspector.pageBlock.field.record:details.sections`,kind:`array`,addLabel:`engine.inspector.pageBlock.add.record:details.sections`,itemFields:[{name:`name`,label:`engine.inspector.pageBlock.field.record:details.sections.name`,kind:`text`,placeholder:{key:`engine.inspector.pageBlock.placeholder.record:details.sections.name`}},{name:`label`,label:`engine.inspector.pageBlock.field.record:details.sections.label`,kind:`text`},{name:`columns`,label:`engine.inspector.pageBlock.field.record:details.sections.columns`,kind:`number`,placeholder:{literal:`2`}},{name:`fields`,label:`engine.inspector.pageBlock.field.record:details.sections.fields`,kind:`field-list`,objectFrom:`page`}]}],"record:alert":[{name:`severity`,label:`engine.inspector.pageBlock.field.record:alert.severity`,kind:`select`,options:[{value:`info`,label:`engine.inspector.pageBlock.option.severity.info`},{value:`warning`,label:`engine.inspector.pageBlock.option.severity.warning`},{value:`error`,label:`engine.inspector.pageBlock.option.severity.error`},{value:`success`,label:`engine.inspector.pageBlock.option.severity.success`}]},{name:`title`,label:`engine.inspector.pageBlock.field.record:alert.title`,kind:`text`},{name:`body`,label:`engine.inspector.pageBlock.field.record:alert.body`,kind:`text`},{name:`icon`,label:`engine.inspector.pageBlock.field.record:alert.icon`,kind:`text`,placeholder:{key:`engine.inspector.pageBlock.placeholder.record:alert.icon`}},{name:`dismissible`,label:`engine.inspector.pageBlock.field.record:alert.dismissible`,kind:`boolean`}],"record:path":[{name:`statusField`,label:`engine.inspector.pageBlock.field.record:path.statusField`,kind:`field-picker`,objectFrom:`page`},{name:`stages`,label:`engine.inspector.pageBlock.field.record:path.stages`,kind:`array`,addLabel:`engine.inspector.pageBlock.add.record:path.stages`,itemFields:[{name:`value`,label:`engine.inspector.pageBlock.field.record:path.stages.value`,kind:`text`},{name:`label`,label:`engine.inspector.pageBlock.field.record:path.stages.label`,kind:`text`}]}],"record:quick_actions":[{name:`actionNames`,label:`engine.inspector.pageBlock.field.record:quick_actions.actionNames`,kind:`string-list`,placeholder:{key:`engine.inspector.pageBlock.placeholder.record:quick_actions.actionNames`}},{name:`location`,label:`engine.inspector.pageBlock.field.record:quick_actions.location`,kind:`select`,options:[{value:`record_header`,label:`engine.inspector.pageBlock.option.location.record_header`},{value:`record_more`,label:`engine.inspector.pageBlock.option.location.record_more`},{value:`record_section`,label:`engine.inspector.pageBlock.option.location.record_section`},{value:`record_related`,label:`engine.inspector.pageBlock.option.location.record_related`},{value:`list_toolbar`,label:`engine.inspector.pageBlock.option.location.list_toolbar`},{value:`list_item`,label:`engine.inspector.pageBlock.option.location.list_item`}]}]};function Cf(e){return!!e&&Array.isArray(Sf[e])&&Sf[e].length>0}var wf={"object-kanban":[`groupField`]};function Tf(e,t){let n=(e&&wf[e]||[]).filter(e=>e in t);if(n.length===0)return t;let r={...t};for(let e of n)delete r[e];return r}function Ef(){let e=Qi(),[t,n]=Y.useState([]),[r,i]=Y.useState(!0),[a,o]=Y.useState(null);return Y.useEffect(()=>{let t=!1;return i(!0),o(null),e.list(`object`).then(e=>{if(t)return;let r=(e??[]).map(e=>e&&typeof e==`object`&&`item`in e?e.item:e).filter(e=>typeof e?.name==`string`&&e.name).map(e=>({value:e.name,label:e.label?`${e.label} (${e.name})`:e.name})).sort((e,t)=>e.value.localeCompare(t.value));n(r),i(!1)}).catch(e=>{t||(n([]),i(!1),o(e?.message??String(e)))}),()=>{t=!0}},[e]),{options:t,loading:r,error:a}}function Df(e){let{fields:t}=to(e);return Y.useMemo(()=>t.filter(e=>!e.hidden).map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name})),[t])}function Of({label:e,value:t,onCommit:n,disabled:r,locale:i}){let{options:a}=Ef();return a.length===0?(0,X.jsx)(J,{label:e,value:t??``,placeholder:W(`engine.inspector.pageBlock.objectPlaceholder`,i),onCommit:n,disabled:r,mono:!0}):(0,X.jsx)(q,{label:e,value:t||void 0,options:a,onCommit:n,disabled:r})}function kf({label:e,objectName:t,value:n,onCommit:r,disabled:i}){let a=Df(t);return!t||a.length===0?(0,X.jsx)(J,{label:e,value:n??``,onCommit:r,disabled:i,mono:!0}):(0,X.jsx)(q,{label:e,value:n||void 0,options:a,onCommit:r,disabled:i})}function Af({label:e,objectName:t,value:n,onChange:r,disabled:i,locale:a}){let o=Df(t),s=Array.isArray(n)?n:[];return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),s.map((e,t)=>(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[o.length>0?(0,X.jsx)(`div`,{className:`flex-1`,children:(0,X.jsxs)(_e,{value:e?String(e):``,onValueChange:e=>{let n=[...s];n[t]=e,r(n)},disabled:i,children:[(0,X.jsx)(Ve,{className:`h-8`,children:(0,X.jsx)(ft,{placeholder:`—`})}),(0,X.jsx)(Ce,{children:o.map(e=>(0,X.jsx)(ke,{value:e.value,children:e.label},e.value))})]})}):(0,X.jsx)(z,{className:`h-8 text-sm`,value:String(e??``),placeholder:W(`engine.inspector.pageBlock.fieldPlaceholder`,a),disabled:i,onChange:e=>{let n=[...s];n[t]=e.target.value,r(n)}}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:i,"aria-label":W(`engine.inspector.pageBlock.list.remove`,a),onClick:()=>r(s.filter((e,n)=>n!==t)),children:(0,X.jsx)(qi,{className:`h-4 w-4`})})]},t)),!i&&(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r([...s,``]),children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),` `,W(`engine.inspector.pageBlock.list.add`,a)]})]})}function jf(e){if(e===void 0)return``;try{return JSON.stringify(e,null,2)}catch{return``}}function Mf({label:e,value:t,onCommit:n,disabled:r,placeholder:i,locale:a}){let o=Y.useMemo(()=>jf(t),[t]),[s,c]=Y.useState(o),[l,u]=Y.useState(!1);return Y.useEffect(()=>{c(o),u(!1)},[o]),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsx)(`textarea`,{value:s,onChange:e=>c(e.target.value),onBlur:()=>{if(r)return;let e=s.trim();if(e===``){u(!1),n(void 0);return}try{let t=JSON.parse(e);u(!1),n(t)}catch{u(!0)}},disabled:r,placeholder:i,spellCheck:!1,rows:Math.min(12,Math.max(2,s.split(`
5
- `).length)),className:`w-full rounded border border-input bg-background px-2 py-1.5 text-xs font-mono outline-none focus:ring-1 focus:ring-primary resize-y disabled:opacity-60`}),l&&(0,X.jsx)(`div`,{className:`text-[11px] text-destructive`,children:W(`engine.form.invalidJson`,a)})]})}function Nf({name:e,value:t,onCommit:n,disabled:r,locale:i}){return typeof t==`boolean`?(0,X.jsx)(K,{label:e,value:t,onCommit:n,disabled:r}):typeof t==`number`?(0,X.jsx)(ts,{label:e,value:t,onCommit:e=>n(e),disabled:r}):t===null||typeof t==`string`?(0,X.jsx)(J,{label:e,value:t??``,onCommit:n,disabled:r,mono:!0}):(0,X.jsx)(Mf,{label:e,value:t,onCommit:n,disabled:r,locale:i})}function Pf({label:e,value:t,onChange:n,disabled:r,options:i}){let a=Y.useId();return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{id:a,className:`text-xs text-muted-foreground`,children:e}),(0,X.jsx)(so,{ariaLabelledBy:a,value:t,onChange:n,disabled:r,options:i})]})}var Ff=new Set([`children`,`body`]),If=Symbol(`remove`);function Lf(e){let t=e.split(`.`),n=[];for(let e of t){let t=/^([a-zA-Z_]\w*)(?:\[(\d+)\])?$/.exec(e);if(!t)return null;n.push({key:t[1],index:t[2]==null?-1:Number(t[2])})}return n.length>0?n:null}function Rf(e){let t=[];for(let n of e)t.push(n.key),n.index>=0&&t.push(n.index);return t}function zf(e,t){let n=e;for(let e of t){if(n==null)return null;n=n[e]}return n??null}function Bf(e,t,n){if(t.length===0)return n;let[r,...i]=t;if(typeof r==`number`){let t=Array.isArray(e)?[...e]:[];return i.length===0?n===If?t.splice(r,1):t[r]=n:t[r]=Bf(t[r],i,n),t}let a={...e||{}};return i.length===0?n===If?delete a[r]:a[r]=n:a[r]=Bf(a[r],i,n),a}function Vf(e,t){return zf(e,Rf(t))}function Hf(e,t,n){let r=Rf(t),i=Bf(e,r,n===null?If:n),a=r[0];return{[a]:i[a]}}function Uf(e,t){let n=Rf(t),r=n[n.length-1];if(typeof r!=`number`)return null;let i=zf(e,n.slice(0,-1));return Array.isArray(i)?{siblings:i,index:r}:null}function Wf(e,t,n){let r=Rf(t),i=Bf(e,r.slice(0,-1),n),a=r[0];return{[a]:i[a]}}function Gf({selection:e,draft:t,onPatch:n,onClearSelection:r,onSelectionChange:i,onBlockingIssuesChange:a,locale:o,readOnly:s}){let c=/^slot:([a-zA-Z_]+):(\d+)(?:\.(.+))?$/.exec(e.id),l=c?null:Lf(e.id),u=c?c[1]:``,d=c?Number(c[2]):-1,f=c?c[3]:void 0,p=f?Lf(f):null,m=t.slots&&typeof t.slots==`object`?t.slots:{},h=c?Array.isArray(m[u])?m[u]:m[u]==null?[]:[m[u]]:[],g=c?h[d]??null:null,_=e=>n({slots:{...m,[u]:e}}),v=e=>_(e===null?h.filter((e,t)=>t!==d):h.map((t,n)=>n===d?e:t)),y=c?p?Vf(g||{},p):g:l?Vf(t,l):null,b=c?p?Uf(g||{},p):{siblings:h,index:d}:l?Uf(t,l):null,[x,S]=Y.useState({block:e.id,count:0}),C=Y.useCallback(t=>{S(n=>n.block===e.id&&n.count===t?n:{block:e.id,count:t})},[e.id]),w=x.block===e.id?x.count:0,T=Y.useRef(a);if(Y.useEffect(()=>{T.current=a}),Y.useEffect(()=>{T.current?.(w)},[w]),!c&&!l||!y)return(0,X.jsx)(Wo,{kindLabel:W(`engine.inspector.pageBlock.kind`,o),title:e.label??e.id,onClose:r,closeLabel:W(`engine.inspector.pageBlock.close`,o),children:(0,X.jsx)(Jo,{message:e.id})});let E=e=>c?v(p?{...g,...Hf(g||{},p,{...y,...e})}:{...y,...e}):n(Hf(t,l,{...y,...e})),D=Tf(y.type,y.properties||{}),O=typeof t?.object==`string`?t.object:void 0,k=e=>e.objectFrom===`page`?O:e.objectProp!=null&&D[e.objectProp]!=null?String(D[e.objectProp]):void 0,A=e=>D[e]??y[e],j=(e,t)=>E({properties:{...D,[e]:t}}),M=new Set((Cf(y.type)?Sf[y.type]:[]).map(e=>e.name)),N=Object.keys(D).filter(e=>!M.has(e)&&!Ff.has(e)),P=e=>W(e,o),ee=e=>e.map(e=>({...e,label:W(e.label,o)})),te=e=>e===void 0?void 0:e.key===void 0?e.literal:W(e.key,o),ne=(e,t,n,r=``)=>{let i=`${r}${e.name}`;switch(e.kind){case`number`:return(0,X.jsx)(ts,{label:P(e.label),value:typeof t(e.name)==`number`?t(e.name):void 0,placeholder:te(e.placeholder),onCommit:t=>n(e.name,t),disabled:s},i);case`boolean`:return(0,X.jsx)(K,{label:P(e.label),value:!!t(e.name),onCommit:t=>n(e.name,t),disabled:s},i);case`color`:return(0,X.jsx)(Pf,{label:P(e.label),value:t(e.name)==null?void 0:String(t(e.name)),onChange:t=>n(e.name,t),disabled:s,options:e.options?ee(e.options):void 0},i);case`select`:return(0,X.jsx)(q,{label:P(e.label),value:t(e.name)==null?void 0:String(t(e.name)),options:ee(e.options),onCommit:t=>n(e.name,t),disabled:s},i);case`json`:return(0,X.jsx)(Mf,{label:P(e.label),value:t(e.name),placeholder:te(e.placeholder),locale:o,onCommit:t=>n(e.name,t),disabled:s},i);case`string-list`:{let r=Array.isArray(t(e.name))?t(e.name):[];return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:P(e.label)}),r.map((t,i)=>(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(z,{className:`h-8 text-sm`,value:String(t??``),placeholder:te(e.placeholder),disabled:s,onChange:t=>{let a=[...r];a[i]=t.target.value,n(e.name,a)}}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:s,"aria-label":W(`engine.inspector.pageBlock.list.remove`,o),onClick:()=>n(e.name,r.filter((e,t)=>t!==i)),children:(0,X.jsx)(qi,{className:`h-4 w-4`})})]},i)),!s&&(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>n(e.name,[...r,``]),children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),` `,W(`engine.inspector.pageBlock.list.add`,o)]})]},i)}case`array`:{let r=Array.isArray(t(e.name))?t(e.name):[];return(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:P(e.label)}),r.map((t,a)=>{let c=t&&typeof t==`object`?t:{};return(0,X.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`#`,a+1]}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7`,disabled:s,"aria-label":W(`engine.inspector.pageBlock.list.removeItem`,o),onClick:()=>n(e.name,r.filter((e,t)=>t!==a)),children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]}),e.itemFields.map(t=>ne(t,e=>c[e],(t,i)=>{let o=[...r];o[a]={...c,[t]:i},n(e.name,o)},`${i}-${a}-`))]},a)}),!s&&(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>n(e.name,[...r,{}]),children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),` `,P(e.addLabel)]})]},i)}case`object-picker`:return(0,X.jsx)(Of,{label:P(e.label),locale:o,value:t(e.name)==null?void 0:String(t(e.name)),onCommit:t=>n(e.name,t),disabled:s},i);case`field-picker`:return(0,X.jsx)(kf,{label:P(e.label),objectName:k(e),value:t(e.name)==null?void 0:String(t(e.name)),onCommit:t=>n(e.name,t),disabled:s},i);case`field-list`:return(0,X.jsx)(Af,{label:P(e.label),objectName:k(e),locale:o,value:t(e.name),onChange:t=>n(e.name,t),disabled:s},i);default:return(0,X.jsx)(J,{label:P(e.label),value:t(e.name)==null?``:String(t(e.name)),placeholder:te(e.placeholder),onCommit:t=>n(e.name,t),disabled:s},i)}},re=()=>{c?v(p?{...g,...Hf(g||{},p,null)}:null):n(Hf(t,l,null)),r()},ie=e=>e.map(e=>e.index>=0?`${e.key}[${e.index}]`:e.key).join(`.`);return(0,X.jsxs)(Wo,{kindLabel:W(`engine.inspector.pageBlock.kind`,o),title:String(y.id||y.type||e.id),onClose:r,closeLabel:W(`engine.inspector.pageBlock.close`,o),headerActions:b?(0,X.jsx)(Yo,{index:b.index,total:b.siblings.length,onMove:e=>{if(!b)return;if(c){if(p){let t=os(b.siblings,b.index,e);v({...g,...Wf(g||{},p,t)});let n=ie([...p.slice(0,-1),{key:p[p.length-1].key,index:e}]);i?.({kind:`block`,id:`slot:${u}:${d}.${n}`,label:String(y.id||y.type||e)})}else _(os(h,d,e)),i?.({kind:`block`,id:`slot:${u}:${e}`,label:String(y.id||y.type||e)});return}let r=os(b.siblings,b.index,e);n(Wf(t,l,r));let a=ie([...l.slice(0,-1),{key:l[l.length-1].key,index:e}]);i?.({kind:`block`,id:a,label:String(y.id||y.type||a)})},upLabel:W(`engine.inspector.reorder.up`,o),downLabel:W(`engine.inspector.reorder.down`,o),disabled:s}):void 0,footer:(0,X.jsx)(Qo,{label:W(`engine.inspector.pageBlock.remove`,o),onClick:re,disabled:s}),children:[(0,X.jsx)(J,{label:W(`engine.inspector.pageBlock.type`,o),value:y.type??``,onCommit:e=>E({type:e}),disabled:s,mono:!0}),(0,X.jsx)(J,{label:W(`engine.inspector.pageBlock.id`,o),value:y.id??``,onCommit:e=>E({id:e}),disabled:s,mono:!0}),(0,X.jsx)(J,{label:W(`engine.inspector.pageBlock.className`,o),value:y.className??``,onCommit:e=>E({className:e}),disabled:s,mono:!0}),(0,X.jsx)(no,{label:W(`engine.inspector.pageBlock.visibleWhen`,o),value:Do(y.visibleWhen),onCommit:e=>E({visibleWhen:Co(y.visibleWhen,e)}),objectName:O,disabled:s,onBlockingIssuesChange:C}),Cf(y.type)&&(0,X.jsxs)(`div`,{className:`space-y-3 border-t border-border pt-3`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.pageBlock.properties`,o)}),Sf[y.type].map(e=>ne(e,A,j))]}),N.length>0&&(0,X.jsxs)(`div`,{className:`space-y-3 border-t border-border pt-3`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.pageBlock.advanced`,o)}),N.map(e=>(0,X.jsx)(Nf,{name:e,value:D[e],onCommit:t=>j(e,t),disabled:s,locale:o},e))]})]})}var Kf=new Set([`simple`,`tabbed`,`wizard`,`split`]),qf=new Set([`drawer`,`modal`]);function Jf(e){return typeof e==`string`&&qf.has(e)}function Yf(e){return typeof e==`string`&&Kf.has(e)?e:`simple`}function Xf(e){let t={...e,type:String(e?.type??``)},n=t.properties&&typeof t.properties==`object`?t.properties:void 0;return Jf(n?.formType??t.formType)&&(n&&(t.properties={...n,formType:`simple`}),`formType`in t&&(t.formType=`simple`)),t}function Zf(e=`300px`){let t=Y.useRef(null),[n,r]=Y.useState(()=>typeof IntersectionObserver>`u`);return Y.useEffect(()=>{if(n)return;let i=t.current;if(!i)return;let a=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(r(!0),a.disconnect())},{rootMargin:e});return a.observe(i),()=>a.disconnect()},[n,e]),{ref:t,inView:n}}function Qf({block:e,maxHeightClass:t=`max-h-72`,locale:n}){let r=String(e?.type??``),{ref:i,inView:a}=Zf();return(0,X.jsx)(`div`,{ref:i,className:L(`pointer-events-none select-none overflow-hidden p-3`,t),children:a?(0,X.jsx)(Q,{fallbackHint:U(`engine.pageBlockCanvas.renderFailed`,n,{type:r}),children:(0,X.jsx)(Nt,{children:(0,X.jsx)(At,{schema:Xf(e)})})}):(0,X.jsx)(`div`,{className:`min-h-[64px] animate-pulse rounded bg-muted/40`,"aria-hidden":`true`})})}var $f={1:`grid-cols-1`,2:`grid-cols-2`,3:`grid-cols-3`,4:`grid-cols-4`,5:`grid-cols-5`,6:`grid-cols-6`};function ep(e,t){let n=e?.properties||{};switch(e?.type){case`page:tabs`:case`page:accordion`:return(Array.isArray(n.items)?n.items:[]).map((e,n)=>({label:e?.label||e?.key||U(`engine.pageBlockCanvas.itemN`,t,{n:n+1}),pathSuffix:`properties.items[${n}].children`,children:Array.isArray(e?.children)?e.children:[]}));case`page:card`:return Array.isArray(n.body)&&!Array.isArray(n.children)?[{label:W(`engine.pageBlockCanvas.body`,t),pathSuffix:`properties.body`,children:n.body}]:[{label:W(`engine.pageBlockCanvas.body`,t),pathSuffix:`properties.children`,children:Array.isArray(n.children)?n.children:[]}];case`page:section`:case`grid`:return[{label:W(`engine.pageBlockCanvas.content`,t),pathSuffix:`properties.children`,children:Array.isArray(n.children)?n.children:[]}];default:return Array.isArray(n.children)?[{label:W(`engine.pageBlockCanvas.content`,t),pathSuffix:`properties.children`,children:n.children}]:[]}}var tp=[`header`,`actions`,`alerts`,`highlights`,`details`,`tabs`,`discussion`];function np(e){let t=e||{};return tp.map(e=>{let n=t[e];return{name:e,components:Array.isArray(n)?n:n==null?[]:[n]}})}function rp(e){let t={};for(let n of e){let e=Array.isArray(n.components)?n.components:[];e.length!==0&&n.name&&(t[n.name]=e)}return t}function ip(e){let t=e.slots;if(e.kind===`slotted`&&t&&typeof t==`object`&&!Array.isArray(t))return{regions:np(t),shape:`slots`};let n=e.regions;if(Array.isArray(n))return{regions:n,shape:`regions`};let r=e.children;return Array.isArray(r)?{regions:[{name:`children`,components:r}],shape:`children`}:{regions:[],shape:`regions`}}function ap(e,t,n,r){return e===`children`?`children[${n}]`:e===`slots`?`slot:${r}:${n}`:`regions[${t}].components[${n}]`}function op(e){return typeof e.label==`string`&&e.label||typeof e.title==`string`&&e.title||typeof e.id==`string`&&e.id||String(e.type??`block`)}var sp=`text/x-objectui-pageblock`;function cp({draft:e,onPatch:t,selection:n,onSelectionChange:r,locale:i}){let a=!t,{regions:o,shape:s}=Y.useMemo(()=>ip(e),[e]),c=n?.kind===`block`?String(n.id):null,l=Y.useCallback(e=>{if(s===`children`){let n=e.flatMap(e=>Array.isArray(e.components)?e.components:[]);t?.({children:n})}else s===`slots`?t?.({slots:rp(e)}):t?.({regions:e})},[t,s]),u=Y.useCallback((e,n)=>{if(!t)return;let i=o.map(e=>({...e,components:Array.isArray(e.components)?[...e.components]:[]})),a=i[e.region]?.components;if(!a)return;let[c]=a.splice(e.comp,1);if(!c)return;let u=i[n.region]?.components;if(!u)return;let d=u.length;if(`appendEnd`in n)d=u.length;else if(n.before!=null){let t=n.before;e.region===n.region&&e.comp<t&&--t,d=t}else if(n.after!=null){let t=n.after+1;e.region===n.region&&e.comp<n.after+1&&--t,d=t}u.splice(d,0,c),l(i);let f=ap(s,n.region,d,i[n.region]?.name);r?.({kind:`block`,id:f,label:op(c)})},[t,r,o,l,s]),d=Y.useCallback((e,n)=>{if(!t)return;let i=o.map(e=>({...e,components:Array.isArray(e.components)?[...e.components]:[]}));i[e]||(i[e]={name:`region_${e+1}`,components:[]});let a={type:n};i[e].components.push(a),l(i);let c=i[e].components.length-1;r?.({kind:`block`,id:ap(s,e,c,i[e]?.name),label:op(a)})},[t,r,o,l,s]),f=Y.useCallback((e,n,r)=>{if(!t)return;let i=o.map(e=>({...e,components:Array.isArray(e.components)?[...e.components]:[]})),a=i[e]?.components?.[n];a&&(i[e].components[n]={...a,label:r||void 0},l(i))},[t,o,l]),p=Y.useCallback(()=>{if(!t)return;let e=[...o,{name:`region_${o.length+1}`,components:[]}];l(e)},[t,o,l]),m=Y.useCallback((n,i,a)=>{if(!t)return;let o=/^slot:([a-zA-Z_]+):(\d+)$/.exec(n),s=Lf(i);if(!s)return;let c=Rf(s);if(o){let s=o[1],l=Number(o[2]),u=e.slots||{},d=u[s],f=Array.isArray(d)?[...d]:d==null?[]:[d],p=f[l];if(!p)return;let m=zf(p,c)||[];f[l]=Bf(p,c,[...m,{type:a}]),t({slots:{...u,[s]:f}}),r?.({kind:`block`,id:`${n}.${i}[${m.length}]`,label:a})}else{let o=Lf(`${n}.${i}`);if(!o)return;let s=Rf(o),c=zf(e,s)||[],l=Bf(e,s,[...c,{type:a}]);t({[s[0]]:l[s[0]]}),r?.({kind:`block`,id:`${n}.${i}[${c.length}]`,label:a})}},[t,e,r]),h=Y.useCallback(e=>{e.target===e.currentTarget&&c&&r?.(null)},[r,c]);return o.length===0?(0,X.jsx)(`div`,{className:`h-full overflow-auto bg-muted/20`,onClick:h,children:(0,X.jsx)(`div`,{className:`mx-auto max-w-3xl px-6 py-8`,children:(0,X.jsxs)(`div`,{className:`rounded-lg border-2 border-dashed bg-background py-16 px-6 text-center space-y-3`,children:[(0,X.jsx)(`div`,{className:`text-sm font-medium`,children:W(`engine.pageBlockCanvas.noRegions`,i)}),(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:W(`engine.pageBlockCanvas.noRegionsHint`,i)}),!a&&(0,X.jsx)(`div`,{className:`pt-2`,children:(0,X.jsxs)(B,{variant:`outline`,size:`sm`,className:`gap-1.5 border-dashed`,onClick:p,children:[(0,X.jsx)(H,{className:`h-3.5 w-3.5`}),W(`engine.pageBlockCanvas.addRegion`,i)]})})]})})}):(0,X.jsx)(`div`,{className:`h-full overflow-auto bg-muted/20`,onClick:h,children:(0,X.jsxs)(`div`,{className:`mx-auto max-w-3xl px-6 py-6 space-y-5`,onClick:h,children:[o.map((e,t)=>(0,X.jsx)(lp,{region:e,regionIdx:t,shape:s,selectedId:c,readOnly:a,onSelectBlock:(n,i)=>r?.({kind:`block`,id:ap(s,t,n,e.name),label:op(i)}),onMoveBlock:u,onAddBlock:d,onRenameLabel:f,baseIdOf:n=>ap(s,t,n,e.name),onSelectId:(e,t)=>r?.({kind:`block`,id:e,label:t}),onAddNested:m,locale:i},t)),!a&&s===`regions`&&(0,X.jsx)(`div`,{className:`pt-1`,children:(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`gap-1.5 text-muted-foreground`,onClick:p,children:[(0,X.jsx)(H,{className:`h-3.5 w-3.5`}),W(`engine.pageBlockCanvas.addRegion`,i)]})})]})})}function lp({region:e,regionIdx:t,shape:n,selectedId:r,readOnly:i,onSelectBlock:a,onMoveBlock:o,onAddBlock:s,onRenameLabel:c,onSelectId:l,onAddNested:u,locale:d}){let f=Array.isArray(e.components)?e.components:[],[p,m]=Y.useState(!1);return(0,X.jsxs)(`section`,{className:L(`rounded-md transition-colors`,p&&`bg-primary/5 ring-1 ring-primary/30 -mx-1 px-1 py-1`),onDragOver:e=>{if(i)return;let t=e.dataTransfer.types;t&&Array.from(t).includes(sp)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,m(!0))},onDragLeave:e=>{e.currentTarget===e.target&&m(!1)},onDrop:e=>{if(i||(m(!1),e.defaultPrevented))return;e.preventDefault();let n=e.dataTransfer.getData(sp);if(n)try{let e=JSON.parse(n);if(typeof e.region!=`number`||typeof e.comp!=`number`)return;o(e,{region:t,appendEnd:!0})}catch{}},children:[(0,X.jsxs)(`div`,{className:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground pl-1 mb-2 flex items-center gap-2`,children:[(0,X.jsx)(`span`,{children:e.name||U(`engine.pageBlockCanvas.regionN`,d,{n:t+1})}),e.width&&(0,X.jsxs)(`span`,{className:`normal-case text-[10px] text-muted-foreground/60`,children:[`· `,e.width]}),p&&(0,X.jsx)(`span`,{className:`text-primary normal-case text-[10px]`,children:W(`engine.pageBlockCanvas.dropHere`,d)})]}),(0,X.jsxs)(`div`,{className:`space-y-2.5`,children:[f.length===0?(0,X.jsx)(`div`,{className:`rounded border border-dashed bg-background/50 py-6 px-4 text-center text-xs text-muted-foreground`,children:W(n===`slots`?`engine.pageBlockCanvas.slotInherited`:`engine.pageBlockCanvas.regionEmpty`,d)}):f.map((s,f)=>{let p=ap(n,t,f,e.name);return(0,X.jsxs)(Y.Fragment,{children:[(0,X.jsx)(up,{block:s,regionIdx:t,compIdx:f,selected:p===r,readOnly:i,onClick:()=>a(f,s),onMoveBlock:o,onRenameLabel:e=>c(t,f,e),locale:d}),(0,X.jsx)(dp,{block:s,baseId:p,selectedId:r,readOnly:i,onSelectId:l,onAddNested:u,locale:d})]},`${t}:${f}`)}),!i&&(0,X.jsx)(`div`,{className:`pt-1`,children:(0,X.jsx)(fp,{onPick:e=>s(t,e),locale:d})})]})]})}function up({block:e,regionIdx:t,compIdx:n,selected:r,readOnly:i,onClick:a,onMoveBlock:o,onRenameLabel:s,locale:c}){let l=String(e.type??``),u=bf(l)?.Icon??vf,d=xf(l),f=op(e),p=!i,[m,h]=Y.useState(null),g=e=>{e.dataTransfer.setData(sp,JSON.stringify({region:t,comp:n})),e.dataTransfer.effectAllowed=`move`},_=e=>{if(!p)return;let t=e.dataTransfer.types;if(!t||!Array.from(t).includes(sp))return;e.preventDefault(),e.dataTransfer.dropEffect=`move`;let n=e.currentTarget.getBoundingClientRect();h(e.clientY-n.top<n.height/2?`before`:`after`)},v=()=>h(null),y=e=>{if(i)return;e.preventDefault(),e.stopPropagation();let r=m??`before`;h(null);let a=e.dataTransfer.getData(sp);if(a)try{let e=JSON.parse(a);if(e.region===t&&e.comp===n)return;o(e,r===`before`?{region:t,before:n}:{region:t,after:n})}catch{}},[b,x]=Y.useState(!1),[S,C]=Y.useState(f);Y.useEffect(()=>{C(f)},[f]);let w=e=>{i||(e.preventDefault(),e.stopPropagation(),C(f),x(!0))},T=()=>{if(i){x(!1);return}let e=S.trim();e&&e!==f&&s(e),x(!1)},E=()=>{C(f),x(!1)},D=ep(e).length>0;return(0,X.jsxs)(`div`,{className:L(`relative`,m===`before`&&`pt-1.5`),onDragOver:_,onDragLeave:v,onDrop:y,children:[m===`before`&&(0,X.jsx)(`div`,{className:`absolute left-0 right-0 -top-0.5 h-0.5 bg-primary rounded-full`}),(0,X.jsx)(`div`,{className:L(`group relative rounded-md border bg-card transition-colors hover:border-primary/40`,r?`border-primary ring-2 ring-primary/30 shadow-sm`:`border-border`),children:D?(0,X.jsxs)(`button`,{type:`button`,onClick:a,draggable:p,onDragStart:g,className:L(`flex w-full items-center justify-between gap-2 rounded-md px-3.5 py-2.5 text-left`,i&&`cursor-default`,p&&`cursor-grab active:cursor-grabbing`),"aria-pressed":r,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0 flex-1`,children:[p&&(0,X.jsx)(xr,{className:`h-3.5 w-3.5 text-muted-foreground/40 shrink-0 group-hover:text-muted-foreground/80`,"aria-hidden":`true`}),(0,X.jsx)(u,{className:L(`h-3.5 w-3.5 shrink-0`,d.icon)}),b?(0,X.jsx)(`input`,{autoFocus:!0,value:S,onChange:e=>C(e.target.value),onClick:e=>e.stopPropagation(),onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),T()):e.key===`Escape`&&(e.preventDefault(),E())},onBlur:T,className:`text-sm font-medium px-1 py-0.5 -mx-1 -my-0.5 rounded border border-primary bg-background outline-none min-w-0 flex-1`}):(0,X.jsx)(`span`,{className:L(`text-sm font-medium truncate`,!i&&`cursor-text`),onDoubleClick:w,title:i?void 0:W(`designer.canvas.renameHint`,c),children:f}),e.id&&e.id!==f&&(0,X.jsxs)(`code`,{className:`text-[10px] text-muted-foreground/70 font-mono truncate`,children:[`#`,e.id]})]}),(0,X.jsx)(R,{variant:`outline`,className:L(`text-[10px] shrink-0 font-mono`,d.badge),children:l})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Qf,{block:e,locale:c}),(0,X.jsx)(`button`,{type:`button`,onClick:a,draggable:p,onDragStart:g,"aria-label":U(`engine.pageBlockCanvas.select`,c,{label:f}),"aria-pressed":r,className:L(`absolute inset-0 z-10 rounded-md`,i&&`cursor-default`,p&&`cursor-grab active:cursor-grabbing`)}),(0,X.jsxs)(`div`,{className:L(`pointer-events-none absolute right-1.5 top-1.5 z-20 flex items-center gap-1 transition-opacity`,r?`opacity-100`:`opacity-0 group-hover:opacity-100`),children:[p&&(0,X.jsx)(xr,{className:`h-3.5 w-3.5 text-muted-foreground/60`,"aria-hidden":`true`}),(0,X.jsx)(R,{variant:`outline`,className:L(`text-[10px] font-mono shadow-sm bg-background/90 backdrop-blur`,d.badge),children:l})]})]})}),m===`after`&&(0,X.jsx)(`div`,{className:`absolute left-0 right-0 -bottom-1 h-0.5 bg-primary rounded-full`})]})}function dp({block:e,baseId:t,selectedId:n,readOnly:r,onSelectId:i,onAddNested:a,locale:o}){let s=ep(e,o);if(s.length===0)return null;let c=$f[e?.type===`grid`?Math.min(6,Math.max(1,Number(e.properties?.columns)||1)):1]??`grid-cols-1`;return(0,X.jsx)(`div`,{className:`ml-5 mt-1.5 space-y-2.5 border-l border-dashed border-border pl-3`,children:s.map((e,s)=>(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wider text-muted-foreground/70`,children:e.label}),e.children.length===0?(0,X.jsx)(`div`,{className:`rounded border border-dashed bg-background/40 py-2 px-3 text-[11px] text-muted-foreground`,children:W(`engine.pageBlockCanvas.groupEmpty`,o)}):(0,X.jsx)(`div`,{className:L(`grid gap-2`,c),children:e.children.map((r,a)=>{let s=`${t}.${e.pathSuffix}[${a}]`,c=String(r?.type??``),l=s===n;return(0,X.jsxs)(`div`,{className:L(`group relative rounded-md border bg-card transition-colors hover:border-primary/40`,l?`border-primary ring-2 ring-primary/30 shadow-sm`:`border-border`),children:[(0,X.jsx)(Qf,{block:r,maxHeightClass:`max-h-56`,locale:o}),(0,X.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),i(s,op(r))},"aria-label":U(`engine.pageBlockCanvas.select`,o,{label:op(r)}),"aria-pressed":l,className:`absolute inset-0 z-10 rounded-md cursor-pointer`}),(0,X.jsx)(`div`,{className:L(`pointer-events-none absolute right-1.5 top-1.5 z-20 transition-opacity`,l?`opacity-100`:`opacity-0 group-hover:opacity-100`),children:(0,X.jsx)(R,{variant:`outline`,className:L(`text-[10px] font-mono shadow-sm bg-background/90 backdrop-blur`,xf(c).badge),children:c})})]},a)})}),!r&&(0,X.jsx)(fp,{onPick:n=>a(t,e.pathSuffix,n),locale:o})]},s))})}function fp({onPick:e,locale:t}){let[n,r]=Y.useState(!1),[i,a]=Y.useState(``),o=i.trim().toLowerCase(),s=Y.useMemo(()=>o?_f.map(e=>({category:e.category,types:e.types.filter(e=>{let n=mf[e];return e.includes(o)||W(n.labelKey,t).toLowerCase().includes(o)})})).filter(e=>e.types.length>0):_f,[o,t]);return(0,X.jsxs)(Ke,{open:n,onOpenChange:e=>{r(e),e||a(``)},children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsxs)(B,{variant:`outline`,size:`sm`,className:`gap-1.5 border-dashed`,children:[(0,X.jsx)(H,{className:`h-3.5 w-3.5`}),W(`engine.inspector.add.block`,t)]})}),(0,X.jsxs)(be,{align:`start`,className:`w-[320px] p-0 max-h-[480px] overflow-hidden flex flex-col`,children:[(0,X.jsx)(`div`,{className:`p-2 border-b`,children:(0,X.jsx)(`input`,{autoFocus:!0,value:i,onChange:e=>a(e.target.value),placeholder:W(`engine.pageBlockCanvas.searchTypes`,t),className:`h-7 w-full px-2 text-sm border rounded bg-background outline-none focus:ring-1 focus:ring-primary`})}),(0,X.jsx)(`div`,{className:`flex-1 overflow-auto p-1`,children:s.length===0?(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground p-4 text-center`,children:W(`engine.pageBlockCanvas.noMatch`,t)}):s.map(n=>(0,X.jsxs)(`div`,{className:`mb-1`,children:[(0,X.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground px-2 py-1`,children:W(gf[n.category],t)}),n.types.map(n=>{let i=mf[n],o=i.Icon,s=xf(n);return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{e(n),r(!1),a(``)},className:`w-full flex items-center gap-2 px-2 py-1.5 rounded text-sm hover:bg-accent text-left`,children:[(0,X.jsx)(o,{className:L(`h-3.5 w-3.5 shrink-0`,s.icon)}),(0,X.jsx)(`span`,{className:`truncate`,children:W(i.labelKey,t)}),(0,X.jsx)(`code`,{className:`ml-auto text-[10px] text-muted-foreground/70 font-mono truncate`,children:n})]},n)})]},n.category))})]})]})}function pp({draft:e,editing:t,selection:n,onSelectionChange:r,onPatch:i,locale:a}){let o=Y.useMemo(()=>{let t=e.type??`page`;return{...e,type:t}},[e]),s=!!(t&&r),c=s&&!!i,l=n&&n.kind===`block`?n.id:null,u=se(),d=!!e?.interfaceConfig?.source,f=Y.useMemo(()=>Array.isArray(e.regions)?`regions`:`children`,[e]),p=Y.useMemo(()=>{if(f===`regions`){let t=e.regions,n=[];return t.forEach((e,t)=>{(Array.isArray(e.components)?e.components:[]).forEach((r,i)=>{n.push({id:`regions[${t}].components[${i}]`,label:r.id||r.type||`${e.name??`region ${t+1}`} · ${i+1}`})})}),n}return(Array.isArray(e.children)?e.children:[]).map((e,t)=>({id:`children[${t}]`,label:e.id||e.type||U(`engine.pagePreview.blockN`,a,{n:t+1})}))},[e,f,a]),m=Y.useCallback(()=>{if(!c)return;let t={type:`container`};if(f===`regions`){let n=Array.isArray(e.regions)?[...e.regions]:[],a=n.length-1;a<0&&(n.push({name:`main`,components:[]}),a=0);let o={...n[a]},s=Array.isArray(o.components)?[...o.components]:[];s.push(t),o.components=s,n[a]=o,i({regions:n}),r?.({kind:`block`,id:`regions[${a}].components[${s.length-1}]`,label:t.type});return}let n=[...Array.isArray(e.children)?e.children:[],t];i({children:n}),r?.({kind:`block`,id:`children[${n.length-1}]`,label:t.type})},[c,e,i,r,f]),h=e?.type===`record`?e?.object:void 0,[g,_]=Y.useState([]),[v,y]=Y.useState(null),[b,x]=Y.useState(null);Y.useEffect(()=>{if(!h){_([]),y(null),x(null);return}let e=!1;return(async()=>{try{let t={headers:{accept:`application/json`},credentials:`include`},n=await(await fetch(`/api/v1/meta/object/${encodeURIComponent(h)}`,t)).json().catch(()=>null),r=n?.item??n?.data??n,i=Lt(r?.fields),a=u?.isLoaded?i.filter(e=>u.checkField(h,e,`read`)):i,o=a.length>0?`?$top=50&$expand=${encodeURIComponent(a.join(`,`))}`:`?$top=50`,s=await(await fetch(`/api/v1/data/${encodeURIComponent(h)}${o}`,t)).json().catch(()=>null),c=Array.isArray(s?.records)?s.records:Array.isArray(s?.items)?s.items:Array.isArray(s?.data)?s.data:Array.isArray(s)?s:[];if(e)return;_(c),y(r),x(e=>e??c[0]?.id??c[0]?._id??c[0]?.name??null)}catch{e||(_([]),y(null))}})(),()=>{e=!0}},[h,u]);let S=e=>e?.id??e?._id??e?.name,C=e=>String(e?.name??e?.title??e?.label??e?.subject??S(e)??W(`engine.pagePreview.recordFallback`,a)),w=Y.useMemo(()=>g.length?g.find(e=>String(S(e))===String(b))??g[0]:null,[g,b]),T=e?.kind===`slotted`,E=Y.useMemo(()=>{if(!T)return o;try{let t=e?.slots??{};return Ha(v??void 0,{slots:t})}catch{return o}},[T,o,e,v]),D=e=>!h||!w?e:(0,X.jsxs)(mt,{objectName:h,recordId:S(w),data:w,objectSchema:v??void 0,embedded:!0,children:[g.length>0&&(0,X.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b bg-muted/30 text-xs`,children:[(0,X.jsx)(`span`,{className:`text-muted-foreground shrink-0`,children:W(`engine.pagePreview.previewRecord`,a)}),(0,X.jsx)(`select`,{className:`h-7 rounded-md border bg-background px-2 text-xs max-w-[260px]`,value:String(b??``),onChange:e=>x(e.target.value),children:g.map(e=>{let t=S(e);return(0,X.jsx)(`option`,{value:String(t),children:C(e)},String(t))})}),(0,X.jsx)(`span`,{className:`text-muted-foreground/70 shrink-0`,children:U(g.length===1?`engine.pagePreview.sampleOne`:`engine.pagePreview.sampleOther`,a,{count:g.length})})]}),e]});if(d)return(0,X.jsx)(Z,{hint:`page · interface`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.pagePreview.interfaceFailed`,a),children:(0,X.jsx)(Ua,{page:e,onConfigChange:c?t=>i({interfaceConfig:{...e.interfaceConfig||{},...t}}):void 0})})});let O=e.kind;return O===`react`||O===`html`?(0,X.jsx)(pf,{draft:e,onPatch:c?i:void 0,readOnly:!c,locale:a}):!o||Object.keys(o).length<=1?(0,X.jsxs)(Z,{hint:`page${s?` · design`:``}`,children:[s&&f===`regions`?(0,X.jsx)(cp,{draft:e,onPatch:c?i:void 0,selection:n??null,onSelectionChange:r,locale:a}):s?(0,X.jsx)(uf,{title:W(`engine.inspector.pageBlock.outlineLabel`,a),entries:p,selectedId:l,onSelect:e=>r?.({kind:`block`,id:e.id,label:e.label}),onAdd:c?m:void 0,addLabel:W(`engine.inspector.add.block`,a)}):null,!s&&(0,X.jsx)(sf,{children:W(`engine.pagePreview.addComponents`,a)})]}):s&&f===`regions`?(0,X.jsx)(Z,{hint:`page · design`,children:D((0,X.jsx)(cp,{draft:e,onPatch:c?i:void 0,selection:n??null,onSelectionChange:r,locale:a}))}):(0,X.jsx)(Z,{hint:`page${s?` · design`:``}`,children:(0,X.jsxs)(Q,{fallbackHint:W(`engine.pagePreview.schemaFailed`,a),children:[s&&(0,X.jsx)(uf,{title:W(`engine.inspector.pageBlock.outlineLabel`,a),entries:p,selectedId:l,onSelect:e=>r?.({kind:`block`,id:e.id,label:e.label}),onAdd:c?m:void 0,addLabel:W(`engine.inspector.add.block`,a)}),D((0,X.jsx)(`div`,{className:`min-h-[200px] max-h-[70vh] overflow-auto p-4`,children:(0,X.jsx)(At,{schema:E})}))]})})}function mp(e,t){return e.split(/(\{\w+\})/).map((e,n)=>{let r=/^\{(\w+)\}$/.exec(e);return Y.createElement(Y.Fragment,{key:n},r&&r[1]in t?t[r[1]]:e)})}function hp(e,t){let n=[t?.object,t?.data?.object,t?.objectName,e.object,e.objectName,e.data?.object];for(let e of n)if(typeof e==`string`&&e)return e}var gp=[`kanban`,`calendar`,`gallery`,`timeline`,`gantt`,`map`,`chart`,`tree`];function _p(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function vp(e){if(!(`options`in e))return e;let{options:t,...n}=e;if(!_p(t))return n;let r={...n};for(let e of gp){let i=t[e];if(!_p(i))continue;let a=n[e];a===void 0?r[e]={...i}:_p(a)&&(r[e]={...i,...a})}return r}function yp(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e,n=t.field??t.name;return n?{...t,name:n,readOnly:t.readOnly??t.readonly}:t}return String(e)}function bp(e,t){return{type:`object-form`,objectName:e,mode:`create`,formType:Yf(typeof t.type==`string`?t.type:`simple`),sections:Array.isArray(t.sections)?t.sections.map(e=>({...e,fields:Array.isArray(e?.fields)?e.fields.map(yp):[]})):void 0,fields:Array.isArray(t.fields)?t.fields:void 0,showSubmit:!1,showCancel:!1}}function xp({name:e,draft:t,editing:n,locale:r}){let i=Y.useMemo(()=>Al(t)?.schema,[t]),a=Y.useMemo(()=>hp(t,i),[t,i]),o=!!n,{listViews:s,defaultViewId:c,defaultViewType:l}=Y.useMemo(()=>{if(!i)return{listViews:{},defaultViewId:void 0,defaultViewType:`grid`};let n=String(e)||`default`;return{listViews:{[n]:{...vp(i),label:i.label??t.label??e}},defaultViewId:n,defaultViewType:i.type??`grid`}},[i,t,e]),u=Y.useMemo(()=>({type:`object-view`,objectName:a,defaultViewType:l,defaultListView:c,listViews:s,showSearch:!0,showFilters:!0,showCreate:!1,showViewSwitcher:!0}),[a,l,c,s]);if(!i&&t.type){let e={...t};return(0,X.jsx)(Z,{hint:`view · ${e.type}${o?` · design`:``}`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.viewPreview.schemaFailed`,r),children:(0,X.jsx)(`div`,{className:`min-h-[300px] max-h-[75vh] overflow-auto`,children:(0,X.jsx)(Nt,{children:(0,X.jsx)(At,{schema:e})})})})})}if(!a)return(0,X.jsx)(Z,{hint:`view${o?` · design`:``}`,children:(0,X.jsx)(sf,{tone:`warn`,children:mp(W(`engine.viewPreview.noObject`,r),{object:(0,X.jsx)(`code`,{children:W(`engine.inspector.view.object`,r)})})})});if(t.viewKind===`form`&&i){let e=String(i.type??`simple`),t=bp(a,i);return(0,X.jsx)(Z,{hint:`view · ${e} · form${o?` · design`:``}`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.viewPreview.formFailed`,r),children:(0,X.jsx)(`div`,{className:`min-h-[300px] max-h-[75vh] overflow-auto`,children:(0,X.jsx)(Nt,{children:(0,X.jsx)(At,{schema:t})})})})})}return(0,X.jsx)(Z,{hint:`view · ${l}${o?` · design`:``}`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.viewPreview.listFailed`,r),children:(0,X.jsx)(`div`,{className:`min-h-[300px] max-h-[75vh] overflow-auto`,children:(0,X.jsx)(Nt,{children:(0,X.jsx)(At,{schema:u})})})})})}var Sp={metric:{id:`metric`,label:`Metric (KPI)`,labelKey:`engine.widgetPicker.type.metric`,category:`kpi`,icon:Cr},bar:{id:`bar`,label:`Bar chart`,labelKey:`engine.widgetPicker.type.bar`,category:`chart`,icon:yn},"horizontal-bar":{id:`horizontal-bar`,label:`Horizontal bar`,labelKey:`engine.widgetPicker.type.horizontalBar`,category:`chart`,icon:bn},line:{id:`line`,label:`Line chart`,labelKey:`engine.widgetPicker.type.line`,category:`chart`,icon:vn},area:{id:`area`,label:`Area chart`,labelKey:`engine.widgetPicker.type.area`,category:`chart`,icon:gn},pie:{id:`pie`,label:`Pie chart`,labelKey:`engine.widgetPicker.type.pie`,category:`chart`,icon:xn},donut:{id:`donut`,label:`Donut chart`,labelKey:`engine.widgetPicker.type.donut`,category:`chart`,icon:Yn},scatter:{id:`scatter`,label:`Scatter plot`,labelKey:`engine.widgetPicker.type.scatter`,category:`chart`,icon:Sn},funnel:{id:`funnel`,label:`Funnel`,labelKey:`engine.widgetPicker.type.funnel`,category:`chart`,icon:Ri},table:{id:`table`,label:`Data table`,labelKey:`engine.widgetPicker.type.table`,category:`data`,icon:Mi},pivot:{id:`pivot`,label:`Pivot table`,labelKey:`engine.widgetPicker.type.pivot`,category:`data`,icon:qn}},Cp={kpi:`engine.widgetPicker.category.kpi`,chart:`engine.widgetPicker.category.chart`,data:`engine.widgetPicker.category.data`},wp=[`kpi`,`chart`,`data`].map(e=>({category:e,types:Object.values(Sp).filter(t=>t.category===e)})),Tp=Zt;function Ep({onAdd:e,label:t=`Add widget`}){let[n,r]=Y.useState(!1),[i,a]=Y.useState(``),o=Y.useRef(null),s=Bo(),c=Y.useMemo(()=>{let e=i.trim().toLowerCase();return e?wp.map(t=>({category:t.category,types:t.types.filter(t=>t.id.toLowerCase().includes(e)||W(t.labelKey,s).toLowerCase().includes(e))})).filter(e=>e.types.length):wp},[i,s]);return(0,X.jsxs)(Ke,{open:n,onOpenChange:e=>{r(e),e||a(``)},children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded border border-dashed px-3 py-1.5 text-xs text-muted-foreground hover:bg-muted/30 hover:text-foreground`,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),t]})}),(0,X.jsxs)(be,{align:`end`,sideOffset:4,className:`w-72 p-0`,onOpenAutoFocus:e=>{e.preventDefault(),o.current?.focus()},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-2 py-1.5`,children:[(0,X.jsx)(vi,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,X.jsx)(`input`,{ref:o,type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:W(`engine.widgetPicker.search`,s),className:`w-full bg-transparent text-xs outline-none placeholder:text-muted-foreground`})]}),(0,X.jsx)(`div`,{className:`max-h-72 overflow-auto py-1`,children:c.length===0?(0,X.jsx)(`div`,{className:`px-3 py-4 text-center text-xs text-muted-foreground`,children:W(`engine.widgetPicker.noMatches`,s)}):c.map(t=>(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`px-3 pt-2 pb-1 text-[10px] uppercase tracking-wider text-muted-foreground`,children:W(Cp[t.category],s)}),t.types.map(t=>{let n=Sp[t.id]?.icon??Tp;return(0,X.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs hover:bg-accent`,onClick:()=>{e(t.id),r(!1)},children:[(0,X.jsx)(n,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,X.jsx)(`span`,{className:`font-medium truncate`,children:W(t.labelKey,s)}),(0,X.jsx)(`code`,{className:`ml-auto text-[10px] text-muted-foreground`,children:t.id})]},t.id)})]},t.category))})]})]})}var Dp=Y.lazy(()=>n(()=>import(`./plugin-dashboard-C1AYKmGX.js`).then(e=>e.t).then(e=>({default:e.DashboardRenderer})),__vite__mapDeps([0,1]),import.meta.url));function Op({draft:e,editing:t,onPatch:n,selection:r,onSelectionChange:i,locale:a}){let o=ht(),s=Array.isArray(e.widgets)?e.widgets:[],c=!!(t&&i),l=c&&!!n,u=r&&r.kind===`widget`?r.id:null,d=Y.useCallback(e=>{if(!i)return;if(!e){i(null);return}let t=s.find(t=>t?.id===e);i({kind:`widget`,id:e,label:b(t?.title,a)||e})},[i,s,a]),f=Y.useCallback(e=>{n&&n({widgets:e})},[n]),p=Y.useCallback(e=>{if(!l)return;let t=Rc(`widget`,s.map(e=>e?.id).filter(Boolean)),r=Sp[e],a=r?`New ${r.label.toLowerCase()}`:`New widget`,o={id:t,type:e,title:a,...r?.defaults??{}};n({widgets:ss(s,o)}),i?.({kind:`widget`,id:t,label:a})},[l,s,n,i]),m=Y.useCallback((e,t)=>{if(!l)return;let r=t.trim();n({widgets:s.map(t=>t?.id===e?{...t,title:Kt(t.title,a,r)}:t)}),i?.({kind:`widget`,id:e,label:r||e})},[l,s,n,i,a]),h=u?s.find(e=>e?.id===u)??null:null,g=s.length===1,_=Y.useMemo(()=>g?{...e,columns:1}:e,[e,g]),v=l?(0,X.jsx)(Ep,{onAdd:p,label:W(`engine.inspector.add.widget`,a)}):null;return s.length===0?(0,X.jsx)(Z,{hint:`dashboard${c?` · design`:``}`,toolbar:v,children:(0,X.jsx)(sf,{children:W(`engine.dashboardPreview.empty`,a)})}):(0,X.jsx)(Z,{hint:`dashboard · ${s.length} widget${s.length===1?``:`s`}${c?` · design`:``}`,toolbar:v,children:(0,X.jsxs)(Q,{fallbackHint:W(`engine.dashboardPreview.malformed`,a),children:[l&&h?(0,X.jsx)(kp,{widget:h,locale:a,onRename:e=>m(h.id,e),onClose:()=>i?.(null)}):null,(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsxs)(`div`,{className:`p-6 text-sm text-muted-foreground flex items-center gap-2`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` `,W(`engine.dashboardPreview.loading`,a)]}),children:(0,X.jsx)(`div`,{className:`p-3 max-h-[70vh] overflow-auto`,children:(0,X.jsx)(`div`,{className:g?void 0:`min-w-[768px]`,children:(0,X.jsx)(Dp,{schema:_,dataSource:o,designMode:c,selectedWidgetId:u,onWidgetClick:c?d:void 0,onWidgetsReorder:c&&n?f:void 0,hideHeaderText:!0})})})})]})})}function kp({widget:e,locale:t,onRename:n,onClose:r}){let i=b(e.title,t)??e.id??``,[a,o]=Y.useState(!1),[s,c]=Y.useState(i),l=Y.useRef(null);Y.useEffect(()=>{c(i),o(!1)},[e.id,i]),Y.useEffect(()=>{a&&l.current?.select()},[a]);let u=()=>{let e=s.trim();e&&e!==i&&n(e),o(!1)},d=()=>{c(i),o(!1)},f=Sp[e.type]?.icon??null;return(0,X.jsxs)(`div`,{className:`sticky top-0 z-10 flex items-center gap-2 border-b bg-primary/5 px-3 py-1.5 text-xs`,children:[f?(0,X.jsx)(f,{className:`h-3.5 w-3.5 text-primary`}):null,(0,X.jsx)(`span`,{className:`rounded bg-primary px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-primary-foreground`,children:W(`engine.dashboardPreview.selected`,t)}),a?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`input`,{ref:l,value:s,onChange:e=>c(e.target.value),onBlur:u,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),u()):e.key===`Escape`&&(e.preventDefault(),d())},className:`flex-1 min-w-0 rounded border bg-background px-2 py-0.5 text-xs outline-none focus:ring-1 focus:ring-primary`}),(0,X.jsx)(`button`,{type:`button`,onClick:u,className:`rounded p-1 hover:bg-primary/10`,"aria-label":W(`engine.dashboardPreview.saveTitle`,t),children:(0,X.jsx)(Cn,{className:`h-3.5 w-3.5`})})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>o(!0),className:`flex-1 min-w-0 truncate text-left font-medium hover:underline`,title:W(`engine.dashboardPreview.clickToRename`,t),children:i||(0,X.jsx)(`span`,{className:`italic text-muted-foreground`,children:W(`engine.dashboardPreview.untitled`,t)})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>o(!0),className:`rounded p-1 hover:bg-primary/10`,"aria-label":W(`engine.dashboardPreview.renameWidget`,t),children:(0,X.jsx)(ni,{className:`h-3.5 w-3.5`})})]}),(0,X.jsx)(`button`,{type:`button`,onClick:r,className:`rounded p-1 hover:bg-primary/10`,"aria-label":W(`engine.dashboardPreview.clearSelection`,t),children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]})}var Ap=Y.lazy(()=>n(()=>import(`./plugin-report-BfGintAq.js`).then(e=>e.t).then(e=>({default:e.ReportRenderer})),__vite__mapDeps([0]),import.meta.url));function jp({draft:e,locale:t}){let n=ht(),r=e,i=typeof r.dataset==`string`&&!!r.dataset,a=r.type===`joined`&&Array.isArray(r.blocks)&&r.blocks.some(e=>typeof e?.dataset==`string`&&!!e.dataset);if(i||a){let i=Array.isArray(r.rows)?r.rows.filter(Boolean):[],o=a?`report · joined · ${r.blocks.length} block${r.blocks.length===1?``:`s`}`:`report · dataset "${r.dataset}"${i.length?` · by `+i.join(`, `):``}`;return(0,X.jsx)(Z,{hint:o,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.reportPreview.renderFailed`,t),children:(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsxs)(`div`,{className:`flex items-center gap-2 p-4 text-xs text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` `,W(`engine.reportPreview.loading`,t)]}),children:(0,X.jsx)(`div`,{className:`p-3 min-h-[200px] max-h-[70vh] overflow-auto`,children:(0,X.jsx)(Ap,{schema:e,dataSource:n})})})})})}let o=r.type===`joined`;return(0,X.jsx)(Z,{children:(0,X.jsx)(cf,{icon:(0,X.jsx)(qn,{className:`h-8 w-8`}),title:W(o?`engine.reportPreview.joinedEmpty`:`engine.reportPreview.empty`,t),description:W(o?`engine.reportPreview.joinedEmptyHint`:`engine.reportPreview.emptyHint`,t)})})}var Mp=`text/x-objectui-nav`;function Np(e){return typeof e.type==`string`&&e.type?e.type:`untyped`}function Pp(e){switch(e){case`object`:return qn;case`page`:return sr;case`dashboard`:return jr;case`report`:return _n;case`url`:return Pr;case`group`:return pr;case`action`:return Kr;case`component`:return si;case`separator`:return Wr;default:return Wn}}var Fp={object:{icon:`text-blue-500`,badge:`border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900 dark:bg-blue-950/40 dark:text-blue-300`},page:{icon:`text-violet-500`,badge:`border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-900 dark:bg-violet-950/40 dark:text-violet-300`},dashboard:{icon:`text-teal-500`,badge:`border-teal-200 bg-teal-50 text-teal-700 dark:border-teal-900 dark:bg-teal-950/40 dark:text-teal-300`},report:{icon:`text-amber-500`,badge:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-300`},url:{icon:`text-indigo-500`,badge:`border-indigo-200 bg-indigo-50 text-indigo-700 dark:border-indigo-900 dark:bg-indigo-950/40 dark:text-indigo-300`},group:{icon:`text-slate-500`,badge:`border-slate-200 bg-slate-50 text-slate-700 dark:border-slate-800 dark:bg-slate-900/40 dark:text-slate-300`},action:{icon:`text-rose-500`,badge:`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-900 dark:bg-rose-950/40 dark:text-rose-300`},component:{icon:`text-cyan-500`,badge:`border-cyan-200 bg-cyan-50 text-cyan-700 dark:border-cyan-900 dark:bg-cyan-950/40 dark:text-cyan-300`},separator:{icon:`text-zinc-400`,badge:`border-zinc-200 bg-zinc-50 text-zinc-500 dark:border-zinc-800 dark:bg-zinc-900/40 dark:text-zinc-400`},untyped:{icon:`text-amber-500`,badge:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-300`}};function Ip(e){return Fp[e]??Fp.untyped}function Lp(e,t){let n=e.label;return typeof n==`string`&&n.trim()?n.trim():`Item ${t+1}`}function Rp(e){let t=e=>typeof e==`string`&&e?e:void 0;switch(e.type){case`object`:return t(e.objectName);case`page`:return t(e.pageName);case`dashboard`:return t(e.dashboardName);case`report`:return t(e.reportName);case`url`:return t(e.url);case`component`:return t(e.componentRef);case`action`:return t(e.actionDef?.actionName);default:return}}function zp({draft:e,rootKey:t,onPatch:n,selection:r,onSelectionChange:i}){let a=Bo(),o=Y.useMemo(()=>{let n=e[t];return Array.isArray(n)?n:[]},[e,t]),s=r&&r.kind===`nav`?r.id:null,[c,l]=Y.useState(null),u=Y.useCallback(e=>{n&&n({[t]:e})},[n,t]),d=Y.useCallback(()=>{if(!n)return;let e=W(`engine.appNav.newItem`,a),r=new Set(o.map(e=>typeof e.id==`string`?e.id:``).filter(Boolean)),s=`nav_item_${o.length+1}`;for(let e=o.length+2;r.has(s);e++)s=`nav_item_${e}`;let c=ss(o,{id:s,type:`object`,label:e});u(c),i?.({kind:`nav`,id:`${t}[${c.length-1}]`,label:e})},[n,o,u,t,i,a]),f=Y.useCallback(e=>{if(!n)return;let r=G(o,e,null);u(r),s===`${t}[${e}]`&&i?.(null)},[n,o,u,t,s,i]),p=Y.useCallback((e,r)=>{if(!n)return;let a={...o[e]??{},label:r},c=G(o,e,a);u(c),s===`${t}[${e}]`&&i?.({kind:`nav`,id:`${t}[${e}]`,label:r})},[n,o,u,t,s,i]),m=Y.useCallback((e,r)=>{if(!n)return;let a=r;if(e<r&&(a=r-1),a===e)return;let s=os(o,e,a);u(s),i?.({kind:`nav`,id:`${t}[${a}]`,label:Lp(s[a]??{},a)})},[n,o,u,t,i]);return(0,X.jsxs)(`div`,{className:`rounded-md border bg-card/40`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,X.jsx)(`span`,{className:`font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.appNav.heading`,a)}),(0,X.jsxs)(R,{variant:`outline`,className:`text-[10px]`,children:[o.length,` `,o.length===1?W(`engine.appNav.itemOne`,a):W(`engine.appNav.itemOther`,a)]})]}),n&&(0,X.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded border border-dashed px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted/30 hover:text-foreground`,onClick:d,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),` `,W(`engine.appNav.addItem`,a)]})]}),(0,X.jsx)(`div`,{className:`space-y-1.5 p-2`,onDragOver:e=>{n&&e.dataTransfer.types.includes(Mp)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},onDrop:e=>{n&&e.dataTransfer.types.includes(Mp)&&(e.preventDefault(),c!=null&&(m(c,o.length),l(null)))},children:o.length===0?(0,X.jsx)(`div`,{className:`rounded border border-dashed px-3 py-4 text-center text-[11px] text-muted-foreground`,children:W(n?`engine.appNav.empty`:`engine.appNav.emptyReadonly`,a)}):o.map((e,r)=>(0,X.jsx)(Bp,{item:e,index:r,depth:0,path:`${t}[${r}]`,selectedId:s,canEdit:!!n,onClick:(e,t)=>i?.({kind:`nav`,id:e,label:t}),onRename:e=>p(r,e),onRemove:()=>f(r),onDragStart:()=>l(r),onDragEnd:()=>l(null),onDropBefore:()=>{c!=null&&(m(c,r),l(null))}},r))})]})}function Bp({item:e,index:t,depth:n,path:r,selectedId:i,canEdit:a,onClick:o,onRename:s,onRemove:c,onDragStart:l,onDragEnd:u,onDropBefore:d}){return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Vp,{item:e,index:t,depth:n,path:r,isSelected:i===r,canEdit:a&&n===0,onClick:()=>o(r,Lp(e,t)),onRename:s,onRemove:c,onDragStart:l,onDragEnd:u,onDropBefore:d}),Array.isArray(e.children)&&e.children.map((e,t)=>{let s=`${r}.children[${t}]`;return(0,X.jsx)(Bp,{item:e,index:t,depth:n+1,path:s,selectedId:i,canEdit:a,onClick:o,onRename:()=>void 0,onRemove:()=>void 0,onDragStart:()=>void 0,onDragEnd:()=>void 0,onDropBefore:()=>void 0},t)})]})}function Vp({item:e,index:t,depth:n,path:r,isSelected:i,canEdit:a,onClick:o,onRename:s,onRemove:c,onDragStart:l,onDragEnd:u,onDropBefore:d}){let f=Bo(),p=Np(e),m=Pp(p),h=Ip(p),g=Rp(e),[_,v]=Y.useState(!1),[y,b]=Y.useState(Lp(e,t)),[x,S]=Y.useState(!1),[C,w]=Y.useState(null);return Y.useEffect(()=>{_||b(Lp(e,t))},[e,t,_]),(0,X.jsxs)(`div`,{className:`relative`,style:{paddingLeft:n*16},children:[C===`before`&&(0,X.jsx)(`div`,{className:`pointer-events-none absolute inset-x-0 -top-0.5 h-0.5 rounded bg-primary`}),(0,X.jsxs)(`button`,{type:`button`,draggable:a&&!_,onDragStart:e=>{a&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(Mp,r),l())},onDragEnd:u,onDragOver:e=>{a&&e.dataTransfer.types.includes(Mp)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,w(`before`))},onDragLeave:()=>w(null),onDrop:e=>{a&&e.dataTransfer.types.includes(Mp)&&(e.preventDefault(),e.stopPropagation(),w(null),d())},onClick:o,onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),"aria-pressed":i,className:`group flex w-full items-center gap-2 rounded-md border bg-card px-2.5 py-2 text-left text-xs transition-colors hover:border-primary/40 ${i?`border-primary ring-1 ring-primary`:`border-border`} ${a&&!_?`cursor-grab active:cursor-grabbing`:``}`,children:[a?(0,X.jsx)(xr,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground/50 group-hover:text-muted-foreground`}):(0,X.jsx)(`span`,{className:`w-3.5`}),(0,X.jsx)(m,{className:L(`h-3.5 w-3.5 shrink-0`,h.icon)}),_?(0,X.jsx)(`input`,{autoFocus:!0,value:y,onChange:e=>b(e.target.value),onClick:e=>e.stopPropagation(),onBlur:()=>{v(!1);let n=y.trim();n&&n!==Lp(e,t)&&s(n)},onKeyDown:n=>{n.key===`Enter`?(n.preventDefault(),n.target.blur()):n.key===`Escape`&&(n.preventDefault(),b(Lp(e,t)),v(!1))},className:`flex-1 min-w-0 rounded border border-input bg-background px-1.5 py-0.5 text-xs outline-none focus:border-primary`}):(0,X.jsx)(`span`,{className:`flex-1 min-w-0 truncate font-medium`,onDoubleClick:e=>{a&&(e.stopPropagation(),v(!0))},children:Lp(e,t)}),(0,X.jsx)(R,{variant:`outline`,className:L(`text-[10px] font-medium`,h.badge),children:p}),g&&(0,X.jsx)(`code`,{className:`ml-0 text-[10px] text-muted-foreground truncate max-w-[10rem]`,children:g}),a&&x&&!_&&(0,X.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),c()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),c())},className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,"aria-label":W(`engine.appNav.removeItem`,f),children:(0,X.jsx)(Li,{className:`h-3 w-3`})})]})]})}var Hp=[`object`,`dashboard`,`page`,`url`,`report`,`action`,`component`,`group`,`separator`];function Up(e,t){switch(t){case`object`:return typeof e.objectName==`string`?e.objectName:void 0;case`dashboard`:return typeof e.dashboardName==`string`?e.dashboardName:void 0;case`page`:return typeof e.pageName==`string`?e.pageName:void 0;case`report`:return typeof e.reportName==`string`?e.reportName:void 0;case`url`:return typeof e.url==`string`?e.url:void 0;case`component`:return typeof e.componentRef==`string`?e.componentRef:void 0;case`action`:{let t=e.actionDef;return t&&typeof t.actionName==`string`?t.actionName:void 0}default:return}}function Wp(e,t,n){return Array.isArray(e)?e.map(e=>{if(!e||typeof e!=`object`)return null;let r=typeof e.type==`string`&&Hp.includes(e.type)?e.type:void 0;if(r===`separator`)return{id:typeof e.id==`string`?e.id:void 0,label:``,kind:r};let i=typeof e.label==`string`?e.label.trim():``;if(!i&&!e.children)return null;let a=Up(e,r),o,s=!1;if(r&&t)try{let n=Ba(e,`/apps/${encodeURIComponent(t)}`);n.href&&n.href!==`#`&&(o=n.href,s=n.external)}catch{o=void 0}let c=Array.isArray(e.children)?Wp(e.children,t,n):void 0;return{id:typeof e.id==`string`?e.id:void 0,label:i||n,kind:r,target:a,href:o,external:s,children:c}}).filter(e=>e!==null):[]}function Gp(e){switch(e){case`object`:return qn;case`page`:return sr;case`dashboard`:return jr;case`report`:return _n;case`url`:return Pr;case`group`:return pr;case`action`:return Kr;case`component`:return si;case`separator`:return Wr;default:return Wn}}function Kp(e){for(let t of e){if(t.kind===`group`){let e=t.children?Kp(t.children):void 0;if(e)return e;continue}if(t.kind!==`url`&&t.kind!==`separator`&&t.kind!==`action`&&t.href)return t}}function qp({name:e,draft:t,editing:n,selection:r,onSelectionChange:i,onPatch:a,locale:o}){let s=String(t.name??e??``),c=t.label??s,l=W(`engine.appPreview.unnamed`,o),{rootKey:u,navItems:d}=Y.useMemo(()=>{let e=[[`nav`,t.nav],[`navigation`,t.navigation],[`tabs`,t.tabs],[`items`,t.items],[`menu`,t.menu]];for(let[t,n]of e)if(Array.isArray(n)&&n.length)return{rootKey:t,navItems:Wp(n,s,l)};return{rootKey:null,navItems:[]}},[t,s,l]),f=Y.useMemo(()=>Kp(d),[d]),p=u??`navigation`,m=!!(n&&i),h=m&&!!a,g=r&&r.kind===`nav`?r.id:null,_=m?(e,t)=>i({kind:`nav`,id:e,label:t.label}):void 0,v=s?`/apps/${encodeURIComponent(s)}/`:null;return(0,X.jsx)(Z,{hint:`app`,toolbar:v&&(0,X.jsxs)(`a`,{href:v,target:`_blank`,rel:`noreferrer`,className:`text-xs text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,title:W(`engine.appPreview.openTitle`,o),children:[W(`engine.appPreview.open`,o),` `,(0,X.jsx)($n,{className:`h-3 w-3`})]}),children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 p-3`,children:[(0,X.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:String(c)}),(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono mt-0.5`,children:s}),(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:f?(0,X.jsxs)(X.Fragment,{children:[W(`engine.appPreview.homeFirst`,o),(0,X.jsxs)(`span`,{className:`ml-1.5`,children:[`→ `,f.label]})]}):(0,X.jsx)(X.Fragment,{children:W(`engine.appPreview.homeNone`,o)})})]}),m?(0,X.jsx)(zp,{draft:t,rootKey:p,onPatch:h?a:void 0,selection:r??null,onSelectionChange:i}):d.length===0?(0,X.jsx)(sf,{children:mp(W(`engine.appPreview.empty`,o),{navigation:(0,X.jsx)(`code`,{children:`navigation`})})}):(0,X.jsx)(`div`,{className:`border rounded divide-y`,children:d.map((e,t)=>(0,X.jsx)(Jp,{item:e,depth:0,path:`${u}[${t}]`,onSelect:_,selectedId:g,locale:o},t))})]})})})}function Jp({item:e,depth:t,path:n,onSelect:r,selectedId:i,locale:a}){let o=Gp(e.kind),s=e.href;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent/40 ${r?`cursor-pointer`:``} ${i===n?`bg-primary/5 ring-1 ring-primary`:``}`,style:{paddingLeft:`${12+t*16}px`},onClick:r?t=>{t.stopPropagation(),r(n,e)}:void 0,children:[(0,X.jsx)(o,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,X.jsx)(`span`,{className:`font-medium truncate`,children:e.label}),e.kind?(0,X.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider opacity-60`,children:e.kind}):(0,X.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-amber-700`,title:W(`engine.appPreview.noTypeTitle`,a),children:W(`engine.appPreview.noType`,a)}),e.target&&(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground truncate`,children:e.target}),s&&(0,X.jsxs)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,onClick:e=>e.stopPropagation(),className:`ml-auto font-mono text-[10px] text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[s,` `,(0,X.jsx)($n,{className:`h-3 w-3`})]})]}),e.children?.map((e,o)=>(0,X.jsx)(Jp,{item:e,depth:t+1,path:`${n}.children[${o}]`,onSelect:r,selectedId:i,locale:a},o))]})}function Yp(e){let{type:t,locale:n}=e;switch(t){case`text`:case`password`:return(0,X.jsx)(Xp,{...e,icon:t===`password`?(0,X.jsx)(Lr,{className:`h-3.5 w-3.5`}):void 0});case`email`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(an,{className:`h-3.5 w-3.5`}),placeholder:e.placeholder??`name@example.com`});case`url`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(br,{className:`h-3.5 w-3.5`}),placeholder:e.placeholder??`https://…`});case`phone`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(ri,{className:`h-3.5 w-3.5`}),placeholder:e.placeholder??`+1 555 …`});case`number`:case`currency`:case`percent`:case`autonumber`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(Cr,{className:`h-3.5 w-3.5`}),placeholder:e.placeholder??`0`});case`date`:case`datetime`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(hn,{className:`h-3.5 w-3.5`}),placeholder:W(`designer.stub.pickDate`,n)});case`time`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(Rn,{className:`h-3.5 w-3.5`}),placeholder:`hh:mm`});case`textarea`:case`markdown`:case`html`:case`richtext`:case`json`:case`code`:return(0,X.jsx)(Zp,{...e,mono:t===`json`||t===`code`});case`boolean`:case`toggle`:return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 h-8`,children:[(0,X.jsx)(ot,{disabled:!0}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.placeholder??W(`designer.stub.off`,n)})]});case`select`:case`radio`:return(0,X.jsx)(Qp,{...e,single:!0});case`multiselect`:case`checkboxes`:case`tags`:return(0,X.jsx)(Qp,{...e,single:!1});case`lookup`:case`master_detail`:case`tree`:return(0,X.jsx)($p,{...e});case`image`:case`avatar`:return(0,X.jsx)(em,{icon:(0,X.jsx)(wr,{className:`h-4 w-4`}),label:W(t===`avatar`?`designer.stub.uploadAvatar`:`designer.stub.uploadImage`,n)});case`file`:case`video`:case`audio`:case`signature`:return(0,X.jsx)(em,{icon:(0,X.jsx)(ti,{className:`h-4 w-4`}),label:U(`designer.stub.upload`,n,{type:t})});case`qrcode`:return(0,X.jsx)(em,{icon:(0,X.jsx)(ti,{className:`h-4 w-4`}),label:W(`designer.stub.qrcode`,n)});case`color`:return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 h-8`,children:[(0,X.jsx)(`span`,{className:`inline-block h-6 w-6 rounded border`,style:{background:`#3b82f6`}}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`#3b82f6`}),(0,X.jsx)(Xr,{className:`h-3.5 w-3.5 text-muted-foreground`})]});case`rating`:return(0,X.jsx)(`div`,{className:`flex items-center gap-0.5 h-8`,children:[0,1,2,3,4].map(e=>(0,X.jsx)(ki,{className:`h-4 w-4 `+(e<3?`fill-amber-400 text-amber-400`:`text-muted-foreground/40`)},e))});case`slider`:return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 h-8`,children:[(0,X.jsxs)(`div`,{className:`relative flex-1 h-1.5 rounded bg-muted`,children:[(0,X.jsx)(`div`,{className:`absolute inset-y-0 left-0 w-2/5 rounded bg-primary`}),(0,X.jsx)(`div`,{className:`absolute h-3 w-3 -top-[3px] left-[40%] rounded-full border-2 border-primary bg-background`})]}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:`40`})]});case`progress`:return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 h-8`,children:[(0,X.jsx)(`div`,{className:`relative flex-1 h-2 rounded bg-muted`,children:(0,X.jsx)(`div`,{className:`absolute inset-y-0 left-0 w-3/5 rounded bg-emerald-500`})}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:`60%`})]});case`location`:return(0,X.jsx)(Xp,{...e,icon:(0,X.jsx)(zr,{className:`h-3.5 w-3.5`}),placeholder:W(`designer.stub.latLng`,n)});case`address`:return(0,X.jsx)(Zp,{...e,placeholder:e.placeholder??`Street
6
- City, State ZIP
7
- Country`});case`formula`:case`summary`:return(0,X.jsx)(`div`,{className:`h-8 px-2 flex items-center text-xs font-mono bg-muted/40 border rounded text-muted-foreground`,children:e.formula?`ƒ ${e.formula}`:`ƒ ${W(`designer.stub.computed`,n)}`});case`composite`:return(0,X.jsx)(`div`,{className:`p-2 border-dashed border-2 rounded text-[11px] text-muted-foreground italic`,children:W(`designer.stub.composite`,n)});case`repeater`:return(0,X.jsx)(`div`,{className:`p-2 border-dashed border-2 rounded text-[11px] text-muted-foreground italic`,children:W(`designer.stub.repeater`,n)});case`vector`:return(0,X.jsxs)(`div`,{className:`h-8 px-2 flex items-center text-xs font-mono bg-muted/40 border rounded text-muted-foreground`,children:[`[0.124, 0.337, …] `,e.placeholder?`(${e.placeholder})`:``]});default:return(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(z,{disabled:!0,placeholder:e.placeholder??`(${t})`,className:`h-8 text-sm`}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:t})]})}}function Xp({placeholder:e,icon:t}){return(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(z,{disabled:!0,placeholder:e??``,className:`h-8 text-sm `+(t?`pl-8`:``)}),t&&(0,X.jsx)(`div`,{className:`absolute left-2 top-1/2 -translate-y-1/2 text-muted-foreground`,children:t})]})}function Zp({placeholder:e,mono:t}){return(0,X.jsx)(`textarea`,{disabled:!0,placeholder:e??``,className:`w-full min-h-[60px] text-sm rounded-md border bg-background px-2 py-1.5 disabled:opacity-100 `+(t?`font-mono text-xs`:``)})}function Qp({options:e,placeholder:t,single:n,locale:r}){let i=(e??[]).filter(e=>e.value||e.label),a=i.slice(0,n?1:3);return n?(0,X.jsxs)(`div`,{className:`h-8 px-2 flex items-center justify-between text-sm border rounded bg-background text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`truncate`,children:a[0]?.label||a[0]?.value||t||W(`designer.stub.select`,r)}),(0,X.jsx)(wn,{className:`h-3.5 w-3.5 shrink-0`})]}):(0,X.jsxs)(`div`,{className:`min-h-8 px-1.5 py-1 flex items-center flex-wrap gap-1 border rounded bg-background`,children:[a.length===0?(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground px-1`,children:t||W(`designer.stub.pickMulti`,r)}):a.map((e,t)=>(0,X.jsx)(R,{variant:`secondary`,className:`text-[10px]`,children:e.label||e.value},t)),i.length>a.length&&(0,X.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`+`,i.length-a.length]})]})}function $p({referenceTo:e,placeholder:t,locale:n}){let r=e?Zo.lookup:null;return(0,X.jsxs)(`div`,{className:`h-8 px-2 flex items-center gap-2 border rounded bg-background text-sm text-muted-foreground`,children:[(0,X.jsx)(Nr,{className:`h-3.5 w-3.5 shrink-0`}),(0,X.jsx)(`span`,{className:`truncate flex-1`,children:t||(e?U(`designer.stub.searchRef`,n,{ref:e}):W(`designer.stub.chooseRelated`,n))}),e&&(0,X.jsxs)(R,{variant:`outline`,className:`text-[10px] shrink-0`,children:[`→ `,e]}),!e&&(0,X.jsx)(vi,{className:`h-3.5 w-3.5 shrink-0 text-amber-500`}),r&&null]})}function em({icon:e,label:t}){return(0,X.jsxs)(`div`,{className:`h-16 w-full border-2 border-dashed rounded flex flex-col items-center justify-center gap-1 text-muted-foreground bg-muted/20`,children:[e,(0,X.jsx)(`span`,{className:`text-[11px]`,children:t})]})}var tm=(e,t)=>e?W(`engine.fieldType.${e.id}`,t):void 0,nm=(e,t)=>W(`engine.fieldCategory.${e}`,t);function rm({objectName:e,draft:t,baseline:n,onPatch:r,selection:i,onSelectionChange:a,locale:o}){let s=!r,{enabled:c}=ps(),l=Y.useMemo(()=>Ao(t.fields),[t]),u=Y.useMemo(()=>n?Za(n.fields,t.fields):null,[n,t]),d=u?u.counts.added+u.counts.changed+u.counts.removed:0,[f,p]=Y.useState(!1);Y.useEffect(()=>{f&&d===0&&p(!1)},[f,d]);let m=f&&d>0,h=e=>m?u?.byName[e]?.status:void 0,g=e=>m?u?.byName[e]?.changedKeys??[]:[],_=Y.useMemo(()=>$a(t.fieldGroups),[t]),v=_.length>0,y=Y.useMemo(()=>uo(l,_,{includeEmptyDeclared:!s}),[l,_,s]),[b,x]=Y.useState({}),S=e=>e??`__ungrouped__`,C=Y.useCallback(e=>{let t=e??`__ungrouped__`;x(e=>({...e,[t]:!e[t]}))},[]),w=y.length>0&&y.every(e=>b[S(e.key)]),T=Y.useCallback(e=>{x(()=>{let t={};for(let n of y)t[S(n.key)]=e;return t})},[y]),E=i?.kind===`field`?String(i.id):null,D=l.entries.filter(e=>!!e.def.required).length,O=Y.useCallback(e=>{a&&a({kind:`field`,id:e.name,label:typeof e.def.label==`string`?e.def.label:e.name})},[a]),[k,A]=Y.useState(()=>new Set),j=Y.useRef(null),M=Y.useMemo(()=>y.flatMap(e=>e.entries.map(e=>e.name)),[y]);Y.useEffect(()=>{A(e=>{if(e.size===0)return e;let t=new Set([...e].filter(e=>l.entries.some(t=>t.name===e)));return t.size===e.size?e:t})},[l]);let N=Y.useCallback((e,t)=>{let n=e.name;if(!s&&t&&(t.metaKey||t.ctrlKey)){A(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),j.current=n;return}if(!s&&t&&t.shiftKey&&j.current&&j.current!==n){let e=M.indexOf(j.current),t=M.indexOf(n);if(e>=0&&t>=0){let[n,r]=e<t?[e,t]:[t,e];A(new Set(M.slice(n,r+1)));return}}k.size&&A(new Set),j.current=n,O(e)},[s,M,k,O]),P=Y.useCallback(()=>A(new Set),[]),ee=Y.useCallback(()=>{if(!r||k.size===0)return;let e=l.entries.filter(e=>!k.has(e.name));r({fields:xo({shape:l.shape,entries:e})}),E&&k.has(E)&&a?.(null),A(new Set)},[r,k,l,E,a]),te=Y.useCallback(e=>{if(!r||k.size===0)return;let t=l.entries.map(t=>k.has(t.name)?{name:t.name,def:{...t.def,group:e??void 0}}:t);r({fields:xo({shape:l.shape,entries:t})})},[r,k,l]),ne=Y.useCallback((e,t)=>{if(!r)return;let n=l.entries.map(e=>e.name),i=e===`select`?`status`:e,o=1,s=i;for(;n.includes(s);)o+=1,s=`${i}_${o}`;let c=eo(s,e);t&&(c.def={...c.def,group:t});let u=l.entries.length;if(t){for(let e=l.entries.length-1;e>=0;--e)if(l.entries[e].def.group===t){u=e+1;break}}let d=l.entries.slice();d.splice(u,0,c),r({fields:xo({shape:l.shape,entries:d})}),a?.({kind:`field`,id:s,label:String(c.def.label??s)})},[r,a,l]),re=Y.useCallback(()=>{if(!r)return;let e=U(`designer.canvas.sectionN`,o,{n:_.length+1}),t=Ka(_,e),n=t[t.length-1];r({fieldGroups:t}),x(e=>({...e,[n.key]:!1}))},[r,_,o]),ie=Y.useCallback((e,t)=>{r&&r({fieldGroups:mo(_,e,t)})},[r,_]),F=Y.useCallback(e=>{if(!r)return;let t=fo(l,e);r({fieldGroups:ho(_,e),fields:xo(t)})},[r,_,l]),ae=Y.useCallback((e,t)=>{r&&r({fieldGroups:Xa(_,e,t)})},[r,_]),oe=Y.useCallback((e,t,n)=>{if(!r||e===t)return;let i=l.entries.slice(),a=i.findIndex(t=>t.name===e);if(a<0)return;let[o]=i.splice(a,1),s=i.findIndex(e=>e.name===t),c=s>=0?i[s]:void 0;if(c){let e=typeof c.def.group==`string`?c.def.group:void 0;e!==(typeof o.def.group==`string`?o.def.group:void 0)&&(o.def={...o.def,group:e})}s<0?i.push(o):i.splice(n===`before`?s:s+1,0,o),r({fields:xo({shape:l.shape,entries:i})})},[r,l]),se=Y.useCallback((e,t)=>{if(!r)return;let n=l.entries.slice(),i=n.findIndex(t=>t.name===e);if(i<0)return;let a=typeof n[i].def.group==`string`?n[i].def.group:null,o=i+t;for(;o>=0&&o<n.length&&(typeof n[o].def.group==`string`?n[o].def.group:null)!==a;)o+=t;if(o<0||o>=n.length)return;let s=n[i];n[i]=n[o],n[o]=s,r({fields:xo({shape:l.shape,entries:n})})},[r,l]),ce=Y.useCallback((e,t)=>{if(!r)return;let n=l.entries.slice(),i=n.findIndex(t=>t.name===e);if(i<0)return;let[a]=n.splice(i,1);if((typeof a.def.group==`string`?a.def.group:null)===t){n.splice(i,0,a);return}a.def={...a.def,group:t??void 0};let o=n.length;for(let e=n.length-1;e>=0;--e)if((typeof n[e].def.group==`string`?n[e].def.group:null)===t){o=e+1;break}n.splice(o,0,a),r({fields:xo({shape:l.shape,entries:n})})},[r,l]),le=Y.useCallback((e,t)=>{if(!r)return;let n=l.entries.map(n=>n.name===e?{name:e,def:{...n.def,label:t||void 0}}:n);r({fields:xo({shape:l.shape,entries:n})})},[r,l]),ue=Y.useCallback(e=>{e.target===e.currentTarget&&E&&a?.(null)},[a,E]),de=l.entries.length===0,fe=v||y.length>1;return(0,X.jsxs)(`div`,{className:`h-full overflow-auto bg-muted/20`,onClick:ue,"data-object-name":e,children:[!s&&k.size>0&&(0,X.jsx)(am,{count:k.size,groups:_,onMoveToGroup:te,onDelete:ee,onClear:P,locale:o}),(0,X.jsxs)(`div`,{className:`mx-auto max-w-3xl px-6 py-6 space-y-4`,onClick:ue,children:[!de&&(0,X.jsx)(im,{fieldCount:l.entries.length,requiredCount:D,sectionCount:_.length,allCollapsed:w,onToggleAll:fe?()=>T(!w):void 0,reviewAvailable:d>0,reviewing:m,diffCounts:u?.counts,onToggleReview:()=>p(e=>!e),locale:o}),de?(0,X.jsx)(um,{onAdd:s?void 0:ne,locale:o,aiEnabled:c}):(0,X.jsx)(`div`,{className:`space-y-5`,children:y.map(e=>{let t=e.key?_.findIndex(t=>t.key===e.key):-1;return(0,X.jsxs)(om,{groupKey:e.key,label:e.key===null?W(`designer.canvas.ungrouped`,o):e.label,count:e.entries.length,showHeader:fe,collapsed:!!b[S(e.key)],onToggleCollapse:()=>C(e.key),readOnly:s,locale:o,canMoveUp:t>0,canMoveDown:t>=0&&t<_.length-1,onRename:e.key?t=>ie(e.key,t):void 0,onRemove:e.key?()=>F(e.key):void 0,onMove:e.key?t=>ae(e.key,t):void 0,onAddField:s?void 0:t=>ne(t,e.key),onDropField:s?void 0:ce,children:[e.entries.map(e=>(0,X.jsx)(lm,{entry:e,selected:e.name===E,multiSelected:k.has(e.name),diffStatus:h(e.name),changedKeys:g(e.name),readOnly:s,locale:o,onClick:t=>N(e,t),onReorder:s?void 0:oe,onRenameLabel:s?void 0:le,onMoveOffset:s?void 0:t=>se(e.name,t)},e.name)),e.entries.length===0&&(0,X.jsx)(`div`,{className:`rounded-md border border-dashed bg-background/40 px-3 py-4 text-center text-[11px] text-muted-foreground`,children:W(s?`designer.canvas.emptySection`:`designer.canvas.dropHint`,o)})]},e.key??`__ungrouped__`)})}),m&&u&&u.removed.length>0&&(0,X.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wider text-destructive/80 pl-1`,children:W(`designer.canvas.diffRemoved`,o)}),u.removed.map(e=>(0,X.jsx)(cm,{entry:e,locale:o},e.name))]}),!de&&!s&&(0,X.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,X.jsx)(dm,{onPick:e=>ne(e),locale:o}),(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`gap-1.5 text-muted-foreground hover:text-foreground`,onClick:re,children:[(0,X.jsx)(dr,{className:`h-3.5 w-3.5`}),W(`designer.canvas.addSection`,o)]}),c&&(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`gap-1.5 ml-auto text-primary/80 hover:text-primary`,onClick:()=>ea(),children:[(0,X.jsx)(Ei,{className:`h-3.5 w-3.5`}),W(`designer.canvas.askAi`,o)]})]})]})]})}function im({fieldCount:e,requiredCount:t,sectionCount:n,allCollapsed:r,onToggleAll:i,reviewAvailable:a,reviewing:o,diffCounts:s,onToggleReview:c,locale:l}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-muted-foreground`,children:[(0,X.jsx)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:o&&s?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`span`,{className:`font-medium text-emerald-600 dark:text-emerald-400`,children:s.added}),` `,W(`designer.canvas.diffAdded`,l),(0,X.jsx)(`span`,{className:`text-muted-foreground/50`,children:`·`}),(0,X.jsx)(`span`,{className:`font-medium text-amber-600 dark:text-amber-400`,children:s.changed}),` `,W(`designer.canvas.diffChanged`,l),(0,X.jsx)(`span`,{className:`text-muted-foreground/50`,children:`·`}),(0,X.jsx)(`span`,{className:`font-medium text-destructive`,children:s.removed}),` `,W(`designer.canvas.diffRemoved`,l),(0,X.jsx)(`span`,{className:`text-muted-foreground/40 normal-case ml-1`,children:W(`designer.canvas.reviewVsPublished`,l)})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`span`,{className:`font-medium text-foreground/80`,children:e}),` `,W(`designer.canvas.fields`,l),(0,X.jsx)(`span`,{className:`text-muted-foreground/50`,children:`·`}),(0,X.jsx)(`span`,{className:`font-medium text-foreground/80`,children:t}),` `,W(`designer.canvas.required`,l),n>0&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`span`,{className:`text-muted-foreground/50`,children:`·`}),(0,X.jsx)(`span`,{className:`font-medium text-foreground/80`,children:n}),` `,W(`designer.canvas.sections`,l)]})]})}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[a&&c&&(0,X.jsxs)(`button`,{type:`button`,onClick:c,className:L(`inline-flex items-center gap-1 rounded px-1.5 py-0.5 transition-colors`,o?`bg-primary/10 text-primary hover:bg-primary/15`:`hover:bg-accent hover:text-foreground`),children:[(0,X.jsx)(vr,{className:`h-3 w-3`}),W(o?`designer.canvas.reviewExit`:`designer.canvas.reviewChanges`,l)]}),i&&(0,X.jsxs)(`button`,{type:`button`,onClick:i,className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 hover:bg-accent hover:text-foreground transition-colors`,children:[r?(0,X.jsx)(On,{className:`h-3 w-3`}):(0,X.jsx)(Dn,{className:`h-3 w-3`}),W(r?`designer.canvas.expandAll`:`designer.canvas.collapseAll`,l)]})]})]})}function am({count:e,groups:t,onMoveToGroup:n,onDelete:r,onClear:i,locale:a}){let[o,s]=Y.useState(!1);return(0,X.jsxs)(`div`,{className:`sticky top-0 z-20 flex items-center gap-2 border-b border-primary/20 bg-primary/10 backdrop-blur px-6 py-2 text-sm`,children:[(0,X.jsx)(`span`,{className:`font-medium text-foreground`,children:U(`designer.canvas.bulkSelected`,a,{n:e})}),(0,X.jsx)(`span`,{className:`text-muted-foreground text-[11px] hidden md:inline`,children:W(`designer.canvas.bulkHint`,a)}),(0,X.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[t.length>0&&(0,X.jsxs)(Ke,{open:o,onOpenChange:s,children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-7 gap-1.5 bg-background/70`,children:[(0,X.jsx)(ur,{className:`h-3.5 w-3.5`}),W(`designer.canvas.bulkMoveTo`,a),(0,X.jsx)(wn,{className:`h-3 w-3`})]})}),(0,X.jsxs)(be,{align:`end`,className:`w-52 p-1 max-h-[300px] overflow-auto`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>{n(null),s(!1)},className:`w-full text-left px-2 py-1.5 rounded text-sm hover:bg-accent`,children:W(`designer.canvas.ungrouped`,a)}),t.map(e=>(0,X.jsx)(`button`,{type:`button`,onClick:()=>{n(e.key),s(!1)},className:`w-full text-left px-2 py-1.5 rounded text-sm hover:bg-accent truncate`,children:e.label||e.key},e.key))]})]}),(0,X.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-7 gap-1.5 bg-background/70 text-destructive hover:text-destructive`,onClick:r,children:[(0,X.jsx)(Li,{className:`h-3.5 w-3.5`}),W(`designer.canvas.bulkDelete`,a)]}),(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`h-7 gap-1.5`,onClick:i,children:[(0,X.jsx)(qi,{className:`h-3.5 w-3.5`}),W(`designer.canvas.bulkClear`,a)]})]})]})}function om({groupKey:e,label:t,count:n,showHeader:r,collapsed:i,onToggleCollapse:a,readOnly:o,locale:s,canMoveUp:c,canMoveDown:l,onRename:u,onRemove:d,onMove:f,onAddField:p,onDropField:m,children:h}){let[g,_]=Y.useState(!1);return(0,X.jsxs)(`section`,{className:L(`space-y-2.5 rounded-md transition-colors`,g&&`bg-primary/5 ring-1 ring-primary/30 -mx-1 px-1 py-1`),onDragOver:e=>{if(!m)return;let t=e.dataTransfer.types;t&&Array.from(t).includes(`text/x-objectui-field`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,_(!0))},onDragLeave:e=>{e.currentTarget===e.target&&_(!1)},onDrop:t=>{if(!m)return;if(t.defaultPrevented){_(!1);return}t.preventDefault();let n=t.dataTransfer.getData(`text/x-objectui-field`);_(!1),n&&m(n,e)},children:[r&&(0,X.jsx)(sm,{label:t,count:n,collapsed:i,onToggleCollapse:a,readOnly:o,locale:s,canMoveUp:c,canMoveDown:l,dropActive:g,onRename:u,onRemove:d,onMove:f,onAddField:p}),!i&&(0,X.jsx)(`div`,{className:`space-y-2.5`,children:h})]})}function sm({label:e,count:t,collapsed:n,onToggleCollapse:r,readOnly:i,locale:a,canMoveUp:o,canMoveDown:s,dropActive:c,onRename:l,onRemove:u,onMove:d,onAddField:f}){let[p,m]=Y.useState(!1),[h,g]=Y.useState(e);Y.useEffect(()=>{g(e)},[e]);let _=()=>{if(!l){m(!1);return}let t=h.trim();t&&t!==e&&l(t),m(!1)},v=n?Tn:wn;return(0,X.jsxs)(`div`,{className:`group/sec flex items-center gap-1.5 pl-0.5 min-h-[24px]`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:r,className:`flex items-center justify-center h-5 w-5 rounded text-muted-foreground hover:bg-accent hover:text-foreground transition-colors shrink-0`,"aria-label":W(n?`designer.canvas.expandSection`:`designer.canvas.collapseSection`,a),"aria-expanded":!n,children:(0,X.jsx)(v,{className:`h-3.5 w-3.5`})}),p?(0,X.jsx)(`input`,{autoFocus:!0,value:h,onChange:e=>g(e.target.value),onClick:e=>e.stopPropagation(),onKeyDown:t=>{t.stopPropagation(),t.key===`Enter`?(t.preventDefault(),_()):t.key===`Escape`&&(t.preventDefault(),g(e),m(!1))},onBlur:_,className:`text-[11px] font-medium uppercase tracking-wider px-1 py-0.5 -my-0.5 rounded border border-primary bg-background outline-none min-w-0 flex-1 max-w-[220px]`}):(0,X.jsx)(`span`,{className:L(`text-[11px] font-medium uppercase tracking-wider text-muted-foreground truncate`,l&&`cursor-text hover:text-foreground`),onDoubleClick:l?()=>{g(e),m(!0)}:void 0,title:l?W(`designer.canvas.renameHint`,a):void 0,children:e}),(0,X.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60 tabular-nums shrink-0`,children:t}),c&&(0,X.jsx)(`span`,{className:`text-primary normal-case text-[10px] font-normal`,children:W(`designer.canvas.dropToAssign`,a)}),!i&&(d||u||f)&&(0,X.jsxs)(`div`,{className:`ml-auto flex items-center gap-0.5 opacity-0 group-hover/sec:opacity-100 focus-within:opacity-100 transition-opacity`,children:[f&&(0,X.jsx)(dm,{onPick:f,compact:!0,locale:a}),d&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>d(-1),disabled:!o,className:`h-5 w-5 flex items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-30 disabled:pointer-events-none`,"aria-label":W(`designer.canvas.moveSectionUp`,a),children:(0,X.jsx)(nn,{className:`h-3 w-3`})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>d(1),disabled:!s,className:`h-5 w-5 flex items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-30 disabled:pointer-events-none`,"aria-label":W(`designer.canvas.moveSectionDown`,a),children:(0,X.jsx)(en,{className:`h-3 w-3`})})]}),u&&(0,X.jsx)(`button`,{type:`button`,onClick:u,className:`h-5 w-5 flex items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,"aria-label":W(`designer.canvas.removeSection`,a),title:W(`designer.canvas.removeSectionHint`,a),children:(0,X.jsx)(Li,{className:`h-3 w-3`})})]})]})}function cm({entry:e,locale:t}){let n=e.def,r=typeof n.type==`string`?n.type:`text`,i=Zo[r]?.Icon,a=typeof n.label==`string`?n.label:e.name;return(0,X.jsx)(`div`,{className:`rounded-md border border-dashed border-destructive/30 bg-destructive/[0.03] px-3.5 py-2.5 opacity-80`,children:(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[i&&(0,X.jsx)(i,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground/50`}),(0,X.jsx)(`span`,{className:`text-sm font-medium truncate line-through text-muted-foreground`,children:a}),(0,X.jsx)(`code`,{className:`text-[10px] text-muted-foreground/60 font-mono truncate line-through`,children:e.name})]}),(0,X.jsx)(R,{className:`text-[10px] font-medium border-transparent bg-destructive/15 text-destructive shrink-0`,children:W(`designer.canvas.diffRemoved`,t)})]})})}function lm({entry:e,selected:t,multiSelected:n,diffStatus:r,changedKeys:i,readOnly:a,locale:o,onClick:s,onReorder:c,onRenameLabel:l,onMoveOffset:u}){let d=e.def,f=typeof d.type==`string`?d.type:`text`,p=Zo[f],m=p?.Icon,h=qo[p?.category??`advanced`],g=typeof d.label==`string`?d.label:e.name,_=!!d.required,v=typeof d.description==`string`?d.description:null,y=Array.isArray(d.options)?d.options.map(e=>({value:String(e.value??``),label:typeof e.label==`string`?e.label:void 0})):void 0,b=typeof d.reference==`string`?d.reference:void 0,x=d.expression,S=typeof x==`string`?x:x&&typeof x==`object`&&typeof x.source==`string`?x.source:typeof d.formula==`string`?d.formula:void 0,C=typeof d.placeholder==`string`?d.placeholder:void 0,[w,T]=Y.useState(null),E=!!c,[D,O]=Y.useState(!1),[k,A]=Y.useState(g);Y.useEffect(()=>{A(g)},[g]);let j=e=>{l&&(e.preventDefault(),e.stopPropagation(),A(g),O(!0))},M=()=>{if(!l){O(!1);return}let t=k.trim();t&&t!==g&&l(e.name,t),O(!1)},N=()=>{A(g),O(!1)};return(0,X.jsxs)(`div`,{className:L(`relative`,w===`before`&&`pt-1.5`),onDragOver:e=>{if(!E)return;let t=e.dataTransfer.types;if(!t||!Array.from(t).includes(`text/x-objectui-field`))return;e.preventDefault(),e.dataTransfer.dropEffect=`move`;let n=e.currentTarget.getBoundingClientRect(),r=e.clientY-n.top<n.height/2?`before`:`after`;T(r)},onDragLeave:()=>T(null),onDrop:t=>{if(!c)return;t.preventDefault(),t.stopPropagation();let n=t.dataTransfer.getData(`text/x-objectui-field`);T(null),n&&n!==e.name&&c(n,e.name,w??`before`)},children:[w===`before`&&(0,X.jsx)(`div`,{className:`absolute left-0 right-0 -top-0.5 h-0.5 bg-primary rounded-full`}),(0,X.jsxs)(`div`,{role:`button`,tabIndex:a?-1:0,onClick:s,onKeyDown:e=>{if(e.target===e.currentTarget){if(e.altKey&&(e.key===`ArrowUp`||e.key===`ArrowDown`)){u&&(e.preventDefault(),u(e.key===`ArrowUp`?-1:1));return}(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s?.())}},draggable:E,onDragStart:t=>{t.dataTransfer.setData(`text/x-objectui-field`,e.name),t.dataTransfer.effectAllowed=`move`},className:L(`group block w-full text-left rounded-md border bg-card px-3.5 py-2.5 transition-colors`,`hover:border-primary/40 hover:bg-card outline-none focus-visible:ring-2 focus-visible:ring-primary/40`,t?`border-primary ring-2 ring-primary/30 shadow-sm`:`border-border`,n&&`border-primary/60 ring-2 ring-primary/40 bg-primary/[0.04]`,r===`added`&&`border-l-[3px] border-l-emerald-500`,r===`changed`&&`border-l-[3px] border-l-amber-500`,a&&`cursor-default`,E&&`cursor-grab active:cursor-grabbing`),"aria-pressed":t||n,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[n&&(0,X.jsx)(Di,{className:`h-3.5 w-3.5 text-primary shrink-0`,"aria-hidden":`true`}),E&&!n&&(0,X.jsx)(xr,{className:`h-3.5 w-3.5 text-muted-foreground/40 shrink-0 group-hover:text-muted-foreground/80`,"aria-hidden":`true`}),m&&(0,X.jsx)(m,{className:L(`h-3.5 w-3.5 shrink-0`,h.icon)}),D?(0,X.jsx)(`input`,{autoFocus:!0,value:k,onChange:e=>A(e.target.value),onClick:e=>e.stopPropagation(),onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),M()):e.key===`Escape`&&(e.preventDefault(),N())},onBlur:M,className:`text-sm font-medium px-1 py-0.5 -mx-1 -my-0.5 rounded border border-primary bg-background outline-none min-w-0 flex-1`}):(0,X.jsx)(`span`,{className:L(`text-sm font-medium truncate`,l&&`cursor-text`),onDoubleClick:j,title:l?W(`designer.canvas.renameHint`,o):void 0,children:g}),_&&(0,X.jsx)(`span`,{className:`text-destructive text-sm`,children:`*`}),(0,X.jsx)(`code`,{className:`text-[10px] text-muted-foreground/70 font-mono truncate`,children:e.name})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[r===`added`&&(0,X.jsx)(R,{className:`text-[10px] font-medium border-transparent bg-emerald-500/15 text-emerald-700 dark:text-emerald-300`,children:W(`designer.canvas.diffAdded`,o)}),r===`changed`&&(0,X.jsx)(R,{className:`text-[10px] font-medium border-transparent bg-amber-500/15 text-amber-700 dark:text-amber-300`,title:i&&i.length?U(`designer.canvas.diffChangedKeys`,o,{keys:i.join(`, `)}):void 0,children:W(`designer.canvas.diffChanged`,o)}),(0,X.jsx)(R,{variant:`outline`,className:L(`text-[10px] font-medium`,h.badge),children:tm(p,o)??f})]})]}),v&&(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground mb-1.5 line-clamp-1`,children:v}),(0,X.jsx)(Yp,{type:f,label:g,placeholder:C,options:y,referenceTo:b,formula:S,locale:o})]}),w===`after`&&(0,X.jsx)(`div`,{className:`absolute left-0 right-0 -bottom-1 h-0.5 bg-primary rounded-full`})]})}function um({onAdd:e,locale:t,aiEnabled:n}){return(0,X.jsxs)(`div`,{className:`rounded-lg border-2 border-dashed bg-background py-16 px-6 text-center space-y-3`,children:[(0,X.jsx)(`div`,{className:`text-sm font-medium`,children:W(`designer.canvas.noFields`,t)}),(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:W(`designer.canvas.noFieldsHint`,t)}),e&&(0,X.jsxs)(`div`,{className:`pt-2 flex items-center justify-center gap-2`,children:[(0,X.jsx)(dm,{onPick:e,locale:t}),n&&(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,className:`gap-1.5 text-primary/80 hover:text-primary`,onClick:()=>ea(),children:[(0,X.jsx)(Ei,{className:`h-3.5 w-3.5`}),W(`designer.canvas.askAiGenerate`,t)]})]})]})}function dm({onPick:e,compact:t,locale:n}){let[r,i]=Y.useState(!1),[a,o]=Y.useState(``),s=a.trim().toLowerCase(),c=Y.useMemo(()=>s?as.map(e=>({category:e.category,types:e.types.filter(e=>{let t=Zo[e],r=tm(t,n)??``;return e.includes(s)||t.label.toLowerCase().includes(s)||r.toLowerCase().includes(s)})})).filter(e=>e.types.length>0):as,[s,a]);return(0,X.jsxs)(Ke,{open:r,onOpenChange:e=>{i(e),e||o(``)},children:[(0,X.jsx)(Ee,{asChild:!0,children:t?(0,X.jsx)(`button`,{type:`button`,className:`h-5 w-5 flex items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground`,"aria-label":W(`designer.canvas.addFieldToSection`,n),title:W(`designer.canvas.addFieldToSection`,n),children:(0,X.jsx)(H,{className:`h-3 w-3`})}):(0,X.jsxs)(B,{variant:`outline`,size:`sm`,className:`gap-1.5 border-dashed`,children:[(0,X.jsx)(H,{className:`h-3.5 w-3.5`}),W(`designer.canvas.addField`,n)]})}),(0,X.jsxs)(be,{align:`start`,className:`w-[320px] p-0 max-h-[480px] overflow-hidden flex flex-col`,children:[(0,X.jsx)(`div`,{className:`p-2 border-b`,children:(0,X.jsx)(`input`,{autoFocus:!0,value:a,onChange:e=>o(e.target.value),placeholder:W(`designer.canvas.searchFieldType`,n),className:`h-7 w-full px-2 text-sm border rounded bg-background outline-none focus:ring-1 focus:ring-primary`})}),(0,X.jsx)(`div`,{className:`flex-1 overflow-auto p-1`,children:c.length===0?(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground p-4 text-center`,children:W(`designer.canvas.noMatchingTypes`,n)}):c.map(t=>(0,X.jsxs)(`div`,{className:`mb-1`,children:[(0,X.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground px-2 pt-2 pb-1`,children:nm(t.category,n)}),(0,X.jsx)(`div`,{className:`grid grid-cols-2 gap-0.5`,children:t.types.map(t=>{let r=Zo[t],a=r.Icon;return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{e(t),i(!1),o(``)},className:`flex items-center gap-2 px-2 py-1.5 rounded text-left text-xs hover:bg-accent`,children:[(0,X.jsx)(a,{className:L(`h-3.5 w-3.5 shrink-0`,qo[r.category].icon)}),(0,X.jsx)(`span`,{className:`truncate`,children:tm(r,n)})]},t)})})]},t.category))})]})]})}function fm({name:e,draft:t,baseline:n,onPatch:r,selection:i,onSelectionChange:a,locale:o}){let s=String(t.name??e??``);return s?(0,X.jsx)(Z,{hint:`object · designer`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.objectPreview.renderFailed`,o),children:(0,X.jsx)(rm,{objectName:s,draft:t,baseline:n,onPatch:r,selection:i,onSelectionChange:a,locale:o})})}):(0,X.jsx)(Z,{hint:`object`,children:(0,X.jsx)(sf,{children:W(`designer.canvas.nameToStart`,o)})})}function pm(e){let t=new Set;for(let n of e.matchAll(/\{\{\s*([a-zA-Z_][\w.]*)\s*\}\}/g))t.add(n[1]);for(let n of e.matchAll(/\$\{\s*([a-zA-Z_][\w.]*)\s*\}/g))t.add(n[1]);return Array.from(t).sort()}function mm(e,t){return t[e]??``}function hm(e,t){return e.replace(/\{\{\s*([a-zA-Z_][\w.]*)\s*\}\}/g,(e,n)=>mm(n,t)).replace(/\$\{\s*([a-zA-Z_][\w.]*)\s*\}/g,(e,n)=>mm(n,t))}function gm({draft:e,locale:t}){let n=String(e.subject??``),r=String(e.from??e.fromAddress??``),i=String(e.to??``),a=String(e.bodyHtml??e.html??e.body??``),o=String(e.bodyText??e.text??``),s=Y.useMemo(()=>{let e=new Set;for(let t of pm(n))e.add(t);for(let t of pm(a))e.add(t);for(let t of pm(o))e.add(t);return Array.from(e).sort()},[n,a,o]),[c,l]=Y.useState({}),u=hm(n,c),d=`<!doctype html><html><head><meta charset="utf-8"><style>
8
- html,body{margin:0;padding:16px;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#111;background:#fff;}
9
- a{color:#2563eb;}
10
- </style></head><body>${(a?hm(a,c):hm(o,c).replace(/\n/g,`<br/>`))||`<p style="color:#888">${W(`engine.emailTemplatePreview.emptyBody`,t)}</p>`}</body></html>`;return!a&&!o&&!n?(0,X.jsx)(Z,{hint:`email_template`,children:(0,X.jsx)(sf,{children:W(`engine.emailTemplatePreview.empty`,t)})}):(0,X.jsx)(Z,{hint:`email_template`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`grid lg:grid-cols-[1fr_220px] gap-0`,children:[(0,X.jsxs)(`div`,{className:`p-3 space-y-3 min-w-0`,children:[(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 px-3 py-2 text-xs space-y-0.5`,children:[(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`span`,{className:`w-12 text-muted-foreground shrink-0`,children:W(`engine.emailTemplatePreview.from`,t)}),(0,X.jsx)(`span`,{className:`font-mono truncate`,children:r||`—`})]}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`span`,{className:`w-12 text-muted-foreground shrink-0`,children:W(`engine.emailTemplatePreview.to`,t)}),(0,X.jsx)(`span`,{className:`font-mono truncate`,children:i||`—`})]}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`span`,{className:`w-12 text-muted-foreground shrink-0`,children:W(`engine.emailTemplatePreview.subject`,t)}),(0,X.jsx)(`span`,{className:`font-medium truncate`,children:u||`—`})]})]}),(0,X.jsx)(`iframe`,{title:W(`engine.emailTemplatePreview.frameTitle`,t),srcDoc:d,sandbox:`allow-same-origin`,className:`w-full min-h-[400px] max-h-[60vh] border rounded bg-white`})]}),(0,X.jsxs)(`div`,{className:`border-l bg-muted/20 p-3 text-xs space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground`,children:[(0,X.jsx)(Rr,{className:`h-3 w-3`}),` `,W(`engine.emailTemplatePreview.variables`,t)]}),s.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:mp(W(`engine.emailTemplatePreview.noVariables`,t),{var:(0,X.jsx)(`code`,{children:`{{var}}`})})}):(0,X.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`block font-mono text-[10px] text-muted-foreground mb-0.5`,children:e}),(0,X.jsx)(`input`,{type:`text`,value:c[e]??``,onChange:t=>l(n=>({...n,[e]:t.target.value})),placeholder:U(`engine.emailTemplatePreview.samplePlaceholder`,t,{name:e}),className:`w-full text-xs px-2 py-1 border rounded bg-background`})]},e))})]})]})})})}var _m=212;function vm(e,t){let n=0;return e.forEach((e,r)=>{let{width:i,height:a}=co(Io(e.nodes,e.edges)),o=Math.min(1,t/Math.max(i,1));n+=(r>0?8:0)+14+(e.label?16:0)+a*o}),n}function ym(e){return e.length===0?66:86+vm(e,_m)}function bm(e,t){let{key:n,label:r}=e;if(n===`try`)return W(`engine.flowRegion.try`,t);if(n===`catch`)return W(`engine.flowRegion.catch`,t);if(n===`body`)return r===`Body`?W(`engine.flowRegion.body`,t):r;let i=/^branch-(\d+)$/.exec(n);if(i){let e=Number(i[1])+1;if(r===`Branch ${e}`)return U(`engine.flowRegion.branchN`,t,{n:e})}return r}function xm({node:e,x:t,y:n,selected:r,onSelect:i}){let a=Em(e.type),o=!!i;return(0,X.jsxs)(`div`,{"data-region-node-id":e.id,role:o?`button`:void 0,tabIndex:o?0:void 0,"aria-pressed":o?!!r:void 0,onClick:o?e=>{e.stopPropagation(),i()}:void 0,onKeyDown:o?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),i())}:void 0,className:L(`absolute flex items-center gap-2 rounded-lg border bg-card px-2 py-1.5 shadow-sm`,o&&`cursor-pointer`,r?`border-primary ring-2 ring-primary/30`:`border-border/70`),style:{left:t,top:n,width:240,height:66},children:[(0,X.jsx)(`div`,{className:L(`flex h-7 w-7 shrink-0 items-center justify-center rounded-md`,a.chip),children:(0,X.jsx)(Dm,{type:e.type,className:L(`h-4 w-4`,a.icon)})}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`div`,{className:`truncate text-[12px] font-semibold leading-tight text-foreground`,title:e.label||e.id,children:e.label||e.id}),(0,X.jsx)(`div`,{className:L(`text-[10px] font-semibold uppercase tracking-[0.08em]`,a.label),children:e.type})]})]})}function Sm({region:e,maxWidth:t,selectedNodeId:n,onSelectNode:r}){let i=Y.useMemo(()=>Io(e.nodes,e.edges),[e.nodes,e.edges]),{width:a,height:o}=Y.useMemo(()=>co(i),[i]),s=Math.min(1,t/Math.max(a,1));return(0,X.jsx)(`div`,{className:`relative`,style:{width:a*s,height:o*s},children:(0,X.jsxs)(`div`,{className:`absolute left-0 top-0`,style:{width:a,height:o,transform:`scale(${s})`,transformOrigin:`top left`},children:[(0,X.jsx)(`svg`,{className:`pointer-events-none absolute left-0 top-0 overflow-visible`,width:a,height:o,children:e.edges.map((e,t)=>{let n=i.get(e.source),r=i.get(e.target);if(!n||!r)return null;let a=Ja(e),o=a?io(n):No(n),s=a?io(r):Eo(r);return(0,X.jsx)(`path`,{d:a?_o(o,s):lo(o,s),strokeDasharray:a?`5 4`:void 0,className:L(`fill-none`,a?`stroke-amber-500/60`:`stroke-muted-foreground/40`),strokeWidth:1.5},e.id||`${e.source}-${e.target}-${t}`)})}),e.nodes.map(e=>{let t=i.get(e.id);return t?(0,X.jsx)(xm,{node:e,x:t.x,y:t.y,selected:n===e.id,onSelect:r?()=>r(e):void 0},e.id):null})]})})}function Cm({regions:e,maxWidth:t,selected:n,onSelectNode:r,locale:i}){return(0,X.jsx)(`div`,{className:`flex flex-col`,style:{gap:8},children:e.map(e=>{let a=bm(e,i);return(0,X.jsxs)(`div`,{className:`rounded-md border border-dashed border-border/60 bg-muted/20`,style:{padding:6},children:[a&&(0,X.jsx)(`div`,{className:`text-[9px] font-semibold uppercase tracking-wide text-muted-foreground/80`,style:{height:16,lineHeight:`12px`,paddingBottom:4},children:a}),(0,X.jsx)(Sm,{region:e,maxWidth:t,selectedNodeId:n&&n.regionKey===e.key?n.nodeId:null,onSelectNode:r?t=>r(e.key,t):void 0})]},e.key)})})}function wm(e){switch(e){case`start`:return ii;case`end`:return Pn;case`decision`:case`branch`:case`gateway`:return Jn;case`wait`:case`timer`:case`delay`:return Fi;case`boundary_event`:case`signal`:return Ji;case`subflow`:case`flow`:return Gi;case`create_record`:return ar;case`update_record`:return ir;case`delete_record`:return cr;case`get_record`:return or;case`http_request`:case`webhook`:return br;case`notify`:return on;case`script`:case`script_task`:return Hn;case`screen`:case`user_task`:return Gr;case`approval`:return Hi;case`connector_action`:case`service_task`:return ai;case`assignment`:return Wi;case`loop`:case`for_each`:return di;case`map`:return Fr;case`parallel_gateway`:case`join_gateway`:case`parallel`:return yr;case`try_catch`:return bi;default:return jn}}var Tm={start:{icon:`text-emerald-600 dark:text-emerald-400`,accent:`border-l-emerald-500`,label:`text-emerald-600 dark:text-emerald-400`,chip:`bg-emerald-500/10 ring-1 ring-inset ring-emerald-500/20 dark:bg-emerald-400/10`},end:{icon:`text-rose-600 dark:text-rose-400`,accent:`border-l-rose-500`,label:`text-rose-600 dark:text-rose-400`,chip:`bg-rose-500/10 ring-1 ring-inset ring-rose-500/20 dark:bg-rose-400/10`},decision:{icon:`text-amber-600 dark:text-amber-400`,accent:`border-l-amber-500`,label:`text-amber-600 dark:text-amber-400`,chip:`bg-amber-500/10 ring-1 ring-inset ring-amber-500/20 dark:bg-amber-400/10`},wait:{icon:`text-blue-600 dark:text-blue-400`,accent:`border-l-blue-500`,label:`text-blue-600 dark:text-blue-400`,chip:`bg-blue-500/10 ring-1 ring-inset ring-blue-500/20 dark:bg-blue-400/10`},signal:{icon:`text-violet-600 dark:text-violet-400`,accent:`border-l-violet-500`,label:`text-violet-600 dark:text-violet-400`,chip:`bg-violet-500/10 ring-1 ring-inset ring-violet-500/20 dark:bg-violet-400/10`},subflow:{icon:`text-indigo-600 dark:text-indigo-400`,accent:`border-l-indigo-500`,label:`text-indigo-600 dark:text-indigo-400`,chip:`bg-indigo-500/10 ring-1 ring-inset ring-indigo-500/20 dark:bg-indigo-400/10`},task:{icon:`text-slate-500 dark:text-slate-400`,accent:`border-l-slate-400`,label:`text-slate-500 dark:text-slate-400`,chip:`bg-slate-500/10 ring-1 ring-inset ring-slate-500/20 dark:bg-slate-400/10`},record:{icon:`text-cyan-600 dark:text-cyan-400`,accent:`border-l-cyan-500`,label:`text-cyan-600 dark:text-cyan-400`,chip:`bg-cyan-500/10 ring-1 ring-inset ring-cyan-500/20 dark:bg-cyan-400/10`},integration:{icon:`text-fuchsia-600 dark:text-fuchsia-400`,accent:`border-l-fuchsia-500`,label:`text-fuchsia-600 dark:text-fuchsia-400`,chip:`bg-fuchsia-500/10 ring-1 ring-inset ring-fuchsia-500/20 dark:bg-fuchsia-400/10`},approval:{icon:`text-teal-600 dark:text-teal-400`,accent:`border-l-teal-500`,label:`text-teal-600 dark:text-teal-400`,chip:`bg-teal-500/10 ring-1 ring-inset ring-teal-500/20 dark:bg-teal-400/10`},loop:{icon:`text-sky-600 dark:text-sky-400`,accent:`border-l-sky-500`,label:`text-sky-600 dark:text-sky-400`,chip:`bg-sky-500/10 ring-1 ring-inset ring-sky-500/20 dark:bg-sky-400/10`},screen:{icon:`text-pink-600 dark:text-pink-400`,accent:`border-l-pink-500`,label:`text-pink-600 dark:text-pink-400`,chip:`bg-pink-500/10 ring-1 ring-inset ring-pink-500/20 dark:bg-pink-400/10`},assignment:{icon:`text-purple-600 dark:text-purple-400`,accent:`border-l-purple-500`,label:`text-purple-600 dark:text-purple-400`,chip:`bg-purple-500/10 ring-1 ring-inset ring-purple-500/20 dark:bg-purple-400/10`}};function Em(e){switch(e){case`start`:return Tm.start;case`end`:return Tm.end;case`decision`:case`branch`:case`gateway`:case`parallel_gateway`:case`join_gateway`:case`parallel`:return Tm.decision;case`wait`:case`timer`:case`delay`:return Tm.wait;case`boundary_event`:case`signal`:case`try_catch`:return Tm.signal;case`subflow`:case`flow`:return Tm.subflow;case`approval`:return Tm.approval;case`loop`:case`for_each`:case`map`:return Tm.loop;case`screen`:case`user_task`:return Tm.screen;case`assignment`:return Tm.assignment;case`create_record`:case`update_record`:case`delete_record`:case`get_record`:return Tm.record;case`http`:case`http_request`:case`notify`:case`connector_action`:case`script`:case`webhook`:case`service_task`:case`script_task`:return Tm.integration;default:return Tm.task}}function Dm({type:e,className:t}){return Y.createElement(wm(e),{className:t,"aria-hidden":!0})}var Om=[`Data`,`Logic`,`Human`,`Integration`,`Flow`];function km(e){switch(e){case`create_record`:case`update_record`:case`delete_record`:case`get_record`:return`Data`;case`decision`:case`branch`:case`gateway`:case`loop`:case`for_each`:case`map`:case`assignment`:case`parallel_gateway`:case`join_gateway`:case`parallel`:case`try_catch`:return`Logic`;case`approval`:case`screen`:case`user_task`:return`Human`;case`http`:case`http_request`:case`notify`:case`connector_action`:case`script`:case`webhook`:case`service_task`:case`script_task`:return`Integration`;default:return`Flow`}}var Am=[{type:`create_record`,label:`Create record`,hint:`Insert a new record`,category:`Data`},{type:`update_record`,label:`Update record`,hint:`Modify an existing record`,category:`Data`},{type:`get_record`,label:`Get record`,hint:`Query records`,category:`Data`},{type:`delete_record`,label:`Delete record`,hint:`Remove matching records`,category:`Data`},{type:`decision`,label:`Decision`,hint:`Branch on a condition`,category:`Logic`},{type:`loop`,label:`Loop`,hint:`Iterate over a collection`,category:`Logic`},{type:`assignment`,label:`Set variables`,hint:`Assign flow variables`,category:`Logic`},{type:`parallel`,label:`Parallel`,hint:`Run branches concurrently, join at end`,category:`Logic`},{type:`try_catch`,label:`Try / Catch`,hint:`Protect steps with error handling and retry`,category:`Logic`},{type:`approval`,label:`Approval`,hint:`Pause for a human decision`,category:`Human`},{type:`screen`,label:`Screen`,hint:`Collect input from a user`,category:`Human`},{type:`http`,label:`HTTP request`,hint:`Call an external API`,category:`Integration`},{type:`notify`,label:`Notify`,hint:`Send a notification to users`,category:`Integration`},{type:`connector_action`,label:`Connector`,hint:`Run an integration action`,category:`Integration`},{type:`script`,label:`Script`,hint:`Run custom code`,category:`Integration`},{type:`subflow`,label:`Subflow`,hint:`Invoke another flow`,category:`Flow`},{type:`wait`,label:`Wait`,hint:`Pause for an event or timer`,category:`Flow`},{type:`end`,label:`End`,hint:`Terminate the flow`,category:`Flow`}];function jm(e,t){let n=Am.find(t=>t.type===e),r=n?n.label:e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `);return zo(e,t,r)}function Mm(e){switch(e){case`start`:return{};case`wait`:return{waitEventConfig:{eventType:`timer`}};case`connector_action`:return{connectorConfig:{connectorId:``,actionId:``,input:{}}};case`boundary_event`:return{boundaryConfig:{attachedToNodeId:``,eventType:`error`,interrupting:!0}};case`approval`:return{config:{approvers:[{type:`manager`}],behavior:`first_response`,lockRecord:!0}};case`notify`:return{config:{channels:[`inbox`],recipients:[]}};case`http`:case`http_request`:return{config:{method:`GET`}};case`script`:return{};default:return{}}}function Nm({id:e,locale:t,type:n,label:r,summary:i,position:a,selected:o,editable:s,runState:c,dimmed:l,invalid:u,badge:d,onPointerDown:f,onSelect:p,onAppend:m,onAddReviseLoop:h,regions:g,expanded:_,onToggleExpand:v,height:y,selectedNestedNode:b,onSelectNestedNode:x}){let S=Em(n),C=!!g&&g.length>0;return(0,X.jsxs)(`div`,{className:`group absolute transition-opacity duration-200`,"data-invalid":u||void 0,"data-node-id":e,style:{left:a.x,top:a.y,width:240,height:y??66,opacity:l?.35:1},children:[(0,X.jsxs)(`div`,{role:`button`,tabIndex:0,"aria-pressed":o,onPointerDown:f,onClick:e=>{e.stopPropagation(),p?.()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),p?.())},style:{height:66},className:L(`group flex w-full items-center gap-3 rounded-xl border bg-card px-2.5 py-2 text-left shadow-sm outline-none`,`transition-[transform,box-shadow,border-color] duration-150 ease-out will-change-transform`,`hover:-translate-y-0.5 hover:shadow-lg hover:shadow-foreground/[0.06] focus-visible:ring-2 focus-visible:ring-primary/40`,s?`cursor-grab active:cursor-grabbing`:`cursor-pointer`,c===`active`?`border-sky-500 shadow-md shadow-sky-500/20 ring-2 ring-sky-400/60`:c===`visited`?`border-emerald-500/70 ring-1 ring-emerald-400/40`:o?`border-primary shadow-md ring-2 ring-primary/30`:u?`border-destructive ring-2 ring-destructive/50`:`border-border/80`),children:[(0,X.jsx)(`div`,{className:L(`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg transition-transform duration-150 group-hover:scale-105`,S.chip,c===`active`&&`animate-pulse`),children:(0,X.jsx)(Dm,{type:n,className:L(`h-[18px] w-[18px]`,S.icon)})}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`div`,{title:r,className:`truncate text-[13px] font-semibold leading-tight text-foreground`,children:r}),(0,X.jsxs)(`div`,{className:`mt-1 flex items-baseline gap-1.5 leading-tight`,children:[(0,X.jsx)(`span`,{className:L(`shrink-0 text-[10px] font-semibold uppercase tracking-[0.08em]`,S.label),children:n}),i&&(0,X.jsx)(`span`,{className:`min-w-0 truncate font-mono text-[10px] text-muted-foreground`,title:i,children:i})]})]})]}),C&&v&&(0,X.jsx)(`button`,{type:`button`,"aria-label":W(_?`engine.flowCanvas.collapseRegions`:`engine.flowCanvas.expandRegions`,t),title:W(_?`engine.flowCanvas.collapseRegions`:`engine.flowCanvas.expandRegions`,t),"aria-expanded":!!_,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),v()},className:`absolute right-1.5 top-1.5 z-20 inline-flex h-5 w-5 items-center justify-center rounded-md border bg-background/90 text-muted-foreground shadow-sm transition-colors hover:border-primary hover:text-primary`,children:(0,X.jsx)(Tn,{className:L(`h-3.5 w-3.5 transition-transform`,_&&`rotate-90`)})}),C&&_&&(0,X.jsx)(`div`,{className:`rounded-lg border bg-card shadow-sm`,style:{marginTop:6,padding:6},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,X.jsx)(Cm,{regions:g,maxWidth:_m,selected:b,onSelectNode:x,locale:t})}),d&&(0,X.jsx)(`span`,{title:d.title,"data-problem":d.level,className:L(`absolute -right-2 -top-2 z-20 inline-flex h-5 w-5 items-center justify-center rounded-full border bg-background shadow-sm`,d.level===`error`?`border-destructive/50 text-destructive`:`border-amber-500/50 text-amber-600 dark:text-amber-400`),children:d.level===`error`?(0,X.jsx)(kn,{className:`h-3 w-3`}):(0,X.jsx)(zi,{className:`h-3 w-3`})}),s&&n!==`end`&&(0,X.jsx)(`button`,{type:`button`,title:W(`engine.flowCanvas.addConnected`,t),"aria-label":W(`engine.flowCanvas.addConnected`,t),onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),m?.()},className:L(`absolute left-1/2 -bottom-3 z-10 inline-flex h-6 w-6 -translate-x-1/2 items-center justify-center rounded-full border bg-background text-muted-foreground shadow-sm transition-colors`,`opacity-0 hover:border-primary hover:text-primary group-hover:opacity-100 focus-visible:opacity-100`),children:(0,X.jsx)(H,{className:`h-3.5 w-3.5`})}),h&&(0,X.jsx)(`button`,{type:`button`,title:W(`engine.flowCanvas.addReviseLoop`,t),"aria-label":W(`engine.flowCanvas.addReviseLoopShort`,t),onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),h()},className:L(`absolute -right-3 top-1/2 z-10 inline-flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded-full border bg-background text-amber-600 shadow-sm transition-colors dark:text-amber-400`,`opacity-0 hover:border-amber-500 hover:text-amber-600 group-hover:opacity-100 focus-visible:opacity-100 dark:hover:text-amber-400`),children:(0,X.jsx)(Dr,{className:`h-3.5 w-3.5`})})]})}var Pm=`p-0 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:pb-1 [&_[cmdk-group-heading]]:pt-1 [&_[cmdk-group-heading]]:text-[10px] [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-[0.08em] [&_[cmdk-group-heading]]:text-muted-foreground [&:not(:first-child)]:mt-1 [&:not(:first-child)]:border-t [&:not(:first-child)]:border-border/60 [&:not(:first-child)]:pt-1`;function Fm({locale:e,items:t=Am,onPick:n,open:r,onOpenChange:i,children:a}){let[o,s]=Y.useState(``),{recents:c,recordRecent:l}=Es(),u=Y.useRef(null),[d,f]=Y.useState(r);r!==d&&(f(r),r||s(``));let p=o.trim().toLowerCase(),m=Y.useMemo(()=>p?t.filter(t=>t.label.toLowerCase().includes(p)||(t.hint??``).toLowerCase().includes(p)||t.type.toLowerCase().includes(p)||zo(t.type,e,t.label).toLowerCase().includes(p)||(Ro(t.type,e,t.hint)??``).toLowerCase().includes(p)):t,[t,p,e]),h=Y.useMemo(()=>{let e=new Map;for(let t of m){let n=t.category??km(t.type),r=e.get(n)??[];r.push(t),e.set(n,r)}return Om.map(t=>[t,e.get(t)??[]]).filter(([,e])=>e.length>0)},[m]),g=Y.useMemo(()=>{if(p)return[];let e=new Map(t.map(e=>[e.type,e]));return c.map(t=>e.get(t)).filter(e=>!!e)},[t,c,p]),_=e=>{l(e),n(e)},v=(t,n)=>{let r=Em(t.type),i=zo(t.type,e,t.label),a=Ro(t.type,e,t.hint);return(0,X.jsxs)(ge,{value:n?`recent:${t.type}`:t.type,onSelect:()=>_(t.type),className:`gap-2.5 rounded-lg px-2 py-1.5 [&_svg]:size-[15px]`,children:[(0,X.jsx)(`span`,{className:L(`flex h-7 w-7 shrink-0 items-center justify-center rounded-md`,r.chip),children:(0,X.jsx)(Dm,{type:t.type,className:L(`h-[15px] w-[15px]`,r.icon)})}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`div`,{className:`truncate text-[13px] font-medium`,children:i}),a&&(0,X.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:a})]})]},n?`recent:${t.type}`:t.type)};return(0,X.jsxs)(Ke,{open:r,onOpenChange:i,children:[(0,X.jsx)(Ee,{asChild:!0,children:a}),(0,X.jsx)(be,{align:`end`,sideOffset:6,className:`w-60 overflow-hidden rounded-xl border bg-popover/95 p-0 shadow-xl shadow-foreground/[0.08] ring-1 ring-black/[0.03] backdrop-blur-md`,onOpenAutoFocus:e=>{e.preventDefault(),u.current?.focus()},children:(0,X.jsxs)(dt,{shouldFilter:!1,loop:!0,className:`bg-transparent`,children:[(0,X.jsx)(Ue,{ref:u,value:o,onValueChange:s,placeholder:W(`engine.flowPalette.search`,e),className:`h-9 text-[13px]`}),(0,X.jsxs)(he,{className:`max-h-[56vh] p-1`,children:[(0,X.jsx)(fe,{className:`py-6 text-center text-xs text-muted-foreground`,children:W(`engine.flowPalette.empty`,e)}),g.length>0&&(0,X.jsx)(lt,{heading:W(`engine.flowPalette.recent`,e),className:Pm,children:g.map(e=>v(e,!0))}),h.map(([t,n])=>(0,X.jsx)(lt,{heading:W(`engine.flowPalette.category.${t.toLowerCase()}`,e),className:Pm,children:n.map(e=>v(e))},t))]})]})})]})}function Im(e,t){let n=new Map;for(let t of e)n.set(t.type,t);for(let e of t){if(!e?.type||e.deprecated||Array.isArray(e.paradigms)&&e.paradigms.length>0&&!e.paradigms.includes(`flow`))continue;let t=n.get(e.type);n.set(e.type,{type:e.type,label:e.name||t?.label||e.type,hint:e.description||t?.hint,category:t?.category??km(e.type)})}return[...n.values()]}function Lm(){let[e,t]=(0,Y.useState)([]),n=(0,Y.useRef)(!0);return(0,Y.useEffect)(()=>{n.current=!0;let e=new AbortController;return(async()=>{try{let r=await fetch(`${Bu()}/automation/actions`,{credentials:`include`,headers:{"Content-Type":`application/json`},signal:e.signal});if(!r.ok)return;let i=(await r.json())?.data?.actions;if(!Array.isArray(i)||i.length===0)return;n.current&&t(i)}catch{}})(),()=>{n.current=!1,e.abort()}},[]),e}function Rm(){let e=Lm();return(0,Y.useMemo)(()=>e.length?Im(Am,e):Am,[e])}function zm(){let e=Lm();return(0,Y.useMemo)(()=>{let t={};for(let n of e)n?.type&&n.configSchema!==void 0&&n.configSchema!==null&&(t[n.type]=n.configSchema);return t},[e])}var Bm=k.shape.dialect.value;function Vm(e,t){if(typeof e!=`string`||t.length!==2||t[0]!==`config`)return!1;let n=`${t[1]}.*`;return ae.some(t=>t.nodeType===e&&t.role===`value`&&t.path===n)}function Hm(e){return m(e)&&e.dialect===Bm&&typeof e.source==`string`}function Um(e,t){if(Hm(e)){if(e.source===t)return e;let n={...e,source:t};return delete n.ast,n}return{dialect:Bm,source:t}}function Wm(e){let t=E.safeParse(e);return t.success?null:t.error.issues.map(e=>e.message)}function Gm(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t of e.slice(0,-1)){let e=i[t],n=typeof e==`object`&&e?Object.assign(Array.isArray(e)?[]:{},e):{};i[t]=n,i=n}i[e[e.length-1]]=r}return{extra:{...t,vars:t},record:t}}function Km(e,t,n){let r=Wm(e);if(r)return{ok:!1,error:r.join(` `)};let{dialect:i,source:a}=e;try{let e=oe(`value`,{dialect:i,source:a});if(e.errors.length>0)return{ok:!1,error:e.errors.map(e=>`${te} ${e.message}`).join(` `)};let r=ne.evaluate({dialect:i,source:a},Gm(t));return r.ok?{ok:!0,value:r.value}:{ok:!1,error:U(`engine.flowSim.note.celEvaluationFailed`,n,{message:r.error.message})}}catch(e){return{ok:!1,error:e.message||W(`engine.flowSim.note.evaluationFailed`,n)}}}function qm(e,t,n){try{if(e===void 0)return{kind:`absent`};let r=N(e);if(r)return{kind:`fault`,error:r.message};if(typeof e==`string`){if(!e.trim())return{kind:`fault`,error:v}}else{let t=y.safeParse(e);if(!t.success)return{kind:`fault`,error:t.error.issues.map(e=>e.path.length?`${e.path.join(`.`)}: ${e.message}`:e.message).join(` `)}}let i=e;return Jm(i,Fo(i)??``,t,n)}catch(e){return{kind:`fault`,error:e.message||W(`engine.flowSim.note.evaluationFailed`,n)}}}function Jm(e,t,n,r){try{let i=oe(`predicate`,e);if(i.errors.length>0)return{kind:`fault`,error:i.errors.map(e=>e.message).join(` `)};let a=ne.evaluate({dialect:`cel`,source:t},Gm(n));return a.ok?{kind:`value`,result:!!a.value}:{kind:`fault`,error:U(`engine.flowSim.note.celConditionFailed`,r,{message:a.error.message})}}catch(e){return{kind:`fault`,error:e.message||W(`engine.flowSim.note.evaluationFailed`,r)}}}function Ym(e,t,n){let r=x(e);if(r)return{kind:`fault`,error:r.message};let i=e;return i.trim()?Jm(i,i,t,n):{kind:`value`,result:!1}}function Xm(e,t){let n=new Map;for(let t of e)n.set(t,[]);for(let e of t)n.has(e.source)&&n.has(e.target)&&n.get(e.source).push(e.target);let r=new Map(e.map(e=>[e,0])),i=[],a=e=>{let t=[{id:e,i:0}];for(r.set(e,1),i.push(e);t.length;){let e=t[t.length-1],a=n.get(e.id)??[];if(e.i<a.length){let n=a[e.i++],o=r.get(n);if(o===1){let e=i.indexOf(n);return[...i.slice(e),n]}o===0&&(r.set(n,1),i.push(n),t.push({id:n,i:0}))}else r.set(e.id,2),i.pop(),t.pop()}return null};for(let t of e)if(r.get(t)===0){let e=a(t);if(e)return e}return null}function Zm(e,t,n){let r=[],i=[],a=e.map(e=>e.id),o=new Set;for(let e of a){if(!e){r.push({level:`error`,message:W(`engine.flowValidate.nodeMissingId`,n)});continue}o.has(e)&&r.push({level:`error`,nodeId:e,message:U(`engine.flowValidate.duplicateNodeId`,n,{id:e})}),o.add(e)}for(let e of t)o.has(e.source)||r.push({level:`error`,edge:{source:e.source,target:e.target},message:U(`engine.flowValidate.edgeSourceMissing`,n,{source:e.source})}),o.has(e.target)||r.push({level:`error`,edge:{source:e.source,target:e.target},message:U(`engine.flowValidate.edgeTargetMissing`,n,{target:e.target})});let s=new Set(t.map(e=>e.target)),c=e.filter(e=>e.type===`start`),l=e.filter(e=>!s.has(e.id)),u;c.length===1?(u=c[0].id,s.has(u)&&i.push({level:`warning`,nodeId:u,message:W(`engine.flowValidate.startHasIncoming`,n)})):c.length>1?r.push({level:`error`,message:U(`engine.flowValidate.multipleStart`,n,{count:c.length})}):l.length===1?(u=l[0].id,i.push({level:`warning`,nodeId:u,message:W(`engine.flowValidate.noStartUsingRoot`,n)})):l.length===0?r.push({level:`error`,message:W(`engine.flowValidate.noEntry`,n)}):r.push({level:`error`,message:U(`engine.flowValidate.ambiguousEntry`,n,{count:l.length})});for(let a of e){if(a.type!==`decision`)continue;let e=t.filter(e=>e.source===a.id),o=e.filter(e=>e.isDefault);o.length>1&&r.push({level:`error`,nodeId:a.id,message:U(`engine.flowValidate.decisionMultipleDefaults`,n,{id:a.id,count:o.length})}),e.length===0?i.push({level:`warning`,nodeId:a.id,message:U(`engine.flowValidate.decisionNoBranches`,n,{id:a.id})}):o.length===0&&e.every(e=>Fo(e.condition))&&i.push({level:`warning`,nodeId:a.id,message:U(`engine.flowValidate.decisionNoDefault`,n,{id:a.id})})}if(u){let r=new Set([u]),a=[u];for(;a.length;){let e=a.shift();for(let n of t)n.source===e&&o.has(n.target)&&!r.has(n.target)&&(r.add(n.target),a.push(n.target))}for(let t of e)r.has(t.id)||i.push({level:`warning`,nodeId:t.id,message:U(`engine.flowValidate.nodeUnreachable`,n,{id:t.id})})}let d=t.filter(e=>e.type!==`back`),f=Xm(a.filter(e=>!!e),d);return f&&r.push({level:`error`,nodeId:f[0],cycle:f,message:U(`engine.flowValidate.cycleDetected`,n,{cycle:f.join(` → `)})}),{errors:r,warnings:i,startNodeId:u}}function $(e,t,n,r={}){return{id:e,path:[`config`,e],label:t,kind:n,...r}}function Qm(e,t,n,r,i={}){return{id:`${e}.${t}`,path:[e,t],label:n,kind:r,...i}}var $m=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`].map(e=>({value:e,label:e})),eh={start:[$(`triggerType`,`Trigger`,`select`,{help:`When this flow starts. Record triggers fire on data changes; schedule triggers fire on a cron.`,options:[{value:`record-after-create`,label:`Record created`},{value:`record-after-update`,label:`Record updated`},{value:`record-after-write`,label:`Record created or updated`},{value:`record-before-update`,label:`Record before update`},{value:`record-after-delete`,label:`Record deleted`},{value:`schedule`,label:`Schedule (cron)`},{value:`time_relative`,label:`Time-relative (date sweep)`},{value:`manual`,label:`Manual / autolaunched`},{value:`webhook`,label:`Webhook / API`},{value:`event`,label:`Platform event`}]}),$(`objectName`,`Object`,`reference`,{ref:{kind:`object`},placeholder:`crm_lead`,help:`Target object for record / scheduled-scan triggers.`,showWhen:{field:`triggerType`,equals:[`record-after-create`,`record-after-update`,`record-after-write`,`record-before-update`,`record-after-delete`,`schedule`,`webhook`,`event`]}}),$(`condition`,`Entry condition`,`expression`,{conditionBuilder:!0,placeholder:`status == "qualifying" && previous.status != "qualifying"`,help:'CEL predicate — the flow runs only when this is true (for time-relative sweeps it gates each matched record). Leave empty to run on every event. On a "created or updated" trigger, `previous == null` selects the create path.',showWhen:{field:`triggerType`,equals:[`record-after-create`,`record-after-update`,`record-after-write`,`record-before-update`,`record-after-delete`,`schedule`,`time_relative`,`webhook`,`event`]}}),{id:`schedule.expression`,path:[`config`,`schedule`,`expression`],fallbackPath:[`config`,`cron`],label:`Cron schedule`,kind:`text`,placeholder:`0 7 * * *`,help:`Cron expression — when the flow runs. A time-relative sweep defaults to daily if left empty.`,showWhen:{field:`triggerType`,equals:[`schedule`,`time_relative`]}},{id:`timeRelative.object`,path:[`config`,`timeRelative`,`object`],label:`Sweep object`,kind:`reference`,ref:{kind:`object`},placeholder:`contracts`,help:`Object whose records are swept each run.`,showWhen:{field:`triggerType`,equals:[`time_relative`]}},{id:`timeRelative.dateField`,path:[`config`,`timeRelative`,`dateField`],label:`Date field`,kind:`text`,placeholder:`end_date`,help:`The date / datetime field compared against today.`,showWhen:{field:`triggerType`,equals:[`time_relative`]}},{id:`timeRelative.withinDays`,path:[`config`,`timeRelative`,`withinDays`],label:`Within days`,kind:`number`,placeholder:`30`,help:`Range mode: fire while the date is within N days of today (negative = overdue lookback). Leave empty if using Offset days.`,showWhen:{field:`triggerType`,equals:[`time_relative`]}},{id:`timeRelative.offsetDays`,path:[`config`,`timeRelative`,`offsetDays`],label:`Offset days`,kind:`numberList`,placeholder:`60`,help:`Offset mode: fire when the date is exactly today + each offset (e.g. 60, 30, 7). Leave empty if using Within days.`,showWhen:{field:`triggerType`,equals:[`time_relative`]}},{id:`timeRelative.filter`,path:[`config`,`timeRelative`,`filter`],label:`Extra filter`,kind:`keyValue`,help:`Optional filter ANDed with the date window (e.g. status = active).`,showWhen:{field:`triggerType`,equals:[`time_relative`]}},{id:`timeRelative.maxRecords`,path:[`config`,`timeRelative`,`maxRecords`],label:`Max records / run`,kind:`number`,placeholder:`1000`,help:`Cap on records launched per sweep (default 1000).`,showWhen:{field:`triggerType`,equals:[`time_relative`]}},$(`criteria`,`Entry condition (legacy)`,`expression`,{placeholder:`status == "active"`,help:`Legacy key — prefer "Entry condition" (condition).`,showWhen:{field:`__legacy__`,equals:[]}})],end:[$(`outcome`,`Outcome`,`select`,{options:[{value:`completed`,label:`Completed`},{value:`refused`,label:`Refused`}],defaultValue:`completed`,help:`How the run ends here. "Completed" is the ordinary terminal and is what an omitted key applies. "Refused" records a first-class refusal — a successful evaluation that says no — and requires a message saying why (a {token} template), authored in the field below.`}),$(`message`,`Why the run was refused`,`textarea`,{placeholder:`Refused: {record.name} is a confirmed duplicate`,help:`Required when the outcome is "Refused", and refused on a completed end — a completion renders nothing, so the key would be a silent no-op. A {token} template interpolated at run time (e.g. {record.name}), exactly like a screen Description.`,showWhen:{field:`outcome`,equals:[`refused`]}})],decision:[$(`conditions`,`Branches`,`objectList`,{help:`Each branch has a label, a CEL expression (no {braces}), and a target node. Branches are tried in order and the first match wins. A branch whose expression is "true" is the catch-all: picking its target marks that out-edge as the default path, taken only when no other branch matched. Picking a target wires the branch’s outgoing edge (creating or updating it); clearing it detaches that edge.`,columns:[{key:`label`,label:`Label`,kind:`text`,placeholder:`Has deals`},{key:`expression`,label:`Expression`,kind:`expression`,placeholder:`expiring_deals.length > 0`},{key:`target`,label:`Target`,kind:`reference`,placeholder:`next node`,ref:{kind:`node`}}]}),$(`condition`,`Condition (single)`,`expression`,{placeholder:`amount > 10000`,help:"Inert — nothing reads this. The engine only honours `condition` on a Start node (the trigger gate); on a Decision it gates nothing. Shown so a stored value is not invisible. Move the predicate to a branch above, or to the outgoing edge’s own condition, then clear this.",showWhen:{field:`__legacy__`,equals:[]}})],assignment:[$(`assignments`,`Assignments`,`keyValue`,{help:`Set variables: each key is a variable, each value an expression or literal.`})],loop:[$(`collection`,`Collection`,`expression`,{placeholder:`{leadList}`,refMode:`template`,help:`Expression resolving to the items to iterate.`}),$(`iteratorVariable`,`Item variable`,`text`,{placeholder:`item`})],map:[$(`collection`,`Collection`,`expression`,{placeholder:`{items}`,refMode:`template`,help:`Expression resolving to the array to process, one item at a time.`}),$(`flowName`,`Per-item flow`,`reference`,{ref:{kind:`flow`},placeholder:`one_task_signoff`,help:`Subflow run for each item — it may pause (e.g. an approval).`}),$(`iteratorVariable`,`Item variable`,`text`,{placeholder:`item`}),$(`itemObject`,`Item object`,`reference`,{ref:{kind:`object`},placeholder:`showcase_task`,help:`When items are records, the object they belong to (exposes each item as the child’s record).`}),$(`outputVariable`,`Output variable`,`text`,{placeholder:`results`,help:`Each item’s subflow output, collected in order.`})],create_record:[$(`objectName`,`Object`,`reference`,{ref:{kind:`object`},placeholder:`contract`}),$(`fields`,`Field values`,`keyValue`,{help:`Field values to write on the new record.`}),$(`outputVariable`,`Output variable`,`text`,{placeholder:`newRecord`})],update_record:[$(`objectName`,`Object`,`reference`,{ref:{kind:`object`},placeholder:`contract`}),$(`filter`,`Filter`,`keyValue`,{help:`Field/value pairs identifying the record(s) to update (e.g. id → {recordId}).`}),$(`fields`,`Field values`,`keyValue`,{help:`Field values to write.`})],delete_record:[$(`objectName`,`Object`,`reference`,{ref:{kind:`object`},placeholder:`contract`}),$(`filter`,`Filter`,`keyValue`,{help:`Field/value pairs identifying the record(s) to delete.`})],get_record:[$(`objectName`,`Object`,`reference`,{ref:{kind:`object`},placeholder:`contract`}),$(`filter`,`Filter`,`keyValue`,{help:`Field/value pairs to match (e.g. status → active). Operator values like {"$ne": null} are preserved.`}),$(`limit`,`Limit`,`number`,{placeholder:`100`}),$(`outputVariable`,`Output variable`,`text`,{placeholder:`records`})],http_request:[$(`method`,`Method`,`select`,{options:$m}),$(`url`,`URL`,`text`,{placeholder:`https://api.example.com/v1/contracts`}),$(`headers`,`Headers`,`keyValue`,{help:`Request headers (e.g. Authorization, Content-Type).`}),$(`body`,`Body`,`textarea`,{placeholder:`{ "key": "value" }`,help:`Request payload (JSON or expression).`}),$(`outputVariable`,`Output variable`,`text`,{placeholder:`response`}),{id:`timeoutMs`,path:[`timeoutMs`],label:`Timeout (ms)`,kind:`number`,placeholder:`30000`}],script:[$(`function`,`Function`,`text`,{placeholder:`score_lead`,help:`Registered function to call — declared via defineStack({ functions }). Required: it is what this step runs.`}),$(`inputs`,`Inputs`,`keyValue`,{help:`Values passed to the function; {var} references resolve against the live flow variables.`}),$(`outputVariable`,`Output variable`,`text`,{placeholder:`aiResult`,help:`Flow variable the function's return value is bound to, for later steps.`}),$(`actionType`,`Action type (retired)`,`text`,{help:`Retired in spec 17 — "email"/"slack" never delivered anything, and any other value was just the function name. Use a notify node for messages, a Slack connector for Slack, or move the name into Function.`,showWhen:{field:`__legacy__`,equals:[]}}),$(`template`,`Template (retired)`,`text`,{help:`Retired in spec 17 — it fed a side effect that never rendered or sent a message. A notify node carries its own title/message.`,showWhen:{field:`__legacy__`,equals:[]}}),$(`recipients`,`Recipients (retired)`,`stringList`,{help:`Retired in spec 17 — these addresses were logged, never messaged. Use a notify node, whose recipients reach the messaging service.`,showWhen:{field:`__legacy__`,equals:[]}}),$(`variables`,`Template variables (retired)`,`keyValue`,{help:`Retired in spec 17 — injected into a template nothing rendered. A notify node carries structured data in payload.`,showWhen:{field:`__legacy__`,equals:[]}}),$(`script`,`Code (not executed, retired)`,`textarea`,{placeholder:`return { ok: true };`,help:`Retired in spec 17 — inline scripts were NEVER executed by the built-in runtime (no server-side sandbox). Move the logic into a registered function and name it in Function.`,refMode:`expression`,showWhen:{field:`__legacy__`,equals:[]}}),{id:`timeoutMs`,path:[`timeoutMs`],label:`Timeout (ms)`,kind:`number`,placeholder:`30000`}],screen:[$(`title`,`Title`,`text`,{placeholder:`Request a discount`,help:`Heading shown above the screen.`}),$(`description`,`Description`,`textarea`,{placeholder:`Enter the deal amount and the discount you want.`,help:`Body text. Interpolates {var} references (e.g. {approval_path}).`}),$(`fields`,`Fields`,`objectList`,{help:`Input fields collected on this screen. Leave empty for a message-only screen.`,columns:[{key:`name`,label:`Name`,kind:`text`,placeholder:`discount`},{key:`label`,label:`Label`,kind:`text`,placeholder:`Discount %`},{key:`type`,label:`Type`,kind:`text`,placeholder:`number`},{key:`required`,label:`Required`,kind:`boolean`},{key:`visibleWhen`,label:`Visible when`,kind:`expression`,placeholder:`createOpportunity == true`}]}),$(`waitForInput`,`Wait for input`,`boolean`,{help:`Pause to show this screen even with no fields (a message / confirmation). A field-less screen with this off is a server pass-through.`}),$(`objectName`,`Object form`,`reference`,{ref:{kind:`object`},placeholder:`crm_account`,help:`Render this object’s full create/edit form (incl. master-detail) instead of a flat field list.`}),$(`idVariable`,`Saved-record variable`,`text`,{placeholder:`account_id`,help:`Object form only: variable bound to the saved record’s id, for later steps.`}),$(`mode`,`Form mode`,`select`,{options:[{value:`create`,label:`Create`},{value:`edit`,label:`Edit`}],help:`Object form only.`}),$(`defaults`,`Form defaults`,`keyValue`,{help:`Object form only: prefilled values (e.g. account → {account_id}).`})],approval:[$(`approvers`,`Approvers`,`objectList`,{help:`Who may act on this step. Wire the node’s out-edges with labels "approve" and "reject".`,columns:[{key:`type`,label:`Type`,kind:`select`,options:[{value:`manager`,label:`Manager`},{value:`position`,label:`Position`},{value:`department`,label:`Department`},{value:`team`,label:`Team`},{value:`field`,label:`Field`},{value:`expression`,label:`Expression (CEL)`},{value:`org_membership_level`,label:`Organization membership tier`},{value:`user`,label:`User`}]},{key:`value`,label:`Value`,kind:`reference`,placeholder:"User id / membership tier / position / team / department / field — per `type`",ref:{kindFrom:`type`,objectSource:`$trigger`,map:{user:`user`,position:`position`,org_membership_level:`org-membership-level`,role:`org-membership-level`,team:`team`,department:`department`,manager:`manager`,field:`object-field`,queue:`queue`}}},{key:`resolveAs`,label:`Resolve as`,kind:`select`,options:[{value:`user`,label:`User ids (default)`},{value:`department`,label:`Department ids → members`},{value:`position`,label:`Position names → holders`},{value:`team`,label:`Team ids → members`}]},{key:`group`,label:`Group`,kind:`text`,placeholder:`legal / finance — for per-group sign-off`}]}),$(`behavior`,`Behavior`,`select`,{options:[{value:`first_response`,label:`First response wins`},{value:`unanimous`,label:`Unanimous (all approve)`},{value:`quorum`,label:`Quorum (M of N approve)`},{value:`per_group`,label:`Per group (each group signs off)`}],defaultValue:`first_response`,help:`How multiple approvers combine. Any rejection is a veto in every mode.`}),$(`minApprovals`,`Min approvals`,`number`,{placeholder:`1`,help:`Approvals required — total for quorum, per group for per_group. Clamped server-side so it can never deadlock.`}),$(`lockRecord`,`Lock record`,`boolean`,{defaultValue:`true`,help:`Lock the triggering record from edits while this node is pending.`}),$(`approvalStatusField`,`Status field`,`reference`,{ref:{kind:`object-field`,objectSource:`$trigger`},placeholder:`approval_status`,help:`Business-object field to mirror request status onto (pending/approved/rejected). Should be readonly.`}),$(`onEmptyApprovers`,`If no approver resolves`,`select`,{options:[{value:`admin_rescue`,label:`Hold for admin takeover (default)`},{value:`fail`,label:`Fail the node (config bug)`},{value:`auto_approve`,label:`Auto-approve (waves through!)`}],defaultValue:`admin_rescue`,help:`What an empty resolved approver slate does at node entry. Auto-approve silently waves the record through — opt in deliberately.`}),{id:`escalation.enabled`,path:[`config`,`escalation`,`enabled`],label:`SLA escalation`,kind:`boolean`,defaultValue:`true`,help:`Escalate when a decision is not recorded within the timeout.`},{id:`escalation.timeoutHours`,path:[`config`,`escalation`,`timeoutHours`],label:`Timeout (hours)`,kind:`number`,placeholder:`24`,showWhen:{field:`escalation.enabled`,equals:[`true`]}},{id:`escalation.action`,path:[`config`,`escalation`,`action`],label:`On timeout`,kind:`select`,defaultValue:`notify`,options:[{value:`notify`,label:`Notify`},{value:`reassign`,label:`Reassign`},{value:`auto_approve`,label:`Auto-approve`},{value:`auto_reject`,label:`Auto-reject`}],showWhen:{field:`escalation.enabled`,equals:[`true`]}},{id:`escalation.escalateTo`,path:[`config`,`escalation`,`escalateTo`],label:`Escalate to`,kind:`reference`,ref:{kind:`position`},placeholder:`position machine name / user id`,showWhen:{field:`escalation.enabled`,equals:[`true`]}},{id:`escalation.notifySubmitter`,path:[`config`,`escalation`,`notifySubmitter`],label:`Notify submitter`,kind:`boolean`,defaultValue:`true`,showWhen:{field:`escalation.enabled`,equals:[`true`]}},$(`maxRevisions`,`Max revisions`,`number`,{placeholder:`3`,defaultValue:`3`,help:`Max send-backs for revision before the request auto-rejects (0 disables send-back). Needs a "revise" out-edge to take effect.`})],wait:[Qm(`waitEventConfig`,`eventType`,`Wait for`,`select`,{options:[{value:`timer`,label:`Timer`},{value:`signal`,label:`Signal`},{value:`webhook`,label:`Webhook`},{value:`manual`,label:`Manual`},{value:`condition`,label:`Condition`}],fallbackPath:[`config`,`eventType`]}),Qm(`waitEventConfig`,`timerDuration`,`Duration`,`text`,{placeholder:`PT1H · P3D`,help:`ISO 8601 duration (e.g. PT1H, P3D).`,showWhen:{field:`waitEventConfig.eventType`,equals:[`timer`]},fallbackPath:[`config`,`timerDuration`]}),Qm(`waitEventConfig`,`signalName`,`Signal name`,`text`,{placeholder:`contract.renewed`,showWhen:{field:`waitEventConfig.eventType`,equals:[`signal`,`webhook`]},fallbackPath:[`config`,`signalName`]})],subflow:[$(`flowName`,`Flow`,`reference`,{ref:{kind:`flow`},placeholder:`escalation_flow`}),$(`input`,`Input mapping`,`keyValue`,{help:`Values passed to the subflow’s input variables.`}),$(`outputVariable`,`Output variable`,`text`,{placeholder:`subResult`}),{id:`timeoutMs`,path:[`timeoutMs`],label:`Timeout (ms)`,kind:`number`,placeholder:`60000`}],notify:[$(`recipients`,`Recipients`,`stringList`,{help:`User id(s) / audience selector(s) to notify. At least one is required.`}),$(`title`,`Title`,`text`,{placeholder:`Your request was approved`,help:`Notification title (required).`}),$(`message`,`Message`,`textarea`,{placeholder:`Supports {var} template references.`,help:`Notification body.`}),$(`channels`,`Channels`,`stringList`,{help:`Channels to fan out to (default: inbox — e.g. inbox · email · push).`}),$(`topic`,`Topic`,`text`,{placeholder:`notify`,help:`Event topic (default: "notify").`}),$(`severity`,`Severity`,`select`,{options:[{value:`info`,label:`Info`},{value:`warning`,label:`Warning`},{value:`critical`,label:`Critical`}],help:`Notification severity.`}),$(`sourceObject`,`Link object`,`text`,{placeholder:`sys_approval_request`,help:`Object of the record the notification links to (requires Link record id).`}),$(`sourceId`,`Link record id`,`text`,{help:`Record id the notification links to (requires Link object).`}),$(`url`,`Click-through URL`,`text`,{help:`Explicit link; overrides the one synthesized from Link object/record.`})],connector_action:[Qm(`connectorConfig`,`connectorId`,`Connector`,`reference`,{ref:{kind:`connector`},placeholder:`slack · email · salesforce`}),Qm(`connectorConfig`,`actionId`,`Action`,`reference`,{ref:{kind:`connector-action`,connectorSource:`connectorId`},placeholder:`sendMessage · send`}),Qm(`connectorConfig`,`input`,`Input`,`keyValue`,{help:`Mapped inputs for the connector action.`}),{id:`timeoutMs`,path:[`timeoutMs`],label:`Timeout (ms)`,kind:`number`,placeholder:`30000`}],parallel:[],try_catch:[$(`errorVariable`,`Error variable`,`text`,{placeholder:`$error`,help:`Variable the caught error is bound to inside the catch region.`})],parallel_gateway:[],join_gateway:[],boundary_event:[Qm(`boundaryConfig`,`attachedToNodeId`,`Attached to`,`reference`,{ref:{kind:`node`},placeholder:`host node id`,help:`Host node this boundary event monitors.`}),Qm(`boundaryConfig`,`eventType`,`Event type`,`select`,{options:[{value:`error`,label:`Error`},{value:`timer`,label:`Timer`},{value:`signal`,label:`Signal`},{value:`cancel`,label:`Cancel`}]}),Qm(`boundaryConfig`,`interrupting`,`Interrupting`,`boolean`,{defaultValue:`true`,help:`Cancel the host activity when this event fires.`}),Qm(`boundaryConfig`,`errorCode`,`Error code`,`text`,{placeholder:`TIMEOUT (empty = all)`,showWhen:{field:`boundaryConfig.eventType`,equals:[`error`]}}),Qm(`boundaryConfig`,`timerDuration`,`Duration`,`text`,{placeholder:`PT1H`,showWhen:{field:`boundaryConfig.eventType`,equals:[`timer`]}}),Qm(`boundaryConfig`,`signalName`,`Signal name`,`text`,{placeholder:`contract.cancelled`,showWhen:{field:`boundaryConfig.eventType`,equals:[`signal`]}})],legacy_action:[$(`action`,`Action`,`text`,{placeholder:`sendEmail · createTask · update · query`}),$(`objectName`,`Object`,`reference`,{ref:{kind:`object`},placeholder:`contract`}),$(`recordId`,`Record`,`expression`,{placeholder:`record.id`}),$(`params`,`Parameters`,`keyValue`,{help:`Action inputs. Values auto-typed: 3 → number, true → boolean.`}),$(`fields`,`Field values`,`keyValue`),$(`outputVariable`,`Output variable`,`text`,{placeholder:`result`})]},th={action:`legacy_action`,http:`http_request`,branch:`decision`,gateway:`decision`,condition:`decision`,timer:`wait`,delay:`wait`,flow:`subflow`,invoke:`subflow`,task:`legacy_action`,user_task:`screen`,service_task:`connector_action`,script_task:`script`,notification:`connector_action`,signal:`boundary_event`,webhook:`connector_action`,for_each:`loop`};function nh(e){return e?eh[th[e]??e]??[]:[]}function rh(e){return e.path[0]===`config`}function ih(e,t){let n=nh(t);if(!e)return n;let r=e.filter(rh),i=n.filter(e=>!rh(e)),a=new Set(i.map(e=>e.path[e.path.length-1]));return[...r.filter(e=>!a.has(e.path[e.path.length-1])),...i]}function ah(e,t){if(!t)return e;let n={...e};return t.label&&(n.label=t.label),e.options&&t.opts&&(n.options=e.options.map(e=>({...e,label:t.opts[e.value]??e.label}))),n}function oh(e,t,n){let r=Ho(e,n.id)??Ho(t,n.id);if(!r)return n;let i={...n};return r.label&&(i.label=r.label),r.help&&(i.help=r.help),n.options&&r.opts&&(i.options=n.options.map(e=>({...e,label:r.opts[e.value]??e.label}))),n.columns&&r.cols&&(i.columns=n.columns.map(e=>ah(e,r.cols[e.key]))),i}function sh(e,t,n){if(!e||!Vo(n))return t;let r=th[e]??e;return t.map(t=>oh(e,r,t))}function ch(e,t){let n=t=>{let n=e;for(let e of t)if(n&&typeof n==`object`&&!Array.isArray(n))n=n[e];else return;return n},r=n(t.path);return r===void 0?t.fallbackPath?n(t.fallbackPath):void 0:r}function lh(e){return e.path.length>=2&&e.path[0]===`config`?e.path[1]:void 0}function uh(e,t,n){return!e.showWhen||fh(e,t)?!0:ph(e,t,n)}function dh(e){return e==null||e===``}function fh(e,t){return!dh(ch(t,e))}function ph(e,t,n){if(!e.showWhen)return!0;let r=n.find(t=>t.id===e.showWhen.field);if(!r)return!1;let i=ch(t,r),a=dh(i)?r.defaultValue:i,o=typeof a==`boolean`?String(a):a;return typeof o==`string`&&e.showWhen.equals.includes(o)}function mh(e,t,n){return!e.showWhen||!fh(e,t)||ph(e,t,n)?null:n.some(t=>t.id===e.showWhen.field)?`controller-off`:`no-controller`}var hh=[`start`,`create_record`,`update_record`,`delete_record`,`get_record`,`decision`,`assignment`,`loop`,`http_request`,`script`,`screen`,`approval`,`wait`,`subflow`,`map`,`connector_action`,`parallel`,`try_catch`,`end`],gh=new Set([`record-after-create`,`record-after-update`,`record-after-write`,`record-before-write`,`record-before-update`,`record-after-delete`]),_h=new Set([`record-after-update`,`record-before-update`,`record-after-write`,`record-before-write`]);function vh(e){return Array.isArray(e)?e:[]}function yh(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function bh(e){return typeof e==`string`&&e?e:void 0}function xh(e,t){let n=new Map;for(let e of t){let t=bh(e.source),r=bh(e.target);if(!t||!r)continue;let i=n.get(r);i?i.push(t):n.set(r,[t])}let r=new Set,i=[...n.get(e)??[]];for(;i.length;){let t=i.pop();if(!(t===e||r.has(t))){r.add(t);for(let e of n.get(t)??[])i.push(e)}}return r}function Sh(e){let t=bh(e.type),n=yh(e.config),r=bh(e.id)??``,i=bh(e.label),a=i&&i!==r?i:r||void 0,o=[],s=(e,t=`outputs`)=>{e&&!o.some(t=>t.token===e)&&o.push({token:e,label:e,detail:a,group:t})};if((t===`loop`||t===`map`)&&s(bh(n.iteratorVariable),`loop`),s(bh(n.outputVariable)),s(bh(n.idVariable)),t===`assignment`){let e=n.assignments;if(Array.isArray(e))for(let t of e){let e=yh(t);s(bh(e.variable)??bh(e.name)??bh(e.key))}else if(e&&typeof e==`object`)for(let t of Object.keys(e))s(t)}if(t===`screen`||t===`user_task`)for(let e of vh(n.fields))s(bh(yh(e).name));if(t===`approval`&&r){s(`${r}.decision`);for(let e of vh(n.decisionOutputs)){let t=typeof e==`string`?e:bh(yh(e).key);t&&s(`${r}.${t}`)}}return o}function Ch(e){let t=new Set;return e.filter(e=>!t.has(e.token)&&(t.add(e.token),!0))}function wh(e,t,n){let r=vh(e.nodes).map(yh),i=vh(e.edges),a=[];for(let t of vh(e.variables)){let e=yh(t),r=bh(e.name);if(!r)continue;let i=bh(e.type);a.push({token:r,label:r,detail:i?U(`engine.flowScope.detail.variableTyped`,n,{type:i}):W(`engine.flowScope.detail.variable`,n),group:`variables`})}if(!t)return{refs:Ch(a)};let o=xh(t,i),s=r.find(e=>bh(e.type)===`start`),c=bh(s?.id);for(let e of r){let n=bh(e.id);if(n&&n!==t&&o.has(n)&&n!==c)for(let t of Sh(e))a.push(t)}if(s){let e=yh(s.config),r=bh(e.triggerType),i=bh(e.objectName),l=!!r&&gh.has(r),u=c===t||!!c&&o.has(c);if(l&&i&&u){let e=c===t,o=_h.has(r);return e||a.push({token:`record`,label:`record`,detail:U(`engine.flowScope.detail.triggerRecord`,n,{object:i}),group:`trigger`}),o&&a.push({token:`previous`,label:`previous`,detail:W(`engine.flowScope.detail.previousRecord`,n),group:`trigger`}),{refs:Ch(a),trigger:{objectName:i,fieldPrefix:e?``:`record.`,includePrevious:o}}}}return{refs:Ch(a)}}function Th(e,t,n){let r=[];for(let i of t){if(!i?.name)continue;let t=`${e.fieldPrefix}${i.name}`,a=i.label&&i.label!==i.name?i.label:i.type;r.push({token:t,label:t,detail:a,group:`trigger`}),e.includePrevious&&r.push({token:`previous.${i.name}`,label:`previous.${i.name}`,detail:a?U(`engine.flowScope.detail.priorOf`,n,{detail:a}):W(`engine.flowScope.detail.priorValue`,n),group:`trigger`})}return r}var Eh=new Set([`true`,`false`,`null`,`in`]),Dh=new Set([`env`,`request`,`context`,`user`,`now`,`today`,`self`,`data`]);function Oh(e){let t=new Set;for(let n of e){let e=n.token.split(`.`)[0];e&&t.add(e)}return t}function kh(e,t,n=2){if(Math.abs(e.length-t.length)>n)return n+1;let r=Array(t.length+1);for(let e=0;e<=t.length;e++)r[e]=e;for(let i=1;i<=e.length;i++){let a=r[0];r[0]=i;let o=r[0];for(let n=1;n<=t.length;n++){let s=r[n];r[n]=Math.min(r[n]+1,r[n-1]+1,a+(e[i-1]===t[n-1]?0:1)),a=s,r[n]<o&&(o=r[n])}if(o>n)return n+1}return r[t.length]}var Ah=new Set([`map`,`filter`,`exists`,`all`,`exists_one`]);function jh(e){let t=[],n=/\.\s*([A-Za-z_]\w*)\s*\(\s*([A-Za-z_]\w*)\s*,/g,r;for(;r=n.exec(e);){if(!Ah.has(r[1]))continue;let n=e.indexOf(`(`,r.index),i=e.length,a=0;for(let t=n;t<e.length;t++)if(e[t]===`(`)a++;else if(e[t]===`)`&&--a===0){i=t;break}t.push({name:r[2],open:n,close:i})}return t}function Mh(e){let t=e.replace(/'(?:[^'\\]|\\.)*'/g,` `).replace(/"(?:[^"\\]|\\.)*"/g,` `),n=jh(t),r=[],i=/(?<![.\w$])([A-Za-z_$][\w$]*)/g,a;for(;a=i.exec(t);){let e=a[1],i=a.index;/^\s*\(/.test(t.slice(i+e.length))||Eh.has(e)||n.some(t=>t.name===e&&i>t.open&&i<t.close)||r.push(e)}return r}function Nh(e,t,n){let r=``;if(typeof e==`string`?r=e:e&&typeof e==`object`&&(r=String(e.source??``)),!r.trim()||n.size===0)return[];let i=r;if(t===`template`){let e=r.match(/\{([^{}]+)\}/g);if(!e)return[];i=e.map(e=>e.slice(1,-1)).join(` ; `)}let a=new Set,o=[];for(let e of Mh(i)){if(a.has(e)||(a.add(e),n.has(e)||Dh.has(e)||e.startsWith(`$`)))continue;let t,r=3;for(let i of n){let n=kh(e,i,2);n<r&&(r=n,t=i)}o.push({token:e,suggestion:r<=2?t:void 0})}return o}function Ph(e,t){if(e.length===1){let n=e[0];return n.suggestion?U(`engine.flowRef.unknownWithSuggestion`,t,{token:n.token,suggestion:n.suggestion}):U(`engine.flowRef.notInScope`,t,{token:n.token})}return U(`engine.flowRef.notInScopeMulti`,t,{tokens:e.map(e=>`\`${e.token}\``).join(`, `)})}var Fh=/(?:^|[^{])\{\s*([A-Za-z_$][\w.$]*)\s*\}(?!\})/;function Ih(e,t,n){let r=0;for(let i of e)if(i===t)r++;else if(i===n&&(r--,r<0))return!1;return r===0}function Lh(e,t,n){let r=``,i;if(typeof t==`string`)r=t;else if(t&&typeof t==`object`){let e=t;i=e.dialect,r=e.source??``}if(!r.trim())return null;if(e===`template`){if(i&&i!==`template`)return{message:U(`engine.flowExpr.templateDialect`,n,{dialect:i})};Ih(r.replace(/\{\{/g,``).replace(/\}\}/g,``),`{`,`}`);let e=Fh.exec(r);return e?{message:U(`engine.flowExpr.singleBraceTemplate`,n,{ref:e[1]})}:null}if(i&&i!==`cel`)return{message:U(`engine.flowExpr.celDialect`,n,{dialect:i})};let a=Fh.exec(r);return a?{message:U(`engine.flowExpr.braceInCondition`,n,{ref:a[1]})}:Ih(r,`(`,`)`)?Ih(r,`[`,`]`)?null:{message:U(`engine.flowExpr.unbalancedBrackets`,n,{source:r})}:{message:U(`engine.flowExpr.unbalancedParens`,n,{source:r})}}function Rh(e,t){return e?t?e.replace(/\{([^{}]+)\}/g,(e,n)=>{let r=t[String(n).trim()];return r==null?e:String(r)}):e:``}var zh=`record`;function Bh(e){return new Set([...Object.keys(fa(Yh(e),{})),zh])}var Vh=new Set([`all`,`exists`,`exists_one`,`map`,`filter`]);function Hh(e){return!!e&&typeof e==`object`&&typeof e.op==`string`}function Uh(e,t,n){if(Array.isArray(e)){for(let r of e)Uh(r,t,n);return}if(Hh(e)){if(e.op===`id`){typeof e.args==`string`&&!t.has(e.args)&&n.add(e.args);return}if(e.op===`rcall`&&Array.isArray(e.args)){let[r,i,a]=e.args;if(Uh(i,t,n),typeof r==`string`&&Vh.has(r)&&Array.isArray(a)&&Hh(a[0])&&a[0].op===`id`&&typeof a[0].args==`string`){let e=new Set(t);e.add(a[0].args),Uh(a.slice(1),e,n);return}Uh(a,t,n);return}Uh(e.args,t,n)}}function Wh(e){let t=j(e);if(t){let e=new Set;return Uh(t,new Set,e),{ok:!0,roots:[...e]}}return D(e)}function Gh(e,t,n){if(e==null||typeof e==`string`&&!e.trim())return;let r=x(e);if(r)return r.message;let i=e,a=oe(`predicate`,i);if(a.errors.length>0)return a.errors.map(e=>e.message).join(` `);let o=Wh(i);if(!o.ok)return o.error;let s=Bh(t),c=o.roots.filter(e=>!s.has(e));if(c.length===0)return;let l=da(Yh(t)).map(e=>e.name);return c.map(e=>{let t=M(e,l);return t?U(`engine.flowRef.notAScreenFieldWithSuggestion`,n,{token:e,suggestion:t}):U(`engine.flowRef.notAScreenField`,n,{token:e})}).join(`; `)}function Kh(e,t){let n=e.config?.fields;if(!Array.isArray(n))return[];let r=[];for(let i of n){if(!i||typeof i!=`object`)continue;let n=i;if(typeof n.name!=`string`||!n.name)continue;let a=Gh(n.visibleWhen,e,t);a&&r.push({name:n.name,error:a})}return r}function qh(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n;typeof e.name==`string`&&e.name&&t.push({name:e.name,label:typeof e.label==`string`?e.label:void 0,type:typeof e.type==`string`?e.type:void 0,required:e.required===!0,...typeof e.visibleWhen==`string`?{visibleWhen:e.visibleWhen}:{}})}return t}function Jh(e,t){return da(e).length-pa(e,t).length}function Yh(e){let t=e.config&&typeof e.config==`object`?e.config:{},n=typeof t.objectName==`string`&&t.objectName?t.objectName:void 0,r=t.mode===`edit`?`edit`:t.mode===`create`?`create`:void 0,i=t.defaults&&typeof t.defaults==`object`&&!Array.isArray(t.defaults)?t.defaults:void 0;return{nodeId:e.id,title:typeof t.title==`string`?t.title:void 0,description:typeof t.description==`string`?t.description:void 0,fields:qh(t.fields),kind:n?`object-form`:`fields`,objectName:n,mode:r,defaults:i,idVariable:typeof t.idVariable==`string`?t.idVariable:void 0}}function Xh(e){return Array.isArray(e)?e:[]}function Zh(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Qh(e){return typeof e==`string`&&e?e:void 0}function $h(e,t,n){let r=Lh(`predicate`,e,n);if(r)return{level:`error`,message:r.message};if(t&&t.size>0){let r=Nh(e,`predicate`,t);if(r.length>0)return{level:`warning`,message:Ph(r,n)}}return null}function eg(e,t,n){let r=Lh(`predicate`,e,n);if(r)return{level:`error`,message:r.message};let i=Gh(e,t,n);return i?{level:`warning`,message:i}:null}function tg(e,t,n){return e===`screen`&&t===`fields`&&n===`visibleWhen`}function ng(e,t){let n=Xh(e.nodes).map(Zh),r=Xh(e.edges).map(Zh),i=Qh(n.find(e=>Qh(e.type)===`start`)?.id),a=[];for(let r of n){let n=Qh(r.id),o=Qh(r.type);if(!n||!o)continue;let s=n===i?null:Oh(wh(e,n).refs);for(let e of sh(o,nh(o),t))if(e.kind===`expression`&&e.refMode!==`template`){let i=$h(ch(r,e),s,t);i&&a.push({target:{kind:`node`,nodeId:n},level:i.level,message:i.message})}else if(e.kind===`objectList`&&e.columns){let i=e.columns.filter(e=>e.kind===`expression`);if(i.length===0)continue;let c={id:n,config:Zh(r.config)};for(let l of Xh(ch(r,e))){let r=Zh(l),u=Qh(r.label);for(let l of i){let i=tg(o,e.id,l.key)?eg(r[l.key],c,t):$h(r[l.key],s,t);if(i){let e=u||l.label;a.push({target:{kind:`node`,nodeId:n},level:i.level,message:e?`${e}: ${i.message}`:i.message})}}}}}for(let n of r){let r=Qh(n.source),o=Qh(n.target);if(!r||!o||n.isDefault===!0)continue;let s=r===i?null:Oh(wh(e,r).refs),c=$h(n.condition,s,t);c&&a.push({target:{kind:`edge`,source:r,target:o},level:c.level,message:c.message})}return a}function rg(e,t){return`${e}->${t}`}function ig(e,t,n){let r=e.findIndex(e=>e.source===t&&e.target===n);return r>=0?qa(e[r],r):`${t}->${n}#-1`}function ag(e){return Array.isArray(e)?e:typeof e!=`string`||!e?[]:e.split(`.`).map(e=>{let t=Number(e);return Number.isInteger(t)&&String(t)===e?t:e})}function og(e,t){if(e.edge){let{source:n,target:r}=e.edge;return{target:{kind:`edge`,source:n,target:r,edgeKey:ig(t,n,r)}}}if(e.cycle&&e.cycle.length>=2){let n=e.cycle,r=n[n.length-2],i=n[n.length-1],a=[],o=[];for(let e=0;e<n.length-1;e++)a.push(n[e]),o.push({source:n[e],target:n[e+1]});return{target:{kind:`edge`,source:r,target:i,edgeKey:ig(t,r,i)},highlight:{nodeIds:a,edges:o}}}return e.nodeId?{target:{kind:`node`,nodeId:e.nodeId}}:{target:{kind:`flow`}}}function sg(e,t,n){let r=ag(e);if(r.length>=2&&typeof r[1]==`number`){let e=r[1];if(r[0]===`nodes`&&t[e]?.id)return{kind:`node`,nodeId:t[e].id};if(r[0]===`edges`&&n[e]){let t=n[e];return{kind:`edge`,source:t.source,target:t.target,edgeKey:qa(t,e)}}}return{kind:`flow`}}function cg(e){return e.kind===`node`?`n:${e.nodeId}`:e.kind===`edge`?`e:${e.source}->${e.target}`:`flow`}function lg({nodes:e,edges:t,serverDiagnostics:n,variables:r,locale:i}){let a=[],o=Zm(e,t,i),s=(e,n)=>{n.forEach((n,r)=>{let{target:i,highlight:o}=og(n,t);a.push({id:`structural:${e}:${r}:${cg(i)}`,level:e,message:n.message,target:i,source:`structural`,...o?{highlight:o}:{}})})};return s(`error`,o.errors),s(`warning`,o.warnings),(n??[]).forEach((n,r)=>{let i=n.severity===`warning`?`warning`:`error`,o=sg(n.path,e,t);a.push({id:`server:${r}:${cg(o)}`,level:i,message:n.message,target:o,source:`server`})}),ng({nodes:e,edges:t,variables:r??[]},i).forEach((e,n)=>{let r=e.target.kind===`edge`?{kind:`edge`,source:e.target.source,target:e.target.target,edgeKey:ig(t,e.target.source,e.target.target)}:{kind:`node`,nodeId:e.target.nodeId};a.push({id:`expression:${e.level}:${n}:${cg(r)}`,level:e.level,message:e.message,target:r,source:`expression`})}),a.map((e,t)=>[e,t]).sort((e,t)=>e[0].level===t[0].level?e[1]-t[1]:e[0].level===`error`?-1:1).map(([e])=>e)}function ug(e){return{level:e.some(e=>e.level===`error`)?`error`:`warning`,title:e.map(e=>e.message).join(`
11
- `),count:e.length}}function dg(e){let t=new Map,n=new Map;for(let r of e)if(r.target.kind===`node`){let e=t.get(r.target.nodeId)??[];e.push(r),t.set(r.target.nodeId,e)}else if(r.target.kind===`edge`){let e=rg(r.target.source,r.target.target),t=n.get(e)??[];t.push(r),n.set(e,t)}let r=new Map;for(let[e,n]of t)r.set(e,ug(n));let i=new Map;for(let[e,t]of n)i.set(e,ug(t));return{byNode:r,byEdge:i}}function fg(e){let t=new Set,n=new Set;for(let r of e)if(r.level===`error`){r.target.kind===`node`?t.add(r.target.nodeId):r.target.kind===`edge`&&n.add(rg(r.target.source,r.target.target));for(let e of r.highlight?.nodeIds??[])t.add(e);for(let e of r.highlight?.edges??[])n.add(rg(e.source,e.target))}return{invalidNodeIds:[...t],invalidEdges:n}}var pg=.4,mg=1.6,hg=4;function gg({nodes:e,edges:t,editable:n,designMode:r,selectedId:i,selectedEdgeId:a,locale:o,activeNodeId:s,visitedNodeIds:c,traversedEdgeIds:l,invalidNodeIds:u,invalidEdges:d,onRevealProblem:f,problems:p,revealSignal:m,onSelect:h,onSelectEdge:g,selectedNestedPath:_,onSelectNested:v,onPatch:y}){let b=Y.useMemo(()=>Ga(e),[e]),x=Y.useRef(null),[S,C]=Y.useState(1),[w,T]=Y.useState({x:0,y:0}),[E,D]=Y.useState(!1),O=Rm(),[k,A]=Y.useState(null),j=Y.useRef(null),M=Y.useRef(null),[N,P]=Y.useState(()=>new Set),ee=Y.useCallback(e=>{let t=N.has(e);P(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),t&&_?.containerId===e&&v?.(null)},[N,_,v]),te=Y.useMemo(()=>{let e=new Map;for(let t of b){let n=Ya(t);n.length>0&&e.set(t.id,n)}return e},[b]),ne=Y.useMemo(()=>{let e=new Map;for(let t of b){let n=N.has(t.id)?te.get(t.id):void 0;e.set(t.id,n?ym(n):66)}return e},[b,te,N]),{positions:re,heights:ie,size:F}=Y.useMemo(()=>yo(b,t,e=>ne.get(e.id)??66),[b,t,ne]),ae=Y.useMemo(()=>new Set(c??[]),[c]),oe=Y.useMemo(()=>new Set(l??[]),[l]),se=Y.useMemo(()=>new Set(u??[]),[u]),ce=(c?.length??0)>0||!!s,{byNode:le,byEdge:ue}=Y.useMemo(()=>dg(p??[]),[p]),de=Y.useMemo(()=>(p??[]).filter(e=>e.level===`error`),[p]),fe=Y.useCallback(e=>k&&k.id===e?{x:k.x,y:k.y}:re.get(e)??{x:0,y:0},[k,re]),pe=Y.useCallback((e,t,n)=>{if(!y)return;let r=b.findIndex(t=>t.id===e);if(r<0)return;let i={...b[r],position:{x:t,y:n}};y({nodes:G(b,r,i)})},[b,y]),me=Y.useCallback((e,n)=>{if(!y)return;let r=Rc(`node`,b.map(e=>e.id).filter(Boolean)),i=jm(e,o),a=n?.at,s={id:r,type:e,label:i,...Mm(e),...a?{position:{x:a.x,y:a.y}}:{}},c={nodes:ss(b,s)};if(n?.from){let e={id:Rc(`edge`,t.map(e=>e.id).filter(Boolean)),source:n.from,target:r},i=b.find(e=>e.id===n.from);if(i?.type===`decision`){let r=(Array.isArray(i.config?.conditions)?i.config.conditions:[])[t.filter(e=>e.source===n.from).length];if(r&&typeof r==`object`){let t=typeof r.expression==`string`?r.expression.trim():``,n=typeof r.label==`string`?r.label.trim():``;n&&(e.label=n),t===`true`?e.isDefault=!0:t&&(e.condition=t)}}c.edges=ss(t,e)}y(c),h(s),D(!1)},[t,b,y,h,fe,o]),he=Y.useCallback((e,n=`create_record`)=>{if(!y)return;let r=t.findIndex(t=>t===e);if(r<0)return;let i=Rc(`node`,b.map(e=>e.id).filter(Boolean)),a=fe(e.source),s=fe(e.target),c={x:(a.x+s.x)/2,y:(a.y+s.y)/2},l={id:i,type:n,label:jm(n,o),...Mm(n),position:{x:c.x,y:c.y}},u={...e,target:i},d={id:Rc(`edge`,[...t.map(e=>e.id).filter(Boolean),`edge`]),source:i,target:e.target},f=G(t,r,u);y({nodes:ss(b,l),edges:ss(f,d)}),h(l)},[t,b,y,h,fe,o]),ge=Y.useCallback(e=>{if(!y||!b.some(t=>t.id===e))return;let n=Rc(`node`,b.map(e=>e.id).filter(Boolean)),r={id:n,type:`wait`,label:W(`engine.flowCanvas.awaitingRevision`,o),waitEventConfig:{eventType:`signal`,signalName:`revision`}},i=t.map(e=>e.id).filter(Boolean),a=Rc(`edge`,i),s=Rc(`edge`,[...i,a]),c={id:a,source:e,target:n,label:`revise`},l={id:s,source:n,target:e,label:`resubmit`,type:`back`};y({nodes:ss(b,r),edges:ss(ss(t,c),l)}),h(r)},[t,b,y,h,o]),_e=Y.useMemo(()=>{let e=new Set;for(let n of t)typeof n.label==`string`&&n.label.trim().toLowerCase()===`revise`&&e.add(n.source);return e},[t]),ve=Y.useCallback(e=>{y&&(y({nodes:b.filter(t=>t.id!==e),edges:t.filter(t=>t.source!==e&&t.target!==e)}),h(null))},[t,b,y,h]),ye=Y.useCallback(e=>t=>{if(!n||t.button!==0)return;t.stopPropagation();let r=fe(e);j.current={nodeId:e,startX:t.clientX,startY:t.clientY,originX:r.x,originY:r.y,moved:!1},t.currentTarget.setPointerCapture?.(t.pointerId)},[n,fe]),be=Y.useCallback(e=>{let t=j.current;if(!t)return;let n=(e.clientX-t.startX)/S,r=(e.clientY-t.startY)/S;!t.moved&&Math.hypot(e.clientX-t.startX,e.clientY-t.startY)<hg||(t.moved=!0,A({id:t.nodeId,x:Math.max(0,t.originX+n),y:Math.max(0,t.originY+r)}))},[S]),xe=Y.useCallback(e=>{let t=j.current;j.current=null,t&&(e.currentTarget.releasePointerCapture?.(e.pointerId),t.moved&&k&&pe(t.nodeId,Math.round(k.x),Math.round(k.y)),A(null))},[k,pe]),Se=Y.useCallback(e=>{e.button===0&&(h(null),M.current={startX:e.clientX,startY:e.clientY,originX:w.x,originY:w.y},e.currentTarget.setPointerCapture?.(e.pointerId))},[h,w.x,w.y]),Ce=Y.useCallback(e=>{let t=M.current;t&&T({x:t.originX+(e.clientX-t.startX),y:t.originY+(e.clientY-t.startY)})},[]),we=Y.useCallback(e=>{M.current&&e.currentTarget.releasePointerCapture?.(e.pointerId),M.current=null},[]),Te=e=>Math.min(mg,Math.max(pg,e)),Ee=Y.useCallback(()=>{let e=x.current;if(!e)return;let t=(e.clientWidth-32)/F.width,n=(e.clientHeight-32)/F.height,r=Te(Math.min(t,n));C(r),T({x:(e.clientWidth-F.width*r)/2,y:Math.max(16,(e.clientHeight-F.height*r)/2)})},[F.height,F.width]);Y.useEffect(()=>{let e=x.current;e&&(C(1),T({x:(e.clientWidth-F.width)/2,y:Math.max(16,(e.clientHeight-F.height)/2)}))},[]),Y.useEffect(()=>{if(!m)return;let e=x.current;if(!e)return;let t=m.target,n=null;if(t.kind===`node`){let e=re.get(t.nodeId);e&&(n={x:e.x+120,y:e.y+(ie.get(t.nodeId)??66)/2})}else if(t.kind===`edge`){let e=re.get(t.source),r=re.get(t.target);e&&r&&(n=Po(No(e,ie.get(t.source)??66),Eo(r)))}n&&T({x:e.clientWidth/2-n.x*S,y:e.clientHeight/2-n.y*S})},[m?.nonce]);let De=Y.useCallback(e=>{if(n&&i&&(e.key===`Delete`||e.key===`Backspace`)){let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)return;e.preventDefault(),ve(i)}},[ve,n,i]);return(0,X.jsxs)(`div`,{className:`relative h-full min-h-[320px] w-full overflow-hidden`,children:[de.length>0&&(0,X.jsxs)(`div`,{className:`absolute left-2 top-2 z-30 max-w-[min(60%,420px)] space-y-1`,children:[de.slice(0,3).map(e=>{let t=!!f&&e.target.kind!==`flow`;return(0,X.jsxs)(`button`,{type:`button`,role:`alert`,disabled:!t,onPointerDown:e=>e.stopPropagation(),onClick:t?t=>{t.stopPropagation(),f(e)}:void 0,title:t?W(`engine.flowCanvas.reveal`,o):void 0,className:L(`flex w-full items-start gap-1.5 rounded-lg border border-destructive/40 bg-destructive/10 px-2.5 py-1.5 text-left text-[11px] leading-snug text-destructive shadow-sm backdrop-blur-sm transition-colors`,t&&`cursor-pointer hover:border-destructive/60 hover:bg-destructive/20`),children:[(0,X.jsx)(zi,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`}),(0,X.jsx)(`span`,{children:e.message})]},e.id)}),de.length>3&&(0,X.jsx)(`div`,{className:`px-2.5 text-[10px] text-destructive/80`,children:U(`engine.flowCanvas.moreErrors`,o,{count:de.length-3})})]}),(0,X.jsxs)(`div`,{className:`absolute right-2 top-2 z-30 flex items-center gap-1.5`,children:[n&&(0,X.jsx)(Fm,{locale:o,items:O,open:E,onOpenChange:D,onPick:e=>me(e,{from:i??void 0}),children:(0,X.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border bg-background/90 px-2.5 py-1.5 text-xs font-medium shadow-sm backdrop-blur-sm transition-colors hover:border-primary/50 hover:bg-accent hover:text-foreground`,children:[(0,X.jsx)(H,{className:`h-3.5 w-3.5`}),W(`engine.inspector.add.node`,o)]})}),(0,X.jsxs)(`div`,{className:`flex items-center rounded-lg border bg-background/90 shadow-sm backdrop-blur-sm`,children:[(0,X.jsx)(`button`,{type:`button`,title:W(`engine.flowCanvas.zoomOut`,o),"aria-label":W(`engine.flowCanvas.zoomOut`,o),onClick:()=>C(e=>Te(e-.15)),className:`inline-flex h-7 w-7 items-center justify-center text-muted-foreground hover:text-foreground`,children:(0,X.jsx)(Yi,{className:`h-3.5 w-3.5`})}),(0,X.jsxs)(`span`,{className:`w-10 text-center text-[11px] tabular-nums text-muted-foreground`,children:[Math.round(S*100),`%`]}),(0,X.jsx)(`button`,{type:`button`,title:W(`engine.flowCanvas.zoomIn`,o),"aria-label":W(`engine.flowCanvas.zoomIn`,o),onClick:()=>C(e=>Te(e+.15)),className:`inline-flex h-7 w-7 items-center justify-center text-muted-foreground hover:text-foreground`,children:(0,X.jsx)(Xi,{className:`h-3.5 w-3.5`})}),(0,X.jsx)(`button`,{type:`button`,title:W(`engine.flowCanvas.fit`,o),"aria-label":W(`engine.flowCanvas.fit`,o),onClick:Ee,className:`inline-flex h-7 w-7 items-center justify-center border-l text-muted-foreground hover:text-foreground`,children:(0,X.jsx)(Br,{className:`h-3.5 w-3.5`})})]})]}),(0,X.jsx)(`div`,{ref:x,tabIndex:0,role:`application`,"aria-label":W(`engine.flowCanvas.canvas`,o),onKeyDown:De,onPointerDown:Se,onPointerMove:e=>{Ce(e),be(e)},onPointerUp:e=>{we(e),xe(e)},className:L(`h-full w-full cursor-grab outline-none active:cursor-grabbing`,`bg-muted/15 dark:bg-background/30`,`shadow-[inset_0_0_90px_rgba(0,0,0,0.05)]`),style:{backgroundImage:`radial-gradient(circle at 1px 1px, hsl(var(--border)) 1px, transparent 0)`,backgroundSize:`${18*S}px ${18*S}px`,backgroundPosition:`${w.x}px ${w.y}px`},children:(0,X.jsxs)(`div`,{className:`relative origin-top-left`,style:{width:F.width,height:F.height,transform:`translate(${w.x}px, ${w.y}px) scale(${S})`},children:[(0,X.jsxs)(`svg`,{className:`pointer-events-none absolute left-0 top-0 overflow-visible`,width:F.width,height:F.height,children:[(0,X.jsxs)(`defs`,{children:[(0,X.jsx)(`marker`,{id:`flow-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,X.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-muted-foreground/55`})}),(0,X.jsx)(`marker`,{id:`flow-arrow-back`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,X.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-amber-500/80`})}),(0,X.jsx)(`marker`,{id:`flow-arrow-error`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,X.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-destructive`})})]}),t.map((e,t)=>{let i=re.get(e.source),s=re.get(e.target);if(!i||!s)return null;let c=Ja(e),l=!c&&!!d?.has(`${e.source}->${e.target}`),u=k?.id===e.source?fe(e.source):i,f=k?.id===e.target?fe(e.target):s,p=c?io(u):No(u,ie.get(e.source)??66),m=c?io(f):Eo(f),h=c?So(p,m):Po(p,m),_=Fo(e.condition),v=e.isDefault?`else`:_?`if ${_}`:e.label,y=qa(e,t),b=ue.get(rg(e.source,e.target)),x=oe.has(y),S=a===y,C=c?_o(p,m):lo(p,m),w=r&&!!g;return(0,X.jsxs)(`g`,{"data-invalid":l||void 0,children:[(0,X.jsx)(`path`,{d:C,strokeLinecap:`round`,strokeDasharray:c?`5 4`:void 0,className:L(`fill-none transition-[stroke] duration-150`,x?`stroke-sky-500`:S?`stroke-primary`:l?`stroke-destructive`:c?`stroke-amber-500/70`:ce?`stroke-muted-foreground/20`:`stroke-muted-foreground/40`),strokeWidth:x||S||l?2.5:1.75,markerEnd:l?`url(#flow-arrow-error)`:c?`url(#flow-arrow-back)`:`url(#flow-arrow)`}),w&&(0,X.jsx)(`path`,{d:C,className:`pointer-events-auto cursor-pointer fill-none stroke-transparent`,strokeWidth:14,onPointerDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),g(e,y)},children:(0,X.jsx)(`title`,{children:l?`${e.source} → ${e.target} — part of an un-declared cycle; mark the edge that closes the loop as a back-edge`:c?`${e.source} ↩ ${e.target} (back-edge)`:`${e.source} → ${e.target}`})}),v&&(0,X.jsx)(`foreignObject`,{x:h.x-60,y:h.y-11,width:120,height:22,className:L(w&&`pointer-events-auto`),children:(0,X.jsx)(`div`,{className:`flex justify-center`,children:(0,X.jsx)(`span`,{onPointerDown:w?e=>e.stopPropagation():void 0,onClick:w?t=>{t.stopPropagation(),g(e,y)}:void 0,className:L(`max-w-full truncate rounded-full border bg-background/95 px-2 py-0.5 text-[10px] font-medium shadow-sm backdrop-blur-sm transition-colors`,w&&`cursor-pointer hover:border-primary/60`,S?`border-primary text-primary`:l?`border-destructive/60 text-destructive`:c?`border-amber-500/50 text-amber-600 dark:text-amber-400`:`border-border text-muted-foreground`),children:v})})}),b&&(0,X.jsx)(`foreignObject`,{x:h.x-9,y:h.y-30,width:18,height:18,className:`pointer-events-auto overflow-visible`,children:(0,X.jsx)(`span`,{title:b.title,"data-problem":b.level,className:L(`inline-flex h-[18px] w-[18px] items-center justify-center rounded-full border bg-background shadow-sm`,b.level===`error`?`border-destructive/50 text-destructive`:`border-amber-500/50 text-amber-600 dark:text-amber-400`),children:b.level===`error`?(0,X.jsx)(kn,{className:`h-3 w-3`}):(0,X.jsx)(zi,{className:`h-3 w-3`})})}),n&&!c&&(0,X.jsx)(`foreignObject`,{x:v?h.x+66:h.x-11,y:h.y-11,width:22,height:22,className:`pointer-events-auto`,children:(0,X.jsx)(`button`,{type:`button`,title:W(`engine.flowCanvas.insertNode`,o),"aria-label":W(`engine.flowCanvas.insertNode`,o),onPointerDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),he(e)},className:`inline-flex h-[22px] w-[22px] items-center justify-center rounded-full border bg-background/90 text-muted-foreground opacity-50 shadow-sm backdrop-blur-sm transition-all hover:scale-110 hover:border-primary hover:bg-background hover:text-primary hover:opacity-100 focus-visible:opacity-100`,children:(0,X.jsx)(H,{className:`h-3 w-3`})})})]},e.id||`${e.source}-${e.target}-${t}`)})]}),b.map(e=>{let t=s===e.id?`active`:ae.has(e.id)?`visited`:void 0;return(0,X.jsx)(Nm,{id:e.id,locale:o,type:e.type,label:e.label||e.id,summary:_g(e),position:fe(e.id),selected:i===e.id,editable:n,runState:t,dimmed:ce&&!t,onPointerDown:ye(e.id),onSelect:()=>r&&h(e),onAppend:()=>me(`create_record`,{from:e.id}),onAddReviseLoop:n&&e.type===`approval`&&!_e.has(e.id)?()=>ge(e.id):void 0,invalid:se.has(e.id),badge:le.get(e.id),regions:te.get(e.id),expanded:N.has(e.id),onToggleExpand:te.has(e.id)?()=>ee(e.id):void 0,height:ie.get(e.id),selectedNestedNode:_?.containerId===e.id?{regionKey:_.regionKey,nodeId:_.nodeId}:null,onSelectNestedNode:r&&v?(t,n)=>v({containerId:e.id,regionKey:t,nodeId:n.id},n):void 0},e.id)})]})})]})}function _g(e){let t=e.config,n=e=>typeof e==`string`&&e?e:void 0,r=(t,r)=>{let i=e[t];return i&&typeof i==`object`?n(i[r]):void 0},i=e=>t?n(t[e]):void 0,a=(e,r)=>{let i=t?.[e];return i&&typeof i==`object`&&!Array.isArray(i)?n(i[r]):void 0};if(e.type===`start`)return i(`condition`)||i(`criteria`)||i(`objectName`)||a(`schedule`,`expression`)||a(`schedule`,`cron`)||i(`cron`)||i(`schedule`)||a(`timeRelative`,`object`)||i(`triggerType`);if(e.type===`decision`){let e=t?.conditions;if(Array.isArray(e)&&e.length){let t=e.map(e=>e&&typeof e==`object`?n(e.label):void 0).filter(Boolean);return t.length?t.join(` / `):`${e.length} branches`}return i(`condition`)}if(e.type===`script`)return i(`function`)||i(`actionType`)||i(`template`)||(t&&t.script?`code`:void 0);if(e.type===`approval`){let e=t?.approvers,n=Array.isArray(e)?e.length:0,r=i(`behavior`);return n>0?`${n} approver${n===1?``:`s`}${r===`unanimous`?` · all`:``}`:r||void 0}return i(`objectName`)||r(`connectorConfig`,`actionId`)||r(`waitEventConfig`,`timerDuration`)||r(`waitEventConfig`,`eventType`)||r(`boundaryConfig`,`eventType`)||i(`condition`)||i(`flowName`)||i(`url`)||i(`collection`)||i(`action`)||i(`flow`)||i(`event`)||i(`duration`)||void 0}var vg=`nested-node`,yg=/^(.+?)::(body|try|catch|branch-\d+)::(.+)$/,bg=/^branch-(\d+)$/;function xg(e){return`${e.containerId}::${e.regionKey}::${e.nodeId}`}function Sg(e){let t=yg.exec(e);return t?{containerId:t[1],regionKey:t[2],nodeId:t[3]}:null}function Cg(e){if(e===`body`||e===`try`||e===`catch`)return{kind:`key`,key:e};let t=bg.exec(e);return t?{kind:`branch`,index:Number(t[1])}:null}function wg(e,t){if(e===`body`)return`Body`;if(e===`try`)return`Try`;if(e===`catch`)return`Catch`;let n=bg.exec(e);if(n){let e=Number(n[1]),r=t&&typeof t.config==`object`&&t.config?t.config:{},i=(Array.isArray(r.branches)?r.branches:[])[e],a=i&&typeof i==`object`?i.name:void 0;return typeof a==`string`&&a?a:`Branch ${e+1}`}return e}function Tg(e){return Array.isArray(e)?e:[]}function Eg(e){let t=e.config;return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}function Dg(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;return Array.isArray(t.nodes)?t:null}function Og(e,t){return t.kind===`key`?Dg(e[t.key]):Dg((Array.isArray(e.branches)?e.branches:[])[t.index])}function kg(e,t,n,r,i,a){let o=Eg(n),s=Og(o,r);if(!s||i<0||i>=s.nodes.length)return null;let c={...s,nodes:G(s.nodes,i,a)},l=r.kind===`key`?{...o,[r.key]:c}:{...o,branches:G(Array.isArray(o.branches)?o.branches:[],r.index,c)},u={...n,config:l};return{nodes:G(e,t,u)}}function Ag(e,t){let n=Tg(e.nodes);if(t.kind===`nested-node`){let e=Sg(t.id),r=e?Cg(e.regionKey):null;if(!e||!r)return null;let i=n.findIndex(t=>t?.id===e.containerId),a=i>=0?n[i]:null;if(!a)return null;let o=Og(Eg(a),r),s=o?o.nodes.findIndex(t=>t?.id===e.nodeId):-1,c=o&&s>=0?o.nodes[s]:null;return c?{node:c,nested:!0,scopeAnchorId:a.id,container:a,regionKey:e.regionKey,regionLabel:wg(e.regionKey,a),write:e=>kg(n,i,a,r,s,e)}:null}let r=n.findIndex(e=>e?.id===t.id),i=r>=0?n[r]:null;return i?{node:i,nested:!1,scopeAnchorId:i.id,write:e=>({nodes:G(n,r,e)})}:null}var jg=500,Mg=`default`,Ng=(...e)=>e.filter(e=>!!e).join(` `)||void 0,Pg=new Set([`start`]),Fg=new Set([`create_record`,`update_record`,`delete_record`,`get_record`,`http_request`,`connector_action`]),Ig=new Set([`join_gateway`,`subflow`,`boundary_event`,`parallel`,`try_catch`]),Lg=(e,t)=>e.id||`${e.source}->${e.target}#${t}`,Rg=e=>typeof e==`string`&&e?e:void 0,zg=/^[A-Za-z_$][\w$]*(?:\.(?:[A-Za-z_$][\w$]*|\d+))*$/;function Bg(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Vg(e){if(e==null)return``;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return String(e)}return String(e)}var Hg=class{nodes=new Map;edges=[];mocks={};seq=0;state={status:`idle`,variables:{},steps:[],frontier:[],activeNodeId:null,visitedNodeIds:[],traversedEdgeIds:[]};locale;constructor(e,t,n){for(let t of e)this.nodes.set(t.id,t);this.edges=t,this.locale=n}say(e,t){return t?U(e,this.locale,t):W(e,this.locale)}reset(e={},t={}){let n=Zm([...this.nodes.values()],this.edges,this.locale);return this.mocks=t,this.seq=0,this.state={status:n.errors.length?`error`:`idle`,variables:{...e},steps:[],frontier:n.startNodeId?[n.startNodeId]:[],activeNodeId:null,visitedNodeIds:[],traversedEdgeIds:[],error:n.errors.length?n.errors[0].message:void 0},n}get done(){return this.state.status===`done`||this.state.status===`error`}step(){let e=this.state;if(e.status===`error`||e.status===`done`||e.status===`paused`)return null;if(this.seq>=jg)return e.status=`error`,e.error=this.say(`engine.flowSim.note.stepLimit`,{max:jg}),null;let t=e.frontier.shift();if(!t)return e.status=`done`,e.activeNodeId=null,null;let n=this.nodes.get(t);if(!n)return this.record(t,`unknown`,t,`error`,{error:this.say(`engine.flowSim.note.nodeNotFound`,{id:t})});e.status=`running`,e.activeNodeId=t,e.visitedNodeIds.includes(t)||e.visitedNodeIds.push(t);let r=this.execute(n);return e.status===`running`&&e.frontier.length===0&&(e.status=`done`,e.activeNodeId=null),r}runToEnd(){let e=0;for(;this.state.status!==`done`&&this.state.status!==`error`&&this.state.status!==`paused`&&!(++e>505);)this.step();return this.state}resume(e={}){let t=this.state;if(t.status!==`paused`||!t.activeNodeId)return;let n=this.nodes.get(t.activeNodeId);if(e.screenOutputs&&n?.type===`screen`&&Object.assign(t.variables,e.screenOutputs),t.pausedReason=void 0,t.status=`running`,n?.type===`approval`)this.resumeApproval(n,e.decision);else if(n){let e=this.route(n);(e.gated||e.error)&&this.record(n.id,n.type,n.label,e.error?`error`:`ok`,{edges:e.evals,error:e.error,note:Ng(this.say(`engine.flowSim.note.resumed`),e.note)})}t.status===`running`&&t.frontier.length===0&&(t.status=`done`,t.activeNodeId=null)}resumeApproval(e,t){let n=(t??``).trim(),r=this.route(e,n?{label:n,claims:e=>(e??``).trim().toLowerCase()===n.toLowerCase()}:void 0),i=r.evals.filter(e=>e.selected).map(e=>e.target);this.record(e.id,`approval`,e.label,r.error?`error`:`ok`,{edges:r.gated||r.error?r.evals:void 0,error:r.error,note:Ng(n?this.say(`engine.flowSim.note.decisionTaken`,{decision:t??``,taken:i.length?i.join(`, `):this.say(`engine.flowSim.note.decisionNoneTaken`)}):this.say(`engine.flowSim.note.noDecision`),r.note)})}execute(e){let t=e.type;if(t===`end`)return this.record(e.id,t,e.label,`ok`,{note:this.say(`engine.flowSim.note.flowEnd`)});if(t===`decision`)return this.executeDecision(e);if(t===`assignment`)return this.executeAssignment(e);if(Ig.has(t))return this.proceed(e,`skipped`,{note:this.say(`engine.flowSim.note.unsupported`,{type:t})});if(t===`parallel_gateway`)return this.proceed(e,`ok`,{note:this.say(`engine.flowSim.note.parallelSplit`)});if(t===`approval`)return this.state.status=`paused`,this.state.pausedReason=`approval`,this.record(e.id,t,e.label,`paused`,{note:this.say(`engine.flowSim.note.approvalReached`)});if(t===`wait`)return this.state.status=`paused`,this.state.pausedReason=`wait`,this.record(e.id,t,e.label,`paused`,{note:this.say(`engine.flowSim.note.waitReached`)});if(t===`screen`){let n=Array.isArray(e.config?.fields)?e.config.fields:[],r=e.config?.waitForInput;if(r===!0||n.length>0&&r!==!1){this.state.status=`paused`,this.state.pausedReason=`screen`;let n=Kh(e,this.locale);return this.record(e.id,t,e.label,`paused`,{note:this.say(`engine.flowSim.note.screenReached`),error:n.length?this.say(`engine.flowSim.note.screenUnevaluable`,{fields:n.map(e=>this.say(`engine.flowSim.note.screenUnevaluableField`,{name:e.name,reason:e.error.split(`
12
- `)[0]})).join(`; `)}):void 0})}return this.proceed(e,`ok`,{note:this.say(`engine.flowSim.note.screenNoInput`)})}if(t===`loop`)return this.proceed(e,`ok`,{note:this.executeLoop(e)});if(Fg.has(t)||t===`script`){let t=this.applyMock(e);return this.proceed(e,`mocked`,{wrote:t,note:this.mockNote(e)})}return this.proceed(e,`ok`,{note:Pg.has(t)?void 0:this.say(`engine.flowSim.note.passThrough`,{type:t})})}proceed(e,t,n={}){let r=this.route(e);return this.record(e.id,e.type,e.label,r.error?`error`:t,{...n,edges:r.gated||r.error?r.evals:void 0,error:r.error,note:Ng(n.note,r.note)})}executeDecision(e){let t=this.decisionBranch(e);if(`error`in t)return this.record(e.id,`decision`,e.label,`error`,{error:t.error});let n=this.route(e,t.selection),r=this.edges.some(t=>t.source===e.id&&t.type!==`fault`);return this.record(e.id,`decision`,e.label,n.error?`error`:`ok`,{edges:n.evals,error:n.error,note:Ng(t.note,n.note,r?void 0:this.say(`engine.flowSim.note.decisionNoOutEdge`))})}decisionBranch(e){let t=e.config?.conditions;if(!Array.isArray(t)||t.length===0)return{};for(let[e,n]of t.entries()){let t=n&&typeof n==`object`?n:{},r=Ym(t.expression,this.state.variables,this.locale);if(r.kind===`fault`)return{error:`config.conditions[${e}].expression: ${r.error}`};if(!r.result)continue;let i=typeof t.label==`string`&&t.label?t.label:void 0;return i?{selection:{label:i,claims:e=>e===i},note:this.say(`engine.flowSim.note.branchMatched`,{label:i})}:{}}return{selection:{label:Mg,claims:e=>e===Mg},note:this.say(`engine.flowSim.note.noConditionMatched`,{label:Mg})}}executeAssignment(e){let t=e.config??{},n=t.assignments,r=[];if(Array.isArray(n)){for(let e of n)if(e&&typeof e==`object`){let t=e,n=t.variable??t.name??t.key;typeof n==`string`&&n&&r.push({key:n,value:t.value,slot:!1})}}else if(n&&typeof n==`object`){let t=Vm(e.type,[`config`,`assignments`]);for(let[e,i]of Object.entries(n))r.push({key:e,value:i,slot:t})}else for(let[e,n]of Object.entries(t))r.push({key:e,value:n,slot:!1});let i={},a=[];for(let{key:t,value:n,slot:o}of r){let r;if(o&&m(n)){let a=Km(n,this.state.variables,this.locale);if(!a.ok)return this.record(e.id,`assignment`,e.label,`error`,{wrote:Object.keys(i).length?i:void 0,error:`assignments.${t}: ${a.error}`});r=a.value}else{let e=[];r=this.interpolateValue(n,e);for(let n of e)a.push(this.say(`engine.flowSim.note.unmodelledToken`,{token:n,key:t}))}this.state.variables[t]=r,i[t]=r}return this.proceed(e,`ok`,{wrote:Object.keys(i).length?i:void 0,note:Ng(Object.keys(i).length?void 0:this.say(`engine.flowSim.note.noAssignments`),a.length?this.say(`engine.flowSim.note.unmodelled`,{tokens:a.join(`, `)}):void 0)})}interpolateValue(e,t){if(typeof e==`string`)return this.interpolateString(e,t);if(Array.isArray(e))return e.map(e=>this.interpolateValue(e,t));if(e&&typeof e==`object`){let n={};for(let[r,i]of Object.entries(e))n[r]=this.interpolateValue(i,t);return n}return e}interpolateString(e,t){if(!e.includes(`{`))return e;let n=/^\{([^{}]+)\}$/.exec(e);if(n){let r=this.resolveToken(n[1]);return r.modelled?r.value:(t.push(e),e)}return e.replace(/\{([^{}]+)\}/g,(e,n)=>{let r=this.resolveToken(n);return r.modelled?Vg(r.value):(t.push(e),e)})}resolveToken(e){let t=e.trim();if(!t)return{modelled:!0,value:void 0};if(t.startsWith(`$User.`)||!zg.test(t))return{modelled:!1};let n=this.state.variables,[r,...i]=t.split(`.`);return Object.prototype.hasOwnProperty.call(n,r)?{modelled:!0,value:Bg(n[r],i)}:{modelled:!0,value:Object.prototype.hasOwnProperty.call(n,t)?n[t]:void 0}}executeLoop(e){let t=Rg(e.config?.collection),n=Rg(e.config?.iteratorVariable),r=this.say(`engine.flowSim.note.loopSinglePass`);if(t){let e=this.resolveRef(t);Array.isArray(e)?(r=this.say(`engine.flowSim.note.loopCollection`,{ref:t,count:e.length}),n&&e.length&&(this.state.variables[n]=e[0])):e!==void 0&&(r=this.say(`engine.flowSim.note.loopNotArray`,{ref:t}))}return r}resolveRef(e){let t=e.match(/^\{(.+)\}$/),n=(t?t[1]:e).trim();return this.state.variables[n]}applyMock(e){let t=e.config??{},n=this.mocks[e.id],r={},i=Rg(t.outputVariable);return i&&(r[i]=n===void 0?{}:n,this.state.variables[i]=r[i]),Object.keys(r).length?r:void 0}mockNote(e){if(e.type===`script`){let t=Rg(e.config?.function);if(t)return this.say(`engine.flowSim.note.mockedCall`,{fn:t});let n=Rg(e.config?.actionType);return n&&n!==`code`?this.say(`engine.flowSim.note.retiredAction`,{action:n}):this.say(`engine.flowSim.note.retiredScript`)}return this.say(`engine.flowSim.note.mocked`,{type:e.type.replace(/_/g,` `)})}route(e,t){let n=this.state.variables,r=this.edges.map((e,t)=>({e,i:t})).filter(t=>t.e.source===e.id&&t.e.type!==`fault`),i=[],a=r;if(t){let e=r.filter(e=>t.claims(e.e.label));e.length===0&&t.label===Mg&&(e=r.filter(e=>e.e.isDefault===!0)),e.length>0?a=e:i.push(this.say(`engine.flowSim.note.noBranchLabel`,{label:t.label}))}let o=[],s=[],c=!1,l=0;for(let{e,i:t}of a){if(e.condition===void 0)continue;c=!0;let r=Fo(e.condition),i=qm(e.condition,n,this.locale);if(i.kind!==`value`){let n=i.kind===`fault`?i.error:this.say(`engine.flowSim.note.evaluationFailed`);return o.push({edgeId:Lg(e,t),target:e.target,condition:r,result:!1,error:n,selected:!1}),{evals:o,gated:c,error:r?`${r}: ${n}`:n}}let a=i.result&&l===0;i.result&&l++,a&&s.push({e,i:t}),o.push({edgeId:Lg(e,t),target:e.target,condition:r,result:i.result,selected:a})}for(let{e,i:t}of a){if(e.condition!==void 0||!e.isDefault)continue;c=!0;let n=l===0;n&&s.push({e,i:t}),o.push({edgeId:Lg(e,t),target:e.target,isDefault:!0,result:n,selected:n})}for(let{e,i:t}of a)e.condition!==void 0||e.isDefault||(s.push({e,i:t}),o.push({edgeId:Lg(e,t),target:e.target,result:!0,selected:!0}));l>1&&i.push(this.say(`engine.flowSim.note.multipleMatched`)),a.length>0&&s.length===0&&i.push(this.say(`engine.flowSim.note.noEdgeTaken`));for(let{e,i:t}of s)this.traverse(e,t);return{evals:o,gated:c,note:i.length?i.join(` `):void 0}}traverse(e,t){let n=Lg(e,t);this.state.traversedEdgeIds.includes(n)||this.state.traversedEdgeIds.push(n),this.nodes.has(e.target)&&this.state.frontier.push(e.target)}record(e,t,n,r,i={}){let a={seq:this.seq++,nodeId:e,type:t,label:n||e,status:r,...i};return this.state.steps.push(a),r===`error`&&this.state.status!==`paused`&&(this.state.status=`error`,this.state.error=i.error),a}};function Ug({node:e,variables:t,className:n,locale:r}){let i=ht(),a=gt(),o=Y.useMemo(()=>Yh(e),[e]),s=ga(o),c=s?a.objects:void 0,l=Rh(o.title,t),u=Rh(o.description,t),d=s?`obj:${o.objectName}:${o.mode??`create`}`:`fields:`+da(o).map(e=>`${e.name}:${e.type??``}:${+!!e.required}:${e.visibleWhen??``}`).join(`|`),f=!l&&!u&&!s&&da(o).length===0;return(0,X.jsxs)(`div`,{className:L(`overflow-hidden rounded-md border bg-background`,n),children:[(0,X.jsx)(`div`,{className:`flex items-center gap-1.5 border-b bg-muted/30 px-3 py-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.screenPreview.header`,r)}),(0,X.jsx)(`div`,{className:`max-h-[60vh] overflow-auto p-4`,children:f?(0,X.jsx)(We,{className:`text-sm italic`,children:W(`engine.screenPreview.empty`,r)}):(0,X.jsxs)(X.Fragment,{children:[l&&(0,X.jsx)(`h3`,{className:`text-base font-semibold leading-tight`,children:l}),u&&(0,X.jsx)(`p`,{className:L(`whitespace-pre-line text-sm text-muted-foreground`,l&&`mt-1`),children:u}),(0,X.jsx)(Wg,{spec:o,adapter:i,objects:c,locale:r},d),!s&&da(o).length>0&&(0,X.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,X.jsx)(B,{size:`sm`,disabled:!0,children:W(`engine.screenPreview.submit`,r)})})]})})]})}function Wg({spec:e,adapter:t,objects:n,locale:r}){let[i,a]=Y.useState(()=>la(e)),o=Jh(e,i);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(_a,{screen:e,values:i,onValueChange:(e,t)=>a(n=>({...n,[e]:t})),dataSource:t??void 0,objects:n,objectForm:{showSubmit:!1,showCancel:!1,noDataSourceMessage:W(`engine.screenPreview.noDataSource`,r)}}),o>0&&(0,X.jsx)(`p`,{className:`mt-3 text-[11px] italic text-muted-foreground`,children:U(o===1?`engine.screenPreview.hiddenOne`:`engine.screenPreview.hiddenOther`,r,{count:o})})]})}function Gg(e){let t=e.trim();if(t!==``){if(t===`true`)return!0;if(t===`false`)return!1;if(/^-?\d+(\.\d+)?$/.test(t))return Number(t);if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.parse(t)}catch{return e}return e}}var Kg=new Set([`create_record`,`update_record`,`delete_record`,`get_record`,`http_request`,`connector_action`,`script`]);function qg(e){let t=[];for(let n of e){if(!Kg.has(n.type))continue;let e=n.config??{},r=[];typeof e.outputVariable==`string`&&e.outputVariable&&r.push(e.outputVariable),t.push({id:n.id,label:n.label||n.id,type:n.type,outputs:r})}return t}var Jg={ok:`bg-emerald-100 text-emerald-700`,mocked:`bg-violet-100 text-violet-700`,paused:`bg-amber-100 text-amber-700`,skipped:`bg-zinc-100 text-zinc-600`,error:`bg-rose-100 text-rose-700`};function Yg({nodes:e,edges:t,variables:n,locale:r,onRunStateChange:i}){let a=Y.useRef(null),[o,s]=Y.useState(null),[c,l]=Y.useState(null),u=Y.useMemo(()=>n.filter(e=>e.isInput),[n]),d=Y.useMemo(()=>qg(e),[e]),[f,p]=Y.useState({}),[m,h]=Y.useState([]),[g,_]=Y.useState({}),v=Y.useCallback(()=>{let e=a.current;if(!e)return;let t=e.state;s({...t,steps:[...t.steps],variables:{...t.variables},frontier:[...t.frontier],visitedNodeIds:[...t.visitedNodeIds],traversedEdgeIds:[...t.traversedEdgeIds]}),i?.({activeNodeId:t.activeNodeId,visitedNodeIds:[...t.visitedNodeIds],traversedEdgeIds:[...t.traversedEdgeIds]})},[i]),y=Y.useCallback(()=>{let e={};for(let t of u){let n=f[t.name],r=n==null?void 0:Gg(n);e[t.name]=r===void 0?t.defaultValue:r}for(let t of m){let n=t.k.trim();n&&(e[n]=Gg(t.v))}return e},[u,f,m]),b=Y.useCallback(()=>{let e={};for(let[t,n]of Object.entries(g))n!=null&&n.trim()!==``&&(e[t]=Gg(n));return e},[g]),x=Y.useCallback(()=>{let n=new Hg(e,t,r);a.current=n,l(n.reset(y(),b())),v()},[e,t,y,b,v,r]),S=Y.useCallback(()=>(a.current||x(),a.current),[x]),C=()=>{let e=a.current;if(e&&e.state.status===`paused`){if(e.state.pausedReason===`approval`){v();return}e.resume()}else x(),e=a.current;e.runToEnd(),v()},w=()=>{S().step(),v()},T=()=>E(),E=e=>{let t=S();t.resume(e?{decision:e}:{}),t.runToEnd(),v()},D=()=>{a.current=null,s(null),l(null),i?.(null)},O=o?.status??`idle`,k=(c?.errors.length??0)>0,A=Y.useMemo(()=>{if(o?.status!==`paused`||o.pausedReason!==`screen`||!o.activeNodeId)return null;let t=e.find(e=>e.id===o.activeNodeId);return t?{node:t,variables:o.variables}:null},[o,e]),j=Y.useMemo(()=>{if(o?.status!==`paused`||o.pausedReason!==`approval`||!o.activeNodeId)return null;let n=e.find(e=>e.id===o.activeNodeId);return n?{node:n,decisions:[...new Set(t.filter(e=>e.source===n.id&&typeof e.label==`string`&&e.label.trim()).map(e=>e.label.trim()))]}:null},[o,e,t]);return(0,X.jsxs)(`div`,{className:`flex h-full flex-col text-xs`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b bg-muted/30 px-3 py-2`,children:[(0,X.jsxs)(B,{size:`sm`,className:`h-7 gap-1 px-2`,onClick:C,disabled:k,children:[(0,X.jsx)(ii,{className:`h-3.5 w-3.5`}),` `,W(`engine.flowSim.run`,r)]}),(0,X.jsxs)(B,{size:`sm`,variant:`outline`,className:`h-7 gap-1 px-2`,onClick:w,disabled:k||O===`done`||O===`error`,children:[(0,X.jsx)(Ai,{className:`h-3.5 w-3.5`}),` `,W(`engine.flowSim.step`,r)]}),O===`paused`&&(j&&j.decisions.length>0?(0,X.jsx)(`div`,{className:`flex items-center gap-1`,children:j.decisions.map(e=>(0,X.jsxs)(B,{size:`sm`,variant:`outline`,className:`h-7 gap-1 px-2 capitalize`,onClick:()=>E(e),title:U(`engine.flowSim.resumeBranch`,r,{branch:e}),children:[(0,X.jsx)(Tn,{className:`h-3.5 w-3.5`}),` `,e]},e))}):(0,X.jsxs)(B,{size:`sm`,variant:`outline`,className:`h-7 gap-1 px-2`,onClick:T,children:[(0,X.jsx)(Tn,{className:`h-3.5 w-3.5`}),` `,W(`engine.flowSim.continue`,r)]})),(0,X.jsxs)(B,{size:`sm`,variant:`ghost`,className:`h-7 gap-1 px-2 text-muted-foreground`,onClick:D,children:[(0,X.jsx)(mi,{className:`h-3.5 w-3.5`}),` `,W(`engine.flowSim.reset`,r)]}),(0,X.jsx)(`span`,{className:L(`ml-auto rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase`,Jg[O===`idle`||O===`running`?`ok`:O]??`bg-muted`),children:W(`engine.flowSim.status.${O}`,r)})]}),(0,X.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-3 overflow-auto p-3`,children:[c&&(c.errors.length>0||c.warnings.length>0)&&(0,X.jsxs)(`div`,{className:`space-y-1`,children:[c.errors.map((e,t)=>(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 rounded border border-rose-200 bg-rose-50 px-2 py-1 text-rose-700`,children:[(0,X.jsx)(kn,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,X.jsx)(`span`,{children:e.message})]},`e${t}`)),c.warnings.map((e,t)=>(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 rounded border border-amber-200 bg-amber-50 px-2 py-1 text-amber-700`,children:[(0,X.jsx)(zi,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,X.jsx)(`span`,{children:e.message})]},`w${t}`))]}),A&&(0,X.jsxs)(`section`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:W(`engine.flowSim.screen`,r)}),(0,X.jsx)(Ug,{node:A.node,variables:A.variables,locale:r})]}),u.length>0&&(0,X.jsxs)(`section`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:W(`engine.flowSim.inputs`,r)}),u.map(e=>(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(I,{className:`w-24 shrink-0 truncate font-mono text-[11px]`,title:e.name,children:e.name}),(0,X.jsx)(z,{value:f[e.name]??(e.defaultValue==null?``:String(e.defaultValue)),onChange:t=>p(n=>({...n,[e.name]:t.target.value})),placeholder:e.type??W(`engine.flowSim.valuePlaceholder`,r),className:`h-7 flex-1 text-xs`})]},e.name))]}),(0,X.jsxs)(`section`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground`,children:[(0,X.jsx)(`span`,{children:W(`engine.flowSim.setVariables`,r)}),(0,X.jsxs)(`button`,{type:`button`,className:`ml-auto inline-flex items-center gap-0.5 rounded border px-1.5 py-0.5 text-[10px] hover:bg-muted/50`,onClick:()=>h(e=>[...e,{k:``,v:``}]),children:[(0,X.jsx)(H,{className:`h-3 w-3`}),` `,W(`engine.flowSim.add`,r)]})]}),m.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.flowSim.setVariablesHint`,r)}):m.map((e,t)=>(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(z,{value:e.k,onChange:e=>h(n=>n.map((n,r)=>r===t?{...n,k:e.target.value}:n)),placeholder:W(`engine.flowSim.namePlaceholder`,r),className:`h-7 w-24 shrink-0 font-mono text-[11px]`}),(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:`=`}),(0,X.jsx)(z,{value:e.v,onChange:e=>h(n=>n.map((n,r)=>r===t?{...n,v:e.target.value}:n)),placeholder:W(`engine.flowSim.valuePlaceholder`,r),className:`h-7 flex-1 text-xs`}),(0,X.jsx)(`button`,{type:`button`,className:`shrink-0 rounded p-1 text-muted-foreground hover:bg-muted/50 hover:text-rose-600`,onClick:()=>h(e=>e.filter((e,n)=>n!==t)),"aria-label":W(`engine.flowSim.removeVariable`,r),children:(0,X.jsx)(Li,{className:`h-3 w-3`})})]},t))]}),d.length>0&&(0,X.jsxs)(`section`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:W(`engine.flowSim.mockOutputs`,r)}),d.map(e=>(0,X.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,X.jsxs)(I,{className:`flex items-baseline gap-1.5 text-[11px]`,title:e.id,children:[(0,X.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,X.jsx)(`span`,{className:`text-[9px] uppercase text-muted-foreground`,children:e.type.replace(/_/g,` `)}),e.outputs.length>0&&(0,X.jsxs)(`span`,{className:`truncate font-mono text-[10px] text-violet-600`,children:[`→ `,e.outputs.join(`, `)]})]}),(0,X.jsx)(z,{value:g[e.id]??``,onChange:t=>_(n=>({...n,[e.id]:t.target.value})),placeholder:e.type===`script`&&e.outputs.length?`{ "${e.outputs[0]}": … }`:W(`engine.flowSim.mockPlaceholder`,r),className:`h-7 w-full font-mono text-[11px]`})]},e.id))]}),o&&(0,X.jsxs)(`section`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:W(`engine.flowSim.variables`,r)}),Object.keys(o.variables).length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.flowSim.noVars`,r)}):(0,X.jsx)(`ul`,{className:`space-y-1`,children:Object.entries(o.variables).map(([e,t])=>(0,X.jsxs)(`li`,{className:`flex items-baseline gap-1.5 rounded border bg-background px-1.5 py-1`,children:[(0,X.jsx)(`span`,{className:`font-mono text-[11px]`,children:e}),(0,X.jsxs)(`span`,{className:`truncate font-mono text-[10px] text-muted-foreground`,children:[`= `,typeof t==`object`?JSON.stringify(t):String(t)]})]},e))})]}),o&&o.steps.length>0&&(0,X.jsxs)(`section`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:W(`engine.flowSim.timeline`,r)}),(0,X.jsx)(`ol`,{className:`space-y-1`,children:o.steps.map(e=>(0,X.jsxs)(`li`,{className:`rounded border bg-background p-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.seq+1}),(0,X.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,X.jsx)(`span`,{className:`text-[10px] uppercase text-muted-foreground`,children:e.type}),(0,X.jsx)(`span`,{className:L(`ml-auto rounded px-1 py-0.5 text-[9px] font-semibold uppercase`,Jg[e.status]),children:W(`engine.flowSim.stepStatus.${e.status}`,r)})]}),e.note&&(0,X.jsx)(`div`,{className:`mt-0.5 text-[10px] text-muted-foreground`,children:e.note}),e.error&&(0,X.jsx)(`div`,{className:`mt-0.5 text-[10px] text-rose-600`,children:e.error}),e.wrote&&(0,X.jsxs)(`div`,{className:`mt-0.5 truncate font-mono text-[10px] text-violet-600`,children:[`→ `,Object.keys(e.wrote).join(`, `)]}),e.edges&&e.edges.length>0&&(0,X.jsx)(`ul`,{className:`mt-0.5 space-y-0.5`,children:e.edges.map(e=>(0,X.jsxs)(`li`,{className:`space-y-0.5`,children:[(0,X.jsxs)(`div`,{className:L(`flex items-center gap-1 font-mono text-[10px]`,e.selected?`text-sky-700`:`text-muted-foreground`),children:[(0,X.jsx)(`span`,{children:e.selected?`▶`:`·`}),(0,X.jsx)(`span`,{className:`truncate`,children:e.isDefault?`else`:e.condition??`→ ${e.target}`}),(0,X.jsx)(`span`,{className:L(`ml-auto`,e.error&&`text-rose-600`),children:e.error?W(`engine.flowSim.edge.error`,r):e.result?`true`:`false`})]}),e.error&&(0,X.jsx)(`div`,{className:`pl-3 text-[10px] text-rose-600`,children:e.error})]},e.edgeId))})]},e.seq))})]}),!o&&!k&&(0,X.jsx)(`p`,{className:`italic text-muted-foreground`,children:W(`engine.flowSim.idleHint`,r)})]})]})}function Xg(e){if(!e)return;if(typeof e==`string`)return e||void 0;let t=e.message;return typeof t==`string`&&t?t:void 0}function Zg(e){let t=[],n=[];for(let r of e){let e={step:r,children:[]};if(r.parentNodeId==null)n.length=0,t.push(e);else{for(;n.length>0&&n[n.length-1].step.nodeId!==r.parentNodeId;)n.pop();n.length>0?n[n.length-1].children.push(e):t.push(e)}n.push(e)}return t}function Qg(e){return e.branch==null?{branch:e.iteration,legacy:!0}:{branch:e.branch,iteration:e.iteration,legacy:!1}}function $g(e,t){let{regionKind:n,iteration:r}=e;if(!n)return null;switch(n){case`loop-body`:return r==null?W(`engine.flowRuns.iteration`,t):U(`engine.flowRuns.iterationN`,t,{n:r+1});case`parallel-branch`:{let n=Qg(e);return n.branch==null?W(`engine.flowRuns.branch`,t):n.iteration==null?U(`engine.flowRuns.branchN`,t,{n:n.branch+1}):U(`engine.flowRuns.branchNIterationM`,t,{n:n.branch+1,m:n.iteration+1})}case`try`:return W(`engine.flowRuns.try`,t);case`catch`:return W(`engine.flowRuns.catch`,t);default:return r==null?n:`${n} ${r+1}`}}function e_(e){if(e.regionKind===`parallel-branch`){let{branch:t,iteration:n,legacy:r}=Qg(e);return`parallel-branch#${r?`legacy:`:``}branch=${t??``}#iteration=${n??``}`}return`${e.regionKind??``}#${e.iteration??``}`}function t_(e,t){let n=[],r;for(let i of e){let e=e_(i.step);n.length===0||e!==r?(n.push({label:$g(i.step,t),items:[i]}),r=e):n[n.length-1].items.push(i)}return n}async function n_(e,t){try{let n=await fetch(`${Bu()}/automation/${encodeURIComponent(e)}/runs?limit=25`,{credentials:`include`,headers:{"Content-Type":`application/json`},signal:t});if(!n.ok)return null;let r=await n.json(),i=r?.data?.runs??r?.runs;return Array.isArray(i)?i:null}catch{return null}}var r_={completed:{icon:An,cls:`text-emerald-600 dark:text-emerald-400`,labelKey:`engine.flowRuns.status.completed`},failed:{icon:kn,cls:`text-rose-600 dark:text-rose-400`,labelKey:`engine.flowRuns.status.failed`},paused:{icon:Mn,cls:`text-amber-600 dark:text-amber-400`,labelKey:`engine.flowRuns.status.paused`},running:{icon:V,cls:`text-sky-600 dark:text-sky-400`,labelKey:`engine.flowRuns.status.running`},cancelled:{icon:Ti,cls:`text-muted-foreground`,labelKey:`engine.flowRuns.status.cancelled`}};function i_(e,t){let n=r_[e];return n?{icon:n.icon,cls:n.cls,label:W(n.labelKey,t)}:{icon:Rn,cls:`text-muted-foreground`,label:e}}function a_(e,t){if(!e)return`—`;let n=new Date(e);return Number.isNaN(n.getTime())?e:n.toLocaleString(t)}function o_(e){return e==null?null:e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.round(e/6e4)}m`}function s_({step:e,depth:t=0}){let n=e.status===`success`?`text-emerald-600 dark:text-emerald-400`:e.status===`failure`?`text-rose-600 dark:text-rose-400`:`text-muted-foreground`,r=Xg(e.error),i=Array.isArray(e.warnings)?e.warnings.filter(e=>typeof e==`string`&&e.length>0):[];return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`li`,{className:`flex items-baseline gap-1.5 py-0.5`,style:t?{paddingLeft:t*12}:void 0,children:[(0,X.jsx)(`span`,{className:L(`shrink-0 text-[9px] font-semibold uppercase`,n),children:e.status}),(0,X.jsx)(`span`,{className:`truncate font-mono text-[10px]`,title:e.nodeId,children:e.nodeId}),e.nodeType&&(0,X.jsx)(`span`,{className:`shrink-0 text-[9px] uppercase text-muted-foreground`,children:e.nodeType}),i.length>0&&(0,X.jsx)(zi,{"aria-hidden":!0,className:`h-2.5 w-2.5 shrink-0 text-amber-600 dark:text-amber-400`}),o_(e.durationMs)&&(0,X.jsx)(`span`,{className:`ml-auto shrink-0 text-[9px] text-muted-foreground`,children:o_(e.durationMs)}),r&&(0,X.jsx)(`span`,{className:`min-w-0 truncate text-[9px] text-rose-600`,title:r,children:r})]}),i.map((e,n)=>(0,X.jsxs)(`li`,{className:`flex items-baseline gap-1 py-0.5 text-amber-700 dark:text-amber-400`,style:{paddingLeft:(t+1)*12},children:[(0,X.jsx)(zi,{"aria-hidden":!0,className:`h-2.5 w-2.5 shrink-0 self-center`}),(0,X.jsx)(`span`,{className:`min-w-0 break-words text-[9px]`,title:e,children:e})]},n))]})}function c_({label:e,depth:t}){return(0,X.jsxs)(`li`,{className:`flex items-center gap-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground/80`,style:{paddingLeft:t*12},children:[(0,X.jsx)(`span`,{"aria-hidden":!0,className:`text-muted-foreground/50`,children:`↳`}),e]})}function l_({node:e,depth:t,locale:n}){let r=e.children.length>0?t_(e.children,n):[];return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(s_,{step:e.step,depth:t}),r.map((e,r)=>(0,X.jsxs)(Y.Fragment,{children:[e.label!=null&&(0,X.jsx)(c_,{label:e.label,depth:t+1}),e.items.map((r,i)=>(0,X.jsx)(l_,{node:r,depth:e.label==null?t+1:t+2,locale:n},`${r.step.nodeId}#${i}`))]},r))]})}function u_({run:e,locale:t}){let n=qt(),[r,i]=Y.useState(!1),a=i_(e.status,t),o=a.icon,s=Array.isArray(e.steps)?e.steps:[],c=Xg(e.error);return(0,X.jsxs)(`li`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`flex w-full items-center gap-1.5 p-1.5 text-left`,"aria-expanded":r,children:[r?(0,X.jsx)(wn,{className:`h-3 w-3 shrink-0 text-muted-foreground`}):(0,X.jsx)(Tn,{className:`h-3 w-3 shrink-0 text-muted-foreground`}),(0,X.jsx)(o,{className:L(`h-3.5 w-3.5 shrink-0`,a.cls,e.status===`running`&&`animate-spin`)}),(0,X.jsx)(`span`,{className:L(`shrink-0 text-[10px] font-semibold`,a.cls),children:a.label}),(0,X.jsx)(`span`,{className:`min-w-0 truncate text-[10px] text-muted-foreground`,title:e.id,children:a_(e.startedAt,n)}),o_(e.durationMs)&&(0,X.jsx)(`span`,{className:`ml-auto shrink-0 text-[10px] text-muted-foreground`,children:o_(e.durationMs)})]}),r&&(0,X.jsxs)(`div`,{className:`border-t px-2 py-1.5`,children:[(0,X.jsxs)(`div`,{className:`pb-1 font-mono text-[9px] text-muted-foreground`,title:e.id,children:[`run `,e.id,e.trigger?.type&&` · trigger ${e.trigger.type}`]}),c&&(0,X.jsx)(`div`,{className:`pb-1 text-[10px] text-rose-600`,children:c}),s.length===0?(0,X.jsx)(We,{className:`text-[10px] italic`,children:W(`engine.flowRuns.noSteps`,t)}):(0,X.jsx)(`ul`,{children:Zg(s).map((e,n)=>(0,X.jsx)(l_,{node:e,depth:0,locale:t},`${e.step.nodeId}#${n}`))})]})]})}function d_({flowName:e,locale:t}){let[n,r]=Y.useState([]),[i,a]=Y.useState(`loading`),[o,s]=Y.useState(0);return Y.useEffect(()=>{let t=new AbortController,n=!0;return a(`loading`),(async()=>{let i=await n_(e,t.signal);n&&(i===null?a(`unavailable`):(r(i),a(`ready`)))})(),()=>{n=!1,t.abort()}},[e,o]),(0,X.jsxs)(`div`,{className:`flex h-full flex-col p-3 text-xs`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 pb-2 font-medium text-muted-foreground`,children:[(0,X.jsx)(Rn,{className:`h-3 w-3`}),` `,W(`engine.flowRuns.title`,t),(0,X.jsx)(`button`,{type:`button`,onClick:()=>s(e=>e+1),title:W(`engine.flowRuns.refresh`,t),"aria-label":W(`engine.flowRuns.refresh`,t),className:`ml-auto rounded p-0.5 text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground`,children:(0,X.jsx)(li,{className:L(`h-3 w-3`,i===`loading`&&`animate-spin`)})})]}),i===`unavailable`?(0,X.jsx)(`div`,{className:`italic text-muted-foreground`,children:W(`engine.flowRuns.unavailable`,t)}):i===`ready`&&n.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.flowRuns.empty`,t)}):(0,X.jsx)(`ul`,{className:`min-h-0 flex-1 space-y-1.5 overflow-y-auto`,children:n.map(e=>(0,X.jsx)(u_,{run:e,locale:t},e.id))})]})}function f_(e){return e.target.kind===`node`?e.target.nodeId:e.target.kind===`edge`?`${e.target.source} → ${e.target.target}`:`flow`}function p_({problems:e,selectedKey:t,onSelectProblem:n,locale:r}){let i=e.filter(e=>e.level===`error`).length,a=e.length-i;return(0,X.jsxs)(`div`,{className:`flex h-full flex-col text-xs`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-3 py-2 font-medium text-muted-foreground`,children:[(0,X.jsx)(`span`,{children:W(`engine.flowProblems.title`,r)}),i>0&&(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-destructive`,children:[(0,X.jsx)(kn,{className:`h-3 w-3`}),` `,i]}),a>0&&(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-amber-600 dark:text-amber-400`,children:[(0,X.jsx)(zi,{className:`h-3 w-3`}),` `,a]})]}),e.length===0?(0,X.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-1.5 p-4 text-center text-muted-foreground`,children:[(0,X.jsx)(An,{className:`h-5 w-5 text-emerald-500`}),(0,X.jsx)(`span`,{children:W(`engine.flowProblems.empty`,r)})]}):(0,X.jsx)(`ul`,{className:`flex-1 overflow-auto p-1.5`,children:e.map(e=>{let i=e.target.kind===`edge`,a=e.target.kind===`flow`,o=e.target.kind===`node`?`node:${e.target.nodeId}`:e.target.kind===`edge`?e.target.edgeKey:null,s=!!o&&o===t,c=e.level===`error`?kn:zi,l=i?_r:jn;return(0,X.jsx)(`li`,{children:(0,X.jsxs)(`button`,{type:`button`,disabled:a,onClick:()=>n(e),className:L(`flex w-full items-start gap-2 rounded-md px-2 py-1.5 text-left transition-colors`,a?`cursor-default`:`cursor-pointer hover:bg-accent`,s&&`bg-accent ring-1 ring-primary/40`),children:[(0,X.jsx)(c,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,e.level===`error`?`text-destructive`:`text-amber-500`)}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block leading-snug text-foreground`,children:e.message}),(0,X.jsxs)(`span`,{className:`mt-0.5 flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,X.jsx)(l,{className:`h-2.5 w-2.5 shrink-0`}),(0,X.jsx)(`span`,{className:`truncate font-mono`,children:f_(e)}),e.source===`server`&&(0,X.jsxs)(`span`,{className:`uppercase tracking-wide`,children:[`· `,W(`engine.flowProblems.sourceSchema`,r)]}),e.source===`expression`&&(0,X.jsxs)(`span`,{className:`uppercase tracking-wide`,children:[`· `,W(`engine.flowProblems.sourceExpression`,r)]})]})]})]})},e.id)})})]})}function m_({draft:e,editing:t,selection:n,onSelectionChange:r,onPatch:i,locale:a,diagnostics:o}){let s=e,c=Y.useMemo(()=>Array.isArray(s.nodes)?s.nodes:[],[s.nodes]),l=Y.useMemo(()=>Array.isArray(s.edges)?s.edges:[],[s.edges]),u=Array.isArray(s.variables)?s.variables:[],d=!!(t&&r),f=d&&!!i,p=n&&n.kind===`node`?n.id:null,m=n&&n.kind===`edge`?n.id:null,h=Y.useMemo(()=>n&&n.kind===`nested-node`?Sg(n.id):null,[n]),[g,_]=Y.useState(!1),[v,y]=Y.useState(!1),[b,x]=Y.useState(!1),[S,C]=Y.useState(!1),[w,T]=Y.useState(null),E=Y.useMemo(()=>lg({nodes:c,edges:l,serverDiagnostics:o,variables:u,locale:a}),[c,l,o,s.variables,a]),D=E.filter(e=>e.level===`error`).length,{invalidNodeIds:O,invalidEdges:k}=Y.useMemo(()=>fg(E),[E]),[A,j]=Y.useState(null),M=p?`node:${p}`:m??null,N=Y.useCallback(e=>{if(e.target.kind===`node`){let{nodeId:t}=e.target,n=c.find(e=>e.id===t);r?.({kind:`node`,id:t,label:n?.label||t})}else e.target.kind===`edge`&&r?.({kind:`edge`,id:e.target.edgeKey,label:`${e.target.source} → ${e.target.target}`});j(t=>({target:e.target,nonce:(t?.nonce??0)+1}))},[c,r]),P=Y.useCallback(()=>{if(!f)return;let e={id:Rc(`node`,c.map(e=>e.id).filter(Boolean)),type:`start`,label:jm(`start`,a)};i({nodes:ss(c,e)}),r?.({kind:`node`,id:e.id,label:e.label||e.id})},[f,c,i,r,a]),ee=typeof s.name==`string`&&s.name?s.name:``,te=String(s.type??`autolaunched`),ne=String(s.status??(s.active?`active`:`draft`)),re=String(s.runAs??`user`),ie=s.version==null?void 0:String(s.version),F=s.errorHandling?.strategy;return c.length===0?(0,X.jsx)(Z,{hint:`flow${d?` · design`:``}`,children:f?(0,X.jsx)(`div`,{className:`p-3`,children:(0,X.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded border border-dashed px-3 py-2 text-xs text-muted-foreground hover:bg-muted/30 hover:text-foreground`,onClick:P,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),W(`engine.inspector.add.node`,a)]})}):(0,X.jsx)(sf,{children:W(`engine.flowPreview.emptyHint`,a)})}):(0,X.jsx)(Z,{hint:`flow · ${c.length} node${c.length===1?``:`s`}`,children:(0,X.jsx)(Q,{fallbackHint:W(`engine.flowPreview.malformed`,a),children:(0,X.jsxs)(`div`,{className:`grid gap-0 h-full min-h-[440px] `+(g||v||b||S?`lg:grid-cols-[1fr_240px]`:`grid-cols-1`),children:[(0,X.jsxs)(`div`,{className:`flex flex-col min-w-0 min-h-0`,children:[(0,X.jsxs)(`div`,{className:`rounded-none border-b bg-muted/30 px-3 py-2 text-xs flex flex-wrap items-center gap-x-4 gap-y-1`,children:[(0,X.jsx)(h_,{icon:Ji,label:W(`engine.flowPreview.pill.trigger`,a),value:Lo(`type`,te,a)}),(0,X.jsx)(h_,{icon:jn,label:W(`engine.flowPreview.pill.status`,a),value:Lo(`status`,ne,a),tone:ne===`active`?`green`:ne===`draft`?`gray`:`amber`}),(0,X.jsx)(h_,{icon:yi,label:W(`engine.flowPreview.pill.runAs`,a),value:Lo(`runAs`,re,a)}),ie&&(0,X.jsx)(h_,{label:`v`,value:ie}),F&&(0,X.jsx)(h_,{icon:_r,label:W(`engine.flowPreview.pill.onError`,a),value:Lo(`onError`,F,a)}),(0,X.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[!g&&!b&&!S&&(0,X.jsxs)(`button`,{type:`button`,onClick:()=>y(e=>!e),className:`inline-flex items-center gap-1 rounded border px-2 py-0.5 text-[11px] font-medium transition-colors `+(v?`border-violet-500 bg-violet-50 text-violet-700`:`border-border text-muted-foreground hover:bg-muted/50 hover:text-foreground`),title:W(v?`engine.flowPreview.hideVars`:`engine.flowPreview.showVars`,a),children:[(0,X.jsx)($r,{className:`h-3 w-3`}),` `,W(`engine.flowPreview.variables`,a)]}),ee&&(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{x(e=>!e),_(!1),C(!1)},className:`inline-flex items-center gap-1 rounded border px-2 py-0.5 text-[11px] font-medium transition-colors `+(b?`border-emerald-500 bg-emerald-50 text-emerald-700`:`border-border text-muted-foreground hover:bg-muted/50 hover:text-foreground`),title:W(`engine.flowPreview.runsTitle`,a),children:[(0,X.jsx)(pi,{className:`h-3 w-3`}),` `,W(`engine.flowPreview.runs`,a)]}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{C(e=>!e),_(!1),x(!1)},className:`inline-flex items-center gap-1 rounded border px-2 py-0.5 text-[11px] font-medium transition-colors `+(S?`border-rose-500 bg-rose-50 text-rose-700`:`border-border text-muted-foreground hover:bg-muted/50 hover:text-foreground`),title:W(`engine.flowPreview.problemsTitle`,a),children:[(0,X.jsx)(kn,{className:`h-3 w-3`}),` `,W(`engine.flowPreview.problems`,a),E.length>0&&(0,X.jsx)(`span`,{className:`ml-0.5 inline-flex min-w-[16px] items-center justify-center rounded-full px-1 text-[10px] font-semibold `+(D>0?`bg-destructive/15 text-destructive`:`bg-amber-500/15 text-amber-600`),children:E.length})]}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{_(e=>!e),x(!1),C(!1)},className:`inline-flex items-center gap-1 rounded border px-2 py-0.5 text-[11px] font-medium transition-colors `+(g?`border-sky-500 bg-sky-50 text-sky-700`:`border-border text-muted-foreground hover:bg-muted/50 hover:text-foreground`),children:[(0,X.jsx)(pn,{className:`h-3 w-3`}),` `,W(`engine.flowPreview.debug`,a)]})]})]}),(0,X.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,X.jsx)(gg,{nodes:c,edges:l,editable:f,designMode:d,selectedId:p,selectedEdgeId:m,locale:a,activeNodeId:w?.activeNodeId??null,visitedNodeIds:w?.visitedNodeIds,traversedEdgeIds:w?.traversedEdgeIds,invalidNodeIds:O,invalidEdges:k,onRevealProblem:N,problems:E,revealSignal:A,onSelect:e=>e?r?.({kind:`node`,id:e.id,label:e.label||e.id}):r?.(null),onSelectEdge:(e,t)=>e?r?.({kind:`edge`,id:t,label:`${e.source} → ${e.target}`}):r?.(null),selectedNestedPath:h,onSelectNested:(e,t)=>e?r?.({kind:vg,id:xg(e),label:t?.label||e.nodeId}):r?.(null),onPatch:i})})]}),S?(0,X.jsx)(`div`,{className:`border-l bg-muted/20`,children:(0,X.jsx)(p_,{problems:E,selectedKey:M,onSelectProblem:N,locale:a})}):g?(0,X.jsx)(`div`,{className:`border-l bg-muted/20`,children:(0,X.jsx)(Yg,{nodes:c,edges:l,variables:u,locale:a,onRunStateChange:T})}):b&&ee?(0,X.jsx)(`div`,{className:`border-l bg-muted/20`,children:(0,X.jsx)(d_,{flowName:ee,locale:a})}):v?(0,X.jsxs)(`div`,{className:`border-l bg-muted/20 p-3 text-xs space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground`,children:[(0,X.jsx)(Wi,{className:`h-3 w-3`}),` `,W(`engine.flowPreview.variables`,a)]}),u.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.flowPreview.noVars`,a)}):(0,X.jsx)(`ul`,{className:`space-y-1.5`,children:u.map((e,t)=>(0,X.jsxs)(`li`,{className:`rounded border bg-background p-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-baseline gap-1 flex-wrap`,children:[(0,X.jsx)(`span`,{className:`font-mono`,children:e.name}),e.type&&(0,X.jsx)(`span`,{className:`text-[10px] uppercase text-muted-foreground`,children:e.type}),e.isInput&&(0,X.jsx)(`span`,{className:`text-[9px] font-semibold uppercase px-1 rounded bg-sky-100 text-sky-700`,children:`in`}),e.isOutput&&(0,X.jsx)(`span`,{className:`text-[9px] font-semibold uppercase px-1 rounded bg-emerald-100 text-emerald-700`,children:`out`})]}),e.defaultValue!==void 0&&(0,X.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono truncate`,children:[`= `,String(e.defaultValue)]})]},e.name||t))})]}):null]})})})}function h_({icon:e,label:t,value:n,tone:r=`gray`}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsxs)(`span`,{className:`text-muted-foreground`,children:[t,`:`]}),(0,X.jsx)(`span`,{className:`font-medium ${r===`green`?`text-emerald-700`:r===`amber`?`text-amber-700`:`text-foreground`}`,children:n})]})}function g_({agentName:e,locale:t}){return r()?(0,X.jsxs)(a,{to:`/ai/${encodeURIComponent(Ta(e))}?new=1`,target:`_blank`,rel:`noreferrer`,className:`text-xs inline-flex items-center gap-1 text-muted-foreground hover:text-foreground`,title:W(`engine.agentPreview.tryInChatTitle`,t),children:[W(`engine.agentPreview.tryInChat`,t),` `,(0,X.jsx)($n,{className:`h-3 w-3`})]}):null}function __({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=String(r.role??``),s=r.avatar||void 0,c=String(r.instructions??``),l=r.active!==!1,u=r.model??{},d=Array.isArray(r.skills)?r.skills:[],f=r.planning,p=r.memory,m=r.guardrails,h=Array.isArray(r.permissions)?r.permissions:[];return!i&&!c&&d.length===0?(0,X.jsx)(Z,{hint:`agent`,children:(0,X.jsx)(sf,{children:W(`engine.agentPreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`agent`,toolbar:i&&(0,X.jsx)(g_,{agentName:i,locale:n}),children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`grid lg:grid-cols-[1fr_240px] gap-0`,children:[(0,X.jsxs)(`div`,{className:`p-3 space-y-3 min-w-0`,children:[(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 p-3 flex items-start gap-3`,children:[(0,X.jsx)(`div`,{className:`h-10 w-10 rounded-full bg-background border flex items-center justify-center shrink-0 overflow-hidden`,children:s?(0,X.jsx)(`img`,{src:s,alt:``,className:`h-full w-full object-cover`}):(0,X.jsx)(cn,{className:`h-5 w-5 text-muted-foreground`})}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i})]}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:o}),(0,X.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsx)(w_,{icon:l?tr:er,label:W(l?`engine.agentPreview.active`:`engine.agentPreview.disabled`,n),tone:l?`green`:`gray`}),u.provider&&(0,X.jsx)(w_,{icon:Ei,label:`${u.provider}${u.model?` · ${u.model}`:``}`,mono:!0}),u.temperature!=null&&(0,X.jsx)(w_,{icon:gr,label:U(`engine.agentPreview.temperature`,n,{value:String(u.temperature)})}),u.maxTokens!=null&&(0,X.jsx)(w_,{label:U(`engine.agentPreview.maxTokens`,n,{count:String(u.maxTokens)})})]})]})]}),(0,X.jsx)(v_,{title:W(`engine.agentPreview.instructions`,n),icon:_i,children:c?(0,X.jsx)(`pre`,{className:`m-0 rounded border bg-background p-2.5 text-xs whitespace-pre-wrap font-mono max-h-[40vh] overflow-auto`,children:c}):(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.agentPreview.noInstructions`,n)})}),(0,X.jsx)(v_,{title:W(`engine.agentPreview.capabilities`,n),icon:Ei,children:(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(b_,{label:W(`engine.agentPreview.skills`,n),emptyHint:W(`engine.agentPreview.noSkills`,n),items:d.map(e=>({key:e,label:e})),icon:Ei,tone:`violet`,mono:!0}),(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:W(`engine.agentPreview.toolsNote`,n)})]})})]}),(0,X.jsxs)(`div`,{className:`border-l bg-muted/20 p-3 text-xs space-y-3`,children:[f&&Object.keys(f).length>0&&(0,X.jsx)(x_,{icon:fn,title:W(`engine.agentPreview.planning`,n),children:(0,X.jsx)(S_,{data:f,keys:[`maxIterations`],locale:n})}),p&&Object.keys(p).length>0&&(0,X.jsx)(x_,{icon:Zt,title:W(`engine.agentPreview.memory`,n),children:(0,X.jsx)(S_,{data:{"short.maxMessages":p.shortTerm?.maxMessages,"long.enabled":p.longTerm?.enabled,"long.store":p.longTerm?.store},keys:[`short.maxMessages`,`long.enabled`,`long.store`],locale:n})}),m&&Object.keys(m).length>0&&(0,X.jsx)(x_,{icon:Ci,title:W(`engine.agentPreview.guardrails`,n),children:(0,X.jsx)(S_,{data:m,keys:Object.keys(m).slice(0,6),locale:n})}),h.length>0&&(0,X.jsx)(x_,{icon:Lr,title:W(`engine.agentPreview.permissions`,n),children:(0,X.jsx)(`ul`,{className:`space-y-0.5`,children:h.map(e=>(0,X.jsx)(`li`,{className:`font-mono`,children:e},e))})}),!f&&!p&&!m&&h.length===0&&(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.agentPreview.defaults`,n)})]})]})})})}function v_({title:e,icon:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[t&&(0,X.jsx)(t,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e})]}),n]})}var y_={violet:{chip:`border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-900 dark:bg-violet-950/40 dark:text-violet-300`,icon:`text-violet-500 dark:text-violet-400`}};function b_({label:e,emptyHint:t,items:n,icon:r,tone:i,mono:a=!1}){let o=i?y_[i]:null;return(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground tracking-wider mb-1`,children:e}),n.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:t}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:n.map(e=>(0,X.jsxs)(`span`,{className:L(`inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[11px]`,o?o.chip:`bg-background`,a&&`font-mono`),children:[r&&(0,X.jsx)(r,{className:L(`h-3 w-3 shrink-0`,o?.icon)}),e.label,e.hint&&(0,X.jsx)(`span`,{className:`text-[9px] uppercase opacity-70`,children:e.hint})]},e.key))})]})}function x_({icon:e,title:t,children:n}){return(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] uppercase text-muted-foreground tracking-wider mb-1`,children:[(0,X.jsx)(e,{className:`h-3 w-3`}),` `,t]}),n]})}function S_({data:e,keys:t,locale:n}){let r=t.map(t=>[t,C_(e,t)]).filter(([,e])=>e!=null);return r.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.agentPreview.noValues`,n)}):(0,X.jsx)(`dl`,{className:`space-y-0.5`,children:r.map(([e,t])=>(0,X.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,X.jsx)(`dt`,{className:`text-muted-foreground font-mono truncate`,children:e}),(0,X.jsx)(`dd`,{className:`font-mono text-right truncate`,children:String(t)})]},e))})}function C_(e,t){let n=t.split(`.`),r=e;for(let e of n){if(r==null)return;r=r[e]}return r}function w_({icon:e,label:t,tone:n=`gray`,mono:r=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`${n===`green`?`text-emerald-700`:n===`amber`?`text-amber-700`:`text-foreground`} ${r?`font-mono`:``}`,children:t})]})}function T_(e){return!!e&&typeof e==`object`&&typeof e.properties==`object`}function E_(e){return e?Array.isArray(e.type)?e.type.join(`|`):e.type===`array`&&e.items?`${E_(e.items)}[]`:e.$ref?e.$ref.split(`/`).pop()||`ref`:e.type??`any`:`any`}function D_(e){if(e.default!==void 0)return e.default;if(Array.isArray(e.enum)&&e.enum.length)return e.enum[0];switch(Array.isArray(e.type)?e.type[0]:e.type){case`string`:return e.format?`<${e.format}>`:`<string>`;case`number`:case`integer`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:return{};default:return null}}var O_=`developer:api-console`;function k_({toolName:e,locale:t}){return r()?(0,X.jsx)(A_,{toolName:e,locale:t}):null}function A_({toolName:e,locale:t}){let{appName:n}=i();if(!n)return null;let r=new URLSearchParams({path:`/api/v1/ai/tools/${encodeURIComponent(e)}/execute`,method:`POST`}),o=ls(O_).join(`/`);return(0,X.jsxs)(a,{to:`/apps/${encodeURIComponent(n)}/component/${o}?${r.toString()}`,target:`_blank`,rel:`noreferrer`,className:`text-xs inline-flex items-center gap-1 text-muted-foreground hover:text-foreground`,title:W(`engine.toolPreview.openApiConsoleTitle`,t),children:[W(`engine.toolPreview.openApiConsole`,t),` `,(0,X.jsx)($n,{className:`h-3 w-3`})]})}function j_({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=String(r.description??``),s=r.objectName||void 0,c=r.parameters??{},l=r.outputSchema??void 0,u=T_(c)?c.properties??{}:{},d=new Set(Array.isArray(c.required)?c.required:[]),f=Y.useMemo(()=>{let e={};for(let t of d)u[t]&&(e[t]=D_(u[t]));if(Object.keys(e).length===0){let t=Object.keys(u)[0];t&&(e[t]=D_(u[t]))}return e},[u,d]);return!i&&!o&&Object.keys(u).length===0?(0,X.jsx)(Z,{hint:`tool`,children:(0,X.jsx)(sf,{children:W(`engine.toolPreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`tool`,toolbar:i&&(0,X.jsx)(k_,{toolName:i,locale:n}),children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 p-3 space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(Ki,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i})]}),s&&(0,X.jsx)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:(0,X.jsx)(P_,{icon:qn,label:s,mono:!0})})]})]}),o&&(0,X.jsx)(`div`,{className:`pl-6 text-xs text-foreground whitespace-pre-wrap`,children:o})]}),(0,X.jsx)(N_,{title:W(`engine.toolPreview.inputParameters`,n),count:Object.keys(u).length,children:Object.keys(u).length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.toolPreview.noParameters`,n)}):(0,X.jsx)(M_,{props:u,required:d,locale:n})}),Object.keys(u).length>0&&(0,X.jsx)(N_,{title:W(`engine.toolPreview.exampleCall`,n),icon:nr,children:(0,X.jsx)(`pre`,{className:`m-0 rounded border bg-background p-2.5 text-xs font-mono overflow-auto max-h-[200px]`,children:`{
13
- "tool": "${i}",
14
- "arguments": ${JSON.stringify(f,null,2).replace(/\n/g,`
15
- `)}
16
- }`})}),T_(l)&&l.properties&&Object.keys(l.properties).length>0&&(0,X.jsx)(N_,{title:W(`engine.toolPreview.outputSchema`,n),count:Object.keys(l.properties).length,icon:ln,children:(0,X.jsx)(M_,{props:l.properties,required:new Set(Array.isArray(l.required)?l.required:[]),locale:n})})]})})})}function M_({props:e,required:t,locale:n}){let r=Object.keys(e);return(0,X.jsx)(`div`,{className:`rounded border bg-background overflow-hidden`,children:(0,X.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,X.jsx)(`thead`,{children:(0,X.jsxs)(`tr`,{className:`bg-muted/30 text-left text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 font-medium`,children:W(`engine.toolPreview.col.name`,n)}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 font-medium`,children:W(`engine.toolPreview.col.type`,n)}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 font-medium`,children:W(`engine.toolPreview.col.description`,n)})]})}),(0,X.jsx)(`tbody`,{className:`divide-y`,children:r.map(r=>{let i=e[r],a=t.has(r);return(0,X.jsxs)(`tr`,{className:`align-top`,children:[(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[a?(0,X.jsx)(An,{className:`h-3 w-3 text-emerald-600`}):(0,X.jsx)(Tn,{className:`h-3 w-3 text-muted-foreground`}),r,a&&(0,X.jsx)(`span`,{className:`text-[9px] uppercase text-emerald-700 ml-1`,children:W(`engine.toolPreview.required`,n)})]})}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono text-muted-foreground`,children:E_(i)}),(0,X.jsxs)(`td`,{className:`px-2.5 py-1.5`,children:[i.description&&(0,X.jsx)(`div`,{children:i.description}),Array.isArray(i.enum)&&i.enum.length>0&&(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:U(`engine.toolPreview.enum`,n,{values:i.enum.map(e=>JSON.stringify(e)).join(` | `)})}),i.default!==void 0&&(0,X.jsxs)(`div`,{className:`text-[10px] text-muted-foreground`,children:[W(`engine.toolPreview.default`,n),` `,(0,X.jsx)(`code`,{className:`font-mono`,children:JSON.stringify(i.default)})]}),i.format&&(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:U(`engine.toolPreview.format`,n,{format:i.format})})]})]},r)})})]})})}function N_({title:e,count:t,icon:n,children:r}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[n&&(0,X.jsx)(n,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e}),t!=null&&(0,X.jsxs)(`span`,{className:`opacity-70`,children:[`(`,t,`)`]})]}),r]})}function P_({icon:e,label:t,mono:n=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`text-foreground ${n?`font-mono`:``}`,children:t})]})}var F_=[{key:`allowCreate`,short:`C`,long:`engine.permissionPreview.cap.create`},{key:`allowRead`,short:`R`,long:`engine.permissionPreview.cap.read`},{key:`allowEdit`,short:`U`,long:`engine.permissionPreview.cap.edit`},{key:`allowDelete`,short:`D`,long:`engine.permissionPreview.cap.delete`},{key:`allowExport`,short:`E`,long:`engine.permissionPreview.cap.export`},{key:`allowTransfer`,short:`T`,long:`engine.permissionPreview.cap.transfer`},{key:`viewAllRecords`,short:`V*`,long:`engine.permissionPreview.cap.viewAll`,danger:!0},{key:`modifyAllRecords`,short:`M*`,long:`engine.permissionPreview.cap.modifyAll`,danger:!0}],I_=[`own`,`own_and_reports`,`unit`,`unit_and_below`,`org`],L_={own:`own`,own_and_reports:`own+reports`,unit:`unit`,unit_and_below:`unit+below`,org:`org`};function R_(e){let t=[];for(let[n,r]of Object.entries(e)){r.allowEdit&&!r.allowRead&&t.push({object:n,messageKey:`engine.permissionPreview.warn.editWithoutRead`}),r.allowDelete&&!r.allowRead&&t.push({object:n,messageKey:`engine.permissionPreview.warn.deleteWithoutRead`}),r.modifyAllRecords&&!r.viewAllRecords&&t.push({object:n,messageKey:`engine.permissionPreview.warn.modifyAllWithoutViewAll`});let e=r.readScope?I_.indexOf(r.readScope):-1,i=r.writeScope?I_.indexOf(r.writeScope):-1;e>=0&&i>e&&t.push({object:n,messageKey:`engine.permissionPreview.warn.writeWiderThanRead`,vars:{write:L_[r.writeScope],read:L_[r.readScope]}})}return t}function z_({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=!!r.isDefault,s=r.objects??{},c=r.fields??{},l=Array.isArray(r.systemPermissions)?r.systemPermissions:[],u=r.tabPermissions??{},d=Array.isArray(r.rowLevelSecurity)?r.rowLevelSecurity:[],f=Y.useMemo(()=>Object.keys(s).sort(),[s]),p=Y.useMemo(()=>R_(s),[s]),m=Y.useMemo(()=>{let e=new Map;for(let[t,n]of Object.entries(c)){let[r,...i]=t.split(`.`);if(!r||i.length===0)continue;let a=i.join(`.`);(n.readable===!1||n.editable===!0)&&(e.has(r)||e.set(r,[]),e.get(r).push({field:a,perm:n}))}return e},[c]);return f.length===0&&l.length===0&&Object.keys(u).length===0?(0,X.jsx)(Z,{hint:`permission`,children:(0,X.jsx)(sf,{children:W(`engine.permissionPreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`permission · ${f.length} object${f.length===1?``:`s`}`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[o?(0,X.jsx)(ki,{className:`h-4 w-4 mt-0.5 text-amber-600 shrink-0`}):(0,X.jsx)(xi,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i}),(0,X.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:W(o?`engine.permissionPreview.kind.default`:`engine.permissionPreview.kind.set`,n)})]}),(0,X.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsx)(U_,{icon:Ar,label:U(`engine.permissionPreview.pill.objects`,n,{count:f.length})}),(0,X.jsx)(U_,{icon:Pi,label:U(`engine.permissionPreview.pill.systemPerms`,n,{count:l.length})}),(0,X.jsx)(U_,{icon:tr,label:U(`engine.permissionPreview.pill.tabs`,n,{count:Object.keys(u).length})}),(0,X.jsx)(U_,{icon:Lr,label:U(`engine.permissionPreview.pill.rls`,n,{count:d.length})})]})]})]})}),f.length>0&&(0,X.jsxs)(H_,{title:W(`engine.permissionPreview.section.objects`,n),count:f.length,children:[(0,X.jsx)(`div`,{className:`rounded border bg-background overflow-x-auto`,children:(0,X.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,X.jsx)(`thead`,{children:(0,X.jsxs)(`tr`,{className:`bg-muted/30 text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 text-left font-medium sticky left-0 bg-muted/30`,children:W(`engine.permissionPreview.col.object`,n)}),F_.map(e=>(0,X.jsx)(`th`,{className:`px-1.5 py-1.5 text-center font-medium`,title:W(e.long,n),children:e.short},e.key)),(0,X.jsx)(`th`,{className:`px-2 py-1.5 text-left font-medium`,title:W(`engine.permissionPreview.col.scopeTitle`,n),children:W(`engine.permissionPreview.col.scope`,n)})]})}),(0,X.jsx)(`tbody`,{className:`divide-y`,children:f.map(e=>{let t=s[e]??{};return(0,X.jsxs)(`tr`,{children:[(0,X.jsx)(`td`,{className:`px-2.5 py-1 font-mono sticky left-0 bg-background`,children:e}),F_.map(e=>{let r=!!t[e.key];return(0,X.jsx)(`td`,{className:`px-1.5 py-1 text-center`,children:(0,X.jsx)(B_,{granted:r,danger:e.danger,locale:n})},e.key)}),(0,X.jsx)(`td`,{className:`px-2 py-1 whitespace-nowrap text-[10px] text-muted-foreground`,children:t.readScope||t.writeScope?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`span`,{title:W(`engine.permissionPreview.readScope`,n),children:t.readScope?L_[t.readScope]:`—`}),(0,X.jsx)(`span`,{className:`mx-1 opacity-50`,children:`/`}),(0,X.jsx)(`span`,{title:W(`engine.permissionPreview.writeScope`,n),children:t.writeScope?L_[t.writeScope]:`—`})]}):(0,X.jsx)(`span`,{className:`opacity-40`,children:W(`engine.permissionPreview.scopeDefault`,n)})})]},e)})})]})}),(0,X.jsx)(V_,{locale:n})]}),m.size>0&&(0,X.jsx)(H_,{title:W(`engine.permissionPreview.section.fields`,n),count:Array.from(m.values()).reduce((e,t)=>e+t.length,0),children:(0,X.jsx)(`div`,{className:`rounded border bg-background divide-y text-xs`,children:Array.from(m.entries()).sort().map(([e,t])=>(0,X.jsxs)(`div`,{className:`px-2.5 py-2`,children:[(0,X.jsx)(`div`,{className:`font-mono text-[11px] mb-1`,children:e}),(0,X.jsx)(`ul`,{className:`flex flex-wrap gap-1`,children:t.map(({field:e,perm:t})=>(0,X.jsxs)(`li`,{className:`inline-flex items-center gap-1 rounded border bg-muted/30 px-1.5 py-0.5`,title:`readable=${t.readable!==!1}, editable=${!!t.editable}`,children:[(0,X.jsx)(`span`,{className:`font-mono`,children:e}),t.readable===!1&&(0,X.jsx)(`span`,{className:`text-[9px] uppercase text-red-700`,children:W(`engine.permissionPreview.fls.hidden`,n)}),t.editable&&(0,X.jsx)(`span`,{className:`text-[9px] uppercase text-emerald-700`,children:W(`engine.permissionPreview.fls.editable`,n)})]},e))})]},e))})}),l.length>0&&(0,X.jsx)(H_,{title:W(`engine.permissionPreview.section.system`,n),count:l.length,children:(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:l.map(e=>(0,X.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded border bg-background px-1.5 py-0.5 text-[11px] font-mono`,children:e},e))})}),Object.keys(u).length>0&&(0,X.jsx)(H_,{title:W(`engine.permissionPreview.section.tabs`,n),count:Object.keys(u).length,children:(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:Object.entries(u).map(([e,t])=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border bg-background px-1.5 py-0.5 text-[11px]`,children:[(0,X.jsx)(`span`,{className:`font-mono`,children:e}),(0,X.jsx)(`span`,{className:t===`hidden`?`text-[9px] uppercase text-red-700`:t===`visible`||t===`default_on`?`text-[9px] uppercase text-emerald-700`:`text-[9px] uppercase text-muted-foreground`,children:t})]},e))})}),p.length>0&&(0,X.jsxs)(`div`,{className:`rounded border border-amber-200 bg-amber-50 p-2.5 text-xs space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-amber-800`,children:[(0,X.jsx)(zi,{className:`h-3.5 w-3.5`}),` `,U(p.length===1?`engine.permissionPreview.sanityOne`:`engine.permissionPreview.sanityOther`,n,{count:p.length})]}),(0,X.jsx)(`ul`,{className:`space-y-0.5`,children:p.map((e,t)=>(0,X.jsxs)(`li`,{className:`text-amber-900`,children:[(0,X.jsx)(`code`,{className:`font-mono`,children:e.object}),`:`,` `,e.vars?U(e.messageKey,n,e.vars):W(e.messageKey,n)]},t))})]})]})})})}function B_({granted:e,danger:t,locale:n}){return e?(0,X.jsx)(An,{className:`inline-block h-3.5 w-3.5 ${t?`text-amber-600`:`text-emerald-600`}`,"aria-label":W(`engine.permissionPreview.granted`,n)}):(0,X.jsx)(In,{className:`inline-block h-3 w-3 text-muted-foreground/40`,"aria-label":W(`engine.permissionPreview.notGranted`,n)})}function V_({locale:e}){return(0,X.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-[10px] text-muted-foreground`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,X.jsx)(An,{className:`h-3 w-3 text-emerald-600`}),` `,W(`engine.permissionPreview.granted`,e)]}),(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,X.jsx)(An,{className:`h-3 w-3 text-amber-600`}),` `,W(`engine.permissionPreview.legend.bypass`,e)]}),(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,X.jsx)(In,{className:`h-3 w-3 text-muted-foreground/40`}),` `,W(`engine.permissionPreview.notGranted`,e)]}),(0,X.jsx)(`span`,{className:`ml-auto font-mono`,children:W(`engine.permissionPreview.legend.key`,e)})]})}function H_({title:e,count:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[(0,X.jsx)(`span`,{children:e}),t!=null&&(0,X.jsxs)(`span`,{className:`opacity-70`,children:[`(`,t,`)`]})]}),n]})}function U_({icon:e,label:t}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{children:t})]})}function W_(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`object`){let t=e;return t.en??t[`en-US`]??Object.values(t)[0]??``}return String(e)}function G_(e){switch(e){case`url`:return Nr;case`modal`:return Mr;case`flow`:return Gi;case`api`:return br;case`form`:return ni;default:return Vn}}function K_(e){switch(e){case`primary`:case`default`:case void 0:return`bg-primary text-primary-foreground hover:opacity-90`;case`danger`:case`destructive`:return`bg-red-600 text-white hover:bg-red-700`;case`secondary`:return`bg-secondary text-secondary-foreground hover:opacity-90`;case`ghost`:return`bg-transparent text-foreground hover:bg-accent`;case`link`:return`bg-transparent text-primary underline-offset-2 hover:underline px-0`;default:return`border bg-background text-foreground hover:bg-accent`}}function q_(e,t,n,r){if(!t&&!n)return W(`engine.actionPreview.handler.none`,r);let i={target:String(t)};switch(e){case`url`:return U(`engine.actionPreview.handler.url`,r,i);case`flow`:return U(`engine.actionPreview.handler.flow`,r,i);case`modal`:return U(`engine.actionPreview.handler.modal`,r,i);case`api`:return U(`engine.actionPreview.handler.api`,r,i);case`form`:return U(`engine.actionPreview.handler.form`,r,{...i,path:t??`?`});case`script`:return n?W(`engine.actionPreview.handler.scriptBody`,r):U(`engine.actionPreview.handler.scriptNamed`,r,i);default:return U(`engine.actionPreview.handler.invoke`,r,i)}}function J_(e,t){return e.split(/(\{\w+\})/).map((e,n)=>{let r=/^\{(\w+)\}$/.exec(e);return(0,X.jsx)(Y.Fragment,{children:r&&r[1]in t?t[r[1]]:e},n)})}function Y_({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=W_(r.label)||i,o=r.icon||void 0,s=String(r.type??`script`),c=r.target,l=r.variant||void 0,u=String(r.component??``),d=Array.isArray(r.locations)?r.locations:[],f=Array.isArray(r.requiredPermissions)?r.requiredPermissions.filter(e=>typeof e==`string`):[],p=!!r.refreshAfter,m=r.aiExposed,h=W_(r.confirmText),g=W_(r.successMessage),_=Array.isArray(r.params)?r.params:[],v=r.resultDialog,y=r.body,b=r.objectName||void 0,x=r.visible,S=r.disabled,C=r.method||`POST`,w=r.bodyExtra,T=G_(s),E=u===`action:icon`;return!i&&!a?(0,X.jsx)(Z,{hint:`action`,children:(0,X.jsx)(sf,{children:W(`engine.actionPreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`action`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 flex items-center justify-center min-h-[80px]`,children:(0,X.jsx)(X_,{label:a,icon:o,variant:l,iconOnly:E,disabled:!!S&&typeof S==`boolean`})}),(0,X.jsxs)(`div`,{className:`rounded border bg-background p-3 text-xs space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i})]}),(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsx)(av,{icon:T,label:U(`engine.actionPreview.pill.type`,n,{type:s})}),b&&(0,X.jsx)(av,{icon:Oi,label:U(`engine.actionPreview.pill.object`,n,{object:b}),mono:!0}),l&&(0,X.jsx)(av,{label:U(`engine.actionPreview.pill.variant`,n,{variant:l})}),u&&(0,X.jsx)(av,{icon:Qn,label:u}),p&&(0,X.jsx)(av,{icon:li,label:W(`engine.actionPreview.pill.refreshAfter`,n)}),m===!1&&(0,X.jsx)(av,{icon:cn,label:W(`engine.actionPreview.pill.aiOptedOut`,n),tone:`amber`}),m===!0&&(0,X.jsx)(av,{icon:Ei,label:W(`engine.actionPreview.pill.aiExposed`,n)})]}),d.length>0&&(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 pt-1`,children:[(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:W(`engine.actionPreview.locations`,n)}),d.map(e=>(0,X.jsx)(`span`,{className:`inline-flex items-center rounded bg-muted px-1.5 py-0.5 text-[10px] font-mono`,children:e},e))]}),f.length>0&&(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 pt-1`,"data-testid":`action-preview-required-permissions`,children:[(0,X.jsx)(Lr,{className:`h-3 w-3 text-amber-700`}),(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:W(`engine.actionPreview.requires`,n)}),f.map(e=>(0,X.jsx)(`span`,{className:`inline-flex items-center rounded bg-muted px-1.5 py-0.5 text-[10px] font-mono`,children:e},e))]}),!!(typeof x==`string`||x&&typeof x==`object`)&&(0,X.jsx)(rv,{label:W(`engine.actionPreview.visibleWhen`,n),value:x,icon:tr}),S!=null&&typeof S!=`boolean`&&(0,X.jsx)(rv,{label:W(`engine.actionPreview.disabledWhen`,n),value:S,icon:Lr})]}),(0,X.jsxs)(`div`,{className:`rounded border border-blue-200 bg-blue-50 p-2.5 text-xs`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-blue-900 mb-0.5`,children:[(0,X.jsx)(T,{className:`h-3.5 w-3.5`}),` `,W(`engine.actionPreview.onClick`,n)]}),(0,X.jsx)(`div`,{className:`text-blue-950 font-mono break-all`,children:q_(s,c,!!y?.source,n)}),h&&(0,X.jsxs)(`div`,{className:`mt-1.5 flex items-start gap-1.5 text-amber-900`,children:[(0,X.jsx)(zi,{className:`h-3 w-3 mt-0.5`}),(0,X.jsxs)(`span`,{children:[W(`engine.actionPreview.firstAsks`,n),` `,(0,X.jsx)(`em`,{children:h})]})]}),g&&(0,X.jsxs)(`div`,{className:`mt-1.5 text-blue-950`,children:[W(`engine.actionPreview.onSuccess`,n),` `,(0,X.jsx)(`em`,{children:g})]})]}),d.length>0&&(0,X.jsxs)(iv,{title:W(`engine.actionPreview.section.placement`,n),children:[f.length>0&&(0,X.jsx)(`div`,{className:`text-[11px] text-amber-700`,"data-testid":`action-preview-capability-gate-note`,children:J_(W(`engine.actionPreview.capabilityGateNote`,n),{capabilities:(0,X.jsx)(`span`,{className:`font-mono`,children:f.join(` + `)})})}),(0,X.jsx)(sv,{locations:d,label:a,icon:o,variant:l,iconOnly:E,locale:n})]}),s===`api`&&!!c&&(0,X.jsx)(iv,{title:W(`engine.actionPreview.section.testRequest`,n),icon:br,children:(0,X.jsx)(cv,{target:c,method:C,bodyExtra:w,params:_,locale:n})}),_.length>0&&(0,X.jsx)(iv,{title:W(`engine.actionPreview.section.inputDialog`,n),count:_.length,children:(0,X.jsx)(Q_,{title:a,params:_,variant:l,locale:n})}),v&&(0,X.jsx)(iv,{title:W(`engine.actionPreview.section.resultDialog`,n),icon:tr,children:(0,X.jsx)(nv,{dialog:v,locale:n})}),y?.source&&(0,X.jsx)(iv,{title:U(`engine.actionPreview.section.scriptBody`,n,{language:y.language??`expression`}),icon:Vn,children:(0,X.jsx)(`pre`,{className:`m-0 rounded border bg-background p-2.5 text-xs font-mono whitespace-pre-wrap max-h-[200px] overflow-auto`,children:y.source})})]})})})}function X_({label:e,icon:t,variant:n,iconOnly:r,disabled:i}){let a=`inline-flex items-center gap-1.5 rounded px-3 py-1.5 text-sm font-medium pointer-events-none ${K_(n)} ${i?`opacity-50`:``}`;return(0,X.jsxs)(`button`,{type:`button`,className:a,"aria-disabled":!0,disabled:!0,children:[t&&(0,X.jsx)(Z_,{name:t}),!r&&(0,X.jsx)(`span`,{children:e})]})}function Z_({name:e}){let t=De(e);return t?(0,X.jsx)(t,{className:`h-4 w-4`,"aria-hidden":!0}):(0,X.jsx)(`span`,{className:`inline-flex h-4 min-w-4 items-center justify-center rounded bg-white/30 px-1 text-[9px] uppercase font-mono`,children:e.slice(0,3)})}function Q_({title:e,params:t,variant:n,locale:r}){return(0,X.jsxs)(`div`,{className:`rounded border bg-background shadow-sm`,children:[(0,X.jsx)(`div`,{className:`border-b bg-muted/30 px-3 py-2 text-xs font-medium`,children:e}),(0,X.jsx)(`div`,{className:`p-3 space-y-2`,children:t.map((e,t)=>{let n=e.name??e.field??`param_${t}`,i=W_(e.label)||n;return(0,X.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,X.jsxs)(`label`,{className:`text-xs flex items-center gap-1`,children:[i,e.required&&(0,X.jsx)(`span`,{className:`text-red-600 text-[10px]`,children:`*`}),(0,X.jsx)(`span`,{className:`ml-1 font-mono text-[9px] text-muted-foreground`,children:n}),e.type&&(0,X.jsx)(`span`,{className:`font-mono text-[9px] text-muted-foreground`,children:e.type})]}),tv(e,i,r),e.helpText&&(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:e.helpText})]},t)})}),(0,X.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t bg-muted/20 px-3 py-2`,children:[(0,X.jsx)(`button`,{type:`button`,disabled:!0,className:`text-xs px-2.5 py-1 rounded border bg-background pointer-events-none`,children:W(`engine.cancel`,r)}),(0,X.jsx)(`button`,{type:`button`,disabled:!0,className:`text-xs px-2.5 py-1 rounded pointer-events-none ${K_(n||`primary`)}`,children:W(`engine.actionPreview.dialog.ok`,r)})]})]})}var $_=`(inherited from the bound field)`;function ev(e){if(!e.type)return{widget:void 0,degraded:!1};let t=e.reference??(e.field?$_:void 0),n=aa({name:e.name??``,label:``,type:e.type,referenceTo:t});return{widget:n?`text`:ra(e.type),degraded:n}}function tv(e,t,n){let r=`w-full text-xs px-2 py-1 border rounded bg-background pointer-events-none`;if(e.carryOver)return(0,X.jsxs)(`div`,{className:`${r} flex items-center gap-1.5 text-muted-foreground`,"data-testid":`action-preview-carry-over`,children:[(0,X.jsx)(Lr,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0}),(0,X.jsx)(`span`,{className:`truncate`,children:W(`engine.actionPreview.param.carryOver`,n)})]});let i=e.placeholder||(e.defaultFromRow?W(`engine.actionPreview.param.fromRow`,n):``),a=e.defaultValue,o=a==null?``:String(a),s=Array.isArray(e.options)?e.options:[],{widget:c,degraded:l}=ev(e),u=e=>(0,X.jsx)(`input`,{type:e,className:r,placeholder:i,value:o,readOnly:!0}),d=(0,X.jsxs)(`select`,{className:r,disabled:!0,value:``,children:[(0,X.jsx)(`option`,{value:``,children:i||U(`engine.actionPreview.param.selectPlaceholder`,n,{label:t})}),s.map((e,t)=>(0,X.jsx)(`option`,{value:e.value,children:W_(e.label)},t))]}),f=e=>(0,X.jsx)(`div`,{className:`text-[10px] text-amber-700`,children:e});if(c===void 0)return s.length>0?d:u(`text`);if(l)return(0,X.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,X.jsx)(`input`,{type:`text`,className:r,placeholder:i||U(`engine.actionPreview.param.recordIdPlaceholder`,n,{label:t}),value:o,readOnly:!0}),f(J_(W(`engine.actionPreview.param.noReference`,n),{reference:(0,X.jsx)(`code`,{className:`font-mono`,children:`reference`})}))]});switch(c){case`boolean`:return(0,X.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs`,children:[(0,X.jsx)(`input`,{type:`checkbox`,disabled:!0,className:`pointer-events-none`}),` `,W(`engine.actionPreview.param.toggle`,n)]});case`textarea`:case`html`:return(0,X.jsx)(`textarea`,{className:`${r} min-h-[48px]`,placeholder:i,value:o,readOnly:!0});case`select`:return s.length>0?d:(0,X.jsxs)(`div`,{className:`space-y-0.5`,children:[d,f(W(`engine.actionPreview.param.noChoices`,n))]});case`number`:return u(`number`);case`date`:return u(`date`);case`datetime`:return u(`datetime-local`);case`lookup`:return(0,X.jsxs)(`button`,{type:`button`,disabled:!0,role:`combobox`,"aria-expanded":!1,"aria-haspopup":`dialog`,className:`${r} flex items-center gap-1.5 text-left text-muted-foreground`,children:[(0,X.jsx)(vi,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0}),(0,X.jsx)(`span`,{className:`truncate`,children:i||(e.reference==null?W(`engine.actionPreview.param.searchRecords`,n):U(`engine.actionPreview.param.searchObject`,n,{object:e.reference}))})]});default:return u(`text`)}}function nv({dialog:e,locale:t}){let n=W_(e.title)||W(`engine.actionPreview.result.title`,t),r=W_(e.description),i=W_(e.acknowledge)||W(`engine.actionPreview.result.acknowledge`,t),a=e.fields??[];return(0,X.jsxs)(`div`,{className:`rounded border bg-background shadow-sm`,children:[(0,X.jsx)(`div`,{className:`border-b bg-muted/30 px-3 py-2 text-xs font-medium`,children:n}),(0,X.jsxs)(`div`,{className:`p-3 space-y-2 text-xs`,children:[r&&(0,X.jsx)(`div`,{className:`text-muted-foreground`,children:r}),a.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.actionPreview.result.fullJson`,t)}):(0,X.jsx)(`ul`,{className:`space-y-1.5`,children:a.map((t,n)=>(0,X.jsx)(`li`,{className:`rounded border bg-muted/20 p-2`,children:(0,X.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:W_(t.label)||t.path}),(0,X.jsx)(`span`,{className:`font-mono text-[9px] text-muted-foreground`,children:t.path}),(0,X.jsx)(`span`,{className:`ml-auto font-mono text-[9px] uppercase text-muted-foreground`,children:t.format??e.format??`json`})]})},n))})]}),(0,X.jsx)(`div`,{className:`flex items-center justify-end border-t bg-muted/20 px-3 py-2`,children:(0,X.jsx)(`button`,{type:`button`,disabled:!0,className:`text-xs px-2.5 py-1 rounded bg-primary text-primary-foreground pointer-events-none`,children:i})})]})}function rv({label:e,value:t,icon:n}){let r=typeof t==`string`?t:t?.source??JSON.stringify(t);return(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 pt-0.5`,children:[(0,X.jsx)(n,{className:`h-3 w-3 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`span`,{className:`text-muted-foreground`,children:[e,`:`]}),(0,X.jsx)(`code`,{className:`font-mono break-all`,children:r})]})}function iv({title:e,count:t,icon:n,children:r}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[n&&(0,X.jsx)(n,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e}),t!=null&&(0,X.jsxs)(`span`,{className:`opacity-70`,children:[`(`,t,`)`]})]}),r]})}function av({icon:e,label:t,tone:n=`gray`,mono:r=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`${n===`green`?`text-emerald-700`:n===`amber`?`text-amber-700`:`text-foreground`} ${r?`font-mono`:``}`,children:t})]})}function ov({label:e,children:t}){return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-mono uppercase tracking-wider text-muted-foreground/70`,children:e}),t]})}function sv({locations:e,label:t,icon:n,variant:r,iconOnly:i,locale:a}){let o=(0,X.jsx)(X_,{label:t,icon:n,variant:r,iconOnly:i});return(0,X.jsxs)(`div`,{className:`space-y-2.5`,children:[e.includes(`record_header`)&&(0,X.jsx)(ov,{label:`record_header`,children:(0,X.jsxs)(`div`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b px-3 py-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`div`,{className:`h-6 w-6 rounded bg-muted`}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`text-xs font-medium`,children:W(`engine.actionPreview.placement.sampleRecord`,a)}),(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:W(`engine.actionPreview.placement.recordDetail`,a)})]})]}),(0,X.jsx)(`div`,{className:`flex items-center gap-1.5`,children:o})]}),(0,X.jsx)(`div`,{className:`p-3 text-[10px] text-muted-foreground`,children:W(`engine.actionPreview.placement.recordBody`,a)})]})}),e.includes(`list_toolbar`)&&(0,X.jsx)(ov,{label:`list_toolbar`,children:(0,X.jsxs)(`div`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b px-3 py-2`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium`,children:W(`engine.actionPreview.placement.records`,a)}),(0,X.jsx)(`div`,{className:`flex items-center gap-1.5`,children:o})]}),(0,X.jsx)(`div`,{className:`px-3 py-2 text-[10px] text-muted-foreground`,children:W(`engine.actionPreview.placement.rows`,a)})]})}),e.includes(`list_item`)&&(0,X.jsx)(ov,{label:`list_item`,children:(0,X.jsx)(`div`,{className:`divide-y rounded border bg-background`,children:[0,1].map(e=>(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-3 py-1.5`,children:[(0,X.jsx)(`span`,{className:`text-[11px]`,children:U(`engine.actionPreview.placement.row`,a,{n:e+1})}),(0,X.jsx)(`div`,{className:`origin-right scale-90`,children:o})]},e))})}),(e.includes(`record_section`)||e.includes(`record_related`))&&(0,X.jsx)(ov,{label:e.includes(`record_related`)?`record_related`:`record_section`,children:(0,X.jsxs)(`div`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2`,children:[(0,X.jsx)(`span`,{className:`text-xs font-medium`,children:W(`engine.actionPreview.placement.section`,a)}),o]}),(0,X.jsx)(`div`,{className:`p-3 text-[10px] text-muted-foreground`,children:W(`engine.actionPreview.placement.sectionBody`,a)})]})}),e.includes(`record_more`)&&(0,X.jsx)(ov,{label:`record_more`,children:(0,X.jsxs)(`div`,{className:`w-52 rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b px-3 py-1.5 text-[11px] text-muted-foreground`,children:[(0,X.jsx)(Qn,{className:`h-3.5 w-3.5`}),` `,W(`engine.actionPreview.placement.more`,a)]}),(0,X.jsx)(`div`,{className:`px-2 py-1.5 text-xs`,children:(0,X.jsx)(`div`,{className:`rounded px-1 py-0.5 hover:bg-accent`,children:t})})]})})]})}function cv({target:e,method:t,bodyExtra:n,params:r,locale:i}){let a=(t||`POST`).toUpperCase(),[o,s]=Y.useState(null),[c,l]=Y.useState(!1),u=n&&typeof n==`object`?n:{};return(0,X.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,X.jsxs)(`div`,{className:`rounded border bg-background p-2 font-mono text-[11px] break-all`,children:[(0,X.jsx)(`span`,{className:`font-semibold`,children:a}),` `,e]}),Object.keys(u).length>0&&(0,X.jsx)(`pre`,{className:`m-0 rounded border bg-muted/30 p-2 text-[10px] font-mono whitespace-pre-wrap`,children:JSON.stringify(u,null,2)}),r.length>0&&(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:U(r.length>1?`engine.actionPreview.api.paramsOther`:`engine.actionPreview.api.paramsOne`,i,{count:r.length})}),a!==`GET`&&(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px] text-amber-700`,children:[(0,X.jsx)(zi,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,X.jsx)(`span`,{children:U(`engine.actionPreview.api.liveWarning`,i,{method:a})})]}),(0,X.jsxs)(`button`,{type:`button`,onClick:async()=>{l(!0),s(null);try{let t=typeof localStorage<`u`?localStorage.getItem(`auth-session-token`):null,n={"Content-Type":`application/json`};t&&(n.Authorization=`Bearer ${t}`);let r={method:a,headers:n,credentials:`include`};a!==`GET`&&a!==`HEAD`&&(r.body=JSON.stringify(u));let i=await fetch(e,r),o=await i.text(),c=o;try{c=JSON.parse(o)}catch{}s({status:i.status,ok:i.ok,body:c})}catch(e){s({status:0,ok:!1,error:e instanceof Error?e.message:String(e)})}finally{l(!1)}},disabled:c,className:`inline-flex items-center gap-1.5 rounded border bg-background px-2.5 py-1 text-xs font-medium hover:bg-accent disabled:opacity-50`,children:[(0,X.jsx)(br,{className:`h-3.5 w-3.5`}),` `,W(c?`engine.actionPreview.api.sending`:`engine.actionPreview.api.send`,i)]}),o&&(0,X.jsxs)(`div`,{className:`rounded border p-2 `+(o.ok?`border-green-300 bg-green-50`:`border-red-300 bg-red-50`),children:[(0,X.jsx)(`div`,{className:`mb-1 text-[11px] font-medium`,children:o.error?W(`engine.actionPreview.api.networkError`,i):`HTTP `+o.status+(o.ok?` OK`:``)}),(0,X.jsx)(`pre`,{className:`m-0 max-h-[200px] overflow-auto text-[10px] font-mono whitespace-pre-wrap`,children:o.error??(typeof o.body==`string`?o.body:JSON.stringify(o.body,null,2))})]})]})}var lv={"@yearly":`0 0 1 1 *`,"@annually":`0 0 1 1 *`,"@monthly":`0 0 1 * *`,"@weekly":`0 0 * * 0`,"@daily":`0 0 * * *`,"@midnight":`0 0 * * *`,"@hourly":`0 * * * *`};function uv(e,t,n){let r={values:new Set,any:!1};if(e===`*`){for(let e=t;e<=n;e++)r.values.add(e);return r.any=!0,r}for(let i of e.split(`,`)){let e,a=i;if(i.includes(`/`)){let[t,n]=i.split(`/`);a=t,e=n}let o=e?Math.max(1,parseInt(e,10)||1):1,s=t,c=n;if(a!==`*`){if(a.includes(`-`)){let[e,t]=a.split(`-`).map(e=>parseInt(e,10));if(Number.isNaN(e)||Number.isNaN(t))return null;s=e,c=t}else{let e=parseInt(a,10);if(Number.isNaN(e))return null;s=e,c=e}}for(let e=s;e<=c;e+=o)e>=t&&e<=n&&r.values.add(e)}return r}function dv(e){let t=(lv[e.trim()]??e.trim()).split(/\s+/);if(t.length!==5&&t.length!==6)return null;let[n,r,i,a,o]=t.length===6?t.slice(1):t,s=uv(n,0,59),c=uv(r,0,23),l=uv(i,1,31),u=uv(a,1,12),d=uv(o===`7`?`0`:o,0,6);return!s||!c||!l||!u||!d?null:{minute:s,hour:c,dom:l,month:u,dow:d}}function fv(e,t,n){let r=dv(e);if(!r)return[];let i=[],a=new Date(t.getTime());a.setSeconds(0,0),a.setMinutes(a.getMinutes()+1);let o=t.getTime()+316224e5;for(;i.length<n&&a.getTime()<=o;)r.minute.values.has(a.getMinutes())&&r.hour.values.has(a.getHours())&&r.month.values.has(a.getMonth()+1)&&(r.dom.any||r.dow.any?r.dom.values.has(a.getDate())&&r.dow.values.has(a.getDay()):r.dom.values.has(a.getDate())||r.dow.values.has(a.getDay()))&&i.push(new Date(a.getTime())),a.setMinutes(a.getMinutes()+1);return i}function pv(e){let t=/^(\d+)\s*(ms|s|m|h|d)$/.exec(e.trim());if(!t)return null;let n=parseInt(t[1],10);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;case`d`:return n*864e5;default:return null}}function mv(e,t,n){let r=[];for(let i=1;i<=n;i++)r.push(new Date(t.getTime()+i*e));return r}function hv(e,t){return e.toLocaleString(t,{weekday:`short`,month:`short`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function gv(e){if(e.schedule&&typeof e.schedule==`object`){let t=e.schedule,n=String(t.type??``),r=t.timezone??e.timezone??e.tz;if(n===`cron`){let e=t.expression;return{cron:typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:void 0,timezone:r}}if(n===`interval`){let e=Number(t.intervalMs);return{every:Number.isFinite(e)&&e>0?_v(e):void 0,timezone:r}}if(n===`once`)return{at:typeof t.at==`string`?t.at:void 0,timezone:r}}let t=typeof e.cron==`string`?e.cron:typeof e.schedule==`string`?e.schedule:void 0,n=e.every??e.interval;return{cron:t,every:typeof n==`string`?n:typeof n==`number`?_v(n):void 0,at:typeof e.at==`string`?e.at:typeof e.runAt==`string`?e.runAt:void 0,timezone:e.timezone??e.tz}}function _v(e){return e%864e5==0?`${e/864e5}d`:e%36e5==0?`${e/36e5}h`:e%6e4==0?`${e/6e4}m`:e%1e3==0?`${e/1e3}s`:`${e}ms`}function vv({name:e,draft:t,locale:n}){let r=qt(),i=t,a=String(i.name??e??``),o=String(i.label??a),s=i.description??``,{cron:c,every:l,at:u,timezone:d}=gv(i),f=i.handler??i.target??i.function??i.functionName,p=i.active!==!1&&i.enabled!==!1,m=i.retryPolicy,h=m?.maxRetries??i.maxRetries??i.retries,g=m?.backoffMs,_=i.timeout??i.timeoutMs,v=i.concurrency,y=l?pv(l):null,{nextFires:b,deltas:x}=Y.useMemo(()=>{let e=new Date,t=[];if(c)t=fv(c,e,5);else if(y)t=mv(y,e,5);else if(u){let e=Date.parse(u);Number.isNaN(e)||(t=[new Date(e)])}return{nextFires:t,deltas:t.map(t=>yv(t.getTime()-e.getTime()))}},[c,y,u]),S=c&&b.length===0||l&&!y;return!a&&!c&&!l&&!u&&!f?(0,X.jsx)(Z,{hint:`job`,children:(0,X.jsx)(sf,{children:W(`engine.jobPreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`job`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(Qt,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:o}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:a})]}),s&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:s}),(0,X.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsx)(Sv,{icon:oi,label:W(p?`engine.jobPreview.active`:`engine.jobPreview.paused`,n),tone:p?`green`:`gray`}),d&&(0,X.jsx)(Sv,{icon:Zn,label:d,mono:!0}),h!=null&&(0,X.jsx)(Sv,{icon:mi,label:g?U(`engine.jobPreview.retriesBackoff`,n,{count:String(h),backoff:_v(g)}):U(`engine.jobPreview.retries`,n,{count:String(h)})}),_!=null&&(0,X.jsx)(Sv,{icon:Ii,label:U(`engine.jobPreview.timeout`,n,{duration:_v(_)})}),v!=null&&(0,X.jsx)(Sv,{label:U(`engine.jobPreview.concurrency`,n,{count:String(v)})})]})]})]})}),(0,X.jsx)(xv,{title:W(`engine.jobPreview.schedule`,n),icon:hn,children:(0,X.jsxs)(`div`,{className:`rounded border bg-background p-2.5 text-xs space-y-1`,children:[c&&(0,X.jsx)(bv,{label:`Cron`,children:(0,X.jsx)(`code`,{className:`font-mono`,children:c})}),l&&(0,X.jsxs)(bv,{label:W(`engine.jobPreview.every`,n),children:[(0,X.jsx)(`code`,{className:`font-mono`,children:l}),!y&&(0,X.jsx)(`span`,{className:`ml-2 text-amber-700`,children:W(`engine.jobPreview.unparseable`,n)})]}),u&&(0,X.jsx)(bv,{label:W(`engine.jobPreview.at`,n),children:(0,X.jsx)(`code`,{className:`font-mono`,children:u})}),!c&&!l&&!u&&(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.jobPreview.noSchedule`,n)})]})}),(c||y||u)&&(0,X.jsx)(xv,{title:U(b.length===1?`engine.jobPreview.nextRunOne`:`engine.jobPreview.nextRunOther`,n,{count:Math.max(b.length,1)}),icon:Rn,children:b.length===0?(0,X.jsx)(`div`,{className:`text-xs text-amber-700`,children:W(S?`engine.jobPreview.noFireTime`:`engine.jobPreview.noUpcoming`,n)}):(0,X.jsx)(`ul`,{className:`rounded border bg-background divide-y text-xs`,children:b.map((e,t)=>(0,X.jsxs)(`li`,{className:`flex items-center gap-2 px-2.5 py-1.5`,children:[(0,X.jsx)(`span`,{className:`w-4 text-right text-muted-foreground text-[10px]`,children:t+1}),(0,X.jsx)(Rn,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`font-mono`,children:hv(e,r)}),(0,X.jsx)(`span`,{className:`ml-auto text-[10px] text-muted-foreground`,children:x[t]==null?W(`engine.jobPreview.inNow`,n):U(`engine.jobPreview.inDelta`,n,{delta:x[t]})})]},t))})}),(0,X.jsx)(xv,{title:W(`engine.jobPreview.handler`,n),icon:Vn,children:f?(0,X.jsxs)(`div`,{className:`rounded border bg-background px-2.5 py-1.5 text-xs flex items-center gap-2`,children:[(0,X.jsx)(Nn,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,X.jsx)(`code`,{className:`font-mono break-all`,children:f})]}):(0,X.jsx)(`div`,{className:`text-xs text-amber-700`,children:W(`engine.jobPreview.noHandler`,n)})})]})})})}function yv(e){if(e<=0)return null;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let n=Math.round(t/60);if(n<60)return`${n}m`;let r=Math.round(n/60);return r<48?`${r}h`:`${Math.round(r/24)}d`}function bv({label:e,children:t}){return(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsxs)(`span`,{className:`text-muted-foreground w-12 shrink-0`,children:[e,`:`]}),(0,X.jsx)(`span`,{className:`break-all`,children:t})]})}function xv({title:e,icon:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[t&&(0,X.jsx)(t,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e})]}),n]})}function Sv({icon:e,label:t,tone:n=`gray`,mono:r=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`${n===`green`?`text-emerald-700`:`text-foreground`} ${r?`font-mono`:``}`,children:t})]})}var Cv=[{key:`objects`,label:`engine.translationPreview.category.objects`,icon:Fr,flat:!1},{key:`apps`,label:`engine.translationPreview.category.apps`,icon:$t,flat:!1},{key:`messages`,label:`engine.translationPreview.category.messages`,icon:Hr,flat:!0},{key:`validationMessages`,label:`engine.translationPreview.category.validationMessages`,icon:bi,flat:!0},{key:`globalActions`,label:`engine.translationPreview.category.globalActions`,icon:Ln,flat:!0},{key:`dashboards`,label:`engine.translationPreview.category.dashboards`,icon:jr,flat:!1},{key:`settings`,label:`engine.translationPreview.category.settings`,icon:yi,flat:!0},{key:`metadataForms`,label:`engine.translationPreview.category.metadataForms`,icon:sr,flat:!1}];function wv({name:e,draft:t,locale:n}){let r=t,i=r.locale??r.language??`?`,a=r.label??r.name??e??``,o=r.description,s=r.data??r,c=Cv.map(e=>{let t=s?.[e.key];if(!t||typeof t!=`object`)return{...e,count:0,sample:[]};let n=Object.entries(t);return{...e,count:n.length,sample:n.slice(0,5)}}),l=c.reduce((e,t)=>e+t.count,0),u=c.filter(e=>e.count>0).length,d=Math.round(u/Cv.length*100);return l===0?(0,X.jsx)(Z,{hint:`translation · ${i}`,children:(0,X.jsx)(sf,{children:W(`engine.translationPreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`translation · ${i} · ${l} keys`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(kr,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-emerald-50 border border-emerald-200 px-1.5 py-0.5 text-[10px] font-mono text-emerald-800`,children:[(0,X.jsx)(Zn,{className:`h-3 w-3`}),` `,i]})]}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:o}),(0,X.jsxs)(`div`,{className:`mt-2 flex items-center gap-2 text-[11px]`,children:[(0,X.jsx)(gr,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:W(`engine.translationPreview.coverage`,n)}),(0,X.jsx)(`div`,{className:`h-1.5 w-32 rounded-full bg-muted overflow-hidden`,children:(0,X.jsx)(`div`,{className:`h-full bg-emerald-500`,style:{width:`${d}%`}})}),(0,X.jsxs)(`span`,{className:`font-mono`,children:[u,`/`,Cv.length,` (`,d,`%)`]}),(0,X.jsx)(`span`,{className:`ml-3 text-muted-foreground`,children:U(`engine.translationPreview.totalKeys`,n,{count:l})})]})]})]})}),(0,X.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:c.map(e=>(0,X.jsx)(Tv,{cat:e,locale:n},e.key))})]})})})}function Tv({cat:e,locale:t}){let n=e.icon;return(0,X.jsxs)(`div`,{className:`rounded border bg-background ${e.count===0?`opacity-60`:``}`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between border-b px-2.5 py-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(n,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`text-xs font-medium`,children:W(e.label,t)})]}),(0,X.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-[10px] font-mono`,children:e.count})]}),(0,X.jsx)(`div`,{className:`px-2.5 py-1.5 min-h-[3.5rem]`,children:e.count===0?(0,X.jsx)(We,{className:`text-[11px] italic`,children:W(`engine.translationPreview.categoryEmpty`,t)}):(0,X.jsxs)(`ul`,{className:`space-y-0.5 text-[11px]`,children:[e.sample.map(([n,r])=>(0,X.jsxs)(`li`,{className:`flex items-baseline gap-2 truncate`,children:[(0,X.jsx)(`code`,{className:`font-mono text-muted-foreground shrink-0`,children:n}),(0,X.jsx)(`span`,{className:`truncate text-foreground/80`,children:Ev(r,e.flat,t)})]},n)),e.count>e.sample.length&&(0,X.jsx)(`li`,{className:`text-[10px] text-muted-foreground italic`,children:U(`engine.translationPreview.more`,t,{count:e.count-e.sample.length})})]})})]})}function Ev(e,t,n){if(t)return typeof e==`string`?`"${e}"`:e==null?`∅`:String(e);if(e&&typeof e==`object`){let t=Object.keys(e).length;return U(`engine.translationPreview.keyCount`,n,{count:t})}return String(e??`∅`)}function Dv({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=r.description??``;return i?(0,X.jsx)(Z,{hint:`position`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(Ui,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i})]}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:o})]})]})}),(0,X.jsx)(`div`,{className:`rounded border border-blue-200 bg-blue-50 p-2.5 text-[11px] text-blue-900`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,X.jsx)(xi,{className:`h-3.5 w-3.5 mt-0.5 shrink-0`}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`font-medium`,children:W(`engine.positionPreview.noAccess`,n)}),(0,X.jsx)(`div`,{className:`opacity-90 mt-0.5`,children:mp(W(`engine.positionPreview.bind`,n),{name:(0,X.jsx)(`code`,{className:`font-mono`,children:i}),permissionSets:(0,X.jsx)(`strong`,{children:W(`engine.positionPreview.permissionSets`,n)})})})]})]})})]})})}):(0,X.jsx)(Z,{hint:`position`,children:(0,X.jsx)(sf,{children:W(`engine.positionPreview.empty`,n)})})}function Ov({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=r.description??``,s=r.instructions??``,c=Array.isArray(r.tools)?r.tools:[],l=Array.isArray(r.triggerConditions)?r.triggerConditions:[],u=r.active!==!1,d=r.model??void 0;return i?(0,X.jsx)(Z,{hint:`skill`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(Ei,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i})]}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:o}),(0,X.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsx)(jv,{icon:oi,label:W(u?`engine.skillPreview.active`:`engine.skillPreview.disabled`,n),tone:u?`green`:`gray`}),d&&(0,X.jsx)(jv,{label:U(`engine.skillPreview.model`,n,{model:d}),mono:!0})]})]})]})}),(0,X.jsx)(Av,{title:W(`engine.skillPreview.instructions`,n),icon:sn,children:s?(0,X.jsx)(`pre`,{className:`rounded border bg-background p-2.5 text-xs font-mono whitespace-pre-wrap break-words max-h-64 overflow-auto`,children:s}):(0,X.jsx)(`div`,{className:`text-xs text-amber-700`,children:W(`engine.skillPreview.noInstructions`,n)})}),(0,X.jsxs)(Av,{title:U(`engine.skillPreview.tools`,n,{count:c.length}),icon:Ki,children:[c.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.skillPreview.noTools`,n)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:c.map(e=>{let t=e.includes(`*`);return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[11px] font-mono border ${t?`border-amber-300 bg-amber-50 text-amber-900`:`border-border bg-muted/40`}`,children:[t&&(0,X.jsx)(rn,{className:`h-3 w-3`}),e]},e)})}),c.some(e=>e.includes(`*`))&&(0,X.jsx)(`div`,{className:`mt-1 text-[10px] text-amber-700`,children:W(`engine.skillPreview.wildcardNote`,n)})]}),l.length>0&&(0,X.jsxs)(Av,{title:U(`engine.skillPreview.triggerConditions`,n,{count:l.length}),icon:hr,children:[(0,X.jsx)(`div`,{className:`rounded border bg-background overflow-hidden`,children:(0,X.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,X.jsx)(`thead`,{children:(0,X.jsxs)(`tr`,{className:`bg-muted/30 text-left text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 font-medium`,children:W(`engine.skillPreview.col.field`,n)}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 font-medium`,children:W(`engine.skillPreview.col.operator`,n)}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 font-medium`,children:W(`engine.skillPreview.col.value`,n)})]})}),(0,X.jsx)(`tbody`,{className:`divide-y`,children:l.map((e,t)=>(0,X.jsxs)(`tr`,{className:`align-top`,children:[(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono break-all`,children:kv(e.field,n)}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono text-muted-foreground`,children:kv(e.operator,n)}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono break-all`,children:kv(e.value,n)})]},t))})]})}),l.length>1&&(0,X.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:W(`engine.skillPreview.allMustHold`,n)})]})]})})}):(0,X.jsx)(Z,{hint:`skill`,children:(0,X.jsx)(sf,{children:W(`engine.skillPreview.empty`,n)})})}function kv(e,t){return typeof e==`string`&&e!==``?e:Array.isArray(e)&&e.every(e=>typeof e==`string`)?e.join(`, `):(0,X.jsx)(`span`,{className:`text-amber-700`,title:W(`engine.skillPreview.missingTitle`,t),children:W(`engine.skillPreview.missing`,t)})}function Av({title:e,icon:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[t&&(0,X.jsx)(t,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e})]}),n]})}function jv({icon:e,label:t,tone:n=`gray`,mono:r=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`${n===`green`?`text-emerald-700`:`text-foreground`} ${r?`font-mono`:``}`,children:t})]})}var Mv=class extends Error{constructor(){super(`external_service_unavailable`),this.name=`ExternalServiceUnavailableError`}},Nv=l();function Pv(){return``.replace(/\/+$/,``)}function Fv(e){return`${Pv()}/api/v1/datasources/${encodeURIComponent(e)}/external`}async function Iv(e){if(e.status===503){let t;try{t=await e.json()}catch{t=void 0}if((t&&typeof t==`object`&&`error`in t?String(t.error):``)===`external_service_unavailable`)throw new Mv}if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n&&typeof n==`object`&&`error`in n&&(t=String(n.error))}catch{}throw Error(t)}return await e.json()}async function Lv(e,t={}){let n=t.schema?`?schema=${encodeURIComponent(t.schema)}`:``;return(await Iv(await Nv(`${Fv(e)}/tables${n}`,{method:`GET`,headers:{Accept:`application/json`}}))).tables??[]}async function Rv(e,t,n={}){return(await Iv(await Nv(`${Fv(e)}/tables/${encodeURIComponent(t)}/draft`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(n)}))).draft}async function zv(e){return(await Iv(await Nv(`${Fv(e)}/refresh-catalog`,{method:`POST`,headers:{Accept:`application/json`}}))).catalog}async function Bv(e){return Iv(await Nv(`${Fv(e)}/validate`,{method:`POST`,headers:{Accept:`application/json`}}))}async function Vv(e){Yt(`object`,e.definition,`importObjectDraft`),await Iv(await Nv(`${Pv()}/api/v1/meta/object/${encodeURIComponent(e.name)}`,{method:`PUT`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e.definition)}))}function Hv({datasource:e,table:t,open:n,onOpenChange:r,onImported:i}){let[a,o]=Y.useState(`loading`),[s,c]=Y.useState(null),[l,u]=Y.useState(null);Y.useEffect(()=>{if(!n||!t)return;let r=!1;return o(`loading`),c(null),u(null),(async()=>{try{let n=await Rv(e,t.name,{remoteSchema:t.schema});if(r)return;c(n),o(`ready`)}catch(e){if(r)return;u(e instanceof Mv?`Federation is not enabled on this server.`:e instanceof Error?e.message:String(e)),o(`error`)}})(),()=>{r=!0}},[n,t,e]);let d=Y.useCallback(async()=>{if(s){o(`importing`),u(null);try{await Vv(s),o(`done`),i?.(s.name)}catch(e){u(e instanceof Error?e.message:String(e)),o(`ready`)}}},[s,i]),f=t?[t.schema,t.name].filter(Boolean).join(`.`):``;return(0,X.jsx)(rt,{open:n,onOpenChange:r,children:(0,X.jsxs)(ue,{className:`max-w-2xl`,children:[(0,X.jsxs)(Fe,{children:[(0,X.jsxs)(ze,{className:`flex items-center gap-2`,children:[(0,X.jsx)(qn,{className:`h-4 w-4`}),`Import as Object`]}),(0,X.jsxs)(tt,{children:[`Map remote table `,(0,X.jsx)(`span`,{className:`font-mono`,children:f}),` into an ObjectStack object bound to `,(0,X.jsx)(`span`,{className:`font-mono`,children:e}),`. The remote schema is never modified.`]})]}),a===`loading`&&(0,X.jsxs)(`div`,{className:`flex items-center gap-2 py-8 justify-center text-sm text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` Generating draft…`]}),a===`error`&&(0,X.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/5 p-3 text-sm text-destructive`,children:l}),a===`done`&&s&&(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-8 text-center`,children:[(0,X.jsx)(An,{className:`h-8 w-8 text-emerald-500`}),(0,X.jsxs)(`div`,{className:`text-sm`,children:[`Imported object `,(0,X.jsx)(`span`,{className:`font-mono font-medium`,children:s.name}),`.`]}),(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Review its binding and run validation to confirm it matches the remote table.`})]}),(a===`ready`||a===`importing`)&&s&&(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2 text-sm`,children:[(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:`Object name`}),(0,X.jsx)(`span`,{className:`font-mono font-medium`,children:s.name})]}),l&&(0,X.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/5 p-2 text-xs text-destructive`,children:l}),s.review.length>0&&(0,X.jsxs)(`div`,{className:`rounded border border-amber-300 bg-amber-50 dark:bg-amber-950/20 p-2.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-medium text-amber-800 dark:text-amber-300`,children:[(0,X.jsx)(zi,{className:`h-3.5 w-3.5`}),s.review.length,` column`,s.review.length===1?``:`s`,` need review`]}),(0,X.jsx)(`ul`,{className:`mt-1.5 space-y-1 text-[11px] text-amber-900/90 dark:text-amber-200/80`,children:s.review.map(e=>(0,X.jsxs)(`li`,{className:`flex flex-wrap gap-x-1.5`,children:[(0,X.jsx)(`span`,{className:`font-mono`,children:e.column}),(0,X.jsxs)(`span`,{className:`text-amber-700/70 dark:text-amber-400/70`,children:[`(`,e.remoteType,`)`]}),(0,X.jsxs)(`span`,{children:[`— `,e.note]})]},e.column))})]}),(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[(0,X.jsx)(rr,{className:`h-3 w-3`}),` Generated source`]}),(0,X.jsx)(`pre`,{className:`max-h-64 overflow-auto rounded border bg-muted/30 p-2.5 text-[11px] leading-relaxed font-mono`,children:s.source})]})]}),(0,X.jsx)(Me,{children:a===`done`?(0,X.jsx)(B,{onClick:()=>r(!1),children:`Close`}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(B,{variant:`ghost`,onClick:()=>r(!1),disabled:a===`importing`,children:`Cancel`}),(0,X.jsx)(B,{onClick:d,disabled:a!==`ready`||!s,children:a===`importing`?(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(V,{className:`h-3.5 w-3.5 animate-spin`}),` Importing…`]}):`Import as Object`})]})})]})})}function Uv({datasource:e}){let t=qt(),[n,r]=Y.useState(`idle`),[i,a]=Y.useState([]),[o,s]=Y.useState(null),[c,l]=Y.useState(``),[u,d]=Y.useState(null),[f,p]=Y.useState(!1),m=Y.useCallback(async()=>{r(`loading`),s(null);try{let t=await Lv(e);a(t),r(`loaded`)}catch(e){e instanceof Mv?r(`unavailable`):(s(e instanceof Error?e.message:String(e)),r(`error`))}},[e]);Y.useEffect(()=>{m()},[m]);let h=Y.useMemo(()=>{let e=c.trim().toLowerCase();return e?i.filter(t=>[t.schema,t.name].filter(Boolean).join(`.`).toLowerCase().includes(e)):i},[i,c]),g=e=>{d(e),p(!0)};return n===`unavailable`?(0,X.jsx)(Wv,{}):(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsxs)(`div`,{className:`relative flex-1`,children:[(0,X.jsx)(vi,{className:`absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,X.jsx)(`input`,{value:c,onChange:e=>l(e.target.value),placeholder:`Filter tables…`,className:`w-full rounded border bg-background pl-7 pr-2 py-1.5 text-xs outline-none focus:ring-1 focus:ring-ring`})]}),(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:()=>void m(),disabled:n===`loading`,children:[n===`loading`?(0,X.jsx)(V,{className:`h-3.5 w-3.5 animate-spin`}):(0,X.jsx)(li,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`ml-1.5`,children:`Refresh`})]})]}),o&&(0,X.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/5 p-2.5 text-xs text-destructive`,children:o}),n===`loading`&&i.length===0&&(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground`,children:[(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`}),` Introspecting remote schema…`]}),n===`loaded`&&h.length===0&&(0,X.jsx)(`div`,{className:`py-10 text-center text-sm text-muted-foreground`,children:i.length===0?`No remote tables found (check the datasource’s allowedSchemas).`:`No tables match the filter.`}),h.length>0&&(0,X.jsx)(`div`,{className:`rounded border bg-background overflow-hidden`,children:(0,X.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,X.jsx)(`thead`,{className:`bg-muted/40 text-muted-foreground`,children:(0,X.jsxs)(`tr`,{children:[(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 text-left font-medium`,children:`Table`}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 text-right font-medium`,children:`Columns`}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 text-right font-medium`,children:`Rows (est.)`}),(0,X.jsx)(`th`,{className:`px-2.5 py-1.5 w-px`})]})}),(0,X.jsx)(`tbody`,{className:`divide-y`,children:h.map(e=>{let n=[e.schema,e.name].filter(Boolean).join(`.`);return(0,X.jsxs)(`tr`,{className:`hover:bg-muted/30`,children:[(0,X.jsx)(`td`,{className:`px-2.5 py-1.5`,children:(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 font-mono`,children:[(0,X.jsx)(Mi,{className:`h-3.5 w-3.5 text-muted-foreground`}),e.schema&&(0,X.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.schema,`.`]}),(0,X.jsx)(`span`,{className:`font-medium`,children:e.name})]})}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 text-right tabular-nums`,children:(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-muted-foreground`,children:[(0,X.jsx)(Un,{className:`h-3 w-3`}),e.columnCount]})}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 text-right tabular-nums text-muted-foreground`,children:typeof e.rowCountEstimate==`number`?e.rowCountEstimate.toLocaleString(t):`—`}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5`,children:(0,X.jsxs)(B,{variant:`ghost`,size:`sm`,onClick:()=>g(e),children:[(0,X.jsx)(Xn,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`ml-1.5`,children:`Import`})]})})]},n)})})]})}),(0,X.jsx)(Hv,{datasource:e,table:u,open:f,onOpenChange:p})]})}function Wv(){return(0,X.jsxs)(`div`,{className:`rounded border border-amber-300 bg-amber-50 dark:bg-amber-950/20 p-3 text-xs text-amber-900 dark:text-amber-200`,children:[`Federation is not enabled on this server. The`,(0,X.jsx)(`span`,{className:`font-mono`,children:` external-datasource `}),`service must be registered for table browsing, drafting, and validation to work.`]})}var Gv={missing_table:`Missing table`,missing_column:`Missing column`,type_mismatch:`Type mismatch`,nullability_mismatch:`Nullability mismatch`,unmapped_column:`Unmapped column`,pk_mismatch:`Primary-key mismatch`,index_mismatch:`Index mismatch`,unmapped_index:`Unmapped index`,default_mismatch:`Column default mismatch`,unreachable:`Not checked — remote unreachable`};function Kv({datasource:e}){let[t,n]=Y.useState(`idle`),[r,i]=Y.useState([]),[a,o]=Y.useState(null),[s,c]=Y.useState(null),l=Y.useCallback(async()=>{n(`running`),c(null);try{let t=await Bv(e);i(t.results),o(t.ok),n(`done`)}catch(e){e instanceof Mv?n(`unavailable`):(c(e instanceof Error?e.message:String(e)),n(`error`))}},[e]);return t===`unavailable`?(0,X.jsx)(`div`,{className:`rounded border border-amber-300 bg-amber-50 dark:bg-amber-950/20 p-3 text-xs text-amber-900 dark:text-amber-200`,children:`Federation is not enabled on this server, so validation is unavailable.`}):(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Check that every federated object on`,` `,(0,X.jsx)(`span`,{className:`font-mono`,children:e}),` still matches its live remote table.`]}),(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:()=>void l(),disabled:t===`running`,children:[t===`running`?(0,X.jsx)(V,{className:`h-3.5 w-3.5 animate-spin`}):(0,X.jsx)(Nn,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`ml-1.5`,children:`Run validation`})]})]}),s&&(0,X.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/5 p-2.5 text-xs text-destructive`,children:s}),t===`done`&&a!==null&&(0,X.jsxs)(`div`,{className:`flex items-center gap-2 rounded border p-2.5 text-sm ${a?`border-emerald-300 bg-emerald-50 dark:bg-emerald-950/20 text-emerald-800 dark:text-emerald-300`:`border-destructive/40 bg-destructive/5 text-destructive`}`,children:[a?(0,X.jsx)(An,{className:`h-4 w-4`}):(0,X.jsx)(bi,{className:`h-4 w-4`}),a?`All ${r.length} object${r.length===1?``:`s`} match the remote schema.`:`${r.filter(e=>!e.ok).length} of ${r.length} object${r.length===1?``:`s`} diverge from the remote schema.`]}),t===`done`&&r.length===0&&(0,X.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No federated objects are bound to this datasource yet. Import a table from the Tables tab to get started.`}),r.length>0&&(0,X.jsx)(`ul`,{className:`space-y-2`,children:r.map(e=>(0,X.jsx)(qv,{result:e},e.object))})]})}function qv({result:e}){return(0,X.jsxs)(`li`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 py-1.5`,children:[e.ok?(0,X.jsx)(xi,{className:`h-3.5 w-3.5 text-emerald-500`}):(0,X.jsx)(bi,{className:`h-3.5 w-3.5 text-destructive`}),(0,X.jsx)(`span`,{className:`font-mono text-xs font-medium`,children:e.object}),!e.ok&&(0,X.jsxs)(`span`,{className:`ml-auto text-[11px] text-muted-foreground`,children:[e.diffs.length,` diff`,e.diffs.length===1?``:`s`]})]}),e.diffs.length>0&&(0,X.jsx)(`ul`,{className:`border-t divide-y`,children:e.diffs.map((e,t)=>(0,X.jsx)(Jv,{diff:e},`${e.kind}:${e.column??``}:${t}`))})]})}function Jv({diff:e}){let t=[e.remoteSchema,e.remoteName].filter(Boolean).join(`.`),n=e.severity===`error`;return(0,X.jsxs)(`li`,{className:`flex flex-wrap items-baseline gap-x-2 gap-y-0.5 px-2.5 py-1.5 text-[11px]`,children:[(0,X.jsx)(`span`,{className:`rounded px-1 py-0.5 font-medium uppercase tracking-wide text-[9px] ${n?`bg-destructive/10 text-destructive`:`bg-amber-100 text-amber-800 dark:bg-amber-950/40 dark:text-amber-300`}`,children:Gv[e.kind]??e.kind}),t&&(0,X.jsx)(`span`,{className:`font-mono text-muted-foreground`,children:t}),e.column&&(0,X.jsxs)(`span`,{className:`font-mono`,children:[`.`,e.column]}),(e.expected!==void 0||e.actual!==void 0)&&(0,X.jsxs)(`span`,{className:`text-muted-foreground`,children:[`expected `,(0,X.jsx)(`span`,{className:`font-mono`,children:e.expected??`—`}),`, actual`,` `,(0,X.jsx)(`span`,{className:`font-mono`,children:e.actual??`—`})]})]})}function Yv({datasource:e,schemaMode:t,allowWrites:n,locale:r}){let i=qt(),[a,o]=Y.useState(null),[s,c]=Y.useState(!1),[l,u]=Y.useState(null),d=Y.useCallback(async()=>{if(e){c(!0),u(null);try{let t=await zv(e);o(t)}catch(e){u(e instanceof Mv?W(`engine.externalDatasource.unavailable`,r):e instanceof Error?e.message:String(e))}finally{c(!1)}}},[e,r]);return e?(0,X.jsxs)(`div`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5 border-b bg-muted/30 px-3 py-2`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs font-medium`,children:[(0,X.jsx)(Kn,{className:`h-4 w-4 text-sky-500`}),W(`engine.externalDatasource.title`,r)]}),(0,X.jsx)(`span`,{className:`rounded border bg-background px-1.5 py-0.5 font-mono text-[10px] uppercase tracking-wider text-muted-foreground`,children:t??`external`}),(0,X.jsx)(`span`,{className:`rounded px-1.5 py-0.5 text-[10px] uppercase tracking-wider ${n?`bg-amber-100 text-amber-800 dark:bg-amber-950/40 dark:text-amber-300`:`bg-muted text-muted-foreground`}`,children:W(n?`engine.externalDatasource.writesAllowed`:`engine.externalDatasource.readOnly`,r)}),(0,X.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[a?.snapshotAt&&(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,X.jsx)(Rn,{className:`h-3 w-3`}),U(`engine.externalDatasource.snapshot`,r,{time:Xv(a.snapshotAt,i)})]}),(0,X.jsxs)(B,{variant:`outline`,size:`sm`,onClick:()=>void d(),disabled:s,children:[s?(0,X.jsx)(V,{className:`h-3.5 w-3.5 animate-spin`}):(0,X.jsx)(li,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`ml-1.5`,children:W(`engine.externalDatasource.refresh`,r)})]})]})]}),l&&(0,X.jsx)(`div`,{className:`border-b border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive`,children:l}),(0,X.jsxs)(Je,{defaultValue:`tables`,className:`p-3`,children:[(0,X.jsxs)(Be,{children:[(0,X.jsx)(ce,{value:`tables`,children:W(`engine.externalDatasource.tables`,r)}),(0,X.jsx)(ce,{value:`validation`,children:W(`engine.externalDatasource.validation`,r)})]}),(0,X.jsx)(Xe,{value:`tables`,className:`mt-3`,children:(0,X.jsx)(Uv,{datasource:e})}),(0,X.jsx)(Xe,{value:`validation`,className:`mt-3`,children:(0,X.jsx)(Kv,{datasource:e})})]})]}):(0,X.jsx)(`div`,{className:`rounded border bg-muted/20 p-3 text-xs text-muted-foreground`,children:W(`engine.externalDatasource.saveFirst`,r)})}function Xv(e,t){let n=new Date(e).getTime();if(Number.isNaN(n))return e;try{return new Date(n).toLocaleString(t)}catch{return e}}var Zv=/pass|secret|key|token|credential|auth/i;function Qv(e){return Zv.test(e)}function $v(e){return e==null||e===``?`∅`:`••••••`}function ey(e,t){return e==null?`∅`:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?`[${e.length}]`:typeof e==`object`?U(`engine.datasourcePreview.keyCount`,t,{count:Object.keys(e).length}):String(e)}function ty({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=r.description??``,s=r.driver??W(`engine.datasourcePreview.unknownDriver`,n),c=r.active!==!1,l=r.config??{},u=r.pool,d=r.ssl,f=r.schemaMode??`managed`,p=f!==`managed`,m=!!(r.external??void 0)?.allowWrites,h=Object.entries(l);return!i&&h.length===0?(0,X.jsx)(Z,{hint:`datasource`,children:(0,X.jsx)(sf,{children:W(`engine.datasourcePreview.empty`,n)})}):(0,X.jsx)(Z,{hint:`datasource · ${s}`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(qn,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i})]}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:o}),(0,X.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border bg-background px-1.5 py-0.5 font-mono`,children:[(0,X.jsx)(Sr,{className:`h-3 w-3 text-muted-foreground`}),` `,s]}),(0,X.jsx)(iy,{icon:oi,label:W(c?`engine.datasourcePreview.active`:`engine.datasourcePreview.disabled`,n),tone:c?`green`:`gray`})]})]})]})}),p&&(0,X.jsx)(Yv,{datasource:String(e??``),schemaMode:f,allowWrites:m,locale:n}),(0,X.jsx)(ry,{title:W(`engine.datasourcePreview.connection`,n),icon:Lr,children:h.length===0?(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.datasourcePreview.noConfig`,n)}):(0,X.jsx)(`div`,{className:`rounded border bg-background overflow-hidden`,children:(0,X.jsx)(`table`,{className:`w-full text-xs`,children:(0,X.jsx)(`tbody`,{className:`divide-y`,children:h.map(([e,t])=>{let r=Qv(e);return(0,X.jsxs)(`tr`,{children:[(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 align-top w-40 font-mono text-muted-foreground`,children:e}),(0,X.jsx)(`td`,{className:`px-2.5 py-1.5 font-mono break-all`,children:r?(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{children:$v(t)}),(0,X.jsx)(`span`,{className:`rounded bg-amber-50 border border-amber-200 px-1 py-0.5 text-[9px] uppercase tracking-wider text-amber-800`,children:W(`engine.datasourcePreview.redacted`,n)})]}):ey(t,n)})]},e)})})})})}),(0,X.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,X.jsx)(ny,{title:W(`engine.datasourcePreview.pool`,n),icon:Zt,value:u,locale:n}),(0,X.jsx)(ny,{title:`SSL`,icon:xi,value:typeof d==`boolean`?{enabled:d}:d,locale:n})]})]})})})}function ny({title:e,icon:t,value:n,locale:r}){let i=n&&typeof n==`object`&&Object.keys(n).length>0;return(0,X.jsxs)(`div`,{className:`rounded border bg-background ${i?``:`opacity-60`}`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b px-2.5 py-1.5`,children:[(0,X.jsx)(t,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`text-xs font-medium`,children:e})]}),(0,X.jsx)(`div`,{className:`px-2.5 py-1.5 text-[11px]`,children:i?(0,X.jsx)(`dl`,{className:`space-y-0.5`,children:Object.entries(n).slice(0,6).map(([e,t])=>(0,X.jsxs)(`div`,{className:`flex items-baseline gap-2 truncate`,children:[(0,X.jsxs)(`dt`,{className:`text-muted-foreground font-mono shrink-0`,children:[e,`:`]}),(0,X.jsx)(`dd`,{className:`font-mono truncate`,children:Qv(e)?$v(t):ey(t,r)})]},e))}):(0,X.jsx)(We,{className:`text-[11px] italic`,children:W(`engine.datasourcePreview.notConfigured`,r)})})]})}function ry({title:e,icon:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[t&&(0,X.jsx)(t,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e})]}),n]})}function iy({icon:e,label:t,tone:n=`gray`,mono:r=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`${n===`green`?`text-emerald-700`:n===`amber`?`text-amber-700`:`text-foreground`} ${r?`font-mono`:``}`,children:t})]})}function ay(e){if(e){if(typeof e==`string`)return e;if(typeof e==`object`&&typeof e.source==`string`)return e.source}}function oy(e){switch(e){case`error`:return{ring:`border-red-200 bg-red-50 dark:border-red-900 dark:bg-red-950/40`,text:`text-red-700 dark:text-red-300`,icon:qr};case`warning`:return{ring:`border-amber-200 bg-amber-50 dark:border-amber-900 dark:bg-amber-950/40`,text:`text-amber-800 dark:text-amber-300`,icon:zi};default:return{ring:`border-blue-200 bg-blue-50 dark:border-blue-900 dark:bg-blue-950/40`,text:`text-blue-800 dark:text-blue-300`,icon:Er}}}function sy({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``),a=String(r.label??i),o=r.description??``,s=r.type??`script`,c=r.message??``,l=r.severity??`error`,u=r.active!==!1,d=Array.isArray(r.events)?r.events:[],f=r.priority,p=Array.isArray(r.tags)?r.tags:[],m=oy(l);return i?(0,X.jsx)(Z,{hint:`validation · ${s}`,children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsx)(`div`,{className:`rounded border bg-muted/30 p-3`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,X.jsx)(bi,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium truncate`,children:a}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:i}),(0,X.jsx)(`span`,{className:`rounded border bg-background px-1.5 py-0.5 text-[10px] font-mono`,children:s})]}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:o}),(0,X.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px]`,children:[(0,X.jsx)(py,{icon:oi,label:W(u?`engine.validationPreview.active`:`engine.validationPreview.disabled`,n),tone:u?`green`:`gray`}),f!=null&&(0,X.jsx)(py,{label:U(`engine.validationPreview.priority`,n,{priority:f})}),d.length>0&&(0,X.jsx)(py,{label:U(`engine.validationPreview.on`,n,{events:d.join(`, `)})})]})]})]})}),(0,X.jsx)(`div`,{className:`rounded border p-2.5 text-xs ${m.ring}`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 ${m.text}`,children:[(0,X.jsx)(m.icon,{className:`h-3.5 w-3.5 mt-0.5 shrink-0`}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`font-medium uppercase tracking-wider text-[10px]`,children:l}),(0,X.jsx)(`div`,{className:`font-normal mt-0.5 text-foreground`,children:c||(0,X.jsx)(`span`,{className:`italic text-muted-foreground`,children:W(`engine.validationPreview.noMessage`,n)})})]})]})}),(0,X.jsx)(ly,{type:s,d:r,locale:n}),p.length>0&&(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground uppercase tracking-wider mb-1`,children:W(`engine.validationPreview.tags`,n)}),(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:p.map(e=>(0,X.jsx)(`span`,{className:`inline-flex items-center rounded border bg-muted/40 px-1.5 py-0.5 text-[11px] font-mono`,children:e},e))})]})]})})}):(0,X.jsx)(Z,{hint:`validation`,children:(0,X.jsx)(sf,{children:W(`engine.validationPreview.empty`,n)})})}var cy={unique:`engine.validationPreview.removed.unique`,async:`engine.validationPreview.removed.async`,custom:`engine.validationPreview.removed.custom`};function ly({type:e,d:t,locale:n}){let r=cy[e];if(r)return(0,X.jsx)(fy,{title:W(`engine.validationPreview.notARule`,n),icon:bi,children:(0,X.jsxs)(`div`,{className:`rounded border border-amber-200 bg-amber-50 p-2.5 text-xs text-amber-900 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-200`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:mp(W(`engine.validationPreview.removedType`,n),{type:(0,X.jsx)(`code`,{className:`font-mono`,children:e})})}),(0,X.jsx)(`div`,{className:`mt-1`,children:W(r,n)})]})});switch(e){case`script`:return(0,X.jsx)(fy,{title:W(`engine.validationPreview.condition`,n),icon:Vn,children:(0,X.jsx)(dy,{value:ay(t.condition),locale:n})});case`conditional`:{let e=t.then,r=t.otherwise;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(fy,{title:W(`engine.validationPreview.when`,n),icon:Vn,children:(0,X.jsx)(dy,{value:ay(t.when),locale:n})}),(0,X.jsx)(fy,{title:W(`engine.validationPreview.thenApply`,n),icon:bi,children:(0,X.jsx)(uy,{rule:e,emptyHint:W(`engine.validationPreview.noNested`,n),locale:n})}),r&&(0,X.jsx)(fy,{title:W(`engine.validationPreview.otherwiseApply`,n),icon:bi,children:(0,X.jsx)(uy,{rule:r,emptyHint:`—`,locale:n})})]})}case`state_machine`:{let e=t.transitions&&typeof t.transitions==`object`&&!Array.isArray(t.transitions)?t.transitions:{},r=Object.entries(e),i=t.field,a=Array.isArray(t.initialStates)?t.initialStates:[];return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(fy,{title:i?U(`engine.validationPreview.transitionsOn`,n,{field:i}):W(`engine.validationPreview.transitions`,n),icon:Gi,children:r.length===0?(0,X.jsx)(`div`,{className:`text-xs text-amber-700 dark:text-amber-400`,children:W(`engine.validationPreview.noTransitions`,n)}):(0,X.jsx)(`ul`,{className:`rounded border bg-background divide-y text-xs`,children:r.map(([e,t])=>(0,X.jsxs)(`li`,{className:`flex items-center gap-2 px-2.5 py-1.5`,children:[(0,X.jsx)(`span`,{className:`font-mono`,children:e}),(0,X.jsx)(tn,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`font-mono text-emerald-700 dark:text-emerald-400`,children:Array.isArray(t)&&t.length>0?t.join(` | `):W(`engine.validationPreview.deadEnd`,n)})]},e))})}),a.length>0&&(0,X.jsx)(fy,{title:W(`engine.validationPreview.createdIn`,n),icon:wi,children:(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:a.map(e=>(0,X.jsx)(`span`,{className:`rounded border bg-muted/40 px-1.5 py-0.5 text-[11px] font-mono`,children:e},e))})})]})}case`format`:{let e=t.regex,r=t.format,i=t.field;return(0,X.jsx)(fy,{title:i?U(`engine.validationPreview.formatOn`,n,{field:i}):W(`engine.validationPreview.format`,n),icon:ui,children:(0,X.jsxs)(`div`,{className:`rounded border bg-background p-2.5 text-xs space-y-1`,children:[r&&(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:W(`engine.validationPreview.builtIn`,n)}),` `,(0,X.jsx)(`code`,{className:`font-mono`,children:r})]}),e&&(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:W(`engine.validationPreview.regex`,n)}),` `,(0,X.jsx)(`code`,{className:`font-mono break-all`,children:e})]}),!r&&!e&&(0,X.jsx)(`span`,{className:`text-amber-700 dark:text-amber-400`,children:W(`engine.validationPreview.noFormat`,n)})]})})}case`cross_field`:{let e=Array.isArray(t.fields)?t.fields:[],r=ay(t.condition);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(fy,{title:W(`engine.validationPreview.fieldsInvolved`,n),icon:wi,children:(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[e.map(e=>(0,X.jsx)(`span`,{className:`rounded border bg-muted/40 px-1.5 py-0.5 text-[11px] font-mono`,children:e},e)),e.length===0&&(0,X.jsx)(We,{className:`text-xs italic`,children:W(`engine.validationPreview.none`,n)})]})}),(0,X.jsx)(fy,{title:W(`engine.validationPreview.crossFieldCondition`,n),icon:Vn,children:(0,X.jsx)(dy,{value:r,locale:n})})]})}case`json_schema`:{let e=t.field,r=t.schema,i=r&&typeof r==`object`?JSON.stringify(r,null,2):void 0;return(0,X.jsx)(fy,{title:e?U(`engine.validationPreview.jsonSchemaOn`,n,{field:e}):`JSON Schema`,icon:dn,children:i?(0,X.jsx)(`pre`,{className:`m-0 rounded border bg-background p-2.5 text-xs font-mono overflow-auto max-h-[240px]`,children:i}):(0,X.jsx)(`div`,{className:`text-xs text-amber-700 dark:text-amber-400`,children:W(`engine.validationPreview.noJsonSchema`,n)})})}default:return(0,X.jsx)(fy,{title:W(`engine.validationPreview.rule`,n),icon:bi,children:(0,X.jsx)(`div`,{className:`rounded border bg-background p-2.5 text-xs text-muted-foreground italic`,children:U(`engine.validationPreview.unknownType`,n,{type:e})})})}}function uy({rule:e,emptyHint:t,locale:n}){if(!e||typeof e!=`object`)return(0,X.jsx)(`div`,{className:`text-xs text-amber-700 dark:text-amber-400`,children:t});let r=String(e.type??``),i=ay(e.condition)??ay(e.when);return(0,X.jsxs)(`div`,{className:`rounded border bg-background p-2.5 text-xs space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,X.jsx)(`span`,{className:`rounded border bg-muted/40 px-1.5 py-0.5 text-[10px] font-mono`,children:r||W(`engine.validationPreview.noType`,n)}),typeof e.name==`string`&&(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.name})]}),typeof e.message==`string`&&e.message&&(0,X.jsx)(`div`,{className:`text-foreground`,children:e.message}),i&&(0,X.jsx)(`pre`,{className:`m-0 rounded border bg-muted/30 p-2 font-mono whitespace-pre-wrap break-words`,children:i})]})}function dy({value:e,locale:t}){return e?(0,X.jsx)(`pre`,{className:`rounded border bg-background p-2.5 text-xs font-mono whitespace-pre-wrap break-words`,children:e}):(0,X.jsx)(`div`,{className:`text-xs text-amber-700 dark:text-amber-400`,children:W(`engine.validationPreview.noExpression`,t)})}function fy({title:e,icon:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground uppercase tracking-wider`,children:[t&&(0,X.jsx)(t,{className:`h-3 w-3`}),(0,X.jsx)(`span`,{children:e})]}),n]})}function py({icon:e,label:t,tone:n=`gray`,mono:r=!1}){return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e&&(0,X.jsx)(e,{className:`h-3 w-3 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`${n===`green`?`text-emerald-700 dark:text-emerald-400`:`text-foreground`} ${r?`font-mono`:``}`,children:t})]})}var my=Y.lazy(()=>n(()=>import(`./plugin-charts-DGTJxXCB.js`).then(e=>e.t).then(e=>({default:e.ChartRenderer})),__vite__mapDeps([0]),import.meta.url));function hy({draft:e,locale:t}){let n=ht(),{fieldLabel:r}=Gt(),i=Ut(),a=qt(),o=e.object,s=Y.useMemo(()=>(Array.isArray(e.measures)?e.measures:[]).map(e=>String(e?.name??``)).filter(Boolean),[e]),c=Y.useMemo(()=>(Array.isArray(e.dimensions)?e.dimensions:[]).map(e=>String(e?.name??``)).filter(Boolean),[e]),l=Y.useMemo(()=>{let t=Array.isArray(e.dimensions)?e.dimensions:[],n={};for(let e of t){let t=String(e?.name??``),r=String(e?.field??``);t&&r&&(n[t]=r)}return n},[e]),u=Rt(o,l,c),d=!!o&&s.length>0,[f,p]=Y.useState({status:`idle`,rows:[]}),m=Y.useCallback(async()=>{if(d){p({status:`loading`,rows:[]});try{let t=await n.queryDataset(e,{dimensions:c,measures:s});p({status:`ok`,rows:Array.isArray(t?.rows)?t.rows:[],fields:Array.isArray(t?.fields)?t.fields:[],object:t?.object})}catch(e){if(e?.code===`ANALYTICS_NOT_INSTALLED`){p({status:`not-installed`,rows:[]});return}p({status:`error`,rows:[],error:String(e?.message??e)})}}},[n,e,c,s,d]),h=`${o??``}|${c.join(`,`)}|${s.join(`,`)}`;if(Y.useEffect(()=>{d&&m()},[h]),!o)return(0,X.jsx)(Z,{children:(0,X.jsx)(cf,{icon:(0,X.jsx)(_n,{className:`h-8 w-8`}),title:W(`engine.datasetPreview.pickObject`,t),description:W(`engine.datasetPreview.pickObjectHint`,t)})});if(s.length===0)return(0,X.jsx)(Z,{children:(0,X.jsx)(cf,{icon:(0,X.jsx)(_n,{className:`h-8 w-8`}),title:W(`engine.datasetPreview.addMeasure`,t),description:W(`engine.datasetPreview.addMeasureHint`,t)})});let g=f.status===`ok`?f.fields:void 0,_=f.status===`ok`?f.object:void 0,{measureField:v,headerLabel:y}=Ot(g,_,r,Wt(i)),b=[...c,...s],x=St(f.rows,u),S=e=>{let t=v(e)?.format;return typeof t==`string`&&t.includes(`%`)},C=s.filter(S),w=C.length>0&&C.length<s.length;return(0,X.jsx)(Z,{hint:`dataset · ${o}${c.length?` · by `+c.join(`, `):``}`,children:(0,X.jsxs)(`div`,{className:`p-3 space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>void m(),disabled:f.status===`loading`,className:`inline-flex items-center gap-1.5 rounded-md border bg-background px-3 py-1.5 text-xs font-medium hover:bg-accent disabled:opacity-50`,children:[f.status===`loading`?(0,X.jsx)(V,{className:`h-3.5 w-3.5 animate-spin`}):(0,X.jsx)(_n,{className:`h-3.5 w-3.5`}),W(`engine.datasetPreview.run`,t)]}),(0,X.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[U(s.length===1?`engine.datasetPreview.measureOne`:`engine.datasetPreview.measureOther`,t,{count:s.length}),` · `,U(c.length===1?`engine.datasetPreview.dimensionOne`:`engine.datasetPreview.dimensionOther`,t,{count:c.length})]})]}),f.status===`error`&&(0,X.jsxs)(`div`,{role:`alert`,className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive`,children:[(0,X.jsx)(zi,{className:`h-3.5 w-3.5 mt-0.5 shrink-0`}),(0,X.jsx)(`span`,{className:`break-words`,children:f.error})]}),f.status===`not-installed`&&(0,X.jsx)(cf,{icon:(0,X.jsx)(Jr,{className:`h-8 w-8`}),title:W(`engine.datasetPreview.notInstalled`,t),description:W(`engine.datasetPreview.notInstalledHint`,t)}),f.status===`ok`&&f.rows.length===0&&(0,X.jsx)(cf,{icon:(0,X.jsx)(_n,{className:`h-8 w-8`}),title:W(`engine.datasetPreview.noRows`,t),description:W(`engine.datasetPreview.noRowsHint`,t)}),f.rows.length>0&&c.length>=1&&(0,X.jsx)(Q,{fallbackHint:W(`engine.datasetPreview.chartFailed`,t),children:(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsx)(`div`,{className:`h-[260px] flex items-center justify-center text-xs text-muted-foreground`,children:(0,X.jsx)(V,{className:`h-4 w-4 animate-spin`})}),children:(0,X.jsxs)(`div`,{className:`rounded-md border p-2`,children:[(0,X.jsx)(my,{schema:{data:x,xAxisKey:c[0],chartType:w?`combo`:`bar`,series:s.map(e=>({dataKey:e,label:y(e),chartType:w&&S(e)?`line`:`bar`}))}}),w&&(0,X.jsx)(`p`,{className:`mt-1 px-1 text-[10px] text-muted-foreground`,children:U(`engine.datasetPreview.ratioAxis`,t,{measures:C.map(y).join(`, `)})})]})})}),f.rows.length>0&&(0,X.jsx)(`div`,{className:`overflow-auto max-h-[60vh] rounded-md border`,children:(0,X.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,X.jsx)(`thead`,{className:`bg-muted/40`,children:(0,X.jsx)(`tr`,{children:b.map(e=>(0,X.jsx)(`th`,{className:`px-2 py-1.5 text-left font-medium whitespace-nowrap`,children:y(e)},e))})}),(0,X.jsx)(`tbody`,{children:x.map((e,t)=>(0,X.jsx)(`tr`,{className:`border-t`,children:b.map(t=>(0,X.jsx)(`td`,{className:`px-2 py-1 tabular-nums whitespace-nowrap`,children:s.includes(t)?It(e[t],v(t)?.format,v(t)?.currency,v(t)?.percentScale,a):Mt(e[t],a)},t))},t))})]})})]})})}function gy(e,t){return Array.isArray(e)?e.map((e,n)=>{if(!e||typeof e!=`object`)return null;let r=String(e.key??``).trim(),i=String(e.label??r??``).trim();return!r&&!i?null:{g:{key:r||t,label:i||r||`(unnamed)`,order:typeof e.order==`number`?e.order:void 0,include:_y(e.include),package:typeof e.package==`string`?e.package:void 0,pages:vy(e.pages)},i:n}}).filter(e=>e!==null).sort((e,t)=>(e.g.order??0)-(t.g.order??0)||e.i-t.i).map(e=>e.g):[]}function _y(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`&&typeof e.tag==`string`)return{tag:e.tag}}function vy(e){if(Array.isArray(e))return e.map(e=>typeof e==`string`?{literal:e}:e&&typeof e==`object`?{doc:typeof e.doc==`string`?e.doc:void 0,href:typeof e.href==`string`?e.href:void 0,label:typeof e.label==`string`?e.label:void 0,badge:typeof e.badge==`string`?e.badge:void 0,icon:typeof e.icon==`string`?e.icon:void 0}:null).filter(e=>e!==null)}function yy(e,t){return e===`public`?{icon:(0,X.jsx)(br,{className:`h-3 w-3`}),label:W(`engine.bookPreview.audience.public`,t),tone:`text-emerald-700 bg-emerald-50 border-emerald-200`}:e&&typeof e==`object`&&typeof e.permissionSet==`string`?{icon:(0,X.jsx)(Lr,{className:`h-3 w-3`}),label:U(`engine.bookPreview.audience.permissionSet`,t,{name:e.permissionSet}),tone:`text-amber-800 bg-amber-50 border-amber-200`}:{icon:(0,X.jsx)(mn,{className:`h-3 w-3`}),label:W(`engine.bookPreview.audience.org`,t),tone:`text-muted-foreground bg-muted/40 border-muted`}}function by({name:e,draft:t,locale:n}){let r=t,i=String(r.name??e??``).trim(),a=String(r.label??i),o=typeof r.description==`string`?r.description:``,s=typeof r.slug==`string`?r.slug:``,c=W(`engine.bookPreview.noKey`,n),l=Y.useMemo(()=>gy(r.groups,c),[r.groups,c]),u=yy(r.audience,n);if(!i)return(0,X.jsx)(Z,{hint:`book`,children:(0,X.jsx)(cf,{icon:(0,X.jsx)(sn,{className:`h-8 w-8 opacity-50`}),title:W(`engine.bookPreview.nameTitle`,n),description:W(`engine.bookPreview.nameDescription`,n)})});let d=`/meta/book/${encodeURIComponent(i)}/tree`;return(0,X.jsx)(Z,{hint:`book · spine`,toolbar:(0,X.jsxs)(`a`,{href:d,target:`_blank`,rel:`noreferrer`,className:`text-xs text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,title:W(`engine.bookPreview.treeTitle`,n),children:[W(`engine.bookPreview.tree`,n),` `,(0,X.jsx)($n,{className:`h-3 w-3`})]}),children:(0,X.jsx)(Q,{children:(0,X.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 p-3`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(sn,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,X.jsx)(`span`,{className:`text-sm font-medium text-foreground truncate`,children:a}),(0,X.jsxs)(`span`,{className:`ml-auto inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[10px] font-medium ${u.tone}`,children:[u.icon,u.label]})]}),(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono mt-0.5`,children:i}),s&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:mp(W(`engine.bookPreview.slug`,n),{slug:(0,X.jsx)(`code`,{className:`font-mono`,children:s})})}),o&&(0,X.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1.5`,children:o})]}),l.length===0?(0,X.jsx)(cf,{icon:(0,X.jsx)(fr,{className:`h-8 w-8 opacity-50`}),title:W(`engine.bookPreview.noGroups`,n),tone:`warn`,description:mp(W(`engine.bookPreview.noGroupsDescription`,n),{groups:(0,X.jsx)(`code`,{children:`groups`}),include:(0,X.jsx)(`code`,{children:`include`}),glob:(0,X.jsx)(`code`,{children:`crm_guide_*`}),tag:(0,X.jsx)(`code`,{children:`{ tag }`})})}):(0,X.jsx)(`div`,{className:`space-y-2`,children:l.map((e,t)=>(0,X.jsx)(xy,{group:e,locale:n},`${e.key}-${t}`))})]})})})}function xy({group:e,locale:t}){return(0,X.jsxs)(`div`,{className:`rounded border bg-background`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 border-b bg-muted/20 px-3 py-2`,children:[(0,X.jsx)(fr,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,X.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate`,children:e.label}),(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.key}),typeof e.order==`number`&&(0,X.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,title:W(`engine.bookPreview.orderTitle`,t),children:[`#`,e.order]}),(0,X.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[e.package&&(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[10px] text-muted-foreground`,title:W(`engine.bookPreview.packageTitle`,t),children:[(0,X.jsx)(Yr,{className:`h-3 w-3`}),e.package]}),(0,X.jsx)(Sy,{include:e.include,hasOverride:!!e.pages?.length,locale:t})]})]}),(0,X.jsx)(`div`,{className:`px-3 py-2`,children:e.pages?.length?(0,X.jsx)(`ol`,{className:`space-y-1`,children:e.pages.map((e,n)=>(0,X.jsx)(Cy,{node:e,locale:t},n))}):e.include==null?(0,X.jsx)(`div`,{className:`text-[11px] text-amber-700 italic`,children:mp(W(`engine.bookPreview.noRule`,t),{include:(0,X.jsx)(`code`,{children:`include`}),pages:(0,X.jsx)(`code`,{children:`pages`}),group:(0,X.jsx)(`code`,{children:`group: "${e.key}"`})})}):(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground italic`,children:W(`engine.bookPreview.derived`,t)})})]})}function Sy({include:e,hasOverride:t,locale:n}){return e==null?t?(0,X.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,title:W(`engine.bookPreview.curatedTitle`,n),children:W(`engine.bookPreview.curated`,n)}):null:typeof e==`string`?(0,X.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/5 px-1.5 py-0.5 font-mono text-[10px] text-foreground`,title:W(`engine.bookPreview.globTitle`,n),children:e}):(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/5 px-1.5 py-0.5 text-[10px] text-foreground`,title:W(`engine.bookPreview.tagTitle`,n),children:[(0,X.jsx)(Pi,{className:`h-3 w-3`}),e.tag]})}function Cy({node:e,locale:t}){if(e.literal===`---`)return(0,X.jsxs)(`li`,{className:`flex items-center gap-2 text-[10px] uppercase tracking-wider text-muted-foreground/60`,children:[(0,X.jsx)(Wr,{className:`h-3 w-3`}),W(`engine.bookPreview.separator`,t)]});if(e.literal===`...`)return(0,X.jsxs)(`li`,{className:`flex items-center gap-2 text-[11px] italic text-muted-foreground`,children:[(0,X.jsx)(Qn,{className:`h-3.5 w-3.5`}),W(`engine.bookPreview.rest`,t)]});let n=!!e.href,r=e.literal??e.doc,i=e.label??r??e.href??W(`engine.bookPreview.emptyPage`,t);return(0,X.jsxs)(`li`,{className:`flex items-center gap-2 text-xs`,children:[n?(0,X.jsx)($n,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}):(0,X.jsx)(sr,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,X.jsx)(`span`,{className:`truncate`,children:i}),!n&&r&&e.label&&(0,X.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:r}),e.badge&&(0,X.jsx)(`span`,{className:`rounded-full border border-primary/30 bg-primary/5 px-1.5 py-0.5 text-[9px] uppercase tracking-wider text-foreground`,children:e.badge}),n&&(0,X.jsx)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer`,onClick:e=>e.stopPropagation(),className:`ml-auto font-mono text-[10px] text-muted-foreground hover:text-foreground truncate max-w-[40%]`,title:e.href,children:e.href})]})}function wy(){Ma(`page`,pp),Ma(`view`,xp),Ma(`dashboard`,Op),Ma(`report`,jp),Ma(`app`,qp),Ma(`action`,Y_),Ma(`object`,fm),Ma(`datasource`,ty),Ma(`validation`,sy),Ma(`dataset`,hy),Ma(`email_template`,gm),Ma(`translation`,wv),Ma(`book`,by),Ma(`flow`,m_),Ma(`job`,vv),Ma(`agent`,__),Ma(`tool`,j_),Ma(`skill`,Ov),Ma(`permission`,z_),Ma(`profile`,z_),Ma(`position`,Dv),Ma(`role`,Dv)}var Ty=[{value:`metric`,labelKey:`engine.inspector.widget.type.metric`},{value:`bar`,labelKey:`engine.inspector.widget.type.bar`},{value:`horizontal-bar`,labelKey:`engine.inspector.widget.type.horizontalBar`},{value:`line`,labelKey:`engine.inspector.widget.type.line`},{value:`area`,labelKey:`engine.inspector.widget.type.area`},{value:`pie`,labelKey:`engine.inspector.widget.type.pie`},{value:`donut`,labelKey:`engine.inspector.widget.type.donut`},{value:`funnel`,labelKey:`engine.inspector.widget.type.funnel`},{value:`table`,labelKey:`engine.inspector.widget.type.table`},{value:`pivot`,labelKey:`engine.inspector.widget.type.pivot`}],Ey=[`default`,`blue`,`teal`,`orange`,`purple`,`success`,`warning`,`danger`];function Dy(e,t){let n=Array.isArray(e.widgets)?e.widgets:[],r=n.findIndex(e=>e?.id===t);return r<0?null:{widget:n[r],index:r}}function Oy({draft:e,selection:t,onPatch:n,onClearSelection:r,onSelectionChange:i,readOnly:a,locale:o}){let s=Array.isArray(e.widgets)?e.widgets:[],c=t.kind===`widget`?t.id:void 0,l=c?Dy(e,c):null,u=l?.widget??{},d=typeof u.dataset==`string`?u.dataset:``,f=Array.isArray(u.dimensions)?u.dimensions.filter(e=>typeof e==`string`):[],p=Array.isArray(u.values)?u.values.filter(e=>typeof e==`string`):[],m=ns(),h=Xo(d||void 0,m),g=Y.useMemo(()=>{let e=m.datasets.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name}));return d&&!e.some(e=>e.value===d)&&e.push({value:d,label:d}),e},[m.datasets,d]),_=Y.useMemo(()=>h.measures.map(e=>({name:e.name,label:e.aggregate?`${e.name} · ${e.aggregate}`:e.name,type:`number`,hidden:!1})),[h.measures]),v=Y.useMemo(()=>h.dimensions.map(e=>({name:e.name,label:e.name,type:e.type??`text`,hidden:!1})),[h.dimensions]),y=Y.useMemo(()=>h.dimensions.map(e=>({value:e.name,label:e.name,hint:e.type})),[h.dimensions]),x=Y.useMemo(()=>Pt({globalFilters:e.globalFilters,dateRange:e.dateRange}),[e]);if(t.kind!==`widget`)return(0,X.jsx)(jy,{message:U(`engine.inspector.widget.unsupportedSelection`,o,{kind:t.kind}),onClose:r,locale:o});if(!l)return(0,X.jsx)(jy,{message:W(`engine.inspector.widget.removed`,o),onClose:r,locale:o});let{widget:S,index:C}=l;function w(e){let t=[...s];t[C]={...t[C],...e},n({widgets:t})}function T(e){n({widgets:os(s,C,e)}),S.id&&i?.({kind:`widget`,id:S.id,label:b(S.title,o)})}return(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:W(`engine.inspector.widget.kind`,o)}),(0,X.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:b(S.title,o)||t.label||U(`engine.inspector.widget.untitledN`,o,{n:C+1})})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,X.jsx)(Yo,{index:C,total:s.length,onMove:T,upLabel:W(`engine.inspector.reorder.up`,o),downLabel:W(`engine.inspector.reorder.down`,o),disabled:a}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0`,onClick:r,title:W(`engine.inspector.widget.close`,o),"aria-label":W(`engine.inspector.widget.close`,o),children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]})]}),(0,X.jsx)(Ay,{id:`widget-title`,label:W(`engine.inspector.widget.title`,o),children:(0,X.jsx)(z,{id:`widget-title`,value:b(S.title,o)??``,onChange:e=>w({title:Kt(S.title,o,e.target.value)}),disabled:a})}),(0,X.jsx)(Ay,{id:`widget-type`,label:W(`engine.inspector.widget.type`,o),children:(0,X.jsxs)(_e,{value:S.type??`metric`,onValueChange:e=>{let t=Ty.find(t=>t.value===e);t&&w({type:t.value})},disabled:a,children:[(0,X.jsx)(Ve,{id:`widget-type`,children:(0,X.jsx)(ft,{})}),(0,X.jsx)(Ce,{children:Ty.map(e=>(0,X.jsx)(ke,{value:e.value,children:W(e.labelKey,o)},e.value))})]})}),(0,X.jsxs)(`div`,{className:`space-y-3 rounded-md border p-3`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wider text-muted-foreground`,children:W(`engine.inspector.widget.datasetSection`,o)}),(0,X.jsxs)(Ay,{id:`widget-dataset`,label:W(`engine.inspector.widget.dataset`,o),children:[(0,X.jsx)(Bc,{id:`widget-dataset`,value:d,onCommit:e=>w({dataset:e||void 0}),options:g,loading:m.loading,placeholder:W(`engine.inspector.widget.datasetPlaceholder`,o),searchPlaceholder:W(`engine.inspector.widget.datasetPlaceholder`,o),disabled:a,mono:!0}),(0,X.jsx)(`p`,{className:`text-[10px] leading-snug text-muted-foreground`,children:W(`engine.inspector.widget.datasetHint`,o)})]}),d&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(is,{label:W(`engine.inspector.widget.dimensions`,o),emptyText:W(`engine.inspector.widget.dimensionsHint`,o),names:f,options:v,loading:h.loading,error:h.error,readOnly:a,onCommit:e=>w({dimensions:e})}),(0,X.jsx)(is,{label:W(`engine.inspector.widget.values`,o),emptyText:W(`engine.inspector.widget.valuesHint`,o),names:p,options:_,loading:h.loading,error:h.error,readOnly:a,onCommit:e=>w({values:e})})]})]}),x.length>0&&(0,X.jsxs)(`div`,{className:`space-y-3 rounded-md border p-3`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wider text-muted-foreground`,children:W(`engine.inspector.widget.filterBindingsSection`,o)}),(0,X.jsx)(`p`,{className:`text-[10px] leading-snug text-muted-foreground`,children:W(`engine.inspector.widget.filterBindingsHint`,o)}),x.map(e=>{let t=S.filterBindings,n=t?.[e.name],r=n===!1,i=typeof n==`string`?n:``,s=n=>{let r={...t??{}};n===void 0?delete r[e.name]:r[e.name]=n,w({filterBindings:Object.keys(r).length>0?r:void 0})};return(0,X.jsxs)(`div`,{className:`space-y-1.5`,"data-testid":`widget-filter-binding-${e.name}`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsx)(I,{className:`text-xs font-medium text-muted-foreground truncate`,children:b(e.label,o)||e.name}),(0,X.jsx)(K,{label:W(`engine.inspector.widget.filterBindingApply`,o),value:!r,onCommit:e=>s(e?void 0:!1),disabled:a})]}),!r&&(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,X.jsx)(Bc,{ariaLabel:U(`engine.inspector.widget.filterBindingField`,o,{filter:b(e.label,o)||e.name}),value:i,onCommit:e=>s(e||void 0),options:y,placeholder:U(`engine.inspector.widget.filterBindingDefault`,o,{field:e.field}),searchPlaceholder:W(`engine.form.searchFields`,o),disabled:a,mono:!0})}),i&&!a&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 shrink-0 px-2 text-[10px] text-muted-foreground`,onClick:()=>s(void 0),children:W(`engine.inspector.widget.filterBindingReset`,o)})]})]},e.name)})]}),(0,X.jsx)(Ay,{id:`widget-color`,labelling:`group`,label:W(`engine.inspector.widget.color`,o),children:(0,X.jsx)(so,{ariaLabelledBy:ky(`widget-color`),value:S.colorVariant??`default`,onChange:e=>w({colorVariant:e}),disabled:a,options:Ey.map(e=>({value:e}))})}),(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,X.jsx)(Ay,{id:`widget-w`,label:W(`engine.inspector.widget.width`,o),children:(0,X.jsx)(z,{id:`widget-w`,type:`number`,min:1,value:S.layout?.w??1,onChange:e=>w({layout:{...S.layout??{},w:Number(e.target.value)||1}}),disabled:a})}),(0,X.jsx)(Ay,{id:`widget-h`,label:W(`engine.inspector.widget.height`,o),children:(0,X.jsx)(z,{id:`widget-h`,type:`number`,min:1,value:S.layout?.h??1,onChange:e=>w({layout:{...S.layout??{},h:Number(e.target.value)||1}}),disabled:a})})]}),!a&&(0,X.jsx)(`div`,{className:`pt-2 border-t`,children:(0,X.jsx)(B,{type:`button`,variant:`outline`,size:`sm`,className:`w-full text-destructive hover:text-destructive`,onClick:()=>{let t=Array.isArray(e.widgets)?[...e.widgets]:[];t.splice(C,1),n({widgets:t}),r()},children:W(`engine.inspector.widget.remove`,o)})})]})}var ky=e=>`${e}-label`;function Ay({id:e,label:t,labelling:n=`control`,children:r}){return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{...n===`group`?{id:ky(e)}:{htmlFor:e},className:`text-xs font-medium text-muted-foreground`,children:t}),r]})}function jy({message:e,onClose:t,locale:n}){return(0,X.jsxs)(`div`,{className:`space-y-3 rounded-md border border-dashed p-4 text-sm text-muted-foreground`,children:[(0,X.jsx)(`p`,{children:e}),(0,X.jsx)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:t,children:W(`engine.inspector.widget.close`,n)})]})}var My={"zh-CN":{metadataForms:{dashboard:{label:`仪表板`,sections:{basics:{label:`基本信息`,description:`仪表板的名称与描述。`},layout:{label:`布局`,description:`栅格尺寸与刷新频率。`},widgets:{label:`组件`,description:`放在栅格上的卡片与图表。`},filters:{label:`筛选`,description:`应用到全部组件的默认筛选与全局筛选。`},advanced:{label:`高级`,description:`无障碍与性能调优。`}},fields:{name:{label:`名称`,helpText:`snake_case 唯一标识`},label:{label:`显示名称`,helpText:`展示给使用者的名称`},description:{label:`描述`},columns:{label:`列数`,helpText:`栅格列数(默认 12)`},gap:{label:`间距`,helpText:`组件之间的间距,数值越大越松`},refreshIntervalSeconds:{label:`自动刷新`,helpText:`自动刷新间隔(秒),0 表示不自动刷新`},header:{label:`页眉`,helpText:`页眉设置:标题、描述与操作按钮`},"header.showTitle":{label:`显示标题`,helpText:`在页眉中显示仪表板名称`},"header.showDescription":{label:`显示描述`,helpText:`在页眉中显示仪表板描述`},"header.actions":{label:`操作按钮`,helpText:`显示在页眉里的操作按钮`},widgets:{label:`组件`,helpText:`仪表板组件,含位置与尺寸`},dateRange:{label:`日期范围`,helpText:`默认的日期范围选择器`},globalFilters:{label:`全局筛选`,helpText:`应用到全部组件的筛选条件`}}}}}};function Ny(e){return Vo(e)?`zh-CN`:void 0}function Py(e,t,n){if(!e)return e;let r=Ny(n);return!r||!My[r]?.metadataForms?.[t]?e:Ly(w(Iy(e),t,My,{locale:r}))}function Fy(e){if(!e||typeof e!=`object`)return e;let t=e,n={...t};return vo(n,typeof t.label==`string`?t.label:void 0),Array.isArray(t.fields)&&(n.fields=t.fields.map(Fy)),n}function Iy(e){let t=e=>{if(!e||typeof e!=`object`)return e;let t=e;return Array.isArray(t.fields)?{...t,fields:t.fields.map(Fy)}:t},n={...e};return Array.isArray(e.sections)&&(n.sections=e.sections.map(t)),Array.isArray(e.groups)&&(n.groups=e.groups.map(t)),n}function Ly(e){let t=e=>{if(!e||typeof e!=`object`)return;let n=e;wo(n)||vo(n,void 0),Array.isArray(n.fields)&&n.fields.forEach(t)},n=e;for(let e of[`sections`,`groups`]){let r=n?.[e];if(Array.isArray(r))for(let e of r){let n=e?.fields;Array.isArray(n)&&n.forEach(t)}}return e}var Ry={io:`input`,unrepresentable:`any`},zy=new Set([`widgets`,`label`,`description`,`name`]),By,Vy=!1;function Hy(){if(By||Vy)return By;try{By=Ea(_,Ry)}catch(e){Vy=!0,typeof console<`u`&&console.warn(`[dashboard-schema] failed to derive Dashboard JSONSchema from spec`,e)}return By}var Uy=new Map;function Wy(e){let t=String(e??``);if(Uy.has(t))return Uy.get(t);if(p&&typeof p==`object`)try{let n=JSON.parse(JSON.stringify(p));for(let e of n.sections??[])e.fields=(e.fields??[]).filter(e=>{let t=typeof e==`string`?e:e?.field;return!zy.has(t)});n.sections=(n.sections??[]).filter(e=>(e.fields??[]).length>0);let r=Py(n,`dashboard`,e);return Uy.set(t,r),r}catch(e){typeof console<`u`&&console.warn(`[dashboard-schema] failed to prepare dashboardForm from spec`,e);return}}var Gy=new Set([`name`,`label`,`description`,`widgets`]);function Ky({draft:e,onPatch:t,readOnly:n,locale:r,onSelectionChange:i,serverSchema:a}){let o=Y.useCallback(e=>W(e,r),[r]),s=typeof e.label==`string`?e.label:``,c=typeof e.description==`string`?e.description:``,l=Y.useMemo(()=>Array.isArray(e.widgets)?e.widgets:[],[e.widgets]),u=e=>{let n=Rc(`widget`,l.map(e=>e?.id).filter(Boolean)),r=Sp[e],a=r?`New ${r.label.toLowerCase()}`:`New widget`,o={id:n,type:e,title:a,...r?.defaults??{}};t({widgets:ss(l,o)}),i?.({kind:`widget`,id:n,label:a})},d=e=>{t({widgets:G(l,e,null)})},f=(e,n)=>{e!==n&&t({widgets:os(l,e,n)})},p=(e,t)=>{e?.id&&i?.({kind:`widget`,id:e.id,label:b(e.title,r)||e.id||U(`engine.inspector.widget.untitledN`,r,{n:t+1})})},[m,h]=Y.useState(null),[g,_]=Y.useState(null),{schema:v,form:y}=Y.useMemo(()=>Go({bundledSchema:Hy(),bundledForm:Wy(r),serverSchema:a,excludeFields:Gy,sectionTitle:W(`engine.inspector.moreFields`,r)}),[a,r]);return(0,X.jsxs)(Wo,{kindLabel:o(`engine.inspector.dashboard.kind`),title:String(s||e.name||o(`engine.inspector.dashboard.kind`)),onClose:()=>{},closeLabel:o(`engine.inspector.dashboard.close`),hideClose:!0,children:[(0,X.jsx)(J,{label:o(`engine.inspector.dashboard.label`),value:s,onCommit:e=>t({label:e}),placeholder:o(`engine.inspector.dashboard.labelPlaceholder`),disabled:n}),(0,X.jsx)(J,{label:o(`engine.inspector.dashboard.description`),value:c,onCommit:e=>t({description:e}),placeholder:o(`engine.inspector.dashboard.descriptionPlaceholder`),disabled:n}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.dashboard.widgets`)}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:l.length})]}),l.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-3 text-center text-[11px] text-muted-foreground`,children:o(`engine.inspector.dashboard.widgetsEmpty`)}):(0,X.jsx)(`div`,{className:`space-y-1`,children:l.map((e,t)=>{let i=Sp[e?.type]?.icon??Tp;return(0,X.jsxs)(`div`,{draggable:!n,onDragStart:()=>h(t),onDragEnd:()=>{h(null),_(null)},onDragOver:e=>{e.preventDefault(),_(t)},onDrop:()=>{m!=null&&m!==t&&f(m,t),h(null),_(null)},className:`group flex items-center gap-2 rounded-md border px-2 py-1.5 text-xs hover:bg-accent`+(g===t&&m!==null&&m!==t?` border-primary`:``),children:[!n&&(0,X.jsx)(xr,{className:`h-3.5 w-3.5 shrink-0 cursor-grab text-muted-foreground`}),(0,X.jsx)(i,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,X.jsx)(`button`,{type:`button`,className:`min-w-0 flex-1 truncate text-left font-medium`,onClick:()=>p(e,t),title:b(e?.title,r)||e?.id,children:b(e?.title,r)||e?.id||U(`engine.inspector.widget.untitledN`,r,{n:t+1})}),(0,X.jsx)(`code`,{className:`text-[10px] text-muted-foreground`,children:e?.type}),!n&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 w-6 shrink-0 p-0 opacity-0 group-hover:opacity-100`,onClick:()=>d(t),title:o(`engine.inspector.dashboard.removeWidget`),"aria-label":o(`engine.inspector.dashboard.removeWidget`),children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]},e?.id??t)})}),!n&&(0,X.jsx)(Ep,{onAdd:u,label:o(`engine.inspector.add.widget`)})]}),(0,X.jsx)(`div`,{className:`border-t pt-3`,children:v?(0,X.jsx)(jo,{schema:v,form:y,value:e,hiddenFields:[`name`,`label`,`description`,`widgets`],readOnly:n,onChange:e=>t(e)}):(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:o(`engine.inspector.dashboard.noSchema`)})})]})}var qy=[`connectorConfig`,`input`],Jy=qy.join(`.`),Yy=Jy;function Xy(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Zy(e,t,n){if(!Array.isArray(e)||!t||!n)return;let r=e.find(e=>Xy(e)&&e.name===t);if(!r||!Array.isArray(r.actions))return;let i=r.actions.find(e=>Xy(e)&&e.key===n)?.inputSchema;return Xy(i)?i:void 0}function Qy(e){let t={...e,id:`${Jy}.${e.id}`,path:[...qy,...e.path.slice(1)]};return e.showWhen&&(t.showWhen={...e.showWhen,field:`${Jy}.${e.showWhen.field}`}),t}function $y(e){let t=ko(e);if(!t||t.length===0)return null;let n=t.map(Qy),r=[];for(let e of n){let t=e.path[qy.length];t&&!r.includes(t)&&r.push(t)}return{fields:n,declaredKeys:r,open:(Xy(e)?e.additionalProperties:void 0)!==!1}}function eb(e,t){if(!Xy(e))return{};let n={};for(let[r,i]of Object.entries(e))t.includes(r)||(n[r]=i);return n}function tb(e,t,n){let r=Xy(e)?e:{},i={};for(let[e,a]of Object.entries(r))n.includes(e)?i[e]=a:Object.prototype.hasOwnProperty.call(t,e)&&(i[e]=t[e]);for(let[e,n]of Object.entries(t))Object.prototype.hasOwnProperty.call(i,e)||(i[e]=n);return Object.keys(i).length?i:void 0}function nb(e,t,n){if(!t||Array.isArray(n))return e;let r=e.findIndex(e=>e.id===Yy);if(r===-1)return e;let i=e[r],a=Object.keys(eb(n,t.declaredKeys)).length>0,o=t.open||a;return[...e.slice(0,r),...t.fields,...o?[{...i,omitKeys:t.declaredKeys}]:[],...e.slice(r+1)]}function rb(e){let[t,n]=Y.useState([]);return Y.useEffect(()=>{if(!e)return;let t=!1,r=new AbortController;return(async()=>{try{let e=await fetch(`${Bu()}/automation/connectors`,{credentials:`include`,headers:{Accept:`application/json`},signal:r.signal});if(!e.ok)return;let i=await e.json(),a=i?.data?.connectors??i?.connectors??[];!t&&Array.isArray(a)&&n(a)}catch{}})(),()=>{t=!0,r.abort()}},[e]),t}var ib=e=>Fo(e),ab=e=>typeof e.expression==`string`?e.expression.trim():``,ob=e=>typeof e.label==`string`?e.label.trim():``,sb=e=>typeof e.target==`string`?e.target.trim():``,cb=e=>{let t=ab(e);return t===``||t===`true`};function lb(e){return Array.isArray(e)?e.filter(e=>e&&typeof e==`object`&&!Array.isArray(e)):[]}function ub(e,t){if(cb(e))return t.isDefault===!0;let n=ab(e),r=ib(t.condition);if(n&&r===n)return!0;let i=ob(e);return i!==``&&t.label===i}var db=e=>t=>t.source===e&&t.type!==`fault`&&t.type!==`back`;function fb(e,t){let n=ab(t),r=ob(t),i={...e};return r?i.label=r:delete i.label,n&&n!==`true`?(i.condition=n,delete i.isDefault):n===`true`?(i.isDefault=!0,delete i.condition):(delete i.condition,delete i.isDefault),i}function pb(e,t,n){let r=lb(t),i=db(e),a=0;return n.map(e=>{if(!i(e))return e;let t=r[a++];return t?fb(e,t):e})}function mb(e,t,n){let r=lb(t);if(r.length===0)return r;let i=n.map((e,t)=>t).filter(t=>db(e)(n[t])),a=new Set,o=new Map;return r.forEach((e,t)=>{let r=i.find(t=>!a.has(t)&&ub(e,n[t]));r!==void 0&&(a.add(r),o.set(t,r))}),r.forEach((e,t)=>{if(o.has(t))return;let n=i.find(e=>!a.has(e));n!==void 0&&(a.add(n),o.set(t,n))}),r.map((e,t)=>{let{target:r,...i}=e,a=o.get(t);return a===void 0?i:{...i,target:n[a].target}})}function hb(e,t,n){let r=lb(t),i=r.map(e=>{let{target:t,...n}=e;return n});if(!r.some(e=>sb(e)!==``))return{conditions:i,edges:pb(e,i,n)};let a=n.map((e,t)=>t).filter(t=>db(e)(n[t])),o=new Set,s=new Map,c=[(e,t)=>t.target===sb(e)&&ub(e,t),(e,t)=>t.target===sb(e),(e,t)=>ub(e,t)];for(let e of c)r.forEach((t,r)=>{if(s.has(r)||sb(t)===``)return;let i=a.find(r=>!o.has(r)&&e(t,n[r]));i!==void 0&&(o.add(i),s.set(r,i))});let l=new Map,u=[],d=new Set,f=n.map(e=>e.id);return r.forEach((t,r)=>{let i=sb(t);if(i===``){let e=a.find(e=>!o.has(e)&&ub(t,n[e]));e!==void 0&&(o.add(e),d.add(e));return}let c=s.get(r);if(c!==void 0){l.set(c,fb({...n[c],target:i},t));return}let p=Rc(`edge`,f);f.push(p),u.push(fb({id:p,source:e,target:i},t))}),{conditions:i,edges:n.map((e,t)=>d.has(t)?null:l.get(t)??e).filter(e=>e!==null).concat(u)}}function gb(e,t){return t===`template`?`{${e}}`:e}function _b(e,t,n,r,i){let a=gb(n,t),o=Math.min(Math.max(r,0),e.length),s=Math.min(Math.max(i,0),e.length),c=Math.min(o,s),l=Math.max(o,s);return{next:e.slice(0,c)+a+e.slice(l),caret:c+a.length}}function vb({value:e,onValueChange:t,onBlur:n,onKeyDown:r,mode:i,groups:a,placeholder:o,disabled:s,multiline:c,rows:l=4,mono:u,className:d}){let f=Y.useRef(null),p=Y.useRef({start:0,end:0}),[m,h]=Y.useState(!1),g=Bo(),_=W(`engine.flowScope.picker.insert`,g),v=e=>{f.current=e},y=()=>{let t=f.current;t&&(p.current={start:t.selectionStart??e.length,end:t.selectionEnd??e.length})},b=n=>{let{next:r,caret:a}=_b(e,i,n,p.current.start,p.current.end);t(r),h(!1),requestAnimationFrame(()=>{let e=f.current;if(e){e.focus();try{e.setSelectionRange(a,a)}catch{}p.current={start:a,end:a}}})},x=a.some(e=>e.refs.length>0),S={value:e,onChange:e=>t(e.target.value),onBlur:n,onKeyDown:r,onSelect:y,onKeyUp:y,onClick:y,placeholder:o,disabled:s};return(0,X.jsxs)(`div`,{className:L(`relative`,d),children:[c?(0,X.jsx)(`textarea`,{ref:v,...S,rows:l,className:`w-full rounded border bg-background px-2 py-1.5 pr-8 font-mono text-xs`}):(0,X.jsx)(z,{ref:v,...S,className:L(`h-8 pr-8 text-sm`,u&&`font-mono`)}),x&&!s&&(0,X.jsxs)(Ke,{open:m,onOpenChange:h,children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsx)(`button`,{type:`button`,"aria-label":_,title:_,onMouseDown:y,className:`absolute right-1 top-1 inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:(0,X.jsx)(dn,{className:`h-3.5 w-3.5`})})}),(0,X.jsx)(be,{align:`end`,className:`w-72 p-0`,onCloseAutoFocus:e=>e.preventDefault(),children:(0,X.jsxs)(dt,{children:[(0,X.jsx)(Ue,{placeholder:W(`engine.flowScope.picker.search`,g),className:`h-9`}),(0,X.jsxs)(he,{children:[(0,X.jsx)(fe,{children:W(`engine.flowScope.picker.empty`,g)}),a.map(e=>(0,X.jsx)(lt,{heading:e.label,children:e.refs.map(t=>(0,X.jsxs)(ge,{value:`${t.token} ${t.label} ${t.detail??``}`,onSelect:()=>b(t.token),className:`flex items-center justify-between gap-2`,children:[(0,X.jsx)(`span`,{className:`truncate font-mono text-xs`,children:gb(t.token,i)}),t.detail&&(0,X.jsx)(`span`,{className:`shrink-0 truncate text-[10px] text-muted-foreground`,children:t.detail})]},`${e.id}:${t.token}`))},e.id))]})]})})]})]})}function yb(e,t,n,r){let i=n&&n.length>0?Oh(n.flatMap(e=>e.refs)):null,a=i?Nh(e,t,i):[];return a.length>0?Ph(a,r):void 0}function bb({value:e,role:t,scopeGroups:n,screenNode:r}){let i=Bo(),a=t===`template`?null:Lh(t,e,i);if(a)return(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-destructive`,role:`alert`,children:a.message});let o=r?Gh(e,r,i):yb(e,t,n,i);return o?(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-amber-600 dark:text-amber-400`,role:`note`,children:o}):null}function xb(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Sb(e){return e==null?``:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e)}function Cb(e){let t=e.trim();if(t===``)return``;if(t===`true`)return!0;if(t===`false`)return!1;if(/^-?\d+(\.\d+)?$/.test(t))return Number(t);if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.parse(t)}catch{return e}return e}function wb(e){return Array.isArray(e)?e.filter(e=>xb(e)).map(e=>{let t=e.variable??e.name??e.key;return[typeof t==`string`?t:``,e.value]}):xb(e)?Object.entries(e):[]}function Tb(e,t,n=!1){let r=[...t],i=n&&!Array.isArray(e);return wb(e).map(([e,t])=>{let n=Rc(`kv`,r);return r.push(n),i&&Hm(t)?{id:n,key:e,raw:t.source,mode:`expression`,envelope:t}:{id:n,key:e,raw:Sb(t)}})}function Eb(e){return e.mode===`expression`?Um(e.envelope,e.raw):Cb(e.raw)}function Db(e,t){return t&&!e.some(e=>e.mode===`expression`)}function Ob(e,t){let n=new Set,r=[];for(let t of e){let e=t.key.trim();e&&!n.has(e)&&(n.add(e),r.push([e,t]))}if(Db(r.map(([,e])=>e),t))return r.map(([e,t])=>({variable:e,value:Eb(t)}));let i={};for(let[e,t]of r)i[e]=Eb(t);return i}function kb(e,t){if(t===`text`)return e.mode===`expression`?{id:e.id,key:e.key,raw:e.raw}:e;if(e.mode===`expression`)return e;let n=Cb(e.raw);return Hm(n)?{id:e.id,key:e.key,raw:n.source,mode:`expression`,envelope:n}:{id:e.id,key:e.key,raw:e.raw,mode:`expression`}}function Ab(e){if(Array.isArray(e))return JSON.stringify(e);let t=e??{},n=Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{});return JSON.stringify(n)}function jb(e){let t=!1,n=e.map(e=>e.mode===`expression`||!Hm(Cb(e.raw))?e:(t=!0,kb(e,`expression`)));return t?n:e}function Mb({label:e,value:t,onCommit:n,disabled:r,help:i,addLabel:a,keyLabel:o,valueLabel:s,removeLabel:c,emptyLabel:l,scopeGroups:u,valueEnvelope:d}){let f=Array.isArray(t),p=d!==void 0,m=Y.useMemo(()=>Ab(Ob(Tb(t,[],p),f)),[t,f,p]),[h,g]=Y.useState(()=>Tb(t,[],p)),_=Y.useRef(m);Y.useEffect(()=>{m!==_.current&&(g(Tb(t,[],p)),_.current=m)},[m,t,p]);let v=e=>{let t=Ob(e,f);return _.current=Ab(t),n((Array.isArray(t)?t.length===0:Object.keys(t).length===0)?void 0:t),p&&!Array.isArray(t)?jb(e):e},y=()=>{let e=v(h);e!==h&&g(e)},b=(e,t)=>{g(n=>n.map(n=>n.id===e?{...n,...t}:n))},x=()=>{g(e=>[...e,{id:Rc(`kv`,e.map(e=>e.id)),key:``,raw:``}])},S=e=>{g(t=>v(t.filter(t=>t.id!==e)))},C=(e,t)=>{g(n=>v(n.map(n=>n.id===e?kb(n,t):n)))},w=!Db(h,f);return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),p&&f&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-amber-700 dark:text-amber-400`,role:`note`,children:"`assignments` is a map of variable name → value (`{ assignments: { total: '{amount}' } }`). The array form `[{ variable, value }]` is a legacy shape the executor still reads but this contract does not describe — write the map, which is also the only shape that accepts a CEL value envelope."}),(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[h.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:l}),h.map(e=>{let t=e.mode===`expression`,n=p&&w?Wm(Eb(e)):null;return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(z,{value:e.key,onChange:t=>b(e.id,{key:t.target.value}),onBlur:y,onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},placeholder:o,disabled:r,className:`h-8 flex-1 font-mono text-xs`}),(0,X.jsx)(vb,{mode:t?`expression`:`template`,mono:t,value:e.raw,onValueChange:t=>b(e.id,{raw:t}),onBlur:y,onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},groups:u??[],placeholder:t&&d?d.expressionPlaceholder:s,disabled:r,className:`flex-1`}),d&&(0,X.jsx)(B,{type:`button`,variant:t?`secondary`:`ghost`,size:`sm`,className:L(`h-8 w-8 shrink-0 p-0`,t?`text-foreground`:`text-muted-foreground`),onClick:()=>C(e.id,t?`text`:`expression`),disabled:r,"aria-pressed":t,"aria-label":d.toggleLabel,title:d.toggleLabel,children:(0,X.jsx)(Vn,{className:`h-3.5 w-3.5`})}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 w-8 shrink-0 p-0 text-muted-foreground`,onClick:()=>S(e.id),disabled:r,"aria-label":c,title:c,children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]}),n?(0,X.jsx)(`div`,{className:`space-y-0.5`,role:`alert`,children:n.map((e,t)=>(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-destructive`,children:e},t))}):t?(0,X.jsx)(bb,{value:Eb(e),role:`value`,scopeGroups:u}):(0,X.jsx)(bb,{value:e.raw,role:`template`,scopeGroups:u})]},e.id)})]}),(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 w-full text-xs`,onClick:x,disabled:r,children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),a]}),i&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:i})]})}function Nb(e,t){let n=[...t];return e.map(e=>{let t=Rc(`sl`,n);return n.push(t),{id:t,value:e}})}function Pb(e){return e.map(e=>e.value.trim()).filter(e=>e!==``)}function Fb({label:e,value:t,onCommit:n,disabled:r,addLabel:i,itemLabel:a,removeLabel:o,emptyLabel:s}){let c=Y.useMemo(()=>Array.isArray(t)?t.map(e=>String(e)):[],[t]),[l,u]=Y.useState(()=>Nb(c,[])),d=Y.useRef(JSON.stringify(c));Y.useEffect(()=>{let e=JSON.stringify(c);e!==d.current&&(u(Nb(c,[])),d.current=e)},[c]);let f=e=>{let t=Pb(e);d.current=JSON.stringify(t),n(t.length?t:void 0)},p=(e,t)=>{u(n=>n.map(n=>n.id===e?{...n,value:t}:n))},m=()=>{u(e=>[...e,{id:Rc(`sl`,e.map(e=>e.id)),value:``}])},h=e=>{u(t=>{let n=t.filter(t=>t.id!==e);return f(n),n})};return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[l.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:s}),l.map(e=>(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(z,{value:e.value,onChange:t=>p(e.id,t.target.value),onBlur:()=>f(l),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},placeholder:a,disabled:r,className:`h-8 flex-1 text-xs`}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 w-8 shrink-0 p-0 text-muted-foreground`,onClick:()=>h(e.id),disabled:r,"aria-label":o,title:o,children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]},e.id))]}),(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 w-full text-xs`,onClick:m,disabled:r,children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),i]})]})}var Ib={object:`object`,flow:`flow`,connector:`connector`,"email-template":`email_template`},Lb=Object.fromEntries(Object.entries({user:{displayField:`name`,picker:`search`,subtitle:[`email`]},team:{displayField:`name`},department:{displayField:`name`},position:{displayField:`label`}}).flatMap(([e,t])=>{let n=O[e];return!n||n.source!==`data`?[]:[[e,{object:n.object,valueField:n.valueField,...t}]]})),Rb=F.map(({value:e,label:t})=>({value:e,label:t}));function zb(e){let t=Rb.find(t=>t.value===e);return t?t.label:e.split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Bb(e){return e?.source===`enum`&&e.values.length>0?e.values.map(e=>({value:e,label:zb(e)})):Rb}function Vb(e,t){if(e){if(e.kind)return{kind:e.kind,objectSource:e.objectSource,connectorSource:e.connectorSource,source:e.sources?.[e.kind]};if(e.kindFrom&&e.map){let n=t(e.kindFrom),r=typeof n==`string`?e.map[n]:void 0;if(r)return{kind:r,objectSource:e.objectSource,connectorSource:e.connectorSource,source:typeof n==`string`?e.sources?.[n]:void 0}}}}function Hb(e){if(!e)return;let t=Lb[e.kind],n=e.source;if(!(n&&n.source!==`data`))return n?{object:n.object,valueField:n.valueField,displayField:t?.displayField??n.valueField,...t?.picker?{picker:t.picker}:{},...t?.subtitle?{subtitle:t.subtitle}:{}}:t}function Ub(e,t){let n=e?.config;if(!n||typeof n!=`object`||Array.isArray(n))return;let r=n[t];return typeof r==`string`&&r?r:void 0}function Wb(e,t,n){if(e!==`object-field`)return;let r=t||`$trigger`;return r===`$trigger`?Ub((Array.isArray(n.draft.nodes)?n.draft.nodes:[]).find(e=>e?.type===`start`),`objectName`):Ub(n.node,r)}function Gb(e,t,n){if(e!==`connector-action`)return;let r=n.node?.connectorConfig;if(!r||typeof r!=`object`||Array.isArray(r))return;let i=r[t||`connectorId`];return typeof i==`string`&&i?i:void 0}function Kb(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e.key==`string`&&!!e.key).map(e=>({value:e.key,label:typeof e.label==`string`&&e.label&&e.label!==e.key?`${e.label} (${e.key})`:e.key})):[]}function qb(e,t){return Array.isArray(e)?e.filter(e=>!!e&&typeof e.name==`string`&&!!e.name).map(e=>{let n=typeof e.label==`string`&&e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name;return{value:e.name,label:e.origin===`declarative`?`${n} · ${W(`engine.inspector.reference.declarative`,t)}`:n}}):[]}function Jb(e){let t=Qi(),[n,r]=Y.useState({options:[],loading:!!e});return Y.useEffect(()=>{if(!e){r({options:[],loading:!1});return}let n=!1;return r(e=>({...e,loading:!0})),t.list(e).then(e=>{if(n)return;let t=(Array.isArray(e)?e:[]).filter(e=>e&&typeof e.name==`string`&&e.name).map(e=>({value:String(e.name),label:typeof e.label==`string`&&e.label&&e.label!==e.name?`${e.label} (${e.name})`:String(e.name)}));r({options:t,loading:!1})}).catch(()=>{n||r({options:[],loading:!1})}),()=>{n=!0}},[t,e]),n}function Yb(e){let[t,n]=Y.useState({options:[],loading:!!e});return Y.useEffect(()=>{if(!e){n({options:[],loading:!1});return}let t=!1;return n(e=>({...e,loading:!0})),fetch(`/api/v1/automation/connectors`,{credentials:`include`,headers:{Accept:`application/json`}}).then(e=>e.ok?e.json():null).then(r=>{if(t)return;let i=r?.data?.connectors??r?.connectors??[],a=Array.isArray(i)?i.find(t=>t?.name===e):void 0;n({options:Kb(a?.actions),loading:!1})}).catch(()=>{t||n({options:[],loading:!1})}),()=>{t=!0}},[e]),t}function Xb(e,t){let[n,r]=Y.useState({options:[]});return Y.useEffect(()=>{if(!e){r({options:[]});return}let n=!1;return fetch(`/api/v1/automation/connectors`,{credentials:`include`,headers:{Accept:`application/json`}}).then(e=>e.ok?e.json():null).then(e=>{if(n)return;let i=e?.data?.connectors??e?.connectors??[];r({options:qb(i,t)})}).catch(()=>{n||r({options:[]})}),()=>{n=!0}},[e,t]),n}function Zb({binding:e,value:t,onPick:n,onCommit:r,onBlur:i,disabled:a,placeholder:o,locale:s}){let c=ht(),[l,u]=Y.useState(!1),d=t==null?``:String(t);return!c||l?(0,X.jsxs)(`div`,{className:`flex w-full items-center gap-1`,children:[(0,X.jsx)(z,{value:d,onChange:e=>r(e.target.value),onBlur:i,onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},placeholder:o,disabled:a,className:`h-8 flex-1 text-sm`}),c&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 w-8 shrink-0 p-0 text-muted-foreground`,onClick:()=>u(!1),disabled:a,"aria-label":W(`engine.inspector.reference.pickFromRecords`,s),title:W(`engine.inspector.reference.pickFromRecords`,s),children:(0,X.jsx)(vi,{className:`h-3.5 w-3.5`})})]}):(0,X.jsxs)(`div`,{className:`flex w-full items-center gap-1`,children:[(0,X.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,X.jsx)(Oe,{value:d||null,onChange:e=>n(e==null?``:String(e)),readonly:a,dataSource:c,field:{type:`lookup`,name:`value`,reference_to:e.object,displayField:e.displayField,idField:e.valueField,multiple:!1,allow_create:!1,placeholder:o,...e.picker?{picker:e.picker}:{},...e.subtitle?{subtitle:e.subtitle}:{}}})}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 w-8 shrink-0 p-0 text-muted-foreground`,onClick:()=>u(!0),disabled:a,"aria-label":W(`engine.inspector.reference.enterManually`,s),title:W(`engine.inspector.reference.enterManually`,s),children:(0,X.jsx)(ni,{className:`h-3.5 w-3.5`})})]})}function Qb({resolved:e,value:t,onCommit:n,onBlur:r,onSelect:i,disabled:a,placeholder:o,context:s,showHint:c=!0}){let l=Y.useId(),u=Bo(),d=s??{draft:{},node:null},f=e?.kind,p=i??(e=>{n(e),r?.()}),m=e?Wb(e.kind,e.objectSource,d):void 0,{fields:h}=to(f===`object-field`?m:void 0),g=e?Gb(e.kind,e.connectorSource,d):void 0,{options:_}=Yb(f===`connector-action`?g:void 0),{options:v}=Xb(f===`connector`,u),y=f&&f!==`object-field`&&f!==`node`&&f!==`connector-action`&&f!==`connector`?Ib[f]:void 0,{options:b}=Jb(y),x=Y.useMemo(()=>{if(f===`object-field`)return h.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name}));if(f===`connector-action`)return _;if(f===`connector`)return v;if(f===`node`){let e=Array.isArray(d.draft.nodes)?d.draft.nodes:[],t=typeof d.node?.id==`string`?d.node.id:void 0;return e.filter(e=>typeof e?.id==`string`&&e.id&&e.id!==t).map(e=>{let t=String(e.id);return{value:t,label:typeof e.label==`string`&&e.label?`${e.label} (${t})`:t}})}return y?b:[]},[f,y,h,_,v,b,d.draft,d.node]),S=f===`object-field`&&!m,C=f===`connector-action`&&!g,w=Hb(e);if(w)return(0,X.jsx)(Zb,{binding:w,value:t,onPick:p,onCommit:n,onBlur:r,disabled:a,placeholder:o,locale:u});if(f===`org-membership-level`){let n=t==null?``:String(t),r=Bb(e?.source),i=n&&!r.some(e=>e.value===n)?[...r,{value:n,label:Ko(n,W(`engine.form.invalid`,u),u)}]:r;return(0,X.jsxs)(_e,{value:n||void 0,onValueChange:p,disabled:a,children:[(0,X.jsx)(Ve,{className:`h-8 w-full text-sm`,children:(0,X.jsx)(ft,{placeholder:o??`—`})}),(0,X.jsx)(Ce,{children:i.map(e=>(0,X.jsx)(ke,{value:e.value,children:e.label},e.value))})]})}return f===`manager`?(0,X.jsxs)(`div`,{className:`w-full space-y-1`,children:[(0,X.jsx)(z,{value:t==null?``:String(t),disabled:!0,placeholder:W(`engine.inspector.reference.managerPlaceholder`,u),className:`h-8 text-sm`}),(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:W(`engine.inspector.reference.managerHint`,u)})]}):f===`queue`?(0,X.jsxs)(`div`,{className:`w-full space-y-1`,children:[(0,X.jsx)(z,{value:t==null?``:String(t),onChange:e=>n(e.target.value),onBlur:r,placeholder:o,disabled:a,className:`h-8 text-sm`}),(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-amber-600 dark:text-amber-400`,children:W(`engine.inspector.reference.queueUnsupported`,u)})]}):(0,X.jsxs)(`div`,{className:`w-full space-y-1`,children:[(0,X.jsx)(z,{list:x.length?l:void 0,value:t==null?``:String(t),onChange:e=>n(e.target.value),onBlur:r,placeholder:o,disabled:a,className:`h-8 text-sm`}),x.length>0&&(0,X.jsx)(`datalist`,{id:l,children:x.map(e=>(0,X.jsx)(`option`,{value:e.value,children:e.label},e.value))}),c&&f===`object-field`&&m&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:U(`engine.inspector.reference.fieldsOf`,u,{object:m})}),c&&S&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:W(`engine.inspector.reference.setTriggerObject`,u)}),c&&f===`connector-action`&&g&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:U(`engine.inspector.reference.actionsOf`,u,{connector:g})}),c&&C&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:W(`engine.inspector.reference.chooseConnector`,u)})]})}function $b({field:e,value:t,onCommit:n,disabled:r,context:i}){let a=i?.node??null,o=Vb(e.ref,e=>Ub(a,e));return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e.label}),(0,X.jsx)(Qb,{resolved:o,value:t,onCommit:n,disabled:r,placeholder:e.placeholder,context:i})]})}function ex(e){return e===`stringList`||e===`numberList`||e===`objectList`}function tx(e,t,n){if(!e||typeof e.id!=`string`||typeof e.type!=`string`||!t||!tg(e.type,t,n))return;let r=e.config&&typeof e.config==`object`&&!Array.isArray(e.config)?e.config:{};return{id:e.id,config:r}}function nx(e,t){let n=[...Bh(e)].map(e=>({token:e,label:e,group:`screen_fields`}));return[{id:`screen_fields`,label:W(`engine.flowScope.group.screenFields`,t),refs:n}]}function rx(e,t){let n=[];return e.map(e=>{let r=Rc(`ol`,n);n.push(r);let i={};for(let n of t){let t=e[n.key];n.kind===`boolean`?i[n.key]=t===!0:ex(n.kind)?i[n.key]=Array.isArray(t)?t:[]:t==null?i[n.key]=``:i[n.key]=String(t)}return{id:r,values:i}})}function ix(e,t){let n=[];for(let r of e){let e={},i=!1;for(let n of t){let t=r.values[n.key];n.kind===`boolean`?t===!0&&(e[n.key]=!0,i=!0):ex(n.kind)?Array.isArray(t)&&t.length>0&&(e[n.key]=t,i=!0):typeof t==`string`&&t.trim()!==``&&(e[n.key]=t.trim(),i=!0)}i&&n.push(e)}return n}function ax({label:e,columns:t,value:n,onCommit:r,disabled:i,addLabel:a,removeLabel:o,emptyLabel:s,itemLabel:c,context:l,scopeGroups:u,approvalScopeGroups:d,fieldId:f}){let p=Bo(),m=Y.useMemo(()=>Array.isArray(n)?n.filter(e=>e&&typeof e==`object`):[],[n]),[h,g]=Y.useState(()=>rx(m,t)),_=Y.useRef(JSON.stringify(m));Y.useEffect(()=>{let e=JSON.stringify(m);e!==_.current&&(g(rx(m,t)),_.current=e)},[m,t]);let v=e=>{let n=ix(e,t);_.current=JSON.stringify(n),r(n.length?n:void 0)},y=(e,t,n)=>{g(r=>r.map(r=>r.id===e?{...r,values:{...r.values,[t]:n}}:r))},[b,x]=Y.useState(0);Y.useEffect(()=>{b!==0&&v(h)},[b]);let S=(e,t,n)=>{g(r=>r.map(r=>r.id===e?{...r,values:{...r.values,[t]:n}}:r)),x(e=>e+1)},C=()=>{let e={};for(let n of t)e[n.key]=n.kind===`boolean`?!1:ex(n.kind)?[]:``;g(t=>[...t,{id:Rc(`ol`,t.map(e=>e.id)),values:e}])},w=e=>{g(t=>t.filter(t=>t.id!==e)),x(e=>e+1)};return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[h.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:s}),h.map(e=>(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 p-2`,children:[(0,X.jsx)(`div`,{className:`mb-1 flex justify-end`,children:(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 text-muted-foreground`,onClick:()=>w(e.id),disabled:i,"aria-label":o,title:o,children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})}),(0,X.jsx)(`div`,{className:`space-y-1.5`,children:t.map(t=>{if(t.kind===`stringList`||t.kind===`numberList`){let n=e.values[t.key],r=Array.isArray(n)?n:[];return(0,X.jsx)(`div`,{className:`border-l-2 border-muted/60 pl-2`,children:(0,X.jsx)(Fb,{label:t.label,value:t.kind===`numberList`?r.map(e=>String(e)):r,onCommit:n=>{if(t.kind===`numberList`){let r=(n??[]).map(e=>Number(String(e).trim())).filter(e=>Number.isFinite(e));S(e.id,t.key,r)}else S(e.id,t.key,n??[])},disabled:i,addLabel:a,itemLabel:c??t.label,removeLabel:o,emptyLabel:s})},t.key)}if(t.kind===`objectList`){let n=e.values[t.key],r=Array.isArray(n)?n:[];return(0,X.jsx)(`div`,{className:`border-l-2 border-muted/60 pl-2`,children:(0,X.jsx)(ax,{label:t.label,columns:t.columns??[],value:r,onCommit:n=>S(e.id,t.key,n??[]),disabled:i,addLabel:a,removeLabel:o,emptyLabel:s,itemLabel:c,context:l,scopeGroups:u})},t.key)}return(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(I,{className:`w-24 shrink-0 text-[11px] text-muted-foreground`,children:t.label}),t.kind===`boolean`?(0,X.jsx)(He,{checked:e.values[t.key]===!0,onCheckedChange:n=>S(e.id,t.key,n===!0),disabled:i}):t.kind===`reference`?(()=>{let n=Vb(t.ref,t=>e.values[t]),r=t.ref?.kindFrom?String(e.values[t.ref.kindFrom]??``):``;if(n===void 0&&r===`expression`){let n=typeof e.values[t.key]==`string`?e.values[t.key]:``;return(0,X.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,X.jsx)(vb,{mode:`expression`,mono:!0,value:n,onValueChange:n=>y(e.id,t.key,n),onBlur:()=>v(h),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},groups:d??[],placeholder:t.placeholder??`current.<field> · trigger.<field> · vars.<node>.<key>`,disabled:i}),(0,X.jsx)(bb,{value:n,role:`value`,scopeGroups:d})]})}return(0,X.jsx)(`div`,{className:`flex-1`,children:(0,X.jsx)(Qb,{resolved:n,value:typeof e.values[t.key]==`string`?e.values[t.key]:``,onCommit:n=>y(e.id,t.key,typeof n==`string`?n:``),onBlur:()=>v(h),onSelect:n=>S(e.id,t.key,n),placeholder:t.placeholder,disabled:i,context:l,showHint:!1})})})():t.kind===`select`?(()=>{let n=typeof e.values[t.key]==`string`?e.values[t.key]:``,r=t.options??[],a=n&&!r.some(e=>e.value===n)?[...r,{value:n,label:Ko(n,W(`engine.form.deprecated`,p),p)}]:r;return(0,X.jsx)(`div`,{className:`flex-1`,children:(0,X.jsxs)(_e,{value:n||void 0,onValueChange:n=>S(e.id,t.key,n),disabled:i,children:[(0,X.jsx)(Ve,{className:`h-8 w-full text-xs`,children:(0,X.jsx)(ft,{placeholder:t.placeholder??`—`})}),(0,X.jsx)(Ce,{children:a.map(e=>(0,X.jsx)(ke,{value:e.value,children:e.label},e.value))})]})})})():t.kind===`expression`?(()=>{let n=tx(l?.node,f,t.key),r=typeof e.values[t.key]==`string`?e.values[t.key]:``;return(0,X.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,X.jsx)(vb,{mode:`expression`,mono:!0,value:r,onValueChange:n=>y(e.id,t.key,n),onBlur:()=>v(h),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},groups:n?nx(n,p):u??[],placeholder:t.placeholder,disabled:i}),(0,X.jsx)(bb,{value:r,role:`predicate`,scopeGroups:u,screenNode:n})]})})():(0,X.jsx)(z,{value:typeof e.values[t.key]==`string`?e.values[t.key]:``,onChange:n=>y(e.id,t.key,n.target.value),onBlur:()=>v(h),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},placeholder:t.placeholder,disabled:i,className:`h-8 flex-1 text-xs`})]},t.key)})})]},e.id))]}),(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 w-full text-xs`,onClick:C,disabled:i,children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),a]})]})}var ox=[];function sx({field:e,value:t,onCommit:n,disabled:r,locale:i,context:a,scopeGroups:o,approvalScopeGroups:s,triggerScope:c,inactiveRetained:l,onClearInactive:u}){let d=e.refMode??(e.kind===`expression`?`expression`:`template`),f=e.kind===`expression`&&!!e.conditionBuilder&&!!c&&d!==`template`,p=(()=>{if(f&&c)return(0,X.jsx)(no,{label:e.label,value:t==null?``:String(t),onCommit:e=>n(e),objectName:c.objectName,disabled:r,subjects:{fieldPrefix:c.fieldPrefix,includePrevious:c.includePrevious,context:ox}});switch(e.kind){case`reference`:return(0,X.jsx)($b,{field:e,value:t,onCommit:e=>n(e),disabled:r,context:a});case`keyValue`:return(0,X.jsx)(Mb,{label:e.label,value:t,onCommit:e=>n(e),disabled:r,addLabel:W(`engine.inspector.flowNode.kv.add`,i),keyLabel:W(`engine.inspector.flowNode.kv.key`,i),valueLabel:W(`engine.inspector.flowNode.kv.value`,i),removeLabel:W(`engine.inspector.flowNode.kv.remove`,i),emptyLabel:W(`engine.inspector.flowNode.kv.empty`,i),scopeGroups:o,valueEnvelope:Vm(a?.node?.type,e.path)?{toggleLabel:W(`engine.inspector.flowNode.kv.asExpression`,i),expressionPlaceholder:W(`engine.inspector.flowNode.kv.expressionPlaceholder`,i)}:void 0});case`stringList`:return(0,X.jsx)(Fb,{label:e.label,value:t,onCommit:e=>n(e),disabled:r,addLabel:W(`engine.inspector.flowNode.list.add`,i),itemLabel:W(`engine.inspector.flowNode.list.item`,i),removeLabel:W(`engine.inspector.flowNode.list.remove`,i),emptyLabel:W(`engine.inspector.flowNode.list.empty`,i)});case`numberList`:return(0,X.jsx)(Fb,{label:e.label,value:Array.isArray(t)?t.map(e=>String(e)):t,onCommit:e=>{if(e==null)return n(void 0);let t=e.map(e=>Number(String(e).trim())).filter(e=>Number.isFinite(e));n(t.length?t:void 0)},disabled:r,addLabel:W(`engine.inspector.flowNode.list.add`,i),itemLabel:W(`engine.inspector.flowNode.list.item`,i),removeLabel:W(`engine.inspector.flowNode.list.remove`,i),emptyLabel:W(`engine.inspector.flowNode.list.empty`,i)});case`objectList`:return(0,X.jsx)(ax,{label:e.label,columns:e.columns??[],value:t,onCommit:e=>n(e),disabled:r,addLabel:W(`engine.inspector.flowNode.list.add`,i),removeLabel:W(`engine.inspector.flowNode.list.remove`,i),emptyLabel:W(`engine.inspector.flowNode.list.empty`,i),itemLabel:W(`engine.inspector.flowNode.list.item`,i),context:a,scopeGroups:o,approvalScopeGroups:s,fieldId:e.id});case`number`:return(0,X.jsx)(ts,{label:e.label,value:typeof t==`number`?t:t!=null&&t!==``?Number(t):void 0,placeholder:e.placeholder,onCommit:e=>n(e),disabled:r});case`boolean`:{let i=dh(t)?e.defaultValue===`true`:t===!0;return(0,X.jsx)(K,{label:e.label,value:i,onCommit:e=>n(e),disabled:r})}case`select`:return(()=>{let a=t==null?``:String(t),o=e.options??[],s=e.defaultValue,c=s!==void 0&&s!==``?o.find(e=>e.value===s)?.label??s:void 0;return(0,X.jsx)(q,{label:e.label,value:a,options:o,placeholder:c,unknownValueLabel:e=>Ko(e,W(`engine.form.deprecated`,i),i),onCommit:e=>n(e),disabled:r})})();case`textarea`:return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e.label}),(0,X.jsx)(vb,{multiline:!0,rows:4,mode:d,value:t==null?``:String(t),onValueChange:e=>n(e),groups:o??[],placeholder:e.placeholder,disabled:r})]});default:return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e.label}),(0,X.jsx)(vb,{mode:d,mono:e.kind===`expression`,value:t==null?``:String(t),onValueChange:e=>n(e),groups:o??[],placeholder:e.placeholder,disabled:r})]})}})(),m=d===`template`,h=e.kind===`expression`&&!m?Lh(`predicate`,t,i):null,g=e.kind===`expression`?m?`template`:`predicate`:d===`template`&&(e.kind===`text`||e.kind===`textarea`)?`template`:null,_=!h&&g&&o&&o.length>0?Nh(t,g,Oh(o.flatMap(e=>e.refs))):[];return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[p,l&&(0,X.jsxs)(`div`,{className:`flex items-start gap-2 rounded border border-amber-500/40 bg-amber-500/10 px-2 py-1.5`,role:`note`,"data-testid":`inactive-retained`,"data-inactive-retained":l,children:[(0,X.jsx)(`p`,{className:`flex-1 text-[11px] leading-snug text-amber-700 dark:text-amber-400`,children:W(l===`no-controller`?`engine.inspector.flowNode.inactiveRetainedOrphan`:`engine.inspector.flowNode.inactiveRetained`,i)}),u&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 shrink-0 px-2 text-[11px] text-amber-700 dark:text-amber-400`,onClick:u,disabled:r,children:W(`engine.inspector.flowNode.inactiveRetainedClear`,i)})]}),h&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-destructive`,role:`alert`,children:h.message}),!h&&_.length>0&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-amber-600 dark:text-amber-400`,role:`note`,children:Ph(_,i)}),e.help&&!h&&_.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:e.help})]})}var cx=[`variables`,`outputs`,`loop`,`trigger`],lx={variables:`engine.flowScope.group.variables`,outputs:`engine.flowScope.group.outputs`,loop:`engine.flowScope.group.loop`,trigger:`engine.flowScope.group.trigger`};function ux(e,t,n){let r=Bo(),i=Y.useMemo(()=>wh(e??{},t,r),[e,t,r]),{fields:a,loading:o}=to(i.trigger?.objectName);return Y.useMemo(()=>{let e=[...i.refs];n&&n.length&&e.push(...n),i.trigger&&e.push(...Th(i.trigger,a,r));let t=new Set,s=e.filter(e=>!t.has(e.token)&&(t.add(e.token),!0)),c=cx.map(e=>({id:e,label:W(lx[e],r),refs:s.filter(t=>t.group===e)})).filter(e=>e.refs.length>0),l=[],u=[];for(let e of a){if(!e?.name)continue;let t=e.label&&e.label!==e.name?e.label:e.type;l.push({token:`current.${e.name}`,label:`current.${e.name}`,detail:t,group:`approval_current`}),u.push({token:`trigger.${e.name}`,label:`trigger.${e.name}`,detail:t,group:`approval_trigger`})}let d=s.filter(e=>e.group===`variables`||e.group===`outputs`||e.group===`loop`).map(e=>({...e,token:`vars.${e.token}`,label:`vars.${e.token}`,group:`approval_vars`}));return d.push({token:`vars.previous`,label:`vars.previous`,detail:W(`engine.flowScope.detail.preUpdateRow`,r),group:`approval_vars`}),{groups:c,refs:s,approvalExpressionGroups:[{id:`approval_current`,label:W(`engine.flowScope.group.approvalCurrent`,r),refs:l},{id:`approval_trigger`,label:W(`engine.flowScope.group.approvalTrigger`,r),refs:u},{id:`approval_vars`,label:W(`engine.flowScope.group.variables`,r),refs:d}].filter(e=>e.refs.length>0),trigger:i.trigger,loading:!!i.trigger&&o,isEmpty:s.length===0}},[i,a,o,n,r])}var dx=[`description`];function fx(e){if(!dx.some(t=>t in e))return e;let t={...e};for(let e of dx)delete t[e];return t}function px(e){return e.kind===`objectList`&&lh(e)===`conditions`&&(e.columns??[]).some(e=>e.key===`target`)}function mx(e){let t=e?.config;return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}function hx(e,t,n){let[r,...i]=t,a={...e};if(i.length===0)n==null||n===``?delete a[r]:a[r]=n;else{let e=a[r],t=hx(e&&typeof e==`object`&&!Array.isArray(e)?e:{},i,n);Object.keys(t).length===0?delete a[r]:a[r]=t}return a}function gx({selection:e,draft:t,onPatch:n,onClearSelection:r,locale:i,readOnly:a}){let o=Y.useMemo(()=>Ag(t,e),[t,e]),s=o?.node??null,c=zm(),l=Y.useMemo(()=>o?.nested&&o.container?Sh(o.container).filter(e=>e.group===`loop`):[],[o]),{groups:u,approvalExpressionGroups:d,trigger:f}=ux(t,o?.scopeAnchorId,l),{connectorId:p,actionId:m,storedInput:h}=Y.useMemo(()=>{let e=s?.connectorConfig;if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=e;return{connectorId:typeof t.connectorId==`string`&&t.connectorId?t.connectorId:void 0,actionId:typeof t.actionId==`string`&&t.actionId?t.actionId:void 0,storedInput:t.input}},[s]),g=rb(!!p&&!!m),_=Y.useMemo(()=>$y(Zy(g,p,m)),[g,p,m]),v=s?.type,y=Y.useMemo(()=>{let e=v?c[v]:void 0,t=ih(e===void 0?null:ko(e),v);return nb(sh(v,t,i),_,h)},[c,v,i,_,h]),b=mx(s),x=y.filter(e=>uh(e,s,y)),S=Y.useMemo(()=>{let e=Array.isArray(t.variables)?t.variables:[],n={};for(let t of e)t&&typeof t.name==`string`&&(n[t.name]=t.defaultValue);return n},[t]),C=Y.useMemo(()=>{let e=new Set;for(let t of y){let n=lh(t);n&&e.add(n),t.fallbackPath&&t.fallbackPath.length>=2&&t.fallbackPath[0]===`config`&&e.add(t.fallbackPath[1])}return e},[y]),w=Y.useMemo(()=>{let e=Object.fromEntries(Object.entries(b).filter(([e])=>!C.has(e)));return Object.keys(e).length?JSON.stringify(e,null,2):``},[s,C]),[T,E]=Y.useState(w),[D,O]=Y.useState(null),[k,A]=Y.useState(w.trim()!==``),[j,M]=Y.useState(!1);if(Y.useEffect(()=>{E(w),O(null),A(w.trim()!==``),M(!1)},[w]),!s){let t=(e.kind===`nested-node`?Sg(e.id):null)?.nodeId??e.id;return(0,X.jsx)(Wo,{kindLabel:W(`engine.inspector.flowNode.kind`,i),title:e.label??t,onClose:r,closeLabel:W(`engine.inspector.flowNode.close`,i),children:(0,X.jsx)(Jo,{message:t})})}let N=e=>{let t=o?.write(fx({...s,...e}));t&&n(t)},P=w.trim()!==``,ee=s.type===`screen`||s.type===`user_task`,te=(e,r)=>{if(!o)return;let i=e.path,a=r,c;if(e.omitKeys&&(a=tb(ch(s,e),r&&typeof r==`object`&&!Array.isArray(r)?r:{},e.omitKeys)),!o.nested){let n=Array.isArray(t.edges)?t.edges:[];if(px(e)){let e=hb(s.id,r,n);a=e.conditions.length?e.conditions:void 0,c=e.edges}else s.type===`decision`&&i.length===2&&i[0]===`config`&&i[1]===`conditions`&&(c=pb(s.id,r,n))}let l=hx(s,i,a);e.fallbackPath&&(l=hx(l,e.fallbackPath,void 0));let u=o.write(fx(l));u&&(c&&(u.edges=c),n(u))},ne=()=>{try{let e=T.trim()===``?{}:JSON.parse(T);if(!e||typeof e!=`object`||Array.isArray(e)){O(W(`engine.inspector.flowNode.advancedNotObject`,i));return}let t=Object.fromEntries(Object.entries(b).filter(([e])=>C.has(e))),r=Object.fromEntries(Object.entries(e).filter(([e])=>!C.has(e))),a={...t,...r};O(null);let c={...s};Object.keys(a).length===0?delete c.config:c.config=a;let l=o?.write(fx(c));l&&n(l)}catch(e){O(String(e.message))}},re=()=>{let e=o?.write(null);e&&n(e),r()},ie=hh.includes(s.type)?[...hh]:[...hh,s.type??``].filter(Boolean),F=!!o?.nested;return(0,X.jsxs)(Wo,{kindLabel:W(`engine.inspector.flowNode.kind`,i),title:s.label||s.id,onClose:r,closeLabel:W(`engine.inspector.flowNode.close`,i),footer:F?void 0:(0,X.jsx)(Qo,{label:W(`engine.inspector.flowNode.remove`,i),onClick:re,disabled:a}),children:[F&&(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 text-[11px] text-muted-foreground`,"aria-label":W(`engine.inspector.flowNode.nestedLocation`,i),children:[(0,X.jsx)(`span`,{className:`max-w-[45%] truncate font-medium`,children:o?.container?.label||o?.container?.id}),(0,X.jsx)(`span`,{"aria-hidden":!0,children:`›`}),(0,X.jsx)(`span`,{className:`truncate`,children:o?.regionKey?bm({key:o.regionKey,label:o.regionLabel},i):o?.regionLabel}),(0,X.jsx)(`span`,{"aria-hidden":!0,children:`›`}),(0,X.jsx)(`span`,{className:`max-w-[45%] truncate font-medium text-foreground`,children:s.label||s.id})]}),(0,X.jsx)(J,{label:W(`engine.inspector.flowNode.id`,i),value:s.id,onCommit:e=>N({id:e}),disabled:a||F,mono:!0}),F&&(0,X.jsx)(`p`,{className:`-mt-1 text-[11px] leading-snug text-muted-foreground`,children:W(`engine.inspector.flowNode.nestedIdHint`,i)}),(0,X.jsx)(J,{label:W(`engine.inspector.flowNode.label`,i),value:s.label??``,onCommit:e=>N({label:e}),disabled:a}),(0,X.jsx)(q,{label:W(`engine.inspector.flowNode.type`,i),value:s.type,options:ie.map(e=>({value:e,label:zo(e,i,e)})),onCommit:e=>N({type:e}),disabled:a}),y.length===0?(0,X.jsx)(`p`,{className:`pt-1 text-xs italic text-muted-foreground`,children:W(`engine.inspector.flowNode.noConfig`,i)}):x.length>0&&(0,X.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,X.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.flowNode.configuration`,i)}),(0,X.jsx)(`span`,{className:`h-px flex-1 bg-border`,"aria-hidden":!0})]}),x.map(e=>{let n=px(e),r=F&&n?{...e,columns:(e.columns??[]).filter(e=>e.key!==`target`)}:e,o=n&&!F?mb(s.id,ch(s,e),Array.isArray(t.edges)?t.edges:[]):r.omitKeys?eb(ch(s,r),r.omitKeys):ch(s,r);return(0,X.jsx)(sx,{field:r,value:o,onCommit:t=>te(e,t),disabled:a,locale:i,context:{draft:t,node:s},scopeGroups:u,approvalScopeGroups:d,triggerScope:f,inactiveRetained:mh(e,s,y),onClearInactive:a?void 0:()=>te(e,void 0)},e.id)}),ee&&(0,X.jsx)(Ug,{node:s,variables:S,className:`mt-1`,locale:i}),P||j?(0,X.jsxs)(`details`,{className:`group rounded border bg-muted/20`,open:k,onToggle:e=>A(e.target.open),children:[(0,X.jsx)(`summary`,{className:`cursor-pointer select-none px-2 py-1.5 text-xs font-medium text-muted-foreground`,children:W(`engine.inspector.flowNode.advanced`,i)}),(0,X.jsxs)(`div`,{className:`space-y-1 border-t p-2`,children:[(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:W(`engine.inspector.flowNode.advancedHint`,i)}),(0,X.jsx)(`textarea`,{value:T,onChange:e=>E(e.target.value),onBlur:ne,disabled:a,rows:6,placeholder:`{ }`,className:`w-full rounded border bg-background px-2 py-1.5 font-mono text-xs`}),D&&(0,X.jsx)(`div`,{className:`text-xs text-destructive`,children:D})]})]}):!a&&(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{M(!0),A(!0)},className:`inline-flex items-center gap-1 self-start text-[11px] text-muted-foreground transition-colors hover:text-foreground`,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),W(`engine.inspector.flowNode.advanced`,i)]})]})}function _x({label:e,value:t}){return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsx)(`div`,{className:`flex h-8 items-center rounded border bg-muted/30 px-2 font-mono text-sm text-muted-foreground`,children:t})]})}function vx({selection:e,draft:t,onPatch:n,onClearSelection:r,locale:i,readOnly:a}){let o=Array.isArray(t.edges)?t.edges:[],s=o.findIndex((t,n)=>qa(t,n)===e.id),c=s>=0?o[s]:null,{groups:l}=ux(t,c?.source);if(!c)return(0,X.jsx)(Wo,{kindLabel:W(`engine.inspector.flowEdge.kind`,i),title:e.label??e.id,onClose:r,closeLabel:W(`engine.inspector.flowEdge.close`,i),children:(0,X.jsx)(Jo,{message:W(`engine.inspector.flowEdge.missing`,i)})});let u=e=>{let t={...c,...e};for(let e of[`label`,`condition`,`isDefault`]){let n=t[e];(n===void 0||n===``||n===!1)&&delete t[e]}(t.type==="default"||t.type===``||t.type===void 0)&&delete t.type,n({edges:G(o,s,t)})},d=c.isDefault===!0,f=(Array.isArray(t.nodes)?t.nodes:[]).find(e=>e.id===c.source),p=f?.type===`decision`&&Array.isArray(f.config?.conditions)?f.config.conditions:[],m=e=>typeof e.expression==`string`?e.expression.trim():``,h=e=>typeof e.label==`string`?e.label.trim():``,g=(()=>{if(!p.length)return``;if(d){let e=p.findIndex(e=>{let t=m(e);return t===``||t===`true`});return e>=0?String(e):``}let e=Fo(c.condition),t=e?p.findIndex(t=>m(t)===e):-1;return t<0&&c.label&&(t=p.findIndex(e=>h(e)===c.label)),t>=0?String(t):``})(),_=e=>{if(e===``)return;let t=p[Number(e)];if(!t)return;let n=m(t),r=h(t)||void 0;u(n===``||n===`true`?{isDefault:!0,condition:void 0,label:r}:{isDefault:!1,condition:n,label:r})},v=f?.type===`approval`,y=[`approve`,`reject`,`revise`],b=(()=>{let e=(c.label??``).trim().toLowerCase();return y.includes(e)?e:``})(),x=typeof c.type==`string`&&c.type||`default`;return(0,X.jsxs)(Wo,{kindLabel:W(`engine.inspector.flowEdge.kind`,i),title:e.label??`${c.source} → ${c.target}`,onClose:r,closeLabel:W(`engine.inspector.flowEdge.close`,i),footer:(0,X.jsx)(Qo,{label:W(`engine.inspector.flowEdge.remove`,i),onClick:()=>{n({edges:G(o,s,null)}),r()},disabled:a}),children:[(0,X.jsx)(_x,{label:W(`engine.inspector.flowEdge.source`,i),value:c.source}),(0,X.jsx)(_x,{label:W(`engine.inspector.flowEdge.target`,i),value:c.target}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,X.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.flowEdge.routing`,i)}),(0,X.jsx)(`span`,{className:`h-px flex-1 bg-border`,"aria-hidden":!0})]}),p.length>0&&(0,X.jsx)(q,{label:W(`engine.inspector.flowEdge.branch`,i),value:g,options:[...p.map((e,t)=>{let n=m(e),r=h(e)||U(`engine.flowRegion.branchN`,i,{n:t+1}),a=n===``||n===`true`?` \u00b7 ${W(`engine.inspector.flowEdge.branchDefault`,i)}`:` \u00b7 ${n}`;return{value:String(t),label:`${r}${a}`}}),{value:``,label:W(`engine.inspector.flowEdge.branchCustom`,i)}],onCommit:_,disabled:a}),v&&(0,X.jsx)(q,{label:W(`engine.inspector.flowEdge.approvalBranch`,i),value:b,options:[{value:`approve`,label:W(`engine.inspector.flowEdge.branchApprove`,i)},{value:`reject`,label:W(`engine.inspector.flowEdge.branchReject`,i)},{value:`revise`,label:W(`engine.inspector.flowEdge.branchRevise`,i)},{value:``,label:W(`engine.inspector.flowEdge.branchCustom`,i)}],onCommit:e=>{e&&u({label:e})},disabled:a}),(0,X.jsx)(J,{label:W(`engine.inspector.flowEdge.label`,i),value:c.label??``,onCommit:e=>u({label:e}),placeholder:W(`engine.inspector.flowEdge.labelHint`,i),disabled:a||d}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:W(`engine.inspector.flowEdge.condition`,i)}),(0,X.jsx)(vb,{mode:`expression`,mono:!0,value:Fo(c.condition)??``,onValueChange:e=>u({condition:Co(c.condition,e)}),groups:l,placeholder:W(`engine.inspector.flowEdge.conditionHint`,i),disabled:a||d})]}),(()=>{let e=d?null:Lh(`predicate`,c.condition,i);if(e)return(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-destructive`,role:`alert`,children:e.message});let t=d?[]:Nh(Fo(c.condition),`predicate`,Oh(l.flatMap(e=>e.refs)));return t.length>0?(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-amber-600 dark:text-amber-400`,role:`note`,children:Ph(t,i)}):null})(),(0,X.jsx)(K,{label:W(`engine.inspector.flowEdge.isDefault`,i),value:d,onCommit:e=>u(e?{isDefault:!0,condition:void 0,label:void 0}:{isDefault:!1}),disabled:a}),(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:W(`engine.inspector.flowEdge.hint`,i)}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,X.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.flowEdge.connection`,i)}),(0,X.jsx)(`span`,{className:`h-px flex-1 bg-border`,"aria-hidden":!0})]}),(0,X.jsx)(q,{label:W(`engine.inspector.flowEdge.type`,i),value:x,options:[{value:`default`,label:W(`engine.inspector.flowEdge.typeDefault`,i)},{value:`conditional`,label:W(`engine.inspector.flowEdge.typeConditional`,i)},{value:`fault`,label:W(`engine.inspector.flowEdge.typeFault`,i)},{value:`back`,label:W(`engine.inspector.flowEdge.typeBack`,i)}],onCommit:e=>u({type:e}),disabled:a}),c.type===`back`&&(0,X.jsx)(`p`,{className:`text-[11px] leading-snug text-amber-600 dark:text-amber-400`,role:`note`,children:W(`engine.inspector.flowEdge.backHint`,i)})]})}function yx(e){return e.selection.kind===`edge`?(0,X.jsx)(vx,{...e}):(0,X.jsx)(gx,{...e})}var bx=[`object`,`page`,`dashboard`,`report`,`url`,`group`],xx=[`default`,`view`,`record`,`filters`],Sx={object:{targetKey:`objectName`,metaType:`object`},page:{targetKey:`pageName`,metaType:`page`},dashboard:{targetKey:`dashboardName`,metaType:`dashboard`},report:{targetKey:`reportName`,metaType:`report`},url:{targetKey:`url`},group:{}};function Cx(e){return e.type!==`record`}var wx=[`objectName`,`viewName`,`recordId`,`recordMode`,`filters`,`pageName`,`dashboardName`,`reportName`,`url`,`target`,`params`],Tx=[`path`,`kind`,`href`,`route`,`object`,`page`,`dashboard`,`report`],Ex={object:`object`,page:`page`,dashboard:`dashboard`,report:`report`,link:`url`,url:`url`,group:`group`};function Dx(e){let t=e.type;if(typeof t==`string`&&bx.includes(t))return t;let n=e.kind;if(typeof n==`string`&&Ex[n])return Ex[n];if(e.objectName||e.object)return`object`;if(e.pageName||e.page)return`page`;if(e.dashboardName||e.dashboard)return`dashboard`;if(e.reportName||e.report)return`report`;if(e.url||e.href)return`url`;if(Array.isArray(e.children)&&e.children.length>0)return`group`;let r=e.path;return typeof r==`string`&&/^https?:/i.test(r)?`url`:null}function Ox(e){if(e.recordId)return`record`;let t=e.filters;return t&&typeof t==`object`&&!Array.isArray(t)?`filters`:e.viewName?`view`:`default`}function kx(e=[]){let t={};for(let n of[...wx,...Tx])e.includes(n)||(t[n]=void 0);return t}var Ax={default:[`objectName`],view:[`objectName`,`viewName`],record:[`objectName`,`recordId`,`recordMode`],filters:[`objectName`,`filters`]};function jx(e,t,n){let r=e.id;if(typeof r==`string`&&r)return r;let i=`nav_${(n??String(e.objectName??e.label??`item`)).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`item`}`,a=new Set(t.map(e=>typeof e.id==`string`?e.id:``).filter(Boolean));if(!a.has(i))return i;let o=2;for(;a.has(`${i}_${o}`);)o++;return`${i}_${o}`}function Mx(e){let t=e.split(`.`),n=[];for(let e of t){let t=/^([a-zA-Z_]\w*)\[(\d+)\]$/.exec(e);if(!t)return null;n.push({key:t[1],index:Number(t[2])})}return n.length>0?n:null}function Nx(e,t){let n=e[t[0].key];if(!Array.isArray(n))return{parent:[],node:null,index:-1};let r=n[t[0].index]??null;for(let e=1;e<t.length;e++){if(!r)return{parent:n,node:null,index:t[e].index};if(n=r[t[e].key],!Array.isArray(n))return{parent:[],node:null,index:-1};r=n[t[e].index]??null}return{parent:n,node:r,index:t[t.length-1].index}}function Px(e,t,n){let r=t[0].key,i=Array.isArray(e[r])?[...e[r]]:[];if(t.length===1)return{[r]:G(i,t[0].index,n)};let a=i,o=[];for(let e=0;e<t.length-1;e++){let n={...a[t[e].index]??{}};o.push({arr:a,index:t[e].index,node:n});let r=t[e+1].key,i=Array.isArray(n[r])?[...n[r]]:[];n[r]=i,a[t[e].index]=n,a=i}let s=G(a,t[t.length-1].index,n);return o[o.length-1].node[t[t.length-1].key]=s,{[r]:i}}function Fx(e,t,n){let r=t[0].key;if(t.length===1)return{[r]:n};let i=Array.isArray(e[r])?[...e[r]]:[],a=i;for(let e=0;e<t.length-2;e++){let n={...a[t[e].index]??{}},r=t[e+1].key,i=Array.isArray(n[r])?[...n[r]]:[];n[r]=i,a[t[e].index]=n,a=i}let o=t[t.length-2],s=t[t.length-1].key,c={...a[o.index]??{}};return c[s]=n,a[o.index]=c,{[r]:i}}function Ix(e,t){let n=Qi(),[r,i]=Y.useState({options:[],loading:!!e});return Y.useEffect(()=>{if(!e){i({options:[],loading:!1});return}let r=!1;return i(e=>({...e,loading:!0})),n.list(e).then(e=>{if(r)return;let n=(Array.isArray(e)?e:[]).filter(e=>e&&typeof e.name==`string`&&e.name).filter(e=>!t||t(e)).map(e=>({value:String(e.name),label:typeof e.label==`string`&&e.label&&e.label!==e.name?`${e.label} (${e.name})`:String(e.name)}));i({options:n,loading:!1})}).catch(()=>{r||i({options:[],loading:!1})}),()=>{r=!0}},[n,e,t]),r}var Lx={currentUserId:`{current_user_id}`,currentOrgId:`{current_org_id}`};function Rx({objectName:e,filters:t,onCommit:n,disabled:r,locale:i}){let{fields:a}=to(e||void 0),o=Y.useMemo(()=>a.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name})),[a]),s=Object.entries(t),c=(e,t,r)=>{let i=s.slice();i[e]=[t,r],n(Object.fromEntries(i.filter(([e])=>e!==``)))},l=e=>{let t=s.slice();t.splice(e,1),n(Object.fromEntries(t))};return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:W(`engine.inspector.appNav.filters`,i)}),s.map(([e,t],n)=>(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,X.jsx)(Bc,{ariaLabel:W(`engine.inspector.appNav.filtersField`,i),value:e,onCommit:e=>c(n,e,t),options:o,placeholder:W(`engine.inspector.appNav.filtersField`,i),disabled:r,mono:!0})}),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`=`}),(0,X.jsx)(`input`,{value:t,onChange:t=>c(n,e,t.target.value),placeholder:W(`engine.inspector.appNav.filtersValue`,i),disabled:r,className:`h-7 w-0 min-w-0 flex-1 rounded border bg-background px-2 font-mono text-xs`,"data-testid":`nav-filter-value-${e||`new`}`}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>l(n),disabled:r,className:`rounded p-1 text-muted-foreground hover:bg-muted`,"aria-label":W(`engine.inspector.appNav.filtersRemove`,i),"data-testid":`nav-filter-remove-${e||`new`}`,children:(0,X.jsx)(qi,{className:`h-3 w-3`})})]},`${e}-${n}`)),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>n({...t,"":``}),disabled:r||Object.prototype.hasOwnProperty.call(t,``),className:`inline-flex items-center gap-1 rounded border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted`,"data-testid":`nav-filter-add`,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),W(`engine.inspector.appNav.filtersAdd`,i)]}),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:W(`engine.inspector.appNav.filtersHint`,i)})]})}function zx({selection:e,draft:t,name:n,onPatch:r,onClearSelection:i,onSelectionChange:a,locale:o,readOnly:s}){let c=Mx(e.id),{node:l,parent:u,index:d}=c?Nx(t,c):{node:null,parent:[],index:-1},f=l?Dx(l):null,p=l?Ox(l):`default`,m=String(l?.objectName??l?.object??``),h=Ix(f===`object`?`object`:void 0),g=f&&f!==`object`?Sx[f].metaType:void 0,_=Ix(g,g===`page`?Cx:void 0),v=Ix(f===`object`&&p===`view`?`view`:void 0),y=Y.useMemo(()=>m?v.options.filter(e=>e.value.startsWith(`${m}.`)||!e.value.includes(`.`)):v.options,[v.options,m]);if(!c||!l)return(0,X.jsx)(Wo,{kindLabel:W(`engine.inspector.appNav.kind`,o),title:e.label??e.id,onClose:i,closeLabel:W(`engine.inspector.appNav.close`,o),children:(0,X.jsx)(Jo,{message:e.id})});let b=l.label??l.title??l.name??e.id,x=e=>{let n=e.type??l.type??f??void 0;r(Px(t,c,{...l,id:jx(l,u),...n?{type:n}:{},...e}))},S=e=>{let t=Sx[e].targetKey,n=e===`object`?Ax.default:t?[t]:[];x({type:e,...kx(n)})},C=e=>{let t=kx(Ax[e]);x(e===`filters`?{...t,objectName:m,filters:l.filters??{}}:{...t,objectName:m})},w=()=>{r(Px(t,c,null)),i()},T=e=>{let n=os(u,d,e);r(Fx(t,c,n));let i=c.slice(0,-1).map(e=>`${e.key}[${e.index}]`).join(`.`),o=c[c.length-1].key,s=i?`${i}.${o}[${e}]`:`${o}[${e}]`;a?.({kind:`nav`,id:s,label:String(b)})},E=f&&f!==`group`?Ba({...l,type:f},`/apps/${n||`app`}`,Lx).href:null,D=Sx[f??`group`];return(0,X.jsxs)(Wo,{kindLabel:W(`engine.inspector.appNav.kind`,o),title:String(b),onClose:i,closeLabel:W(`engine.inspector.appNav.close`,o),headerActions:(0,X.jsx)(Yo,{index:d,total:u.length,onMove:T,upLabel:W(`engine.inspector.reorder.up`,o),downLabel:W(`engine.inspector.reorder.down`,o),disabled:s}),footer:(0,X.jsx)(Qo,{label:W(`engine.inspector.appNav.remove`,o),onClick:w,disabled:s}),children:[(0,X.jsx)(J,{label:W(`engine.inspector.appNav.label`,o),value:String(l.label??l.title??l.name??``),onCommit:e=>x({label:e}),disabled:s}),(0,X.jsx)(J,{label:W(`engine.inspector.appNav.icon`,o),value:String(l.icon??``),onCommit:e=>x({icon:e}),disabled:s}),(0,X.jsx)(q,{label:W(`engine.inspector.appNav.typeField`,o),value:f??``,options:bx.map(e=>({value:e,label:W(`engine.inspector.appNav.type.${e}`,o)})),onCommit:e=>S(e),disabled:s}),f===`object`&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Bc,{label:W(`engine.inspector.appNav.object`,o),value:m,options:h.options,loading:h.loading,onCommit:e=>x({objectName:e,object:void 0}),disabled:s,mono:!0}),(0,X.jsx)(q,{label:W(`engine.inspector.appNav.targetMode`,o),value:p,options:xx.map(e=>({value:e,label:W(`engine.inspector.appNav.mode.${e}`,o)})),onCommit:e=>C(e),disabled:s||!m}),p===`view`&&(0,X.jsx)(Bc,{label:W(`engine.inspector.appNav.view`,o),value:String(l.viewName??``),options:y,loading:v.loading,onCommit:e=>x({viewName:e}),disabled:s,mono:!0}),p===`record`&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(J,{label:W(`engine.inspector.appNav.recordId`,o),value:String(l.recordId??``),onCommit:e=>x({recordId:e}),disabled:s,mono:!0}),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:W(`engine.inspector.appNav.recordIdHint`,o)}),(0,X.jsx)(q,{label:W(`engine.inspector.appNav.recordMode`,o),value:String(l.recordMode??`view`),options:[{value:`view`,label:W(`engine.inspector.appNav.recordModeView`,o)},{value:`edit`,label:W(`engine.inspector.appNav.recordModeEdit`,o)}],onCommit:e=>x({recordMode:e}),disabled:s})]}),p===`filters`&&(0,X.jsx)(Rx,{objectName:m,filters:l.filters??{},onCommit:e=>x({filters:e}),disabled:s,locale:o})]}),f&&f!==`object`&&f!==`group`&&D.targetKey&&(D.metaType?(0,X.jsx)(Bc,{label:W(`engine.inspector.appNav.type.${f}`,o),value:String(l[D.targetKey]??``),options:_.options,loading:_.loading,onCommit:e=>x({[D.targetKey]:e}),disabled:s,mono:!0}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(J,{label:W(`engine.inspector.appNav.url`,o),value:String(l.url??l.href??``),onCommit:e=>x({url:e,href:void 0}),disabled:s,mono:!0}),(0,X.jsx)(q,{label:W(`engine.inspector.appNav.urlTarget`,o),value:String(l.target??`_self`),options:[{value:`_self`,label:W(`engine.inspector.appNav.urlTargetSelf`,o)},{value:`_blank`,label:W(`engine.inspector.appNav.urlTargetBlank`,o)}],onCommit:e=>x({target:e}),disabled:s})]})),E&&(0,X.jsxs)(`div`,{className:`rounded border bg-muted/30 px-2 py-1.5`,"data-testid":`nav-target-preview`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.appNav.preview`,o)}),(0,X.jsx)(`div`,{className:`break-all font-mono text-[11px]`,children:E})]})]})}var Bx=[`field`,`label`,`accessorKey`,`header`];function Vx(e){let t=/^([a-zA-Z_][\w]*)\.columns\[(\d+)\]$/.exec(e);return t?{variant:t[1],index:Number(t[2])}:null}function Hx(e){return typeof e==`string`?{field:e}:e&&typeof e==`object`?e:{}}function Ux(e){return e.field??``}function Wx(e){return e.label??Ux(e)}function Gx(e){return Object.keys(e).some(e=>!Bx.includes(e))}function Kx(e){if(!e)return``;let t=e.data;return t&&typeof t.object==`string`?t.object:typeof e.object==`string`?e.object:``}function qx({selection:e,draft:t,onPatch:n,onClearSelection:r,onSelectionChange:i,locale:a,readOnly:o}){let s=Vx(e.id),c=s?t[s.variant]:void 0,l=s&&Array.isArray(c?.columns)?c.columns:[],u=l.map(Hx),d=s?u[s.index]??null:null,f=s?typeof l[s.index]==`string`:!1,p=Y.useMemo(()=>Sl(),[]),m=Kx(c),{fields:h,loading:g,error:_}=to(m||void 0),v=d?Ux(d):``,y=Y.useMemo(()=>h.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} · ${e.name}`:e.name})),[h]),b=y.length>0||v!==``;if(!s||!d)return(0,X.jsx)(Wo,{kindLabel:W(`engine.inspector.viewColumn.kind`,a),title:e.label??e.id,onClose:r,closeLabel:W(`engine.inspector.viewColumn.close`,a),children:(0,X.jsx)(Jo,{message:e.id})});let x=e=>{let t=e.map((e,t)=>{let n=typeof l[t]==`string`,r=Ux(e);return n&&!Gx(e)&&!e.label&&!e.header&&r?r:e});n({[s.variant]:{...c,columns:t}})},S=e=>{let t=`field`in d||!(`accessorKey`in d)?`field`:`accessorKey`,n=`label`in d||!(`header`in d)?`label`:`header`,r={...e};`field`in e&&(r[t]=e.field,t!==`field`&&delete r.field),`label`in e&&(r[n]=e.label,n!==`label`&&delete r.label),x(G(u,s.index,{...d,...r}))};return(0,X.jsxs)(Wo,{kindLabel:W(`engine.inspector.viewColumn.kind`,a),title:Wx(d)||e.id,onClose:r,closeLabel:W(`engine.inspector.viewColumn.close`,a),headerActions:(0,X.jsx)(Yo,{index:s.index,total:u.length,onMove:e=>{x(os(u,s.index,e)),i?.({kind:`column`,id:`${s.variant}.columns[${e}]`,label:Wx(d)||`columns[${e}]`})},upLabel:W(`engine.inspector.reorder.up`,a),downLabel:W(`engine.inspector.reorder.down`,a),disabled:o}),footer:(0,X.jsx)(Qo,{label:W(`engine.inspector.viewColumn.remove`,a),onClick:()=>{x(G(u,s.index,null)),r()},disabled:o}),children:[c&&(0,X.jsx)(`div`,{className:`pb-1`,children:(0,X.jsx)(al,{variantKey:s.variant,schema:c,columns:l,allStrings:l.length>0&&l.every(e=>typeof e==`string`),objectName:m||void 0,selectedIndex:s.index,readOnly:o,onPatch:n,onSelectionChange:i})}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-3`,children:[b?(0,X.jsx)(q,{label:W(`engine.inspector.viewColumn.accessorKey`,a),value:Ux(d),options:y,unknownValueLabel:e=>Ko(e,W(`engine.form.notInObject`,a),a),roster:Uo({loading:g,error:_}),rosterFailureLabel:W(`engine.form.optionsLoadFailedTitle`,a),onCommit:e=>S({field:e}),disabled:o}):(0,X.jsx)(J,{label:W(`engine.inspector.viewColumn.accessorKey`,a),value:Ux(d),onCommit:e=>S({field:e}),disabled:o,mono:!0}),(0,X.jsx)(J,{label:W(`engine.inspector.viewColumn.header`,a),value:Wx(d)===Ux(d)?``:Wx(d),onCommit:e=>S({label:e}),disabled:o}),!f&&p?(0,X.jsx)(`div`,{className:`border-t pt-3`,children:(0,X.jsx)(jo,{schema:p,value:d,hiddenFields:Bx,readOnly:o,onChange:e=>{x(G(u,s.index,e))}})}):null]})]})}function Jx(e){let{selection:t}=e;if(t.kind===`column`)return(0,X.jsx)(qx,{...e});let n=jl(e.draft,t.id||void 0)??Al(e.draft);return(0,X.jsx)(Zl,{type:e.type,name:e.name,draft:e.draft,onPatch:e.onPatch,onSelectionChange:e.onSelectionChange,onClearSelection:e.onClearSelection,onBlockingIssuesChange:e.onBlockingIssuesChange,readOnly:e.readOnly,locale:e.locale,variantKey:n?.storeKey??`list`,familyKey:n?.familyKey??n?.storeKey??`list`,isHome:!1})}function Yx(e){let t=Al(e.draft);return(0,X.jsx)(Zl,{...e,variantKey:t?.storeKey??`list`,familyKey:t?.familyKey??t?.storeKey??`list`,isHome:!0})}var Xx={io:`input`,unrepresentable:`any`},Zx=new Set([`name`,`regions`,`children`]),Qx,$x=!1;function eS(){if(Qx||$x)return Qx;try{Qx=Ea(f,Xx)}catch(e){$x=!0,typeof console<`u`&&console.warn(`[page-schema] failed to derive Page JSONSchema from spec`,e)}return Qx}var tS;function nS(){if(tS)return tS;if(P&&typeof P==`object`){try{let e=JSON.parse(JSON.stringify(P));for(let t of e.sections??[])t.fields=(t.fields??[]).filter(e=>{let t=typeof e==`string`?e:e?.field;return!Zx.has(t)});e.sections=(e.sections??[]).filter(e=>(e.fields??[]).length>0),tS=e}catch(e){typeof console<`u`&&console.warn(`[page-schema] failed to prune Page authoring form from spec`,e),tS=P}return tS}}function rS({draft:e,onPatch:t,readOnly:n,serverSchema:r,locale:i}){let{schema:a,form:o}=Y.useMemo(()=>Go({bundledSchema:eS(),bundledForm:nS(),serverSchema:r,excludeFields:Zx,sectionTitle:W(`engine.inspector.moreFields`,i)}),[r,i]);return a?(0,X.jsx)(jo,{schema:a,form:o,value:e,hiddenFields:[...Zx],readOnly:n,onChange:e=>t(e)}):(0,X.jsx)(`p`,{className:`px-1 py-2 text-xs text-muted-foreground`,children:W(`engine.studio.inspector.noPageSchema`,i)})}re();function iS(e){if(!e||typeof e!=`object`||Array.isArray(e))return{kind:`malformed`,malformed:{raw:e,reason:`not-an-object`}};let t=e;if(typeof t.value!=`string`)return{kind:`malformed`,malformed:{raw:e,reason:`value-not-text`}};if(t.value.trim()===``)return{kind:`malformed`,malformed:{raw:e,reason:`value-empty`}};if(t.label!==void 0&&typeof t.label!=`string`)return{kind:`malformed`,malformed:{raw:e,reason:`label-not-text`}};if(t.color!==void 0&&typeof t.color!=`string`)return{kind:`malformed`,malformed:{raw:e,reason:`color-not-text`}};let n={...t};delete n.value,delete n.label,delete n.color;let r={value:t.value,label:typeof t.label==`string`?t.label:void 0,color:typeof t.color==`string`?t.color:void 0};return Object.keys(n).length>0&&(r.rest=n),{kind:`option`,option:r}}function aS(e){let t=e.options;return Array.isArray(t)?t.map(iS):[]}function oS(e){return e.flatMap(e=>e.kind===`option`?[e.option]:[])}function sS(e){return e===`select`||e===`multiselect`||e===`radio`||e===`checkboxes`}function cS(e){return e===`lookup`||e===`master_detail`||e===`tree`}function lS(e){return e===`formula`||e===`summary`}function uS(e){return e===`number`||e===`currency`||e===`percent`}function dS(e){return uS(e)&&e!==`currency`}function fS(e){return e===`text`||e===`textarea`||e===`email`||e===`url`||e===`phone`||e===`password`}function pS(e){return C.has(e)}function mS(e,t){let n=`\`${e}\` (`,r=t.indexOf(n);if(r<0)return e;let i=r+n.length,a=1,o=i;for(;o<t.length;o++){let e=t[o];if(e===`(`)a++;else if(e===`)`&&--a===0)break}if(a!==0)return e;let s=t.slice(i,o).split(` — `)[0].replace(/`/g,``).trim();return s?`${e} (${s})`:e}var hS=(()=>{let e=ee.shape.valueDomain.description??``;return S.options.map(t=>({value:t,label:mS(t,e)}))})();function gS(e){return e===`boolean`||e===`toggle`?`bool`:e===`number`||e===`currency`||e===`percent`?`number`:e===`select`||e===`radio`?`picklist`:[`formula`,`summary`,`autonumber`,`lookup`,`master_detail`,`tree`,`file`,`image`,`avatar`,`video`,`audio`,`signature`,`qrcode`,`composite`,`repeater`,`vector`,`multiselect`,`checkboxes`,`tags`].includes(e)?null:`text`}var _S=[`record`,`previous`,`parent`],vS=[`record`];function yS(e){return typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:``}function bS(e,t){if(t.trim()){if(e&&typeof e==`object`&&!Array.isArray(e)){let n=e;return{...n,dialect:typeof n.dialect==`string`?n.dialect:`cel`,source:t}}return t}}function xS(e){return as.flatMap(t=>t.types.map(n=>({value:n,label:`${W(`engine.fieldCategory.${t.category}`,e)} · ${W(`engine.fieldType.${n}`,e)}`})))}function SS({selection:e,draft:t,onPatch:n,onClearSelection:r,onSelectionChange:i,onBlockingIssuesChange:a,readOnly:o,locale:s}){let c=Y.useCallback(e=>W(e,s),[s]),l=Y.useMemo(()=>xS(s),[s]),u=Y.useMemo(()=>Ao(t.fields),[t]),d=String(e.id),f=po(u,d),p=f>=0?u.entries[f]:null,m=Array.isArray(t.fieldGroups)?t.fieldGroups:[],h=GS(s),g=Y.useRef(!1);Y.useEffect(()=>{g.current=!1},[d]);let _=Y.useRef(null),v=String(t.name??``),y=p?typeof p.def.type==`string`?p.def.type:`text`:null,[b,x]=Y.useState({field:d,sites:{}}),S=Y.useCallback((e,t)=>{let n=t.filter(e=>e.severity===`error`).length;x(t=>t.field===d?t.sites[e]===n?t:{field:d,sites:{...t.sites,[e]:n}}:{field:d,sites:{[e]:n}})},[d]),C=Y.useMemo(()=>{if(b.field!==d)return 0;let e=0;for(let[t,n]of Object.entries(b.sites))(t!==`formula`||y===`formula`)&&(e+=n??0);return e},[b,d,y]),w=Y.useRef(a);if(Y.useEffect(()=>{w.current=a}),Y.useEffect(()=>{w.current?.(C)},[C]),!p)return(0,X.jsx)(Wo,{kindLabel:c(`designer.field.kind`),title:d||c(`designer.field.kind`),onClose:r,closeLabel:c(`designer.field.close`),children:(0,X.jsx)(Jo,{message:c(`designer.field.missing`)})});let T=p.def,E=y,D=Zo[E],O=e=>{n({fields:xo(e)})},k=e=>{let t=[...u.entries];t[f]={...p,def:{...T,...e}},O({shape:u.shape,entries:t})},A=e=>{let t={...T};delete t[e];let n=[...u.entries];n[f]={...p,def:t},O({shape:u.shape,entries:n})},j=e=>{let t=oo(e),n=!t||t===p.name||u.entries.some((e,n)=>n!==f&&e.name===t);if(_.current={object:v,field:n?p.name:t,owner:`author`},n)return;let r=[...u.entries];r[f]={...p,name:t},O({shape:u.shape,entries:r}),i?.({kind:`field`,id:t,label:String(T.label??t)})},M=()=>{let e=_.current;return e&&e.object===v&&e.field===p.name?e.owner:null},N=e=>{if(o)return null;let t=M();if(t===`author`)return null;let n=E===`select`?`status`:E;if(!(t===`label`||p.name===n||p.name.startsWith(`${n}_`)&&/^\d+$/.test(p.name.slice(n.length+1))||/^field_\d+$/.test(p.name)))return null;let r=oo(e);return!r||r===p.name||u.entries.some((e,t)=>t!==f&&e.name===r)?null:r},P=()=>{let e=u.entries.filter((e,t)=>t!==f);O({shape:u.shape,entries:e}),r()},ee=()=>{let e=new Set(u.entries.map(e=>e.name)),t=`${p.name}_copy`,n=t,r=1;for(;e.has(n);)r+=1,n=`${t}_${r}`;let a=typeof T.label==`string`&&T.label?T.label:``,o={name:n,def:{...T,label:a?a+c(`designer.field.copySuffix`):void 0}},s=[...u.entries];s.splice(f+1,0,o),O({shape:u.shape,entries:s}),i?.({kind:`field`,id:n,label:String(o.def.label??n)})},te=e=>{let t={shape:u.shape,entries:os(u.entries,f,e)};O(t)},ne=aS(T),re=oS(ne),ie=e=>{let t=e.map(e=>{if(e.kind===`malformed`)return e.malformed.raw;let t=e.option,n={...t.rest,value:t.value,label:t.label??``};return t.color&&(n.color=t.color),n});k({options:t})},F=(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[!o&&(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0`,onClick:ee,title:c(`designer.field.duplicate`),"aria-label":c(`designer.field.duplicate`),children:(0,X.jsx)(Gn,{className:`h-3.5 w-3.5`})}),(0,X.jsx)(Yo,{index:f,total:u.entries.length,onMove:te,disabled:o})]}),ae=(0,X.jsx)(Qo,{label:U(`designer.field.remove`,s,{label:typeof T.label==`string`?T.label:p.name}),onClick:P,disabled:o}),oe=D?W(`engine.fieldType.${D.id}`,s):void 0;return(0,X.jsxs)(Wo,{kindLabel:c(`designer.field.kind`),title:typeof T.label==`string`&&T.label?T.label:p.name,onClose:r,closeLabel:c(`designer.field.close`),headerActions:F,footer:ae,children:[(0,X.jsxs)(CS,{title:c(`designer.field.section.basic`),children:[(0,X.jsx)(J,{label:c(`designer.field.apiName`),value:p.name,onCommit:j,disabled:o,mono:!0,testId:`field-apiname-input`}),(0,X.jsx)(J,{label:c(`designer.field.label`),value:typeof T.label==`string`?T.label:``,onCommit:e=>{let t=N(e),n=[...u.entries];n[f]={...p,name:t??p.name,def:{...T,label:e}},O({shape:u.shape,entries:n}),t&&(_.current={object:v,field:t,owner:`label`},i?.({kind:`field`,id:t,label:e}))},disabled:o,testId:`field-label-input`}),(0,X.jsx)(q,{label:c(`designer.field.type`),value:E,options:l,onCommit:e=>k({type:e}),disabled:o}),(0,X.jsxs)(`div`,{className:`flex items-center gap-4 pt-1`,children:[(0,X.jsx)(K,{label:c(`designer.field.required`),value:!!T.required,onCommit:e=>k({required:e||void 0}),disabled:o}),(0,X.jsx)(K,{label:c(`designer.field.unique`),value:!!T.unique,onCommit:e=>k({unique:e||void 0}),disabled:o})]}),(0,X.jsx)(TS,{label:c(`designer.field.description`),value:typeof T.description==`string`?T.description:``,onCommit:e=>k({description:e||void 0}),disabled:o,rows:2}),gS(E)&&(0,X.jsx)(wS,{kind:gS(E),value:T.defaultValue,options:re,onCommit:e=>k({defaultValue:e}),disabled:o,locale:s}),(0,X.jsx)(TS,{label:c(`designer.field.helpText`),value:typeof T.inlineHelpText==`string`?T.inlineHelpText:``,onCommit:e=>k({inlineHelpText:e||void 0}),disabled:o,rows:2,placeholder:c(`designer.field.helpTextPlaceholder`)})]}),(sS(E)||cS(E)||lS(E)||uS(E)||fS(E)||pS(E))&&(0,X.jsxs)(CS,{title:U(`designer.field.section.options`,s,{type:oe??E}),children:[sS(E)&&(0,X.jsx)(kS,{rows:ne,onChange:ie,disabled:o,locale:s},p.name),cS(E)&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ES,{label:c(`designer.field.relatedObject`),value:typeof T.reference==`string`?T.reference:``,options:h,onCommit:e=>k({reference:e||void 0}),disabled:o,placeholder:c(`designer.field.objectNamePlaceholder`)}),(0,X.jsx)(J,{label:c(`designer.field.relationshipName`),value:typeof T.relationshipName==`string`?T.relationshipName:``,onCommit:e=>k({relationshipName:e||void 0}),disabled:o,placeholder:c(`designer.field.relationshipNameHint`)}),(0,X.jsx)(PS,{def:T,patchDef:k,hostFieldNames:u.entries.map(e=>e.name).filter(e=>e!==p.name),readOnly:o,locale:s})]}),E===`formula`&&(0,X.jsx)(ao,{id:`field-formula-${p.name}`,label:c(`designer.field.formula`),value:yS(T.expression??T.formula),onChange:e=>{g.current=!0,k({expression:bS(T.expression??T.formula,e),formula:void 0,...e.trim()?{}:{returnType:void 0}})},onLintChange:e=>S(`formula`,e),onInferredTypeChange:e=>{if(!g.current)return;let t=e&&e!==`unknown`?e:void 0;T.returnType!==t&&k({returnType:t})},disabled:o,placeholder:`record.amount * 0.2`,objectName:typeof t.name==`string`?t.name:void 0,fieldNames:u.entries.map(e=>e.name).filter(e=>e!==p.name),scope:`record`,roots:vS,role:`value`,t:c}),E===`summary`&&(0,X.jsx)(WS,{def:T,patchDef:k,objectOptions:h,readOnly:o,locale:s}),uS(E)&&(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,X.jsx)(ts,{label:c(`designer.field.precision`),value:typeof T.precision==`number`?T.precision:void 0,onCommit:e=>k({precision:e}),disabled:o}),dS(E)&&(0,X.jsx)(ts,{label:c(`designer.field.scale`),value:typeof T.scale==`number`?T.scale:void 0,onCommit:e=>k({scale:e}),disabled:o}),(0,X.jsx)(ts,{label:c(`designer.field.min`),value:typeof T.min==`number`?T.min:void 0,onCommit:e=>k({min:e}),disabled:o}),(0,X.jsx)(ts,{label:c(`designer.field.max`),value:typeof T.max==`number`?T.max:void 0,onCommit:e=>k({max:e}),disabled:o})]}),fS(E)&&(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,X.jsx)(ts,{label:c(`designer.field.minLength`),value:typeof T.minLength==`number`?T.minLength:void 0,onCommit:e=>k({minLength:e}),disabled:o,placeholder:`0`}),(0,X.jsx)(ts,{label:c(`designer.field.maxLength`),value:typeof T.maxLength==`number`?T.maxLength:void 0,onCommit:e=>k({maxLength:e}),disabled:o,placeholder:`255`})]}),pS(E)&&(0,X.jsx)(q,{label:c(`designer.field.valueDomain`),value:typeof T.valueDomain==`string`?T.valueDomain:``,options:[{value:``,label:c(`designer.field.valueDomainNone`)},...hS],onCommit:e=>e?k({valueDomain:e}):A(`valueDomain`),disabled:o})]}),(0,X.jsxs)(CS,{title:c(`designer.field.section.advanced`),children:[(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,X.jsx)(K,{label:c(`designer.field.readonly`),value:!!T.readonly,onCommit:e=>k({readonly:e||void 0}),disabled:o}),(0,X.jsx)(K,{label:c(`designer.field.hidden`),value:!!T.hidden,onCommit:e=>k({hidden:e||void 0}),disabled:o}),(0,X.jsx)(K,{label:c(`designer.field.externalId`),value:!!T.externalId,onCommit:e=>k({externalId:e||void 0}),disabled:o}),(0,X.jsx)(K,{label:c(`designer.field.trackHistory`),value:!!T.trackHistory,onCommit:e=>k({trackHistory:e||void 0}),disabled:o})]}),(0,X.jsx)(J,{label:c(`designer.field.placeholder`),value:typeof T.placeholder==`string`?T.placeholder:``,onCommit:e=>k({placeholder:e||void 0}),disabled:o}),(0,X.jsxs)(`div`,{className:`space-y-2 border-t pt-2.5`,children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:c(`designer.field.conditionalRules`)}),(0,X.jsx)(ao,{id:`field-rule-visible-${p.name}`,label:c(`designer.field.visibleWhen`),value:yS(T.visibleWhen),onChange:e=>k({visibleWhen:bS(T.visibleWhen,e)}),onLintChange:e=>S(`visibleWhen`,e),disabled:o,placeholder:`record.status != 'draft'`,objectName:typeof t.name==`string`?t.name:void 0,fieldNames:u.entries.map(e=>e.name),scope:`record`,roots:_S,slot:`visibleWhen`,t:c}),(0,X.jsx)(ao,{id:`field-rule-readonly-${p.name}`,label:c(`designer.field.readonlyWhen`),value:yS(T.readonlyWhen),onChange:e=>k({readonlyWhen:bS(T.readonlyWhen,e)}),onLintChange:e=>S(`readonlyWhen`,e),disabled:o,placeholder:`record.status == 'closed'`,objectName:typeof t.name==`string`?t.name:void 0,fieldNames:u.entries.map(e=>e.name),scope:`record`,roots:_S,slot:`readonlyWhen`,t:c}),(0,X.jsx)(ao,{id:`field-rule-required-${p.name}`,label:c(`designer.field.requiredWhen`),value:yS(T.requiredWhen),onChange:e=>k({requiredWhen:bS(T.requiredWhen,e)}),onLintChange:e=>S(`requiredWhen`,e),disabled:o,placeholder:`record.amount > 10000`,objectName:typeof t.name==`string`?t.name:void 0,fieldNames:u.entries.map(e=>e.name),scope:`record`,roots:_S,slot:`requiredWhen`,t:c}),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground/80 px-0.5 leading-snug`,children:c(`designer.field.conditionalRulesHint`)})]}),m.length>0&&(0,X.jsx)(q,{label:c(`designer.field.group`),value:typeof T.group==`string`?T.group:``,options:[{value:``,label:c(`designer.field.noGroup`)},...m.filter(e=>typeof e.key==`string`).map(e=>({value:e.key,label:String(e.label??e.key)}))],onCommit:e=>k({group:e||void 0}),disabled:o})]})]})}function CS({title:e,children:t}){return(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wider text-muted-foreground border-b pb-1`,children:e}),(0,X.jsx)(`div`,{className:`space-y-2`,children:t})]})}function wS({kind:e,value:t,options:n,onCommit:r,disabled:i,locale:a}){let o=W(`designer.field.defaultValue`,a),s=W(`designer.field.defaultNone`,a);return e===`bool`?(0,X.jsx)(q,{label:o,value:t===!0?`true`:t===!1?`false`:``,options:[{value:``,label:s},{value:`true`,label:W(`designer.field.true`,a)},{value:`false`,label:W(`designer.field.false`,a)}],onCommit:e=>r(e===``?void 0:e===`true`),disabled:i}):e===`number`?(0,X.jsx)(ts,{label:o,value:typeof t==`number`?t:void 0,onCommit:e=>r(e),disabled:i}):e===`picklist`?(0,X.jsx)(q,{label:o,value:typeof t==`string`?t:``,options:[{value:``,label:s},...n.filter(e=>e.value).map(e=>({value:e.value,label:e.label||e.value}))],onCommit:e=>r(e||void 0),disabled:i}):(0,X.jsx)(J,{label:o,value:typeof t==`string`?t:t==null?``:String(t),onCommit:e=>r(e||void 0),disabled:i})}function TS({label:e,value:t,onCommit:n,disabled:r,rows:i=2,mono:a,placeholder:o}){return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsx)(`textarea`,{value:t,disabled:r,rows:i,placeholder:o,onChange:e=>n(e.target.value),className:`w-full text-sm rounded-md border bg-background px-2 py-1.5 focus:outline-none focus:ring-1 focus:ring-primary `+(a?`font-mono text-xs `:``)})]})}function ES({label:e,value:t,options:n,onCommit:r,disabled:i,placeholder:a}){let o=Y.useId();return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsx)(z,{list:o,value:t,onChange:e=>r(e.target.value),disabled:i,className:`h-8 text-sm font-mono`,placeholder:a??`object_name`}),(0,X.jsx)(`datalist`,{id:o,children:n.map(e=>(0,X.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})}var DS={"not-an-object":`designer.field.optMalformed.notAnObject`,"value-not-text":`designer.field.optMalformed.valueNotText`,"value-empty":`designer.field.optMalformed.valueEmpty`,"label-not-text":`designer.field.optMalformed.labelNotText`,"color-not-text":`designer.field.optMalformed.colorNotText`};function OS(e){let t;try{t=JSON.stringify(e)??String(e)}catch{t=String(e)}return t.length>120?`${t.slice(0,119)}…`:t}function kS({rows:e,onChange:t,disabled:n,locale:r}){let[i,a]=Y.useState(()=>e.length>0?e:[{kind:`option`,option:{value:``,label:``}}]),o=e=>{a(e),t(e.filter(e=>e.kind===`malformed`||e.option.value.trim()!==``))},s=(e,t)=>{let n=[...i],r=n[e];r.kind===`option`&&(n[e]={kind:`option`,option:{...r.option,...t}},o(n))},c=e=>o(i.filter((t,n)=>n!==e)),l=(e,t)=>o(os(i,e,t)),u=()=>o([...i,{kind:`option`,option:{value:``,label:``}}]),d=e=>(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0`,onClick:()=>l(e,e-1),disabled:n||e===0,"aria-label":W(`designer.field.moveUp`,r),children:(0,X.jsx)(nn,{className:`h-3 w-3`})}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0`,onClick:()=>l(e,e+1),disabled:n||e===i.length-1,"aria-label":W(`designer.field.moveDown`,r),children:(0,X.jsx)(en,{className:`h-3 w-3`})}),(0,X.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 text-destructive`,onClick:()=>c(e),disabled:n,"aria-label":W(`designer.field.removeValue`,r),children:(0,X.jsx)(qi,{className:`h-3 w-3`})})]});return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:W(`designer.field.picklistValues`,r)}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:i.length})]}),i.length===0?(0,X.jsx)(`div`,{className:`text-[11px] italic text-muted-foreground px-1`,children:W(`designer.field.noValues`,r)}):(0,X.jsx)(`div`,{className:`space-y-1.5`,children:i.map((e,t)=>e.kind===`malformed`?(0,X.jsxs)(`div`,{role:`alert`,"data-testid":`option-malformed`,className:`rounded-md border border-destructive/60 bg-destructive/5 p-1.5 space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,X.jsx)(zi,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-destructive`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium text-destructive`,children:W(`designer.field.optMalformed`,r)}),(0,X.jsx)(`div`,{className:`text-[11px] text-destructive`,children:W(DS[e.malformed.reason],r)}),(0,X.jsx)(`code`,{className:`block truncate rounded bg-muted px-1 py-0.5 font-mono text-[10px]`,children:OS(e.malformed.raw)}),(0,X.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:W(`designer.field.optMalformedHint`,r)})]})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`span`,{className:`flex-1`}),d(t)]})]},t):(0,X.jsxs)(`div`,{className:`rounded-md border border-border/60 p-1.5 space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(z,{value:e.option.value,onChange:e=>s(t,{value:e.target.value}),placeholder:W(`designer.field.optValue`,r),disabled:n,className:`h-7 min-w-0 flex-1 text-xs font-mono`}),(0,X.jsx)(z,{value:e.option.label??``,onChange:e=>s(t,{label:e.target.value}),placeholder:W(`designer.field.optLabel`,r),disabled:n,className:`h-7 min-w-0 flex-1 text-xs`})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`input`,{type:`color`,value:e.option.color??`#cccccc`,onChange:e=>s(t,{color:e.target.value}),disabled:n,className:`h-6 w-6 rounded border bg-background cursor-pointer p-0.5`,title:W(`designer.field.optColor`,r)}),(0,X.jsx)(`span`,{className:`flex-1`}),d(t)]})]},t))}),!n&&(0,X.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-7 gap-1 text-xs`,onClick:u,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),W(`designer.field.addValue`,r)]})]})}var AS=[{value:`eq`,symbol:`=`,labelKey:`engine.inspector.condition.op.equals`},{value:`ne`,symbol:`≠`,labelKey:`engine.inspector.condition.op.notEquals`},{value:`gt`,symbol:`>`,labelKey:`engine.inspector.condition.op.greaterThan`},{value:`lt`,symbol:`<`,labelKey:`engine.inspector.condition.op.lessThan`},{value:`gte`,symbol:`≥`,labelKey:`engine.inspector.condition.op.atLeast`},{value:`lte`,symbol:`≤`,labelKey:`engine.inspector.condition.op.atMost`},{value:`contains`,labelKey:`engine.inspector.condition.op.contains`},{value:`in`,labelKey:`engine.inspector.condition.op.inAnyOf`},{value:`notIn`,labelKey:`engine.inspector.condition.op.notIn`}];function jS(e){return AS.map(t=>{let n=W(t.labelKey,e);return{value:t.value,label:t.symbol?`${t.symbol} ${n}`:n}})}function MS(e){let t=e.lookupFilters??e.lookup_filters;return Array.isArray(t)?t:[]}function NS(e){let t=e.dependsOn??e.depends_on;return Array.isArray(t)?t.map(e=>typeof e==`string`?e:e&&typeof e==`object`?e.field:void 0).filter(e=>!!e):[]}function PS({def:e,patchDef:t,hostFieldNames:n,readOnly:r,locale:i}){let a=e=>W(e,i),o=typeof e.reference==`string`?e.reference:void 0,{fields:s,loading:c}=to(o),l=Y.useMemo(()=>s.filter(e=>!e.hidden).map(e=>({value:e.name,label:e.label,hint:e.type})),[s]),u=Y.useMemo(()=>n.map(e=>({value:e,label:e})),[n]),d=MS(e),f=NS(e),p=(e,n)=>t({lookupFilters:d.map((t,r)=>r===e?{...t,...n}:t)}),m=()=>t({lookupFilters:[...d,{field:``,operator:`eq`,value:``}]}),h=e=>{let n=d.filter((t,n)=>n!==e);t({lookupFilters:n.length?n:void 0})},g=e=>Array.isArray(e)?e.join(`, `):e==null?``:String(e),_=(e,t)=>e===`in`||e===`notIn`?t.split(`,`).map(e=>e.trim()).filter(Boolean):t,v=e=>{e&&!f.includes(e)&&t({dependsOn:[...f,e]})},y=e=>{let n=f.filter(t=>t!==e);t({dependsOn:n.length?n:void 0})},b=typeof e.displayField==`string`?e.displayField:``,x=typeof e.descriptionField==`string`?e.descriptionField:``,S=typeof e.lookupPageSize==`number`?e.lookupPageSize:void 0,C=e.allowCreate===!0,w=a(o?`designer.field.lookup.selectField`:`designer.field.lookup.setTargetFirst`);return(0,X.jsxs)(`div`,{className:`space-y-2 border-t pt-2.5`,children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:a(`designer.field.lookup.pickerConfig`)}),(0,X.jsx)(Bc,{label:a(`designer.field.lookup.displayField`),value:b,onCommit:e=>t({displayField:e||void 0}),options:l,loading:c,placeholder:w,searchPlaceholder:a(`designer.field.lookup.searchFields`),disabled:r,mono:!0}),(0,X.jsx)(Bc,{label:a(`designer.field.lookup.descriptionField`),value:x,onCommit:e=>t({descriptionField:e||void 0}),options:l,loading:c,placeholder:w,searchPlaceholder:a(`designer.field.lookup.searchFields`),disabled:r,mono:!0}),(0,X.jsxs)(`div`,{className:`space-y-1.5 pt-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:a(`designer.field.lookup.selectableRecords`)}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:d.length})]}),!r&&(0,X.jsxs)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 gap-1 px-1.5 text-[11px]`,onClick:m,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),` `,a(`designer.field.lookup.addFilter`)]})]}),d.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2 text-center text-[11px] text-muted-foreground`,children:U(`designer.field.lookup.noFilter`,i,{ref:o||`related`})}):d.map((e,t)=>(0,X.jsxs)(`div`,{className:`rounded-md border p-2 space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:U(`designer.field.lookup.filterN`,i,{n:t+1})}),!r&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,"aria-label":a(`designer.field.lookup.removeFilter`),className:`h-6 w-6 p-0 text-muted-foreground hover:text-destructive`,onClick:()=>h(t),children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]}),(0,X.jsx)(Bc,{label:a(`designer.field.lookup.filterField`),value:e.field??``,onCommit:e=>p(t,{field:e}),options:l,loading:c,placeholder:w,searchPlaceholder:a(`designer.field.lookup.searchFields`),disabled:r,mono:!0}),(0,X.jsx)(q,{label:a(`designer.field.lookup.filterOperator`),value:e.operator??`eq`,options:jS(i),onCommit:e=>p(t,{operator:e}),disabled:r}),(0,X.jsx)(J,{label:a(`designer.field.lookup.filterValue`),value:g(e.value),onCommit:n=>p(t,{value:_(e.operator,n)}),placeholder:e.operator===`in`||e.operator===`notIn`?`comma,separated,values`:a(`engine.inspector.condition.valuePlaceholder`),disabled:r,mono:!0})]},t))]}),(0,X.jsxs)(`div`,{className:`space-y-1.5 pt-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:a(`designer.field.lookup.dependsOn`)}),f.length>0&&(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:f.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-secondary px-2 py-0.5 text-[11px] font-mono`,children:[e,!r&&(0,X.jsx)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>y(e),"aria-label":U(`engine.form.removeNamed`,i,{name:e}),children:`×`})]},e))}),!r&&u.length>0&&(0,X.jsx)(Bc,{ariaLabel:a(`designer.field.lookup.addDependsOn`),value:``,onCommit:e=>v(e),options:u.filter(e=>!f.includes(e.value)),placeholder:a(`designer.field.lookup.addDependsOn`),searchPlaceholder:a(`designer.field.lookup.searchHostFields`),disabled:r,allowCustom:!1,mono:!0})]}),(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 pt-1`,children:[(0,X.jsx)(ts,{label:a(`designer.field.lookup.pageSize`),value:S,onCommit:e=>t({lookupPageSize:e}),placeholder:`10`,disabled:r}),(0,X.jsx)(`div`,{className:`flex items-end pb-1.5`,children:(0,X.jsx)(K,{label:a(`designer.field.lookup.allowCreate`),value:C,onCommit:e=>t({allowCreate:e||void 0}),disabled:r})})]})]})}var FS=[`count`,`sum`,`min`,`max`,`avg`];function IS(e){let t=e.summaryOperations;return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}var LS={ne:`$ne`,gt:`$gt`,lt:`$lt`,gte:`$gte`,lte:`$lte`,contains:`$contains`,in:`$in`,notIn:`$nin`},RS={$eq:`eq`,$ne:`ne`,$gt:`gt`,$lt:`lt`,$gte:`gte`,$lte:`lte`,$contains:`contains`,$in:`in`,$nin:`notIn`},zS=new Set([`number`,`currency`,`percent`,`rating`,`slider`,`autonumber`]);function BS(e,t,n){let r=e=>{if(typeof e!=`string`)return e;let n=e.trim();if(t===`boolean`||t===`toggle`)return n===`true`||n===`1`;if(t&&zS.has(t)){let t=Number(n);return n!==``&&Number.isFinite(t)?t:e}return e};return n?(Array.isArray(e)?e:String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean)).map(r):r(e)}function VS(e){if(!e||typeof e!=`object`||Array.isArray(e))return{rows:[],advanced:!1};let t=[],n=!1,r=e=>{for(let[i,a]of Object.entries(e)){if(i===`$and`&&Array.isArray(a)){for(let e of a)e&&typeof e==`object`&&!Array.isArray(e)?r(e):n=!0;continue}if(i.startsWith(`$`)){n=!0;continue}if(typeof a==`object`&&a&&!Array.isArray(a)){let e=Object.entries(a);if(e.length===0){n=!0;continue}for(let[r,a]of e){let e=RS[r];e?t.push({field:i,operator:e,value:a}):n=!0}}else t.push({field:i,operator:`eq`,value:a})}};return r(e),{rows:t,advanced:n}}function HS(e,t){let n=e.filter(e=>e.field);if(n.length===0)return;let r=n.map(e=>{let n=e.operator===`in`||e.operator===`notIn`,r=BS(e.value,t(e.field),n);return e.operator===`eq`?{[e.field]:r}:{[e.field]:{[LS[e.operator]??`$eq`]:r}}});if(r.length===1)return r[0];let i=r.map(e=>Object.keys(e)[0]);return new Set(i).size===i.length?Object.assign({},...r):{$and:r}}var US=e=>Array.isArray(e)?e.join(`, `):e==null?``:String(e);function WS({def:e,patchDef:t,objectOptions:n,readOnly:r,locale:i}){let a=e=>W(e,i),o=IS(e),s=typeof o.object==`string`?o.object:``,c=typeof o.function==`string`?o.function:``,{fields:l,loading:u}=to(s||void 0),d=e=>{let n={...o,...e};for(let e of Object.keys(n))(n[e]===void 0||n[e]===``)&&delete n[e];t({summaryOperations:Object.keys(n).length>0?n:void 0})},f=Y.useMemo(()=>l.filter(e=>!e.hidden).map(e=>({value:e.name,label:e.label,hint:e.type})),[l]),p=Y.useMemo(()=>l.filter(e=>e.type===`lookup`||e.type===`master_detail`).map(e=>({value:e.name,label:e.label,hint:e.type})),[l]),m=a(s?`designer.field.lookup.selectField`:`designer.field.summary.setObjectFirst`),h=Y.useCallback(e=>l.find(t=>t.name===e)?.type,[l]),{rows:g,advanced:_}=VS(o.filter),v=e=>d({filter:HS(e,h)}),y=(e,t)=>v(g.map((n,r)=>r===e?{...n,...t}:n)),b=()=>v([...g,{field:f[0]?.value??``,operator:`eq`,value:``}]),x=e=>v(g.filter((t,n)=>n!==e));return(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(ES,{label:a(`designer.field.summary.object`),value:s,options:n,onCommit:e=>d({object:e||void 0}),disabled:r,placeholder:a(`designer.field.objectNamePlaceholder`)}),(0,X.jsx)(q,{label:a(`designer.field.summary.function`),value:c,options:[{value:``,label:a(`designer.field.defaultNone`)},...FS.map(e=>({value:e,label:a(`designer.field.summary.fn.${e}`)}))],onCommit:e=>d({function:e||void 0}),disabled:r}),(0,X.jsx)(Bc,{label:a(`designer.field.summary.field`),value:typeof o.field==`string`?o.field:``,onCommit:e=>d({field:e||void 0}),options:f,loading:u,placeholder:m,searchPlaceholder:a(`designer.field.lookup.searchFields`),disabled:r,mono:!0}),c===`count`&&(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground/70 px-0.5 -mt-1`,children:a(`designer.field.summary.countFieldHint`)}),(0,X.jsx)(Bc,{label:a(`designer.field.summary.relationshipField`),value:typeof o.relationshipField==`string`?o.relationshipField:``,onCommit:e=>d({relationshipField:e||void 0}),options:p,loading:u,placeholder:m,searchPlaceholder:a(`designer.field.lookup.searchFields`),disabled:r,mono:!0}),(0,X.jsxs)(`div`,{className:`space-y-1.5 border-t pt-2.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:a(`designer.field.summary.filterSection`)}),!_&&(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:g.length})]}),!r&&!_&&(0,X.jsxs)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 gap-1 px-1.5 text-[11px]`,onClick:b,disabled:f.length===0,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),` `,a(`designer.field.summary.addFilter`)]})]}),_?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2 text-[11px] text-muted-foreground`,children:a(`designer.field.summary.filterAdvanced`)}):g.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2 text-center text-[11px] text-muted-foreground`,children:a(`designer.field.summary.noFilter`)}):g.map((e,t)=>(0,X.jsxs)(`div`,{className:`rounded-md border p-2 space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:U(`designer.field.lookup.filterN`,i,{n:t+1})}),!r&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,"aria-label":a(`designer.field.lookup.removeFilter`),className:`h-6 w-6 p-0 text-muted-foreground hover:text-destructive`,onClick:()=>x(t),children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]}),(0,X.jsx)(Bc,{label:a(`designer.field.lookup.filterField`),value:e.field??``,onCommit:e=>y(t,{field:e}),options:f,loading:u,placeholder:m,searchPlaceholder:a(`designer.field.lookup.searchFields`),disabled:r,mono:!0}),(0,X.jsx)(q,{label:a(`designer.field.lookup.filterOperator`),value:e.operator??`eq`,options:jS(i),onCommit:e=>y(t,{operator:e}),disabled:r}),(0,X.jsx)(J,{label:a(`designer.field.lookup.filterValue`),value:US(e.value),onCommit:e=>y(t,{value:e}),placeholder:e.operator===`in`||e.operator===`notIn`?`comma,separated,values`:a(`engine.inspector.condition.valuePlaceholder`),disabled:r,mono:!0})]},t)),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground/80 px-0.5 leading-snug`,children:a(`designer.field.summary.filterHint`)})]}),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground/80 px-0.5 leading-snug`,children:a(`designer.field.summary.hint`)})]})}function GS(e){let t=Qi(),[n,r]=Y.useState([]);return Y.useEffect(()=>{let n=!1;return Promise.all([t.list(`object`),t.listDrafts({type:`object`}).catch(()=>[])]).then(([t,i])=>{if(n)return;let a=new Map;for(let e of t??[])typeof e?.name==`string`&&e.name&&!a.has(e.name)&&a.set(e.name,{value:e.name,label:e.label?`${e.label} (${e.name})`:e.name});for(let t of i??[]){let n=t.name;typeof n==`string`&&n&&!a.has(n)&&a.set(n,{value:n,label:`${n} ${W(`engine.inspector.draftSuffix`,e)}`})}r([...a.values()].sort((e,t)=>e.value.localeCompare(t.value)))}).catch(()=>{}),()=>{n=!0}},[t,e]),n}function KS({name:e,draft:t,onPatch:n,readOnly:r,locale:i}){let a=Y.useCallback(e=>W(e,i),[i]),o=!e,s=e=>typeof t[e]==`string`?t[e]:``,c=Y.useRef(!1),l=e=>{let t={label:e||void 0};o&&!c.current&&(t.name=Zi(e)),n(t)},u=e=>{c.current=!0,n({name:oo(e)})},d=o?s(`name`):e||s(`name`),f=s(`label`)||e||a(`designer.object.kind`);return(0,X.jsxs)(Wo,{kindLabel:a(`designer.object.kind`),title:f,onClose:()=>{},hideClose:!0,children:[(0,X.jsxs)(QS,{title:a(`designer.object.section.basic`),hint:a(`designer.object.section.basicHint`),children:[(0,X.jsx)($S,{hint:a(`designer.object.nameHint`),children:(0,X.jsx)(J,{label:a(`designer.object.name`),value:d,onCommit:u,disabled:r||!o,mono:!0,testId:`object-name-input`,placeholder:a(`designer.object.namePlaceholder`)})}),(0,X.jsx)(J,{label:a(`designer.object.label`),value:s(`label`),onCommit:l,disabled:r,placeholder:a(`designer.object.labelPlaceholder`)}),(0,X.jsx)(J,{label:a(`designer.object.pluralLabel`),value:s(`pluralLabel`),onCommit:e=>n({pluralLabel:e||void 0}),disabled:r,placeholder:a(`designer.object.pluralPlaceholder`)}),(0,X.jsx)($S,{hint:a(`designer.object.iconHint`),children:(0,X.jsx)(J,{label:a(`designer.object.icon`),value:s(`icon`),onCommit:e=>n({icon:e||void 0}),disabled:r,mono:!0,placeholder:`building`})}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:a(`designer.object.description`)}),(0,X.jsx)(`textarea`,{value:s(`description`),disabled:r,rows:2,placeholder:a(`designer.object.descriptionPlaceholder`),onChange:e=>n({description:e.target.value||void 0}),className:`w-full text-sm rounded-md border bg-background px-2 py-1.5 focus:outline-none focus:ring-1 focus:ring-primary`})]})]}),(0,X.jsx)(ZS,{draft:t,onPatch:n,readOnly:r,tr:a})]})}var qS=[`read`,`create`,`update`,`delete`];function JS(e){return e.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean)}function YS(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).join(`, `):``}function XS(){let[e,t]=Y.useState(!1);return Y.useEffect(()=>{let e=!1;return n(()=>import(`./vendor-objectstack-XuWC71M9.js`).then(e=>(e.rn(),e.Qt)).then(n=>{e||t(n?.ObjectRequiredPermissionsSchema!==void 0)}),[],import.meta.url).catch(()=>{}),()=>{e=!0}},[]),e}function ZS({draft:e,onPatch:t,readOnly:n,tr:r}){let i=XS(),a=e.access?.default===`private`?`private`:`public`,o=e.requiredPermissions,s=!!o&&typeof o==`object`&&!Array.isArray(o),c=s?`perOp`:`all`,l=e=>{t({access:e===`private`?{default:`private`}:void 0})},u=e=>{let n=JS(e);t({requiredPermissions:n.length>0?n:void 0})},d=(e,n)=>{let r=s?{...o}:{},i=JS(n);i.length>0?r[e]=i:delete r[e],t({requiredPermissions:Object.keys(r).length>0?r:void 0})},f=e=>{if(e!==c){if(e===`perOp`){let e=Array.isArray(o)?o:[];t({requiredPermissions:e.length>0?{read:e,create:e,update:e,delete:e}:{}})}else{let e=s?o:{},n=[...new Set(qS.flatMap(t=>Array.isArray(e[t])?e[t]:[]))];t({requiredPermissions:n.length>0?n:void 0})}}};return(0,X.jsxs)(QS,{title:r(`designer.object.section.access`),hint:r(`designer.object.section.accessHint`),children:[(0,X.jsx)($S,{hint:r(a===`private`?`designer.object.posture.privateHint`:`designer.object.posture.publicHint`),children:(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:r(`designer.object.posture`)}),(0,X.jsxs)(`select`,{value:a,disabled:n,onChange:e=>l(e.target.value),"data-testid":`object-access-posture`,className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,X.jsx)(`option`,{value:`public`,children:r(`designer.object.posture.public`)}),(0,X.jsx)(`option`,{value:`private`,children:r(`designer.object.posture.private`)})]})]})}),(0,X.jsx)($S,{hint:r(`designer.object.reqPerms.hint`),children:(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:r(`designer.object.reqPerms`)}),i&&(0,X.jsxs)(`div`,{className:`inline-flex rounded border text-[11px]`,role:`group`,children:[(0,X.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>f(`all`),className:`px-1.5 py-0.5 rounded-l ${c===`all`?`bg-primary/10 text-primary`:`text-muted-foreground`}`,children:r(`designer.object.reqPerms.mode.all`)}),(0,X.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>f(`perOp`),"data-testid":`object-reqperms-perop`,className:`px-1.5 py-0.5 rounded-r border-l ${c===`perOp`?`bg-primary/10 text-primary`:`text-muted-foreground`}`,children:r(`designer.object.reqPerms.mode.perOp`)})]})]}),c===`all`?(0,X.jsx)(J,{label:``,value:YS(o),onCommit:u,disabled:n,mono:!0,testId:`object-reqperms-all`,placeholder:r(`designer.object.reqPerms.placeholder`)}):(0,X.jsx)(`div`,{className:`space-y-1.5`,children:qS.map(e=>(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`w-14 shrink-0 text-[11px] text-muted-foreground capitalize`,children:r(`designer.object.reqPerms.op.${e}`)}),(0,X.jsx)(`div`,{className:`flex-1`,children:(0,X.jsx)(J,{label:``,value:YS(o?.[e]),onCommit:t=>d(e,t),disabled:n,mono:!0,testId:`object-reqperms-${e}`,placeholder:r(`designer.object.reqPerms.placeholder`)})})]},e))})]})})]})}function QS({title:e,hint:t,children:n}){return(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsxs)(`div`,{className:`border-b pb-1`,children:[(0,X.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wider text-muted-foreground`,children:e}),t&&(0,X.jsx)(`div`,{className:`text-[10px] normal-case text-muted-foreground/70 mt-0.5`,children:t})]}),(0,X.jsx)(`div`,{className:`space-y-2`,children:n})]})}function $S({hint:e,children:t}){return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[t,e&&(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground/80 px-0.5 leading-snug`,children:e})]})}var eC={equals:`$eq`,not_equals:`$ne`,greater_than:`$gt`,greater_than_or_equal:`$gte`,less_than:`$lt`,less_than_or_equal:`$lte`,after:`$gt`,before:`$lt`,contains:`$contains`,in:`$in`,not_in:`$nin`,not_contains:`$notContains`,starts_with:`$startsWith`,ends_with:`$endsWith`,icontains:`$icontains`,between:`$between`},tC={$eq:`equals`,$ne:`not_equals`,$gt:`greater_than`,$gte:`greater_than_or_equal`,$lt:`less_than`,$lte:`less_than_or_equal`,$contains:`contains`,$in:`in`,$nin:`not_in`,$notContains:`not_contains`,$startsWith:`starts_with`,$endsWith:`ends_with`,$icontains:`icontains`,$between:`between`},nC=(()=>{let e={};for(let[t,n]of Object.entries(eC))(e[n]||=[]).push(t);return e})();function rC(e,t){let n=nC[e];if(t&&n&&n.length>1){let e=new Set(Te(t).map(e=>e.value)),r=n.filter(t=>e.has(t));if(r.length===1)return r[0]}return tC[e]}var iC={is_empty:{$exists:!1},is_not_empty:{$exists:!0},is_null:{$null:!0},is_not_null:{$null:!1}};function aC(e){return(e?.conditions??[]).filter(e=>e&&e.field)}function oC(e){return aC(e).length===0}function sC(e){let t=aC(e),n=[];for(let e of t){let t=iC[e.operator];if(t){n.push({[e.field]:{...t}});continue}let r=eC[e.operator];if(!r)continue;let i=e.value;ye(e.operator,i)&&n.push({[e.field]:{[r]:i}})}if(n.length!==0)return n.length===1?n[0]:{$and:n}}function cC(e,t){if(sC({logic:`and`,conditions:[e]})===void 0)return!1;if(!t)return!0;let n=t.find(t=>t.value===e.field)?.type;return Te(n).some(t=>t.value===e.operator)}function lC(e,t){let n={id:`g`,logic:`and`,conditions:[]};if(e==null)return{group:n,representable:!0};if(typeof e!=`object`||Array.isArray(e)||`$or`in e)return{group:n,representable:!1};let r=Array.isArray(e.$and)?e.$and:[e],i=[];for(let e=0;e<r.length;e++){let a=r[e];if(!a||typeof a!=`object`||Array.isArray(a)||`$and`in a||`$or`in a)return{group:n,representable:!1};let o=Object.keys(a);if(o.length!==1)return{group:n,representable:!1};let s=o[0],c=a[s],l;if(c&&typeof c==`object`&&!Array.isArray(c)){let r=Object.keys(c);if(r.length!==1)return{group:n,representable:!1};let i=r[0];if(i===`$exists`)l={id:`c${e}`,field:s,operator:c.$exists?`is_not_empty`:`is_empty`,value:``};else if(i===`$null`)l={id:`c${e}`,field:s,operator:c.$null?`is_null`:`is_not_null`,value:``};else{let r=rC(i,t?.find(e=>e.value===s)?.type);if(!r)return{group:n,representable:!1};l={id:`c${e}`,field:s,operator:r,value:c[i]}}}else l={id:`c${e}`,field:s,operator:`equals`,value:c};if(!cC(l,t))return{group:n,representable:!1};i.push(l)}return{group:{id:`g`,logic:`and`,conditions:i},representable:!0}}function uC(e,t){return e.map(e=>({value:e.value,label:W(e.labelKey,t)}))}function dC(e,t){return e.split(/\{(\w+)\}/).map((e,n)=>n%2==1?(0,X.jsx)(Y.Fragment,{children:e in t?t[e]:`{${e}}`},n):e)}var fC=[{value:`count`,labelKey:`engine.inspector.dataset.aggregate.count`},{value:`sum`,labelKey:`engine.inspector.dataset.aggregate.sum`},{value:`avg`,labelKey:`engine.inspector.dataset.aggregate.avg`},{value:`min`,labelKey:`engine.inspector.dataset.aggregate.min`},{value:`max`,labelKey:`engine.inspector.dataset.aggregate.max`},{value:`count_distinct`,labelKey:`engine.inspector.dataset.aggregate.count_distinct`}],pC=[{value:`string`,labelKey:`engine.inspector.dataset.dimType.string`},{value:`number`,labelKey:`engine.inspector.dataset.dimType.number`},{value:`date`,labelKey:`engine.inspector.dataset.dimType.date`},{value:`boolean`,labelKey:`engine.inspector.dataset.dimType.boolean`},{value:`lookup`,labelKey:`engine.inspector.dataset.dimType.lookup`}],mC=[{value:``,labelKey:`engine.inspector.dataset.granularity.none`},{value:`day`,labelKey:`engine.inspector.dataset.granularity.day`},{value:`week`,labelKey:`engine.inspector.dataset.granularity.week`},{value:`month`,labelKey:`engine.inspector.dataset.granularity.month`},{value:`quarter`,labelKey:`engine.inspector.dataset.granularity.quarter`},{value:`year`,labelKey:`engine.inspector.dataset.granularity.year`}],hC=[{value:`ratio`,labelKey:`engine.inspector.dataset.derivedOp.ratio`},{value:`sum`,labelKey:`engine.inspector.dataset.derivedOp.sum`},{value:`difference`,labelKey:`engine.inspector.dataset.derivedOp.difference`},{value:`product`,labelKey:`engine.inspector.dataset.derivedOp.product`}],gC=[{value:`raw`,labelKey:`engine.inspector.dataset.formatKind.raw`},{value:`number`,labelKey:`engine.inspector.dataset.formatKind.number`},{value:`currency`,labelKey:`engine.inspector.dataset.formatKind.currency`},{value:`percent`,labelKey:`engine.inspector.dataset.formatKind.percent`}],_C=[{value:`0`,label:`0`},{value:`1`,label:`1`},{value:`2`,label:`2`}],vC=[{value:`USD`,label:`USD ($)`},{value:`EUR`,label:`EUR (€)`},{value:`GBP`,label:`GBP (£)`},{value:`CNY`,label:`CNY (¥)`},{value:`JPY`,label:`JPY (¥)`},{value:`INR`,label:`INR (₹)`},{value:`CAD`,label:`CAD ($)`},{value:`AUD`,label:`AUD ($)`}];function yC({title:e,count:t,onAdd:n,addLabel:r}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),(0,X.jsx)(R,{variant:`outline`,className:`text-[10px]`,children:t})]}),n&&(0,X.jsxs)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 gap-1 px-1.5 text-[11px]`,onClick:n,children:[(0,X.jsx)(H,{className:`h-3 w-3`}),` `,r]})]})}function bC({children:e,locale:t}){return(0,X.jsxs)(`details`,{className:`group`,children:[(0,X.jsx)(`summary`,{className:`cursor-pointer select-none list-none text-[11px] text-muted-foreground hover:text-foreground`,children:(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,X.jsx)(tn,{className:`h-3 w-3 transition-transform group-open:rotate-90`}),W(`engine.inspector.dataset.advanced`,t)]})}),(0,X.jsx)(`div`,{className:`mt-1.5 space-y-1.5 border-l pl-2.5`,children:e})]})}function xC(e,t){let n=(e??``).trim(),r=n.match(/\.(0+)/),i=r?Math.min(r[1].length,2):0;return t||/[$£€¥₹]/.test(n)?{kind:`currency`,decimals:i}:n.includes(`%`)?{kind:`percent`,decimals:i}:n?{kind:`number`,decimals:i}:{kind:`raw`,decimals:0}}function SC(e,t,n){let r=t>0?`.`+`0`.repeat(t):``;switch(e){case`number`:return{format:`0,0${r}`,currency:void 0};case`currency`:return{format:`0,0${r}`,currency:n||`USD`};case`percent`:return{format:`0${r}%`,currency:void 0};default:return{format:void 0,currency:void 0}}}function CC({measure:e,onPatch:t,disabled:n,locale:r}){let{kind:i,decimals:a}=xC(e.format,e.currency),o=e.currency||`USD`,s=(e,n,r)=>t(SC(e,n,r)),c=qt(),l=It(i===`percent`?.1234:1234.5,e.format,e.currency,i===`percent`?`fraction`:void 0,c);return(0,X.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-1.5`,children:[(0,X.jsx)(q,{label:W(`engine.inspector.dataset.displayFormat`,r),value:i,options:uC(gC,r),onCommit:e=>s(e,a,o),disabled:n}),i!==`raw`&&(0,X.jsx)(q,{label:W(`engine.inspector.dataset.decimals`,r),value:String(a),options:_C,onCommit:e=>s(i,parseInt(e,10)||0,o),disabled:n})]}),i===`currency`&&(0,X.jsx)(q,{label:W(`engine.inspector.dataset.currency`,r),value:o,options:vC,onCommit:e=>s(i,a,e),disabled:n}),i!==`raw`&&(0,X.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:dC(W(`engine.inspector.dataset.sample`,r),{sample:(0,X.jsx)(`span`,{className:`font-mono tabular-nums`,children:l})})})]})}function wC(e,t){if(!e||!e.includes(`.`))return null;let n=e.slice(0,e.lastIndexOf(`.`));return n&&!t.includes(n)?n:null}function TC({rel:e,onAdd:t,disabled:n,locale:r}){return(0,X.jsxs)(`p`,{className:`flex items-center gap-1 text-[10px] text-amber-600 dark:text-amber-400`,children:[(0,X.jsx)(zi,{className:`h-3 w-3 shrink-0`}),(0,X.jsx)(`span`,{children:dC(W(`engine.inspector.dataset.relWarning`,r),{rel:(0,X.jsx)(`code`,{className:`font-mono`,children:e})})}),!n&&t&&(0,X.jsx)(`button`,{type:`button`,className:`underline hover:no-underline`,onClick:t,children:W(`engine.inspector.dataset.relWarningAdd`,r)})]})}function EC({label:e,help:t,value:n,onCommit:r,fields:i,disabled:a,locale:o}){let{group:s,representable:c}=lC(n,i),l=s.conditions.length;return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:e}),c?(0,X.jsxs)(Ke,{children:[(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,disabled:a,className:`h-8 w-full justify-between text-xs font-normal`,children:[(0,X.jsx)(`span`,{className:`truncate text-left`,children:l?U(l===1?`engine.inspector.dataset.filterConditionsOne`:`engine.inspector.dataset.filterConditionsOther`,o,{count:l}):(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:W(`engine.inspector.dataset.addFilter`,o)})}),(0,X.jsx)(wn,{className:`h-3.5 w-3.5 opacity-60 shrink-0`})]})}),(0,X.jsx)(be,{align:`start`,className:`w-[440px] max-w-[90vw] p-3`,children:i.length===0?(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:W(`engine.inspector.dataset.filterNeedsObject`,o)}):(0,X.jsx)(Ne,{fields:i,value:s,onChange:e=>{let t=sC(e);(t!==void 0||oC(e))&&r(t)}})})]}):(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-2.5 py-1.5 text-[11px] text-muted-foreground`,children:dC(W(`engine.inspector.dataset.filterAdvanced`,o),{source:(0,X.jsx)(`span`,{className:`font-medium`,children:W(`engine.inspector.dataset.sourceTab`,o)})})}),t&&(0,X.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:t})]})}function DC(e,t){return e===t?{object:e}:{object:e,include:[],dimensions:[],measures:[],filter:void 0}}function OC({draft:e,onPatch:t,readOnly:n,name:r,locale:i}){let a=e=>W(e,i),o=typeof e.label==`string`?e.label:``,s=typeof e.description==`string`?e.description:``,c=typeof e.object==`string`?e.object:``,l=Array.isArray(e.include)?e.include:[],u=Array.isArray(e.dimensions)?e.dimensions:[],d=Array.isArray(e.measures)?e.measures:[],f=typeof e.name==`string`?e.name:void 0,p=!r,m=Y.useRef(!1),h=typeof e.name==`string`?e.name:``,{options:g,loading:_}=Yc(),{relationships:v,fieldOptions:y,loading:b}=Xc(c,l),x=Zc(f),S=Y.useMemo(()=>g.map(e=>({value:e.name,label:e.label})),[g]),C=Y.useMemo(()=>v.map(e=>({value:e.name,label:e.label,hint:e.referenceTo?`→ ${e.referenceTo}`:void 0})),[v]),w=Y.useMemo(()=>y.map(e=>({value:e.value,label:e.label,hint:e.type,group:e.group})),[y]),T=Y.useMemo(()=>y.filter(e=>!e.value.includes(`.`)).map(e=>({value:e.value,label:e.label,type:e.type})),[y]),E=e.filter&&typeof e.filter==`object`?e.filter:void 0,D=S.find(e=>e.value===c)?.label??c,O=(e,n)=>t({dimensions:u.map((t,r)=>r===e?{...t,...n}:t)}),k=(e,n)=>t({measures:d.map((t,r)=>r===e?{...t,...n}:t)}),A=e=>e.includes(`.`)?e.split(`.`).pop()??e:e,j=(e,t)=>{let n=y.find(e=>e.value===t),r=n?.type?{field:t,type:Wc(n.type)}:{field:t};u[e]?.name||(r.name=A(t)),O(e,r)},M=(e,t)=>{let n={field:t};d[e]?.name||(n.name=A(t)),k(e,n)};return(0,X.jsxs)(Wo,{kindLabel:a(`engine.inspector.dataset.kind`),title:String(o||e.name||a(`engine.inspector.dataset.kind`)),onClose:()=>{},hideClose:!0,children:[f&&!x.loading&&(0,X.jsx)(`p`,{className:x.reports+x.dashboards>0?`rounded-md border border-amber-500/30 bg-amber-500/5 px-2.5 py-1.5 text-[11px] text-amber-700 dark:text-amber-300`:`text-[11px] text-muted-foreground`,children:x.reports+x.dashboards>0?U(`engine.inspector.dataset.usage.bound`,i,{reports:U(x.reports===1?`engine.inspector.dataset.usage.reportsOne`:`engine.inspector.dataset.usage.reportsOther`,i,{count:x.reports}),dashboards:U(x.dashboards===1?`engine.inspector.dataset.usage.dashboardsOne`:`engine.inspector.dataset.usage.dashboardsOther`,i,{count:x.dashboards})}):a(`engine.inspector.dataset.usage.unbound`)}),p&&(0,X.jsx)(J,{label:a(`engine.inspector.dataset.name`),value:h,onCommit:e=>{m.current=!0,t({name:go(e)})},placeholder:a(`engine.inspector.dataset.namePlaceholder`),disabled:n,mono:!0}),(0,X.jsx)(J,{label:a(`engine.inspector.dataset.label`),value:o,onCommit:e=>{let n={label:e};p&&!m.current&&(n.name=go(e)),t(n)},disabled:n}),(0,X.jsx)(J,{label:a(`engine.inspector.dataset.description`),value:s,onCommit:e=>t({description:e}),disabled:n}),(0,X.jsx)(Bc,{label:a(`engine.inspector.dataset.baseObject`),value:c,onCommit:e=>t(DC(e,c)),options:S,loading:_,placeholder:a(`engine.inspector.dataset.baseObjectPlaceholder`),searchPlaceholder:a(`engine.inspector.dataset.searchObjects`),disabled:n,mono:!0}),c&&(u.length>0||d.length>0||l.length>0||!!E)&&(0,X.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:a(`engine.inspector.dataset.baseObjectChangeHint`)}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-1.5`,children:[(0,X.jsx)(yC,{title:a(`engine.inspector.dataset.includedRelationships`),count:l.length,addLabel:a(`engine.form.add`),onAdd:n?void 0:()=>t({include:ss(l,``)})}),l.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2 text-center text-[11px] text-muted-foreground`,children:dC(a(`engine.inspector.dataset.noJoins`),{object:(0,X.jsx)(`code`,{children:D||a(`engine.inspector.dataset.baseObjectFallback`)}),path:(0,X.jsx)(`code`,{children:`relationship.field`})})}):l.map((e,r)=>(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(Bc,{ariaLabel:a(`engine.inspector.dataset.includedRelationship`),value:e,onCommit:e=>t({include:l.map((t,n)=>n===r?e:t)}),options:C,loading:b,placeholder:a(`engine.inspector.dataset.relationshipPlaceholder`),searchPlaceholder:a(`engine.inspector.dataset.searchRelationships`),disabled:n,mono:!0}),!n&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 w-7 shrink-0 p-0`,onClick:()=>t({include:G(l,r,null)}),"aria-label":a(`engine.inspector.dataset.removeRelationship`),children:(0,X.jsx)(qi,{className:`h-3.5 w-3.5`})})]},r)),c&&l.length>0&&(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-1 gap-y-0.5 pt-0.5 text-[10px] text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`font-mono font-medium`,children:D}),l.map((e,t)=>{let n=v.find(t=>t.name===e);return(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,X.jsx)(tn,{className:`h-3 w-3 opacity-60`}),(0,X.jsxs)(`span`,{className:`font-mono`,children:[e,n?.referenceTo?` (${n.referenceTo})`:``]})]},t)})]})]}),(0,X.jsx)(`div`,{className:`border-t pt-3`,children:(0,X.jsx)(EC,{label:a(`engine.inspector.dataset.scopeFilter`),help:a(`engine.inspector.dataset.scopeFilterHelp`),value:E,onCommit:e=>t({filter:e}),fields:T,disabled:n,locale:i})}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(yC,{title:a(`engine.inspector.dataset.dimensions`),count:u.length,addLabel:a(`engine.inspector.dataset.addDimension`),onAdd:n?void 0:()=>t({dimensions:ss(u,{name:``,field:``,type:`string`})})}),u.map((e,r)=>(0,X.jsxs)(`div`,{className:`rounded-md border p-2 space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground`,children:U(`engine.inspector.dataset.dimensionN`,i,{index:r+1})}),!n&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,"aria-label":a(`engine.inspector.dataset.removeDimension`),title:a(`engine.inspector.dataset.removeDimension`),className:`h-6 w-6 shrink-0 p-0 text-muted-foreground hover:text-destructive`,onClick:()=>t({dimensions:G(u,r,null)}),children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]}),(0,X.jsx)(J,{label:a(`engine.inspector.dataset.name`),value:e.name??``,onCommit:e=>O(r,{name:e}),placeholder:a(`engine.inspector.dataset.dimensionNamePlaceholder`),disabled:n,mono:!0}),(0,X.jsx)(Bc,{label:a(`engine.inspector.dataset.field`),value:e.field??``,onCommit:e=>j(r,e),options:w,loading:b,placeholder:a(`engine.inspector.dataset.dimensionFieldPlaceholder`),searchPlaceholder:a(`engine.form.searchFields`),disabled:n,mono:!0}),(()=>{let r=wC(e.field,l);return r?(0,X.jsx)(TC,{rel:r,disabled:n,locale:i,onAdd:()=>t({include:ss(l,r)})}):null})(),(0,X.jsx)(q,{label:a(`engine.inspector.dataset.type`),value:e.type,options:uC(pC,i),onCommit:e=>O(r,{type:e}),disabled:n}),(0,X.jsxs)(bC,{locale:i,children:[(0,X.jsx)(J,{label:a(`engine.inspector.dataset.labelOptional`),value:e.label??``,onCommit:e=>O(r,{label:e||void 0}),placeholder:e.name||a(`engine.inspector.dataset.displayLabel`),disabled:n}),e.type===`date`&&(0,X.jsx)(q,{label:a(`engine.inspector.dataset.dateBucket`),value:e.dateGranularity??``,options:uC(mC,i),onCommit:e=>O(r,{dateGranularity:e||void 0}),disabled:n})]})]},r))]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(yC,{title:a(`engine.inspector.dataset.measures`),count:d.length,addLabel:a(`engine.inspector.dataset.addMeasure`),onAdd:n?void 0:()=>t({measures:ss(d,{name:``,aggregate:`sum`,field:``})})}),d.map((e,r)=>{let o=d.filter((e,t)=>t!==r).map(e=>e.name).filter(e=>!!e),s=e.derived;return(0,X.jsxs)(`div`,{className:`rounded-md border p-2 space-y-1.5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground`,children:U(`engine.inspector.dataset.measureN`,i,{index:r+1})}),!n&&(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,"aria-label":a(`engine.inspector.dataset.removeMeasure`),title:a(`engine.inspector.dataset.removeMeasure`),className:`h-6 w-6 shrink-0 p-0 text-muted-foreground hover:text-destructive`,onClick:()=>t({measures:G(d,r,null)}),children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]}),(0,X.jsx)(J,{label:a(`engine.inspector.dataset.name`),value:e.name??``,onCommit:e=>k(r,{name:e}),placeholder:a(`engine.inspector.dataset.measureNamePlaceholder`),disabled:n,mono:!0}),(0,X.jsx)(q,{label:a(`engine.inspector.dataset.aggregate`),value:e.aggregate,options:uC(fC,i),onCommit:e=>k(r,{aggregate:e}),disabled:n}),(0,X.jsx)(Bc,{label:a(`engine.inspector.dataset.field`),value:e.field??``,onCommit:e=>M(r,e),options:w,loading:b,placeholder:a(`engine.inspector.dataset.measureFieldPlaceholder`),searchPlaceholder:a(`engine.form.searchFields`),disabled:n,mono:!0}),(()=>{let r=wC(e.field,l);return r?(0,X.jsx)(TC,{rel:r,disabled:n,locale:i,onAdd:()=>t({include:ss(l,r)})}):null})(),(0,X.jsxs)(bC,{locale:i,children:[(0,X.jsx)(J,{label:a(`engine.inspector.dataset.labelOptional`),value:e.label??``,onCommit:e=>k(r,{label:e||void 0}),placeholder:e.name||a(`engine.inspector.dataset.displayLabel`),disabled:n}),(0,X.jsx)(CC,{measure:e,onPatch:e=>k(r,e),disabled:n,locale:i}),(0,X.jsx)(EC,{label:a(`engine.inspector.dataset.measureFilter`),help:a(`engine.inspector.dataset.measureFilterHelp`),value:e.filter,onCommit:e=>k(r,{filter:e}),fields:T,disabled:n,locale:i}),(0,X.jsx)(K,{label:a(`engine.inspector.dataset.derived`),value:!!s,onCommit:e=>k(r,{derived:e?{op:`ratio`,of:[]}:void 0}),disabled:n}),s&&(0,X.jsxs)(`div`,{className:`space-y-1.5 rounded-md border border-dashed p-2`,children:[(0,X.jsx)(q,{label:a(`engine.inspector.dataset.operation`),value:s.op,options:uC(hC,i),onCommit:e=>k(r,{derived:{...s,op:e}}),disabled:n}),(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:a(`engine.inspector.dataset.operands`)}),(()=>{let e=s.op===`ratio`||s.op===`difference`?2:1;return(Array.isArray(s.of)?s.of.length:0)<e?(0,X.jsx)(`p`,{className:`text-[10px] text-amber-600 dark:text-amber-400`,children:U(e===2?`engine.inspector.dataset.derivedNeedTwo`:`engine.inspector.dataset.derivedNeedOne`,i,{op:s.op??``})}):null})(),o.length===0?(0,X.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:a(`engine.inspector.dataset.addOtherMeasuresFirst`)}):(0,X.jsx)(`div`,{className:`space-y-1`,children:o.map(e=>{let t=Array.isArray(s.of)&&s.of.includes(e);return(0,X.jsx)(K,{label:e,value:t,disabled:n,onCommit:t=>{let n=Array.isArray(s.of)?s.of:[],i=t?[...n,e]:n.filter(t=>t!==e);k(r,{derived:{...s,of:i}})}},e)})})]})]})]},r)})]})]})}function kC(e){let t=Qi(),[n,r]=Y.useState([]),[i,a]=Y.useState(!!e);return Y.useEffect(()=>{if(!e){r([]),a(!1);return}let n=!1;return a(!0),t.list(e).then(e=>{if(n)return;let t=(e??[]).map(e=>e&&typeof e==`object`&&`item`in e?e.item:e).filter(e=>typeof e?.name==`string`&&e.name).map(e=>({value:e.name,label:e.label?`${e.label} (${e.name})`:e.name})).sort((e,t)=>e.value.localeCompare(t.value));r(t),a(!1)}).catch(()=>{n||(r([]),a(!1))}),()=>{n=!0}},[t,e]),{options:n,loading:i}}function AC(e,t){return e.map(e=>({value:e.value,label:W(e.labelKey,t)}))}function jC(e,t){return e.split(/\{(\w+)\}/).map((e,n)=>n%2==1?(0,X.jsx)(Y.Fragment,{children:e in t?t[e]:`{${e}}`},n):e)}var MC=[{value:`script`,labelKey:`engine.inspector.action.type.script`},{value:`api`,labelKey:`engine.inspector.action.type.api`},{value:`flow`,labelKey:`engine.inspector.action.type.flow`},{value:`modal`,labelKey:`engine.inspector.action.type.modal`},{value:`form`,labelKey:`engine.inspector.action.type.form`},{value:`url`,labelKey:`engine.inspector.action.type.url`}],NC=[{value:`primary`,labelKey:`engine.inspector.action.variant.primary`},{value:`secondary`,labelKey:`engine.inspector.action.variant.secondary`},{value:`danger`,labelKey:`engine.inspector.action.variant.danger`},{value:`ghost`,labelKey:`engine.inspector.action.variant.ghost`},{value:`link`,labelKey:`engine.inspector.action.variant.link`}],PC=[{value:`action:button`,labelKey:`engine.inspector.action.component.button`},{value:`action:icon`,labelKey:`engine.inspector.action.component.icon`},{value:`action:menu`,labelKey:`engine.inspector.action.component.menu`},{value:`action:group`,labelKey:`engine.inspector.action.component.group`}],FC=[{value:`create`,labelKey:`engine.inspector.action.mode.create`},{value:`edit`,labelKey:`engine.inspector.action.mode.edit`},{value:`delete`,labelKey:`engine.inspector.action.mode.delete`},{value:`custom`,labelKey:`engine.inspector.action.mode.custom`}],IC=[{value:`POST`,label:`POST`},{value:`PATCH`,label:`PATCH`},{value:`PUT`,label:`PUT`},{value:`DELETE`,label:`DELETE`}],LC=[{value:`expression`,labelKey:`engine.inspector.action.bodyLang.expression`},{value:`js`,labelKey:`engine.inspector.action.bodyLang.js`}],RC=[{value:`text`,labelKey:`engine.inspector.action.paramType.text`},{value:`textarea`,labelKey:`engine.inspector.action.paramType.textarea`},{value:`number`,labelKey:`engine.inspector.action.paramType.number`},{value:`boolean`,labelKey:`engine.inspector.action.paramType.boolean`},{value:`select`,labelKey:`engine.inspector.action.paramType.select`},{value:`date`,labelKey:`engine.inspector.action.paramType.date`},{value:`datetime`,labelKey:`engine.inspector.action.paramType.datetime`},{value:`lookup`,labelKey:`engine.inspector.action.paramType.lookup`}],zC=new Set([..._t,...Ft]);function BC(e){return zC.has(e)?e:void 0}var VC={record_header:`engine.inspector.action.location.record_header`,record_more:`engine.inspector.action.location.record_more`,record_section:`engine.inspector.action.location.record_section`,record_related:`engine.inspector.action.location.record_related`,list_toolbar:`engine.inspector.action.location.list_toolbar`,list_item:`engine.inspector.action.location.list_item`},HC=Object.keys(VC).map(e=>({value:e,labelKey:VC[e]})),UC={url:{labelKey:`engine.inspector.action.target.url.label`,placeholderKey:`engine.inspector.action.target.url.placeholder`,hintKey:`engine.inspector.action.target.url.hint`},flow:{labelKey:`engine.inspector.action.target.flow.label`,placeholderKey:`engine.inspector.action.target.flow.placeholder`,hintKey:`engine.inspector.action.target.flow.hint`},modal:{labelKey:`engine.inspector.action.target.modal.label`,placeholderKey:`engine.inspector.action.target.modal.placeholder`,hintKey:`engine.inspector.action.target.modal.hint`},form:{labelKey:`engine.inspector.action.target.form.label`,placeholder:`object.viewKey`,hintKey:`engine.inspector.action.target.form.hint`},api:{labelKey:`engine.inspector.action.target.api.label`,placeholder:`/api/v1/…`,hintKey:`engine.inspector.action.target.api.hint`}},WC={flow:`flow`,modal:`page`,form:`view`};function GC({type:e,value:t,onCommit:n,cfg:r,readOnly:i}){let a=WC[e]??null,{options:o}=kC(a),s=!!a&&o.length>0;return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[s?(0,X.jsx)(q,{label:`${r.label} *`,value:t||void 0,options:o,onCommit:n,disabled:i}):(0,X.jsx)(J,{label:`${r.label} *`,value:t,onCommit:n,placeholder:r.placeholder,disabled:i,mono:!0}),(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:r.hint})]})}var KC=[`target`,`body`,`method`,`bodyExtra`,`bodyShape`,`recordIdParam`,`recordIdField`,`onSuccess`,`opensInNewTab`,`newTabUrl`],qC=`list_toolbar`,JC=[{value:``,labelKey:`engine.inspector.action.scriptOp.run`},{value:`update`,labelKey:`engine.inspector.action.scriptOp.update`}],YC=[`name`,`label`,`objectName`,`icon`,`variant`,`component`,`type`,`target`,`execute`,`body`,`method`,`operation`,`patch`,`params`,`locations`,`confirmText`,`successMessage`,`errorMessage`,`refreshAfter`,`undoable`,`mode`,`visible`,`disabled`,`aiExposed`,`aiDescription`],XC=[`bulkEnabled`,`shortcut`];function ZC({title:e,hint:t}){return(0,X.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:e}),t&&(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:t})]})}function QC(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`object`){let t=e;return t.en??t[`en-US`]??Object.values(t)[0]??``}return String(e)}function $C({label:e,value:t,onCommit:n,disabled:r,hint:i,locale:a}){let{options:o}=Ef();return(0,X.jsxs)(`div`,{className:`space-y-1`,children:[o.length===0?(0,X.jsx)(J,{label:e,value:t??``,placeholder:W(`engine.inspector.action.objectPlaceholder`,a),onCommit:n,disabled:r,mono:!0}):(0,X.jsx)(q,{label:e,value:t||void 0,options:[{value:``,label:W(`engine.inspector.action.objectNone`,a)},...o],onCommit:n,disabled:r}),i&&(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:i})]})}function ew({label:e,objectName:t,value:n,onCommit:r,disabled:i}){let{fields:a}=to(t),o=Y.useMemo(()=>a.filter(e=>!e.hidden).map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name})),[a]);return!t||o.length===0?(0,X.jsx)(J,{label:e,value:n??``,onCommit:r,disabled:i,mono:!0}):(0,X.jsx)(q,{label:e,value:n||void 0,options:[{value:``,label:`—`},...o],onCommit:r,disabled:i})}function tw({options:e,onCommit:t,disabled:n,locale:r}){let i=Array.isArray(e)?e:[];return(0,X.jsxs)(`div`,{role:`group`,"aria-label":W(`engine.inspector.action.options`,r),className:`space-y-1.5 rounded-md border border-dashed border-border p-2`,children:[(0,X.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.inspector.action.options`,r)}),i.length===0?(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground/80`,children:W(`engine.inspector.action.optionsEmpty`,r)}):i.map((e,a)=>(0,X.jsxs)(`div`,{className:`flex items-start gap-1`,children:[(0,X.jsxs)(`div`,{className:`grid flex-1 grid-cols-2 gap-2`,children:[(0,X.jsx)(J,{label:W(`engine.inspector.action.optionLabel`,r),value:QC(e.label),onCommit:n=>t(G(i,a,{...e,label:n})),disabled:n}),(0,X.jsx)(J,{label:W(`engine.inspector.action.optionValue`,r),value:e.value??``,onCommit:n=>t(G(i,a,{...e,value:n})),disabled:n,mono:!0})]}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`mt-[22px] h-6 w-6`,disabled:n,"aria-label":U(`engine.inspector.action.removeOption`,r,{index:a+1}),onClick:()=>t(G(i,a,null)),children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]},a)),!n&&(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t(ss(i,{label:``,value:``})),children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),` `,W(`engine.inspector.action.addOption`,r)]})]})}function nw({draft:e,onPatch:t,readOnly:n,locale:r,serverSchema:i,onBlockingIssuesChange:a}){let o=Y.useCallback(e=>W(e,r),[r]),s=t=>typeof e[t]==`string`?e[t]:``,c=s(`type`)||`script`,l=s(`objectName`),u=e.body&&typeof e.body==`object`?e.body:{},d=Array.isArray(e.params)?e.params:[],f=Array.isArray(e.locations)?e.locations:[],p=s(`operation`),m=p===`update`,h=e.patch&&typeof e.patch==`object`&&!Array.isArray(e.patch)?e.patch:{},g=Object.entries(h),_=e=>{if(e===`update`){let e={operation:`update`,type:`script`};for(let t of KC)e[t]=void 0;f.includes(qC)&&(e.locations=f.filter(e=>e!==qC)),t(e);return}t({operation:void 0,patch:void 0})},v=e=>{let n={};for(let[t,r]of e)t.trim()!==``&&(n[t.trim()]=r);t({patch:n})},y=Array.isArray(e.requiredPermissions)?e.requiredPermissions.filter(e=>typeof e==`string`):[],{systemPermissions:b}=se(),x=Array.isArray(b)?y.filter(e=>!b.includes(e)):[],S=e.aiExposed===!0,C=typeof e.aiDescription==`string`?e.aiDescription:``,w=s(`name`),[T,E]=Y.useState({action:w,sites:{}}),D=Y.useCallback((e,t)=>{E(n=>n.action===w?n.sites[e]===t?n:{action:w,sites:{...n.sites,[e]:t}}:{action:w,sites:{[e]:t}})},[w]),O=Y.useMemo(()=>{if(T.action!==w)return 0;let e=0;for(let t of Object.values(T.sites))e+=t??0;return e},[T,w]),k=Y.useRef(a);Y.useEffect(()=>{k.current=a}),Y.useEffect(()=>{k.current?.(O)},[O]);let A=e=>t({body:{...u,...e}}),j=(e,n)=>t({params:d.map((t,r)=>r===e?{...t,...n}:t)}),M=(e,n)=>{t({locations:n?[...new Set([...f,e])]:f.filter(t=>t!==e)})},N=UC[c],P=N&&{label:o(N.labelKey),placeholder:N.placeholderKey?o(N.placeholderKey):N.placeholder??``,hint:o(N.hintKey)},ee=i;return(0,X.jsxs)(Wo,{kindLabel:o(`engine.inspector.action.kind`),title:String(QC(e.label)||e.name||o(`engine.inspector.action.kind`)),onClose:()=>{},closeLabel:o(`engine.inspector.action.close`),hideClose:!0,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.basics`)}),(0,X.jsx)(J,{label:o(`engine.inspector.action.label`),value:QC(e.label),onCommit:e=>t({label:e}),placeholder:o(`engine.inspector.action.labelPlaceholder`),disabled:n}),(0,X.jsx)(J,{label:o(`engine.inspector.action.name`),value:s(`name`),onCommit:e=>t({name:e}),placeholder:o(`engine.inspector.action.namePlaceholder`),disabled:n,mono:!0}),(0,X.jsx)($C,{label:o(`engine.inspector.action.object`),value:l,onCommit:e=>t({objectName:e||void 0}),disabled:n,hint:o(l?`engine.inspector.action.objectBoundHint`:`engine.inspector.action.objectGlobalHint`),locale:r}),(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.action.icon`)}),(0,X.jsx)(Oo,{schema:{type:`string`},value:s(`icon`),onChange:e=>t({icon:e||void 0}),readOnly:n})]}),(0,X.jsx)(q,{label:o(`engine.inspector.action.variant`),value:s(`variant`)||void 0,options:AC(NC,r),onCommit:e=>t({variant:e}),disabled:n})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-3`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.behavior`),hint:o(`engine.inspector.action.behaviorHint`)}),(0,X.jsx)(q,{label:o(`engine.inspector.action.type`),value:c,options:AC(MC,r),onCommit:e=>t({type:e}),disabled:n||m}),m&&(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:jC(o(`engine.inspector.action.pinnedScript`),{script:(0,X.jsx)(`code`,{children:`script`})})}),c===`script`?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(q,{label:o(`engine.inspector.action.whatItDoes`),value:p,options:AC(JC,r),onCommit:_,disabled:n}),m?(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.action.fieldValues`)}),g.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2.5 text-center text-[11px] text-muted-foreground`,children:o(`engine.inspector.action.fieldValuesEmpty`)}):g.map(([e,t],r)=>(0,X.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,X.jsx)(`div`,{className:`flex-1`,children:(0,X.jsx)(J,{label:o(`engine.inspector.action.fieldValueField`),value:e,onCommit:e=>v(g.map((t,n)=>n===r?[e,t[1]]:t)),placeholder:`status`,disabled:n,mono:!0})}),(0,X.jsx)(`div`,{className:`flex-1`,children:(0,X.jsx)(J,{label:o(`engine.inspector.action.fieldValueValue`),value:typeof t==`string`?t:JSON.stringify(t??``),onCommit:e=>v(g.map((t,n)=>n===r?[t[0],e]:t)),placeholder:`done`,disabled:n,mono:!0})}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,disabled:n,"aria-label":o(`engine.inspector.action.removeFieldValue`),onClick:()=>v(g.filter((e,t)=>t!==r)),children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]},r)),(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 text-xs`,disabled:n,onClick:()=>v([...g,[``,``]]),children:[(0,X.jsx)(H,{className:`mr-1 h-3 w-3`}),` `,o(`engine.inspector.action.addFieldValue`)]}),(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:o(`engine.inspector.action.updateHint`)})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(q,{label:o(`engine.inspector.action.scriptLanguage`),value:(typeof u.language==`string`?u.language:void 0)||`expression`,options:AC(LC,r),onCommit:e=>A({language:e}),disabled:n}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.action.scriptBody`)}),(0,X.jsx)(Ye,{value:typeof u.source==`string`?u.source:``,onChange:e=>A({source:e.target.value}),disabled:n,spellCheck:!1,rows:5,placeholder:`// (input, ctx) => result
17
- return { ok: true }`,className:`text-xs font-mono`}),(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:jC(o(`engine.inspector.action.scriptBodyHint`),{signature:(0,X.jsx)(`code`,{children:`(input, ctx) => Promise<output>`})})})]})]})]}):(0,X.jsxs)(X.Fragment,{children:[c===`api`&&(0,X.jsx)(q,{label:o(`engine.inspector.action.method`),value:s(`method`)||`POST`,options:IC,onCommit:e=>t({method:e}),disabled:n}),P&&(0,X.jsx)(GC,{type:c,value:s(`target`),onCommit:e=>t({target:e}),cfg:P,readOnly:n})]})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.inputs`),hint:o(`engine.inspector.action.inputsHint`)}),d.length===0?(0,X.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-2.5 text-center text-[11px] text-muted-foreground`,children:o(`engine.inspector.action.inputsEmpty`)}):d.map((e,i)=>(0,X.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[`#`,i+1]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-6 w-6`,disabled:n||i===0,"aria-label":o(`engine.inspector.reorder.up`),onClick:()=>t({params:os(d,i,i-1)}),children:`↑`}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-6 w-6`,disabled:n||i===d.length-1,"aria-label":o(`engine.inspector.reorder.down`),onClick:()=>t({params:os(d,i,i+1)}),children:`↓`}),(0,X.jsx)(B,{type:`button`,variant:`ghost`,size:`icon`,className:`h-6 w-6`,disabled:n,"aria-label":o(`engine.inspector.action.removeInput`),onClick:()=>t({params:G(d,i,null)}),children:(0,X.jsx)(Li,{className:`h-3.5 w-3.5`})})]})]}),l?(0,X.jsx)(ew,{label:o(`engine.inspector.action.bindToField`),objectName:l,value:e.field,onCommit:e=>j(i,{field:e||void 0}),disabled:n}):null,!e.field&&(0,X.jsx)(J,{label:o(`engine.inspector.action.paramName`),value:e.name??``,onCommit:e=>j(i,{name:e}),placeholder:o(`engine.inspector.action.paramNamePlaceholder`),disabled:n,mono:!0}),(0,X.jsx)(J,{label:o(`engine.inspector.action.paramLabel`),value:QC(e.label),onCommit:e=>j(i,{label:e}),disabled:n}),!e.field&&(0,X.jsx)(q,{label:o(`engine.inspector.action.paramTypeLabel`),value:e.type||void 0,options:AC(RC,r),onCommit:e=>j(i,{type:BC(e)}),disabled:n}),!e.field&&e.type===`select`&&(0,X.jsx)(tw,{options:e.options,onCommit:e=>j(i,{options:e.length>0?e:void 0}),disabled:n,locale:r}),(0,X.jsx)(J,{label:o(`engine.inspector.action.paramPlaceholder`),value:e.placeholder??``,onCommit:e=>j(i,{placeholder:e}),disabled:n}),(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1`,children:[(0,X.jsx)(K,{label:o(`engine.inspector.action.paramRequired`),value:!!e.required,onCommit:e=>j(i,{required:e}),disabled:n}),(0,X.jsx)(K,{label:o(`engine.inspector.action.paramPrefill`),value:!!e.defaultFromRow,onCommit:e=>j(i,{defaultFromRow:e}),disabled:n})]})]},i)),!n&&(0,X.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t({params:ss(d,{})}),children:[(0,X.jsx)(H,{className:`mr-1 h-3.5 w-3.5`}),` `,o(`engine.inspector.action.addInput`)]})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.placement`),hint:o(`engine.inspector.action.placementHint`)}),(0,X.jsx)(`div`,{className:`grid grid-cols-1 gap-1`,children:HC.filter(e=>!(m&&e.value===qC)).map(e=>(0,X.jsx)(K,{label:o(e.labelKey),value:f.includes(e.value),onCommit:t=>M(e.value,t),disabled:n},e.value))}),f.length===0&&(0,X.jsx)(`div`,{className:`text-[11px] text-destructive`,children:o(`engine.inspector.action.noPlacement`)}),y.length>0&&(0,X.jsxs)(`div`,{className:`text-[11px] text-amber-700`,"data-testid":`action-capability-gate-note`,children:[jC(o(`engine.inspector.action.capabilityGate`),{capabilities:(0,X.jsx)(`span`,{className:`font-mono`,children:y.join(` + `)}),whom:o(y.length>1?`engine.inspector.action.capabilityGateAll`:`engine.inspector.action.capabilityGateOne`)}),x.length>0&&(0,X.jsxs)(X.Fragment,{children:[` `,(0,X.jsx)(`span`,{"data-testid":`action-capability-gate-self`,children:jC(o(`engine.inspector.action.capabilityGateSelf`),{capabilities:(0,X.jsx)(`span`,{className:`font-mono`,children:x.join(` + `)})})})]})]}),(0,X.jsx)(`div`,{className:`grid grid-cols-2 gap-2 pt-1`,children:(0,X.jsx)(q,{label:o(`engine.inspector.action.component`),value:s(`component`)||void 0,options:AC(PC,r),onCommit:e=>t({component:e}),disabled:n})})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.feedback`),hint:o(`engine.inspector.action.feedbackHint`)}),(0,X.jsx)(J,{label:o(`engine.inspector.action.confirmText`),value:QC(e.confirmText),onCommit:e=>t({confirmText:e}),placeholder:o(`engine.inspector.action.confirmTextPlaceholder`),disabled:n}),(0,X.jsx)(J,{label:o(`engine.inspector.action.successMessage`),value:QC(e.successMessage),onCommit:e=>t({successMessage:e}),disabled:n}),(0,X.jsx)(J,{label:o(`engine.inspector.action.errorMessage`),value:QC(e.errorMessage),onCommit:e=>t({errorMessage:e}),disabled:n}),(0,X.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:(0,X.jsx)(q,{label:o(`engine.inspector.action.mode`),value:s(`mode`)||void 0,options:AC(FC,r),onCommit:e=>t({mode:e}),disabled:n})}),(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1`,children:[(0,X.jsx)(K,{label:o(`engine.inspector.action.refreshAfter`),value:!!e.refreshAfter,onCommit:e=>t({refreshAfter:e}),disabled:n}),(0,X.jsx)(K,{label:o(`engine.inspector.action.undoable`),value:!!e.undoable,onCommit:e=>t({undoable:e}),disabled:n})]})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-3`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.conditions`),hint:o(`engine.inspector.action.conditionsHint`)}),(0,X.jsx)(no,{label:o(`engine.inspector.action.visibleWhen`),value:Do(e.visible),onCommit:n=>t({visible:Co(e.visible,n)}),objectName:l,disabled:n,scope:`record`,roots:To,onBlockingIssuesChange:e=>D(`visible`,e)}),(0,X.jsx)(no,{label:o(`engine.inspector.action.disabledWhen`),value:Do(e.disabled),onCommit:n=>t({disabled:Co(e.disabled,n)}),objectName:l,disabled:n,scope:`record`,roots:To,onBlockingIssuesChange:e=>D(`disabled`,e)})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.action.ai`),hint:o(`engine.inspector.action.aiHint`)}),(0,X.jsx)(K,{label:o(`engine.inspector.action.aiExposed`),value:S,onCommit:e=>t({aiExposed:e}),disabled:n}),S?(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.action.aiDescription`)}),(0,X.jsx)(Ye,{value:C,onChange:e=>t({aiDescription:e.target.value}),disabled:n,rows:3,placeholder:o(`engine.inspector.action.aiDescriptionPlaceholder`),className:`text-xs`}),C.length<40&&(0,X.jsx)(`div`,{className:`text-[11px] text-destructive`,children:o(`engine.inspector.action.aiDescriptionTooShort`)})]}):null]}),ee&&(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-1.5`,children:[(0,X.jsx)(ZC,{title:o(`engine.inspector.moreFields`),hint:o(`engine.inspector.action.moreFieldsHint`)}),(0,X.jsx)(jo,{schema:ee,value:e,hiddenFields:[...YC,...XC],readOnly:n,onChange:e=>t(e)})]})]})}var rw=[{value:`expression`,labelKey:`engine.inspector.hook.bodyLang.expression`},{value:`js`,labelKey:`engine.inspector.hook.bodyLang.js`}],iw=[`beforeInsert`,`afterInsert`,`beforeUpdate`,`afterUpdate`,`beforeDelete`,`afterDelete`,`beforeUpdateMany`,`afterUpdateMany`,`beforeDeleteMany`,`afterDeleteMany`],aw=[`beforeFind`,`afterFind`,`beforeFindOne`,`afterFindOne`,`beforeCount`,`afterCount`,`beforeAggregate`,`afterAggregate`],ow=`*`,sw=[`name`,`label`,`object`,`events`,`body`,`priority`,`async`,`condition`];function cw({title:e,hint:t}){return(0,X.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:e}),t&&(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:t})]})}function lw(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`object`){let t=e;return t.en??t[`en-US`]??Object.values(t)[0]??``}return String(e)}function uw(e){if(e===ow)return{all:!0,names:[]};if(typeof e==`string`)return{all:!1,names:e?[e]:[]};if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`&&e!==ow);return{all:e.includes(ow),names:t}}return{all:!1,names:[]}}function dw(e,t){return e?ow:t.length===1?t[0]:t}function fw({draft:e,onPatch:t,readOnly:n,locale:r,serverSchema:i,onBlockingIssuesChange:a}){let o=Y.useCallback(e=>W(e,r),[r]),s=t=>typeof e[t]==`string`?e[t]:``,c=e.body&&typeof e.body==`object`?e.body:{},l=Array.isArray(e.events)?e.events:[],{all:u,names:d}=uw(e.object),{options:f,loading:p,error:m}=Ef(),h=Uo({loading:p,error:m}),g=h.status===`loaded`,_=Y.useMemo(()=>{let e=new Set(f.map(e=>e.value)),t=W(`engine.form.notPublished`,r);return[...d.filter(t=>!e.has(t)).map(e=>({value:e,label:g?Ko(e,t,r):e})),...f]},[f,d,r,g]),v=h.status===`error`?h.message:void 0,y=e=>t({body:{...c,...e}}),b=(e,n)=>{t({object:dw(!1,n?[...new Set([...d,e])]:d.filter(t=>t!==e))})},x=(e,n)=>{t({events:n?[...new Set([...l,e])]:l.filter(t=>t!==e)})},S=s(`name`),[C,w]=Y.useState({hook:S,count:0}),T=Y.useCallback(e=>{w(t=>t.hook===S&&t.count===e?t:{hook:S,count:e})},[S]),E=C.hook===S?C.count:0,D=Y.useRef(a);Y.useEffect(()=>{D.current=a}),Y.useEffect(()=>{D.current?.(E)},[E]);let O=!u&&d.length===1?d[0]:void 0,k=typeof c.language==`string`?c.language:`expression`,A=i;return(0,X.jsxs)(Wo,{kindLabel:o(`engine.inspector.hook.kind`),title:String(lw(e.label)||e.name||o(`engine.inspector.hook.kind`)),onClose:()=>{},closeLabel:o(`engine.inspector.action.close`),hideClose:!0,children:[(0,X.jsx)(cw,{title:o(`engine.inspector.hook.basics`)}),(0,X.jsx)(J,{label:o(`engine.inspector.hook.label`),value:lw(e.label),onCommit:e=>t({label:e||void 0}),placeholder:o(`engine.inspector.hook.labelPlaceholder`),disabled:n}),(0,X.jsx)(J,{label:o(`engine.inspector.hook.name`),value:s(`name`),onCommit:e=>t({name:e}),placeholder:o(`engine.inspector.hook.namePlaceholder`),disabled:n,mono:!0,testId:`hook-name`}),(0,X.jsxs)(`div`,{className:`space-y-1.5`,"data-testid":`hook-object-picker`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.hook.objects`)}),(0,X.jsx)(K,{label:o(`engine.inspector.hook.allObjects`),value:u,onCommit:e=>t({object:e?ow:dw(!1,d)}),disabled:n}),!u&&(_.length>0||v===void 0)&&(0,X.jsx)(`div`,{className:`max-h-40 space-y-1 overflow-auto rounded-md border p-2`,children:_.length===0?(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:o(g?`engine.inspector.hook.noObjects`:`engine.form.loadingOptions`)}):_.map(e=>(0,X.jsx)(K,{label:e.label,value:d.includes(e.value),onCommit:t=>b(e.value,t),disabled:n},e.value))}),!u&&v!==void 0&&(0,X.jsxs)(`p`,{role:`status`,"data-testid":`hook-object-roster-failure`,className:`text-[11px] leading-snug text-amber-600 dark:text-amber-300`,children:[o(`engine.form.optionsLoadFailedTitle`),v?(0,X.jsxs)(X.Fragment,{children:[` `,(0,X.jsx)(`span`,{className:`break-words font-mono text-[10px] opacity-80`,children:v})]}):null]}),!u&&d.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] text-amber-600 dark:text-amber-400`,children:o(`engine.inspector.hook.pickObject`)})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-2`,children:[(0,X.jsx)(cw,{title:o(`engine.inspector.hook.events`),hint:o(`engine.inspector.hook.eventsHint`)}),(0,X.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground/80`,children:o(`engine.inspector.hook.eventsWrite`)}),(0,X.jsx)(`div`,{className:`grid grid-cols-2 gap-x-3 gap-y-1`,children:iw.map(e=>(0,X.jsx)(K,{label:e,value:l.includes(e),onCommit:t=>x(e,t),disabled:n},e))}),(0,X.jsx)(`div`,{className:`pt-1 text-[11px] font-medium text-muted-foreground/80`,children:o(`engine.inspector.hook.eventsQuery`)}),(0,X.jsx)(`div`,{className:`grid grid-cols-2 gap-x-3 gap-y-1`,children:aw.map(e=>(0,X.jsx)(K,{label:e,value:l.includes(e),onCommit:t=>x(e,t),disabled:n},e))}),l.length===0&&(0,X.jsx)(`p`,{className:`text-[11px] text-amber-600 dark:text-amber-400`,children:o(`engine.inspector.hook.pickEvent`)})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-3`,children:[(0,X.jsx)(cw,{title:o(`engine.inspector.hook.function`),hint:o(`engine.inspector.hook.functionHint`)}),(0,X.jsx)(q,{label:o(`engine.inspector.hook.language`),value:k,options:rw.map(e=>({value:e.value,label:o(e.labelKey)})),onCommit:e=>y({language:e}),disabled:n}),(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(I,{className:`text-xs text-muted-foreground`,children:o(`engine.inspector.hook.handlerBody`)}),(0,X.jsx)(Ye,{"data-testid":`hook-body-source`,value:typeof c.source==`string`?c.source:``,onChange:e=>y({source:e.target.value}),disabled:n,spellCheck:!1,rows:8,placeholder:k===`expression`?`record.amount >= 0`:`// (ctx) => { ... }
18
- return;`,className:`text-xs font-mono`}),(0,X.jsx)(`div`,{className:`text-[11px] text-muted-foreground/70`,children:o(k===`expression`?`engine.inspector.hook.bodyHint.expression`:`engine.inspector.hook.bodyHint.js`)})]})]}),(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-3`,children:[(0,X.jsx)(cw,{title:o(`engine.inspector.hook.options`)}),(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,X.jsx)(ts,{label:o(`engine.inspector.hook.priority`),value:typeof e.priority==`number`?e.priority:void 0,onCommit:e=>t({priority:e}),placeholder:`100`,disabled:n}),(0,X.jsx)(`div`,{className:`flex items-end pb-1.5`,children:(0,X.jsx)(K,{label:o(`engine.inspector.hook.async`),value:e.async===!0,onCommit:e=>t({async:e}),disabled:n})})]}),(0,X.jsx)(no,{label:o(`engine.inspector.hook.condition`),value:Do(e.condition),onCommit:n=>t({condition:Co(e.condition,n)}),objectName:O,disabled:n,scope:`record`,subjects:{context:ro},onBlockingIssuesChange:T})]}),A&&(0,X.jsxs)(`div`,{className:`border-t pt-3 space-y-1.5`,children:[(0,X.jsx)(cw,{title:o(`engine.inspector.moreFields`),hint:o(`engine.inspector.hook.moreFieldsHint`)}),(0,X.jsx)(jo,{schema:A,value:e,hiddenFields:sw,readOnly:n,onChange:e=>t(e)})]})]})}function pw(){Aa(`dashboard`,Oy),Na(`dashboard`,Ky),Aa(`flow`,yx),Aa(`app`,zx),Aa(`view`,Jx),Na(`view`,Yx),Aa(`page`,Gf),Na(`page`,rS),Na(`report`,$o),Aa(`object`,SS),Na(`object`,KS),Na(`dataset`,OC),Na(`action`,nw),Na(`hook`,fw)}qd(),Zd(),of(),wy(),pw();var mw=new Map;function hw(e,t){mw.set(e,t)}function gw(e){return mw.get(e)}function _w({name:e}){return(0,X.jsx)(At,{schema:{type:`object-view`,objectName:e}})}hw(`object`,_w);export{ds as C,ps as S,Ws as _,su as a,Ts as b,Zl as c,Ic as d,Sc as f,Gs as g,mc as h,Lu as i,El as l,Dc as m,zp as n,eu as o,xc as p,pf as r,tu as s,gw as t,Lc as u,Us as v,fs as x,Hs as y};