@objectstack/console 17.0.0 → 17.2.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 (235) hide show
  1. package/CHANGELOG.md +452 -0
  2. package/dist/.objectstack-injection.json +13 -0
  3. package/dist/.objectui-sha +1 -1
  4. package/dist/assets/AdapterProvider-gULVLpjV.js +3 -0
  5. package/dist/assets/AiPendingActionsPage-CyG11hX9.js +1 -0
  6. package/dist/assets/ApiConsolePage-DYuOp_W4.js +1 -0
  7. package/dist/assets/AppDocsIndex-BXkNskk1.js +1 -0
  8. package/dist/assets/AppManagementPage-BvSxDdA_.js +1 -0
  9. package/dist/assets/ApprovalsInboxPage-oep3a-Ek.js +1 -0
  10. package/dist/assets/AuditLogPage-BZZ6tzHu.js +1 -0
  11. package/dist/assets/ComponentNavView-Cq4wkNUa.js +1 -0
  12. package/dist/assets/DashboardView-C23ZCS2S.js +1 -0
  13. package/dist/assets/{DeveloperHubPage-DVKVm5k0.js → DeveloperHubPage-KEpKc45V.js} +1 -1
  14. package/dist/assets/DocPage-Y4rWCZ3E.js +1 -0
  15. package/dist/assets/{DocShell-C1VQpTIJ.js → DocShell-DMJHUgE5.js} +1 -1
  16. package/dist/assets/DocsIndex-Bb5OtPb3.js +1 -0
  17. package/dist/assets/DocsLayout-CoIVTMH_.js +1 -0
  18. package/dist/assets/DocsSlug-BARWHmXg.js +1 -0
  19. package/dist/assets/{ExpressionProvider-qmd0nVCn.js → ExpressionProvider-vGLngw8h.js} +1 -1
  20. package/dist/assets/FlowRunsPage-BeGa9_ge.js +1 -0
  21. package/dist/assets/{IntegrationsPage-Cq4mWRFh.js → IntegrationsPage-DTXA-Nne.js} +2 -2
  22. package/dist/assets/InterfaceListPage-BMvedZyV.js +1 -0
  23. package/dist/assets/{ManagedByBadge-DgsrLolr.js → ManagedByBadge-mKmG0hP7.js} +1 -1
  24. package/dist/assets/MarketplaceAccessDenied-BBMyNu2w.js +1 -0
  25. package/dist/assets/{MarketplaceInstalledPage-CRe2BiM2.js → MarketplaceInstalledPage-B4qrvb7w.js} +1 -1
  26. package/dist/assets/MarketplacePackagePage-BuVfVeBj.js +4 -0
  27. package/dist/assets/MarketplacePage-Cmltk5nG.js +1 -0
  28. package/dist/assets/{MetadataInspector-qQ85bFun.js → MetadataInspector-kVAu8vlh.js} +1 -1
  29. package/dist/assets/MetadataProvider-DyFZSNqq.js +1 -0
  30. package/dist/assets/{MonacoImpl-DStuouLX.js → MonacoImpl-Cu_-ISwm.js} +1 -1
  31. package/dist/assets/ObjectDataPage-BKHEYwXA.js +1 -0
  32. package/dist/assets/PageView-CTqS-VD9.js +1 -0
  33. package/dist/assets/ProfilePage-CBUxXn5a.js +1 -0
  34. package/dist/assets/PublicFormsPage-B8Dk8fky.js +1 -0
  35. package/dist/assets/RecordDetailView-BBNqsNy9.js +11 -0
  36. package/dist/assets/RecordFormPage-CeUmmc_n.js +1 -0
  37. package/dist/assets/ReportDefaultInspector-CRjDi2Er.js +3 -0
  38. package/dist/assets/ReportView-Cwi_Po4H.js +2 -0
  39. package/dist/assets/SearchResultsPage-Cg0oq2by.js +1 -0
  40. package/dist/assets/SettingsHub-B5_S9YgI.js +1 -0
  41. package/dist/assets/SettingsView-Csi1awf-.js +1 -0
  42. package/dist/assets/SystemHubPage-CnDri9oU.js +1 -0
  43. package/dist/assets/{abnfDiagram-N423BO3Z-Ck9FUrgJ.js → abnfDiagram-N423BO3Z-DfpQlDUF.js} +1 -1
  44. package/dist/assets/{architectureDiagram-T3A2C74G-DJbnVK1q.js → architectureDiagram-T3A2C74G-Ej_4n3NG.js} +1 -1
  45. package/dist/assets/{assistantBus-DNogw1P-.js → assistantBus-DNH-fDWN.js} +1 -1
  46. package/dist/assets/{blockDiagram-VBNYF7ZC-Qtci47Jq.js → blockDiagram-VBNYF7ZC-l_P_W7_Y.js} +1 -1
  47. package/dist/assets/{c4Diagram-5PPSVZJV-DC9Uk9FW.js → c4Diagram-5PPSVZJV-CE82HAlO.js} +1 -1
  48. package/dist/assets/channel-DowAYf9b.js +1 -0
  49. package/dist/assets/{chunk-2GRJ4B5K-C6KsYuNR.js → chunk-2GRJ4B5K-D1if-ThW.js} +1 -1
  50. package/dist/assets/chunk-3NCLNEKW-Z5ckM4mG.js +1 -0
  51. package/dist/assets/{chunk-4I5QYGJK-CPsvNPUx.js → chunk-4I5QYGJK-DlrWrdEa.js} +1 -1
  52. package/dist/assets/{chunk-5RXB4S5H-CU_v2umt.js → chunk-5RXB4S5H-JwFhdddt.js} +1 -1
  53. package/dist/assets/{chunk-6Q2QTUOP-C_q0JPmG.js → chunk-6Q2QTUOP-C2vvuHlO.js} +1 -1
  54. package/dist/assets/{chunk-7Z6QIM7H-jM3JGv9o.js → chunk-7Z6QIM7H-m6s_oalL.js} +1 -1
  55. package/dist/assets/{chunk-GF5L2VYU-Dp_0e4Vj.js → chunk-GF5L2VYU-Dgjjn2FR.js} +1 -1
  56. package/dist/assets/{chunk-I66GZJ75-CLtbCU_E.js → chunk-I66GZJ75-BsY3mBMx.js} +1 -1
  57. package/dist/assets/{chunk-J7OUQ5F2-C4uAdkrD.js → chunk-J7OUQ5F2-Cl4FNR_k.js} +1 -1
  58. package/dist/assets/{chunk-JQJVKLGR-BlTMFaN6.js → chunk-JQJVKLGR-BApWxqMA.js} +1 -1
  59. package/dist/assets/{chunk-KBJHAD2P-BJzwVqKy.js → chunk-KBJHAD2P-DI4-lUt-.js} +1 -1
  60. package/dist/assets/{chunk-NSK5VX7P-B7tNpEbR.js → chunk-NSK5VX7P-BBTxIP6Z.js} +1 -1
  61. package/dist/assets/{chunk-QR6OTTB3-B3mQWEI2.js → chunk-QR6OTTB3-DJcD7xr-.js} +1 -1
  62. package/dist/assets/{chunk-RYQCIY6F-B3DAS_Q-.js → chunk-RYQCIY6F-CnMsR_qh.js} +1 -1
  63. package/dist/assets/{chunk-UBXNYLIW-Cqb7MpFH.js → chunk-UBXNYLIW-B7z1tp3V.js} +1 -1
  64. package/dist/assets/{chunk-W5SLKNZC-DWOVkEVc.js → chunk-W5SLKNZC-BnMc5i0B.js} +1 -1
  65. package/dist/assets/{chunk-WRU74C26-DR5g8owc.js → chunk-WRU74C26-MrzCPX2E.js} +1 -1
  66. package/dist/assets/chunk-XXDRQBXY-NKBlW2Dm.js +1 -0
  67. package/dist/assets/classDiagram-JCYQIIEL-C4ADaKBz.js +1 -0
  68. package/dist/assets/classDiagram-v2-OCEON4UE-C4ADaKBz.js +1 -0
  69. package/dist/assets/{cose-bilkent-JH36ORCC-CcXrYRrs.js → cose-bilkent-JH36ORCC-XP-DnSP5.js} +1 -1
  70. package/dist/assets/{createDerive-C1PaRnFZ.js → createDerive-B3AGnDaY.js} +1 -1
  71. package/dist/assets/{cynefinDiagram-MW4NZA55-DuPIOMPB.js → cynefinDiagram-MW4NZA55-B8MvpqXe.js} +1 -1
  72. package/dist/assets/{dagre-VZM6K2ZE-CHbs07zF.js → dagre-VZM6K2ZE-B5E8-xuM.js} +1 -1
  73. package/dist/assets/{diagram-7IWD3JNH-sPS-Y-CP.js → diagram-7IWD3JNH-Xj62y5BF.js} +1 -1
  74. package/dist/assets/{diagram-B4RE2ZJO-C4Essr7L.js → diagram-B4RE2ZJO-mI-iOCGl.js} +1 -1
  75. package/dist/assets/{diagram-LBJQPF4R-CluEJ_Yg.js → diagram-LBJQPF4R-BMTSoZch.js} +1 -1
  76. package/dist/assets/{diagram-Q27KOJAE-D4lem9jQ.js → diagram-Q27KOJAE-B98Knrnh.js} +1 -1
  77. package/dist/assets/{diagram-UB23O5K3-Bfj6mHJD.js → diagram-UB23O5K3-bseKIzhv.js} +1 -1
  78. package/dist/assets/{dist-D3VfqzjO.js → dist-BK-OswHQ.js} +1 -1
  79. package/dist/assets/dist-Ck19TqqJ.js +5 -0
  80. package/dist/assets/{ebnfDiagram-BXEA7PRR-BKXyHLd_.js → ebnfDiagram-BXEA7PRR-Bgo10FP1.js} +1 -1
  81. package/dist/assets/{erDiagram-JOGREHBK-B6_uGYAF.js → erDiagram-JOGREHBK-BU4b8mUv.js} +1 -1
  82. package/dist/assets/flowDiagram-UKHOOZJN-BDHHPApJ.js +1 -0
  83. package/dist/assets/framework-BwfIhdyz.js +55 -0
  84. package/dist/assets/{ganttDiagram-PKOTCBZU-Cip5kKH4.js → ganttDiagram-PKOTCBZU-CrmKcYGt.js} +1 -1
  85. package/dist/assets/{getIcon-QmYxLBSb.js → getIcon-1ZXs1v-a.js} +1 -1
  86. package/dist/assets/{gitGraphDiagram-DS77QQ5N-CF75OjHf.js → gitGraphDiagram-DS77QQ5N-COu0mOui.js} +1 -1
  87. package/dist/assets/{highlighted-body-OFNGDK62-BPV_Giyg.js → highlighted-body-OFNGDK62-CnGKNo0r.js} +1 -1
  88. package/dist/assets/i18n-rra-09wp.js +9 -0
  89. package/dist/assets/index-BLepsDd_.js +19 -0
  90. package/dist/assets/index-D26gl3rg.css +2 -0
  91. package/dist/assets/{infoDiagram-6WML65LV-IbyJxsv4.js → infoDiagram-6WML65LV-BT0Q6MIs.js} +1 -1
  92. package/dist/assets/infrastructure-BCTDJsqi.js +3 -0
  93. package/dist/assets/{ishikawaDiagram-WSZJBQD7-D8FhFMwb.js → ishikawaDiagram-WSZJBQD7-kvPjMvBP.js} +1 -1
  94. package/dist/assets/{journeyDiagram-NVQOT4AX-C1y_DqRe.js → journeyDiagram-NVQOT4AX-DhXy7wxt.js} +1 -1
  95. package/dist/assets/{kanban-definition-27J2QSJJ-DIUOavva.js → kanban-definition-27J2QSJJ-CFDavpZY.js} +1 -1
  96. package/dist/assets/maplibre-gl-CrDadnl3.js +801 -0
  97. package/dist/assets/maplibre-gl-shared.mjs +2 -2
  98. package/dist/assets/maplibre-gl-worker.mjs +2 -2
  99. package/dist/assets/mermaid-GHXKKRXX-CR9PcY0X.js +1 -0
  100. package/dist/assets/{mermaid-parser.core-BbBeSajF.js → mermaid-parser.core-Dd2B8Ckv.js} +1 -1
  101. package/dist/assets/{mermaid.core-Dc9p2r4P.js → mermaid.core-BwiBFu_S.js} +2 -2
  102. package/dist/assets/metadata-admin-BE9_-F_f.js +25 -0
  103. package/dist/assets/{mindmap-definition-FAOFIHXS-TIsZfgu-.js → mindmap-definition-FAOFIHXS-ITGoV4nW.js} +1 -1
  104. package/dist/assets/{pegDiagram-VL7TDLO6-BrUvPfjL.js → pegDiagram-VL7TDLO6-BoRu9yvl.js} +1 -1
  105. package/dist/assets/{pieDiagram-7S7Q4E2Y-BNPIri0N.js → pieDiagram-7S7Q4E2Y-DVsM9krU.js} +1 -1
  106. package/dist/assets/plugin-calendar-BfY9ZunQ.js +1 -0
  107. package/dist/assets/plugin-charts-CmWL7Og-.js +7 -0
  108. package/dist/assets/plugin-chatbot-mxoQfkdx.js +120 -0
  109. package/dist/assets/plugin-dashboard-CzbAW1Rz.js +6 -0
  110. package/dist/assets/plugin-form-ItAwTFz-.js +1 -0
  111. package/dist/assets/plugin-gantt-DF5W5xkN.js +64 -0
  112. package/dist/assets/plugin-grid-B42Photo.js +9 -0
  113. package/dist/assets/plugin-kanban-Dh3HIJIm.js +1 -0
  114. package/dist/assets/plugin-map-C1wSLqlB.js +1 -0
  115. package/dist/assets/plugin-map-DSnsEFKn.css +1 -0
  116. package/dist/assets/{plugin-markdown-CbQeAjXv.js → plugin-markdown-DNllWgPM.js} +1 -1
  117. package/dist/assets/plugin-report-yfOfZPQg.js +59 -0
  118. package/dist/assets/plugin-timeline-BpuaaqBd.js +1 -0
  119. package/dist/assets/plugin-tree-BrXE50se.js +1 -0
  120. package/dist/assets/plugin-view-Jc0rkk7A.js +1 -0
  121. package/dist/assets/plugins-views-cOiN-mPq.js +4 -0
  122. package/dist/assets/{quadrantDiagram-CIZ2JOQS-BpL1Kl6d.js → quadrantDiagram-CIZ2JOQS-C4VzXHnp.js} +1 -1
  123. package/dist/assets/{railroadDiagram-AXF67PYL-CY1JovP6.js → railroadDiagram-AXF67PYL-DqZ3yKWv.js} +1 -1
  124. package/dist/assets/{requirementDiagram-LRYGKXZP-TRTGy9-6.js → requirementDiagram-LRYGKXZP-BeH0P3vD.js} +1 -1
  125. package/dist/assets/{runtime-metadata-persistence-DDZN-tZg.js → runtime-metadata-persistence-DTOJpVmd.js} +1 -1
  126. package/dist/assets/{sankeyDiagram-W5VNT64P-Hj-Un0bp.js → sankeyDiagram-W5VNT64P-Bu_tPh-A.js} +1 -1
  127. package/dist/assets/{sequenceDiagram-SI44F4Z6-iGYyf5AF.js → sequenceDiagram-SI44F4Z6-BWEuLn1a.js} +1 -1
  128. package/dist/assets/{skeletons-BWrJAbfN.js → skeletons-BwA1TSR2.js} +1 -1
  129. package/dist/assets/src-BLbFBP_B.js +1 -0
  130. package/dist/assets/{src-DwpgXgLE.js → src-CY2xhbXR.js} +1 -1
  131. package/dist/assets/{src-0qbDl74X.js → src-CvicUdp3.js} +1 -1
  132. package/dist/assets/src-DhAd4aY4.js +2 -0
  133. package/dist/assets/{stateDiagram-OKZ733FA-B-kn5M6g.js → stateDiagram-OKZ733FA-Cp7aDYsZ.js} +1 -1
  134. package/dist/assets/stateDiagram-v2-UEYNNEHI-DaTg8C5m.js +1 -0
  135. package/dist/assets/{swimlanes-SLNWSIFB-sV1QkjXA.js → swimlanes-SLNWSIFB-wrx1JN6o.js} +1 -1
  136. package/dist/assets/swimlanesDiagram-ULZ7WXOC-Bqz9GVuM.js +8 -0
  137. package/dist/assets/{timeline-definition-Z64GVDOM-DMClsS2j.js → timeline-definition-Z64GVDOM-BcUiJfLU.js} +1 -1
  138. package/dist/assets/ui-components-Dwq5utCl.js +42 -0
  139. package/dist/assets/ui-layout-DPFlQaQp.js +1 -0
  140. package/dist/assets/use-book-data-CZc8MJsb.js +1 -0
  141. package/dist/assets/useActionModal-DYiSBx1G.js +1 -0
  142. package/dist/assets/useOpenRecordList-DOZu_JZX.js +1 -0
  143. package/dist/assets/usePackageL10n-D91-102Q.js +1 -0
  144. package/dist/assets/{useSettingsLabel-Bl5L3RqQ.js → useSettingsLabel-CeZ36S4g.js} +1 -1
  145. package/dist/assets/{utils-L-_x2yPF.js → utils-CJ4UwXMF.js} +1 -1
  146. package/dist/assets/{vendor-charts-DAI87uet.js → vendor-charts-BEGSmcjR.js} +3 -3
  147. package/dist/assets/{vendor-dndkit-CQdzTF9d.js → vendor-dndkit-CkJ59XFL.js} +1 -1
  148. package/dist/assets/{vendor-i18n-DeMInx63.js → vendor-i18n-Cpia2wlg.js} +1 -1
  149. package/dist/assets/{vendor-icons-core-B25E_7o5.js → vendor-icons-core-Bi9GWsvI.js} +1 -1
  150. package/dist/assets/{vendor-markdown-DjBjpmKk.js → vendor-markdown-C_Ip9E_I.js} +2 -2
  151. package/dist/assets/vendor-objectstack-B1R3ym-9.js +264 -0
  152. package/dist/assets/{vendor-radix-D1dussIM.js → vendor-radix-DFmVRiEf.js} +1 -1
  153. package/dist/assets/{vendor-react-BgOXCBVK.js → vendor-react-CsWFRkED.js} +1 -1
  154. package/dist/assets/vendor-sentry-B2ojA7qm.js +501 -0
  155. package/dist/assets/vendor-ui-utils-BFw4cGI6.js +1 -0
  156. package/dist/assets/vendor-zod-r9lyeyrU.js +64 -0
  157. package/dist/assets/{vennDiagram-T6HMQDX7-CrP23lgd.js → vennDiagram-T6HMQDX7-BKJsL5fS.js} +1 -1
  158. package/dist/assets/{wardleyDiagram-T6FBY63Y-DSw6poZ6.js → wardleyDiagram-T6FBY63Y-CZ0aMbYX.js} +1 -1
  159. package/dist/assets/{xychartDiagram-ELKLHX3M-BVUFqBDL.js → xychartDiagram-ELKLHX3M-BpK2RmQ_.js} +1 -1
  160. package/dist/eager-closure.json +277 -0
  161. package/dist/index.html +56 -16
  162. package/package.json +1 -1
  163. package/dist/assets/AdapterProvider-BpWMSLQH.js +0 -3
  164. package/dist/assets/AiPendingActionsPage-DAJUEqyC.js +0 -1
  165. package/dist/assets/ApiConsolePage-CgXbOsFC.js +0 -1
  166. package/dist/assets/AppDocsIndex-BgaIthca.js +0 -1
  167. package/dist/assets/AppManagementPage-BvGPskyf.js +0 -1
  168. package/dist/assets/ApprovalsInboxPage-CxmrNrwP.js +0 -1
  169. package/dist/assets/AuditLogPage-JahfQFnX.js +0 -1
  170. package/dist/assets/ComponentNavView-DjiNAGys.js +0 -1
  171. package/dist/assets/CreateViewDialog-CUvjCA1o.js +0 -1
  172. package/dist/assets/DashboardView-Cr-Q-16_.js +0 -1
  173. package/dist/assets/FlowRunsPage-DL7MhL_U.js +0 -1
  174. package/dist/assets/InterfaceListPage-CfhSyYAw.js +0 -1
  175. package/dist/assets/MarketplaceAccessDenied-t8A0k9OX.js +0 -1
  176. package/dist/assets/MarketplacePackagePage-XSdk80Dd.js +0 -4
  177. package/dist/assets/MarketplacePage-CZjDbg5G.js +0 -1
  178. package/dist/assets/MetadataProvider-CnYsadFP.js +0 -1
  179. package/dist/assets/ObjectDataPage-D9kCSxvN.js +0 -1
  180. package/dist/assets/PageView-q1XSwpVo.js +0 -1
  181. package/dist/assets/ProfilePage-DeDhni58.js +0 -1
  182. package/dist/assets/PublicFormsPage-BX6YXY8w.js +0 -1
  183. package/dist/assets/RecordDetailView-DrVbrbaN.js +0 -9
  184. package/dist/assets/RecordFormPage-Bs9wX-M6.js +0 -1
  185. package/dist/assets/ReportDefaultInspector-BbbhDn34.js +0 -3
  186. package/dist/assets/ReportView-D_soBKL6.js +0 -2
  187. package/dist/assets/SearchResultsPage--Beqyte8.js +0 -1
  188. package/dist/assets/SettingsHub-BozLt7dt.js +0 -1
  189. package/dist/assets/SettingsView-CC3o9IGe.js +0 -1
  190. package/dist/assets/SystemHubPage-CBdrX4bx.js +0 -1
  191. package/dist/assets/channel-dlPH8oK4.js +0 -1
  192. package/dist/assets/chunk-3NCLNEKW-CHvXlKAW.js +0 -1
  193. package/dist/assets/chunk-XXDRQBXY-BLRqgrvV.js +0 -1
  194. package/dist/assets/classDiagram-JCYQIIEL-ghx-FrtR.js +0 -1
  195. package/dist/assets/classDiagram-v2-OCEON4UE-ghx-FrtR.js +0 -1
  196. package/dist/assets/componentRegistry-ByxoJqMW.js +0 -1
  197. package/dist/assets/data-adapter-yS4exRPT.js +0 -24
  198. package/dist/assets/flowDiagram-UKHOOZJN-6YBsanbO.js +0 -1
  199. package/dist/assets/framework-B8ndNKrd.js +0 -38
  200. package/dist/assets/i18n-DLOdKEiB.js +0 -9
  201. package/dist/assets/index-DaeqUnH6.js +0 -2
  202. package/dist/assets/index-gaeYmjTV.css +0 -2
  203. package/dist/assets/infrastructure-ChmEYj6c.js +0 -3
  204. package/dist/assets/maplibre-gl-DPzMTNDD.js +0 -801
  205. package/dist/assets/mermaid-GHXKKRXX-BrwYiPsC.js +0 -1
  206. package/dist/assets/metadata-admin-DqAvOmNf.js +0 -25
  207. package/dist/assets/plugin-calendar-CQVTjox_.js +0 -1
  208. package/dist/assets/plugin-charts-CBUIhVeW.js +0 -7
  209. package/dist/assets/plugin-chatbot-DsLGdfGx.js +0 -120
  210. package/dist/assets/plugin-dashboard-fdM1jm2j.js +0 -6
  211. package/dist/assets/plugin-form-Bv0Hi0E6.js +0 -1
  212. package/dist/assets/plugin-gantt-CRJpVrrP.js +0 -63
  213. package/dist/assets/plugin-grid-gHcTrjs3.js +0 -8
  214. package/dist/assets/plugin-kanban-CNm7DssD.js +0 -1
  215. package/dist/assets/plugin-map-5lRITB8H.css +0 -1
  216. package/dist/assets/plugin-map-TrYBEx8q.js +0 -1
  217. package/dist/assets/plugin-report-Bg1oh9SG.js +0 -59
  218. package/dist/assets/plugin-timeline-B30kCAGi.js +0 -1
  219. package/dist/assets/plugin-tree-Br5XanqO.js +0 -1
  220. package/dist/assets/plugin-view-CgDs-8T5.js +0 -1
  221. package/dist/assets/plugins-views-BxwTmeut.js +0 -4
  222. package/dist/assets/src-BBKXMp-o.js +0 -19
  223. package/dist/assets/src-CVuJHohL.js +0 -1
  224. package/dist/assets/src-leh_hyM1.js +0 -2
  225. package/dist/assets/stateDiagram-v2-UEYNNEHI-CHYANMPw.js +0 -1
  226. package/dist/assets/swimlanesDiagram-ULZ7WXOC-CBFvMN71.js +0 -8
  227. package/dist/assets/ui-components-mPgY5chB.js +0 -42
  228. package/dist/assets/ui-layout-CRcyxP_X.js +0 -1
  229. package/dist/assets/use-book-data-B2KPEJjv.js +0 -1
  230. package/dist/assets/useOpenRecordList-ovuRzPa2.js +0 -1
  231. package/dist/assets/usePackageL10n-9fP2GgDK.js +0 -1
  232. package/dist/assets/vendor-objectstack-DneBps14.js +0 -155
  233. package/dist/assets/vendor-sentry-DlmtNsBO.js +0 -501
  234. package/dist/assets/vendor-ui-utils-BGw4RtYu.js +0 -1
  235. package/dist/assets/vendor-zod-CBDIIwrA.js +0 -65
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{r as t,y as n}from"./vendor-react-BgOXCBVK.js";import{Bt as r,Cn as i,Er as a,Fr as ee,Gt as o,Ht as s,Ir as te,Ln as c,Nn as l,Sn as u,Tn as d,Tr as f,Ut as p,Vt as m,Wt as ne,_a as re,_n as ie,aa as h,ac as ae,bn as g,ei as _,gn as v,hn as oe,ht as se,ia as ce,jr as y,mt as le,pn as ue,qr as b,vn as x,vt as S,wn as C,xn as w,yn as T}from"./ui-components-mPgY5chB.js";var E=e(n(),1),D=t(),de=`${``.replace(/\/$/,``)}/api/v1`,fe=[`create`,`update`,`delete`,`restore`,`login`,`logout`,`permission_change`,`config_change`,`export`,`import`],O={create:`default`,update:`secondary`,delete:`destructive`,restore:`outline`,login:`outline`,logout:`outline`,permission_change:`secondary`,config_change:`secondary`,export:`outline`,import:`outline`},k=50;function A(e){if(!e)return`—`;try{return new Date(e).toLocaleString()}catch{return e}}function j(e,t=24){return e?e.length>t?`${e.slice(0,t-1)}…`:e:`—`}function M(e){if(!e)return``;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function N(){let[e,t]=(0,E.useState)([]),[n,N]=(0,E.useState)(!1),[P,F]=(0,E.useState)(null),[I,L]=(0,E.useState)(`all`),[R,z]=(0,E.useState)(``),[B,V]=(0,E.useState)(``),[H,U]=(0,E.useState)(``),[W,G]=(0,E.useState)(``),[K,q]=(0,E.useState)(0),[J,Y]=(0,E.useState)(!1),[X,Z]=(0,E.useState)(null),Q=(0,E.useCallback)(async()=>{N(!0),F(null);try{let e={};I&&I!==`all`&&(e.action=I),R.trim()&&(e.object_name=R.trim()),B.trim()&&(e.user_id=B.trim()),H&&(e.created_at={...e.created_at||{},$gte:H}),W&&(e.created_at={...e.created_at||{},$lte:`${W}T23:59:59`});let n=new URLSearchParams;Object.keys(e).length>0&&n.set(`$filter`,JSON.stringify(e)),n.set(`$orderby`,`created_at desc`),n.set(`$top`,`51`),n.set(`$skip`,String(K*k));let r=await fetch(`${de}/data/sys_audit_log?${n.toString()}`,{credentials:`include`});if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`HTTP ${r.status}: ${e.slice(0,200)||r.statusText}`)}let i=await r.json(),a=Array.isArray(i)?i:Array.isArray(i?.records)?i.records:Array.isArray(i?.data)?i.data:[];Y(a.length>k),t(a.slice(0,k))}catch(e){console.warn(`[AuditLogPage] load failed:`,e),F(e?.message||`Failed to load audit log`),t([]),Y(!1)}finally{N(!1)}},[I,R,B,H,W,K]);(0,E.useEffect)(()=>{Q()},[Q]);let pe=(0,E.useCallback)(()=>{L(`all`),z(``),V(``),U(``),G(``),q(0)},[]),$=(0,E.useMemo)(()=>{let e=0;return I!==`all`&&(e+=1),R.trim()&&(e+=1),B.trim()&&(e+=1),H&&(e+=1),W&&(e+=1),e},[I,R,B,H,W]);return(0,D.jsxs)(`div`,{className:`p-6 space-y-4 max-w-screen-2xl mx-auto`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsx)(h,{className:`h-6 w-6 text-muted-foreground`}),(0,D.jsxs)(`div`,{className:`flex-1`,children:[(0,D.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Audit Log`}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Read-only system activity and record changes. Newest first.`})]}),(0,D.jsxs)(b,{variant:`outline`,size:`sm`,onClick:Q,disabled:n,children:[(0,D.jsx)(re,{className:`h-4 w-4 mr-1 ${n?`animate-spin`:``}`}),`Refresh`]})]}),(0,D.jsx)(f,{children:(0,D.jsxs)(a,{className:`p-4 grid grid-cols-1 md:grid-cols-5 gap-3`,children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`Action`}),(0,D.jsxs)(w,{value:I,onValueChange:e=>{L(e),q(0)},children:[(0,D.jsx)(C,{className:`h-9`,children:(0,D.jsx)(d,{})}),(0,D.jsxs)(u,{children:[(0,D.jsx)(i,{value:`all`,children:`All actions`}),fe.map(e=>(0,D.jsx)(i,{value:e,children:e},e))]})]})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`Object`}),(0,D.jsx)(l,{placeholder:`e.g. account`,value:R,onChange:e=>{z(e.target.value),q(0)},className:`h-9`})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`Actor (user id)`}),(0,D.jsx)(l,{placeholder:`user id`,value:B,onChange:e=>{V(e.target.value),q(0)},className:`h-9`})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`From`}),(0,D.jsx)(l,{type:`date`,value:H,onChange:e=>{U(e.target.value),q(0)},className:`h-9`})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`To`}),(0,D.jsx)(l,{type:`date`,value:W,onChange:e=>{G(e.target.value),q(0)},className:`h-9`})]}),$>0&&(0,D.jsx)(`div`,{className:`md:col-span-5 flex justify-end`,children:(0,D.jsxs)(b,{variant:`ghost`,size:`sm`,onClick:pe,children:[(0,D.jsx)(_,{className:`h-4 w-4 mr-1`}),`Clear filters (`,$,`)`]})})]})}),P&&(0,D.jsxs)(ee,{variant:`destructive`,children:[(0,D.jsx)(ae,{className:`h-4 w-4`}),(0,D.jsx)(te,{children:P})]}),(0,D.jsx)(f,{children:(0,D.jsx)(a,{className:`p-0`,children:n&&e.length===0?(0,D.jsx)(`div`,{className:`p-6 space-y-2`,children:Array.from({length:6}).map((e,t)=>(0,D.jsx)(ue,{className:`h-9 w-full`},t))}):e.length===0?(0,D.jsx)(`div`,{className:`p-12`,children:(0,D.jsxs)(le,{children:[(0,D.jsx)(ce,{className:`h-8 w-8 text-muted-foreground mb-3`}),(0,D.jsx)(S,{children:`No audit entries`}),(0,D.jsx)(se,{children:$>0?`Try clearing filters or widening the date range.`:`Events will appear here once tracked objects are modified.`})]})}):(0,D.jsxs)(r,{children:[(0,D.jsx)(ne,{children:(0,D.jsxs)(o,{children:[(0,D.jsx)(p,{className:`w-[180px]`,children:`Timestamp`}),(0,D.jsx)(p,{className:`w-[130px]`,children:`Action`}),(0,D.jsx)(p,{children:`Object`}),(0,D.jsx)(p,{children:`Record`}),(0,D.jsx)(p,{children:`Actor`}),(0,D.jsx)(p,{className:`w-[130px]`,children:`IP`})]})}),(0,D.jsx)(m,{children:e.map(e=>{let t=O[e.action||``]||`outline`;return(0,D.jsxs)(o,{className:`cursor-pointer`,onClick:()=>Z(e),children:[(0,D.jsx)(s,{className:`font-mono text-xs`,children:A(e.created_at)}),(0,D.jsx)(s,{children:(0,D.jsx)(y,{variant:t,children:e.action||`—`})}),(0,D.jsx)(s,{children:e.object_name||`—`}),(0,D.jsx)(s,{className:`font-mono text-xs`,children:j(e.record_id,18)}),(0,D.jsx)(s,{className:`font-mono text-xs`,children:j(e.user_id,18)}),(0,D.jsx)(s,{className:`font-mono text-xs`,children:e.ip_address||`—`})]},e.id)})})]})})}),(e.length>0||K>0)&&(0,D.jsxs)(`div`,{className:`flex items-center justify-between text-sm text-muted-foreground`,children:[(0,D.jsxs)(`span`,{children:[`Page `,K+1,J?``:` · end`]}),(0,D.jsxs)(`div`,{className:`flex gap-2`,children:[(0,D.jsx)(b,{variant:`outline`,size:`sm`,disabled:K===0||n,onClick:()=>q(e=>Math.max(0,e-1)),children:`Previous`}),(0,D.jsx)(b,{variant:`outline`,size:`sm`,disabled:!J||n,onClick:()=>q(e=>e+1),children:`Next`})]})]}),(0,D.jsx)(oe,{open:!!X,onOpenChange:e=>!e&&Z(null),children:(0,D.jsxs)(v,{side:`right`,className:`sm:max-w-2xl w-full overflow-y-auto`,children:[(0,D.jsxs)(x,{children:[(0,D.jsxs)(T,{className:`flex items-center gap-2`,children:[(0,D.jsx)(y,{variant:X&&O[X.action||``]||`outline`,children:X?.action||`—`}),X?.object_name||`Audit Event`]}),(0,D.jsx)(ie,{children:X?.id?(0,D.jsx)(`span`,{className:`font-mono text-xs`,children:X.id}):null})]}),X&&(0,D.jsxs)(`div`,{className:`mt-6 space-y-5`,children:[(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-sm`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Timestamp`}),(0,D.jsx)(`div`,{className:`font-mono`,children:A(X.created_at)})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`IP Address`}),(0,D.jsx)(`div`,{className:`font-mono`,children:X.ip_address||`—`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Actor (user_id)`}),(0,D.jsx)(`div`,{className:`font-mono break-all`,children:X.user_id||`—`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Tenant`}),(0,D.jsx)(`div`,{className:`font-mono break-all`,children:X.tenant_id||`—`})]}),(0,D.jsxs)(`div`,{className:`col-span-2`,children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Target record`}),(0,D.jsxs)(`div`,{className:`font-mono text-sm break-all`,children:[X.object_name||`—`,` / `,X.record_id||`—`]})]}),X.user_agent&&(0,D.jsxs)(`div`,{className:`col-span-2`,children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`User Agent`}),(0,D.jsx)(`div`,{className:`font-mono text-xs break-all`,children:X.user_agent})]})]}),(X.old_value||X.new_value)&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(g,{}),(0,D.jsxs)(`div`,{className:`space-y-3`,children:[(0,D.jsx)(`div`,{className:`text-sm font-medium`,children:`Change payload`}),X.old_value&&(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`Before`}),(0,D.jsx)(`pre`,{className:`rounded-md bg-muted p-3 text-xs font-mono whitespace-pre-wrap max-h-64 overflow-auto`,children:M(X.old_value)})]}),X.new_value&&(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`After`}),(0,D.jsx)(`pre`,{className:`rounded-md bg-muted p-3 text-xs font-mono whitespace-pre-wrap max-h-64 overflow-auto`,children:M(X.new_value)})]})]})]}),X.metadata&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(g,{}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-sm font-medium mb-2`,children:`Metadata`}),(0,D.jsx)(`pre`,{className:`rounded-md bg-muted p-3 text-xs font-mono whitespace-pre-wrap max-h-48 overflow-auto`,children:M(X.metadata)})]})]})]})]})})]})}export{N as AuditLogPage};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{h as e,m as t,r as n,y as r}from"./vendor-react-BgOXCBVK.js";import{ht as i,mt as a,vt as o}from"./ui-components-mPgY5chB.js";import{t as s}from"./componentRegistry-ByxoJqMW.js";r();var c=n();function l({extraProps:n}={}){let r=t(),[l]=e(),u=r.ns,d=r.name,f=u&&d?`${u}:${d}`:u??``,p=s(f);if(!p)return(0,c.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,c.jsxs)(a,{children:[(0,c.jsx)(o,{children:`Component not registered`}),(0,c.jsxs)(i,{children:[`No component is registered for `,(0,c.jsx)(`code`,{className:`font-mono`,children:f||`(empty)`}),`. Ensure the plugin that provides this surface is installed and has called`,(0,c.jsx)(`code`,{className:`font-mono`,children:` registerAppComponent()`}),`.`]})]})});let m={};for(let[e,t]of l.entries())m[e]=t;let h=p.component;return(0,c.jsx)(h,{...m,...n??{}})}export{l as ComponentNavView,l as default};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{r as t,y as n}from"./vendor-react-BgOXCBVK.js";import{T as r}from"./framework-B8ndNKrd.js";import{Eo as i,Nn as a,Ro as o,Sc as s,Ui as c,Vi as l,Vs as u,_r as ee,ac as d,br as f,do as p,el as m,gr as h,hr as g,qr as _,vr as v,wc as y,yo as b,yr as x}from"./ui-components-mPgY5chB.js";import{n as S}from"./createDerive-C1PaRnFZ.js";import{a as C,i as w,n as T,o as E,r as D,s as te,t as O}from"./plugin-view-CgDs-8T5.js";var k=e(n(),1),A=t();function j({title:e,description:t,icon:n,actions:r,accentColor:i,sticky:a=!1,className:o,"data-testid":s}){return(0,A.jsxs)(`div`,{style:{"--page-header-accent":i||`hsl(var(--primary))`},className:m(`relative shrink-0 border-b bg-background z-10`,a&&`sticky top-0 bg-background/85 backdrop-blur supports-[backdrop-filter]:bg-background/75`,o),"data-testid":s??`page-header`,children:[(0,A.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-x-0 top-0 h-[2px] opacity-80`,style:{background:`linear-gradient(90deg, transparent, var(--page-header-accent), transparent)`}}),(0,A.jsxs)(`div`,{className:`flex justify-between items-center gap-3 py-2.5 sm:py-3 px-4 sm:px-6`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[n&&(0,A.jsx)(`div`,{className:m(`shrink-0 inline-flex items-center justify-center rounded-lg`,`h-9 w-9 sm:h-10 sm:w-10`,`[&_svg]:h-[18px] [&_svg]:w-[18px] sm:[&_svg]:h-5 sm:[&_svg]:w-5`),style:{color:`var(--page-header-accent)`,background:`linear-gradient(135deg, color-mix(in srgb, var(--page-header-accent) 18%, transparent), color-mix(in srgb, var(--page-header-accent) 6%, transparent))`,boxShadow:`inset 0 0 0 1px color-mix(in srgb, var(--page-header-accent) 22%, transparent)`},children:n}),(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsx)(`h1`,{className:`text-base sm:text-lg lg:text-xl font-semibold tracking-tight text-foreground truncate leading-tight`,children:e}),t&&(0,A.jsx)(`p`,{className:`text-xs sm:text-sm text-muted-foreground truncate hidden sm:block max-w-xl mt-0.5`,children:t})]})]}),r&&(0,A.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0`,children:r})]})]})}function M(e){return[{type:`grid`,icon:i,label:e(`console.objectView.viewTypeGrid`),description:e(`console.objectView.viewTypeGridDesc`)},{type:`kanban`,icon:l,label:e(`console.objectView.viewTypeKanban`),description:e(`console.objectView.viewTypeKanbanDesc`)},{type:`calendar`,icon:y,label:e(`console.objectView.viewTypeCalendar`),description:e(`console.objectView.viewTypeCalendarDesc`)},{type:`gallery`,icon:o,label:e(`console.objectView.viewTypeGallery`),description:e(`console.objectView.viewTypeGalleryDesc`)},{type:`timeline`,icon:u,label:e(`console.objectView.viewTypeTimeline`),description:e(`console.objectView.viewTypeTimelineDesc`)},{type:`gantt`,icon:c,label:e(`console.objectView.viewTypeGantt`),description:e(`console.objectView.viewTypeGanttDesc`)},{type:`map`,icon:p,label:e(`console.objectView.viewTypeMap`),description:e(`console.objectView.viewTypeMapDesc`)},{type:`chart`,icon:s,label:e(`console.objectView.viewTypeChart`),description:e(`console.objectView.viewTypeChartDesc`)},{type:`tree`,icon:b,label:e(`console.objectView.viewTypeTree`),description:e(`console.objectView.viewTypeTreeDesc`)}]}function N(e,t){for(let n=1;n<1e3;n++){let r=`${e} ${n}`;if(!t.has(r))return r}return e}var P={kanban:[{key:`groupByField`,i18nKey:`console.objectView.groupByField`,helpI18nKey:`console.objectView.groupByFieldHelp`,filter:e=>e.type===`select`||e.type===`boolean`,preferred:T}],calendar:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.startDateFieldHelp`,filter:e=>e.type===`date`,preferred:D},{key:`titleField`,i18nKey:`console.objectView.titleField`,helpI18nKey:`console.objectView.titleFieldHelp`,filter:e=>e.type===`text`}],timeline:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.timelineDateFieldHelp`,filter:e=>e.type===`date`,preferred:D},{key:`titleField`,i18nKey:`console.objectView.titleField`,helpI18nKey:`console.objectView.titleFieldHelp`,filter:e=>e.type===`text`}],gantt:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.ganttStartDateFieldHelp`,filter:e=>e.type===`date`,preferred:D},{key:`endDateField`,i18nKey:`console.objectView.endDateField`,helpI18nKey:`console.objectView.ganttEndDateFieldHelp`,filter:e=>e.type===`date`,preferred:O},{key:`titleField`,i18nKey:`console.objectView.titleField`,helpI18nKey:`console.objectView.titleFieldHelp`,filter:e=>e.type===`text`}],gallery:[{key:`coverField`,i18nKey:`console.objectView.imageField`,helpI18nKey:`console.objectView.imageFieldHelp`,filter:e=>E(e)}],map:[{key:`latitudeField`,i18nKey:`console.objectView.latitudeField`,helpI18nKey:`console.objectView.latitudeFieldHelp`,filter:e=>e.type===`number`&&C(e,`latitude`)},{key:`longitudeField`,i18nKey:`console.objectView.longitudeField`,helpI18nKey:`console.objectView.longitudeFieldHelp`,filter:e=>e.type===`number`&&C(e,`longitude`)}],chart:[{key:`chartType`,i18nKey:`console.objectView.chartType`,helpI18nKey:`console.objectView.chartTypeHelp`,kind:`enum`,enumOptions:[{value:`bar`,i18nKey:`console.objectView.chartTypeBar`},{value:`line`,i18nKey:`console.objectView.chartTypeLine`},{value:`pie`,i18nKey:`console.objectView.chartTypePie`},{value:`area`,i18nKey:`console.objectView.chartTypeArea`},{value:`scatter`,i18nKey:`console.objectView.chartTypeScatter`}],defaultValue:`bar`},{key:`xAxisField`,i18nKey:`console.objectView.xAxisField`,helpI18nKey:`console.objectView.xAxisFieldHelp`,filter:e=>e.type===`select`||e.type===`boolean`||e.type===`date`||e.type===`text`,preferred:T},{key:`yAxisFields`,i18nKey:`console.objectView.yAxisField`,helpI18nKey:`console.objectView.yAxisFieldHelp`,filter:e=>e.type===`number`}],tree:[{key:`parentField`,i18nKey:`console.objectView.parentField`,helpI18nKey:`console.objectView.parentFieldHelp`,filter:e=>e.rawType===`tree`||e.rawType===`lookup`||e.rawType===`master_detail`}]};function F({open:e,onOpenChange:t,onCreate:n,existingLabels:i,availableTypes:o,objectDef:s}){let{t:c}=r(),l=(0,k.useMemo)(()=>M(c),[c]),u=(0,k.useMemo)(()=>o&&o.length>0?l.filter(e=>o.includes(e.type)):l,[l,o]),p=(i??[]).join(`\0`),y=(0,k.useMemo)(()=>new Set(i??[]),[p]),b=(0,k.useMemo)(()=>s?w(s):[],[s]),[C,T]=(0,k.useState)(u[0]?.type??`grid`),[E,D]=(0,k.useState)(``),[O,j]=(0,k.useState)(!1),[F,I]=(0,k.useState)(``),[L,R]=(0,k.useState)(!1),[ne,z]=(0,k.useState)({});(0,k.useEffect)(()=>{e&&(T(u[0]?.type??`grid`),j(!1),R(!1),z({}))},[e,u]),(0,k.useEffect)(()=>{if(!O){let e=u.find(e=>e.type===C);D(N(e?.label??`View`,y))}},[C,O,u,y]),(0,k.useEffect)(()=>{L||I(S(E))},[E,L]);let B=P[C]??[],V=e=>e.kind===`enum`?(e.enumOptions?.length??0)>0:!s||(e.filter?b.filter(e.filter):b).length>0,H=(0,k.useMemo)(()=>{let e={};return u.forEach(t=>{let n=(P[t.type]??[]).find(e=>!V(e));e[t.type]=n??null}),e},[u,b,s]),U=e=>ne[`${C}.${e}`]??``,W=(e,t)=>z(n=>({...n,[`${C}.${e}`]:t})),G=E.trim(),K=G.length>0&&y.has(G),q=B.every(e=>U(e.key).length>0),J=/^[a-z_][a-z0-9_]*$/,Y=F.trim(),X=Y.length===0,Z=Y.length>0&&!J.test(Y),Q=G.length>0&&!K&&q&&!X&&!Z;(0,k.useEffect)(()=>{B.length!==0&&B.forEach(e=>{if(U(e.key).length>0)return;if(e.kind===`enum`){e.defaultValue&&W(e.key,e.defaultValue);return}let t=e.filter?b.filter(e.filter):b;if(t.length===0)return;if(t.length===1){W(e.key,t[0].value);return}let n=te(t,e.preferred??[]);n&&W(e.key,n)})},[C,b]);let $=()=>{if(!Q)return;let e={};B.forEach(t=>{let n=U(t.key);n&&(e[t.key]=t.key===`yAxisFields`?[n]:n)});let r={type:C,label:G,name:Y};Object.keys(e).length>0&&(r[C]=e),n(r),t(!1)};return(0,A.jsx)(g,{open:e,onOpenChange:t,children:(0,A.jsxs)(h,{className:`sm:max-w-[560px]`,"data-testid":`create-view-dialog`,children:[(0,A.jsxs)(x,{children:[(0,A.jsx)(f,{children:c(`console.objectView.createView`)}),(0,A.jsx)(ee,{children:c(`console.objectView.createViewDesc`)})]}),(0,A.jsx)(`div`,{className:`grid grid-cols-4 gap-2 py-2`,"data-testid":`create-view-type-grid`,children:u.map(({type:e,label:t,description:n,icon:r})=>{let i=e===C,a=H[e],o=!!a,s=o?c(`console.objectView.viewTypeUnavailable`,{field:c(a.i18nKey)}):void 0;return(0,A.jsxs)(`button`,{type:`button`,"data-testid":`create-view-type-${e}`,"aria-pressed":i,"aria-disabled":o,disabled:o,title:s,onClick:()=>{o||T(e)},className:m(`group flex flex-col items-start gap-1 rounded-lg border bg-background p-3 text-left transition-colors`,!o&&`hover:border-primary/60 hover:bg-accent/40`,i&&!o?`border-primary ring-2 ring-primary/30 bg-accent/40`:`border-border`,o&&`opacity-50 cursor-not-allowed`),children:[(0,A.jsx)(r,{className:m(`h-5 w-5`,i&&!o?`text-primary`:`text-muted-foreground group-hover:text-foreground`)}),(0,A.jsx)(`div`,{className:`text-xs font-medium leading-tight`,children:t}),(0,A.jsx)(`div`,{className:`text-[10px] leading-tight text-muted-foreground line-clamp-2`,children:o?c(`console.objectView.viewTypeUnavailableShort`):n})]},e)})}),B.length>0&&(0,A.jsx)(`div`,{className:`space-y-3 rounded-md border border-dashed bg-muted/30 p-3`,"data-testid":`create-view-required-fields`,children:B.map(e=>{let t=U(e.key),n=e.kind===`enum`,r=n?[]:e.filter?b.filter(e.filter):b,i=!n&&b.length>0&&r.length===0;return(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`label`,{htmlFor:`create-view-required-${e.key}`,className:`text-xs font-medium`,children:[c(e.i18nKey),(0,A.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,A.jsxs)(`select`,{id:`create-view-required-${e.key}`,"aria-required":`true`,"data-testid":`create-view-required-${e.key}`,value:t,onChange:t=>W(e.key,t.target.value),disabled:i,className:m(`h-9 w-full rounded-md border bg-background px-2 text-xs`,`border-input`),children:[(0,A.jsx)(`option`,{value:``,children:c(n?`console.objectView.selectOption`:`console.objectView.selectField`)}),n?e.enumOptions.map(e=>(0,A.jsx)(`option`,{value:e.value,children:c(e.i18nKey)},e.value)):r.map(e=>(0,A.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),e.helpI18nKey&&!i&&(0,A.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:c(e.helpI18nKey)}),i&&(0,A.jsxs)(`p`,{className:`flex items-center gap-1 text-[11px] text-destructive`,"data-testid":`create-view-error-no-field-${e.key}`,children:[(0,A.jsx)(d,{className:`h-3 w-3`}),c(`console.objectView.noEligibleFieldForType`)]})]},e.key)})}),(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`label`,{htmlFor:`create-view-name-input`,className:`text-xs font-medium`,children:[c(`console.objectView.title`),(0,A.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,A.jsx)(a,{id:`create-view-name-input`,"aria-required":`true`,"data-testid":`create-view-name-input`,autoFocus:!0,value:E,onChange:e=>{D(e.target.value),j(!0)},onKeyDown:e=>{e.key===`Enter`&&Q&&$()},placeholder:c(`console.objectView.newView`),className:`h-9`}),K&&(0,A.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-duplicate`,children:c(`console.objectView.duplicateViewName`)})]}),(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`label`,{htmlFor:`create-view-machine-name-input`,className:`text-xs font-medium`,children:[c(`console.objectView.viewName`),(0,A.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,A.jsx)(a,{id:`create-view-machine-name-input`,"aria-required":`true`,"data-testid":`create-view-machine-name-input`,value:F,onChange:e=>{I(e.target.value),R(!0)},onKeyDown:e=>{e.key===`Enter`&&Q&&$()},placeholder:`grid_1`,className:`h-9 font-mono`}),X?(0,A.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:c(`console.objectView.viewNameRequired`)}):Z?(0,A.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-machine-name`,children:c(`console.objectView.viewNameInvalid`)}):(0,A.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:c(`console.objectView.viewNameHelp`)})]}),(0,A.jsxs)(v,{className:`mt-2`,children:[(0,A.jsx)(_,{type:`button`,variant:`outline`,onClick:()=>t(!1),"data-testid":`create-view-cancel`,children:c(`console.objectView.cancel`)}),(0,A.jsx)(_,{type:`button`,disabled:!Q,onClick:$,"data-testid":`create-view-submit`,children:c(`console.objectView.create`)})]})]})})}export{j as n,F as t};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{m as n,r,y as i}from"./vendor-react-BgOXCBVK.js";import{Q as a,R as o,T as s,Z as c,y as l}from"./framework-B8ndNKrd.js";import{Do as u,_r as d,br as f,gr as p,hr as m,ht as h,mt as g,qr as _,vr as v,vt as y,yr as b}from"./ui-components-mPgY5chB.js";import{r as x}from"./vendor-ui-utils-BGw4RtYu.js";import"./AdapterProvider-BpWMSLQH.js";import{n as S}from"./plugin-form-Bv0Hi0E6.js";import"./MetadataProvider-CnYsadFP.js";import{r as C}from"./ExpressionProvider-qmd0nVCn.js";import{t as w}from"./utils-L-_x2yPF.js";import{t as T}from"./preferLocal-CKqyhTP9.js";import{n as E,t as D}from"./MetadataInspector-qQ85bFun.js";import{n as O}from"./skeletons-BWrJAbfN.js";import{n as k}from"./plugin-dashboard-fdM1jm2j.js";import{t as A}from"./useOpenRecordList-ovuRzPa2.js";var j=t({DashboardView:()=>P}),M=e(i(),1),N=r();function P({dataSource:e}){let t=A(),{dashboardName:r}=n(),{showDebug:i}=E(),j=c(),{t:P}=s(),{dashboardLabel:F,dashboardDescription:I}=l(),[L,R]=(0,M.useState)(!0),[z,B]=(0,M.useState)(null),V=(0,M.useCallback)(e=>{B(t=>(t&&t.resolve(e),null))},[]),H=(0,M.useCallback)(e=>new Promise(t=>{let n;if(typeof e==`string`){let t=e.match(/^(create|new|add|edit|update)_(.+)$/);if(t){let e=t[1];n={objectName:t[2],mode:e===`edit`||e===`update`?`edit`:`create`}}else n={objectName:e,mode:`create`}}else n=e;B({schema:n,resolve:t})}),[]),U=(0,M.useMemo)(()=>({export_dashboard_pdf:async()=>{x.info(P(`dashboardActions.printDialogOpening`));try{return window.print(),{success:!0}}catch(e){return x.error(P(`dashboardActions.exportFailed`,{message:e?.message||String(e)})),{success:!1,error:e?.message||String(e)}}},forecast_dashboard:async()=>(x.info(P(`dashboardActions.forecastSoon`)),{success:!0})}),[P]);(0,M.useEffect)(()=>{R(!0),queueMicrotask(()=>R(!1))},[r]);let{dashboards:W,objects:G}=a(),{app:K}=C(),q=T(W,r,K?._packageId),J=(0,M.useMemo)(()=>new Set((G||[]).map(e=>e?.name).filter(Boolean)),[G]),Y=(0,M.useMemo)(()=>{if(!q||J.size===0)return q;let e=q.widgets;if(!Array.isArray(e)||e.length===0)return q;let t=e.filter(e=>{let t=e?.requiresObject??e?.object;return!t||J.has(t)});return t.length===e.length?q:{...q,widgets:t}},[q,J]);return L?(0,N.jsx)(O,{}):q?(0,N.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden bg-background`,children:[(0,N.jsx)(`div`,{className:`flex flex-col sm:flex-row justify-between sm:items-center gap-3 sm:gap-4 p-4 sm:p-6 border-b shrink-0`,children:(0,N.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(()=>{let e=w((Y||q).title,P),t=w(q.label,P),n=F({name:q.name,label:t}),r=e||n||q.name;return(0,N.jsx)(`h1`,{className:`text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate`,children:r})})(),(()=>{let e=(Y||q).description??q.description,t=I({name:q.name,description:w(e,P)});return t?(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:t}):null})()]})}),(0,N.jsxs)(`div`,{className:`flex-1 overflow-hidden flex flex-col sm:flex-row relative`,children:[(0,N.jsx)(`div`,{className:`flex-1 min-w-0 overflow-auto p-2 sm:p-4 md:p-6`,children:(0,N.jsx)(o,{value:{openRecordList:t},children:(0,N.jsx)(k,{schema:Y,dataSource:e,modalHandler:H,scriptHandlers:U,hideHeaderText:!0})})}),(0,N.jsx)(D,{open:i,sections:[{title:`Dashboard Configuration`,data:Y}]})]}),z&&z.schema?.objectName?(0,N.jsx)(S,{schema:{type:`object-form`,formType:`modal`,objectName:z.schema.objectName,mode:z.schema.mode||`create`,recordId:z.schema.recordId,title:z.schema.title,description:z.schema.description,fields:z.schema.fields,open:!0,onOpenChange:e=>{e||V({success:!1})},onSuccess:e=>{V({success:!0,reload:!0,data:e})},onCancel:()=>{V({success:!1})},showSubmit:!0,showCancel:!0},dataSource:j}):z?(0,N.jsx)(m,{open:!0,onOpenChange:e=>{e||V({success:!1})},children:(0,N.jsxs)(p,{children:[(0,N.jsxs)(b,{children:[(0,N.jsx)(f,{children:z.schema?.title||P(`actionDialog.defaultActionTitle`)}),z.schema?.description&&(0,N.jsx)(d,{children:z.schema.description})]}),(0,N.jsxs)(v,{children:[(0,N.jsx)(_,{variant:`outline`,onClick:()=>V({success:!1}),children:P(`actionDialog.cancel`)}),(0,N.jsx)(_,{onClick:()=>V({success:!0}),children:P(`actionDialog.ok`)})]})]})}):null]}):(0,N.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,N.jsxs)(g,{children:[(0,N.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,N.jsx)(u,{className:`h-6 w-6 text-muted-foreground`})}),(0,N.jsx)(y,{children:P(`empty.dashboardNotFound`)}),(0,N.jsx)(h,{children:P(`empty.dashboardNotFoundDescription`,{name:r})})]})})}export{j as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{r as t,y as n}from"./vendor-react-BgOXCBVK.js";import{b as r}from"./infrastructure-ChmEYj6c.js";import{Q as i,Z as a}from"./framework-B8ndNKrd.js";import{Bt as o,Dr as s,En as c,Er as l,Ft as u,Gt as d,Ht as f,Kt as p,Ln as m,Nn as h,Oa as g,Or as _,Tr as v,Ut as y,Vs as b,Vt as x,Wt as S,_a as C,_n as w,_o as T,ac as E,gn as D,hn as O,jr as k,kr as A,nc as j,ni as M,pn as N,qr as P,qs as F,vn as I,yn as L}from"./ui-components-mPgY5chB.js";import"./src-BBKXMp-o.js";import{O as R}from"./RecordDetailView-DrVbrbaN.js";var z=e(n(),1),B=t();function V({status:e}){let t={success:{icon:j,cls:`text-emerald-600 border-emerald-300`},completed:{icon:j,cls:`text-emerald-600 border-emerald-300`},failed:{icon:F,cls:`text-red-600 border-red-300`},error:{icon:F,cls:`text-red-600 border-red-300`},running:{icon:T,cls:`text-blue-600 border-blue-300 animate-pulse`},pending:{icon:b,cls:`text-amber-600 border-amber-300`},paused:{icon:b,cls:`text-amber-600 border-amber-300`},skipped:{icon:E,cls:`text-muted-foreground`}}[e]??{icon:E,cls:`text-muted-foreground`},n=t.icon;return(0,B.jsxs)(k,{variant:`outline`,className:`text-[10px] font-mono inline-flex items-center gap-1 ${t.cls}`,children:[(0,B.jsx)(n,{className:`h-3 w-3`}),e]})}function H(e){if(!e)return`—`;try{return new Date(e).toLocaleString()}catch{return e}}function U(e,t){switch(t){case`number`:{if(e===``)return;let t=Number(e);return Number.isNaN(t)?e:t}case`boolean`:return e===`true`;case`object`:case`list`:case`array`:if(e.trim()===``)return;try{return JSON.parse(e)}catch{return e}default:return e}}function W({data:e}){return(0,B.jsx)(`pre`,{className:`rounded border bg-muted/30 p-2 text-xs font-mono overflow-auto whitespace-pre-wrap break-all max-h-96`,children:JSON.stringify(e,null,2)})}function G(){let e=a()?.getClient?.(),[t,n]=(0,z.useState)([]),[r,i]=(0,z.useState)(!0),[o,c]=(0,z.useState)(null),[u,d]=(0,z.useState)(``),[f,p]=(0,z.useState)(0),m=(0,z.useCallback)(async()=>{if(!e?.meta?.getItems){c(`meta.getItems is not available on this client`),i(!1);return}i(!0),c(null);try{let t=await e.meta.getItems(`flow`),r=(Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[]).map(e=>({name:e?.spec?.name??e?.name,label:e?.spec?.label,spec:e?.spec??e,updatedAt:e?.updatedAt??e?.updated_at})).filter(e=>e.name);n(r),!u&&r.length>0&&d(r[0].name)}catch(e){c(e?.message??String(e))}finally{i(!1)}},[e,u]);(0,z.useEffect)(()=>{m()},[m]);let h=(0,z.useMemo)(()=>t.find(e=>e.name===u)??null,[t,u]);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-4 p-4 sm:p-6`,children:[(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsxs)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight flex items-center gap-2`,children:[(0,B.jsx)(M,{className:`h-5 w-5`}),`Flow Runs`]}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Pick a flow, trigger a test run with sample inputs, and inspect recent run history`})]}),(0,B.jsxs)(v,{children:[(0,B.jsx)(_,{className:`pb-3`,children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(A,{className:`text-base`,children:`Flow`}),(0,B.jsx)(s,{children:`Select a flow definition to test`})]}),(0,B.jsxs)(P,{variant:`outline`,size:`sm`,onClick:m,disabled:r,children:[(0,B.jsx)(C,{className:`h-3.5 w-3.5 mr-2 ${r?`animate-spin`:``}`}),`Refresh`]})]})}),(0,B.jsxs)(l,{children:[r&&(0,B.jsx)(N,{className:`h-9 w-72`}),o&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:o}),!r&&!o&&t.length===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No flow definitions found.`}),!r&&!o&&t.length>0&&(0,B.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`flex h-9 w-full max-w-md rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring`,children:t.map(e=>(0,B.jsx)(`option`,{value:e.name,children:e.label?`${e.label} (${e.name})`:e.name},e.name))})]})]}),h&&(0,B.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,B.jsx)(K,{client:e,flow:h.spec,onExecuted:()=>p(e=>e+1)}),(0,B.jsx)(q,{client:e,flowName:h.name,refreshKey:f})]})]})}function K({client:e,flow:t,onExecuted:n}){let o=(0,z.useMemo)(()=>(t?.variables??[]).filter(e=>e?.isInput),[t]),c=a(),{objects:d}=i(),f=(0,z.useMemo)(()=>r(),[]),[y,x]=(0,z.useState)({}),[S,C]=(0,z.useState)(!1),[w,E]=(0,z.useState)(null),[D,O]=(0,z.useState)(null),[M,N]=(0,z.useState)(null);(0,z.useEffect)(()=>{x({}),E(null),O(null),N(null)},[t?.name]);let I=(e,t)=>x(n=>({...n,[e]:t}));return(0,B.jsxs)(v,{children:[(0,B.jsxs)(_,{className:`pb-3`,children:[(0,B.jsx)(A,{className:`text-base`,children:`Test Run`}),(0,B.jsx)(s,{children:`Provide input values and invoke the flow`})]}),(0,B.jsxs)(l,{className:`space-y-3`,children:[o.length===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This flow declares no input variables. Click Run to invoke with no parameters.`}),o.map(e=>(0,B.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,B.jsxs)(m,{htmlFor:`var-${e.name}`,className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`font-mono text-xs`,children:e.name}),(0,B.jsx)(k,{variant:`outline`,className:`text-[10px] font-mono`,children:e.type})]}),e.type===`boolean`?(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(p,{id:`var-${e.name}`,checked:y[e.name]===`true`,onCheckedChange:t=>I(e.name,t?`true`:`false`)}),(0,B.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:y[e.name]===`true`?`true`:`false`})]}):e.type===`object`||e.type===`list`||e.type===`array`?(0,B.jsx)(u,{id:`var-${e.name}`,placeholder:`JSON ${e.type}`,value:y[e.name]??``,onChange:t=>I(e.name,t.target.value),className:`font-mono text-xs min-h-[80px]`}):(0,B.jsx)(h,{id:`var-${e.name}`,type:e.type===`number`?`number`:`text`,value:y[e.name]??``,onChange:t=>I(e.name,t.target.value)})]},e.name)),(0,B.jsx)(`div`,{className:`pt-1`,children:(0,B.jsxs)(P,{onClick:async()=>{if(!e?.automation?.execute){O(`automation.execute is not available on this client`);return}C(!0),O(null),E(null),N(null);try{let r={};for(let e of o){let t=y[e.name];t!==void 0&&(r[e.name]=U(t,e.type))}let i=await e.automation.execute(t.name,{params:r});E(i),i?.status===`paused`&&i?.screen&&i?.runId&&N({flowName:t.name,runId:i.runId,screen:i.screen}),n?.()}catch(e){O(e?.message??String(e))}finally{C(!1)}},disabled:S,size:`sm`,children:[S?(0,B.jsx)(T,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,B.jsx)(g,{className:`h-3.5 w-3.5 mr-2`}),S?`Running…`:`Run Flow`]})}),(w||D)&&(0,B.jsxs)(`div`,{className:`pt-2 border-t mt-2 space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[D||w?.success===!1?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(F,{className:`h-4 w-4 text-red-500`}),` Failed`]}):w?.status===`paused`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(b,{className:`h-4 w-4 text-amber-500`}),` Waiting for input`]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(j,{className:`h-4 w-4 text-emerald-500`}),` Result`]}),typeof w?.durationMs==`number`&&(0,B.jsxs)(k,{variant:`secondary`,className:`text-[10px] font-mono`,children:[w.durationMs,` ms`]})]}),D&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:D}),w?.status===`paused`&&w?.screen&&w?.runId&&!M&&(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This run is paused at screen `,(0,B.jsx)(`span`,{className:`font-mono`,children:w.screen.nodeId}),`.`]}),(0,B.jsx)(P,{size:`sm`,variant:`outline`,onClick:()=>N({flowName:t.name,runId:w.runId,screen:w.screen}),children:`Continue run`})]}),w&&(0,B.jsx)(W,{data:w})]})]}),(0,B.jsx)(R,{state:M,authFetch:f,baseUrl:``,dataSource:c,objects:d,onClose:()=>{N(null),n?.()},onComplete:()=>{N(null),n?.()}})]})}function q({client:e,flowName:t,refreshKey:n}){let[r,i]=(0,z.useState)([]),[a,u]=(0,z.useState)(!0),[p,m]=(0,z.useState)(null),[h,g]=(0,z.useState)(null),[b,E]=(0,z.useState)(null),[j,M]=(0,z.useState)(!1),[F,R]=(0,z.useState)(null),U=(0,z.useCallback)(async()=>{if(!e?.automation?.listRuns){m(`automation.listRuns is not available on this client`),u(!1);return}u(!0),m(null);try{let n=await e.automation.listRuns(t,{limit:20}),r=Array.isArray(n)?n:n?.items??n?.runs??[];i(r)}catch(e){m(e?.message??String(e))}finally{u(!1)}},[e,t]);(0,z.useEffect)(()=>{U()},[U,n]);let G=async n=>{g(n),E(null),R(null),M(!0);try{let r=await e.automation.getRun(t,n);E(r?.run??r)}catch(e){R(e?.message??String(e))}finally{M(!1)}};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(v,{children:[(0,B.jsx)(_,{className:`pb-3`,children:(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(A,{className:`text-base`,children:`Recent Runs`}),(0,B.jsx)(s,{className:`font-mono text-xs`,children:t})]}),(0,B.jsxs)(P,{variant:`outline`,size:`sm`,onClick:U,disabled:a,children:[a?(0,B.jsx)(T,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,B.jsx)(C,{className:`h-3.5 w-3.5 mr-2`}),`Refresh`]})]})}),(0,B.jsxs)(l,{children:[a&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsx)(N,{className:`h-8 w-full`}),(0,B.jsx)(N,{className:`h-8 w-full`}),(0,B.jsx)(N,{className:`h-8 w-full`})]}),!a&&p&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:p}),!a&&!p&&r.length===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground py-6 text-center`,children:`No runs yet. Use the Test Run panel to invoke this flow.`}),!a&&!p&&r.length>0&&(0,B.jsxs)(o,{children:[(0,B.jsx)(S,{children:(0,B.jsxs)(d,{children:[(0,B.jsx)(y,{children:`Run`}),(0,B.jsx)(y,{children:`Status`}),(0,B.jsx)(y,{children:`Started`}),(0,B.jsx)(y,{className:`text-right`,children:`Duration`})]})}),(0,B.jsx)(x,{children:r.map(e=>(0,B.jsxs)(d,{className:`cursor-pointer`,onClick:()=>G(e.id),children:[(0,B.jsxs)(f,{className:`font-mono text-xs`,children:[e.id.slice(0,12),`…`]}),(0,B.jsx)(f,{children:(0,B.jsx)(V,{status:e.status})}),(0,B.jsx)(f,{className:`text-xs text-muted-foreground`,children:H(e.startedAt)}),(0,B.jsx)(f,{className:`text-right font-mono text-xs`,children:typeof e.durationMs==`number`?`${e.durationMs} ms`:`—`})]},e.id))})]})]})]}),(0,B.jsx)(O,{open:!!h,onOpenChange:e=>{e||(g(null),E(null))},children:(0,B.jsxs)(D,{side:`right`,className:`w-full sm:max-w-2xl p-0 flex flex-col`,children:[(0,B.jsxs)(I,{className:`p-4 border-b`,children:[(0,B.jsxs)(L,{className:`font-mono text-sm break-all`,children:[`Run `,h]}),(0,B.jsx)(w,{children:b&&(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,B.jsx)(V,{status:b.status}),typeof b.durationMs==`number`&&(0,B.jsxs)(k,{variant:`secondary`,className:`text-[10px] font-mono`,children:[b.durationMs,` ms`]}),(0,B.jsx)(`span`,{className:`text-xs`,children:H(b.startedAt)})]})})]}),(0,B.jsxs)(c,{className:`flex-1 p-4`,children:[j&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsx)(N,{className:`h-16 w-full`}),(0,B.jsx)(N,{className:`h-16 w-full`}),(0,B.jsx)(N,{className:`h-16 w-full`})]}),F&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:F}),!j&&b&&(0,B.jsx)(`div`,{className:`space-y-3`,children:Array.isArray(b.steps)&&b.steps.length>0?b.steps.map((e,t)=>(0,B.jsxs)(`div`,{className:`rounded-md border p-3 space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,B.jsxs)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:[`#`,t+1]}),(0,B.jsx)(`span`,{className:`font-mono text-sm font-medium`,children:e.nodeLabel||e.nodeId}),e.nodeType&&(0,B.jsx)(k,{variant:`outline`,className:`text-[10px] font-mono`,children:e.nodeType}),(0,B.jsx)(V,{status:e.status}),typeof e.durationMs==`number`&&(0,B.jsxs)(k,{variant:`secondary`,className:`text-[10px] font-mono ml-auto`,children:[e.durationMs,` ms`]})]}),e.input!==void 0&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Input`}),(0,B.jsx)(W,{data:e.input})]}),e.output!==void 0&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Output`}),(0,B.jsx)(W,{data:e.output})]}),e.error&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-red-500 mb-1`,children:`Error`}),(0,B.jsx)(W,{data:e.error})]})]},`${e.nodeId}-${t}`)):(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Run`}),(0,B.jsx)(W,{data:b})]})})]})]})})]})}export{G as FlowRunsPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{f as t,h as n,r,y as i}from"./vendor-react-BgOXCBVK.js";import{v as a}from"./infrastructure-ChmEYj6c.js";import{Jn as o,Q as s,T as c,Z as l,mt as u,yt as d}from"./framework-B8ndNKrd.js";import{dt as f,ht as p,js as m,mt as h,vt as g}from"./ui-components-mPgY5chB.js";import"./MetadataProvider-CnYsadFP.js";import{t as _}from"./RecordDetailView-DrVbrbaN.js";import{d as ee}from"./plugins-views-BxwTmeut.js";var v=e(i(),1),y=[`single`,`group`,`isolated`];function b(){let{getAuthConfig:e}=a(),[t,n]=(0,v.useState)(void 0);return(0,v.useEffect)(()=>{let t=!1;return e?.().then(e=>{if(t)return;let r=e?.features?.tenancyPosture;r&&y.includes(r)&&n(r)}).catch(()=>{}),()=>{t=!0}},[e]),t}var x=`uf_`;function S(e){let t={};return e.forEach((e,n)=>{if(n.startsWith(x)&&e!==``){let r=n.slice(3);t[r]=e.split(`,`).map(e=>{try{return decodeURIComponent(e)}catch{return e}})}}),Object.keys(t).length>0?t:void 0}function C(e,t){let n=new URLSearchParams(e);for(let[e,r]of Object.entries(t)){let t=x+e;r&&r.length>0?n.set(t,r.map(e=>encodeURIComponent(String(e))).join(`,`)):n.delete(t)}return n}var w=r();function T(e){return Array.isArray(e?.columns)&&e.columns.length>0}function E(e,t){let n=e?.listViews||e?.list_views||{},r=(t?[n[`${e?.name}.${t}`],n[t],...t==="default"||t===`list`?[e?.list]:[]]:[e?.list,...Object.values(n)]).filter(Boolean);return r.find(T)??r[0]}function D(e,t){let n=n=>t?.orgAttribution&&e?.fields?.organization_id&&!n.includes(`organization_id`)?[...n,`organization_id`]:n,r=e?.highlightFields;if(Array.isArray(r)&&r.length>0)return n(r.filter(t=>e.fields?.[t]));let i=e?.fields;return i&&typeof i==`object`?n(Object.entries(i).filter(([e,t])=>t&&!t.hidden&&!o(e,t)).map(([e])=>e).slice(0,6)):[]}function O(e,t){let n=e?.fields;if(!(!n||typeof n!=`object`))return Object.entries(n).find(([e,n])=>n&&!n.hidden&&!o(e,n)&&t(e,n))?.[0]}var k=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),A=new Set([`date`,`datetime`,`time`]),j=new Set([`image`,`file`,`attachment`,`avatar`,`photo`]);function M(e){let t=O(e,(e,t)=>k.has(t.type))??O(e,e=>/status|stage|state|priority|category|kind/i.test(e));return t?{groupByField:t}:void 0}function N(e){return O(e,(e,t)=>A.has(t.type))??O(e,e=>/date|due|start|end|deadline|schedule/i.test(e))}function P(e){let t=N(e);return t?{startDateField:t}:void 0}function F(e){let t=O(e,(e,t)=>j.has(t.type));return t?{coverField:t}:void 0}var I=new Set([`location`,`geo`,`geolocation`,`geopoint`,`point`]);function L(e){let t=O(e,(e,t)=>A.has(t.type)&&/start|begin|kickoff/i.test(e))??O(e,(e,t)=>A.has(t.type));if(!t)return;let n=O(e,(e,n)=>A.has(n.type)&&e!==t&&/end|due|finish|deadline|close/i.test(e))??O(e,(e,n)=>A.has(n.type)&&e!==t);if(!n)return;let r=O(e,(e,t)=>(t.type===`number`||t.type===`percent`)&&/progress|percent|complete/i.test(e));return{startDateField:t,endDateField:n,...r?{progressField:r}:{}}}function R(e){let t=O(e,(e,t)=>I.has(t.type))??O(e,e=>/location|address|geo|coords?|place|venue/i.test(e));return t?{locationField:t}:void 0}function z({page:e,className:r,onConfigChange:i,reserveEditAffordance:a}){let{t:o}=c(),{objects:y}=s(),x=l(),O=t(),[k,A]=n(),j=b()===`group`,[N]=v.useState(()=>S(new URLSearchParams(window.location.search))),I=v.useCallback(e=>{A(t=>C(t,e),{replace:!0})},[A]),z=e?.interfaceConfig||{},B=v.useMemo(()=>(y||[]).find(e=>e.name===z.source),[y,z.source]),V=v.useMemo(()=>E(B,z.sourceView),[B,z.sourceView]),H=z.recordAction===`page`||z.recordAction===`modal`||z.recordAction===`none`?z.recordAction:`drawer`,U=v.useCallback(e=>`/apps/${window.location.pathname.split(`/`)[2]||``}/${z.source}/record/${encodeURIComponent(String(e))}`,[z.source]),W=u({navigation:{mode:H===`none`?`none`:H},objectName:z.source,onNavigate:e=>O(U(e))}),G=k.get(`recordId`),te=v.useCallback((e,t)=>{if(H===`none`)return;let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}if((H===`drawer`||H===`modal`)&&n!=null){A(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t});return}W.handleClick(e,t)},[H,U,W,A]),ne=v.useCallback(()=>{A(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[A]);v.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=B?.name,q=!!V&&!T(V),J=V?.name??(z.sourceView?`${z.source}.${z.sourceView}`:void 0),[Y,X]=v.useState(null);v.useEffect(()=>{let e=!1;if(X(null),!(!K||!z.source||!q||!J))return(async()=>{try{let t=x,n=null;if(typeof t?.listViewOverrides==`function`)try{n=(await t.listViewOverrides(z.source))?.[J]??null}catch{}!T(n)&&typeof t?.getView==`function`&&(n=await t.getView(z.source,J)),!e&&n&&typeof n==`object`&&X(n)}catch{}})(),()=>{e=!0}},[K,z.source,z.sourceView,q,J,x]);let Z=v.useMemo(()=>Y?{...V,...Y}:V,[V,Y]),re=JSON.stringify(Z??null),Q=v.useMemo(()=>{if(!B)return;let e=Z||{},t=z.appearance??e.appearance,n=t?.allowedVisualizations||[],r=new Set(n),i=z.userActions||{},a=e.kanban??(r.has(`kanban`)?M(B):void 0),o=e.calendar??(r.has(`calendar`)?P(B):void 0),s=e.timeline??(r.has(`timeline`)?P(B):void 0),c=e.gallery??(r.has(`gallery`)?F(B):void 0),l=e.gantt??(r.has(`gantt`)?L(B):void 0),u=e.options?.map??(r.has(`map`)?R(B):void 0),d=[...Array.isArray(e.filter)?e.filter:[],...Array.isArray(z.filterBy)?z.filterBy:[]],f=T(z)?z.columns:T(e)?e.columns:D(B,{orgAttribution:j}),p=Array.isArray(z.sort)&&z.sort.length?z.sort:e.sort;return{type:`list-view`,objectName:B.name,viewType:n[0]??e.type??`grid`,columns:f,...d.length?{filter:d}:{},...p?.length?{sort:p}:{},grouping:e.grouping,rowColor:e.rowColor,pagination:e.pagination,searchableFields:e.searchableFields,emptyState:e.emptyState,kanban:a,calendar:o,gallery:c,timeline:s,gantt:l,...u||e.options?{options:{...e.options??{},...u?{map:u}:{}}}:{},userFilters:z.userFilters??e.userFilters,appearance:t,showViewSwitcher:n.length>1,showRecordCount:z.showRecordCount,addRecord:z.addRecord,userActions:{search:i.search!==!1,sort:i.sort!==!1,filter:i.filter===!0,rowHeight:i.rowHeight===!0,group:i.group===!0,hideFields:i.hideFields===!0,rowColor:i.rowColor===!0},allowExport:!1,inlineEdit:i.editInline===!0}},[K,re,z,j]);if(!B||!Q)return(0,w.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,w.jsxs)(h,{children:[(0,w.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,w.jsx)(m,{className:`h-6 w-6 text-muted-foreground`})}),(0,w.jsx)(g,{children:o(`empty.objectNotFound`,{defaultValue:`Object Not Found`})}),(0,w.jsx)(p,{children:o(`empty.interfacePageSourceMissing`,{defaultValue:`This interface page references "{{name}}", which is not available.`,name:z.source||`?`})})]})});let $=Array.isArray(z.buttons)&&z.buttons.length?z.buttons.map(e=>(B.actions||[]).find(t=>t?.name===e)).filter(Boolean).map(e=>({...e,locations:[`list_toolbar`]})):[];return(0,w.jsxs)(`div`,{className:r??`h-full flex flex-col`,"data-testid":`interface-list-page`,children:[(0,w.jsxs)(`div`,{className:`pl-4 pt-4 pb-2 shrink-0 flex items-start justify-between gap-3 ${a?`pr-12`:`pr-4`}`,children:[(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`h1`,{className:`text-lg font-semibold leading-tight`,children:typeof e.label==`string`?e.label:e.name}),typeof e.description==`string`&&e.description&&(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:e.description})]}),$.length>0&&(0,w.jsx)(`div`,{className:`shrink-0`,"data-testid":`interface-page-buttons`,children:(0,w.jsx)(d,{schema:{type:`action:bar`,location:`list_toolbar`,actions:$,size:`sm`,variant:`outline`}})})]}),(0,w.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,w.jsx)(ee,{schema:Q,dataSource:x,userFilterSelections:N,onUserFilterSelectionsChange:I,onSortChange:i?e=>i({sort:e}):void 0,onColumnStateChange:i?e=>{e?.order?.length&&i({columns:e.order})}:void 0,onRowClick:H===`none`?void 0:te})}),W.isOverlay&&(0,w.jsx)(f,{...W,setIsOpen:e=>{e||ne()},title:typeof e.label==`string`?e.label:z.source||`Record`,children:e=>(0,w.jsx)(_,{objectNameOverride:z.source,recordIdOverride:String(e?.id??e?._id??G??``),embedded:!0,dataSource:x,objects:y,onEdit:()=>{}})})]})}export{M as a,b as c,F as i,P as n,C as o,D as r,S as s,z as t};
@@ -1 +0,0 @@
1
- import{f as e,m as t,r as n}from"./vendor-react-BgOXCBVK.js";import{x as r}from"./infrastructure-ChmEYj6c.js";import{T as i}from"./framework-B8ndNKrd.js";import{Er as a,Tr as o,go as s,qr as c}from"./ui-components-mPgY5chB.js";var l={cloudUrl:``,singleEnvironment:!1,defaultOrgId:null,defaultEnvironmentId:null,features:{installLocal:!1,marketplace:!0,aiStudio:!0,autoPublishAiBuilds:!0,customDomain:!1,sso:!1},branding:{productName:`ObjectOS`,productShortName:`ObjectOS`,stage:`preview`,brandColor:`#4F46E5`,pwaThemeColor:`#4f46e5`}},u=[`preview`,`beta`,`ga`];function d(e){return typeof e==`string`&&u.includes(e)}var f={...l};function p(e){f={...f,...e,features:{...f.features,...e.features??{}},branding:{...f.branding,...e.branding??{}}}}async function m(e=``){let t=(e||``).replace(/\/+$/,``);try{let e=await fetch(`${t}/api/v1/runtime/config`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return;let n=await e.json();if(!n||typeof n!=`object`)return;p({cloudUrl:typeof n.cloudUrl==`string`?n.cloudUrl.replace(/\/+$/,``):f.cloudUrl,singleEnvironment:!!n.singleEnvironment,defaultOrgId:n.defaultOrgId??f.defaultOrgId??null,defaultEnvironmentId:n.defaultEnvironmentId??f.defaultEnvironmentId??null,features:n.features?{installLocal:!!n.features.installLocal,marketplace:n.features.marketplace!==!1,aiStudio:n.features.aiStudio!==!1,autoPublishAiBuilds:n.features.autoPublishAiBuilds!==!1,customDomain:n.features.customDomain===!0,sso:n.features.sso===!0}:f.features,branding:n.branding?{productName:typeof n.branding.productName==`string`&&n.branding.productName.trim()?n.branding.productName.trim():f.branding.productName,productShortName:typeof n.branding.productShortName==`string`&&n.branding.productShortName.trim()?n.branding.productShortName.trim():f.branding.productShortName,stage:d(n.branding.stage)?n.branding.stage:f.branding.stage,logoUrl:typeof n.branding.logoUrl==`string`&&n.branding.logoUrl.trim()?n.branding.logoUrl.trim():f.branding.logoUrl,faviconUrl:typeof n.branding.faviconUrl==`string`&&n.branding.faviconUrl.trim()?n.branding.faviconUrl.trim():f.branding.faviconUrl,brandColor:typeof n.branding.brandColor==`string`&&n.branding.brandColor.trim()?n.branding.brandColor.trim():f.branding.brandColor,pwaDescription:typeof n.branding.pwaDescription==`string`&&n.branding.pwaDescription.trim()?n.branding.pwaDescription.trim():f.branding.pwaDescription,pwaThemeColor:typeof n.branding.pwaThemeColor==`string`&&n.branding.pwaThemeColor.trim()?n.branding.pwaThemeColor.trim():f.branding.pwaThemeColor}:f.branding})}catch{}}function h(){return f}function g(){return f.branding?.productName||`ObjectOS`}function _(){return f.branding?.productShortName||g()}function v(){return f.branding?.stage??`preview`}function y(){return f.branding?.brandColor||`#4F46E5`}function b(){return f.branding?.logoUrl}function x(){return f.branding?.faviconUrl}function S(){return f.branding?.pwaDescription||`${g()} — runtime console`}function C(){return f.branding?.pwaThemeColor||y()}function w(){return f.cloudUrl??``}var T=``.replace(/\/$/,``),E=`${T}/api/v1/marketplace`;function D(e){let t=r.get();return t?{...e,Authorization:`Bearer ${t}`}:e}function O(e,t){let n=e?.error?.code??e?.code??`HTTP_${t.status}`,r=e?.error?.message??e?.error??e?.message??t.statusText;return{code:String(n),message:typeof r==`string`?r:String(n)}}async function k(e,t){let n=await fetch(`${E}${e}`,{credentials:`omit`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=null;try{r=await n.json()}catch{}if(!n.ok){let{code:e,message:t}=O(r,n),i=Error(typeof t==`string`?t:`${e}`);throw i.code=e,i.status=n.status,i}return r?.data??r}async function A(e={}){let t=new URLSearchParams;e.q&&t.set(`q`,e.q),e.category&&t.set(`category`,e.category),e.limit!=null&&t.set(`limit`,String(e.limit)),e.offset!=null&&t.set(`offset`,String(e.offset));let n=t.toString();return k(`/packages${n?`?${n}`:``}`)}async function j(e){return k(`/packages/${encodeURIComponent(e)}`)}async function M(e){if(w()){let t=await fetch(`/api/v1/cloud-connection/install`,{method:`POST`,credentials:`include`,headers:D({Accept:`application/json`,"Content-Type":`application/json`}),body:JSON.stringify({package_id:e.packageId,seed_sample_data:!!e.seedSampleData})}),n=null;try{n=await t.json()}catch{}if(!t.ok||n?.success===!1){let{code:e,message:r}=O(n,t),i=Error(typeof r==`string`?r:`${e}`);throw i.code=e,i.status=t.status,i}return n?.data??n}let t=await fetch(`${T}/api/v1/actions/sys_package/install_package`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({recordId:e.packageId,params:{environment_id:e.environmentId,seed_sample_data:!!e.seedSampleData}})}),n=null;try{n=await t.json()}catch{}let r=n?.data,i=!!r&&typeof r==`object`&&r.success===!1;if(!t.ok||i){let e=O(n,t),a=n?.code??e.code,o=i?r.error??t.statusText:e.message,s=Error(typeof o==`string`?o:`${a}`);throw s.code=a,s.status=t.status,s}return n?.data??n}async function N(){let e=w()||T,t=await fetch(`${e}/api/v1/data/sys_environment?limit=200`,{credentials:`include`,headers:{Accept:`application/json`}});if(!t.ok){let e=Error(`HTTP_${t.status}`);throw e.status=t.status,e}let n=await t.json().catch(()=>({})),r=n?.records??n?.data??n?.items??n??[];return Array.isArray(r)?r:[]}async function P(){let e=w()||T,t=null;try{let n=await fetch(`${e}/api/v1/auth/get-session`,{credentials:`include`,headers:{Accept:`application/json`}});n.ok&&(t=(await n.json().catch(()=>({})))?.user?.id??null)}catch{}if(!t)return new Set;let n=`${e}/api/v1/data/sys_member?limit=200`,r;try{let e=await fetch(n,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return new Set;r=await e.json().catch(()=>({}))}catch{return new Set}let i=r?.records??r?.data??r?.items??r??[];if(!Array.isArray(i))return new Set;let a=new Set;for(let e of i){if(String(e?.user_id??e?.userId??``)!==t)continue;let n=String(e?.role??``).toLowerCase(),r=e?.organization_id??e?.organizationId;r&&(n===`owner`||n===`admin`)&&a.add(String(r))}return a}function F(e){return`${w()||`https://cloud.objectos.app`}/apps/cloud-control/sys_package/${encodeURIComponent(e)}`}function I(){return`${w()||`https://cloud.objectos.app`}/apps/cloud-control/sys_environment`}async function L(e,t){if(!e)return null;if(w())try{let t=await fetch(`/api/v1/cloud-connection/installation?package_id=${encodeURIComponent(e)}`,{credentials:`include`,headers:D({Accept:`application/json`})});if(!t.ok)return null;let n=await t.json().catch(()=>({})),r=n?.data??n??{};return r.installed?{installationId:String(r.installationId??``),version:String(r.version??`installed`),withSampleData:r.withSampleData===!0}:null}catch{return null}if(!t)return null;let n=T;try{let r=await fetch(`${n}/api/v1/cloud/environments/${encodeURIComponent(t)}/installations/${encodeURIComponent(e)}`,{credentials:`include`,headers:{Accept:`application/json`}});if(!r.ok)return null;let i=await r.json().catch(()=>({})),a=i?.data??i??{};return a.installed?{installationId:String(a.installationId??``),version:String(a.version??`installed`),withSampleData:a.withSampleData===!0}:null}catch{return null}}async function R(e){if(!e)return{ok:!1,error:`installation id required`};let t=w()||T;try{let n=await fetch(`${t}/api/v1/cloud/installations/${encodeURIComponent(e)}/reseed-sample-data`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:`{}`}),r=await n.json().catch(()=>({}));return!n.ok||r?.success===!1?{ok:!1,error:O(r,n).message}:{ok:!0}}catch(e){return{ok:!1,error:e?.message||`Network error`}}}async function z(e){if(!e)return{ok:!1,error:`installation id required`};let t=w()||T;try{let n=await fetch(`${t}/api/v1/cloud/installations/${encodeURIComponent(e)}/purge-sample-data`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:`{}`}),r=await n.json().catch(()=>({}));return!n.ok||r?.success===!1?{ok:!1,error:O(r,n).message}:{ok:!0,deleted:Number(r?.data?.deleted??0)}}catch(e){return{ok:!1,error:e?.message||`Network error`}}}async function B(){try{let e=await fetch(`${T}/api/v1/cloud-connection/org-packages`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return{connected:!1,items:[]};let t=(await e.json().catch(()=>({})))?.data??{},n=Array.isArray(t.items)?t.items:[];return{connected:t.connected===!0,items:n}}catch{return{connected:!1,items:[]}}}async function V(e){let t=await fetch(`${E}/install-local`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({packageId:e.packageId,...e.versionId?{versionId:e.versionId}:{}})}),n=null;try{n=await t.json()}catch{}if(!t.ok){let{code:e,message:r}=O(n,t),i=Error(typeof r==`string`?r:`${e}`);throw i.code=e,i.status=t.status,i}return n?.data??n}async function H(){try{let e=await fetch(`${E}/install-local`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return[];let t=await e.json().catch(()=>({})),n=t?.data?.items??t?.items??[];return Array.isArray(n)?n:[]}catch{return[]}}async function U(){try{let e=await fetch(`${T}/api/v1/cloud-connection/installed`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return{connected:!1,items:[]};let t=(await e.json().catch(()=>({})))?.data??{},n=(Array.isArray(t.packages)?t.packages:[]).map(e=>{let t=String(e.packageId??e.package_id??``);return{packageId:t,versionId:String(e.package_version_id??``),manifestId:t,version:String(e.version??`installed`),installedAt:String(e.installed_at??e.installedAt??``),installedBy:e.installed_by??e.installedBy??null,withSampleData:e.with_sample_data===!0||e.withSampleData===!0}});return{connected:t.connected===!0,items:n}}catch{return{connected:!1,items:[]}}}async function W(e){let t=await fetch(`${E}/install-local/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(O(e,t).message)}}async function G(e,t){let n=await fetch(`${E}/install-local/${encodeURIComponent(e)}/${t===`reseed`?`reseed-sample-data`:`purge-sample-data`}`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`}}),r=await n.json().catch(()=>({}));if(!n.ok){let e=r?.error?.message??n.statusText,t=Error(typeof e==`string`?e:`HTTP_${n.status}`);throw t.code=r?.error?.code??`HTTP_${n.status}`,t}return r?.data??r}function K(e){return G(e,`reseed`)}function q(e){return G(e,`purge`)}var J=n();function Y(){let n=e(),{appName:r}=t(),{t:l}=i(),u=r?`/apps/${r}`:`/`;return(0,J.jsx)(`div`,{className:`container mx-auto max-w-2xl px-6 py-16`,children:(0,J.jsx)(o,{children:(0,J.jsxs)(a,{className:`flex flex-col items-center gap-4 py-12 text-center`,children:[(0,J.jsx)(`div`,{className:`rounded-full bg-muted p-3`,children:(0,J.jsx)(s,{className:`h-6 w-6 text-muted-foreground`})}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`h2`,{className:`text-lg font-semibold`,children:l(`marketplace.accessDenied.title`)}),(0,J.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:l(`marketplace.accessDenied.description`)})]}),(0,J.jsx)(c,{variant:`outline`,onClick:()=>n(u),children:l(`marketplace.action.backHome`)})]})})})}export{g as C,h as D,C as E,m as O,v as S,S as T,R as _,j as a,x as b,N as c,H as d,A as f,K as g,z as h,L as i,P as l,q as m,F as n,V as o,B as p,I as r,M as s,Y as t,U as u,W as v,_ as w,b as x,w as y};
@@ -1,4 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{f as n,m as r,r as i,y as a}from"./vendor-react-BgOXCBVK.js";import{_ as o,x as s}from"./infrastructure-ChmEYj6c.js";import{Q as c,T as l,zn as ee}from"./framework-B8ndNKrd.js";import{$i as u,Cn as te,Cs as ne,Er as re,Es as ie,Is as ae,Jc as oe,Ln as d,Mc as se,Or as ce,Qi as f,Rn as le,Sn as ue,Ss as de,Tn as fe,Tr as pe,Vn as p,Xa as m,Zi as me,_o as h,_r as he,ac as g,bi as ge,br as _e,el as ve,gr as ye,hr as be,ic as xe,ii as Se,jr as _,js as Ce,kr as we,nc as v,pn as y,qa as Te,qn as Ee,qr as b,ts as De,vr as Oe,wn as ke,wr as x,xn as Ae,yr as je,zn as Me}from"./ui-components-mPgY5chB.js";import{r as S}from"./vendor-ui-utils-BGw4RtYu.js";import"./MetadataProvider-CnYsadFP.js";import{t as Ne}from"./assistantBus-DNogw1P-.js";import{D as C,_ as Pe,a as Fe,c as Ie,d as Le,g as Re,h as ze,i as w,l as Be,m as Ve,n as He,o as Ue,s as We,t as Ge,v as Ke}from"./MarketplaceAccessDenied-t8A0k9OX.js";import{n as qe,t as Je}from"./usePackageL10n-9fP2GgDK.js";var T=e(a(),1),E=i();function Ye(e){let t=e.replace(/\r\n/g,`
2
- `).split(`
3
- `),n=[],r=0;for(;r<t.length;){let e=t[r];if(e.startsWith("```")){let i=e.slice(3).trim();r++;let a=[];for(;r<t.length&&!t[r].startsWith("```");)a.push(t[r]),r++;r++,n.push({type:`code`,text:a.join(`
4
- `),lang:i});continue}let i=/^(#{1,3})\s+(.*)$/.exec(e);if(i){let e=i[1].length;n.push({type:`h${e}`,text:i[2].trim()}),r++;continue}if(/^[-*]\s+/.test(e)){let e=[];for(;r<t.length&&/^[-*]\s+/.test(t[r]);)e.push(t[r].replace(/^[-*]\s+/,``)),r++;n.push({type:`ul`,items:e});continue}if(/^\d+\.\s+/.test(e)){let e=[];for(;r<t.length&&/^\d+\.\s+/.test(t[r]);)e.push(t[r].replace(/^\d+\.\s+/,``)),r++;n.push({type:`ol`,items:e});continue}if(!e.trim()){r++;continue}let a=[];for(;r<t.length&&t[r].trim()&&!/^#{1,3}\s+/.test(t[r])&&!/^[-*]\s+/.test(t[r])&&!/^\d+\.\s+/.test(t[r])&&!t[r].startsWith("```");)a.push(t[r]),r++;n.push({type:`p`,text:a.join(` `)})}return n}function D(e){let t=[],n=e,r=0,i=[{re:/`([^`]+)`/,render:e=>(0,E.jsx)(`code`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[0.85em]`,children:e[1]},`k${r++}`)},{re:/\*\*([^*]+)\*\*/,render:e=>(0,E.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e[1]},`k${r++}`)},{re:/\*([^*]+)\*/,render:e=>(0,E.jsx)(`em`,{children:e[1]},`k${r++}`)},{re:/\[([^\]]+)\]\(([^)]+)\)/,render:e=>(0,E.jsx)(`a`,{href:e[2],target:`_blank`,rel:`noopener noreferrer`,className:`text-violet-600 underline-offset-2 hover:underline dark:text-violet-400`,children:e[1]},`k${r++}`)}];for(;n;){let e=-1,r=null,a=null;for(let t of i){let i=t.re.exec(n);i&&(e===-1||i.index<e)&&(e=i.index,r=i,a=t)}if(!r||!a){t.push(n);break}e>0&&t.push(n.slice(0,e)),t.push(a.render(r)),n=n.slice(e+r[0].length)}return(0,E.jsx)(E.Fragment,{children:t.map((e,t)=>(0,E.jsx)(T.Fragment,{children:e},t))})}function Xe({source:e,className:t}){let n=Ye(e);return(0,E.jsx)(`div`,{className:`flex flex-col gap-4 text-sm leading-relaxed text-foreground/90 ${t??``}`,children:n.map((e,t)=>{switch(e.type){case`h1`:return(0,E.jsx)(`h2`,{className:`mt-2 text-xl font-bold tracking-tight`,children:D(e.text??``)},t);case`h2`:return(0,E.jsx)(`h3`,{className:`mt-3 text-base font-semibold tracking-tight`,children:D(e.text??``)},t);case`h3`:return(0,E.jsx)(`h4`,{className:`mt-2 text-sm font-semibold tracking-tight text-foreground/80`,children:D(e.text??``)},t);case`p`:return(0,E.jsx)(`p`,{children:D(e.text??``)},t);case`ul`:return(0,E.jsx)(`ul`,{className:`ml-1 flex list-none flex-col gap-1.5`,children:(e.items??[]).map((e,t)=>(0,E.jsxs)(`li`,{className:`flex gap-2`,children:[(0,E.jsx)(`span`,{"aria-hidden":`true`,className:`mt-1.5 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-violet-500/70`}),(0,E.jsx)(`span`,{children:D(e)})]},t))},t);case`ol`:return(0,E.jsx)(`ol`,{className:`ml-5 flex list-decimal flex-col gap-1.5 marker:text-muted-foreground`,children:(e.items??[]).map((e,t)=>(0,E.jsx)(`li`,{className:`pl-1`,children:D(e)},t))},t);case`code`:return(0,E.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border bg-muted/40 p-3 text-xs leading-relaxed`,children:(0,E.jsx)(`code`,{className:`font-mono`,children:e.text})},t)}return null})})}var O={node:`In-process · full trust`,sandbox:`Sandboxed`,worker:`Out-of-process`};function k({icon:e,label:t,items:n}){return!n||n.length===0?null:(0,E.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,E.jsx)(e,{className:`h-3.5 w-3.5 mt-0.5 text-muted-foreground shrink-0`,"aria-hidden":`true`}),(0,E.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,E.jsx)(`div`,{className:`text-xs font-medium`,children:t}),(0,E.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-0.5`,children:n.map(e=>(0,E.jsx)(`code`,{className:`font-mono text-[11px] px-1 py-0.5 rounded bg-muted break-all`,children:e},e))})]})]})}function Ze({version:e}){let{t}=l();if(!e?.contains_code)return null;let n=e.permissions??{},r=(n.services?.length??0)+(n.hooks?.length??0)+(n.network?.length??0)+(n.fs?.length??0)>0;return(0,E.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-3 text-sm`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,E.jsx)(ae,{className:`h-4 w-4 text-amber-600 shrink-0`,"aria-hidden":`true`}),t(`marketplace.disclosure.containsCode`,{defaultValue:`This package contains code`})]}),(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[e.runtime&&(0,E.jsx)(_,{variant:`outline`,children:t(`marketplace.disclosure.runtime.${e.runtime}`,{defaultValue:O[e.runtime]??e.runtime})}),e.platform_verified?(0,E.jsxs)(_,{variant:`outline`,className:`gap-1 border-green-500/40 text-green-700 dark:text-green-400`,children:[(0,E.jsx)(f,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.reviewed`,{defaultValue:`Reviewed & approved`})]}):(0,E.jsxs)(_,{variant:`outline`,className:`gap-1 border-amber-500/40 text-amber-700 dark:text-amber-400`,children:[(0,E.jsx)(u,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.unreviewed`,{defaultValue:`Not yet reviewed`})]}),e.signed&&(0,E.jsxs)(_,{variant:`outline`,className:`gap-1`,children:[(0,E.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.signed`,{defaultValue:`Signed`})]})]}),r?(0,E.jsxs)(`div`,{className:`space-y-2`,children:[(0,E.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.grantsIntro`,{defaultValue:`On install, this package will be granted:`})}),(0,E.jsx)(k,{icon:se,label:t(`marketplace.disclosure.services`,{defaultValue:`Platform services`}),items:n.services??void 0}),(0,E.jsx)(k,{icon:Se,label:t(`marketplace.disclosure.hooks`,{defaultValue:`Lifecycle hooks`}),items:n.hooks??void 0}),(0,E.jsx)(k,{icon:m,label:t(`marketplace.disclosure.network`,{defaultValue:`Network access`}),items:n.network??void 0}),(0,E.jsx)(k,{icon:De,label:t(`marketplace.disclosure.fs`,{defaultValue:`Filesystem access`}),items:n.fs??void 0})]}):(0,E.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.noPermissions`,{defaultValue:`Requests no special permissions.`})})]})}var A=`${``.replace(/\/$/,``)}/api/v1/security/suggested-bindings`;function j(e={}){let t={Accept:`application/json`,...e},n=s.get();return n?{...t,Authorization:`Bearer ${n}`}:t}async function M(e){let t=null;try{t=await e.json()}catch{}if(!e.ok){let n=t?.error?.code??`HTTP_${e.status}`,r=t?.error?.message??t?.error??e.statusText,i=Error(typeof r==`string`?r:String(n));throw i.code=n,i.status=e.status,i}return t?.data??t}async function N(e={}){let t=new URLSearchParams;e.status&&t.set(`status`,e.status),e.packageId&&t.set(`packageId`,e.packageId);let n=t.toString(),r=await M(await fetch(`${A}${n?`?${n}`:``}`,{credentials:`include`,headers:j()}));return Array.isArray(r?.suggestions)?r.suggestions:[]}async function P(e){return(await M(await fetch(`${A}/${encodeURIComponent(e)}/confirm`,{method:`POST`,credentials:`include`,headers:j({"Content-Type":`application/json`})})))?.suggestion}async function F(e){return(await M(await fetch(`${A}/${encodeURIComponent(e)}/dismiss`,{method:`POST`,credentials:`include`,headers:j({"Content-Type":`application/json`})})))?.suggestion}function Qe({packageId:e,strings:t,className:n,onResolved:r}){let[i,a]=(0,T.useState)([]),[o,s]=(0,T.useState)(null),c=(0,T.useCallback)(()=>{let t=!1;return N({status:`pending`,...e?{packageId:e}:{}}).then(e=>{t||a(e)}).catch(()=>{}),()=>{t=!0}},[e]);(0,T.useEffect)(()=>c(),[c]);let l=async(e,n)=>{s(e.id);try{let i=n===`confirm`?await P(e.id):await F(e.id);a(t=>t.filter(t=>t.id!==e.id)),S.success(n===`confirm`?t.confirmedToast(e):t.dismissedToast(e)),r?.(i??e)}catch(e){S.error(e?.message??String(e))}finally{s(null)}};return i.length===0?null:(0,E.jsx)(`div`,{"data-testid":`suggested-bindings-panel`,className:ve(`rounded-lg border border-amber-300/60 dark:border-amber-700/50 bg-amber-50 dark:bg-amber-950/30 px-3 py-2 space-y-2`,n),children:i.map(e=>(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(me,{className:`h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400`}),(0,E.jsx)(`p`,{className:`flex-1 min-w-0 text-sm text-amber-900 dark:text-amber-200`,children:t.describe(e)}),(0,E.jsx)(b,{size:`sm`,disabled:o===e.id,onClick:()=>l(e,`confirm`),"data-testid":`suggested-binding-confirm-${e.permission_set_name}`,children:o===e.id?t.confirming:t.confirm}),(0,E.jsx)(b,{size:`sm`,variant:`ghost`,disabled:o===e.id,onClick:()=>l(e,`dismiss`),"data-testid":`suggested-binding-dismiss-${e.permission_set_name}`,children:t.dismiss})]},e.id))})}var $e=t({MarketplacePackagePage:()=>et});function et(){let e=n(),{packageId:t,appName:i}=r(),a=o(),{t:s,language:u}=l(),ae={describe:e=>s(e.anchor===`guest`?`marketplace.suggestedBindings.promptGuest`:`marketplace.suggestedBindings.promptEveryone`,{set:e.permission_set_name}),confirm:s(`marketplace.suggestedBindings.confirm`),confirming:s(`marketplace.suggestedBindings.confirming`),dismiss:s(`marketplace.suggestedBindings.dismiss`),confirmedToast:e=>s(`marketplace.suggestedBindings.confirmedToast`,{set:e.permission_set_name,anchor:e.anchor}),dismissedToast:e=>s(`marketplace.suggestedBindings.dismissedToast`,{set:e.permission_set_name})},se=i?`/apps/${i}`:``,{refresh:f}=c(),[m,me]=(0,T.useState)(null),[ve,Se]=(0,T.useState)(!0),[De,S]=(0,T.useState)(null),[Ye,D]=(0,T.useState)(!1),[O,k]=(0,T.useState)([]),[A,j]=(0,T.useState)(!1),[M,N]=(0,T.useState)(null),[P,F]=(0,T.useState)(``),[$e,et]=(0,T.useState)({}),[tt,nt]=(0,T.useState)(!1),[rt,it]=(0,T.useState)(!1),[I,at]=(0,T.useState)(!1),[L,R]=(0,T.useState)(null),[z,ot]=(0,T.useState)(null),[B,V]=(0,T.useState)(null),[H,U]=(0,T.useState)(null),[W,G]=(0,T.useState)(null),[st,ct]=(0,T.useState)([]),[lt,K]=(0,T.useState)(!1),[q,J]=(0,T.useState)(null);(0,T.useEffect)(()=>{if(!C().features.installLocal)return;let e=!1;return(async()=>{let t=await Le();e||ct(t)})(),()=>{e=!0}},[t,q]),(0,T.useEffect)(()=>{if(!t)return;let e=C().defaultEnvironmentId??``,n=!1;return(async()=>{let r=await w(t,e);n||!r||(V(r),ot(r.version))})(),()=>{n=!0}},[t]),(0,T.useEffect)(()=>{let e=!1;return(async()=>{if(t){Se(!0),S(null);try{let n=await Fe(t);e||me(n)}catch(t){e||S(t?.message??String(t))}finally{e||Se(!1)}}})(),()=>{e=!0}},[t]);let ut=async()=>{D(!0),R(null),N(null);let e=C().defaultEnvironmentId;if(e){j(!1),F(e),k([]);return}j(!0);try{let[e,n]=await Promise.all([Ie(),Be()]),r=e.filter(e=>{let t=e.organization_id;return t?n.has(String(t)):!1});k(r),et({});let i=t;i&&Promise.all(r.map(async e=>{try{let t=await w(i,e.id);return t?[e.id,t.version]:null}catch{return null}})).then(e=>{let t={};for(let n of e)n&&(t[n[0]]=n[1]);et(t)}),e.length>0&&r.length===0?N(s(`marketplace.install.noPermission`)):r.length===1&&F(r[0].id)}catch(e){let t=e?.status;N(t===401||t===403?s(`marketplace.install.signInFirst`):e?.message??String(e))}finally{j(!1)}},dt=async()=>{if(!(!t||!P)){at(!0),R(null);try{let e=(await We({packageId:t,environmentId:P,seedSampleData:tt}))?.installation?.version??m?.package?.latest_version?.version??m?.versions?.[0]?.version??``;ot(e||`installed`);try{let e=C().defaultEnvironmentId||P;if(e){let n=await w(t,e);n&&V(n)}}catch{}let n=C().defaultEnvironmentId;if(!n||n===P)try{if(typeof sessionStorage<`u`)for(let e of Object.keys(sessionStorage))e.startsWith(`objectui:metadata:`)&&sessionStorage.removeItem(e);await f()}catch{}R({ok:!0,message:s(`marketplace.install.success`)}),Ne()}catch(e){R({ok:!1,message:e?.message??String(e)})}finally{at(!1)}}},ft=async()=>{if(t){K(!0),J(null);try{let e=await Ue({packageId:t});try{await f(`app`)}catch{}J({ok:!0,message:s(`marketplace.install.localSuccess`,{version:e.version,name:m?.package?Je(m.package,u).displayName:e.manifestId})}),Ne()}catch(e){e?.code;let t=e?.message??String(e);ee(e,`MANIFEST_CONFLICT`)?t=s(`marketplace.install.localManifestConflict`,{message:t}):ee(e,`UNAUTHENTICATED`)?t=s(`marketplace.install.localUnauthorized`):ee(e,`MARKETPLACE_UNAVAILABLE`)&&(t=s(`marketplace.install.localMarketplaceUnavailable`)),J({ok:!1,message:t})}finally{K(!1)}}},pt=async()=>{if(Q&&confirm(s(`marketplace.uninstall.confirm`,{manifestId:Q.manifestId,version:Q.version}))){K(!0),J(null);try{await Ke(Q.manifestId);try{await f(`app`)}catch{}J({ok:!0,message:s(`marketplace.uninstall.successInDetail`,{manifestId:Q.manifestId})})}catch(e){J({ok:!1,message:e?.message??String(e)})}finally{K(!1)}}},mt=async()=>{if(B){U(`reseed`),G(null);try{let e=await Pe(B.installationId);e.ok?(V({...B,withSampleData:!0}),G({ok:!0,text:s(`marketplace.detail.reseedQueued`)})):G({ok:!1,text:e.error||`Re-seed failed`})}finally{U(null)}}},ht=async()=>{if(B&&confirm(s(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await ze(B.installationId);if(e.ok){V({...B,withSampleData:!1});let t=e.deleted??0;G({ok:!0,text:t>0?s(`marketplace.detail.purgeSuccess`,{count:t}):s(`marketplace.detail.purgeNoData`)})}else G({ok:!1,text:e.error||`Purge failed`})}finally{U(null)}}},gt=async()=>{if(Q){U(`reseed`),G(null);try{let e=await Re(Q.manifestId);ct(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!0}:e));let t=e.inserted??0,n=e.updated??0,r=e.errors??0,i=s(`marketplace.detail.reseedLocalSuccess`,{inserted:t,updated:n});G(r>0?{ok:!1,text:`${i} ${s(`marketplace.detail.reseedPartialErrors`,{count:r})}`}:{ok:!0,text:i})}catch(e){G({ok:!1,text:e?.message||`Re-seed failed`})}finally{U(null)}}},_t=async()=>{if(Q&&confirm(s(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Ve(Q.manifestId);ct(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!1}:e));let t=e.deleted??0;G({ok:!0,text:t>0?s(`marketplace.detail.purgeSuccess`,{count:t}):s(`marketplace.detail.purgeNoData`)})}catch(e){G({ok:!1,text:e?.message||`Purge failed`})}finally{U(null)}}};if(ve)return(0,E.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,E.jsx)(y,{className:`h-8 w-32`}),(0,E.jsx)(y,{className:`h-16 w-full`}),(0,E.jsx)(y,{className:`h-64 w-full`})]});if(De||!m)return(0,E.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,E.jsxs)(b,{variant:`ghost`,size:`sm`,onClick:()=>e(`${se}/system/marketplace`),children:[(0,E.jsx)(oe,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),s(`marketplace.back`)]}),(0,E.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,E.jsx)(g,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`font-medium text-destructive`,children:s(`marketplace.load.packageFailed`)}),(0,E.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:De??s(`marketplace.load.notFound`)})]})]})]});let Y=m.package,X=Je(Y,u),Z=Y.latest_version?.version??m.versions[0]?.version??null,Q=st.find(e=>e.manifestId===Y.manifest_id)??null,vt=!!Y.latest_version?.contains_code,$=!!z&&z!==`installed`&&!!Z&&z!==Z,yt=C().features.installLocal,bt=!Z||lt||I||!yt&&!!z&&!$,xt=yt?{label:s(lt?`marketplace.action.working`:Q?`marketplace.action.reinstall`:`marketplace.action.install`),onClick:ft}:{label:I?s(`marketplace.action.installing`):z?$?s(`marketplace.action.updateTo`,{defaultValue:`Update`}):s(`marketplace.action.installed`,{defaultValue:`Installed`}):s(`marketplace.action.installToCloud`),onClick:ut},St=Y.category?s(`marketplace.category.${Y.category}`,{defaultValue:Y.category}):null;return a?(0,E.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,E.jsxs)(b,{variant:`ghost`,size:`sm`,className:`self-start -ml-2 text-muted-foreground hover:text-foreground`,onClick:()=>e(`${se}/system/marketplace`),children:[(0,E.jsx)(oe,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),s(`marketplace.back`)]}),(0,E.jsxs)(`div`,{className:`flex items-start gap-5 flex-wrap sm:flex-nowrap rounded-2xl border bg-gradient-to-br from-primary/5 via-background to-background p-6 sm:p-8`,children:[(0,E.jsx)(qe,{iconUrl:Y.icon_url,displayName:X.displayName,manifestId:Y.manifest_id,className:`h-20 w-20 rounded-2xl shadow-sm ring-1 ring-border shrink-0`,initialClassName:`text-3xl font-bold`}),(0,E.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight truncate`,children:X.displayName||Y.manifest_id}),Y.homepage_url&&(0,E.jsxs)(`a`,{href:Y.homepage_url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,title:s(`marketplace.detail.homepage`),children:[(0,E.jsx)(de,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,E.jsx)(`span`,{className:`hidden sm:inline`,children:s(`marketplace.detail.homepage`)})]})]}),(0,E.jsxs)(`div`,{className:`text-sm text-muted-foreground mt-2 flex flex-wrap items-center gap-1.5`,children:[(0,E.jsx)(`code`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted`,children:Y.manifest_id}),Z&&(0,E.jsx)(_,{variant:`outline`,children:s(`marketplace.versionBadge`,{version:Z})}),Y.publisher&&Y.publisher!==`private`&&(0,E.jsx)(_,{variant:Y.publisher===`objectstack`?`default`:`secondary`,children:Y.publisher}),St&&(0,E.jsx)(_,{variant:`outline`,children:St}),Y.license&&(0,E.jsx)(_,{variant:`outline`,className:`font-normal`,children:Y.license}),Q&&(0,E.jsxs)(_,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,E.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`}),s(`marketplace.detail.installedV`,{version:Q.version})]}),!Q&&z&&(0,E.jsxs)(_,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,E.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`}),s(`marketplace.detail.installedV`,{version:z})]}),$&&(0,E.jsxs)(_,{variant:`default`,className:`bg-amber-500 hover:bg-amber-500 gap-1`,children:[(0,E.jsx)(xe,{className:`h-3 w-3`,"aria-hidden":`true`}),s(`marketplace.detail.updateAvailable`,{defaultValue:`Update available`}),` → v`,Z]})]}),X.description&&(0,E.jsx)(`p`,{className:`text-sm sm:text-base text-foreground/80 mt-3 max-w-2xl leading-relaxed`,children:X.description})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0 self-start`,children:[(0,E.jsxs)(b,{onClick:xt.onClick,disabled:bt,size:`lg`,className:`min-w-[8rem]`,children:[(0,E.jsx)(ie,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),xt.label]}),Q&&(0,E.jsxs)(le,{children:[(0,E.jsx)(Ee,{asChild:!0,children:(0,E.jsx)(b,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":s(`marketplace.detail.moreOptions`),children:(0,E.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,E.jsxs)(Me,{align:`end`,className:`w-56`,children:[(0,E.jsxs)(p,{onSelect:gt,disabled:H!==null,children:[H===`reseed`?(0,E.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,E.jsx)(Ce,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),Q.withSampleData?s(`marketplace.detail.reseedAgain`):s(`marketplace.detail.addSampleData`)]}),(0,E.jsxs)(p,{onSelect:_t,disabled:H!==null||!Q.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,E.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,E.jsx)(ge,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),s(`marketplace.detail.purgeSampleData`)]}),(0,E.jsxs)(p,{onSelect:pt,disabled:lt,className:`text-destructive focus:text-destructive`,children:[(0,E.jsx)(ge,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),s(`marketplace.detail.uninstallFromRuntime`)]})]})]}),!Q&&B&&!C().cloudUrl&&(0,E.jsxs)(le,{children:[(0,E.jsx)(Ee,{asChild:!0,children:(0,E.jsx)(b,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":s(`marketplace.detail.moreOptions`),children:(0,E.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,E.jsxs)(Me,{align:`end`,className:`w-56`,children:[(0,E.jsxs)(p,{onSelect:mt,disabled:H!==null,children:[H===`reseed`?(0,E.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,E.jsx)(Ce,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),B.withSampleData?s(`marketplace.detail.reseedAgain`):s(`marketplace.detail.addSampleData`)]}),(0,E.jsxs)(p,{onSelect:ht,disabled:H!==null||!B.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,E.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,E.jsx)(ge,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),s(`marketplace.detail.purgeSampleData`)]})]})]})]})]}),W&&(0,E.jsxs)(`div`,{role:`status`,className:`flex items-start gap-2 rounded-md border p-3 text-sm ${W.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:[W.ok?(0,E.jsx)(v,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,E.jsx)(g,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,E.jsx)(`div`,{className:`flex-1`,children:W.text}),(0,E.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>G(null),children:s(`marketplace.action.dismiss`)})]}),q&&(0,E.jsxs)(`div`,{role:`status`,className:`flex items-start gap-2 rounded-md border p-3 text-sm whitespace-pre-wrap ${q.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:[q.ok?(0,E.jsx)(v,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,E.jsx)(g,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,E.jsxs)(`div`,{className:`flex-1`,children:[q.message,q.ok&&(0,E.jsx)(Qe,{packageId:Y.manifest_id,strings:ae,className:`mt-2`})]}),(0,E.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>J(null),children:s(`marketplace.action.dismiss`)})]}),(0,E.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-3`,children:[(0,E.jsx)(`div`,{className:`lg:col-span-2 space-y-4`,children:(0,E.jsxs)(pe,{children:[(0,E.jsx)(ce,{children:(0,E.jsx)(we,{className:`text-base`,children:s(`marketplace.detail.about`)})}),(0,E.jsx)(re,{children:X.readme?(0,E.jsx)(Xe,{source:X.readme}):(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`marketplace.detail.noReadme`)})})]})}),(0,E.jsx)(`div`,{className:`space-y-4`,children:(0,E.jsxs)(pe,{children:[(0,E.jsx)(ce,{children:(0,E.jsx)(we,{className:`text-base`,children:s(`marketplace.detail.versions`)})}),(0,E.jsx)(re,{children:m.versions.length===0?(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`marketplace.detail.noApprovedVersions`)}):(0,E.jsx)(`ul`,{className:`space-y-3`,children:m.versions.map(e=>(0,E.jsxs)(`li`,{className:`space-y-1 text-sm`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,E.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,E.jsx)(Te,{className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,E.jsxs)(`code`,{className:`font-mono`,children:[`v`,e.version]}),e.is_prerelease&&(0,E.jsx)(_,{variant:`outline`,className:`text-xs`,children:s(`marketplace.detail.prerelease`)})]}),(0,E.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.published_at?new Date(e.published_at).toLocaleDateString():`—`})]}),e.release_notes&&e.release_notes.trim()&&(0,E.jsx)(`p`,{className:`whitespace-pre-line pl-5 text-xs text-muted-foreground`,children:e.release_notes.trim()})]},e.id))})})]})})]}),(0,E.jsx)(be,{open:Ye,onOpenChange:e=>{D(e),e||(R(null),it(!1))},children:(0,E.jsxs)(ye,{children:[(0,E.jsxs)(je,{children:[(0,E.jsx)(_e,{children:s(`marketplace.install.dialogTitle`,{name:X.displayName||Y.manifest_id})}),(0,E.jsx)(he,{children:C().defaultEnvironmentId?s(`marketplace.install.dialogDescCurrent`,{host:typeof window<`u`?window.location.host:``}):s(`marketplace.install.dialogDescPicker`)})]}),A?(0,E.jsx)(y,{className:`h-10 w-full`}):M?(0,E.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 text-sm space-y-2`,children:[(0,E.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,E.jsx)(g,{className:`h-4 w-4 mt-0.5 text-amber-600`,"aria-hidden":`true`}),(0,E.jsx)(`div`,{className:`flex-1`,children:M})]}),(0,E.jsx)(`a`,{href:He(Y.id),target:`_blank`,rel:`noopener noreferrer`,children:(0,E.jsxs)(b,{variant:`outline`,size:`sm`,className:`w-full`,children:[(0,E.jsx)(de,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),s(`marketplace.action.openOnCloud`)]})})]}):C().defaultEnvironmentId?(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(x,{id:`seed`,checked:tt,onCheckedChange:e=>nt(e===!0)}),(0,E.jsx)(d,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:s(`marketplace.install.includeSampleData`)})]}):O.length===0?(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`marketplace.install.noEnvs`)}):(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(d,{htmlFor:`env-select`,children:s(`marketplace.install.environment`)}),(0,E.jsxs)(Ae,{value:P,onValueChange:F,children:[(0,E.jsx)(ke,{id:`env-select`,children:(0,E.jsx)(fe,{placeholder:s(`marketplace.install.environmentPlaceholder`)})}),(0,E.jsx)(ue,{children:O.map(e=>{let t=$e[e.id],n=!!t&&!!Z&&t!==`installed`&&t!==Z;return(0,E.jsxs)(te,{value:e.id,children:[e.display_name||e.hostname||e.id,e.plan&&(0,E.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,e.plan]}),t&&(n?(0,E.jsxs)(`span`,{className:`text-amber-600`,children:[` · `,s(`marketplace.install.updateTo`,{defaultValue:`Update → v{{version}}`,version:Z})]}):(0,E.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,s(`marketplace.install.installedVersion`,{defaultValue:`Installed v{{version}}`,version:t})]}))]},e.id)})})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(x,{id:`seed`,checked:tt,onCheckedChange:e=>nt(e===!0)}),(0,E.jsx)(d,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:s(`marketplace.install.includeSampleData`)})]})]}),vt&&!M&&(0,E.jsxs)(`div`,{className:`space-y-3`,children:[(0,E.jsx)(Ze,{version:Y.latest_version}),(0,E.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,E.jsx)(x,{id:`ack-perms`,checked:rt,onCheckedChange:e=>it(e===!0)}),(0,E.jsx)(d,{htmlFor:`ack-perms`,className:`text-sm font-normal cursor-pointer leading-snug`,children:s(`marketplace.disclosure.acknowledge`,{defaultValue:`I understand this package runs code and grants the permissions above.`})})]})]}),L&&(0,E.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${L.ok?`border-green-500/30 bg-green-500/5 text-green-700`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:L.message}),L?.ok===!0&&C().defaultEnvironmentId&&C().defaultEnvironmentId===P&&(0,E.jsx)(Qe,{packageId:Y.manifest_id,strings:ae}),(0,E.jsxs)(Oe,{children:[(0,E.jsx)(b,{variant:`outline`,onClick:()=>D(!1),children:s(`marketplace.action.close`)}),!M&&(0,E.jsx)(b,{onClick:dt,disabled:!P||I||L?.ok===!0||vt&&!rt,children:s(I?`marketplace.action.installing`:`marketplace.action.install`)})]})]})})]}):(0,E.jsx)(Ge,{})}export{Qe as n,$e as t};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{f as n,m as r,r as i,y as a}from"./vendor-react-BgOXCBVK.js";import{_ as o}from"./infrastructure-ChmEYj6c.js";import{T as s}from"./framework-B8ndNKrd.js";import{Dr as c,Er as l,Ni as u,Nn as d,Or as f,Tr as p,ac as m,ia as h,jr as g,kr as _,nc as v,pn as y,qa as b,qr as x,ta as ee,va as te}from"./ui-components-mPgY5chB.js";import{t as ne}from"./assistantBus-DNogw1P-.js";import{D as re,d as S,f as ie,o as ae,p as oe,s as C,t as se,u as ce}from"./MarketplaceAccessDenied-t8A0k9OX.js";import{n as w,t as T}from"./usePackageL10n-9fP2GgDK.js";var E=t({MarketplacePage:()=>A}),D=e(a(),1),O=i();function k(){let{language:e,t}=s();return n=>{if(!n)return``;let r=new Date(n);if(Number.isNaN(r.getTime()))return``;let i=Math.floor((Date.now()-r.getTime())/864e5);if(i<1)return t(`marketplace.relativeTime.today`);try{let t=new Intl.RelativeTimeFormat(e||`en`,{numeric:`auto`});return i<30?t.format(-i,`day`):i<365?t.format(-Math.floor(i/30),`month`):t.format(-Math.floor(i/365),`year`)}catch{return i<30?t(`marketplace.relativeTime.daysAgo`,{count:i}):i<365?t(`marketplace.relativeTime.monthsAgo`,{count:Math.floor(i/30)}):t(`marketplace.relativeTime.yearsAgo`,{count:Math.floor(i/365)})}}}function A(){let e=n(),{appName:t}=r(),i=o(),{t:a,language:E}=s(),A=k(),j=t?`/apps/${t}`:``,[M,N]=(0,D.useState)([]),[P,F]=(0,D.useState)(!0),[I,L]=(0,D.useState)(null),[R,z]=(0,D.useState)(``),[B,V]=(0,D.useState)(``),[H,U]=(0,D.useState)([]),[W,le]=(0,D.useState)([]),[G,K]=(0,D.useState)(null),[q,J]=(0,D.useState)(null),[ue,Y]=(0,D.useState)(new Set),de=(0,D.useMemo)(()=>{let e=new Map;for(let t of H)e.set(t.manifestId,t);return e},[H]),X=async()=>{F(!0),L(null);try{let[e,t,n,r]=await Promise.all([ie({limit:100}),S(),oe(),ce()]);N(e.items??[]),U(t),le(n.items??[]);let i=new Set;for(let e of t)i.add(e.manifestId);for(let e of r.items)i.add(e.manifestId);Y(i)}catch(e){L(e?.message??String(e)),N([])}finally{F(!1)}};(0,D.useEffect)(()=>{X()},[]);let fe=async e=>{K(e.id),J(null);try{re().features.installLocal?await ae({packageId:e.manifest_id||e.id,versionId:`latest`}):await C({packageId:e.id,environmentId:``,seedSampleData:!0}),J({ok:!0,text:a(`marketplace.org.installed`,{defaultValue:`Installed ${e.display_name}`,name:e.display_name})}),await X(),ne()}catch(e){J({ok:!1,text:e?.message??String(e)})}finally{K(null)}},Z=(0,D.useMemo)(()=>{let e=new Set;for(let t of M)t.category&&e.add(t.category);return Array.from(e).sort()},[M]),Q=e=>{let t=`marketplace.category.${e}`,n=a(t,{defaultValue:e});return n===t?e:n},$=(0,D.useMemo)(()=>{let e=R.trim().toLowerCase();return M.filter(t=>{if(B&&t.category!==B)return!1;if(!e)return!0;let n=T(t,E);return`${n.displayName} ${t.manifest_id} ${n.description??``}`.toLowerCase().includes(e)})},[M,R,B,E]);return i?(0,O.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,O.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(u,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,O.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:a(`marketplace.title`)})]}),(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:a(`marketplace.subtitle`)})]}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsxs)(x,{variant:`outline`,size:`sm`,onClick:()=>e(`${j}/system/marketplace/installed`),children:[(0,O.jsx)(ee,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),H.length>0?a(`marketplace.installedCount`,{count:H.length}):a(`marketplace.installed`)]}),(0,O.jsxs)(x,{variant:`outline`,size:`sm`,onClick:()=>void X(),disabled:P,children:[(0,O.jsx)(te,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),a(`marketplace.refresh`)]})]})]}),(0,O.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,O.jsxs)(`div`,{className:`relative flex-1`,children:[(0,O.jsx)(h,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,O.jsx)(d,{value:R,onChange:e=>z(e.target.value),placeholder:a(`marketplace.searchPlaceholder`),className:`pl-9`,"aria-label":a(`marketplace.searchAria`)})]}),Z.length>0&&(0,O.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,O.jsx)(x,{size:`sm`,variant:B===``?`default`:`outline`,onClick:()=>V(``),children:a(`marketplace.all`)}),Z.map(e=>(0,O.jsx)(x,{size:`sm`,variant:B===e?`default`:`outline`,onClick:()=>V(e),children:Q(e)},e))]})]}),I&&(0,O.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,O.jsx)(m,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`div`,{className:`font-medium text-destructive`,children:a(`marketplace.load.failed`)}),(0,O.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:I}),(0,O.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2`,dangerouslySetInnerHTML:{__html:a(`marketplace.load.failedHint`)}})]})]}),W.length>0&&(0,O.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(u,{className:`h-5 w-5 text-primary`,"aria-hidden":`true`}),(0,O.jsx)(`h2`,{className:`text-sm font-semibold`,children:a(`marketplace.org.heading`,{defaultValue:`Your organization`})}),(0,O.jsx)(g,{variant:`secondary`,className:`text-xs`,children:W.length})]}),q&&(0,O.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${q.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:q.text}),(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:W.map(e=>{let t=ue.has(e.manifest_id);return(0,O.jsxs)(p,{className:`flex flex-col`,"data-testid":`org-card-${e.manifest_id}`,children:[(0,O.jsxs)(f,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,O.jsx)(w,{iconUrl:e.icon_url,displayName:e.display_name,manifestId:e.manifest_id}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(_,{className:`text-base truncate`,children:e.display_name}),(0,O.jsx)(c,{className:`text-xs truncate`,children:(0,O.jsx)(`code`,{className:`font-mono`,children:e.manifest_id})})]}),e.visibility&&(0,O.jsx)(g,{variant:`outline`,className:`shrink-0 text-xs`,children:e.visibility})]}),(0,O.jsxs)(l,{className:`flex-1 flex flex-col gap-2`,children:[(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:e.description||a(`marketplace.noDescription`)}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[e.latest_version&&(0,O.jsxs)(g,{variant:`outline`,className:`text-xs`,children:[(0,O.jsx)(b,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.versionBadge`,{version:e.latest_version})]}),(0,O.jsx)(`div`,{className:`ml-auto`,children:t?(0,O.jsxs)(g,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,O.jsx)(v,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.org.installedBadge`,{defaultValue:`Installed`})]}):(0,O.jsx)(x,{size:`sm`,onClick:()=>void fe(e),disabled:G===e.id,children:G===e.id?a(`marketplace.org.installing`,{defaultValue:`Installing…`}):a(`marketplace.org.install`,{defaultValue:`Install`})})})]})]})]},e.id)})}),(0,O.jsx)(`div`,{className:`border-b pt-2`})]}),P&&M.length===0?(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:Array.from({length:6}).map((e,t)=>(0,O.jsxs)(p,{children:[(0,O.jsxs)(f,{className:`pb-2`,children:[(0,O.jsx)(y,{className:`h-10 w-10 rounded-lg mb-2`}),(0,O.jsx)(y,{className:`h-5 w-3/4`}),(0,O.jsx)(y,{className:`h-4 w-1/2 mt-1`})]}),(0,O.jsx)(l,{children:(0,O.jsx)(y,{className:`h-12 w-full`})})]},t))}):$.length===0?(0,O.jsx)(`div`,{className:`text-center py-12 text-sm text-muted-foreground`,children:M.length===0?a(`marketplace.noApprovedYet`):a(`marketplace.noMatchFilters`)}):(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:$.map(t=>{let n=de.get(t.manifest_id),r=T(t,E);return(0,O.jsxs)(p,{className:`cursor-pointer transition-colors hover:bg-accent/50 flex flex-col`,onClick:()=>e(`${j}/system/marketplace/${t.id}`),role:`link`,tabIndex:0,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(`${j}/system/marketplace/${t.id}`))},"data-testid":`marketplace-card-${t.manifest_id}`,children:[(0,O.jsxs)(f,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,O.jsx)(w,{iconUrl:t.icon_url,displayName:r.displayName,manifestId:t.manifest_id}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(_,{className:`text-base truncate`,children:r.displayName}),(0,O.jsx)(c,{className:`text-xs truncate`,children:(0,O.jsx)(`code`,{className:`font-mono`,children:t.manifest_id})})]}),t.publisher&&t.publisher!==`private`&&(0,O.jsx)(g,{variant:t.publisher===`objectstack`?`default`:`secondary`,className:`shrink-0`,children:t.publisher})]}),(0,O.jsxs)(l,{className:`flex-1 flex flex-col gap-2`,children:[(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:r.description||a(`marketplace.noDescription`)}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[n&&(0,O.jsxs)(g,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,O.jsx)(v,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.installedBadge`,{version:n.version})]}),t.latest_version?.version&&(0,O.jsxs)(g,{variant:`outline`,className:`text-xs`,children:[(0,O.jsx)(b,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.versionBadge`,{version:t.latest_version.version})]}),t.category&&(0,O.jsx)(g,{variant:`outline`,className:`text-xs`,children:Q(t.category)}),t.latest_version?.published_at&&(0,O.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:A(t.latest_version.published_at)})]})]})]},t.id)})})]}):(0,O.jsx)(se,{})}export{E as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,f as n,r,y as i}from"./vendor-react-BgOXCBVK.js";import{b as a}from"./infrastructure-ChmEYj6c.js";import{H as o}from"./vendor-objectstack-DneBps14.js";import{Vt as s,X as c}from"./framework-B8ndNKrd.js";import{r as l}from"./data-adapter-yS4exRPT.js";import{i as u}from"./plugin-form-Bv0Hi0E6.js";import{i as d,r as f}from"./assistantBus-DNogw1P-.js";var p=e(i(),1),m=r(),h=(0,p.createContext)(!1),g=`preview`,_=`draft`;function v(e){return new URLSearchParams(e).get(g)===_}var y=!1;function b(){y=!0}function x({force:e,children:r}){let i=t(),a=n(),o=(0,p.useMemo)(()=>v(i.search),[i.search]),[s,c]=(0,p.useState)(o);return(0,p.useEffect)(()=>{if(o){c(!0),y=!1;return}if(!s)return;if(y){y=!1,c(!1);return}let e=new URLSearchParams(i.search);e.set(g,_),a(`${i.pathname}?${e.toString()}${i.hash}`,{replace:!0})},[o,s,i.pathname,i.search,i.hash,a]),(0,m.jsx)(h.Provider,{value:e??(o||s),children:r})}function S(){return(0,p.useContext)(h)}var C=a();function w(){return``}function T(e={}){let{previewDrafts:t=!1,environmentId:n,onSaveAdvisory:r}=e,i=new l({baseUrl:w(),previewDrafts:t,fetch:C,...r?{onSaveAdvisory:r}:{}});return n?i.withEnvironment(n):i}var E=3e5,D=[`app`,`view`],O=1e3,k={apps:`app`,objects:`object`,dashboards:`dashboard`,reports:`report`,pages:`page`},A=`objectui:metadata:`;function j(){try{let e=import.meta;if(e&&e.env&&typeof e.env.MODE==`string`)return e.env.MODE!==`production`}catch{}return!1}var M=j();function N(...e){M&&console.debug(`[MetadataProvider]`,...e)}function P(e){return Array.isArray(e)?e:e&&typeof e==`object`&&`items`in e&&Array.isArray(e.items)?e.items:[]}function F(e){return e==null?null:typeof e==`object`&&`item`in e?e.item??null:e}function I(e){return!!e&&typeof e==`object`&&`name`in e&&typeof e.name==`string`}function L(e){return!!e&&typeof e==`object`&&!!e.viewKind&&!!e.object}function R(e,t){let n=t.name||`${t.object}.${t.viewKind}`,r=t.config&&typeof t.config==`object`?t.config:{},i={...r,name:n,label:t.label??r.label,isDefault:!!t.isDefault};t.viewKind===`form`?(e.formViews[n]=i,(t.isDefault||!e.form)&&(e.form=i)):(e.listViews[n]=i,t.isDefault&&(e.primary=i))}function z(e,t){if(!e.length||!t.length)return e;let n={},r=new Set;for(let e of t)L(e)&&r.add(e.object);for(let e of t){if(L(e)){R(n[e.object]||={listViews:{},formViews:{}},e);continue}let t=e?.name||e?.list?.data?.object||e?.form?.data?.object;if(!t||r.has(t))continue;let i=n[t]||={listViews:{},formViews:{}};for(let n of o(t,e))R(i,n)}return e.map(e=>{let t=n[e.name];if(!t)return e;let r=e.listViews||e.list_views||{},i=e.formViews||e.form_views||{},a={...e,listViews:{...t.listViews,...r}};return(Object.keys(t.formViews).length||Object.keys(i).length)&&(a.formViews={...t.formViews,...i}),t.primary&&!e.list&&(a.list=t.primary),t.form&&!e.form&&(a.form=t.form),a})}function B(e){if(!e?.length)return e;let t={};for(let n of e){let e=n?.fields;if(!e)continue;let r=Array.isArray(e)?e.map(e=>[e?.name,e]):Object.entries(e);for(let[e,i]of r){let r=i;if(!e||!r?.inlineEdit||r.type!==`master_detail`&&r.type!==`lookup`)continue;let a=r.reference??r.reference_to;a&&(t[a]||=[]).push({childObject:n.name,relationshipField:e,inlineMode:u(n,r.inlineEdit,{relationshipField:e}),...r.inlineTitle?{title:r.inlineTitle}:{},...Array.isArray(r.inlineColumns)?{columns:r.inlineColumns}:{},...typeof r.inlineAmountField==`string`?{amountField:r.inlineAmountField}:{}})}}return Object.keys(t).length?e.map(e=>{let n=t[e.name];if(!n?.length)return e;let r={...e.form||{type:`simple`}},i=Array.isArray(r.subforms)?r.subforms:[],a=new Set(i.map(e=>e.childObject));r.subforms=[...n.filter(e=>!a.has(e.childObject)),...i];let o={...e,form:r};return e.formViews?.default&&(o.formViews={...e.formViews,default:{...e.formViews.default,subforms:r.subforms}}),o}):e}function V(){return{status:`idle`,items:[],byName:new Map,error:null,fetchedAt:0,promise:null}}function H(e){if(typeof sessionStorage>`u`)return null;try{let t=sessionStorage.getItem(A+e);if(!t)return null;let n=JSON.parse(t);return Array.isArray(n)?n:null}catch{return null}}function U(e,t){if(!(typeof sessionStorage>`u`))try{sessionStorage.setItem(A+e,JSON.stringify(t))}catch{}}function W({children:e,adapter:t,ttlMs:n=E}){let r=(0,p.useRef)(new Map),i=(0,p.useRef)(new Map),a=(0,p.useRef)(t);a.current=t;let o=S(),l=(0,p.useMemo)(()=>o?T({previewDrafts:!0}):null,[o]),u=(0,p.useRef)(l);u.current=l;let[h,g]=(0,p.useState)(0),_=(0,p.useCallback)(()=>{typeof queueMicrotask==`function`?queueMicrotask(()=>g(e=>e+1)):Promise.resolve().then(()=>g(e=>e+1))},[]),v=(0,p.useRef)(!1);(0,p.useEffect)(()=>{if(!v.current){v.current=!0;return}r.current.clear(),i.current.clear(),_()},[o,_]);let y=(0,p.useCallback)(e=>{let t=r.current.get(e);return t||(t=V(),r.current.set(e,t)),t},[]),b=(0,p.useCallback)(e=>{let t=y(e);if(t.promise)return t.promise;if(t.status===`ready`&&Date.now()-t.fetchedAt<n)return N(`cache hit (fresh) type=${e} items=${t.items.length}`),Promise.resolve(t.items);if(t.status===`error`&&Date.now()-t.fetchedAt<O)return N(`cache hit (recent failure) type=${e}`),Promise.resolve(t.items);let r=Date.now();t.status=`loading`,t.error=null;let i=u.current,o=(i?i.list(e):a.current.getClient().meta.getItems(e)).then(n=>{let a=P(n);if(e===`object`)for(let e of a)s(e);t.items=a,t.status=`ready`,t.error=null,t.fetchedAt=Date.now(),t.promise=null,t.byName.clear();for(let e of a)I(e)&&t.byName.set(e.name,e);return e===`app`&&!i&&U(e,a),N(`fetched type=${e} items=${a.length} in ${Date.now()-r}ms`),_(),a}).catch(n=>{let r=n instanceof Error?n:Error(String(n));return t.status=`error`,t.error=r,t.promise=null,t.fetchedAt=Date.now(),N(`fetch failed type=${e}`,r),_(),[]});return t.promise=o,o},[_,y,n]),x=(0,p.useCallback)((e,t)=>{let n=y(e);if(n.byName.has(t))return N(`item cache hit type=${e} name=${t}`),Promise.resolve(n.byName.get(t)??null);let r=i.current.get(e);r||(r=new Map,i.current.set(e,r));let o=r.get(t);if(o)return o;let s=Date.now(),c=u.current,l=(c?c.get(e,t):a.current.getClient().meta.getItem(e,t)).then(i=>{let a=F(i);return a&&n.byName.set(t,a),N(`fetched item type=${e} name=${t} in ${Date.now()-s}ms`),r.delete(t),a}).catch(n=>(r.delete(t),N(`fetch item failed type=${e} name=${t}`,n),null));return r.set(t,l),l},[y]),C=(0,p.useCallback)(async e=>{if(e){let t=y(e);t.fetchedAt=0,t.byName.clear(),await b(e);return}let t=Array.from(r.current.keys()).filter(e=>r.current.get(e).status!==`idle`);await Promise.all(t.map(e=>{let t=r.current.get(e);return t.fetchedAt=0,t.byName.clear(),b(e)}))},[b,y]),w=(0,p.useCallback)((e,t)=>{let n=r.current.get(e);n&&(t?(n.byName.delete(t),n.items=n.items.filter(e=>e?.name!==t),N(`invalidated type=${e} name=${t}`)):(n.status=`idle`,n.items=[],n.byName.clear(),n.error=null,n.fetchedAt=0,N(`invalidated type=${e}`)),_())},[_]);(0,p.useEffect)(()=>{if(o)return f(({type:e})=>{w(e)})},[o,w]),(0,p.useEffect)(()=>d(()=>{try{a.current?.clearCache?.()}catch{}C()}),[C]);let[A,j]=(0,p.useState)(!0),[M,L]=(0,p.useState)(null);(0,p.useEffect)(()=>{let e=!1,t=o?null:H(`app`);if(t){let e=y(`app`);e.items=t,e.status=`ready`,e.fetchedAt=0;for(let n of t)I(n)&&e.byName.set(n.name,n);_(),j(!1)}return(async()=>{for(let t of D)try{await b(t),e||L(null)}catch(t){e||L(t instanceof Error?t:Error(String(t)))}e||j(!1)})(),()=>{e=!0}},[t,b,y,_,o]);let R=(0,p.useMemo)(()=>{let e=e=>{let t=y(e);return t.status===`idle`&&b(e),t.items};return{apps:y(`app`).items,get objects(){let t=e(k.objects),n=e(`view`);return B(n.length?z(t,n):t)},get dashboards(){return e(k.dashboards)},get reports(){return e(k.reports)},get pages(){return e(k.pages)},loading:A,error:M??y(`app`).error,refresh:C,invalidate:w,ensureType:b,getItem:x,getItemsByType:t=>e(t),getTypeStatus:e=>y(e).status}},[h,A,M,b,x,y,C,w]);return(0,m.jsx)(c.Provider,{value:R,children:e})}export{x as a,_ as i,T as n,b as o,g as r,S as s,W as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{f as t,h as n,m as r,r as i,y as a}from"./vendor-react-BgOXCBVK.js";import{_ as o,n as ee,t as s,v as c}from"./infrastructure-ChmEYj6c.js";import{U as l,z as u}from"./vendor-objectstack-DneBps14.js";import{T as te,gn as ne,mt as re,y as ie}from"./framework-B8ndNKrd.js";import{Ea as ae,dt as d,ei as oe,go as se,ht as f,js as p,mt as m,oa as h,qr as g,vt as _}from"./ui-components-mPgY5chB.js";import{i as ce,r as le,s as ue}from"./MetadataProvider-CnYsadFP.js";import{t as de}from"./RecordDetailView-DrVbrbaN.js";import{a as fe,c as pe,i as me,n as he,o as ge,r as _e,s as ve}from"./InterfaceListPage-CfhSyYAw.js";import{t as ye}from"./getIcon-QmYxLBSb.js";import{o as be}from"./createDerive-C1PaRnFZ.js";import{n as xe,t as Se}from"./CreateViewDialog-CUvjCA1o.js";import{d as Ce}from"./plugins-views-BxwTmeut.js";import{o as we,t as v}from"./runtime-metadata-persistence-DDZN-tZg.js";import{i as y,n as b,r as x,t as S}from"./drillUrlFilters-DHAQHZbx.js";var C=e(a(),1),w=i(),T=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),E=4,D={"=":`eq`,...Object.fromEntries(Object.entries(S).map(([e,t])=>[t,e]))};function O(e){let t=[];for(let[n,r,i]of e){let e={field:n,operator:l(D[r]??r)};i!==void 0&&(e.value=i);let a=u.safeParse(e);if(!a.success){console.debug(`[ObjectDataPage] Dropped URL filter on "${n}" from the saved view: operator "${r}" has no canonical ViewFilterRule form.`);continue}t.push(a.data)}return t}function k(e,t,n){let r=O(n);return{...e,columns:Array.isArray(e.columns)&&e.columns.length>0?e.columns:t,...r.length?{filter:r}:{}}}function A({dataSource:e,objects:i}){let{appName:a,objectName:l}=r(),{t:u}=te(),{objectLabel:S,fieldLabel:D}=ie(),O=t(),[A,j]=n(),{can:M}=ee(),{canRead:N}=s(l??``),{user:P,activeOrganization:F}=c(),I=o(),L=be(),R=pe()===`group`,z=ue(),[Te,B]=C.useState(!1),V=C.useMemo(()=>(i||[]).find(e=>e.name===l),[i,l]),[Ee]=C.useState(()=>ve(new URLSearchParams(window.location.search))),De=C.useCallback(e=>{j(t=>ge(t,e),{replace:!0})},[j]),H=Array.from(A.entries()).filter(([e])=>e.startsWith(`filter[`)).map(([e,t])=>`${e}=${t}`).join(`&`),U=C.useMemo(()=>{let e=y(new URLSearchParams(H)),t=e.filter(([e])=>N(e));if(t.length<e.length){let t=e.filter(([e])=>!N(e)).map(([e])=>e);console.warn(`[ObjectDataPage] Dropped URL filter(s) on unreadable field(s): ${t.join(`, `)}`)}return ne(t,{currentUserId:P?.id??null,currentOrgId:F?.id??null})},[H,N,P?.id,F?.id]),Oe=C.useMemo(()=>x(U),[U]),ke=C.useCallback(e=>{j(t=>b(new URLSearchParams(t),e))},[j]),W=C.useMemo(()=>_e(V,{orgAttribution:R}).filter(e=>N(e)),[V,N,R]),G=C.useMemo(()=>{let e=V?.fields;if(!e||typeof e!=`object`)return;let t=Object.entries(e).filter(([e,t])=>t&&!t.hidden&&T.has(t.type)&&N(e)).slice(0,E).map(([e])=>({field:e}));return t.length>0?{element:`dropdown`,fields:t}:void 0},[V,N]),K=C.useCallback(e=>`/apps/${a}/${l}/record/${encodeURIComponent(String(e))}`,[a,l]),q=re({navigation:{mode:`drawer`},objectName:l??``,onNavigate:e=>O(K(e))}),J=A.get(`recordId`),Ae=C.useCallback((e,t)=>{let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(K(n),`_blank`);return}n!=null&&j(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t})},[K,j]),je=C.useCallback(()=>{j(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[j]);C.useEffect(()=>{J&&!q.isOpen?q.open({id:J}):!J&&q.isOpen&&q.close()},[J]);let Y=C.useMemo(()=>fe(V),[V]),X=C.useMemo(()=>he(V),[V]),Z=C.useMemo(()=>me(V),[V]),Q=C.useMemo(()=>{let e=[`grid`];return Y&&e.push(`kanban`),X&&e.push(`calendar`),Z&&e.push(`gallery`),e},[Y,X,Z]),$=C.useMemo(()=>{if(V)return{type:`list-view`,objectName:V.name,viewType:`grid`,columns:W,...U.length?{filter:U}:{},kanban:Y,calendar:X,gallery:Z,userFilters:G,appearance:{allowedVisualizations:Q},showViewSwitcher:Q.length>1,userActions:{search:!0,sort:!0,filter:!0,rowHeight:!0,group:!0,hideFields:!0},showRecordCount:!0}},[V,W,U,Y,X,Z,G,Q]),Me=C.useCallback(async t=>{try{let n=k(t,W,U),r=we(l??``,n,{name:t.name,label:t.label}),i=await v(`view`,r.name,r,{metadataClient:L,dataSource:e,objectName:l});if(i){let e=z?``:`?${le}=${ce}`;O(`../view/${i}${e}`,{relative:`path`})}}catch(e){console.error(`[ObjectDataPage] Failed to save view:`,e)}},[W,U,L,e,O,l,z]);return V?M(V.name,`read`)?(0,w.jsxs)(`div`,{className:`h-full flex flex-col bg-background min-w-0 overflow-hidden`,"data-testid":`object-data-page`,children:[(0,w.jsx)(`div`,{className:`hidden sm:block`,children:(0,w.jsx)(xe,{title:(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`truncate`,children:S(V)}),(0,w.jsx)(`span`,{className:`rounded border px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:u(`console.objectData.badge`,{defaultValue:`Data`})})]}),description:u(`console.objectData.description`,{defaultValue:`URL-defined data slice — not bound to any saved view.`}),icon:C.createElement(ye(V?.icon),{className:`h-4 w-4`}),actions:(0,w.jsxs)(w.Fragment,{children:[M(V.name,`create`)&&(0,w.jsxs)(g,{size:`sm`,onClick:()=>O(`../new`,{relative:`path`}),className:`shadow-none gap-1.5 h-8 sm:h-9`,"data-testid":`object-data-new-button`,children:[(0,w.jsx)(ae,{className:`h-4 w-4`}),(0,w.jsx)(`span`,{className:`hidden sm:inline`,children:u(`console.objectView.new`)})]}),I&&(0,w.jsxs)(g,{size:`sm`,variant:`outline`,onClick:()=>B(!0),className:`shadow-none gap-1.5 h-8 sm:h-9`,"data-testid":`object-data-save-as-view`,children:[(0,w.jsx)(h,{className:`h-4 w-4`}),(0,w.jsx)(`span`,{className:`hidden sm:inline`,children:u(`console.objectData.saveAsView`,{defaultValue:`Save as view`})})]})]})})}),U.length>0&&(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-b px-3 sm:px-4 py-2 shrink-0`,"data-testid":`object-data-filter-chips`,children:[(0,w.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:u(`console.objectData.filteredBy`,{defaultValue:`Filtered by`})}),Oe.map(({field:e,text:t})=>(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full border bg-muted/40 px-2 py-0.5 text-xs`,children:[(0,w.jsx)(`span`,{className:`font-medium`,children:D(V.name,e,e)}),(0,w.jsx)(`span`,{className:`text-muted-foreground`,children:t}),(0,w.jsx)(`button`,{type:`button`,onClick:()=>ke(e),className:`ml-0.5 rounded-full hover:bg-muted p-0.5`,"aria-label":u(`console.objectData.removeFilter`,{defaultValue:`Remove filter {{field}}`,field:e}),"data-testid":`object-data-remove-filter-${e}`,children:(0,w.jsx)(oe,{className:`h-3 w-3`})})]},e))]}),(0,w.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:$&&(0,w.jsx)(Ce,{schema:$,dataSource:e,userFilterSelections:Ee,onUserFilterSelectionsChange:De,onRowClick:Ae})}),q.isOverlay&&(0,w.jsx)(d,{...q,setIsOpen:e=>{e||je()},title:S(V),children:t=>(0,w.jsx)(de,{objectNameOverride:V.name,recordIdOverride:String(t?.id??t?._id??J??``),embedded:!0,dataSource:e,objects:i,onEdit:()=>{}})}),I&&(0,w.jsx)(Se,{open:Te,onOpenChange:B,onCreate:Me,objectDef:V})]}):(0,w.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`object-data-403`,children:(0,w.jsxs)(m,{children:[(0,w.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,w.jsx)(se,{className:`h-6 w-6 text-muted-foreground`})}),(0,w.jsx)(_,{children:u(`console.objectData.noAccessTitle`,{defaultValue:`Access denied`})}),(0,w.jsx)(f,{children:u(`console.objectData.noAccess`,{defaultValue:`You do not have permission to view this data.`})})]})}):(0,w.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,w.jsxs)(m,{children:[(0,w.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,w.jsx)(p,{className:`h-6 w-6 text-muted-foreground`})}),(0,w.jsx)(_,{children:u(`console.objectView.objectNotFound`)}),(0,w.jsx)(f,{children:u(`console.objectView.objectNotFoundDescription`,{objectName:l})})]})})}export{A as ObjectDataPage};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{d as n,f as r,h as i,m as a,r as o,y as s}from"./vendor-react-BgOXCBVK.js";import{_ as c}from"./infrastructure-ChmEYj6c.js";import{Q as l,T as u,Z as d,yt as f}from"./framework-B8ndNKrd.js";import{Na as p,ht as m,ls as h,mt as g,ut as _,vt as v}from"./ui-components-mPgY5chB.js";import"./MetadataProvider-CnYsadFP.js";import{r as y}from"./ExpressionProvider-qmd0nVCn.js";import{C as b}from"./RecordDetailView-DrVbrbaN.js";import{t as x}from"./preferLocal-CKqyhTP9.js";import{t as S}from"./InterfaceListPage-CfhSyYAw.js";import{n as C,t as w}from"./MetadataInspector-qQ85bFun.js";var T=t({PageView:()=>O}),E=e(s(),1),D=o();function O(){let{t:e}=u(),{pageName:t}=a(),[o]=i(),{showDebug:s}=C(),T=r(),O=n(),k=c(),{pages:A,objects:j,getTypeStatus:M}=l(),{app:N}=y(),P=d(),[F,I]=(0,E.useState)(0),L=x(A,t,N?._packageId);if(!L){let n=M?.(`page`);return n===`idle`||n===`loading`?(0,D.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`page-loading`,children:(0,D.jsx)(_,{className:`h-5 w-5 text-muted-foreground`})}):(0,D.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,D.jsxs)(g,{children:[(0,D.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,D.jsx)(h,{className:`h-6 w-6 text-muted-foreground`})}),(0,D.jsx)(v,{children:e(`empty.pageNotFound`)}),(0,D.jsx)(m,{children:e(`empty.pageNotFoundDescription`,{name:t})})]})})}let R=Object.fromEntries(o.entries()),z=O.pathname.match(/\/apps\/([^/]+)/)?.[1],B=k&&!!z&&!!t;return(0,D.jsx)(b,{dataSource:P,objects:j,onRefresh:()=>I(e=>e+1),children:(0,D.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,D.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[B&&(0,D.jsx)(`button`,{type:`button`,onClick:()=>{B&&T(`/apps/${z}/metadata/page/${encodeURIComponent(t)}`)},className:`absolute right-3 top-3 z-30 inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-background/90 text-muted-foreground shadow-sm backdrop-blur hover:bg-accent hover:text-accent-foreground`,"data-testid":`page-edit-in-studio-button`,title:e(`common.editInStudio`,{defaultValue:`Edit in studio`}),"aria-label":e(`common.editInStudio`,{defaultValue:`Edit in studio`}),children:(0,D.jsx)(p,{className:`h-3.5 w-3.5`})}),L.interfaceConfig?.source?(0,D.jsx)(S,{page:L,reserveEditAffordance:B},F):(0,D.jsx)(f,{schema:{...L,type:L.type||`page`,pageType:L.type,context:{...L.context,params:R,refreshKey:F}}},F)]}),(0,D.jsx)(w,{open:s,sections:[{title:`Page Configuration`,data:L}]})]})})}export{T as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{r as t,y as n}from"./vendor-react-BgOXCBVK.js";import{d as r,v as i}from"./infrastructure-ChmEYj6c.js";import{T as a}from"./framework-B8ndNKrd.js";import{Dr as o,E as s,Er as c,Fr as l,Ir as u,Ln as d,Mr as f,Nn as p,Nr as m,Or as h,Pr as g,Tr as _,_o as v,ac as y,ei as b,go as x,jr as S,kr as C,li as w,nc as T,pi as E,qr as D}from"./ui-components-mPgY5chB.js";var O=e(n(),1),k=t();function A(){let{t:e}=a(),{user:t,updateUser:n,isLoading:x,changePassword:A,setInitialPassword:M,hasLocalPassword:N}=i(),{upload:P}=s(),[F,I]=(0,O.useState)(t?.name??``),[L,R]=(0,O.useState)(!1),[z,B]=(0,O.useState)(null),V=(0,O.useRef)(null),[H,U]=(0,O.useState)(!1),[W,G]=(0,O.useState)(null);return(0,O.useEffect)(()=>{I(t?.name??``)},[t?.name]),t?(0,k.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-2xl`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:e(`profile.title`,{defaultValue:`Profile`})}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`profile.subtitle`,{defaultValue:`Manage your account settings`})})]}),(0,k.jsx)(_,{children:(0,k.jsxs)(c,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,k.jsxs)(f,{className:`h-16 w-16`,children:[(0,k.jsx)(g,{src:t.image??void 0,alt:t.name??`User`}),(0,k.jsx)(m,{className:`text-lg bg-primary text-primary-foreground`,children:r(t)})]}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`text-lg font-semibold truncate`,children:t.name??`User`}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground truncate`,children:t.email}),(0,k.jsx)(S,{variant:`secondary`,className:`mt-1`,children:t.role??`member`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-2 shrink-0`,children:[(0,k.jsx)(`input`,{ref:V,type:`file`,accept:`image/*`,className:`hidden`,onChange:async e=>{let t=e.target.files?.[0];if(V.current&&(V.current.value=``),t){U(!0),G(null);try{let e=await P(t);await n({image:e.url})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}}},"data-testid":`profile-avatar-file`}),(0,k.jsxs)(D,{type:`button`,variant:`outline`,size:`sm`,disabled:H,onClick:()=>V.current?.click(),"data-testid":`profile-avatar-upload-btn`,children:[H?(0,k.jsx)(v,{className:`mr-2 h-4 w-4 animate-spin`}):(0,k.jsx)(E,{className:`mr-2 h-4 w-4`}),t.image?e(`profile.avatar.replace`,{defaultValue:`Replace`}):e(`profile.avatar.upload`,{defaultValue:`Upload`})]}),t.image&&(0,k.jsxs)(D,{type:`button`,variant:`ghost`,size:`sm`,disabled:H,onClick:async()=>{U(!0),G(null);try{await n({image:null})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}},"data-testid":`profile-avatar-remove-btn`,children:[(0,k.jsx)(b,{className:`mr-2 h-4 w-4`}),e(`profile.avatar.remove`,{defaultValue:`Remove`})]})]})]}),W&&(0,k.jsxs)(l,{variant:`destructive`,className:`mt-4`,children:[(0,k.jsx)(y,{className:`h-4 w-4`}),(0,k.jsx)(u,{children:W})]})]})}),(0,k.jsxs)(_,{children:[(0,k.jsxs)(h,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(w,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(C,{className:`text-base sm:text-lg`,children:e(`profile.info.title`,{defaultValue:`Personal Information`})})]}),(0,k.jsx)(o,{children:e(`profile.info.description`,{defaultValue:`Update your name and view account details`})})]}),(0,k.jsx)(c,{children:(0,k.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),B(null),R(!1);try{await n({name:F}),R(!0)}catch(e){B(e instanceof Error?e.message:String(e))}},className:`space-y-4`,children:[z&&(0,k.jsxs)(l,{variant:`destructive`,children:[(0,k.jsx)(y,{className:`h-4 w-4`}),(0,k.jsx)(u,{children:z})]}),L&&(0,k.jsxs)(l,{children:[(0,k.jsx)(T,{className:`h-4 w-4 text-green-600`}),(0,k.jsx)(u,{className:`text-green-800 dark:text-green-400`,children:e(`profile.info.saved`,{defaultValue:`Profile updated successfully.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(d,{htmlFor:`profile-name`,children:e(`profile.info.name`,{defaultValue:`Name`})}),(0,k.jsx)(p,{id:`profile-name`,type:`text`,value:F,onChange:e=>I(e.target.value),required:!0,"aria-required":`true`,disabled:x})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(d,{htmlFor:`profile-email`,children:e(`profile.info.email`,{defaultValue:`Email`})}),(0,k.jsx)(p,{id:`profile-email`,type:`email`,value:t.email,disabled:!0,className:`bg-muted text-muted-foreground`}),(0,k.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`profile.info.emailImmutable`,{defaultValue:`Email cannot be changed.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(d,{children:e(`profile.info.role`,{defaultValue:`Role`})}),(0,k.jsx)(p,{type:`text`,value:t.role??`member`,disabled:!0,className:`bg-muted text-muted-foreground`})]}),(0,k.jsx)(D,{type:`submit`,disabled:x,className:`w-full sm:w-auto`,children:x?e(`profile.saving`,{defaultValue:`Saving…`}):e(`profile.info.save`,{defaultValue:`Save Changes`})})]})})]}),(0,k.jsx)(j,{changePassword:A,setInitialPassword:M,hasLocalPassword:N})]}):null}function j({changePassword:e,setInitialPassword:t,hasLocalPassword:n,highlight:r,onPasswordSet:i}){let{t:s}=a(),[f,m]=(0,O.useState)(null),[g,v]=(0,O.useState)(``),[b,S]=(0,O.useState)(``),[w,E]=(0,O.useState)(``),[A,j]=(0,O.useState)(!1),[M,N]=(0,O.useState)(null),[P,F]=(0,O.useState)(null);(0,O.useEffect)(()=>{let e=!1;return n().then(t=>{e||m(t)}).catch(()=>{e||m(!1)}),()=>{e=!0}},[n]);let I=()=>{v(``),S(``),E(``)},L=async n=>{if(n.preventDefault(),N(null),F(null),b.length<8){N(s(`profile.password.tooShort`,{defaultValue:`Password must be at least 8 characters`}));return}if(b!==w){N(s(`profile.password.mismatch`,{defaultValue:`Passwords do not match`}));return}j(!0);try{if(f){if(!g){N(s(`profile.password.enterCurrent`,{defaultValue:`Enter your current password`})),j(!1);return}await e(g,b),F(s(`profile.password.changed`,{defaultValue:`Password changed.`}))}else await t(b),F(s(`profile.password.localSet`,{defaultValue:`Local password set. You can now sign in with email and password on this environment.`})),m(!0),i?.();I()}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}},R=f===null;return(0,k.jsxs)(_,{className:r?`ring-2 ring-amber-300 dark:ring-amber-700`:void 0,children:[(0,k.jsxs)(h,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(x,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(C,{className:`text-base sm:text-lg`,children:f?s(`profile.password.changeTitle`,{defaultValue:`Change Password`}):s(`profile.password.setTitle`,{defaultValue:`Set Local Password`})})]}),(0,k.jsx)(o,{children:f?s(`profile.password.changeDescription`,{defaultValue:`Update the password you use to sign in to this environment.`}):s(`profile.password.setDescription`,{defaultValue:`You signed in via single sign-on. Set a local password to also sign in with email and password on this environment.`})})]}),(0,k.jsx)(c,{children:(0,k.jsxs)(`form`,{onSubmit:L,className:`space-y-4 max-w-md`,children:[f&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(d,{htmlFor:`current-password`,children:s(`profile.password.current`,{defaultValue:`Current password`})}),(0,k.jsx)(p,{id:`current-password`,type:`password`,autoComplete:`current-password`,value:g,onChange:e=>v(e.target.value),disabled:A||R,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(d,{htmlFor:`new-password`,children:f?s(`profile.password.new`,{defaultValue:`New password`}):s(`profile.password.password`,{defaultValue:`Password`})}),(0,k.jsx)(p,{id:`new-password`,type:`password`,autoComplete:`new-password`,value:b,onChange:e=>S(e.target.value),disabled:A||R,minLength:8,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(d,{htmlFor:`confirm-password`,children:s(`profile.password.confirm`,{defaultValue:`Confirm password`})}),(0,k.jsx)(p,{id:`confirm-password`,type:`password`,autoComplete:`new-password`,value:w,onChange:e=>E(e.target.value),disabled:A||R,minLength:8,required:!0})]}),M&&(0,k.jsxs)(l,{variant:`destructive`,children:[(0,k.jsx)(y,{className:`h-4 w-4`}),(0,k.jsx)(u,{children:M})]}),P&&(0,k.jsxs)(l,{children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(u,{children:P})]}),(0,k.jsx)(D,{type:`submit`,disabled:A||R,className:`w-full sm:w-auto`,children:A?s(`profile.saving`,{defaultValue:`Saving…`}):f?s(`profile.password.changeAction`,{defaultValue:`Change password`}):s(`profile.password.setAction`,{defaultValue:`Set password`})})]})})]})}export{A as ProfilePage};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{r as t,y as n}from"./vendor-react-BgOXCBVK.js";import{Z as r}from"./framework-B8ndNKrd.js";import{Bt as i,Dr as a,Ea as o,Er as ee,Gt as s,Ht as c,Is as te,Ln as l,Nn as u,Ns as ne,Or as re,Ss as ie,Tr as ae,Ut as d,Vt as oe,Wt as se,_a as ce,_r as f,ba as le,br as p,gr as m,hr as h,jr as ue,kr as de,na as fe,qr as g,vr as _,wo as pe,yr as v}from"./ui-components-mPgY5chB.js";import{r as y}from"./vendor-ui-utils-BGw4RtYu.js";import"./src-BBKXMp-o.js";var b=e(n(),1),x=t();function me(e){return e?e.replace(/^\/+/,``).match(/^forms\/([^/?#]+)/i)?.[1]??null:null}function S(e){return e.trim().toLowerCase().replace(/[^a-z0-9-_]+/g,`-`).replace(/^-+|-+$/g,``)}function C(){let e=r()?.getClient?.(),[t,n]=(0,b.useState)([]),[C,he]=(0,b.useState)([]),[w,T]=(0,b.useState)(!0),[E,D]=(0,b.useState)(null),[ge,O]=(0,b.useState)(!1),[k,A]=(0,b.useState)(``),[j,M]=(0,b.useState)(``),[N,P]=(0,b.useState)(!1),[_e,F]=(0,b.useState)(!1),[I,L]=(0,b.useState)(null),[R,z]=(0,b.useState)(``),[B,V]=(0,b.useState)(`thank-you`),[H,U]=(0,b.useState)(``),[W,G]=(0,b.useState)(``),[K,q]=(0,b.useState)(``),[J,Y]=(0,b.useState)(!1),X=async()=>{if(!e?.meta?.getItems){D(`meta.getItems is not available on this client`),T(!1);return}T(!0),D(null);try{let t=await e.meta.getItems(`view`),r=Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[],i=[],a=[];for(let e of r){let t=e?.spec??e;if(!(t?.sections||t?.groups||t?.form||t?.type===`simple`||t?.type===`tabbed`||t?.type===`wizard`||t?.viewType===`form`))continue;let n=t?.sharing,r=n?.publicLink,o=me(r);n?.allowAnonymous&&o&&r?i.push({name:t?.name??e?.name,label:t?.label,object:t?.object,slug:o,publicLink:r,updatedAt:e?.updatedAt??e?.updated_at,spec:t}):a.push({name:t?.name??e?.name,label:t?.label,object:t?.object,spec:t})}n(i),he(a)}catch(e){D(e?.message??String(e))}finally{T(!1)}};(0,b.useEffect)(()=>{X()},[]);let ve=typeof window<`u`?window.location.origin:``,Z=e=>`${ve}/console/f/${e}`,ye=e=>`<iframe src="${Z(e)}" width="100%" height="640" frameborder="0" style="border:0;"></iframe>`,be=e=>`<iframe\n src={\`${Z(e)}\`}\n title="Public form"\n style={{ width: '100%', height: 640, border: 0 }}\n/>`,Q=async(e,t)=>{try{await navigator.clipboard.writeText(t),y.success(`Copied ${e}`)}catch{y.error(`Clipboard unavailable`)}},xe=async()=>{if(!k||!j)return;let t=C.find(e=>e.name===k);if(!t)return;let n=S(j);if(!n){y.error(`Invalid slug`);return}let r={...t.spec,sharing:{...t.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${n}`}};P(!0);try{await e.meta.saveItem(`view`,t.name,r),y.success(`Published ${t.name}`),O(!1),A(``),M(``),await X()}catch(e){y.error(`Publish failed: ${e?.message??e}`)}finally{P(!1)}},Se=e=>{L(e),z(e.slug);let t=e.spec?.submitBehavior,n=t?.kind??`thank-you`;V(n),U(t?.title??``),G(t?.message??``),q(t?.url??``),F(!0)},Ce=async()=>{if(!I)return;let t=S(R);if(!t){y.error(`Invalid slug`);return}let n;switch(B){case`thank-you`:n={kind:`thank-you`},H&&(n.title=H),W&&(n.message=W);break;case`redirect`:if(!K){y.error(`Redirect URL is required`);return}n={kind:`redirect`,url:K};break;case`continue`:case`next-record`:n={kind:B}}let r={...I.spec,sharing:{...I.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${t}`},submitBehavior:n};Y(!0);try{await e.meta.saveItem(`view`,I.name,r),y.success(`Saved ${I.name}`),F(!1),L(null),await X()}catch(e){y.error(`Save failed: ${e?.message??e}`)}finally{Y(!1)}},$=t.length>0;return(0,x.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4 p-4 md:p-6 overflow-auto`,children:[(0,x.jsxs)(ae,{children:[(0,x.jsxs)(re,{className:`flex flex-row items-start justify-between gap-4 space-y-0`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(de,{className:`flex items-center gap-2`,children:[(0,x.jsx)(le,{className:`h-4 w-4`}),`Public Forms`]}),(0,x.jsx)(a,{children:`Forms anyone can fill out — no login required. Publish a form to get a shareable link; submissions land directly in the bound object.`})]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsxs)(g,{variant:`default`,size:`sm`,onClick:()=>O(!0),disabled:C.length===0,title:C.length===0?`No non-public FormViews available`:`Publish a FormView`,children:[(0,x.jsx)(o,{className:`h-3.5 w-3.5`}),(0,x.jsx)(`span`,{className:`ml-1.5`,children:`Publish form…`})]}),(0,x.jsxs)(g,{variant:`outline`,size:`sm`,onClick:X,disabled:w,children:[(0,x.jsx)(ce,{className:`h-3.5 w-3.5 ${w?`animate-spin`:``}`}),(0,x.jsx)(`span`,{className:`ml-1.5`,children:`Refresh`})]})]})]}),(0,x.jsxs)(ee,{children:[E&&(0,x.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/10 p-3 text-sm text-destructive`,children:E}),!w&&!$&&(0,x.jsxs)(`div`,{className:`rounded-md border border-dashed p-6 text-center text-sm text-muted-foreground`,children:[(0,x.jsx)(`p`,{className:`font-medium text-foreground`,children:`No public forms yet`}),(0,x.jsxs)(`p`,{className:`mt-1`,children:[`Click `,(0,x.jsx)(`strong`,{children:`Publish form…`}),` above to share an existing form, or build a new one in Views & Apps and mark it public.`]})]}),$&&(0,x.jsxs)(i,{children:[(0,x.jsx)(se,{children:(0,x.jsxs)(s,{children:[(0,x.jsx)(d,{children:`Name`}),(0,x.jsx)(d,{children:`Object`}),(0,x.jsx)(d,{children:`Slug`}),(0,x.jsx)(d,{children:`Public URL`}),(0,x.jsx)(d,{className:`text-right`,children:`Actions`})]})}),(0,x.jsx)(oe,{children:t.map(e=>{let t=Z(e.slug);return(0,x.jsxs)(s,{children:[(0,x.jsx)(c,{children:(0,x.jsxs)(`div`,{className:`flex flex-col`,children:[(0,x.jsx)(`span`,{className:`font-medium`,children:e.label??e.name}),(0,x.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})}),(0,x.jsx)(c,{children:e.object?(0,x.jsx)(ue,{variant:`secondary`,children:e.object}):(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),(0,x.jsx)(c,{children:(0,x.jsx)(`code`,{className:`text-xs`,children:e.slug})}),(0,x.jsx)(c,{children:(0,x.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-xs text-primary underline-offset-2 hover:underline`,children:[t,(0,x.jsx)(ie,{className:`h-3 w-3`})]})}),(0,x.jsx)(c,{className:`text-right`,children:(0,x.jsxs)(`div`,{className:`inline-flex gap-1`,children:[(0,x.jsx)(g,{variant:`ghost`,size:`sm`,title:`Copy URL`,onClick:()=>Q(`URL`,t),children:(0,x.jsx)(pe,{className:`h-3.5 w-3.5`})}),(0,x.jsx)(g,{variant:`ghost`,size:`sm`,title:`Copy <iframe> embed`,onClick:()=>Q(`iframe snippet`,ye(e.slug)),children:(0,x.jsx)(te,{className:`h-3.5 w-3.5`})}),(0,x.jsx)(g,{variant:`ghost`,size:`sm`,title:`Copy React snippet`,onClick:()=>Q(`React snippet`,be(e.slug)),children:(0,x.jsx)(ne,{className:`h-3.5 w-3.5`})}),(0,x.jsx)(g,{variant:`ghost`,size:`sm`,title:`Edit sharing & post-submit behavior`,onClick:()=>Se(e),children:(0,x.jsx)(fe,{className:`h-3.5 w-3.5`})})]})})]},e.name)})})]})]})]}),(0,x.jsx)(h,{open:ge,onOpenChange:O,children:(0,x.jsxs)(m,{className:`sm:max-w-md`,children:[(0,x.jsxs)(v,{children:[(0,x.jsx)(p,{children:`Publish a FormView`}),(0,x.jsxs)(f,{children:[`Pick an existing FormView and turn it into a public form by enabling `,(0,x.jsx)(`code`,{className:`text-xs`,children:`sharing.allowAnonymous`}),` `,`and setting `,(0,x.jsx)(`code`,{className:`text-xs`,children:`publicLink`}),`.`]})]}),(0,x.jsxs)(`div`,{className:`space-y-3`,children:[(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`publish-view`,children:`FormView`}),(0,x.jsxs)(`select`,{id:`publish-view`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:k,onChange:e=>A(e.target.value),children:[(0,x.jsx)(`option`,{value:``,children:`— Select a FormView —`}),C.map(e=>(0,x.jsxs)(`option`,{value:e.name,children:[e.label??e.name,` (`,e.name,`) `,e.object?`· ${e.object}`:``]},e.name))]})]}),(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`publish-slug`,children:`URL slug`}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,x.jsx)(u,{id:`publish-slug`,placeholder:`contact-us`,value:j,onChange:e=>M(e.target.value)})]}),(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Lowercase letters, digits, dashes and underscores only.`})]})]}),(0,x.jsxs)(_,{children:[(0,x.jsx)(g,{variant:`ghost`,onClick:()=>O(!1),disabled:N,children:`Cancel`}),(0,x.jsx)(g,{onClick:xe,disabled:N||!k||!j,children:N?`Publishing…`:`Publish`})]})]})}),(0,x.jsx)(h,{open:_e,onOpenChange:F,children:(0,x.jsxs)(m,{className:`sm:max-w-lg`,children:[(0,x.jsxs)(v,{children:[(0,x.jsx)(p,{children:I?`Edit ${I.label??I.name}`:`Edit form`}),(0,x.jsx)(f,{children:`Configure the public URL and what happens after submit.`})]}),(0,x.jsxs)(`div`,{className:`space-y-3`,children:[(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`edit-slug`,children:`URL slug`}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,x.jsx)(u,{id:`edit-slug`,value:R,onChange:e=>z(e.target.value)})]})]}),(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`edit-behavior`,children:`After submit`}),(0,x.jsxs)(`select`,{id:`edit-behavior`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:B,onChange:e=>V(e.target.value),children:[(0,x.jsx)(`option`,{value:`thank-you`,children:`Show a thank-you panel`}),(0,x.jsx)(`option`,{value:`redirect`,children:`Redirect to a URL`}),(0,x.jsx)(`option`,{value:`continue`,children:`Reset for another response`}),(0,x.jsx)(`option`,{value:`next-record`,children:`Advance to next record (internal queues)`})]})]}),B===`thank-you`&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`edit-tytitle`,children:`Title`}),(0,x.jsx)(u,{id:`edit-tytitle`,placeholder:`Thanks!`,value:H,onChange:e=>U(e.target.value)})]}),(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`edit-tymsg`,children:`Message`}),(0,x.jsx)(u,{id:`edit-tymsg`,placeholder:`Your submission has been received.`,value:W,onChange:e=>G(e.target.value)})]})]}),B===`redirect`&&(0,x.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,x.jsx)(l,{htmlFor:`edit-url`,children:`Redirect URL`}),(0,x.jsx)(u,{id:`edit-url`,type:`url`,placeholder:`https://example.com/thanks`,value:K,onChange:e=>q(e.target.value)})]})]}),(0,x.jsxs)(_,{children:[(0,x.jsx)(g,{variant:`ghost`,onClick:()=>F(!1),disabled:J,children:`Cancel`}),(0,x.jsx)(g,{onClick:Ce,disabled:J||!R,children:J?`Saving…`:`Save`})]})]})})]})}export{C as PublicFormsPage};