@objectstack/console 17.5.0 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/CHANGELOG.md +806 -0
  2. package/dist/.objectstack-injection.json +2 -2
  3. package/dist/.objectui-sha +1 -1
  4. package/dist/assets/{ActionResultDialog-CLdIyOW6.js → ActionResultDialog-ChYnuROr.js} +3 -3
  5. package/dist/assets/{AiPendingActionsPage-OKYz66yR.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
  6. package/dist/assets/{ApiConsolePage-CcrKovu8.js → ApiConsolePage-CKYEqlMs.js} +1 -1
  7. package/dist/assets/AppDocsIndex-B5Tky2xg.js +1 -0
  8. package/dist/assets/{AppManagementPage-D_xz8cTZ.js → AppManagementPage-ZwyvnHpM.js} +1 -1
  9. package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
  10. package/dist/assets/{AuditLogPage-CoghqsZb.js → AuditLogPage-Sed6iMqP.js} +1 -1
  11. package/dist/assets/BookPage-DYjUsQIc.js +1 -0
  12. package/dist/assets/{ComponentNavView-BxsixSU9.js → ComponentNavView-DrlxM4SY.js} +1 -1
  13. package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
  14. package/dist/assets/DashboardView-juicRxcP.js +1 -0
  15. package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
  16. package/dist/assets/{DocsIndex-B2zw_HAp.js → DocsIndex-LALVtIVR.js} +1 -1
  17. package/dist/assets/{DocsLayout-DezZ8x7_.js → DocsLayout-BAwlJQQf.js} +1 -1
  18. package/dist/assets/DocsSlug-CkF1E-Zs.js +1 -0
  19. package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
  20. package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
  21. package/dist/assets/{IntegrationsPage-2leVkVDH.js → IntegrationsPage-DIuFLEbF.js} +2 -2
  22. package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
  23. package/dist/assets/{MarketplaceInstalledPage-EPPHSitW.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
  24. package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
  25. package/dist/assets/{MarketplacePage-BnQKykgv.js → MarketplacePage-DO2_b64U.js} +1 -1
  26. package/dist/assets/{MetadataInspector-BWxLkr0O.js → MetadataInspector-BQyu9pOE.js} +1 -1
  27. package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
  28. package/dist/assets/PageView-C-qWu3Jw.js +1 -0
  29. package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
  30. package/dist/assets/{PublicFormsPage-DlE6tck_.js → PublicFormsPage-D3AT2EH9.js} +1 -1
  31. package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
  32. package/dist/assets/RecordFormPage-CcoZfUJ3.js +1 -0
  33. package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
  34. package/dist/assets/ReportView-pJCFptzp.js +2 -0
  35. package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
  36. package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
  37. package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
  38. package/dist/assets/{SettingsHub-BGKIj-Zq.js → SettingsHub-CPP9FDe8.js} +1 -1
  39. package/dist/assets/SettingsView-CrHAROu9.js +1 -0
  40. package/dist/assets/{SkeletonDetail-C8fMI-Mu.js → SkeletonDetail-CP-35B8x.js} +1 -1
  41. package/dist/assets/{af-BfSmLD34.js → af-Bhbso4Pg.js} +1 -1
  42. package/dist/assets/ai-BAPiCsNk.js +3 -0
  43. package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
  44. package/dist/assets/{ar-B9ttrM75.js → ar-DG8TAFtm.js} +1 -1
  45. package/dist/assets/{ar-DZ-C1rn-cyl.js → ar-DZ-BtSien-d.js} +1 -1
  46. package/dist/assets/{ar-EG-BaDxKP_o.js → ar-EG-DpXC0zoY.js} +1 -1
  47. package/dist/assets/{ar-MA-DbxNEcmd.js → ar-MA-D1qVJLyE.js} +1 -1
  48. package/dist/assets/{ar-SA-DeC5LXcX.js → ar-SA-BIYKNgv8.js} +1 -1
  49. package/dist/assets/{ar-TN-C9KpTFJz.js → ar-TN-mUR5Mq3s.js} +1 -1
  50. package/dist/assets/{az-cMerDwRO.js → az-B7IqwHGK.js} +1 -1
  51. package/dist/assets/{be-ZTSbszQh.js → be-CnZyPaSX.js} +1 -1
  52. package/dist/assets/{be-tarask-BXZEUrgX.js → be-tarask--uMMCC7l.js} +1 -1
  53. package/dist/assets/{bg-BDogpmn5.js → bg-CZwuirtY.js} +1 -1
  54. package/dist/assets/{bn-Cz04uxmh.js → bn-BbOX0r-z.js} +1 -1
  55. package/dist/assets/{bs-CpFnCl-j.js → bs-B5W75cYR.js} +1 -1
  56. package/dist/assets/{ca-CHC4M52Z.js → ca-Be69LdIM.js} +1 -1
  57. package/dist/assets/{ckb-Dxw-RNm8.js → ckb-B-nKM1Vn.js} +1 -1
  58. package/dist/assets/contracts-DieHW666.js +1 -0
  59. package/dist/assets/{createDerive-DvA_JGNq.js → createDerive-CynsXU-B.js} +1 -1
  60. package/dist/assets/{cs-DsFaJ5Z7.js → cs-qHngxH7l.js} +1 -1
  61. package/dist/assets/{cy-FH4JFDTs.js → cy-DscO2Pgf.js} +1 -1
  62. package/dist/assets/{da-D1pVjaAq.js → da-vibkaLMF.js} +1 -1
  63. package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
  64. package/dist/assets/{de-AT-DUMQCisj.js → de-AT--JneEuBw.js} +1 -1
  65. package/dist/assets/{de-DKrxSvnP.js → de-BCT78XYW.js} +1 -1
  66. package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
  67. package/dist/assets/dist-yh3dYtHt.js +14 -0
  68. package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
  69. package/dist/assets/{el-l3-bHySV.js → el-Cl0y9T2b.js} +1 -1
  70. package/dist/assets/en-AU-By42tTB7.js +1 -0
  71. package/dist/assets/{en-CA-DGH5NF0a.js → en-CA-BqEEoj-Y.js} +1 -1
  72. package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
  73. package/dist/assets/en-IE-CX9nv6uO.js +1 -0
  74. package/dist/assets/en-IN-ByGSBHa4.js +1 -0
  75. package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
  76. package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
  77. package/dist/assets/{eo-CL6CXHZx.js → eo-oOXROuhF.js} +1 -1
  78. package/dist/assets/{es-BIJ0rksI.js → es-EudscwjH.js} +1 -1
  79. package/dist/assets/{et-BGgMzjm1.js → et-CB-5LLh6.js} +1 -1
  80. package/dist/assets/{eu-CqvAoRrX.js → eu-B4-hcseX.js} +1 -1
  81. package/dist/assets/{fa-IR-DNz3oA1-.js → fa-IR-CogavcMJ.js} +1 -1
  82. package/dist/assets/{fi-DNSfKWuW.js → fi-CIBE0mYa.js} +1 -1
  83. package/dist/assets/{formatLong-CHb9WA3O.js → formatLong-qqgm7lV1.js} +1 -1
  84. package/dist/assets/{fr-CA-CotiswPx.js → fr-CA-BugXMutW.js} +1 -1
  85. package/dist/assets/{fr-DYRJCirJ.js → fr-CDReXYWW.js} +1 -1
  86. package/dist/assets/{fr-CH-CpiEYWpc.js → fr-CH-fiTiB6X1.js} +1 -1
  87. package/dist/assets/framework-CAuH4h0L.js +35 -0
  88. package/dist/assets/{fy-B69yM3FE.js → fy-t_GzIAg_.js} +1 -1
  89. package/dist/assets/{gd-BAy8AsX6.js → gd-CSncIxtN.js} +1 -1
  90. package/dist/assets/{getIcon-BEVyC4y3.js → getIcon-BDkBRQFw.js} +1 -1
  91. package/dist/assets/{gl-soLn_weL.js → gl-_138Mj2S.js} +1 -1
  92. package/dist/assets/{gu-B19Yo9yC.js → gu-COfH-YUT.js} +1 -1
  93. package/dist/assets/{he-DYTPo33p.js → he-BXL4lOKY.js} +1 -1
  94. package/dist/assets/{hi-D2dIK7Oy.js → hi-kXuYI0TJ.js} +1 -1
  95. package/dist/assets/{highlighted-body-OFNGDK62-CExufvVt.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
  96. package/dist/assets/{hr-BV-VOPMu.js → hr-DAOsQWzI.js} +1 -1
  97. package/dist/assets/{ht-C7MM4qkS.js → ht-Ch8SKz8p.js} +1 -1
  98. package/dist/assets/{hu-Rha1m2Ym.js → hu-q6W_rWPT.js} +1 -1
  99. package/dist/assets/{hy-CiTNgbdV.js → hy-0M8OmwnM.js} +1 -1
  100. package/dist/assets/i18n-DTfZonAM.js +17 -0
  101. package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
  102. package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
  103. package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
  104. package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
  105. package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
  106. package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
  107. package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
  108. package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
  109. package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
  110. package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
  111. package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
  112. package/dist/assets/{id-Cijsfjt-.js → id-BM_H1_jv.js} +1 -1
  113. package/dist/assets/index-ocmkyCt6.js +19 -0
  114. package/dist/assets/index-v2Ijn9Gr.css +2 -0
  115. package/dist/assets/{infrastructure-BHSync5f.js → infrastructure-CSnL6ntj.js} +2 -2
  116. package/dist/assets/integration-7NqwVHuJ.js +1 -0
  117. package/dist/assets/{is-xS1WTyeC.js → is-B_7jXZfS.js} +1 -1
  118. package/dist/assets/isSameWeek-D90tBsli.js +1 -0
  119. package/dist/assets/{it-C2i_c9sd.js → it-CBM0J9cD.js} +1 -1
  120. package/dist/assets/{it-CH-l516ZNXj.js → it-CH-BQltCNsR.js} +1 -1
  121. package/dist/assets/{ja-D9_ewLny.js → ja-DBjnsx21.js} +1 -1
  122. package/dist/assets/{ja-Hira-D_6ExgHw.js → ja-Hira-BZfSmj1i.js} +1 -1
  123. package/dist/assets/{ka-BYHGyees.js → ka-HwpuKgUY.js} +1 -1
  124. package/dist/assets/{kk-CbTFtuqb.js → kk-DLKA9paj.js} +1 -1
  125. package/dist/assets/{km-Dr2gwhIn.js → km-BU5kermq.js} +1 -1
  126. package/dist/assets/{kn-CprH8JD7.js → kn-BNFqbCoi.js} +1 -1
  127. package/dist/assets/{ko-CsFS2u5i.js → ko-D8n4uMqQ.js} +1 -1
  128. package/dist/assets/{lb-CbFKN7Ob.js → lb-B1empQ7m.js} +1 -1
  129. package/dist/assets/{lt-Bq0xkLp0.js → lt-gMukpK3G.js} +1 -1
  130. package/dist/assets/{lv-Cj6vg6Qo.js → lv-D2O5AnsZ.js} +1 -1
  131. package/dist/assets/{match-CiPp9BME.js → match-BTF6WqJh.js} +1 -1
  132. package/dist/assets/{match-C_jFGO9e.js → match-Cyum2eeW.js} +1 -1
  133. package/dist/assets/{match-Co4ivumx.js → match-ScHH8kYk.js} +1 -1
  134. package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
  135. package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
  136. package/dist/assets/{mk-MXFM99YL.js → mk-D-Zl0xVN.js} +1 -1
  137. package/dist/assets/{mn-D5Q9B6Jt.js → mn-jJbTslgD.js} +1 -1
  138. package/dist/assets/{ms-CCzPRldx.js → ms-CUuJHLA4.js} +1 -1
  139. package/dist/assets/{mt-mjJpN6xW.js → mt-yIcbfxKY.js} +1 -1
  140. package/dist/assets/{nb-BIlNqdEb.js → nb-D9WNypoj.js} +1 -1
  141. package/dist/assets/{nl-BE-FwXjQsmV.js → nl-BE-B1vKiw2h.js} +1 -1
  142. package/dist/assets/{nl-D2uBtIxG.js → nl-DC7b5e90.js} +1 -1
  143. package/dist/assets/{nn-B0loJ7SV.js → nn-uP4yJ9s0.js} +1 -1
  144. package/dist/assets/{oc-U7-yH1sO.js → oc-DHTqadJI.js} +1 -1
  145. package/dist/assets/{pl-mTy0JYgi.js → pl-Bxnnizf5.js} +1 -1
  146. package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
  147. package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
  148. package/dist/assets/plugin-chatbot-D1KW_oIO.js +122 -0
  149. package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
  150. package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
  151. package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
  152. package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
  153. package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
  154. package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
  155. package/dist/assets/{plugin-markdown-D1nTQc1T.js → plugin-markdown-CNlDzqP-.js} +1 -1
  156. package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
  157. package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
  158. package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
  159. package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
  160. package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
  161. package/dist/assets/{pt-BR-2KtO5Js1.js → pt-BR-D416seHT.js} +1 -1
  162. package/dist/assets/{pt-Bet5OOQf.js → pt-DwHBy9_c.js} +1 -1
  163. package/dist/assets/{ro-37U6sgzi.js → ro-DDf1X3Np.js} +1 -1
  164. package/dist/assets/{ru-CyuAY-5E.js → ru-8eM3mcgK.js} +1 -1
  165. package/dist/assets/{runtime-metadata-persistence-afAW-MeD.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
  166. package/dist/assets/{se-DeJabuC6.js → se-D4JvQeRX.js} +1 -1
  167. package/dist/assets/{sk-DWEpjfkR.js → sk-DvpgttGI.js} +1 -1
  168. package/dist/assets/{sl-4oSvNhIR.js → sl-B3gCZ-_a.js} +1 -1
  169. package/dist/assets/{sq-BjkBCaXW.js → sq-CVaTmL0V.js} +1 -1
  170. package/dist/assets/{sr-Dxm1DsRS.js → sr-CnH5Ffyz.js} +1 -1
  171. package/dist/assets/{sr-Latn-Dawg6oP2.js → sr-Latn-Dw9w61q6.js} +1 -1
  172. package/dist/assets/src-BUry7633.js +2 -0
  173. package/dist/assets/{src-C8NYjdVm.js → src-DMDT5a27.js} +1 -1
  174. package/dist/assets/src-ZxH3AOCu.js +16 -0
  175. package/dist/assets/{studioEntry-nXQP3iL0.js → studioEntry-DAqcBFtr.js} +1 -1
  176. package/dist/assets/{submitRedirect-jK-cEIbP.js → submitRedirect-iy0oOi7I.js} +1 -1
  177. package/dist/assets/{sv-CROOGJGz.js → sv-CU7wdxyK.js} +1 -1
  178. package/dist/assets/{ta-BZnTmFI_.js → ta-DPH6q0HR.js} +1 -1
  179. package/dist/assets/{te-BN0v0x5t.js → te-BSaThkGV.js} +1 -1
  180. package/dist/assets/{th-CBjKhp_U.js → th-NXP8_Qb8.js} +1 -1
  181. package/dist/assets/{tr-x0Ne4N4H.js → tr-DDXoH663.js} +1 -1
  182. package/dist/assets/types-zod-ChJ30y25.js +1 -0
  183. package/dist/assets/{ug-sgzNhsKo.js → ug-Guus6pPe.js} +1 -1
  184. package/dist/assets/ui-components-D8wcRNrt.js +37 -0
  185. package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
  186. package/dist/assets/{uk-o_DQ5VHJ.js → uk-uiy4vsp8.js} +1 -1
  187. package/dist/assets/use-book-data-DFTswcKm.js +1 -0
  188. package/dist/assets/{useActionModal-CSvbHkQ7.js → useActionModal-h52Z5Pkl.js} +1 -1
  189. package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
  190. package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
  191. package/dist/assets/useNavSelDeepLink-67Y4qCNO.js +1 -0
  192. package/dist/assets/useNavTargetLabel-D8lRdb6O.js +1 -0
  193. package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
  194. package/dist/assets/{usePackageL10n-CMx66am-.js → usePackageL10n-Jl2XiF2F.js} +1 -1
  195. package/dist/assets/{useSettingsLabel-Kkr2q0Oo.js → useSettingsLabel-CSpBDTdy.js} +1 -1
  196. package/dist/assets/{uz-Cyrl-DbtkQtz_.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
  197. package/dist/assets/{uz-Be41d4jl.js → uz-DJWxoTz4.js} +1 -1
  198. package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
  199. package/dist/assets/{vi-84mZmklk.js → vi-Bb3QoIJC.js} +1 -1
  200. package/dist/assets/{zh-CN-DD1reegJ.js → zh-CN-C-Hts1ZR.js} +1 -1
  201. package/dist/assets/{zh-HK-B05u30WI.js → zh-HK-CtBAZ_ZS.js} +1 -1
  202. package/dist/assets/{zh-TW-Bb-WimPD.js → zh-TW-B7DDahD-.js} +1 -1
  203. package/dist/chunk-membership.json +116 -104
  204. package/dist/eager-closure.json +126 -120
  205. package/dist/index.html +4 -4
  206. package/dist/sdui.manifest.json +998 -115
  207. package/package.json +1 -1
  208. package/dist/assets/AppDocsIndex-F4zDq2zz.js +0 -1
  209. package/dist/assets/ApprovalsInboxPage-DrEUmaDb.js +0 -1
  210. package/dist/assets/CreateViewDialog-xyKlpLEW.js +0 -1
  211. package/dist/assets/DashboardView-CGC-_Om8.js +0 -1
  212. package/dist/assets/DocPage-CIZE5kdj.js +0 -1
  213. package/dist/assets/DocsSlug-DXdFdwlS.js +0 -1
  214. package/dist/assets/ExpressionProvider-DZfMwyMs.js +0 -1
  215. package/dist/assets/FlowRunsPage-CvY3nJMF.js +0 -1
  216. package/dist/assets/InterfaceListPage-BdECC_i3.js +0 -1
  217. package/dist/assets/MarketplacePackagePage-C7NOu2Ir.js +0 -4
  218. package/dist/assets/ObjectDataPage-BIzp65Mo.js +0 -1
  219. package/dist/assets/PageView-CVLgCRSF.js +0 -1
  220. package/dist/assets/ProfilePage-D2qGgxPK.js +0 -1
  221. package/dist/assets/RecordDetailView-DQKydU7X.js +0 -3
  222. package/dist/assets/RecordFormPage-BTjwxJIA.js +0 -1
  223. package/dist/assets/ReportDefaultInspector-DdsQAkd7.js +0 -1
  224. package/dist/assets/ReportView-GIdKJdOt.js +0 -2
  225. package/dist/assets/RuntimeDraftBar-BbMdi3Kp.js +0 -1
  226. package/dist/assets/SchemaForm-C8X1ve4p.js +0 -3
  227. package/dist/assets/SearchResultsPage-Jwhqsdyo.js +0 -1
  228. package/dist/assets/SettingsView-D8SMKdrc.js +0 -1
  229. package/dist/assets/app-shell-eager-leaves-CDVclng4.js +0 -1
  230. package/dist/assets/appRoute-DbnWDEa1.js +0 -1
  231. package/dist/assets/data-adapter-DMbe6Njk.js +0 -1
  232. package/dist/assets/default-inspector-registry-CpL3fFhl.js +0 -1
  233. package/dist/assets/dist-BXrEV1ag.js +0 -13
  234. package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
  235. package/dist/assets/en-AU-C6x7mDhH.js +0 -1
  236. package/dist/assets/en-GB-0-nho2eK.js +0 -1
  237. package/dist/assets/en-IE-2fC3BkfV.js +0 -1
  238. package/dist/assets/en-IN-C1QcFhxn.js +0 -1
  239. package/dist/assets/en-NZ-C80ptZT7.js +0 -1
  240. package/dist/assets/en-ZA-ByZDrjeb.js +0 -1
  241. package/dist/assets/framework-DcWkeiND.js +0 -35
  242. package/dist/assets/i18n-CEKxYdmD.js +0 -9
  243. package/dist/assets/i18n-locale-ar-DN7sl3GF.js +0 -4
  244. package/dist/assets/i18n-locale-de-C40JErvb.js +0 -4
  245. package/dist/assets/i18n-locale-en-CITPDIHy.js +0 -4
  246. package/dist/assets/i18n-locale-es-C8DdWN6c.js +0 -4
  247. package/dist/assets/i18n-locale-fr-COIdEZZl.js +0 -4
  248. package/dist/assets/i18n-locale-ja-DYF_rU_s.js +0 -4
  249. package/dist/assets/i18n-locale-ko-B-ODYAtX.js +0 -4
  250. package/dist/assets/i18n-locale-pt-CK1SyBIm.js +0 -4
  251. package/dist/assets/i18n-locale-ru-jLzvShMO.js +0 -4
  252. package/dist/assets/i18n-locale-zh-Bf9Gbbvl.js +0 -4
  253. package/dist/assets/i18n-runtime-CTgAQF4N.js +0 -1
  254. package/dist/assets/index-CLyvpiGc.css +0 -2
  255. package/dist/assets/index-CfnfGw5W.js +0 -20
  256. package/dist/assets/isSameWeek-DWYeNyh8.js +0 -1
  257. package/dist/assets/mermaid-GHXKKRXX-DVLc_uym.js +0 -1
  258. package/dist/assets/metadata-admin-CybaOCdO.js +0 -9
  259. package/dist/assets/nav-selection-Dzm_mA3C.js +0 -1
  260. package/dist/assets/plugin-calendar-CKRBcML7.js +0 -1
  261. package/dist/assets/plugin-charts-DGTJxXCB.js +0 -7
  262. package/dist/assets/plugin-chatbot-DwtwNA-y.js +0 -122
  263. package/dist/assets/plugin-dashboard-C1AYKmGX.js +0 -6
  264. package/dist/assets/plugin-form-CV8ZY04-.js +0 -1
  265. package/dist/assets/plugin-gantt-BRIb2_8G.js +0 -63
  266. package/dist/assets/plugin-grid-C9h7mRVv.js +0 -11
  267. package/dist/assets/plugin-kanban-BcJ0Dhys.js +0 -1
  268. package/dist/assets/plugin-map-D24ZUOUj.js +0 -1
  269. package/dist/assets/plugin-report-BfGintAq.js +0 -59
  270. package/dist/assets/plugin-timeline-CbBRq_qt.js +0 -1
  271. package/dist/assets/plugin-tree-BNX2A5J5.js +0 -1
  272. package/dist/assets/plugin-view-DzWQWYyH.js +0 -1
  273. package/dist/assets/plugins-views-DraK4xz0.js +0 -3
  274. package/dist/assets/src-B8lv0plz.js +0 -18
  275. package/dist/assets/src-DoDvT77T.js +0 -1
  276. package/dist/assets/types-zod-Y2RwUUeJ.js +0 -1
  277. package/dist/assets/ui-components-BTB1NkUW.js +0 -37
  278. package/dist/assets/ui-layout-bZfafwJa.js +0 -1
  279. package/dist/assets/use-book-data-C3eyZJSG.js +0 -1
  280. package/dist/assets/useOpenRecordList-B5-qaFUx.js +0 -1
  281. package/dist/assets/vendor-objectstack-XuWC71M9.js +0 -266
  282. package/dist/assets/vendor-zod-CHLW1iCr.js +0 -64
@@ -1,3 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t,v as n}from"./vendor-react-BggL7APJ.js";import{Ar as r,Nr as i}from"./vendor-objectstack-XuWC71M9.js";import{$ as a,Br as o,Ft as s,Gn as c,Kn as l,Kt as u,Mt as d,Nt as f,Pt as p,Wn as m,X as h,bi as g,dt as _,ft as v,gt as y,jt as b,p as x,pt as S,qn as C,v as ee,vi as w,vt as te,zr as ne}from"./ui-components-BTB1NkUW.js";import{Ci as re,Di as T,Dt as ie,Gi as ae,Gt as oe,Ht as se,Kt as E,Mi as ce,Ni as D,Oi as le,Pr as O,Pt as ue,Si as de,Ui as fe,Ut as pe,Wi as k,Wt as me,Xi as he,Yt as ge,_i as _e,ct as ve,ft as ye,g as be,gi as xe,hi as Se,ht as Ce,k as we,kt as Te,l as Ee,qi as De,qt as Oe,r as ke,tn as Ae,ui as je,ut as Me,v as Ne,vi as Pe,wi as Fe,xi as Ie,xr as Le}from"./framework-DcWkeiND.js";import{f as A,h as Re,o as ze,p as Be,t as Ve,w as j}from"./i18n-runtime-CTgAQF4N.js";import{t as M}from"./vendor-icon-activity-CkniytwY.js";import{t as He}from"./vendor-icon-arrow-up-down-DdDqplfV.js";import{t as Ue}from"./vendor-icon-calendar-BsoUBIef.js";import{t as N}from"./vendor-icon-chart-column-DicJIApF.js";import{t as We}from"./vendor-icon-chart-gantt-DT-shh3t.js";import{t as Ge}from"./vendor-icon-check-vpu9Zukp.js";import{t as P}from"./vendor-icon-chevron-down-BEf_jTEE.js";import{t as F}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as Ke}from"./vendor-icon-download-C3csYSaD.js";import{t as qe}from"./vendor-icon-eye-off-Dy3GIcvl.js";import{t as Je}from"./vendor-icon-grid-3x3-Dyc1xp4z.js";import{t as Ye}from"./vendor-icon-group-Dq8ETKd5.js";import{t as Xe}from"./vendor-icon-images-qaVnL5yL.js";import{t as Ze}from"./vendor-icon-inbox-ByVQ4l4S.js";import{t as I}from"./vendor-icon-layout-grid-B3quJ1GF.js";import{t as Qe}from"./vendor-icon-list-tree-Br55vyL9.js";import{t as $e}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as et}from"./vendor-icon-map-DsFP3Vmp.js";import{t as tt}from"./vendor-icon-paintbrush-BDpkFJjT.js";import{t as nt}from"./vendor-icon-pencil-CMubUBjW.js";import{t as rt}from"./vendor-icon-plus-BlfcDDsa.js";import{t as it}from"./vendor-icon-printer-VcYhF59P.js";import{t as at}from"./vendor-icon-rotate-cw-piooiFbz.js";import{t as ot}from"./vendor-icon-rows-2-CyEMxks5.js";import{t as st}from"./vendor-icon-rows-3-Bl0iGPg_.js";import{t as ct}from"./vendor-icon-rows-4-DVXDgm1n.js";import{t as lt}from"./vendor-icon-search-B2Uqtp_W.js";import{t as ut}from"./vendor-icon-settings-2-BHIWdy1J.js";import{t as dt}from"./vendor-icon-share-2-D3bdPyHy.js";import{t as ft}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as pt}from"./vendor-icon-sliders-horizontal-BsnKXU0c.js";import{t as mt}from"./vendor-icon-square-check-big-B4UVzWzR.js";import{t as ht}from"./vendor-icon-trash-BLsWkwB9.js";import{t as gt}from"./vendor-icon-triangle-alert-D5n0T3q_.js";import{t as _t}from"./vendor-icon-x-CcLtgRNL.js";import{_ as vt}from"./plugin-grid-C9h7mRVv.js";var L=e(n(),1),R=t(),yt={grid:(0,R.jsx)(Je,{className:`h-4 w-4`}),kanban:(0,R.jsx)(I,{className:`h-4 w-4`}),gallery:(0,R.jsx)(Xe,{className:`h-4 w-4`}),calendar:(0,R.jsx)(Ue,{className:`h-4 w-4`}),timeline:(0,R.jsx)(M,{className:`h-4 w-4`}),gantt:(0,R.jsx)(We,{className:`h-4 w-4`}),map:(0,R.jsx)(et,{className:`h-4 w-4`}),chart:(0,R.jsx)(N,{className:`h-4 w-4`}),tree:(0,R.jsx)(Qe,{className:`h-4 w-4`})},z={grid:`console.objectView.viewTypeGrid`,kanban:`console.objectView.viewTypeKanban`,gallery:`console.objectView.viewTypeGallery`,calendar:`console.objectView.viewTypeCalendar`,timeline:`console.objectView.viewTypeTimeline`,gantt:`console.objectView.viewTypeGantt`,map:`console.objectView.viewTypeMap`,chart:`console.objectView.viewTypeChart`,tree:`console.objectView.viewTypeTree`},bt=Re({"console.objectView.viewTypeGrid":`Grid`,"console.objectView.viewTypeKanban":`Kanban`,"console.objectView.viewTypeGallery":`Gallery`,"console.objectView.viewTypeCalendar":`Calendar`,"console.objectView.viewTypeTimeline":`Timeline`,"console.objectView.viewTypeGantt":`Gantt`,"console.objectView.viewTypeMap":`Map`,"console.objectView.viewTypeChart":`Chart`,"console.objectView.viewTypeTree":`Tree`},`console.objectView.viewTypeGrid`);function xt(){let{t:e}=bt();return L.useMemo(()=>{let t={};for(let[n,r]of Object.entries(z))t[n]=e(r);return t},[e])}var St=({currentView:e,availableViews:t=[`grid`,`kanban`],onViewChange:n,className:r,animated:i=!0})=>{let[a,o]=L.useState(!1),s=xt(),u=L.useCallback(t=>{o(!1),t!==e&&(i&&typeof document<`u`&&`startViewTransition`in document?document.startViewTransition(()=>n(t)):n(t))},[i,e,n]);return t.length>=2&&t.length<=4?(0,R.jsx)(`div`,{role:`tablist`,"data-testid":`view-switcher-segmented`,className:g(`inline-flex items-center gap-0.5 rounded-lg bg-muted p-0.5 oui-view-switcher`,r),children:t.map(t=>{let n=t===e;return(0,R.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":n,"aria-label":s[t],title:s[t],"data-state":n?`on`:`off`,onClick:()=>u(t),className:g(`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-[7px] text-xs font-medium transition-all duration-150`,n?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:[yt[t],(0,R.jsx)(`span`,{className:`hidden sm:inline-block`,children:s[t]})]},t)})}):(0,R.jsxs)(m,{open:a,onOpenChange:o,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(`button`,{type:`button`,"data-testid":`view-switcher-dropdown`,"aria-label":s[e],className:g(`inline-flex items-center gap-1.5 h-7 px-2 rounded-md text-xs font-medium transition-colors oui-view-switcher`,a?`text-foreground bg-muted`:`text-muted-foreground hover:text-foreground`,r),children:[yt[e],(0,R.jsx)(`span`,{className:`hidden sm:inline-block`,children:s[e]}),(0,R.jsx)(P,{className:`h-3 w-3 opacity-60`})]})}),(0,R.jsx)(c,{align:`end`,className:`w-44 p-1`,children:t.map(t=>(0,R.jsxs)(`button`,{type:`button`,onClick:()=>u(t),"data-state":t===e?`on`:`off`,className:g(`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-xs transition-colors hover:bg-muted`,t===e?`text-foreground font-medium`:`text-muted-foreground`),children:[yt[t],(0,R.jsx)(`span`,{className:`flex-1 text-left`,children:s[t]}),t===e&&(0,R.jsx)(Ge,{className:`h-3.5 w-3.5`})]},t))})]})};function B({title:e,badge:t,onClear:n,clearLabel:r,defaultOpen:i=!0,children:a}){let[o,s]=L.useState(i);return(0,R.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>!e),className:`flex items-center gap-1.5 text-xs font-medium text-foreground/80 hover:text-foreground`,children:[(0,R.jsx)(P,{className:g(`h-3.5 w-3.5 transition-transform`,!o&&`-rotate-90`)}),e,typeof t==`number`&&t>0&&(0,R.jsx)(`span`,{className:`ml-1 inline-flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 px-1 text-[10px] text-primary tabular-nums`,children:t})]}),n&&(0,R.jsx)(`button`,{type:`button`,onClick:n,className:`text-[11px] text-muted-foreground hover:text-foreground`,children:r})]}),o&&(0,R.jsx)(`div`,{className:`px-3 pb-3`,children:a})]})}function Ct(e){let{t,allFields:n,showGroup:r,groupingConfig:i,setGroupingConfig:a,showColor:o,rowColorConfig:s,setRowColorConfig:u,showDensity:d,density:f,showHideFields:p,hiddenFields:h,updateHiddenFields:_,showInlineEdit:v,inlineEdit:b,setInlineEdit:x}=e,[S,C]=L.useState(!1),ee=[!!i?.fields?.length,!!s?.field,f&&f.mode!==`compact`,(h?.size??0)>0,!!b].filter(Boolean).length,te=f?.mode===`compact`?ct:f?.mode===`comfortable`?st:ot,ne=t(`list.viewSettings`,{defaultValue:`View settings`});return(0,R.jsxs)(m,{open:S,onOpenChange:C,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,"aria-label":ne,title:ne,className:g(`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,ee>0&&`text-foreground font-medium`),"data-testid":`view-settings-trigger`,children:[(0,R.jsx)(ut,{className:`h-3.5 w-3.5 sm:mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:ne}),ee>0&&(0,R.jsx)(`span`,{className:`ml-1 flex h-4 min-w-[16px] items-center justify-center text-[10px] font-medium text-muted-foreground tabular-nums`,children:ee})]})}),(0,R.jsxs)(c,{align:`end`,className:`w-80 p-0`,"data-testid":`view-settings-content`,children:[(0,R.jsxs)(`div`,{className:`px-3 py-2 border-b`,children:[(0,R.jsx)(`div`,{className:`text-sm font-semibold`,children:ne}),(0,R.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:t(`list.viewSettingsHint`,{defaultValue:`Grouping, color, density, and visible fields. Applies to everyone who uses this view.`})})]}),r&&a&&(0,R.jsx)(B,{title:t(`list.group`,{defaultValue:`Group`}),badge:i?.fields?.length||0,onClear:i?()=>a(void 0):void 0,clearLabel:t(`list.clear`,{defaultValue:`Clear`}),children:(0,R.jsx)(y,{value:i,fieldOptions:n.map(e=>({value:e.name,label:e.label||e.name})),maxLevels:3,labels:{addGroup:t(`list.addGroup`,`Add group field`),collapseTitle:t(`list.collapsedByDefault`,`Collapsed by default`),removeTitle:t(`list.removeGroup`,`Remove`)},onChange:e=>a(e)})}),o&&u&&(0,R.jsxs)(B,{title:t(`list.rowColor`,{defaultValue:`Row Color`}),onClear:s?()=>u(void 0):void 0,clearLabel:t(`list.clear`,{defaultValue:`Clear`}),defaultOpen:!!s,children:[(0,R.jsx)(`label`,{className:`block text-[11px] text-muted-foreground mb-1`,children:t(`list.colorByField`,{defaultValue:`Color by field`})}),(0,R.jsxs)(`select`,{className:`w-full h-8 rounded border border-input bg-background px-2 text-xs`,value:s?.field||``,onChange:e=>{let t=e.target.value;u(t?{field:t,colors:s?.colors||{}}:void 0)},"data-testid":`color-field-select`,children:[(0,R.jsx)(`option`,{value:``,children:t(`list.none`,{defaultValue:`None`})}),n.map(e=>(0,R.jsx)(`option`,{value:e.name,children:e.label||e.name},e.name))]})]}),d&&f&&(0,R.jsx)(B,{title:t(`grid.toolbar.densityMode`,{defaultValue:`Density`}),defaultOpen:f.mode!==`compact`,children:(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsxs)(w,{variant:`outline`,size:`sm`,className:`h-7 gap-1.5`,onClick:f.cycle,"data-testid":`view-settings-density-cycle`,children:[(0,R.jsx)(te,{className:`h-3.5 w-3.5`}),(0,R.jsx)(`span`,{className:`text-xs`,children:f.mode===`compact`?t(`grid.toolbar.densityCompact`,{defaultValue:`Compact`}):f.mode===`comfortable`?t(`grid.toolbar.densityComfortable`,{defaultValue:`Comfortable`}):t(`grid.toolbar.densitySpacious`,{defaultValue:`Spacious`})})]}),(0,R.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:t(`grid.toolbar.densityCycleShortHint`,{defaultValue:`Click to cycle`})})]})}),v&&x&&(0,R.jsx)(B,{title:t(`list.recordEditingTitle`,{defaultValue:`Record editing`}),defaultOpen:!!b,children:(0,R.jsxs)(`label`,{className:`flex items-center gap-2 text-xs py-1 px-1 rounded hover:bg-muted cursor-pointer`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!!b,onChange:()=>x(!b),className:`rounded border-input`,"data-testid":`view-settings-inline-edit`}),(0,R.jsx)(`span`,{children:t(`list.inlineEditLabel`,{defaultValue:`Edit records inline (click a cell to edit)`})})]})}),p&&h&&_&&(0,R.jsx)(B,{title:t(`list.hideFieldsTitle`,{defaultValue:`Hide Fields`}),badge:h.size,onClear:h.size>0?()=>_(new Set):void 0,clearLabel:t(`list.showAll`,{defaultValue:`Show all`}),defaultOpen:h.size>0,children:(0,R.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-0.5`,children:n.map(e=>(0,R.jsxs)(`label`,{className:`flex items-center gap-2 text-xs py-1 px-1 rounded hover:bg-muted cursor-pointer`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!h.has(e.name),onChange:()=>{let t=new Set(h);t.has(e.name)?t.delete(e.name):t.add(e.name),_(t)},className:`rounded border-input`}),(0,R.jsx)(`span`,{className:`truncate`,children:e.label||e.name})]},e.name))})})]})]})}function wt(){let{t:e}=j(),t=e(`common.more`);return!t||t===`common.more`?`More`:t}var Tt=new Set([`lookup`,`master_detail`,`user`]),Et={select:`single-choice`,"multi-select":`multi-choice`,boolean:`multi-choice`,"date-range":`range`,text:`text`};function V(e){return(e||[]).filter(e=>e&&(e.id||e.name)).map(e=>({id:e.id??e.name,label:typeof e.label==`string`?e.label:e.label?.toString?.()??e.id??e.name,filters:Array.isArray(e.filters)?e.filters:Array.isArray(e.filter)?e.filter.filter(e=>e&&typeof e.field==`string`).map(e=>[e.field,r(e.operator),e.value]):[],default:e.default??e.isDefault}))}function Dt({config:e,objectDef:t,data:n=[],onFilterChange:r,maxVisible:i,className:a,initialSelections:o,onSelectionsChange:s}){switch(e.element){case`dropdown`:return(0,R.jsx)(H,{fields:e.fields||[],objectDef:t,data:n,onFilterChange:r,maxVisible:i,className:a,initialSelections:o,onSelectionsChange:s});case`tabs`:return(0,R.jsx)(U,{tabs:V(e.tabs||[]),showAllRecords:e.showAllRecords!==!1,allowAddTab:e.allowAddTab,onFilterChange:r,className:a,initialTab:typeof o?._tab?.[0]==`string`?o._tab[0]:void 0,onSelectionsChange:s});case`toggle`:return(0,R.jsx)(kt,{fields:e.fields||[],onFilterChange:r,className:a});default:return null}}function Ot(e,t,n,r){return e.map(e=>{let i=e.options?[...e.options]:[],a=e.type,o,s,c;if(t?.fields){let n=Array.isArray(t.fields)?t.fields.find(t=>t.name===e.field):t.fields[e.field];n&&(a||=n.type,c=n.label,o=n.reference,s=n.displayField,i.length===0&&n.options&&(i=Array.isArray(n.options)?n.options.map(e=>({label:e.label??String(e.value??e),value:e.value??e,color:e.color})):Object.entries(n.options).map(([e,t])=>({label:t?.label||e,value:e,color:t?.color}))))}i.length===0&&a===`boolean`&&(i=[{label:`True`,value:!0},{label:`False`,value:!1}]),e.showCount&&n.length>0&&(i=i.map(t=>({...t,count:n.filter(n=>n[e.field]===t.value).length})));let l=e.label??c;if(r?.objectName){i=r.translateOptions(r.objectName,e.field,i);let t=e.label||c,n=r.fieldLabel(r.objectName,e.field,t||e.field);l=n===e.field&&t?t:n}return{...e,label:l,type:a,options:i,referenceTo:o,displayField:s}})}function H({fields:e,objectDef:t,data:n,onFilterChange:r,maxVisible:i,className:a,initialSelections:o,onSelectionsChange:s}){let{fieldLabel:u,translateOptions:d}=Be(),p=wt(),h=t?.name,_=L.useMemo(()=>new Map(e.map(e=>[e.field,Et[e.type??``]])),[e]),[v,y]=L.useState(()=>{let t={};return e.forEach(e=>{e.defaultValues&&e.defaultValues.length>0&&(t[e.field]=e.defaultValues);let n=o?.[e.field];n&&n.length>0&&(t[e.field]=n),_.get(e.field)===`single-choice`&&(t[e.field]?.length??0)>1&&(t[e.field]=t[e.field].slice(0,1))}),t}),b=L.useRef({}),x=L.useMemo(()=>Ot(e,t,n,{objectName:h,fieldLabel:u,translateOptions:d}).map(e=>{if(!e.showCount)return e;if((v[e.field]||[]).length===0)return b.current[e.field]=new Map(e.options.map(e=>[String(e.value),e.count??0])),e;let t=b.current[e.field];return t?{...e,options:e.options.map(e=>({...e,count:t.get(String(e.value))??e.count}))}:e}),[e,t,n,h,u,d,v]),S=L.useCallback(e=>{r(Object.entries(e).flatMap(([e,t])=>{if(t.length===0)return[];switch(_.get(e)){case`range`:{let[n,r]=t,i=[];return n!==void 0&&n!==``&&i.push([e,`>=`,n]),r!==void 0&&r!==``&&i.push([e,`<=`,r]),i}case`text`:{let n=String(t[0]??``).trim();return n?[[e,`contains`,n]]:[]}default:return[[e,`in`,t]]}}))},[r,_]),C=(e,t)=>{let n={...v,[e]:t};y(n),S(n),s?.(n)};L.useEffect(()=>{let e=v,t={},n=!1;for(let[r,i]of Object.entries(e)){let e=x.find(e=>e.field===r),a=i.map(t=>{if(!e||typeof t!=`string`)return t;let n=e.options.find(e=>String(e.value)===t);return n&&n.value!==t?n.value:e.type===`boolean`&&(t===`true`||t===`false`)?t===`true`:t});t[r]=a,a.some((e,t)=>e!==i[t])&&(n=!0)}n&&(y(t),e=t),Object.values(e).some(e=>e.length>0)&&S(e)},[]);let ee=i!==void 0&&i<x.length?x.slice(0,i):x,w=i!==void 0&&i<x.length?x.slice(i):[],te=e=>{let t=v[e.field]||[],n=_.get(e.field),r=t.filter(e=>e!==``&&e!=null).length,i=r>0,a=n===`single-choice`,o=Ie(e.type);o&&de(e.type);let s=!o&&Tt.has(e.type||``)&&e.options.length===0&&(e.referenceTo||e.type===`user`),u=s?`w-72`:`w-56`;return(0,R.jsxs)(m,{children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(`button`,{type:`button`,"data-testid":`filter-badge-${e.field}`,className:g(`inline-flex items-center gap-1 h-7 px-2 text-xs transition-colors shrink-0 rounded-md`,i?`text-foreground font-medium`:`text-muted-foreground hover:text-foreground`),children:[(0,R.jsx)(`span`,{className:`truncate max-w-[100px]`,children:e.label||e.field}),i&&(0,R.jsx)(`span`,{className:`text-[10px] text-muted-foreground/80 tabular-nums`,children:r}),i?(0,R.jsx)(_t,{className:`h-3 w-3 opacity-60 hover:opacity-100`,"data-testid":`filter-clear-${e.field}`,onClick:t=>{t.stopPropagation(),C(e.field,[])}}):(0,R.jsx)(P,{className:`h-3 w-3 opacity-60`})]})}),(0,R.jsx)(c,{align:`start`,className:g(u,`p-2`),children:s?(0,R.jsx)(`div`,{"data-testid":`filter-lookup-${e.field}`,children:(0,R.jsx)(f,{field:{value:e.field,label:e.label||e.field,type:e.type,referenceTo:e.referenceTo,displayField:e.displayField},value:t,multiple:!0,onChange:t=>{let n=Array.isArray(t)?t:t==null||t===``?[]:[t];C(e.field,n)}})}):n===`range`?(0,R.jsx)(`div`,{className:`space-y-2 p-1`,"data-testid":`filter-range-${e.field}`,children:[0,1].map(n=>(0,R.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{className:`w-8 shrink-0`,children:n===0?`From`:`To`}),(0,R.jsx)(`input`,{type:`date`,"data-testid":`filter-range-${e.field}-${n===0?`from`:`to`}`,value:String(t[n]??``),onChange:r=>{let i=[String(t[0]??``),String(t[1]??``)];i[n]=r.target.value,C(e.field,i[0]===``&&i[1]===``?[]:i)},className:`h-7 flex-1 rounded border border-input bg-background px-2 text-xs text-foreground`})]},n))}):n===`text`?(0,R.jsx)(`input`,{type:`search`,"data-testid":`filter-text-${e.field}`,defaultValue:String(t[0]??``),placeholder:e.label||e.field,onBlur:t=>{let n=t.target.value.trim();C(e.field,n?[n]:[])},onKeyDown:t=>{if(t.key===`Enter`){let n=t.target.value.trim();C(e.field,n?[n]:[])}},className:`h-8 w-full rounded border border-input bg-background px-2 text-xs text-foreground`}):(0,R.jsx)(`div`,{className:`max-h-60 overflow-y-auto space-y-0.5`,"data-testid":`filter-options-${e.field}`,children:e.options.length===0?(0,R.jsx)(`div`,{className:`px-2 py-3 text-center text-xs text-muted-foreground`,children:`No options`}):e.options.map(n=>(0,R.jsxs)(`label`,{className:g(`flex items-center gap-2 text-sm py-1.5 px-2 rounded cursor-pointer`,t.includes(n.value)?`bg-primary/5 text-primary`:`hover:bg-muted`),children:[(0,R.jsx)(`input`,{type:a?`radio`:`checkbox`,name:a?`user-filter-${e.field}`:void 0,checked:t.includes(n.value),onChange:()=>{let r=a?[n.value]:t.includes(n.value)?t.filter(e=>e!==n.value):[...t,n.value];C(e.field,r)},className:a?`border-input`:`rounded border-input`}),n.color&&(0,R.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-full shrink-0`,style:{backgroundColor:n.color}}),(0,R.jsx)(`span`,{className:`truncate flex-1`,children:n.label}),n.count!==void 0&&(0,R.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n.count})]},String(n.value)))})})]},e.field)};return(0,R.jsx)(`div`,{className:g(`flex items-center gap-0.5 overflow-x-auto`,a),"data-testid":`user-filters-dropdown`,children:x.length===0?(0,R.jsx)(`span`,{className:`text-xs text-muted-foreground`,"data-testid":`user-filters-empty`,children:`No filter fields`}):(0,R.jsxs)(R.Fragment,{children:[ee.map(te),w.length>0&&(0,R.jsxs)(m,{children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(`button`,{type:`button`,"data-testid":`user-filters-more`,className:`inline-flex items-center gap-1 h-7 px-2 text-xs text-muted-foreground hover:text-foreground transition-colors shrink-0 rounded-md`,children:[(0,R.jsx)(`span`,{children:p}),(0,R.jsx)(`span`,{className:`text-[10px] text-muted-foreground/80 tabular-nums`,children:w.length}),(0,R.jsx)(P,{className:`h-3 w-3 opacity-60`})]})}),(0,R.jsx)(c,{align:`start`,className:`w-64 p-2`,"data-testid":`user-filters-more-content`,children:(0,R.jsx)(`div`,{className:`space-y-1`,children:w.map(te)})})]})]})})}function U({tabs:e,showAllRecords:t,allowAddTab:n,onFilterChange:r,className:i,initialTab:a,onSelectionsChange:o}){let[s,u]=L.useState(()=>a&&(a===`__all__`||e.some(e=>e.id===a))?a:e.find(e=>e.default)?.id||(t?`__all__`:e[0]?.id||``)),[d,f]=L.useState([]),[p,h]=L.useState(!1),[_,v]=L.useState(``),y=L.useCallback(t=>{if(t===`__all__`)return[];let n=e.find(e=>e.id===t);return n?n.filters||[]:d.find(e=>e.id===t)?.filters||[]},[e,d]),b=L.useCallback(e=>{u(e),r(y(e)),o?.({_tab:[e]})},[y,r,o]),x=L.useMemo(()=>{let n=[...e];return t&&n.push({id:`__all__`,label:`All records`,filters:[]}),n},[e,t]),S=L.useCallback(()=>{let t=_.trim();if(!t)return;let n=new Set([...e.map(e=>e.id??e.name??``),...d.map(e=>e.id)]),i=d.length+1;for(;n.has(`__session_${i}__`);)i+=1;let a=`__session_${i}__`,c=y(s).map(e=>Array.isArray(e)?[...e]:e);f(e=>[...e,{id:a,label:t,filters:c}]),u(a),v(``),h(!1),r(c),o?.({_tab:[a]})},[_,e,d,y,s,r,o]),ee=L.useCallback(n=>{if(f(e=>e.filter(e=>e.id!==n)),s!==n)return;let r=e.find(e=>e.default);b(r?.id||(t?`__all__`:e[0]?.id||``))},[s,e,t,b]);return L.useEffect(()=>{if(s&&s!==`__all__`){let t=e.find(e=>e.id===s);t&&r(t.filters||[])}},[]),(0,R.jsxs)(`div`,{className:g(`flex items-center gap-0.5 overflow-x-auto`,i),"data-testid":`user-filters-tabs`,children:[x.map(e=>{let t=e.id??e.name??``;return(0,R.jsx)(`button`,{type:`button`,"data-testid":`filter-tab-${t}`,onClick:()=>b(t),className:g(`inline-flex items-center h-7 px-3 text-xs font-medium rounded-md transition-colors shrink-0`,s===t?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:e.label},t)}),d.map(e=>{let t=s===e.id;return(0,R.jsxs)(`span`,{className:g(`inline-flex items-center h-7 rounded-md transition-colors shrink-0`,t?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),children:[(0,R.jsx)(`button`,{type:`button`,"data-testid":`filter-tab-${e.id}`,onClick:()=>b(e.id),className:`inline-flex items-center h-7 pl-3 pr-1 text-xs font-medium rounded-l-md`,children:e.label}),(0,R.jsx)(`button`,{type:`button`,"data-testid":`filter-tab-remove-${e.id}`,onClick:()=>ee(e.id),title:`Remove tab`,"aria-label":`Remove tab ${e.label}`,className:`inline-flex items-center h-7 pl-0.5 pr-2 rounded-r-md opacity-60 hover:opacity-100`,children:(0,R.jsx)(_t,{className:`h-3 w-3`})})]},e.id)}),n&&(0,R.jsxs)(m,{open:p,onOpenChange:e=>{h(e),e||v(``)},children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsx)(`button`,{type:`button`,className:`inline-flex items-center justify-center h-7 w-7 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted shrink-0`,"data-testid":`filter-tab-add`,title:`Add filter tab`,children:(0,R.jsx)(rt,{className:`h-3.5 w-3.5`})})}),(0,R.jsxs)(c,{align:`start`,className:`w-64 p-2 space-y-2`,"data-testid":`filter-tab-add-content`,children:[(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Name this tab. It keeps the filters applied right now, and lives in this session only.`}),(0,R.jsx)(C,{autoFocus:!0,value:_,onChange:e=>v(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),S())},placeholder:`Tab name`,className:`h-7 text-xs`,"data-testid":`filter-tab-add-input`}),(0,R.jsx)(`div`,{className:`flex justify-end`,children:(0,R.jsx)(w,{size:`sm`,className:`h-7 px-2 text-xs`,disabled:!_.trim(),"data-testid":`filter-tab-add-confirm`,onClick:S,children:`Add tab`})})]})]})]})}function kt({fields:e,onFilterChange:t,className:n}){let[r,i]=L.useState(()=>{let t=new Set;return e.forEach(e=>{e.defaultValues&&e.defaultValues.length>0&&t.add(e.field)}),t}),a=L.useCallback(n=>{t(Array.from(n).map(t=>{let n=e.find(e=>e.field===t);return n?.defaultValues?[t,`in`,n.defaultValues]:[t,`!=`,null]}))},[e,t]),o=e=>{i(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),a(n),n})};return L.useEffect(()=>{r.size>0&&a(r)},[]),(0,R.jsx)(`div`,{className:g(`flex items-center gap-1 overflow-x-auto`,n),"data-testid":`user-filters-toggle`,children:e.map(e=>{let t=r.has(e.field);return(0,R.jsx)(w,{variant:t?`default`:`outline`,size:`sm`,className:`h-7 px-3 text-xs shrink-0`,"data-testid":`filter-toggle-${e.field}`,onClick:()=>o(e.field),children:e.label||e.field},e.field)})})}var At={latitudeField:`latitudeField`,longitudeField:`longitudeField`,locationField:`locationField`,titleField:`titleField`,descriptionField:`descriptionField`,zoom:`zoom`,center:`center`,style:`mapStyle`};function jt(e){if(!e||typeof e!=`object`)return{};let t=e;return Object.fromEntries(Object.entries(At).filter(([e])=>e in t).map(([e,n])=>[n,t[e]]))}function Mt(e){return{...jt(e.options?.map),...jt(e.map)}}function Nt(e){let t=e.chart||e.options?.chart||{};if(t.dataset){let e=Array.isArray(t.dimensions)?t.dimensions:[],n=Array.isArray(t.values)?t.values:[];return{config:t,shape:`dataset`,resolves:n.length>0,dataset:t.dataset,dimensions:e,values:n}}let n=Array.isArray(t.yAxisFields)&&t.yAxisFields[0]||t.valueField||void 0,r=t.xAxisField||t.categoryField||void 0;return{config:t,shape:`legacy`,resolves:!!(r&&n),dimensions:[],values:[],categoryField:r,valueField:n}}var W=new Set([...p].map(e=>String(r(e))));function Pt(e){return W.has(String(r(e)))}function G(e){switch(e.toLowerCase().replace(/[_\s]/g,``)){case`equals`:case`eq`:return`=`;case`notequals`:case`ne`:case`neq`:return`!=`;case`contains`:return`contains`;case`icontains`:return`icontains`;case`notcontains`:return`notcontains`;case`startswith`:return`startswith`;case`endswith`:return`endswith`;case`greaterthan`:case`gt`:return`>`;case`greaterorequal`:case`greaterthanorequal`:case`gte`:return`>=`;case`lessthan`:case`lt`:return`<`;case`lessorequal`:case`lessthanorequal`:case`lte`:return`<=`;case`in`:return`in`;case`notin`:case`nin`:return`nin`;case`before`:return`<`;case`after`:return`>`;case`between`:return`between`;case`isnull`:return`isnull`;case`isnotnull`:return`isnotnull`;default:return e}}var Ft=[],K=new Set([`nin`,`not_in`,`notIn`,`notin`,`not in`]);function q(e){if(!Array.isArray(e)||e.length<3)return e;let[t,n,r]=e;return typeof t==`string`&&(t===`and`||t===`or`)?[t,...e.slice(1).map(e=>Array.isArray(e)?q(e):e)]:n===`in`&&Array.isArray(r)?r.length===0?[]:r.length===1?[t,`=`,r[0]]:[`or`,...r.map(e=>[t,`=`,e])]:K.has(n)&&Array.isArray(r)?r.length===0?[]:r.length===1?[t,`!=`,r[0]]:[`and`,...r.map(e=>[t,`!=`,e])]:e}function It(e){let t=typeof e==`string`?[e]:Array.isArray(e)?e:[],n=[];for(let e of t)if(typeof e==`string`){let t=e.trim().split(/\s+/);if(!t[0])continue;n.push({id:crypto.randomUUID(),field:t[0],order:t[1]?.toLowerCase()===`desc`?`desc`:`asc`})}else e&&typeof e==`object`&&typeof e.field==`string`&&n.push({id:crypto.randomUUID(),field:e.field,order:e.order||`asc`});return n}function Lt(e){return e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Rt(e){switch(e){case`bottom`:return{top:!1,bottom:!0};case`both`:return{top:!0,bottom:!0};default:return{top:!0,bottom:!1}}}function zt(e){let t=[e?.timeline,e?.options?.timeline,e?.calendar,e?.options?.calendar],n=e=>{for(let n of t){if(!n)continue;let t=e(n);if(typeof t==`string`&&t)return t}};return{startDateField:n(e=>e.startDateField??e.dateField),endDateField:n(e=>e.endDateField),titleField:n(e=>e.titleField)}}function Bt(e){return!Array.isArray(e)||e.length===0?[]:e.map(e=>Array.isArray(e)?q(e):e).filter(e=>Array.isArray(e)&&e.length>0)}function Vt(e,t,n){let r=Wt(t);return he(e,r.length>0?r:void 0,...Bt(n))}var Ht={id:`root`,logic:`and`,conditions:[]},Ut=[];function Wt(e){if(!e||!e.conditions||e.conditions.length===0)return[];let t=Bt(e.conditions.filter(e=>Pt(e.operator)?!0:s(e.operator,e.value)).map(e=>{let t=String(r(e.operator));return t===`is_empty`?[e.field,`=`,null]:t===`is_not_empty`?[e.field,`!=`,null]:Pt(e.operator)?[e.field,G(e.operator),null]:[e.field,G(e.operator),e.value]}));return t.length===0?[]:t.length===1?t[0]:[e.logic,...t]}var Gt=Re({"list.recordCount":`{{count}} records`,"list.recordCountOne":`{{count}} record`,"list.noItems":`No items found`,"list.noItemsMessage":`There are no records to display. Try adjusting your filters or adding new data.`,"list.firstRunTitle":`Nothing here yet`,"list.firstRunMessage":`Create your first record to get started.`,"list.noMatches":`No matching records`,"list.noMatchesMessage":`No records match your current filters or search. Try adjusting or clearing them.`,"list.loading":`Loading records…`,"list.loadErrorTitle":`Couldn’t load records`,"list.loadErrorMessage":`Something went wrong while loading this data. Check your connection and try again.`,"list.loadErrorForbiddenTitle":`You don’t have access`,"list.loadErrorForbiddenMessage":`You don’t have permission to view these records. Contact your administrator if you think you should have access.`,"list.loadErrorUnauthorizedTitle":`Sign in required`,"list.loadErrorUnauthorizedMessage":`Your session has expired or you are signed out. Sign in again to view these records.`,"list.loadErrorRejectedTitle":`This view’s query was rejected`,"list.loadErrorRejectedMessage":`The server could not process this view’s filter or query options. Clearing the filters usually fixes it; if the view is saved this way, an administrator needs to correct it.`,"list.loadErrorApiDisabledTitle":`This object isn’t available through the API`,"list.loadErrorApiDisabledMessage":`This page can’t load its records because the object is not exposed through the API. That is a setting on the object itself, not a permission — an administrator has to enable API access for it before this page can work.`,"list.retry":`Retry`,"grid.grouping.needsHeaderQuery":`This view is grouped, but its data source does not implement queryGroupHeaders, so the groups cannot be counted. Remove the grouping to show the records.`,"list.search":`Search`,"table.search":`Search…`,"list.filter":`Filter`,"list.filterRecords":`Filter Records`,"list.sort":`Sort`,"list.sortRecords":`Sort Records`,"list.sortByIdSuffix":`(by ID)`,"list.sortRelationalHint":`Columns that link to another record are not listed: they can only be sorted by the stored ID, not by the name shown in the cell. To sort by that name, denormalize it onto this object as a stored field, written when the source changes, and sort by that. Not a formula field: it is virtual, so no column is stored for it and the server refuses to sort by one.`,"list.resetSortToDefault":`Reset to view default`,"list.group":`Group`,"list.groupBy":`Group By`,"list.export":`Export`,"list.exportAs":`Export as {{format}}`,"list.color":`Color`,"list.rowColor":`Row Color`,"list.colorByField":`Color by field`,"list.clear":`Clear`,"list.none":`None`,"list.hideFields":`Hide fields`,"list.showAll":`Show all`,"list.pullToRefresh":`Pull to refresh`,"list.refresh":`Refresh`,"list.refreshing":`Refreshing…`,"list.dataLimitReached":`Showing first {{limit}} records. More data may be available.`,"list.addRecord":`Add record`,"list.tabs":`Tabs`,"list.allRecords":`All Records`,"list.share":`Share`,"list.print":`Print`,"common.printDialogHint":`Opens your browser’s print dialog (not a PDF export)`,"list.hideFieldsTitle":`Hide Fields`,"table.rowsPerPage":`Rows per page`,"grid.toolbar.densityMode":`Density`,"grid.toolbar.densityCompact":`Compact`,"grid.toolbar.densityComfortable":`Comfortable`,"grid.toolbar.densitySpacious":`Spacious`,"grid.toolbar.densityCycleHint":`{{label}} (click to cycle)`,"grid.toolbar.densityCycleShortHint":`Click to cycle`,"list.viewSettings":`View settings`,"list.viewSettingsHint":`Grouping, color, density, and visible fields. Applies to everyone who uses this view.`,"detail.recordDetail":`Record Detail`,"detail.recordDetailWithLabel":`{{label}} Detail`},`list.recordCount`);function Kt(){let{fieldLabel:e,actionLabel:t,objectLabel:n}=A();return{fieldLabel:e,actionLabel:t,objectLabel:n}}var qt=100;function Jt(e){return typeof e==`number`&&Number.isInteger(e)&&e>0}function Yt(e,t,n){let r=e??t;return Jt(r)?r:n}function Xt(e,t,n){let r=e??t;return r==null||Jt(r)?null:`[ObjectUI] ListView pagination: ${typeof n==`string`&&n?`list-view on ${n}`:`list-view`} declared pageSize: ${String(r)}, which is not a positive integer. A page size must be a positive integer (the spec refuses zero and negative values), so it was ignored and this list fell back to its default page size (${qt}).`}var Zt=L.forwardRef(({schema:e,className:t,onViewChange:n,onFilterChange:r,onSortChange:o,onSearchChange:s,onHiddenFieldsChange:f,onInlineEditChange:p,onColumnStateChange:h,onRowClick:x,showViewSwitcher:ee,userFilterSelections:ne,onUserFilterSelectionsChange:ie,initialFilters:ae,initialSearchTerm:le,...O},de)=>{let fe=ee??e?.showViewSwitcher??!1,{t:k}=Gt(),{fieldLabel:he,actionLabel:Te,objectLabel:Ee}=Kt(),{translateOptions:Ne}=Be(),Ie=Ve(),A=L.useMemo(()=>pe(e),[e]),Re=ye(),j=Me(A.filter,Re),M=L.useCallback((e,t)=>A.objectName?he(A.objectName,e,t):t,[A.objectName,he]),Ue=L.useCallback(e=>{let t=Lt(e);return A.objectName&&typeof Te==`function`?Te(A.objectName,e,t):t},[A.objectName,Te]),[N,We]=L.useState(A.viewType),Ge=N===`chart`&&Nt(A).shape===`dataset`,P=N===`tree`||N===`chart`,F=L.useMemo(()=>{let e=A.userActions,t=A.addRecord?.enabled===!0&&e?.addRecordForm!==!1,n=Rt(A.addRecord?.position);return{showSearch:e?.search!==!1&&!P,showSort:e?.sort!==!1,showFilters:e?.filter!==!1&&!Ge,showUserFilters:!Ge,showRefresh:e?.refresh!==!1,showDensity:e?.rowHeight!==!1,showGroup:e?.group!==!1,showHideFields:e?.hideFields===!0,showColor:e?.rowColor===!0,compactToolbar:A.compactToolbar===!0,showAddRecord:t,showAddRecordTop:t&&n.top,showAddRecordBottom:t&&n.bottom}},[A.userActions,A.compactToolbar,A.addRecord,Ge,P]),[Je,Xe]=L.useState(()=>le??``),I=P?``:Je,[Qe,et]=L.useState(!1),[ut,yt]=L.useState(!1),[z,bt]=L.useState(()=>It(A.sort)),xt=L.useMemo(()=>JSON.stringify(A.sort||[]),[A.sort]);L.useEffect(()=>{bt(It(A.sort))},[xt]);let B=L.useMemo(()=>It(A.sort),[xt]),wt=L.useMemo(()=>z.length!==B.length||z.some((e,t)=>e.field!==B[t].field||e.order!==B[t].order),[z,B]),[Tt,Et]=L.useState(!1),[V,Ot]=L.useState(()=>ae&&Array.isArray(ae.conditions)?ae:{id:`root`,logic:`and`,conditions:[]}),H=O.dataSource,[U,kt]=L.useState([]),[At,jt]=L.useState(null),[W,Pt]=L.useState(`network`),[G,K]=L.useState(()=>!(Array.isArray(A.data)||A.data&&typeof A.data==`object`&&A.data.provider===`value`&&Array.isArray(A.data.items)||A.viewType===`gantt`&&A.data&&typeof A.data==`object`&&!Array.isArray(A.data)&&A.data.provider===`api`)),[q,Bt]=L.useState(null),[Wt,Jt]=L.useState(!1),[Zt,Qt]=L.useState(0),[$t,en]=L.useState(!1);L.useImperativeHandle(de,()=>({refresh:()=>Qt(e=>e+1)}),[]),L.useEffect(()=>{if(H?.onMutation&&A.objectName)return H.onMutation(e=>{e.resource===A.objectName&&Qt(e=>e+1)})},[H,A.objectName]);let[tn,nn]=L.useState(void 0),rn=A.pagination?.pageSize,J=Yt(tn,rn,qt);L.useEffect(()=>{let e=Xt(tn,rn,A.objectName);e&&console.warn(e)},[tn,rn,A.objectName]);let[an,on]=L.useState(1),[sn,cn]=L.useState(null),[ln,un]=L.useState(null),dn=L.useMemo(()=>{if(A.grouping?.fields?.length)return A.grouping;let e=typeof A.groupBy==`string`?A.groupBy.trim():``,t=typeof A.groupBy2==`string`?A.groupBy2.trim():``,n=[];return e&&n.push({field:e,order:`asc`,collapsed:!1}),t&&t!==e&&n.push({field:t,order:`asc`,collapsed:!1}),n.length>0?{fields:n}:void 0},[A.grouping,A.groupBy,A.groupBy2]),[Y,fn]=L.useState(dn),[pn,mn]=L.useState(!1),hn=L.useRef(dn);L.useEffect(()=>{hn.current!==dn&&(hn.current=dn,fn(dn))},[dn]);let gn=N===`grid`&&!Y?.fields?.length,_n=gn?(an-1)*J:0,vn=gn?sn:null,[yn,bn]=L.useState(A.rowColor),[xn,Sn]=L.useState(!1),[Cn,wn]=L.useState([]),Tn=L.useRef(0),[En,Dn]=L.useState([]),On=Ge&&V.conditions&&V.conditions.length>0?Ht:V,kn=Ge&&En.length>0?Ut:En,An=L.useMemo(()=>{let e=A.userFilters;if(!e)return;if(e.element===`tabs`||e.fields&&e.fields.length>0||!q?.fields)return e;let t=new Set([`select`,`multi-select`,`boolean`]),n=[],r=Array.isArray(q.fields)?q.fields.map(e=>[e.name,e]):Object.entries(q.fields);for(let[e,i]of r)(t.has(i.type)||i.options&&!i.type)&&n.push({field:e,label:M(e,i.label||e),type:i.type===`boolean`?`boolean`:i.type===`multi-select`?`multi-select`:`select`});return n.length===0?e:{...e,fields:n}},[A.userFilters,q,M]),[X,jn]=L.useState(()=>new Set(A.hiddenFields||[])),Mn=L.useMemo(()=>JSON.stringify(A.hiddenFields||[]),[A.hiddenFields]);L.useEffect(()=>{jn(new Set(A.hiddenFields||[]))},[Mn]);let Nn=L.useCallback(e=>{jn(e),f?.(Array.from(e))},[f]),[Pn,Fn]=L.useState(!1),[In,Ln]=L.useState(()=>!!A.inlineEdit);L.useEffect(()=>{Ln(!!A.inlineEdit)},[A.inlineEdit]);let Rn=L.useCallback(e=>{Ln(e),p?.(e)},[p]),[zn,Bn]=L.useState(!1),[Vn,Hn]=L.useState(!1),[Un,Wn]=L.useState(null),{getObjectApiOperations:Gn,can:Kn}=a(),qn=A.objectName?Gn(A.objectName):void 0,Jn=A.allowExport!==!1&&A.operations?.export!==!1&&(!qn||qn.includes(`export`)),Yn=L.useMemo(()=>{let e=A.bulkActions;return!e||e.length===0||D(q,qn).delete&&(!A.objectName||Kn(A.objectName,`delete`))?e:e.filter(e=>String(e).toLowerCase()!==`delete`)},[A.bulkActions,A.objectName,q,qn,Kn]),Xn=L.useMemo(()=>D(q,qn).deletePredicates?.visibleWhen,[q,qn]),Zn=ue(),Qn=L.useMemo(()=>Le(Xn,Cn,{scope:Zn,fields:q?.fields,label:`delete`}),[Xn,Cn,Zn,q]),$n=L.useMemo(()=>A.userActions?.editInline!==!1&&ce(q,qn)&&(!A.objectName||Kn(A.objectName,`update`)),[A.userActions,A.objectName,q,qn,Kn]),Z=L.useMemo(()=>{if(A.exportOptions)return Array.isArray(A.exportOptions)?{formats:A.exportOptions}:A.exportOptions},[A.exportOptions]),er=L.useMemo(()=>{let e=Z?.formats||[`csv`,`json`],t=typeof H?.exportDownload==`function`&&A.objectName&&Z?.streaming!==!1?[`csv`,`xlsx`,`json`]:[`csv`,`json`];return e.filter(e=>t.includes(e))},[Z,H,A.objectName]);L.useEffect(()=>{let e=Z?.formats;if(!e)return;let t=e.filter(e=>!er.includes(e));t.length>0&&console.warn(`[ObjectUI] ListView export: unsupported format(s) hidden from the menu: ${t.join(`, `)}`)},[Z,er]);let tr=L.useMemo(()=>me(A.rowHeight)??`compact`,[A.rowHeight]),Q=we(tr,{onChange:A.onDensityChange}),nr=L.useMemo(()=>`objectui:gallery:density:${A.objectName??`default`}`,[A.objectName]),[rr,ir]=L.useState(()=>{if(typeof window>`u`)return A.gallery?.cardSize??`medium`;try{let e=window.localStorage.getItem(nr);if(e===`small`||e===`medium`||e===`large`)return e}catch{}return A.gallery?.cardSize??`medium`}),ar=L.useCallback(()=>{ir(e=>{let t=e===`large`?`medium`:e===`medium`?`small`:`large`;try{window.localStorage.setItem(nr,t)}catch{}return t})},[nr]),or=L.useCallback(async()=>{Qt(e=>e+1)},[]),{ref:sr,isRefreshing:cr,pullDistance:lr}=vt({onRefresh:or,enabled:!!H&&!!A.objectName}),ur=L.useMemo(()=>A.id?`listview-${A.objectName}-${A.id}-view`:`listview-${A.objectName}-view`,[A.objectName,A.id]);L.useEffect(()=>{let e=!0;return Jt(!1),Bt(null),(async()=>{if(!H||!A.objectName){Jt(!0);return}if(typeof H.getObjectSchema!=`function`){Jt(!0);return}try{let t=await H.getObjectSchema(A.objectName);e&&Bt(t)}catch(e){console.warn(`Failed to fetch object schema for ListView:`,e)}finally{e&&Jt(!0)}})(),()=>{e=!1}},[A.objectName,H]);let $=a(),dr=L.useMemo(()=>{let e=Array.isArray(A.columns)?A.columns.map(e=>T(e)).filter(e=>typeof e==`string`&&e.length>0):[],t=new Set(e),n=e=>{if(!e)return;let n=[e.groupByField,e.groupField,e.groupBy,e.summarizeField,e.titleField,e.cardTitle,e.startDateField,e.endDateField,e.dateField,e.endField,e.colorField,e.allDayField,e.coverField,e.imageField,e.swimlaneField,e.valueField,e.locationField,e.latitudeField,e.longitudeField,...Array.isArray(e.columns)?e.columns:[],...Array.isArray(e.cardFields)?e.cardFields:[],...Array.isArray(e.visibleFields)?e.visibleFields:[]];for(let e of n)typeof e==`string`&&e&&t.add(e)};n(A.kanban),n(A.options?.kanban),n(A.calendar),n(A.options?.calendar),n(A.gallery),n(A.options?.gallery),n(A.timeline),n(A.options?.timeline),n(A.gantt),n(A.options?.gantt),n(Mt(A));for(let e of oe(Y))t.add(e);let r=t.size>0?Array.from(t):void 0,i=Fe(q?.fields,r);return!$?.isLoaded||!A.objectName?i:i.filter(e=>$.checkField(A.objectName,e,`read`))},[q?.fields,Y,A.columns,A.kanban,A.calendar,A.gallery,A.timeline,A.gantt,A.map,A.options,$,A.objectName]),fr=N===`gantt`&&!!A.data&&typeof A.data==`object`&&!Array.isArray(A.data)&&A.data.provider===`api`,pr=N===`grid`&&(Y?.fields?.length??0)>0&&!Array.isArray(A.data)&&A.data?.provider!==`value`&&!!A.objectName&&typeof H?.queryGroupHeaders==`function`&&!I,mr=N===`grid`&&oe(Y).length>0&&!Array.isArray(A.data)&&A.data?.provider!==`value`&&!!A.objectName&&!!H&&typeof H.queryGroupHeaders!=`function`,hr=N!==`gantt`&&!pr&&!mr,gr=!Array.isArray(A.data)&&A.data?.provider!==`value`&&!fr,_r=be(gr&&A.objectName||void 0);L.useEffect(()=>{let e=!0,t=++Tn.current;if(A.data&&typeof A.data==`object`&&!Array.isArray(A.data)){let e=A.data;if(e.provider===`value`&&Array.isArray(e.items)){let t=e.items;if(I){let e=I.toLowerCase();t=t.filter(t=>Object.values(t).some(t=>t!=null&&String(t).toLowerCase().includes(e)))}kt(t),K(!1),en(!1);return}}if(Array.isArray(A.data)){let e=A.data;if(I){let t=I.toLowerCase();e=e.filter(e=>Object.values(e).some(e=>e!=null&&String(e).toLowerCase().includes(t)))}kt(e),K(!1),en(!1);return}if(fr){K(!1),en(!1);return}if(mr){kt([]),K(!1),en(!1);return}return Wt?((async()=>{if(!H||!A.objectName){K(!1);return}K(!0),jt(null);let n=null;try{let r=Vt(j,On,kn),i=z.length>0?z.filter(e=>e.field).map(e=>({field:e.field,order:e.order})):void 0,a=(()=>{let e=Array.isArray(A.columns)?A.columns.map(e=>T(e)).filter(e=>typeof e==`string`&&e.length>0):[];if(e.length===0)return;let t=$?.isLoaded&&A.objectName?e.filter(e=>$.checkField(A.objectName,e,`read`)):e,n=new Set([`id`]);for(let e of t)n.add(e);for(let e of dr)n.add(e);let r=(()=>{let e=q?.fields;if(!e)return null;let t=Array.isArray(e)?e.map(e=>e?.name).filter(e=>typeof e==`string`):Object.keys(e),n=new Set(t);return n.add(`id`),n.add(`created_at`),n.add(`updated_at`),n})(),i=e=>{typeof e==`string`&&e&&(!r||r.has(e))&&($?.isLoaded&&A.objectName&&r?.has(e)&&!E.has(e)&&!$.checkField(A.objectName,e,`read`)||n.add(e))},a=e=>{E.has(e)?n.add(e):i(e)},o=e=>{if(!e)return;let t=[e.groupByField,e.groupField,e.groupBy,e.summarizeField,e.titleField,e.cardTitle,e.startDateField,e.endDateField,e.dateField,e.endField,e.colorField,e.allDayField,e.coverField,e.imageField,e.swimlaneField,e.valueField,e.locationField,e.latitudeField,e.longitudeField,e.descriptionField,...Array.isArray(e.columns)?e.columns:[],...Array.isArray(e.cardFields)?e.cardFields:[],...Array.isArray(e.visibleFields)?e.visibleFields:[]];for(let e of t)i(e)};o(A.kanban),o(A.options?.kanban),o(A.calendar),o(A.options?.calendar),o(A.gallery),o(A.options?.gallery),o(A.timeline),o(A.options?.timeline),(A.timeline??A.options?.timeline)&&(i(`status`),i(`priority`)),o(A.gantt),o(A.options?.gantt),o(Mt(A));for(let e of oe(Y))i(e);for(let e of Oe(ge({conditionalFormatting:A.conditionalFormatting,rowActionDefs:A.rowActionDefs,bulkActionDefs:A.bulkActionDefs,objectActions:q?.actions,userActions:q?.userActions})))a(e);return Array.from(n)})(),o=r!==void 0,s=_n,c={...o?{$filter:r}:{},$orderby:i,$top:J,...s>0?{$skip:s}:{},...a?{$select:a}:{},...dr.length>0?{$expand:dr}:{},...I?{$search:I,...A.searchableFields&&A.searchableFields.length>0?{$searchFields:A.searchableFields}:{}}:{}},l=await H.find(A.objectName,c);if(!e||t!==Tn.current)return;let u=[];Array.isArray(l)?u=l:l&&typeof l==`object`&&(Array.isArray(l.data)?u=l.data:Array.isArray(l.records)?u=l.records:Array.isArray(l.value)&&(u=l.value)),kt(u);let d=l&&typeof l==`object`?l.total:void 0,f=typeof d==`number`?d:null;if(cn(f),s>0&&u.length===0&&f!==null){let e=Math.max(1,Math.ceil(f/J));e<Math.floor(s/J)+1&&(n=e,on(e))}un(c),en(u.length>=J)}catch(e){t===Tn.current&&(console.error(`ListView data fetch error:`,e),kt([]),jt(e?.message?String(e.message):String(e??`Unknown error`)),Pt(ke(e)))}finally{e&&t===Tn.current&&n===null&&K(!1)}})(),()=>{e=!1}):void 0},[A.objectName,A.data,H,j,J,z,On,kn,Zt,I,A.searchableFields,A.columns,A.kanban,A.calendar,A.gallery,A.timeline,A.gantt,A.map,A.options,q?.fields,Wt,A.refreshTrigger,$,_n,Y,fr,_r,mr]);let vr=JSON.stringify([A.objectName,j,J,z,On,kn,I,N,Y]),yr=L.useRef(vr);L.useEffect(()=>{yr.current!==vr&&(yr.current=vr,on(1))},[vr]);let br=L.useMemo(()=>{let e=[`grid`];(A.kanban?.groupByField||A.kanban?.groupField||A.options?.kanban?.groupByField||A.options?.kanban?.groupField)&&e.push(`kanban`),(A.gallery?.coverField||A.gallery?.imageField||A.options?.gallery?.imageField)&&e.push(`gallery`),(A.calendar?.startDateField||A.options?.calendar?.startDateField)&&e.push(`calendar`),zt(A).startDateField&&e.push(`timeline`),(A.gantt?.startDateField||A.options?.gantt?.startDateField)&&e.push(`gantt`);let t=Mt(A);(t.locationField||t.latitudeField&&t.longitudeField)&&e.push(`map`),(A.tree?.parentField||A.options?.tree?.parentField||A.viewType===`tree`)&&e.push(`tree`),Nt(A).resolves&&e.push(`chart`),A.viewType&&!e.includes(A.viewType)&&se(A.viewType)&&e.push(A.viewType);let n=A.appearance?.allowedVisualizations;if(Array.isArray(n)&&n.length>0){let t=n.filter(t=>e.includes(t));return t.length>0?t:[`grid`]}return e},[A.options,A.viewType,A.kanban,A.calendar,A.gantt,A.gallery,A.timeline,A.map,A.tree,A.chart,A.appearance?.allowedVisualizations]),xr=fe&&br.length>1;L.useEffect(()=>{A.viewType&&We(A.viewType)},[A.viewType]);let Sr=L.useCallback(e=>{We(e);try{localStorage.setItem(ur,e)}catch(e){console.warn(`Failed to save view preference to localStorage:`,e)}n?.(e)},[ur,n]),Cr=L.useCallback(e=>{Xe(e),s?.(e)},[s]),wr=ve({navigation:A.navigation,objectName:A.objectName,onNavigate:A.onNavigate,onRowClick:x}),Tr=i(A.label,Ie),Er=Tr?k(`detail.recordDetailWithLabel`,{label:Tr}):A.objectName?k(`detail.recordDetailWithLabel`,{label:A.objectName.charAt(0).toUpperCase()+A.objectName.slice(1)}):k(`detail.recordDetail`),Dr=L.useMemo(()=>{let e=Array.isArray(A.columns)?A.columns:[];if($?.isLoaded&&A.objectName&&(e=e.filter(e=>{let t=T(e);return!t||$.checkField(A.objectName,t,`read`)})),X.size>0&&(e=e.filter(e=>{let t=T(e);return t!=null&&!X.has(t)})),A.fieldOrder&&A.fieldOrder.length>0){let t=new Map(A.fieldOrder.map((e,t)=>[e,t]));e=[...e].sort((e,n)=>(t.get(T(e))??1/0)-(t.get(T(n))??1/0))}return e},[A.columns,A.objectName,X,A.fieldOrder,$]),Or=L.useMemo(()=>Array.isArray(A.columns)&&A.columns.length>0,[A.columns]),kr=L.useRef(null),Ar=j;if(N===`gantt`||N===`tree`||N===`chart`||pr)try{let e=Vt(j,On,kn),t=JSON.stringify(e??null),n=kr.current;n&&n.key===t?Ar=n.value:(kr.current={key:t,value:e},Ar=e)}catch(e){if(!(e instanceof De))throw e;Ar=kr.current?kr.current.value:j}let jr=N===`gantt`?I:``,Mr=L.useMemo(()=>{let e=Q.mode===`compact`?`compact`:Q.mode===`spacious`?`tall`:`medium`,t={objectName:A.objectName,fields:Dr,filter:j,sort:z,className:`h-full w-full`,showSearch:!1,onRowClick:wr.handleClick,rowHeight:e,hideRowHeightToggle:!0,...h?{onColumnStateChange:h}:{},...A.columnState?{columnState:A.columnState}:{}};switch(N){default:case`grid`:return{type:`object-grid`,...t,...Or?{columns:Dr}:{fields:void 0,columns:void 0},...A.conditionalFormatting?{conditionalFormatting:A.conditionalFormatting}:{},editable:In&&$n,...A.wrapHeaders==null?{}:{wrapHeaders:A.wrapHeaders},...A.resizable==null?{}:{resizable:A.resizable},...A.selection?{selection:A.selection}:{},...A.pagination?{pagination:A.pagination}:{},...Y?{grouping:Y}:{},...pr?{filter:Ar}:{},...yn?{rowColor:yn}:{},...A.rowActions?{rowActions:A.rowActions}:{},...A.rowActionDefs?{rowActionDefs:A.rowActionDefs}:{},...A.bulkActions?{batchActions:A.bulkActions}:{},...A.bulkActionDefs?{bulkActionDefs:A.bulkActionDefs}:{},...A.options?.grid||{}};case`kanban`:{let{columns:e,groupByField:n,groupField:r,cardFields:i,titleField:a,groupBy:o,...s}={...A.options?.kanban||{},...A.kanban||{}},c=n||r||je(q)||void 0;return{type:`object-kanban`,...t,groupBy:c,...a?{titleField:a}:{},cardFields:i||e||Dr||[],...Y?{grouping:Y}:{},...s}}case`calendar`:{let e=A.calendar?.startDateField||A.options?.calendar?.startDateField,n=A.calendar?.endDateField||A.options?.calendar?.endDateField,r=A.calendar?.titleField||A.options?.calendar?.titleField,{dateField:i,endField:a,...o}={...A.options?.calendar||{},...A.calendar||{}};return{type:`object-calendar`,...t,...e?{startDateField:e}:{},...n?{endDateField:n}:{},...r?{titleField:r}:{},...A.calendar?.defaultView?{defaultView:A.calendar.defaultView}:{},...o}}case`gallery`:{let e={...A.options?.gallery||{},...A.gallery||{},cardSize:rr};return{type:`object-gallery`,...t,gallery:Object.keys(e).length>0?e:void 0,imageField:A.gallery?.coverField||A.gallery?.imageField||A.options?.gallery?.imageField,titleField:A.gallery?.titleField||A.options?.gallery?.titleField||`name`,...Y?{grouping:Y}:{}}}case`timeline`:{let e={...A.options?.timeline||{},...A.timeline||{}},n=zt(A),r={...e,...n.startDateField?{startDateField:n.startDateField}:{},...n.endDateField?{endDateField:n.endDateField}:{}};return{type:`object-timeline`,...t,timeline:Object.keys(r).length>0?r:void 0,...n.startDateField?{startDateField:n.startDateField}:{},titleField:n.titleField||`name`,...n.endDateField?{endDateField:n.endDateField}:{},...A.timeline?.groupByField?{groupByField:A.timeline.groupByField}:{},...A.timeline?.colorField?{colorField:A.timeline.colorField}:{},...A.timeline?.scale?{scale:A.timeline.scale}:{}}}case`gantt`:{let e=A.gantt?.startDateField||A.options?.gantt?.startDateField,n=A.gantt?.endDateField||A.options?.gantt?.endDateField;return{type:`object-gantt`,...t,filter:Ar,...jr?{search:jr,...A.searchableFields&&A.searchableFields.length>0?{searchableFields:A.searchableFields}:{}}:{},...A.navigation?{navigation:A.navigation}:{},...A.data?{data:A.data}:{},...e?{startDateField:e}:{},...n?{endDateField:n}:{},...A.gantt?.titleField?{titleField:A.gantt.titleField}:{},...A.options?.gantt||{},...A.gantt||{}}}case`map`:{let e=Mt(A);return{type:`object-map`,...t,...e}}case`tree`:{let e=A.tree||A.options?.tree||{};return{type:`object-tree`,...t,filter:Ar,parentField:e.parentField,labelField:e.labelField||e.titleField||`name`,fields:e.fields||Dr,defaultExpandedDepth:e.defaultExpandedDepth,...e}}case`chart`:{let e=Nt(A),t=e.config;if(e.shape===`dataset`){let n=e.dimensions,r=e.values;return{type:`object-chart`,dataset:e.dataset,dimensions:n,values:r,chartType:t.chartType||`bar`,xAxisKey:n[0],series:r.map(e=>({dataKey:e,label:e})),className:`h-[400px] w-full`}}let n=e.valueField||`value`,r=e.categoryField||`name`;return{type:`object-chart`,objectName:A.objectName,chartType:t.chartType||`bar`,filter:Ar,aggregate:{field:n,function:t.aggregation||`count`,groupBy:r},xAxisKey:r,series:[{dataKey:n,label:n}],className:`h-[400px] w-full`}}}},[N,A,j,z,Dr,Or,Y,yn,wr.handleClick,Q.mode,rr,In,$n,q,Ar,jr,pr]),Nr=V.conditions&&V.conditions.length>0,Pr=L.useMemo(()=>{let e,t=(e,t)=>{if(!t)return;let n=Array.isArray(t)?t.map(e=>({value:e?.value??e,label:e?.label??String(e?.value??e),...e&&typeof e==`object`?e:{}})):Object.entries(t).map(([e,t])=>({value:e,label:t?.label||e,...t}));return A.objectName?Ne(A.objectName,e,n):n};return e=q?.fields?Object.entries(q.fields).map(([e,n])=>({value:e,label:M(e,n.label||e),type:n.type||`text`,options:t(e,n.options),referenceTo:n.reference,displayField:n.displayField})):(Array.isArray(A.columns)?A.columns:[]).flatMap(e=>{if(typeof e==`string`)return[{value:e,label:e,type:`text`}];let t=T(e);return t?[{value:t,label:M(t,e.label||t),type:e.type||`text`}]:[]}),e},[q,A.columns,A.objectName,M,Ne]),Fr=L.useMemo(()=>{if(!A.filterableFields||A.filterableFields.length===0)return Pr;let e=new Set(A.filterableFields);return Pr.filter(t=>e.has(t.value))},[Pr,A.filterableFields]),Ir=L.useMemo(()=>_e(q),[q]),{sortFields:Lr,sortHasRelationalField:Rr}=L.useMemo(()=>{let e=new Set(z.map(e=>e.field).filter(Boolean)),t=!1,n=[];for(let r of Pr){let i=re.has(r.type),a=Ir?xe(Ir,r.value):!Pe.has(r.type);if(!i&&a){n.push({value:r.value,label:r.label});continue}if(e.has(r.value)){n.push({value:r.value,label:i?`${r.label} ${k(`list.sortByIdSuffix`)}`:r.label});continue}i&&(t=!0)}return{sortFields:n,sortHasRelationalField:t}},[Pr,z,k,Ir]),zr=L.useCallback(e=>{o&&o(Ir?Se(e,Ir):e)},[o,Ir]),Br=L.useCallback(e=>{let t=e.map(e=>({id:crypto.randomUUID(),field:e.field,order:e.order}));bt(t),on(1),zr(t)},[zr]),Vr=L.useCallback(()=>{let e=It(A.sort);bt(e),on(1),zr(e)},[xt,zr]),Hr=L.useCallback(e=>{if(!Jn)return;let t=Z,n=t?.maxRecords||0,r=t?.includeHeaders!==!1,a=q?.label&&q?.name&&typeof Ee==`function`?Ee(q):q?.label,o=e=>Ae(e,{prefix:t?.fileNamePrefix,label:a,objectName:A.objectName,viewLabel:i(A.label,Ie)});if((e===`csv`||e===`xlsx`||e===`json`)&&typeof H?.exportDownload==`function`&&A.objectName&&t?.streaming!==!1){let t=Dr.map(e=>T(e)).filter(Boolean),i=z.length>0?z.filter(e=>e.field).map(e=>({field:e.field,direction:e.order})):void 0;Wn(null),Hn(!0),(async()=>{try{let a=Vt(j,On,kn),s=await H.exportDownload(A.objectName,{format:e,fields:t.length?t:void 0,filter:a,...I?{search:I,...A.searchableFields&&A.searchableFields.length>0?{searchFields:A.searchableFields}:{}}:{},sort:i,includeHeaders:r,limit:n>0?n:void 0}),c=URL.createObjectURL(s),l=document.createElement(`a`);l.href=c,l.download=o(e),l.rel=`noopener`,document.body.appendChild(l),l.click(),l.remove(),URL.revokeObjectURL(c),Bn(!1)}catch(e){console.error(`ListView export failed:`,e),Wn(e instanceof Error?e.message:String(e))}finally{Hn(!1)}})();return}let s=n>0?U.slice(0,n):U;if(e===`csv`){let e=Dr.map(e=>T(e)).filter(Boolean),t=[];r&&t.push(e.join(`,`)),s.forEach(n=>{t.push(e.map(e=>{let t=n[e],r;return r=t==null?``:Array.isArray(t)?t.map(e=>typeof e==`object`&&e?JSON.stringify(e):String(e??``)).join(`; `):typeof t==`object`?JSON.stringify(t):String(t),r.includes(`,`)||r.includes(`"`)||r.includes(`
2
- `)||r.includes(`\r`)?`"${r.replace(/"/g,`""`)}"`:r}).join(`,`))});let n=new Blob([t.join(`
3
- `)],{type:`text/csv;charset=utf-8;`}),i=URL.createObjectURL(n),a=document.createElement(`a`);a.href=i,a.download=o(`csv`),a.click(),URL.revokeObjectURL(i)}else if(e===`json`){let e=new Blob([JSON.stringify(s,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=o(`json`),n.click(),URL.revokeObjectURL(t)}Bn(!1)},[U,Dr,Z,A.objectName,j,A.searchableFields,Jn,H,On,kn,z,I,q,Ee]),Ur=L.useMemo(()=>(Array.isArray(A.columns)?A.columns:[]).flatMap(e=>{if(typeof e==`string`)return[{name:e,label:M(e,e)}];let t=T(e);return t?[{name:t,label:M(t,e.label||t)}]:[]}),[A.columns,M]),Wr=i(A.aria?.ariaLabel,Ie),Gr=ze(A.description,Ie);return(0,R.jsxs)(`div`,{ref:sr,className:g(`flex flex-col h-full bg-background relative min-w-0 overflow-hidden`,t),...Wr?{"aria-label":Wr}:{},...A.aria?.ariaDescribedBy?{"aria-describedby":A.aria.ariaDescribedBy}:{},...A.aria?.live?{"aria-live":A.aria.live}:{},role:A.aria?.role??`region`,"aria-busy":G||void 0,"data-state":G?`loading`:`idle`,children:[lr>0&&(0,R.jsx)(`div`,{className:`flex items-center justify-center text-xs text-muted-foreground`,style:{height:lr},children:k(cr?`list.refreshing`:`list.pullToRefresh`)}),Gr&&A.appearance?.showDescription!==!1&&(0,R.jsx)(`div`,{className:`px-4 pt-1.5 text-xs text-muted-foreground bg-background`,"data-testid":`view-description`,children:Gr}),(0,R.jsxs)(`div`,{className:`border-b px-2 sm:px-4 py-1.5 flex items-center justify-between gap-1 sm:gap-2 bg-background`,children:[(0,R.jsx)(`div`,{className:`flex items-center gap-2 overflow-x-auto min-w-0`,children:An&&F.showUserFilters&&(0,R.jsx)(`div`,{className:`shrink-0 min-w-0 overflow-x-auto`,"data-testid":`user-filters`,children:(0,R.jsx)(Dt,{config:An,objectDef:q,data:U,onFilterChange:Dn,maxVisible:3,initialSelections:ne,onSelectionsChange:ie})})}),(0,R.jsxs)(`div`,{className:`flex items-center gap-0 shrink-0 rounded-lg border border-border bg-muted/40 p-0.5 shadow-sm`,"data-print-hide":!0,children:[xr&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(St,{currentView:N,availableViews:br,onViewChange:Sr}),(0,R.jsx)(`div`,{className:`h-4 w-px bg-border/60 mx-0.5`})]}),N===`grid`&&p&&!F.compactToolbar&&$n&&(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,onClick:()=>Rn(!In),className:g(`hidden sm:inline-flex h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,In&&`text-primary`),title:k(`list.inlineEditLabel`,{defaultValue:`Edit records inline (click a cell to edit)`}),"data-testid":`toolbar-inline-edit-toggle`,children:[(0,R.jsx)(nt,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.inlineEditShort`,{defaultValue:`Edit inline`})})]}),F.showHideFields&&!F.compactToolbar&&(0,R.jsxs)(m,{open:Pn,onOpenChange:Fn,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:g(`hidden sm:inline-flex h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,X.size>0&&`text-primary`),children:[(0,R.jsx)(qe,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.hideFields`)}),X.size>0&&(0,R.jsx)(`span`,{className:`ml-1 flex h-4 min-w-[16px] items-center justify-center text-[10px] font-medium text-muted-foreground tabular-nums`,children:X.size})]})}),(0,R.jsx)(c,{align:`start`,className:`w-64 p-3`,children:(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-2`,children:[(0,R.jsx)(`h4`,{className:`font-medium text-sm`,children:k(`list.hideFieldsTitle`)}),X.size>0&&(0,R.jsx)(w,{variant:`ghost`,size:`sm`,className:`h-6 px-2 text-xs`,onClick:()=>Nn(new Set),children:k(`list.showAll`)})]}),(0,R.jsx)(`div`,{className:`max-h-60 overflow-y-auto space-y-1`,children:Ur.map(e=>(0,R.jsxs)(`label`,{className:`flex items-center gap-2 text-sm py-1 px-1 rounded hover:bg-muted cursor-pointer`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!X.has(e.name),onChange:()=>{let t=new Set(X);t.has(e.name)?t.delete(e.name):t.add(e.name),Nn(t)},className:`rounded border-input`}),(0,R.jsx)(`span`,{className:`truncate`,children:e.label})]},e.name))})]})})]}),F.showHideFields&&!F.compactToolbar&&(F.showFilters||F.showSort||F.showGroup)&&(0,R.jsx)(`div`,{className:`hidden sm:block h-5 w-px bg-border/50 mx-1 shrink-0`}),F.showFilters&&(0,R.jsxs)(m,{open:Tt,onOpenChange:Et,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:g(`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,Nr&&`text-foreground font-medium`),children:[(0,R.jsx)(pt,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.filter`)}),Nr&&(0,R.jsx)(`span`,{className:`ml-1 flex h-4 min-w-[16px] items-center justify-center text-[10px] font-medium text-muted-foreground tabular-nums`,children:V.conditions?.length||0})]})}),(0,R.jsx)(c,{align:`start`,className:`w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4`,children:(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(`div`,{className:`flex items-center justify-between border-b pb-2`,children:(0,R.jsx)(`h4`,{className:`font-medium text-sm`,children:k(`list.filterRecords`)})}),(0,R.jsx)(d,{fields:Fr,value:V,extraOperators:Ft,onChange:e=>{Ot(e),r&&r(e)}})]})})]}),F.showGroup&&!F.compactToolbar&&(0,R.jsxs)(m,{open:pn,onOpenChange:mn,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:g(`hidden sm:inline-flex h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,Y&&`text-foreground font-medium`),children:[(0,R.jsx)(Ye,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.group`)}),Y&&Y.fields?.length>0&&(0,R.jsx)(`span`,{className:`ml-1 flex h-4 min-w-[16px] items-center justify-center text-[10px] font-medium text-muted-foreground tabular-nums`,children:Y.fields.length})]})}),(0,R.jsx)(c,{align:`start`,className:`w-72 p-3`,children:(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-2`,children:[(0,R.jsx)(`h4`,{className:`font-medium text-sm`,children:k(`list.groupBy`)}),Y&&(0,R.jsx)(w,{variant:`ghost`,size:`sm`,className:`h-6 px-2 text-xs`,onClick:()=>fn(void 0),"data-testid":`clear-grouping`,children:k(`list.clear`)})]}),(0,R.jsx)(`div`,{"data-testid":`group-field-list`,children:(0,R.jsx)(y,{value:Y,fieldOptions:Ur.map(e=>({value:e.name,label:e.label||e.name})),maxLevels:3,labels:{addGroup:k(`list.addGroup`,{defaultValue:`Add group field`}),collapseTitle:k(`list.collapsedByDefault`,{defaultValue:`Collapsed by default`}),removeTitle:k(`list.removeGroup`,{defaultValue:`Remove`})},onChange:e=>fn(e)})})]})})]}),F.showSort&&(0,R.jsxs)(m,{open:ut,onOpenChange:yt,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:g(`hidden sm:inline-flex h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,z.length>0&&`text-foreground font-medium`),children:[(0,R.jsx)(He,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.sort`)}),z.length>0&&(0,R.jsx)(`span`,{className:`ml-1 flex h-4 min-w-[16px] items-center justify-center text-[10px] font-medium text-muted-foreground tabular-nums`,children:z.length})]})}),(0,R.jsx)(c,{align:`start`,className:`w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4`,children:(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-2`,children:[(0,R.jsx)(`h4`,{className:`font-medium text-sm`,children:k(`list.sortRecords`)}),B.length>0&&(0,R.jsx)(w,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 px-2 text-xs text-muted-foreground hover:text-primary`,disabled:!wt,onClick:Vr,"data-testid":`sort-reset-default`,children:k(`list.resetSortToDefault`)})]}),(0,R.jsx)(b,{fields:Lr,value:z,onChange:e=>{bt(e),zr(e)}}),Rr&&(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`sort-relational-hint`,children:k(`list.sortRelationalHint`)})]})})]}),!F.compactToolbar&&(F.showFilters||F.showSort||F.showGroup)&&(F.showColor||F.showDensity)&&(0,R.jsx)(`div`,{className:`hidden sm:block h-5 w-px bg-border/50 mx-1 shrink-0`}),F.showColor&&!F.compactToolbar&&(0,R.jsxs)(m,{open:xn,onOpenChange:Sn,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:g(`hidden sm:inline-flex h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,yn&&`text-foreground font-medium`),children:[(0,R.jsx)(tt,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.color`)})]})}),(0,R.jsx)(c,{align:`start`,className:`w-64 p-3`,children:(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-2`,children:[(0,R.jsx)(`h4`,{className:`font-medium text-sm`,children:k(`list.rowColor`)}),yn&&(0,R.jsx)(w,{variant:`ghost`,size:`sm`,className:`h-6 px-2 text-xs`,onClick:()=>bn(void 0),"data-testid":`clear-row-color`,children:k(`list.clear`)})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,"data-testid":`color-field-list`,children:[(0,R.jsx)(`label`,{className:`text-xs text-muted-foreground`,children:k(`list.colorByField`)}),(0,R.jsxs)(`select`,{className:`w-full h-8 rounded border border-input bg-background px-2 text-xs`,value:yn?.field||``,onChange:e=>{let t=e.target.value;bn(t?{field:t,colors:yn?.colors||{}}:void 0)},"data-testid":`color-field-select`,children:[(0,R.jsx)(`option`,{value:``,children:k(`list.none`)}),Ur.map(e=>(0,R.jsx)(`option`,{value:e.name,children:e.label},e.name))]})]})]})})]}),F.showDensity&&!F.compactToolbar&&N!==`gallery`&&(()=>{let e=Q.mode===`compact`?ct:Q.mode===`comfortable`?st:ot,t=Q.mode===`compact`?k(`grid.toolbar.densityCompact`,{defaultValue:`Compact`}):Q.mode===`comfortable`?k(`grid.toolbar.densityComfortable`,{defaultValue:`Comfortable`}):k(`grid.toolbar.densitySpacious`,{defaultValue:`Spacious`}),n=`${k(`grid.toolbar.densityMode`,{defaultValue:`Density`})}: ${t}`,r=k(`grid.toolbar.densityCycleHint`,{defaultValue:`{{label}} (click to cycle)`,label:n});return(0,R.jsx)(w,{variant:`ghost`,size:`sm`,"aria-label":n,className:g(`hidden sm:inline-flex h-7 w-7 p-0 text-muted-foreground hover:text-primary transition-colors duration-150`,Q.mode!==`compact`&&`text-foreground font-medium`),onClick:Q.cycle,title:r,children:(0,R.jsx)(e,{className:`h-3.5 w-3.5`})})})(),F.showDensity&&!F.compactToolbar&&N===`gallery`&&(()=>{let e=rr===`small`?ct:rr===`medium`?st:ot,t=rr===`small`?k(`grid.toolbar.densityCompact`,{defaultValue:`Compact`}):rr===`medium`?k(`grid.toolbar.densityComfortable`,{defaultValue:`Comfortable`}):k(`grid.toolbar.densitySpacious`,{defaultValue:`Spacious`}),n=`${k(`grid.toolbar.densityMode`,{defaultValue:`Density`})}: ${t}`,r=k(`grid.toolbar.densityCycleHint`,{defaultValue:`{{label}} (click to cycle)`,label:n});return(0,R.jsx)(w,{variant:`ghost`,size:`sm`,"aria-label":n,className:g(`hidden sm:inline-flex h-7 w-7 p-0 text-muted-foreground hover:text-primary transition-colors duration-150`,rr!==`small`&&`text-foreground font-medium`),onClick:ar,title:r,children:(0,R.jsx)(e,{className:`h-3.5 w-3.5`})})})(),F.compactToolbar&&(F.showGroup||F.showColor||F.showDensity||F.showHideFields)&&(0,R.jsx)(Ct,{t:k,allFields:Ur,showGroup:F.showGroup,groupingConfig:Y,setGroupingConfig:fn,showColor:F.showColor,rowColorConfig:yn,setRowColorConfig:bn,showDensity:F.showDensity,density:Q,showHideFields:F.showHideFields,hiddenFields:X,updateHiddenFields:Nn,showInlineEdit:N===`grid`&&$n,inlineEdit:In,setInlineEdit:Rn}),(F.showColor||F.showDensity||F.compactToolbar)&&Z&&Jn&&er.length>0&&(0,R.jsx)(`div`,{className:`h-5 w-px bg-border/50 mx-1 shrink-0`}),F.showRefresh&&(0,R.jsx)(w,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 text-muted-foreground hover:text-primary transition-colors duration-150`,onClick:()=>Qt(e=>e+1),disabled:G,title:k(`list.refresh`),"aria-label":k(`list.refresh`),"data-testid":`refresh-button`,children:(0,R.jsx)(at,{className:g(`h-3.5 w-3.5`,G&&`animate-spin`)})}),Z&&Jn&&er.length>0&&(0,R.jsxs)(m,{open:zn,onOpenChange:Bn,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,children:[(0,R.jsx)(Ke,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.export`)})]})}),(0,R.jsx)(c,{align:`start`,className:`w-48 p-2`,children:(0,R.jsxs)(`div`,{className:`space-y-1`,children:[er.map(e=>(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`w-full justify-start h-8 text-xs`,disabled:Vn,onClick:()=>Hr(e),children:[Vn?(0,R.jsx)($e,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,R.jsx)(Ke,{className:`h-3.5 w-3.5 mr-2`}),k(`list.exportAs`,{format:e.toUpperCase()})]},e)),Un&&(0,R.jsx)(`div`,{className:`px-2 py-1 text-xs`,style:{color:`var(--destructive, #ef4444)`},role:`alert`,children:Un})]})})]}),A.sharing?.type&&(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,title:`Sharing: ${A.sharing.type}`,"data-testid":`share-button`,children:[(0,R.jsx)(dt,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.share`)})]}),A.allowPrinting&&(()=>{let e=k(`common.printDialogHint`);return(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,onClick:()=>window.print(),"aria-label":`${k(`list.print`)}: ${e}`,title:e,"data-testid":`print-button`,children:[(0,R.jsx)(it,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.print`)})]})})(),(()=>{let e=A.allowPrinting||!!A.sharing?.type||Z&&Jn&&er.length>0;return F.showSearch&&e?(0,R.jsx)(`div`,{className:`h-5 w-px bg-border/50 mx-1 shrink-0`}):null})(),F.showSearch&&(0,R.jsxs)(m,{open:Qe,onOpenChange:et,children:[(0,R.jsx)(l,{asChild:!0,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:g(`hidden sm:inline-flex h-7 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,I?`px-2 text-foreground font-medium`:`w-7 p-0`),"data-testid":`search-icon-button`,title:I?`${k(`list.search`)}: ${I}`:k(`list.search`),children:[(0,R.jsx)(lt,{className:`h-3.5 w-3.5`}),I&&(0,R.jsx)(`span`,{className:`ml-1.5 max-w-[8rem] truncate text-[11px]`,"data-testid":`search-active-keyword`,children:I})]})}),(0,R.jsx)(c,{align:`end`,className:`w-[calc(100vw-2rem)] sm:w-64 p-2`,"data-testid":`search-popover`,children:(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(lt,{className:`absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,R.jsx)(C,{placeholder:k(`table.search`),value:I,onChange:e=>Cr(e.target.value),className:`pl-7 h-8 text-xs`,autoFocus:!0}),I&&(0,R.jsx)(w,{variant:`ghost`,size:`sm`,className:`absolute right-0.5 top-1/2 -translate-y-1/2 h-5 w-5 p-0 hover:bg-muted-foreground/20`,onClick:()=>Cr(``),children:(0,R.jsx)(_t,{className:`h-3 w-3`})})]})})]}),F.showAddRecordTop&&(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,"data-testid":`add-record-button`,onClick:()=>O.onAddRecord?.(),children:[(0,R.jsx)(rt,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.addRecord`)})]})]})]}),(0,R.jsxs)(`div`,{className:`flex-1 min-h-0 bg-background relative overflow-hidden animate-in fade-in-0 duration-200`,children:[(0,R.jsx)(S,{active:G&&U.length>0,ariaLabel:k(`list.refreshing`)}),mr?(0,R.jsx)(v,{role:`alert`,"data-testid":`list-grouping-needs-header-query`,className:`h-full min-h-[200px] p-8 gap-1 [&>h3]:text-lg [&>h3]:font-medium [&>h3]:text-foreground [&>p]:max-w-md`,icon:(0,R.jsx)(gt,{className:`h-12 w-12 text-destructive/60`}),iconWrapperClassName:`mb-3`,title:k(`list.loadErrorTitle`),message:k(`grid.grouping.needsHeaderQuery`)}):At&&U.length===0?(0,R.jsx)(v,{role:`alert`,"data-testid":`list-error-state`,"data-error-kind":W,className:`h-full min-h-[200px] p-8 gap-1 [&>h3]:text-lg [&>h3]:font-medium [&>h3]:text-foreground [&>p]:max-w-md`,icon:W===`network`?(0,R.jsx)(gt,{className:`h-12 w-12 text-destructive/60`}):(0,R.jsx)(ft,{className:`h-12 w-12 text-destructive/60`}),iconWrapperClassName:`mb-3`,title:k(W===`api-disabled`?`list.loadErrorApiDisabledTitle`:W===`forbidden`?`list.loadErrorForbiddenTitle`:W===`unauthorized`?`list.loadErrorUnauthorizedTitle`:W===`rejected`?`list.loadErrorRejectedTitle`:`list.loadErrorTitle`),message:k(W===`api-disabled`?`list.loadErrorApiDisabledMessage`:W===`forbidden`?`list.loadErrorForbiddenMessage`:W===`unauthorized`?`list.loadErrorUnauthorizedMessage`:W===`rejected`?`list.loadErrorRejectedMessage`:`list.loadErrorMessage`),children:W===`api-disabled`?null:(0,R.jsxs)(w,{variant:`outline`,size:`sm`,"data-testid":`list-error-retry`,onClick:()=>Qt(e=>e+1),children:[(0,R.jsx)(at,{className:`h-4 w-4 mr-1.5`}),k(`list.retry`)]})}):G&&U.length===0?(0,R.jsxs)(`div`,{className:`flex flex-col h-full min-h-[200px] p-4 gap-2`,"data-testid":`list-loading`,role:`status`,"aria-live":`polite`,"aria-busy":`true`,children:[(0,R.jsx)(`span`,{className:`sr-only`,children:k(`list.loading`)}),[0,1,2,3,4,5].map(e=>(0,R.jsx)(`div`,{className:`h-9 rounded bg-muted/60 animate-pulse`,style:{opacity:Math.max(.25,1-e*.12)}},e))]}):!G&&U.length===0&&N===`grid`?(()=>{let e=A.emptyState?.icon,t=u(e)??Ze,n=Array.isArray(j)?j.length>0:j&&typeof j==`object`?Object.keys(j).length>0:!1,r=!!(I&&I.trim())||n||Array.isArray(kn)&&kn.length>0||Array.isArray(On?.conditions)&&On.conditions.length>0,i=(typeof A.emptyState?.title==`string`?A.emptyState.title:void 0)??k(r?`list.noMatches`:`list.firstRunTitle`),a=(typeof A.emptyState?.message==`string`?A.emptyState.message:void 0)??k(r?`list.noMatchesMessage`:`list.firstRunMessage`);return(0,R.jsx)(_,{"data-testid":`empty-state`,className:`h-full min-h-[200px] p-8 gap-1 [&>h3]:text-lg [&>h3]:font-medium [&>h3]:text-foreground [&>p]:max-w-md`,icon:(0,R.jsx)(t,{className:`h-12 w-12 text-muted-foreground/50`}),iconWrapperClassName:`mb-3`,title:i,description:a,action:F.showAddRecord?(0,R.jsxs)(w,{variant:`default`,size:`sm`,"data-testid":`empty-state-add-record`,onClick:()=>O.onAddRecord?.(),children:[(0,R.jsx)(rt,{className:`h-4 w-4 mr-1.5`}),k(`list.addRecord`)]}):void 0})})():(0,R.jsx)(Ce,{schema:Mr,...O,...fr||pr?{}:{data:U},...Mr.type===`object-grid`&&q?.fields?{objectFields:q.fields}:{},loading:G,onRowSelect:wn,...gn&&vn!=null?{manualPagination:!0,rowCount:vn,page:an,pageSize:J,onPageChange:e=>on(e),onPageSizeChange:e=>{nn(e),on(1)},sort:z,onSortChange:Br,findParams:ln}:{}})]},N),F.showAddRecordBottom&&(0,R.jsx)(`div`,{className:`border-t px-2 sm:px-4 py-1 bg-background shrink-0`,children:(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150`,"data-testid":`add-record-button`,onClick:()=>O.onAddRecord?.(),children:[(0,R.jsx)(rt,{className:`h-3.5 w-3.5 mr-1.5`}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:k(`list.addRecord`)})]})}),Yn&&Yn.length>0&&Cn.length>0&&N!==`grid`&&(0,R.jsxs)(`div`,{className:`border-t border-primary/30 px-4 py-2 flex items-center gap-2 text-xs bg-primary/10 text-foreground shrink-0 shadow-sm`,role:`region`,"aria-label":`Bulk actions`,"data-testid":`bulk-actions-bar`,children:[(0,R.jsx)(mt,{className:`h-3.5 w-3.5 text-primary shrink-0`}),(0,R.jsxs)(`span`,{className:`font-medium`,children:[Cn.length,` `,Cn.length===1?`item`:`items`,` selected`]}),(0,R.jsx)(`div`,{className:`flex items-center gap-1.5 ml-3`,children:Yn.map(e=>{let t=String(e).toLowerCase(),n=t.includes(`delete`)||t.includes(`remove`)||t.includes(`destroy`),r=n?ht:null,i=t===`delete`?Qn.eligible:Cn;return(0,R.jsxs)(w,{variant:n?`destructive`:`outline`,size:`sm`,className:`h-7 px-2.5 text-xs gap-1.5`,onClick:()=>O.onBulkAction?.(e,i),"data-testid":`bulk-action-${e}`,children:[r&&(0,R.jsx)(r,{className:`h-3 w-3`}),Ue(e)]},e)})}),Qn.skipped>0&&Yn.some(e=>String(e).toLowerCase()===`delete`)&&(0,R.jsx)(`span`,{className:`text-muted-foreground ml-3`,"data-testid":`bulk-skipped-notice`,children:k(`grid.bulk.skippedIneligible`,{count:Qn.skipped,defaultValue:`${Qn.skipped} selected record(s) are not eligible for this action and will be skipped.`})}),(0,R.jsxs)(w,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-xs ml-auto gap-1`,onClick:()=>wn([]),children:[(0,R.jsx)(_t,{className:`h-3 w-3`}),`Clear`]})]}),!G&&U.length>0&&hr&&A.showRecordCount!==!1&&(0,R.jsxs)(`div`,{className:`border-t px-4 py-2 flex items-center gap-3 text-xs text-muted-foreground bg-background shrink-0`,"data-testid":`record-count-bar`,children:[(0,R.jsx)(`span`,{className:`font-medium text-foreground/80`,children:(()=>{let e=vn??U.length;return k(e===1?`list.recordCountOne`:`list.recordCount`,{count:e})})()}),$t&&!(gn&&vn!=null)&&(0,R.jsx)(`span`,{className:`text-amber-600`,"data-testid":`data-limit-warning`,children:k(`list.dataLimitReached`,{limit:J})}),N!==`grid`&&A.pagination?.pageSizeOptions&&A.pagination.pageSizeOptions.length>0&&(0,R.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,R.jsx)(`span`,{children:k(`table.rowsPerPage`,{defaultValue:`Rows per page`})}),(0,R.jsx)(`select`,{"data-testid":`page-size-selector`,className:`h-7 w-[72px] px-2 py-1 text-xs rounded-md border border-input bg-background`,value:String(J),onChange:e=>{let t=Number(e.target.value);nn(t),O.onPageSizeChange&&O.onPageSizeChange(t)},children:A.pagination.pageSizeOptions.map(e=>(0,R.jsx)(`option`,{value:String(e),children:e},e))})]})]}),wr.isOverlay&&(0,R.jsx)(te,{...wr,title:Er,children:e=>(0,R.jsx)(`div`,{className:`space-y-3`,children:Object.entries(e).map(([e,t])=>(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(0,R.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:e.replace(/_/g,` `)}),(0,R.jsx)(`span`,{className:`text-sm`,children:String(t??`—`)})]},e))})})]})});Zt.displayName=`ListView`;var Qt={columns:!0,filter:!0,sort:!0,limit:`pagination.pageSize`,viewType:!0},$t=k(L.forwardRef((e,t)=>{let n=(0,L.useContext)(ie),r=(ae(e.dataSource)?void 0:e.dataSource)??n?.dataSource;return(0,R.jsx)(Ee,{schema:e.schema,mapping:Qt,dataSource:r,testId:`list-view`,errorTitle:`This list view’s data source could not be resolved`,children:n=>(0,R.jsx)(Zt,{ref:t,...e,schema:n,dataSource:r})})}));$t.displayName=`ListViewBlock`;var en={small:`grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6`,medium:`grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4`,large:`grid-cols-1 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3`},tn={small:`aspect-square`,medium:`aspect-[4/3]`,large:`aspect-[16/10]`},nn=new Set([`number`,`currency`,`percent`,`integer`,`decimal`]),rn=[{bg:`from-indigo-500/15 via-indigo-500/5 to-purple-500/10`,ring:`ring-indigo-500/15`,text:`text-indigo-600/70 dark:text-indigo-300/70`},{bg:`from-sky-500/15 via-sky-500/5 to-cyan-500/10`,ring:`ring-sky-500/15`,text:`text-sky-600/70 dark:text-sky-300/70`},{bg:`from-emerald-500/15 via-emerald-500/5 to-teal-500/10`,ring:`ring-emerald-500/15`,text:`text-emerald-600/70 dark:text-emerald-300/70`},{bg:`from-amber-500/15 via-amber-500/5 to-orange-500/10`,ring:`ring-amber-500/15`,text:`text-amber-600/70 dark:text-amber-300/70`},{bg:`from-rose-500/15 via-rose-500/5 to-pink-500/10`,ring:`ring-rose-500/15`,text:`text-rose-600/70 dark:text-rose-300/70`},{bg:`from-violet-500/15 via-violet-500/5 to-fuchsia-500/10`,ring:`ring-violet-500/15`,text:`text-violet-600/70 dark:text-violet-300/70`}];function J(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n);return rn[Math.abs(t)%rn.length]}var an=({imageUrl:e,title:t,coverFit:n,aspectClass:r,placeholder:i,hidden:a})=>{let[o,s]=(0,L.useState)(!1),c=!!e&&!o;return(0,R.jsx)(`div`,{className:g(`w-full overflow-hidden relative`,r),hidden:a,children:c?n===`contain`?(0,R.jsx)(`div`,{className:g(`flex h-full w-full items-center justify-center bg-gradient-to-br`,i.bg),children:(0,R.jsx)(`img`,{src:e,alt:t,loading:`lazy`,onError:()=>s(!0),className:`h-1/2 w-1/2 max-h-24 max-w-24 object-contain transition-transform duration-300 ease-out group-hover:scale-[1.08]`})}):(0,R.jsx)(`img`,{src:e,alt:t,loading:`lazy`,onError:()=>s(!0),className:`h-full w-full object-cover transition-transform duration-300 ease-out group-hover:scale-[1.04]`}):(0,R.jsx)(`div`,{className:g(`flex h-full w-full items-center justify-center bg-gradient-to-br ring-1 ring-inset`,i.bg,i.ring),children:(0,R.jsx)(`span`,{className:g(`text-5xl font-semibold tracking-tight opacity-90`,i.text),children:t[0]?.toUpperCase()})})})},on=({imageUrl:e,title:t,placeholder:n})=>{let[r,i]=(0,L.useState)(!1),a=!!e&&!r;return(0,R.jsx)(`div`,{className:g(`flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-gradient-to-br ring-1 ring-inset`,n.bg,n.ring),children:a?(0,R.jsx)(`img`,{src:e,alt:t,loading:`lazy`,onError:()=>i(!0),className:`h-6 w-6 object-contain transition-transform duration-300 ease-out group-hover:scale-110`}):(0,R.jsx)(`span`,{className:g(`text-base font-semibold`,n.text),children:t[0]?.toUpperCase()})})},sn=(e,t)=>{let n=e?.[t];if(!le(n))return h(n)[0]?.url};fe.register(`object-gallery`,e=>{let{schema:t}=e,n=(0,L.useContext)(ie),r=e.dataSource||n?.dataSource,i=Te(t.bind),[s,c]=(0,L.useState)([]),[l,u]=(0,L.useState)(!1),{ready:d,def:f}=Ne(t.objectName??``,r),p=a(),m=ve({navigation:t.navigation,objectName:t.objectName,onRowClick:e.onRowClick??e.onCardClick}),h=t.gallery,_=h?.coverField??t.imageField??`image`,v=h?.coverFit??`cover`,y=h?.cardSize??`medium`,b=h?.titleField??t.titleField,S=h?.visibleFields,{fieldLabel:C,fieldOptionLabel:w}=Be(),re=(0,L.useCallback)(e=>{let n=f?.fields?.[e],r={name:e};if(n){n.type&&(r.type=n.type),n.label&&(r.label=n.label),n.options&&(r.options=n.options),n.currency&&(r.currency=n.currency),n.precision!==void 0&&(r.precision=n.precision),n.scale!==void 0&&(r.scale=n.scale),n.format&&(r.format=n.format);let e=n.reference;e&&(r.reference_to=e),n.reference_field&&(r.reference_field=n.reference_field)}if(t.objectName){let n=String(r.label??e);r.label=C(t.objectName,e,n)}return t.objectName&&Array.isArray(r.options)&&(r.options=r.options.map(n=>{let r=String(n?.value??n),i=String(n?.label??r);return{...n,value:r,label:w(t.objectName,e,r,i)}})),r},[f,t.objectName,C,w]),T=!!t.objectName&&!i&&!t.data&&!e.data,ae=be(T?t.objectName:void 0),oe=ye(),se=Me(t.filter,oe);(0,L.useEffect)(()=>{let n=!0;if(e.data&&Array.isArray(e.data)){c(e.data);return}let i=async()=>{if(r&&typeof r.find==`function`&&t.objectName){n&&u(!0);try{let e=Fe(f?.fields),i=p?.isLoaded?e.filter(e=>p.checkField(t.objectName,e,`read`)):e,a=await r.find(t.objectName,{$filter:se,...i.length>0?{$expand:i}:{}}),o=[];if(Array.isArray(a))o=a;else if(a&&typeof a==`object`){let e=a;Array.isArray(e.records)?o=e.records:Array.isArray(e.data)&&(o=e.data)}n&&c(o)}catch(e){console.error(`[ObjectGallery] Fetch error:`,e)}finally{n&&u(!1)}}};if(T){if(!d){n&&u(!0);return}i()}return()=>{n=!1}},[t.objectName,r,i,t.data,se,e.data,d,f,p,T,ae]);let E=e.data||i||t.data||s||[],ce=(0,L.useMemo)(()=>E.some(e=>!!sn(e,_)),[E,_]),D=t.grouping?.fields,ue=!!(D&&D.length>0),[de,fe]=(0,L.useState)({}),pe=(0,L.useMemo)(()=>D?D.some(e=>e.collapsed):!1,[D]),k=(0,L.useCallback)(e=>{fe(t=>({...t,[e]:t[e]===void 0?!pe:!t[e]}))},[pe]),me=(0,L.useMemo)(()=>{if(!ue||!D)return[];let e=new Map,t=[];for(let n of E){let r=D.map(e=>String(n[e.field]??``)).join(` / `);if(!e.has(r)){let i=D.map(e=>{let t=n[e.field];return t!=null&&t!==``?String(t):`(empty)`}).join(` / `);e.set(r,{label:i,items:[]}),t.push(r)}e.get(r).items.push(n)}let n=D[0]?.order??`asc`;return t.sort((e,t)=>{let r=e.localeCompare(t,void 0,{numeric:!0,sensitivity:`base`});return n===`desc`?-r:r}),t.map(t=>{let n=e.get(t),r=t in de?de[t]:pe;return{key:t,label:n.label,items:n.items,collapsed:r}})},[E,D,ue,de,pe]);if(l&&!E.length)return(0,R.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`Loading Gallery...`});if(!E.length)return(0,R.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`No items to display`});let he=e=>!S||S.length===0?null:(0,R.jsx)(`div`,{className:`mt-1.5 space-y-1`,children:S.map(t=>{let n=e[t];if(le(n))return null;let r=re(t),i=ee(r)||r.type||`text`,a=x(i),o=r?.label&&String(r.label).trim()?String(r.label):void 0,s=o!=null&&nn.has(i);return(0,R.jsxs)(`div`,{className:g(`text-xs text-muted-foreground truncate [&_*]:!text-xs`,s&&`flex items-baseline gap-1.5`),onClick:e=>{e.target.closest(`a,button`)&&e.stopPropagation()},children:[s&&(0,R.jsx)(`span`,{className:`shrink-0 text-muted-foreground/70 tabular-nums`,children:o}),(0,R.jsx)(a,{value:n,field:r})]},t)})}),ge=(n,r)=>{let i=n.id??n._id??r,a=(b!=null&&n[b]!=null&&n[b]!==``?String(n[b]):void 0)??O(f,n),s=sn(n,_),c=J(String(i)+`|`+a),l=g(`group relative overflow-hidden border-border/60 bg-card`,`transition-all duration-200 ease-out`,`hover:shadow-lg hover:border-border hover:-translate-y-0.5`,(e.onCardClick||e.onRowClick||t.navigation)&&`cursor-pointer`);return ce&&v===`contain`?(0,R.jsxs)(ne,{role:`listitem`,className:l,onClick:e=>m.handleClick(n,e),children:[(0,R.jsx)(`div`,{"aria-hidden":!0,className:g(`absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r`,c.bg)}),(0,R.jsx)(o,{className:`p-4`,children:(0,R.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,R.jsx)(on,{imageUrl:s,title:a,placeholder:c}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`h3`,{className:`font-semibold tracking-tight truncate text-sm leading-tight text-foreground`,title:a,children:a}),he(n)]})]})})]},i):(0,R.jsxs)(ne,{role:`listitem`,className:l,onClick:e=>m.handleClick(n,e),children:[!ce&&(0,R.jsx)(`div`,{"aria-hidden":!0,className:g(`absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r`,c.bg)}),(0,R.jsx)(an,{imageUrl:s,title:a,coverFit:v,aspectClass:tn[y],placeholder:c,hidden:!ce}),(0,R.jsxs)(o,{className:g(`p-3`,ce&&`border-t border-border/60`),children:[(0,R.jsx)(`h3`,{className:`font-semibold tracking-tight truncate text-sm leading-tight text-foreground`,title:a,children:a}),he(n)]})]},i)},_e=e=>(0,R.jsx)(`div`,{className:g(`grid gap-4 p-4 auto-rows-min content-start`,en[y],t.className),role:`list`,children:e.map((e,t)=>ge(e,t))});return(0,R.jsxs)(R.Fragment,{children:[ue?(0,R.jsx)(`div`,{className:`space-y-2`,children:me.map(e=>(0,R.jsxs)(`div`,{className:`border rounded-md`,children:[(0,R.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 px-3 py-2 text-sm font-medium text-left bg-muted/50 hover:bg-muted transition-colors`,onClick:()=>k(e.key),children:[e.collapsed?(0,R.jsx)(F,{className:`h-4 w-4 shrink-0`}):(0,R.jsx)(P,{className:`h-4 w-4 shrink-0`}),(0,R.jsx)(`span`,{children:e.label}),(0,R.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:e.items.length})]}),!e.collapsed&&_e(e.items)]},e.key))}):_e(E),m.isOverlay&&(0,R.jsx)(te,{...m,title:`Gallery Item`,children:e=>(0,R.jsx)(`div`,{className:`space-y-3`,children:Object.entries(e).map(([e,t])=>(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(0,R.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:e.replace(/_/g,` `)}),(0,R.jsx)(`span`,{className:`text-sm`,children:String(t??`—`)})]},e))})})]})},{namespace:`plugin-list`,label:`Gallery View`,category:`view`});var cn=Object.entries({grid:`Grid`,kanban:`Kanban`,gallery:`Gallery`,calendar:`Calendar`,timeline:`Timeline`,gantt:`Gantt`,map:`Map`,chart:`Chart`,tree:`Tree`}).map(([e,t])=>({label:t,value:e})),ln=$t;fe.register(`list-view`,ln,{namespace:`plugin-list`,label:`List View`,category:`Views`,icon:`LayoutList`,inputs:[{name:`objectName`,type:`string`,required:!0},{name:`viewType`,type:`enum`,enum:cn},{name:`columns`,type:`array`},{name:`filter`,type:`array`},{name:`sort`,type:`array`},{name:`options`,type:`object`}],defaultProps:{objectName:``,viewType:`grid`,columns:[],filter:[],sort:[],options:{}}}),fe.register(`list`,ln,{namespace:`view`,skipFallback:!0,category:`view`,label:`List`,icon:`LayoutList`,inputs:[{name:`objectName`,type:`string`,required:!0},{name:`viewType`,type:`enum`,enum:cn},{name:`columns`,type:`array`},{name:`filter`,type:`array`},{name:`sort`,type:`array`},{name:`options`,type:`object`}]});export{Zt as t};