@object-ui/console 3.1.0 → 3.1.2

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 (166) hide show
  1. package/dist/assets/{AdvancedChartImpl-Q6xhwCd2.js → AdvancedChartImpl-D711bBuO.js} +1 -1
  2. package/dist/assets/{AppManagementPage-Bqi2RIF_.js → AppManagementPage-CaWUYaXX.js} +1 -1
  3. package/dist/assets/{AuditLogPage-Bhvo34U0.js → AuditLogPage-CB1qkThp.js} +1 -1
  4. package/dist/assets/AuthPageLayout-9l5xWV_-.js +1 -0
  5. package/dist/assets/{ChartImpl-SceZDRuZ.js → ChartImpl-B9B4Fnbe.js} +1 -1
  6. package/dist/assets/CreateAppPage-DLRU3TEg.js +1 -0
  7. package/dist/assets/DashboardDesignPage-DGz-5xrK.js +1 -0
  8. package/dist/assets/{DashboardView-DxpkEpzI.js → DashboardView-v834XbaQ.js} +1 -1
  9. package/dist/assets/{EditAppPage-4REKKtym.js → EditAppPage-DocDqKMS.js} +1 -1
  10. package/dist/assets/ForgotPasswordPage-8ypvh4-X.js +1 -0
  11. package/dist/assets/{KanbanEnhanced-Cy_rTBDD.js → KanbanEnhanced-Cw4oddBv.js} +1 -1
  12. package/dist/assets/{KanbanImpl-BNUeFn31.js → KanbanImpl-D6ggfmB0.js} +1 -1
  13. package/dist/assets/LoginPage-XakThPoT.js +1 -0
  14. package/dist/assets/{MarkdownImpl-DQVBgcsA.js → MarkdownImpl-C0wRapHT.js} +1 -1
  15. package/dist/assets/{OrgManagementPage-9aUMu-3n.js → OrgManagementPage-Df5167oO.js} +1 -1
  16. package/dist/assets/{PageDesignPage-bfUbiZI-.js → PageDesignPage-BzM4EsXt.js} +1 -1
  17. package/dist/assets/PageView-CpIQvLmr.js +2 -0
  18. package/dist/assets/{PermissionManagementPage-CfKXMrSe.js → PermissionManagementPage-CZH3URJU.js} +1 -1
  19. package/dist/assets/{ProfilePage-aGYrzo6-.js → ProfilePage-BvIbbebc.js} +1 -1
  20. package/dist/assets/RecordDetailView-BNnPf0DG.js +1 -0
  21. package/dist/assets/RegisterPage-CIeFN9rY.js +1 -0
  22. package/dist/assets/{ReportView-DYDYKXxz.js → ReportView-DYhXezmy.js} +1 -1
  23. package/dist/assets/{RoleManagementPage-DvuObd50.js → RoleManagementPage-D0X7HlqJ.js} +1 -1
  24. package/dist/assets/{SearchResultsPage-BXv9faGO.js → SearchResultsPage-CoMB32KW.js} +1 -1
  25. package/dist/assets/{SystemHubPage-DInbGUIC.js → SystemHubPage-Cvl3VKcV.js} +1 -1
  26. package/dist/assets/{UserManagementPage-DfN7rtzx.js → UserManagementPage-5k8BQxT1.js} +1 -1
  27. package/dist/assets/data-adapter-Bif-TtZA.js +1 -0
  28. package/dist/assets/framework-52FGgFF6.js +10 -0
  29. package/dist/assets/index-D5i0wk-G.js +1 -0
  30. package/dist/assets/index-fjkakZm9.js +9 -0
  31. package/dist/assets/index-h9Jznm67.css +1 -0
  32. package/dist/assets/infrastructure-Dn7jNPwf.js +1 -0
  33. package/dist/assets/{maplibre-gl-Hx2FX3ON.js → maplibre-gl-DVmJFhI2.js} +1 -1
  34. package/dist/assets/plugins-core-CP8uPw4p.js +8 -0
  35. package/dist/assets/plugins-views-DZCu8Ex3.js +62 -0
  36. package/dist/assets/ui-components-BE4yvyhE.js +36 -0
  37. package/dist/assets/ui-components-CxztIKgM.css +1 -0
  38. package/dist/assets/ui-layout-CYnH69Z2.js +1 -0
  39. package/dist/assets/{vendor-charts-BbkZFaMp.js → vendor-charts-BLNOCZWl.js} +1 -1
  40. package/dist/assets/{vendor-dndkit-D1_B-HIy.js → vendor-dndkit-CX1oDZqy.js} +1 -1
  41. package/dist/assets/{vendor-i18n-CikIh7Op.js → vendor-i18n-E3-WitRV.js} +1 -1
  42. package/dist/assets/{vendor-icons-CsQ20zph.js → vendor-icons-ndICq8DC.js} +2 -2
  43. package/dist/assets/vendor-objectstack-CatrkstC.js +34 -0
  44. package/dist/assets/{vendor-radix-CWYRmupg.js → vendor-radix-C6qchjxv.js} +1 -1
  45. package/dist/assets/{vendor-react-BEJ2LWyF.js → vendor-react-9M-xu2bR.js} +7 -7
  46. package/dist/assets/{vendor-ui-utils-tMfURc0Z.js → vendor-ui-utils-3tkeUVaX.js} +1 -1
  47. package/dist/assets/{vendor-zod-DxQVy2_o.js → vendor-zod-C5j6C2CQ.js} +1 -1
  48. package/dist/index.html +23 -23
  49. package/package.json +36 -36
  50. package/plugin.d.ts +1 -2
  51. package/plugin.js +1 -2
  52. package/plugin.ts +1 -2
  53. package/dist/assets/AdvancedChartImpl-Q6xhwCd2.js.br +0 -0
  54. package/dist/assets/AdvancedChartImpl-Q6xhwCd2.js.gz +0 -0
  55. package/dist/assets/AppManagementPage-Bqi2RIF_.js.br +0 -0
  56. package/dist/assets/AppManagementPage-Bqi2RIF_.js.gz +0 -0
  57. package/dist/assets/AuditLogPage-Bhvo34U0.js.br +0 -0
  58. package/dist/assets/AuditLogPage-Bhvo34U0.js.gz +0 -0
  59. package/dist/assets/ChartImpl-SceZDRuZ.js.br +0 -0
  60. package/dist/assets/ChartImpl-SceZDRuZ.js.gz +0 -0
  61. package/dist/assets/CreateAppPage-BBV1-x1E.js +0 -1
  62. package/dist/assets/CreateAppPage-BBV1-x1E.js.br +0 -0
  63. package/dist/assets/CreateAppPage-BBV1-x1E.js.gz +0 -0
  64. package/dist/assets/DashboardDesignPage-Dsve6QAo.js +0 -1
  65. package/dist/assets/DashboardDesignPage-Dsve6QAo.js.br +0 -0
  66. package/dist/assets/DashboardDesignPage-Dsve6QAo.js.gz +0 -0
  67. package/dist/assets/DashboardView-DxpkEpzI.js.br +0 -0
  68. package/dist/assets/DashboardView-DxpkEpzI.js.gz +0 -0
  69. package/dist/assets/EditAppPage-4REKKtym.js.br +0 -0
  70. package/dist/assets/EditAppPage-4REKKtym.js.gz +0 -0
  71. package/dist/assets/ForgotPasswordPage-_rDOa2Zl.js +0 -1
  72. package/dist/assets/KanbanEnhanced-Cy_rTBDD.js.br +0 -0
  73. package/dist/assets/KanbanEnhanced-Cy_rTBDD.js.gz +0 -0
  74. package/dist/assets/KanbanImpl-BNUeFn31.js.br +0 -0
  75. package/dist/assets/KanbanImpl-BNUeFn31.js.gz +0 -0
  76. package/dist/assets/LoginPage-BXP5VJhw.js +0 -1
  77. package/dist/assets/MarkdownImpl-DQVBgcsA.js.br +0 -0
  78. package/dist/assets/MarkdownImpl-DQVBgcsA.js.gz +0 -0
  79. package/dist/assets/OrgManagementPage-9aUMu-3n.js.br +0 -0
  80. package/dist/assets/OrgManagementPage-9aUMu-3n.js.gz +0 -0
  81. package/dist/assets/PageDesignPage-bfUbiZI-.js.br +0 -0
  82. package/dist/assets/PageDesignPage-bfUbiZI-.js.gz +0 -0
  83. package/dist/assets/PageView-BNyUOHBp.js +0 -2
  84. package/dist/assets/PageView-BNyUOHBp.js.br +0 -0
  85. package/dist/assets/PageView-BNyUOHBp.js.gz +0 -0
  86. package/dist/assets/PermissionManagementPage-CfKXMrSe.js.br +0 -0
  87. package/dist/assets/PermissionManagementPage-CfKXMrSe.js.gz +0 -0
  88. package/dist/assets/ProfilePage-aGYrzo6-.js.br +0 -0
  89. package/dist/assets/ProfilePage-aGYrzo6-.js.gz +0 -0
  90. package/dist/assets/RecordDetailView-Cbo06TgT.js +0 -1
  91. package/dist/assets/RecordDetailView-Cbo06TgT.js.br +0 -0
  92. package/dist/assets/RecordDetailView-Cbo06TgT.js.gz +0 -0
  93. package/dist/assets/RegisterPage-By5Xlwoy.js +0 -1
  94. package/dist/assets/ReportView-DYDYKXxz.js.br +0 -0
  95. package/dist/assets/ReportView-DYDYKXxz.js.gz +0 -0
  96. package/dist/assets/RoleManagementPage-DvuObd50.js.br +0 -0
  97. package/dist/assets/RoleManagementPage-DvuObd50.js.gz +0 -0
  98. package/dist/assets/SearchResultsPage-BXv9faGO.js.br +0 -0
  99. package/dist/assets/SearchResultsPage-BXv9faGO.js.gz +0 -0
  100. package/dist/assets/SystemHubPage-DInbGUIC.js.br +0 -0
  101. package/dist/assets/SystemHubPage-DInbGUIC.js.gz +0 -0
  102. package/dist/assets/UserManagementPage-DfN7rtzx.js.br +0 -0
  103. package/dist/assets/UserManagementPage-DfN7rtzx.js.gz +0 -0
  104. package/dist/assets/data-adapter-Cnk_Mp2r.js +0 -1
  105. package/dist/assets/data-adapter-Cnk_Mp2r.js.br +0 -0
  106. package/dist/assets/data-adapter-Cnk_Mp2r.js.gz +0 -0
  107. package/dist/assets/framework-0M39ZRTM.js +0 -10
  108. package/dist/assets/framework-0M39ZRTM.js.br +0 -0
  109. package/dist/assets/framework-0M39ZRTM.js.gz +0 -0
  110. package/dist/assets/index-B5fEfHjB.css +0 -1
  111. package/dist/assets/index-B5fEfHjB.css.br +0 -0
  112. package/dist/assets/index-B5fEfHjB.css.gz +0 -0
  113. package/dist/assets/index-BlrxLcAr.js +0 -1
  114. package/dist/assets/index-BlrxLcAr.js.br +0 -0
  115. package/dist/assets/index-BlrxLcAr.js.gz +0 -0
  116. package/dist/assets/index-o38_J709.js +0 -9
  117. package/dist/assets/index-o38_J709.js.br +0 -0
  118. package/dist/assets/index-o38_J709.js.gz +0 -0
  119. package/dist/assets/infrastructure-CShH4S9_.js +0 -1
  120. package/dist/assets/infrastructure-CShH4S9_.js.br +0 -0
  121. package/dist/assets/infrastructure-CShH4S9_.js.gz +0 -0
  122. package/dist/assets/maplibre-gl-Hx2FX3ON.js.br +0 -0
  123. package/dist/assets/maplibre-gl-Hx2FX3ON.js.gz +0 -0
  124. package/dist/assets/plugins-core-DBl14Uqc.js +0 -8
  125. package/dist/assets/plugins-core-DBl14Uqc.js.br +0 -0
  126. package/dist/assets/plugins-core-DBl14Uqc.js.gz +0 -0
  127. package/dist/assets/plugins-views-P3eB-els.css.br +0 -0
  128. package/dist/assets/plugins-views-P3eB-els.css.gz +0 -0
  129. package/dist/assets/plugins-views-g4Cu3W3w.js +0 -62
  130. package/dist/assets/plugins-views-g4Cu3W3w.js.br +0 -0
  131. package/dist/assets/plugins-views-g4Cu3W3w.js.gz +0 -0
  132. package/dist/assets/systemObjects-DSpePIIy.js.br +0 -2
  133. package/dist/assets/systemObjects-DSpePIIy.js.gz +0 -0
  134. package/dist/assets/ui-components-BuNW5g1I.js +0 -36
  135. package/dist/assets/ui-components-BuNW5g1I.js.br +0 -0
  136. package/dist/assets/ui-components-BuNW5g1I.js.gz +0 -0
  137. package/dist/assets/ui-components-D5YXsttd.css +0 -1
  138. package/dist/assets/ui-components-D5YXsttd.css.br +0 -0
  139. package/dist/assets/ui-components-D5YXsttd.css.gz +0 -0
  140. package/dist/assets/ui-layout-BSKYz8QD.js +0 -1
  141. package/dist/assets/ui-layout-BSKYz8QD.js.br +0 -0
  142. package/dist/assets/ui-layout-BSKYz8QD.js.gz +0 -0
  143. package/dist/assets/vendor-charts-BbkZFaMp.js.br +0 -0
  144. package/dist/assets/vendor-charts-BbkZFaMp.js.gz +0 -0
  145. package/dist/assets/vendor-dndkit-D1_B-HIy.js.br +0 -0
  146. package/dist/assets/vendor-dndkit-D1_B-HIy.js.gz +0 -0
  147. package/dist/assets/vendor-i18n-CikIh7Op.js.br +0 -0
  148. package/dist/assets/vendor-i18n-CikIh7Op.js.gz +0 -0
  149. package/dist/assets/vendor-icons-CsQ20zph.js.br +0 -0
  150. package/dist/assets/vendor-icons-CsQ20zph.js.gz +0 -0
  151. package/dist/assets/vendor-objectstack-aMKO1xRi.js +0 -34
  152. package/dist/assets/vendor-objectstack-aMKO1xRi.js.br +0 -0
  153. package/dist/assets/vendor-objectstack-aMKO1xRi.js.gz +0 -0
  154. package/dist/assets/vendor-radix-CWYRmupg.js.br +0 -0
  155. package/dist/assets/vendor-radix-CWYRmupg.js.gz +0 -0
  156. package/dist/assets/vendor-react-BEJ2LWyF.js.br +0 -0
  157. package/dist/assets/vendor-react-BEJ2LWyF.js.gz +0 -0
  158. package/dist/assets/vendor-ui-utils-tMfURc0Z.js.br +0 -0
  159. package/dist/assets/vendor-ui-utils-tMfURc0Z.js.gz +0 -0
  160. package/dist/assets/vendor-zod-DxQVy2_o.js.br +0 -0
  161. package/dist/assets/vendor-zod-DxQVy2_o.js.gz +0 -0
  162. package/dist/index.html.br +0 -0
  163. package/dist/index.html.gz +0 -0
  164. package/dist/mockServiceWorker.js.br +0 -0
  165. package/dist/mockServiceWorker.js.gz +0 -0
  166. package/dist/stats.html +0 -4950
@@ -1,62 +0,0 @@
1
- import{r as m,j as e,a as Qt,e as Ba,B as Ze}from"./vendor-react-BEJ2LWyF.js";import{n as Yr,k as Xr,l as Kr,h as Ms,f as Va,S as _e,C as je,o as Ls,c as _s,p as Jr,q as Qr,s as Ha}from"./framework-0M39ZRTM.js";import{c as $,B,P as ft,J as pt,K as mt,aJ as Zr,ac as en,aa as We,N as qa,C as Fe,v as Oe,s as Ie,u as $e,G as Jt,ay as tn,az as sn,aA as an,A as rn,ad as Wa,ae as ct,af as dt,ag as ut,T as Ga,a as Ua,d as kt,e as Dt,p as ge,w as nn,x as ln,y as on,z as ss,aK as cn,aL as Is,aM as $s,aN as Ya,aO as Xa,t as Bs,a9 as ee,ab as dn}from"./ui-components-BuNW5g1I.js";import{ag as un,ae as fn,ah as Vs,j as fs,af as pn,ai as mn,aj as hn,i as Ts,m as Ge,am as Ka,C as It,X as Zt,J as xn,ax as gn,ay as bn,az as yn,a2 as vn,y as Lt,ad as Ja,aA as Qa,S as Ps,x as ta,a as ps,d as Za,_ as er,$ as jn,aB as wt,aC as tr,aq as sa,aD as wn,l as jt,aE as Nn,z as Pt,A as aa,Q as Cn,aF as Sn,b as kn,E as Dn,aG as Rn,c as Fn,aH as On,aI as Tn,aJ as Pn,a0 as En,aK as sr,aL as ar,a9 as An,L as zn,aM as Mn,aN as Ln,aO as Hs,q as rr,G as ra,w as nr,an as lr,ao as ir,M as or,aa as _n,n as In,aw as Ns,aP as $n}from"./vendor-icons-CsQ20zph.js";import{r as Bn,c as cr}from"./vendor-ui-utils-tMfURc0Z.js";import{u as dr,b as Vn}from"./infrastructure-CShH4S9_.js";import{r as ms}from"./vendor-charts-BbkZFaMp.js";const Hn={grid:e.jsx(hn,{className:"h-4 w-4"}),kanban:e.jsx(mn,{className:"h-4 w-4"}),gallery:e.jsx(pn,{className:"h-4 w-4"}),calendar:e.jsx(fs,{className:"h-4 w-4"}),timeline:e.jsx(Vs,{className:"h-4 w-4"}),gantt:e.jsx(fn,{className:"h-4 w-4"}),map:e.jsx(un,{className:"h-4 w-4"})},Cs={grid:"Grid",kanban:"Kanban",gallery:"Gallery",calendar:"Calendar",timeline:"Timeline",gantt:"Gantt",map:"Map"},qn=({currentView:t,availableViews:s=["grid","kanban"],onViewChange:a,className:r,animated:l=!0})=>{const d=m.useCallback(c=>{if(!l||c===t){a(c);return}typeof document<"u"&&"startViewTransition"in document?document.startViewTransition(()=>a(c)):a(c)},[l,t,a]);return e.jsx("div",{className:$("flex items-center gap-1 bg-transparent oui-view-switcher",r),children:s.map(c=>{const i=t===c;return e.jsxs("button",{type:"button",onClick:()=>d(c),"aria-label":Cs[c],title:Cs[c],"aria-pressed":i,"data-state":i?"on":"off",className:$("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50","hover:bg-muted hover:text-muted-foreground","gap-2 px-3 py-2","data-[state=on]:bg-background data-[state=on]:text-foreground data-[state=on]:shadow-sm border-transparent border data-[state=on]:border-border/50"),children:[Hn[c],e.jsx("span",{className:"hidden sm:inline-block text-xs font-medium",children:Cs[c]})]},c)})})};function Wn(t){if(!t)return null;const s=t.split("-").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return Ts[s]??null}function Gn(t){return t.filter(s=>s.pinned||s.visible!=="false"&&s.visible!==!1).sort((s,a)=>(s.order??0)-(a.order??0))}const Un=({tabs:t,activeTab:s,onTabChange:a,className:r})=>{const l=m.useMemo(()=>Gn(t),[t]),d=m.useMemo(()=>l.find(n=>n.isDefault)?.name??l[0]?.name,[l]),[c,i]=m.useState(d),o=s??c,u=m.useCallback(h=>{i(h.name),a?.(h)},[a]);return l.length===0?null:e.jsx("div",{className:$("border-b px-2 sm:px-4 py-1 flex items-center gap-0.5 bg-background",r),"data-testid":"view-tabs",role:"tablist",children:l.map(h=>{const n=Wn(h.icon),N=o===h.name;return e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-3 py-1.5 text-xs rounded-none transition-colors duration-150",N?"border-b-2 border-primary font-medium text-foreground":"text-muted-foreground hover:text-foreground"),"data-testid":`view-tab-${h.name}`,role:"tab","aria-selected":N,onClick:()=>u(h),children:[n&&e.jsx(n,{className:"h-3 w-3 mr-1.5"}),h.label]},h.name)})})};function Yn({config:t,objectDef:s,data:a=[],onFilterChange:r,maxVisible:l,className:d}){switch(t.element){case"dropdown":return e.jsx(Kn,{fields:t.fields||[],objectDef:s,data:a,onFilterChange:r,maxVisible:l,className:d});case"tabs":return e.jsx(Jn,{tabs:t.tabs||[],showAllRecords:t.showAllRecords!==!1,allowAddTab:t.allowAddTab,onFilterChange:r,className:d});case"toggle":return e.jsx(Qn,{fields:t.fields||[],onFilterChange:r,className:d});default:return null}}function Xn(t,s,a){return t.map(r=>{let l=r.options?[...r.options]:[];if(l.length===0&&s?.fields){const d=Array.isArray(s.fields)?s.fields.find(c=>c.name===r.field):s.fields[r.field];d?.options&&(Array.isArray(d.options)?l=d.options.map(c=>({label:c.label??String(c.value??c),value:c.value??c,color:c.color})):l=Object.entries(d.options).map(([c,i])=>({label:i?.label||c,value:c,color:i?.color})))}return r.showCount&&a.length>0&&(l=l.map(d=>({...d,count:a.filter(c=>c[r.field]===d.value).length}))),{...r,options:l}})}function Kn({fields:t,objectDef:s,data:a,onFilterChange:r,maxVisible:l,className:d}){const[c,i]=m.useState(()=>{const g={};return t.forEach(b=>{b.defaultValues&&b.defaultValues.length>0&&(g[b.field]=b.defaultValues)}),g}),o=m.useMemo(()=>Xn(t,s,a),[t,s,a]),u=m.useCallback(g=>{const b=Object.entries(g).filter(([,p])=>p.length>0).map(([p,f])=>[p,"in",f]);r(b)},[r]),h=(g,b)=>{const p={...c,[g]:b};i(p),u(p)};m.useEffect(()=>{Object.values(c).some(b=>b.length>0)&&u(c)},[]);const n=l!==void 0&&l<o.length?o.slice(0,l):o,N=l!==void 0&&l<o.length?o.slice(l):[],w=g=>{const b=c[g.field]||[],p=b.length>0;return e.jsxs(ft,{children:[e.jsx(pt,{asChild:!0,children:e.jsxs("button",{"data-testid":`filter-badge-${g.field}`,className:$("inline-flex items-center gap-1 rounded-full border h-7 px-2.5 text-xs font-medium transition-colors shrink-0",p?"border-primary/30 bg-primary/5 text-primary":"border-border bg-background hover:bg-accent text-foreground"),children:[e.jsx("span",{className:"truncate max-w-[100px]",children:g.label||g.field}),p&&e.jsx("span",{className:"flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px]",children:b.length}),p?e.jsx(Zt,{className:"h-3 w-3 opacity-60","data-testid":`filter-clear-${g.field}`,onClick:f=>{f.stopPropagation(),h(g.field,[])}}):e.jsx(It,{className:"h-3 w-3 opacity-60"})]})}),e.jsx(mt,{align:"start",className:"w-56 p-2",children:e.jsx("div",{className:"max-h-60 overflow-y-auto space-y-0.5","data-testid":`filter-options-${g.field}`,children:g.options.map(f=>e.jsxs("label",{className:$("flex items-center gap-2 text-sm py-1.5 px-2 rounded cursor-pointer",b.includes(f.value)?"bg-primary/5 text-primary":"hover:bg-muted"),children:[e.jsx("input",{type:"checkbox",checked:b.includes(f.value),onChange:()=>{const x=b.includes(f.value)?b.filter(C=>C!==f.value):[...b,f.value];h(g.field,x)},className:"rounded border-input"}),f.color&&e.jsx("span",{className:"h-2.5 w-2.5 rounded-full shrink-0",style:{backgroundColor:f.color}}),e.jsx("span",{className:"truncate flex-1",children:f.label}),f.count!==void 0&&e.jsx("span",{className:"text-xs text-muted-foreground",children:f.count})]},String(f.value)))})})]},g.field)};return e.jsxs("div",{className:$("flex items-center gap-1 overflow-x-auto",d),"data-testid":"user-filters-dropdown",children:[e.jsx(Ka,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),o.length===0?e.jsx("span",{className:"text-xs text-muted-foreground","data-testid":"user-filters-empty",children:"No filter fields"}):e.jsxs(e.Fragment,{children:[n.map(w),N.length>0&&e.jsxs(ft,{children:[e.jsx(pt,{asChild:!0,children:e.jsxs("button",{"data-testid":"user-filters-more",className:"inline-flex items-center gap-1 rounded-full border border-border bg-background hover:bg-accent text-foreground h-7 px-2.5 text-xs font-medium transition-colors shrink-0",children:[e.jsx("span",{children:"More"}),e.jsx("span",{className:"flex h-4 min-w-[16px] items-center justify-center rounded-full bg-muted text-[10px] font-medium",children:N.length}),e.jsx(It,{className:"h-3 w-3 opacity-60"})]})}),e.jsx(mt,{align:"start",className:"w-64 p-2","data-testid":"user-filters-more-content",children:e.jsx("div",{className:"space-y-1",children:N.map(w)})})]})]}),e.jsxs("button",{className:"inline-flex items-center gap-1 h-7 px-2 text-xs text-muted-foreground hover:text-foreground hover:bg-muted rounded-md transition-colors shrink-0","data-testid":"user-filters-add",title:"Add filter",children:[e.jsx(Ge,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Add filter"})]})]})}function Jn({tabs:t,showAllRecords:s,allowAddTab:a,onFilterChange:r,className:l}){const[d,c]=m.useState(()=>t.find(h=>h.default)?.id||(s?"__all__":t[0]?.id||"")),i=m.useCallback(u=>{if(c(u),u==="__all__")r([]);else{const h=t.find(n=>n.id===u);r(h?.filters||[])}},[t,r]),o=m.useMemo(()=>{const u=[...t];return s&&u.push({id:"__all__",label:"All records",filters:[]}),u},[t,s]);return m.useEffect(()=>{const u=t.find(h=>h.default);u&&r(u.filters||[])},[]),e.jsxs("div",{className:$("flex items-center gap-0.5 overflow-x-auto",l),"data-testid":"user-filters-tabs",children:[o.map(u=>e.jsx("button",{"data-testid":`filter-tab-${u.id}`,onClick:()=>i(u.id),className:$("inline-flex items-center h-7 px-3 text-xs font-medium rounded-md transition-colors shrink-0",d===u.id?"bg-primary text-primary-foreground":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:u.label},u.id)),a&&e.jsx("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:e.jsx(Ge,{className:"h-3.5 w-3.5"})})]})}function Qn({fields:t,onFilterChange:s,className:a}){const[r,l]=m.useState(()=>{const i=new Set;return t.forEach(o=>{o.defaultValues&&o.defaultValues.length>0&&i.add(o.field)}),i}),d=m.useCallback(i=>{const o=Array.from(i).map(u=>{const h=t.find(n=>n.field===u);return h?.defaultValues?[u,"in",h.defaultValues]:[u,"!=",null]});s(o)},[t,s]),c=i=>{l(o=>{const u=new Set(o);return u.has(i)?u.delete(i):u.add(i),d(u),u})};return m.useEffect(()=>{r.size>0&&d(r)},[]),e.jsx("div",{className:$("flex items-center gap-1 overflow-x-auto",a),"data-testid":"user-filters-toggle",children:t.map(i=>{const o=r.has(i.field);return e.jsx(B,{variant:o?"default":"outline",size:"sm",className:"h-7 px-3 text-xs shrink-0","data-testid":`filter-toggle-${i.field}`,onClick:()=>c(i.field),children:i.label||i.field},i.field)})})}const Es={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},Ft=["xs","sm","md","lg","xl","2xl"];function Zn(t){for(let s=Ft.length-1;s>=0;s--){const a=Ft[s];if(t>=Es[a])return a}return"xs"}function el(){const[t,s]=m.useState(()=>typeof window<"u"?window.innerWidth:1024);m.useEffect(()=>{if(typeof window>"u")return;let l;const d=()=>{clearTimeout(l),l=setTimeout(()=>{s(window.innerWidth)},100)};return window.addEventListener("resize",d),()=>{clearTimeout(l),window.removeEventListener("resize",d)}},[]);const a=Zn(t),r=Ft.indexOf(a);return{breakpoint:a,width:t,isMobile:r<Ft.indexOf("md"),isTablet:r>=Ft.indexOf("md")&&r<Ft.indexOf("lg"),isDesktop:r>=Ft.indexOf("lg"),isAbove:l=>t>=Es[l],isBelow:l=>t<Es[l]}}function tl(t){const{onRefresh:s,threshold:a=80,enabled:r=!0}=t,l=m.useRef(null),[d,c]=m.useState(!1),[i,o]=m.useState(0),u=m.useRef(0),h=m.useCallback(w=>{if(!r||d)return;const g=l.current;g&&g.scrollTop===0&&(u.current=w.touches[0].clientY)},[r,d]),n=m.useCallback(w=>{if(!r||d||!u.current)return;const b=w.touches[0].clientY-u.current;b>0&&o(Math.min(b,a*1.5))},[r,d,a]),N=m.useCallback(async()=>{if(!r||d)return;const w=i;if(o(0),u.current=0,w>=a){c(!0);try{await s()}finally{c(!1)}}},[r,d,i,a,s]);return m.useEffect(()=>{const w=l.current;if(!(!w||!r))return w.addEventListener("touchstart",h,{passive:!0}),w.addEventListener("touchmove",n,{passive:!0}),w.addEventListener("touchend",N,{passive:!0}),()=>{w.removeEventListener("touchstart",h),w.removeEventListener("touchmove",n),w.removeEventListener("touchend",N)}},[h,n,N,r]),{ref:l,isRefreshing:d,pullDistance:i}}const ur=m.createContext(null);ur.displayName="MobileContext";function Co({pwa:t,offline:s,children:a}){const r=el(),l=m.useMemo(()=>({...r,pwa:t,offline:s}),[r,t,s]);return e.jsx(ur.Provider,{value:l,children:a})}function sl(t){switch(t){case"equals":case"eq":return"=";case"notEquals":case"ne":case"neq":return"!=";case"contains":return"contains";case"notContains":return"notcontains";case"greaterThan":case"gt":return">";case"greaterOrEqual":case"gte":return">=";case"lessThan":case"lt":return"<";case"lessOrEqual":case"lte":return"<=";case"in":return"in";case"notIn":return"not in";case"before":return"<";case"after":return">";default:return t}}function fr(t){if(!Array.isArray(t)||t.length<3)return t;const[s,a,r]=t;return typeof s=="string"&&(s==="and"||s==="or")?[s,...t.slice(1).map(l=>Array.isArray(l)?fr(l):l)]:a==="in"&&Array.isArray(r)?r.length===0?[]:r.length===1?[s,"=",r[0]]:["or",...r.map(l=>[s,"=",l])]:a==="not in"&&Array.isArray(r)?r.length===0?[]:r.length===1?[s,"!=",r[0]]:["and",...r.map(l=>[s,"!=",l])]:t}function al(t){return t.replace(/_/g," ").replace(/\b\w/g,s=>s.toUpperCase())}function pr(t){return!Array.isArray(t)||t.length===0?[]:t.map(s=>Array.isArray(s)?fr(s):s).filter(s=>Array.isArray(s)&&s.length>0)}function rl(t){if(!t||!t.conditions||t.conditions.length===0)return[];const s=t.conditions.map(r=>r.operator==="isEmpty"?[r.field,"=",null]:r.operator==="isNotEmpty"?[r.field,"!=",null]:[r.field,sl(r.operator),r.value]),a=pr(s);return a.length===0?[]:a.length===1?a[0]:[t.logic,...a]}const na={"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.search":"Search","list.filter":"Filter","list.filterRecords":"Filter Records","list.sort":"Sort","list.sortRecords":"Sort Records","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.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","list.hideFieldsTitle":"Hide Fields"};function nl(){try{const t=dr();return t.t("list.recordCount")==="list.recordCount"?{t:(a,r)=>{let l=na[a]||a;if(r)for(const[d,c]of Object.entries(r))l=l.replace(`{{${d}}}`,String(c));return l}}:{t:t.t}}catch{return{t:(t,s)=>{let a=na[t]||t;if(s)for(const[r,l]of Object.entries(s))a=a.replace(`{{${r}}}`,String(l));return a}}}}function ll(){try{const{fieldLabel:t}=Vn();return{fieldLabel:t}}catch{return{fieldLabel:(t,s,a)=>a}}}const mr=({schema:t,className:s,onViewChange:a,onFilterChange:r,onSortChange:l,onSearchChange:d,onRowClick:c,showViewSwitcher:i=!1,...o})=>{const{t:u}=nl(),{fieldLabel:h}=ll(),n=m.useMemo(()=>({...t,viewType:t.viewType||"grid"}),[t]),N=m.useCallback((v,P)=>n.objectName?h(n.objectName,v,P):P,[n.objectName,h]),w=m.useMemo(()=>{const v=n.userActions,P=n.addRecord?.enabled===!0&&v?.addRecordForm!==!1;return{showSearch:v?.search!==void 0?v.search:n.showSearch!==!1,showSort:v?.sort!==void 0?v.sort:n.showSort!==!1,showFilters:v?.filter!==void 0?v.filter:n.showFilters!==!1,showDensity:v?.rowHeight!==void 0?v.rowHeight:n.showDensity===!0,showHideFields:n.showHideFields===!0,showGroup:n.showGroup!==!1,showColor:n.showColor===!0,showAddRecord:P,addRecordPosition:n.addRecord?.position==="bottom"?"bottom":"top"}},[n.userActions,n.showSearch,n.showSort,n.showFilters,n.showDensity,n.showHideFields,n.showGroup,n.showColor,n.addRecord,n.userActions?.addRecordForm]),[g,b]=m.useState(n.viewType),[p,f]=m.useState(""),[x,C]=m.useState(!1),[D,R]=m.useState(!1),[F,y]=m.useState(()=>n.sort&&n.sort.length>0?n.sort.map(v=>{if(typeof v=="string"){const P=v.trim().split(/\s+/);return{id:crypto.randomUUID(),field:P[0],order:P[1]?.toLowerCase()==="desc"?"desc":"asc"}}return{id:crypto.randomUUID(),field:v.field,order:v.order||"asc"}}):[]),[S,E]=m.useState(!1),[I,O]=m.useState({id:"root",logic:"and",conditions:[]}),[A,M]=m.useState(()=>!n.tabs||n.tabs.length===0?void 0:n.tabs.find(P=>P.isDefault)?.name??n.tabs[0]?.name),L=m.useCallback(v=>{if(M(v.name),v.filter){const P={id:`tab-filter-${v.name}`,logic:v.filter.logic||"and",conditions:v.filter.conditions||[]};O(P),r?.(P)}else{const P={id:"root",logic:"and",conditions:[]};O(P),r?.(P)}},[r]),j=o.dataSource,[k,T]=m.useState([]),[H,_]=m.useState(!1),[U,ne]=m.useState(null),[we,ue]=m.useState(!1),[le,de]=m.useState(0),[W,se]=m.useState(!1),[fe,ae]=m.useState(void 0),re=fe??n.pagination?.pageSize??100,[q,me]=m.useState(n.grouping),[De,et]=m.useState(!1),[Re,be]=m.useState(n.rowColor),[Pe,xt]=m.useState(!1),[ce,ie]=m.useState([]),Se=m.useRef(0),[ye,He]=m.useState(()=>{const v=new Set;return n.quickFilters?.forEach(P=>{const z=Yr(P);z.defaultActive&&v.add(z.id)}),v}),[Ct,Ue]=m.useState([]),nt=m.useMemo(()=>{if(n.userFilters)return n.userFilters;if(!U?.fields)return;const v=new Set(["select","multi-select","boolean"]),P=[],z=Array.isArray(U.fields)?U.fields.map(V=>[V.name,V]):Object.entries(U.fields);for(const[V,G]of z)(v.has(G.type)||G.options&&!G.type)&&P.push({field:V,label:N(V,G.label||V),type:G.type==="boolean"?"boolean":G.type==="multi-select"?"multi-select":"select"});if(P.length!==0)return{element:"dropdown",fields:P}},[n.userFilters,U]),[Ee,Be]=m.useState(()=>new Set(n.hiddenFields||[])),[gt,bt]=m.useState(!1),[tt,qe]=m.useState(!1),Ye=m.useMemo(()=>Xr(n.quickFilters),[n.quickFilters]),Xe=m.useMemo(()=>{if(n.exportOptions)return Array.isArray(n.exportOptions)?{formats:n.exportOptions}:n.exportOptions},[n.exportOptions]),At=m.useMemo(()=>n.densityMode?n.densityMode:n.rowHeight?{compact:"compact",short:"compact",medium:"comfortable",tall:"spacious",extra_tall:"spacious"}[n.rowHeight]||"comfortable":"compact",[n.densityMode,n.rowHeight]),lt=Kr(At),Me=m.useCallback(async()=>{de(v=>v+1)},[]),{ref:Vt,isRefreshing:zt,pullDistance:Je}=tl({onRefresh:Me,enabled:!!j&&!!n.objectName}),St=m.useMemo(()=>n.id?`listview-${n.objectName}-${n.id}-view`:`listview-${n.objectName}-view`,[n.objectName,n.id]);m.useEffect(()=>{let v=!0;return ue(!1),ne(null),(async()=>{if(!j||!n.objectName){ue(!0);return}try{const z=await j.getObjectSchema(n.objectName);v&&ne(z)}catch(z){console.warn("Failed to fetch object schema for ListView:",z)}finally{v&&ue(!0)}})(),()=>{v=!1}},[n.objectName,j]);const K=m.useMemo(()=>Ms(U?.fields,n.fields),[U?.fields,n.fields]);m.useEffect(()=>{let v=!0;const P=++Se.current;if(n.data&&typeof n.data=="object"&&!Array.isArray(n.data)){const V=n.data;if(V.provider==="value"&&Array.isArray(V.items)){T(V.items),_(!1),se(!1);return}}if(Array.isArray(n.data)){T(n.data),_(!1),se(!1);return}return we?((async()=>{if(!(!j||!n.objectName)){_(!0);try{let V=[];const G=n.filters||[],Y=rl(I),J=[];Ye&&ye.size>0&&Ye.forEach(ke=>{ye.has(ke.id)&&ke.filters&&ke.filters.length>0&&J.push(ke.filters)});const oe=pr(Ct),X=[...G.length>0?[G]:[],...Y.length>0?[Y]:[],...J,...oe].filter(ke=>Array.isArray(ke)&&ke.length>0);X.length>1?V=["and",...X]:X.length===1&&(V=X[0]);const Ne=F.length>0?F.filter(ke=>ke.field).map(ke=>({field:ke.field,order:ke.order})):void 0,Ae=await j.find(n.objectName,{$filter:V,$orderby:Ne,$top:re,...K.length>0?{$expand:K}:{},...p?{$search:p,...n.searchableFields&&n.searchableFields.length>0?{$searchFields:n.searchableFields}:{}}:{}});if(!v||P!==Se.current)return;let xe=[];Array.isArray(Ae)?xe=Ae:Ae&&typeof Ae=="object"&&(Array.isArray(Ae.data)?xe=Ae.data:Array.isArray(Ae.records)&&(xe=Ae.records)),T(xe),se(xe.length>=re)}catch(V){P===Se.current&&console.error("ListView data fetch error:",V)}finally{v&&P===Se.current&&_(!1)}}})(),()=>{v=!1}):void 0},[n.objectName,n.data,j,n.filters,re,F,I,ye,Ye,Ct,le,p,n.searchableFields,K,we]);const Z=m.useMemo(()=>{if(n.appearance?.allowedVisualizations&&n.appearance.allowedVisualizations.length>0)return n.appearance.allowedVisualizations.filter(P=>["grid","kanban","gallery","calendar","timeline","gantt","map"].includes(P));const v=["grid"];return(n.kanban?.groupField||n.options?.kanban?.groupField)&&v.push("kanban"),(n.gallery?.coverField||n.gallery?.imageField||n.options?.gallery?.imageField)&&v.push("gallery"),(n.calendar?.startDateField||n.options?.calendar?.startDateField)&&v.push("calendar"),(n.timeline?.startDateField||n.options?.timeline?.startDateField||n.options?.timeline?.dateField||n.options?.calendar?.startDateField)&&v.push("timeline"),(n.gantt?.startDateField||n.options?.gantt?.startDateField)&&v.push("gantt"),(n.options?.map?.locationField||n.options?.map?.latitudeField&&n.options?.map?.longitudeField)&&v.push("map"),n.viewType&&!v.includes(n.viewType)&&["grid","kanban","calendar","timeline","gantt","map","gallery"].includes(n.viewType)&&v.push(n.viewType),v},[n.options,n.viewType,n.kanban,n.calendar,n.gantt,n.gallery,n.timeline,n.appearance?.allowedVisualizations]);m.useEffect(()=>{n.viewType&&b(n.viewType)},[n.viewType]);const pe=m.useCallback(v=>{b(v);try{localStorage.setItem(St,v)}catch(P){console.warn("Failed to save view preference to localStorage:",P)}a?.(v)},[St,a]),te=m.useCallback(v=>{f(v),d?.(v)},[d]),he=Va({navigation:n.navigation,objectName:n.objectName,onNavigate:n.onNavigate,onRowClick:c}),ve=m.useMemo(()=>{let v=n.fields||[];if(Array.isArray(v)||(v=[]),Ee.size>0&&(v=v.filter(P=>{const z=typeof P=="string"?P:P?.name||P?.fieldName||P?.field;return z!=null&&!Ee.has(z)})),n.fieldOrder&&n.fieldOrder.length>0){const P=new Map(n.fieldOrder.map((z,V)=>[z,V]));v=[...v].sort((z,V)=>{const G=typeof z=="string"?z:z?.name||z?.fieldName||z?.field,Y=typeof V=="string"?V:V?.name||V?.fieldName||V?.field,J=P.get(G)??1/0,oe=P.get(Y)??1/0;return J-oe})}return v},[n.fields,Ee,n.fieldOrder]),ze=m.useMemo(()=>{const v={objectName:n.objectName,fields:ve,filters:n.filters,sort:F,className:"h-full w-full",showSearch:!1,onRowClick:he.handleClick,...n.striped!=null?{striped:n.striped}:{},...n.bordered!=null?{bordered:n.bordered}:{}};switch(g){case"grid":return{type:"object-grid",...v,columns:ve,...n.conditionalFormatting?{conditionalFormatting:n.conditionalFormatting}:{},...n.inlineEdit!=null?{editable:n.inlineEdit}:{},...n.wrapHeaders!=null?{wrapHeaders:n.wrapHeaders}:{},...n.virtualScroll!=null?{virtualScroll:n.virtualScroll}:{},...n.resizable!=null?{resizable:n.resizable}:{},...n.selection?{selection:n.selection}:{},...n.pagination?{pagination:n.pagination}:{},...q?{grouping:q}:{},...Re?{rowColor:Re}:{},...n.rowActions?{rowActions:n.rowActions}:{},...n.bulkActions?{batchActions:n.bulkActions}:{},...n.options?.grid||{}};case"kanban":return{type:"object-kanban",...v,groupBy:n.kanban?.groupField||n.options?.kanban?.groupField||"status",groupField:n.kanban?.groupField||n.options?.kanban?.groupField||"status",titleField:n.kanban?.titleField||n.options?.kanban?.titleField||"name",cardFields:n.kanban?.cardFields||ve||[],...q?{grouping:q}:{},...n.options?.kanban||{},...n.kanban||{}};case"calendar":return{type:"object-calendar",...v,startDateField:n.calendar?.startDateField||n.options?.calendar?.startDateField||"start_date",endDateField:n.calendar?.endDateField||n.options?.calendar?.endDateField||"end_date",titleField:n.calendar?.titleField||n.options?.calendar?.titleField||"name",...n.calendar?.defaultView?{defaultView:n.calendar.defaultView}:{},...n.options?.calendar||{},...n.calendar||{}};case"gallery":{const P={...n.options?.gallery||{},...n.gallery||{}};return{type:"object-gallery",...v,gallery:Object.keys(P).length>0?P:void 0,imageField:n.gallery?.coverField||n.gallery?.imageField||n.options?.gallery?.imageField,titleField:n.gallery?.titleField||n.options?.gallery?.titleField||"name",subtitleField:n.gallery?.subtitleField||n.options?.gallery?.subtitleField,...q?{grouping:q}:{}}}case"timeline":{const P={...n.options?.timeline||{},...n.timeline||{}};return{type:"object-timeline",...v,timeline:Object.keys(P).length>0?P:void 0,startDateField:n.timeline?.startDateField||n.options?.timeline?.startDateField||n.options?.timeline?.dateField||"created_at",titleField:n.timeline?.titleField||n.options?.timeline?.titleField||"name",...n.timeline?.endDateField?{endDateField:n.timeline.endDateField}:{},...n.timeline?.groupByField?{groupByField:n.timeline.groupByField}:{},...n.timeline?.colorField?{colorField:n.timeline.colorField}:{},...n.timeline?.scale?{scale:n.timeline.scale}:{}}}case"gantt":return{type:"object-gantt",...v,startDateField:n.gantt?.startDateField||n.options?.gantt?.startDateField||"start_date",endDateField:n.gantt?.endDateField||n.options?.gantt?.endDateField||"end_date",progressField:n.gantt?.progressField||n.options?.gantt?.progressField||"progress",dependenciesField:n.gantt?.dependenciesField||n.options?.gantt?.dependenciesField||"dependencies",...n.gantt?.titleField?{titleField:n.gantt.titleField}:{},...n.options?.gantt||{},...n.gantt||{}};case"map":return{type:"object-map",...v,locationField:n.options?.map?.locationField||"location",...n.options?.map||{}};default:return v}},[g,n,F,ve,q,Re,he.handleClick]),Te=I.conditions&&I.conditions.length>0,Le=m.useMemo(()=>{let v;if(U?.fields?v=Object.entries(U.fields).map(([P,z])=>({value:P,label:N(P,z.label||P),type:z.type||"text",options:z.options})):v=(n.fields||[]).map(P=>{if(typeof P=="string")return{value:P,label:P,type:"text"};const z=P.name||P.fieldName;return{value:z,label:N(z,P.label||P.name),type:P.type||"text",options:P.options}}),n.filterableFields&&n.filterableFields.length>0){const P=new Set(n.filterableFields);v=v.filter(z=>P.has(z.value))}return v},[U,n.fields,n.filterableFields]),Ve=m.useCallback(v=>{He(P=>{const z=new Set(P);return z.has(v)?z.delete(v):z.add(v),z})},[]),st=m.useCallback(v=>{const P=Xe,z=P?.maxRecords||0,V=P?.includeHeaders!==!1,G=P?.fileNamePrefix||n.objectName||"export",Y=z>0?k.slice(0,z):k;if(v==="csv"){const J=ve.map(xe=>typeof xe=="string"?xe:xe.name||xe.fieldName||xe.field),oe=[];V&&oe.push(J.join(",")),Y.forEach(xe=>{oe.push(J.map(ke=>{const Qe=xe[ke];let Q;return Qe==null?Q="":Array.isArray(Qe)?Q=Qe.map(it=>it!=null&&typeof it=="object"?JSON.stringify(it):String(it??"")).join("; "):typeof Qe=="object"?Q=JSON.stringify(Qe):Q=String(Qe),Q.includes(",")||Q.includes('"')||Q.includes(`
2
- `)||Q.includes("\r")?`"${Q.replace(/"/g,'""')}"`:Q}).join(","))});const X=new Blob([oe.join(`
3
- `)],{type:"text/csv;charset=utf-8;"}),Ne=URL.createObjectURL(X),Ae=document.createElement("a");Ae.href=Ne,Ae.download=`${G}.csv`,Ae.click(),URL.revokeObjectURL(Ne)}else if(v==="json"){const J=new Blob([JSON.stringify(Y,null,2)],{type:"application/json"}),oe=URL.createObjectURL(J),X=document.createElement("a");X.href=oe,X.download=`${G}.json`,X.click(),URL.revokeObjectURL(oe)}qe(!1)},[k,ve,Xe,n.objectName]),Ke=m.useMemo(()=>(n.fields||[]).map(v=>{if(typeof v=="string")return{name:v,label:N(v,v)};const P=v.name||v.fieldName||v.field,z=v.label||v.name||v.field;return{name:P,label:N(P,z)}}),[n.fields,N]);return e.jsxs("div",{ref:Vt,className:$("flex flex-col h-full bg-background relative min-w-0 overflow-hidden",s),...n.aria?.label?{"aria-label":n.aria.label}:{},...n.aria?.describedBy?{"aria-describedby":n.aria.describedBy}:{},...n.aria?.live?{"aria-live":n.aria.live}:{},role:"region",children:[Je>0&&e.jsx("div",{className:"flex items-center justify-center text-xs text-muted-foreground",style:{height:Je},children:u(zt?"list.refreshing":"list.pullToRefresh")}),i&&e.jsx("div",{className:"border-b px-4 py-1 flex items-center bg-background",children:e.jsx(qn,{currentView:g,availableViews:Z,onViewChange:pe})}),n.tabs&&n.tabs.length>0&&e.jsx(Un,{tabs:n.tabs,activeTab:A,onTabChange:L}),n.description&&n.appearance?.showDescription!==!1&&e.jsx("div",{className:"border-b px-4 py-1.5 text-xs text-muted-foreground bg-background","data-testid":"view-description",children:typeof n.description=="string"?n.description:""}),e.jsxs("div",{className:"border-b px-2 sm:px-4 py-1 flex items-center justify-between gap-1 sm:gap-2 bg-background",children:[e.jsxs("div",{className:"flex items-center gap-0.5 overflow-x-auto flex-1 min-w-0",children:[nt&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"shrink-0 min-w-0","data-testid":"user-filters",children:e.jsx(Yn,{config:nt,objectDef:U,data:k,onFilterChange:Ue,maxVisible:3})}),e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"})]}),w.showHideFields&&e.jsxs(ft,{open:gt,onOpenChange:bt,children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",Ee.size>0&&"text-primary"),children:[e.jsx(xn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.hideFields")}),Ee.size>0&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:Ee.size})]})}),e.jsx(mt,{align:"start",className:"w-64 p-3",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pb-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:u("list.hideFieldsTitle")}),Ee.size>0&&e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>Be(new Set),children:u("list.showAll")})]}),e.jsx("div",{className:"max-h-60 overflow-y-auto space-y-1",children:Ke.map(v=>e.jsxs("label",{className:"flex items-center gap-2 text-sm py-1 px-1 rounded hover:bg-muted cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:!Ee.has(v.name),onChange:()=>{Be(P=>{const z=new Set(P);return z.has(v.name)?z.delete(v.name):z.add(v.name),z})},className:"rounded border-input"}),e.jsx("span",{className:"truncate",children:v.label})]},v.name))})]})})]}),w.showHideFields&&(w.showFilters||w.showSort||w.showGroup)&&e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}),w.showFilters&&e.jsxs(ft,{open:S,onOpenChange:E,children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",Te&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(Ka,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.filter")}),Te&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:I.conditions?.length||0})]})}),e.jsx(mt,{align:"start",className:"w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between border-b pb-2",children:e.jsx("h4",{className:"font-medium text-sm",children:u("list.filterRecords")})}),e.jsx(Zr,{fields:Le,value:I,onChange:v=>{O(v),r&&r(v)}})]})})]}),w.showGroup&&e.jsxs(ft,{open:De,onOpenChange:et,children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",q&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(gn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.group")}),q&&q.fields?.length>0&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:q.fields.length})]})}),e.jsx(mt,{align:"start",className:"w-64 p-3",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pb-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:u("list.groupBy")}),q&&e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>me(void 0),"data-testid":"clear-grouping",children:u("list.clear")})]}),e.jsx("div",{className:"max-h-60 overflow-y-auto space-y-1","data-testid":"group-field-list",children:Ke.map(v=>{const P=q?.fields?.some(z=>z.field===v.name);return e.jsxs("label",{className:"flex items-center gap-2 text-sm py-1 px-1 rounded hover:bg-muted cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:!!P,onChange:()=>{if(P){const z=(q?.fields||[]).filter(V=>V.field!==v.name);me(z.length>0?{fields:z}:void 0)}else{const z=q?.fields||[];me({fields:[...z,{field:v.name,order:"asc",collapsed:!1}]})}},className:"rounded border-input"}),e.jsx("span",{className:"truncate",children:v.label})]},v.name)})})]})})]}),w.showSort&&e.jsxs(ft,{open:D,onOpenChange:R,children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",F.length>0&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(bn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.sort")}),F.length>0&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:F.length})]})}),e.jsx(mt,{align:"start",className:"w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between border-b pb-2",children:e.jsx("h4",{className:"font-medium text-sm",children:u("list.sortRecords")})}),e.jsx(en,{fields:Le,value:F,onChange:v=>{y(v),l&&l(v)}})]})})]}),(w.showFilters||w.showSort||w.showGroup)&&(w.showColor||w.showDensity)&&e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}),w.showColor&&e.jsxs(ft,{open:Pe,onOpenChange:xt,children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",Re&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(yn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.color")})]})}),e.jsx(mt,{align:"start",className:"w-64 p-3",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pb-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:u("list.rowColor")}),Re&&e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>be(void 0),"data-testid":"clear-row-color",children:u("list.clear")})]}),e.jsxs("div",{className:"space-y-2","data-testid":"color-field-list",children:[e.jsx("label",{className:"text-xs text-muted-foreground",children:u("list.colorByField")}),e.jsxs("select",{className:"w-full h-8 rounded border border-input bg-background px-2 text-xs",value:Re?.field||"",onChange:v=>{const P=v.target.value;be(P?{field:P,colors:Re?.colors||{}}:void 0)},"data-testid":"color-field-select",children:[e.jsx("option",{value:"",children:u("list.none")}),Ke.map(v=>e.jsx("option",{value:v.name,children:v.label},v.name))]})]})]})})]}),w.showDensity&&e.jsxs(B,{variant:"ghost",size:"sm",className:$("h-7 px-2 text-muted-foreground hover:text-primary text-xs hidden lg:flex transition-colors duration-150",lt.mode!=="compact"&&"bg-primary/10 border border-primary/20 text-primary"),onClick:lt.cycle,title:`Density: ${lt.mode}`,children:[e.jsx(vn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline capitalize",children:lt.mode})]}),(w.showColor||w.showDensity)&&Xe&&n.allowExport!==!1&&e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}),Xe&&n.allowExport!==!1&&e.jsxs(ft,{open:tt,onOpenChange:qe,children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",children:[e.jsx(Lt,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.export")})]})}),e.jsx(mt,{align:"start",className:"w-48 p-2",children:e.jsx("div",{className:"space-y-1",children:(Xe.formats||["csv","json"]).map(v=>e.jsxs(B,{variant:"ghost",size:"sm",className:"w-full justify-start h-8 text-xs",onClick:()=>st(v),children:[e.jsx(Lt,{className:"h-3.5 w-3.5 mr-2"}),u("list.exportAs",{format:v.toUpperCase()})]},v))})})]}),(n.sharing?.enabled||n.sharing?.type)&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",title:`Sharing: ${n.sharing?.visibility||n.sharing?.type||"private"}`,"data-testid":"share-button",children:[e.jsx(Ja,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.share")})]}),n.allowPrinting&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",onClick:()=>window.print(),"data-testid":"print-button",children:[e.jsx(Qa,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.print")})]}),(()=>{const v=n.allowPrinting||n.sharing?.enabled||n.sharing?.type||Xe&&n.allowExport!==!1;return w.showSearch&&v?e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}):null})(),w.showSearch&&e.jsxs(ft,{open:x,onOpenChange:C,children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"sm",className:$("h-7 w-7 p-0 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",p&&"bg-primary/10 border border-primary/20 text-primary"),"data-testid":"search-icon-button",title:u("list.search"),children:e.jsx(Ps,{className:"h-3.5 w-3.5"})})}),e.jsx(mt,{align:"end",className:"w-64 p-2","data-testid":"search-popover",children:e.jsxs("div",{className:"relative",children:[e.jsx(Ps,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),e.jsx(We,{placeholder:u("list.search")+"...",value:p,onChange:v=>te(v.target.value),className:"pl-7 h-8 text-xs",autoFocus:!0}),p&&e.jsx(B,{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:()=>te(""),children:e.jsx(Zt,{className:"h-3 w-3"})})]})})]})]}),e.jsx("div",{className:"flex items-center gap-1",children:w.showAddRecord&&w.addRecordPosition==="top"&&e.jsxs(B,{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:[e.jsx(Ge,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.addRecord")})]})})]}),Ye&&Ye.length>0&&e.jsx("div",{className:"border-b px-2 sm:px-4 py-1 flex items-center gap-1 flex-wrap bg-background","data-testid":"quick-filters",children:Ye.map(v=>{const P=ye.has(v.id),z=v.icon?Ts[v.icon.split("-").map(V=>V.charAt(0).toUpperCase()+V.slice(1)).join("")]??null:null;return e.jsxs(B,{variant:P?"default":"outline",size:"sm",className:"h-7 px-3 text-xs",onClick:()=>Ve(v.id),children:[z&&e.jsx(z,{className:"h-3 w-3 mr-1.5"}),v.label]},v.id)})}),e.jsx("div",{className:"flex-1 min-h-0 bg-background relative overflow-hidden animate-in fade-in-0 duration-200",children:!H&&k.length===0?(()=>{const v=n.emptyState?.icon,P=v?Ts[v.split("-").map(z=>z.charAt(0).toUpperCase()+z.slice(1)).join("")]??ta:ta;return e.jsxs("div",{className:"flex flex-col items-center justify-center h-full min-h-[200px] text-center p-8","data-testid":"empty-state",children:[e.jsx(P,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("h3",{className:"text-lg font-medium text-foreground mb-1",children:(typeof n.emptyState?.title=="string"?n.emptyState.title:void 0)??"No items found"}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-md",children:(typeof n.emptyState?.message=="string"?n.emptyState.message:void 0)??"There are no records to display. Try adjusting your filters or adding new data."})]})})():e.jsx(_e,{schema:ze,...o,data:k,loading:H,onRowSelect:ie})},g),w.showAddRecord&&w.addRecordPosition==="bottom"&&e.jsx("div",{className:"border-t px-2 sm:px-4 py-1 bg-background shrink-0",children:e.jsxs(B,{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:[e.jsx(Ge,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.addRecord")})]})}),n.bulkActions&&n.bulkActions.length>0&&ce.length>0&&g!=="grid"&&e.jsxs("div",{className:"border-t px-4 py-1.5 flex items-center gap-2 text-xs bg-primary/5 shrink-0","data-testid":"bulk-actions-bar",children:[e.jsxs("span",{className:"text-muted-foreground font-medium",children:[ce.length," selected"]}),e.jsx("div",{className:"flex items-center gap-1 ml-2",children:n.bulkActions.map(v=>e.jsx(B,{variant:"outline",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>o.onBulkAction?.(v,ce),"data-testid":`bulk-action-${v}`,children:al(v)},v))}),e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs ml-auto",onClick:()=>ie([]),children:"Clear"})]}),!H&&k.length>0&&n.showRecordCount!==!1&&e.jsxs("div",{className:"border-t px-4 py-1.5 flex items-center gap-2 text-xs text-muted-foreground bg-background shrink-0","data-testid":"record-count-bar",children:[e.jsx("span",{children:k.length===1?u("list.recordCountOne",{count:k.length}):u("list.recordCount",{count:k.length})}),W&&e.jsx("span",{className:"text-amber-600","data-testid":"data-limit-warning",children:u("list.dataLimitReached",{limit:re})}),n.pagination?.pageSizeOptions&&n.pagination.pageSizeOptions.length>0&&e.jsx("select",{className:"ml-auto h-6 rounded border border-input bg-background px-1 text-xs",value:re,onChange:v=>{const P=Number(v.target.value);ae(P),o.onPageSizeChange&&o.onPageSizeChange(P)},"data-testid":"page-size-selector",children:n.pagination.pageSizeOptions.map(v=>e.jsxs("option",{value:v,children:[v," / page"]},v))})]}),he.isOverlay&&e.jsx(qa,{...he,title:n.label?`${n.label} Detail`:n.objectName?`${n.objectName.charAt(0).toUpperCase()+n.objectName.slice(1)} Detail`:"Record Detail",children:v=>e.jsx("div",{className:"space-y-3",children:Object.entries(v).map(([P,z])=>e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:P.replace(/_/g," ")}),e.jsx("span",{className:"text-sm",children:String(z??"—")})]},P))})})]})},il={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"},ol={small:"aspect-square",medium:"aspect-[4/3]",large:"aspect-[16/10]"},cl=t=>{const{schema:s}=t,a=m.useContext(Ls),r=t.dataSource||a?.dataSource,l=_s(s.bind),[d,c]=m.useState([]),[i,o]=m.useState(!1),[u,h]=m.useState(null),n=Va({navigation:s.navigation,objectName:s.objectName,onRowClick:t.onRowClick??t.onCardClick}),N=s.gallery,w=N?.coverField??s.imageField??"image",g=N?.coverFit??"cover",b=N?.cardSize??"medium",p=N?.titleField??s.titleField??"name",f=N?.visibleFields;m.useEffect(()=>{let A=!0;return(async()=>{if(!(!r||typeof r.getObjectSchema!="function"||!s.objectName))try{const L=await r.getObjectSchema(s.objectName);A&&h(L)}catch(L){console.warn("Failed to fetch object def for ObjectGallery",L)}})(),()=>{A=!1}},[s.objectName,r]),m.useEffect(()=>{let A=!0;if(t.data&&Array.isArray(t.data)){c(t.data);return}const M=async()=>{if(!(!r||typeof r.find!="function"||!s.objectName)){A&&o(!0);try{const L=Ms(u?.fields),j=await r.find(s.objectName,{$filter:s.filter,...L.length>0?{$expand:L}:{}});let k=[];if(Array.isArray(j))k=j;else if(j&&typeof j=="object"){const T=j;Array.isArray(T.records)?k=T.records:Array.isArray(T.data)&&(k=T.data)}A&&c(k)}catch(L){console.error("[ObjectGallery] Fetch error:",L)}finally{A&&o(!1)}}};return s.objectName&&!l&&!s.data&&!t.data&&M(),()=>{A=!1}},[s.objectName,r,l,s.data,s.filter,t.data,u]);const x=t.data||l||s.data||d||[],C=s.grouping?.fields,D=!!(C&&C.length>0),[R,F]=m.useState({}),y=m.useMemo(()=>C?C.some(A=>A.collapsed):!1,[C]),S=m.useCallback(A=>{F(M=>({...M,[A]:M[A]!==void 0?!M[A]:!y}))},[y]),E=m.useMemo(()=>{if(!D||!C)return[];const A=new Map,M=[];for(const j of x){const k=C.map(T=>String(j[T.field]??"")).join(" / ");if(!A.has(k)){const T=C.map(H=>{const _=j[H.field];return _!=null&&_!==""?String(_):"(empty)"}).join(" / ");A.set(k,{label:T,items:[]}),M.push(k)}A.get(k).items.push(j)}const L=C[0]?.order??"asc";return M.sort((j,k)=>{const T=j.localeCompare(k,void 0,{numeric:!0,sensitivity:"base"});return L==="desc"?-T:T}),M.map(j=>{const k=A.get(j),T=j in R?R[j]:y;return{key:j,label:k.label,items:k.items,collapsed:T}})},[x,C,D,R,y]);if(i&&!x.length)return e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:"Loading Gallery..."});if(!x.length)return e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:"No items to display"});const I=(A,M)=>{const L=A._id??A.id??M,j=String(A[p]??"Untitled"),k=A[w];return e.jsxs(Fe,{role:"listitem",className:$("group overflow-hidden transition-all hover:shadow-md",(t.onCardClick||t.onRowClick||s.navigation)&&"cursor-pointer"),onClick:()=>n.handleClick(A),children:[e.jsx("div",{className:$("w-full overflow-hidden bg-muted relative",ol[b]),children:k?e.jsx("img",{src:k,alt:j,className:$("h-full w-full transition-transform group-hover:scale-105",g==="cover"&&"object-cover",g==="contain"&&"object-contain")}):e.jsx("div",{className:"flex h-full w-full items-center justify-center bg-secondary/50 text-muted-foreground",children:e.jsx("span",{className:"text-4xl font-light opacity-20",children:j[0]?.toUpperCase()})})}),e.jsxs(Oe,{className:"p-3 border-t",children:[e.jsx("h3",{className:"font-medium truncate text-sm",title:j,children:j}),f&&f.length>0&&e.jsx("div",{className:"mt-1 space-y-0.5",children:f.map(T=>{const H=A[T];return H==null?null:e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:String(H)},T)})})]})]},L)},O=A=>e.jsx("div",{className:$("grid gap-4 p-4",il[b],s.className),role:"list",children:A.map((M,L)=>I(M,L))});return e.jsxs(e.Fragment,{children:[D?e.jsx("div",{className:"space-y-2",children:E.map(A=>e.jsxs("div",{className:"border rounded-md",children:[e.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:()=>S(A.key),children:[A.collapsed?e.jsx(ps,{className:"h-4 w-4 shrink-0"}):e.jsx(It,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{children:A.label}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:A.items.length})]}),!A.collapsed&&O(A.items)]},A.key))}):O(x),n.isOverlay&&e.jsx(qa,{...n,title:"Gallery Item",children:A=>e.jsx("div",{className:"space-y-3",children:Object.entries(A).map(([M,L])=>e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:M.replace(/_/g," ")}),e.jsx("span",{className:"text-sm",children:String(L??"—")})]},M))})})]})};je.register("object-gallery",cl,{namespace:"plugin-list",label:"Gallery View",category:"view"});je.register("list-view",mr,{namespace:"plugin-list",label:"List View",category:"Views",icon:"LayoutList",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"viewType",type:"enum",label:"Default View",enum:[{label:"Grid",value:"grid"},{label:"Kanban",value:"kanban"},{label:"Gallery",value:"gallery"},{label:"Calendar",value:"calendar"},{label:"Timeline",value:"timeline"},{label:"Gantt",value:"gantt"},{label:"Map",value:"map"}],defaultValue:"grid"},{name:"fields",type:"array",label:"Fields"},{name:"filters",type:"array",label:"Filters"},{name:"sort",type:"array",label:"Sort"},{name:"options",type:"object",label:"View Options"}],defaultProps:{objectName:"",viewType:"grid",fields:[],filters:[],sort:[],options:{}}});je.register("list",mr,{namespace:"view",category:"view",label:"List",icon:"LayoutList",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"viewType",type:"enum",label:"Default View",enum:[{label:"Grid",value:"grid"},{label:"Kanban",value:"kanban"},{label:"Gallery",value:"gallery"},{label:"Calendar",value:"calendar"},{label:"Timeline",value:"timeline"},{label:"Gantt",value:"gantt"},{label:"Map",value:"map"}],defaultValue:"grid"},{name:"fields",type:"array",label:"Fields"},{name:"filters",type:"array",label:"Filters"},{name:"sort",type:"array",label:"Sort"},{name:"options",type:"object",label:"View Options"}]});const dl=new Set(["textarea","markdown","html","grid","rich-text","field:textarea","field:markdown","field:html","field:grid","field:rich-text"]);function ul(t){return dl.has(t)}function fl(t){return t<=3?1:t<=10?2:3}function la(t,s){return s<=1?t:t.map(a=>a.span!==void 0?a:a.type&&ul(a.type)?{...a,span:s}:a)}function pl(t,s){if(s!==void 0)return{fields:la(t,s),columns:s};const a=fl(t.length);return{fields:la(t,a),columns:a}}function ml(t,s){return function(){try{const r=dr();return r.t(s)===s?{t:(d,c)=>{let i=t[d]||d;if(c)for(const[o,u]of Object.entries(c))i=i.replace(`{{${o}}}`,String(u));return i}}:{t:r.t}}catch{return{t:(r,l)=>{let d=t[r]||r;if(l)for(const[c,i]of Object.entries(l))d=d.replace(`{{${c}}}`,String(i));return d}}}}}const hl={"detail.back":"Back","detail.edit":"Edit","detail.editInline":"Edit inline","detail.save":"Save","detail.saveChanges":"Save changes","detail.editFieldsInline":"Edit fields inline","detail.share":"Share","detail.duplicate":"Duplicate","detail.export":"Export","detail.viewHistory":"View history","detail.delete":"Delete","detail.moreActions":"More actions","detail.addToFavorites":"Add to favorites","detail.removeFromFavorites":"Remove from favorites","detail.previousRecord":"Previous record","detail.nextRecord":"Next record","detail.recordOf":"{{current}} of {{total}}","detail.recordNotFound":"Record not found","detail.recordNotFoundDescription":"The record you are looking for does not exist or may have been deleted.","detail.goBack":"Go back","detail.details":"Details","detail.related":"Related","detail.relatedRecords":"{{count}} records","detail.relatedRecordOne":"{{count}} record","detail.noRelatedRecords":"No related records found","detail.loading":"Loading...","detail.copyToClipboard":"Copy to clipboard","detail.copied":"Copied!","detail.deleteConfirmation":"Are you sure you want to delete this record?","detail.editRecord":"Edit record","detail.viewAll":"View All","detail.new":"New","detail.emptyValue":"—"},qs=ml(hl,"detail.back"),As=({section:t,data:s,className:a,objectSchema:r,isEditing:l=!1,onFieldChange:d})=>{const[c,i]=m.useState(t.defaultCollapsed??!1),[o,u]=m.useState(null),{t:h}=qs(),n=m.useCallback((f,x)=>{const C=x!=null?String(x):"";navigator.clipboard.writeText(C).then(()=>{u(f),setTimeout(()=>u(null),2e3)})},[]),N=f=>{const x=s?.[f.name]??f.value;if(f.render)return e.jsx(_e,{schema:f.render,data:{...s,value:x}});const C=f.span===1?"col-span-1":f.span===2?"col-span-2":f.span===3?"col-span-3":f.span===4?"col-span-4":f.span===5?"col-span-5":f.span===6?"col-span-6":"",D=(()=>{if(x==null)return e.jsx("span",{className:"text-muted-foreground/50 text-xs italic",children:"—"});const y=r?.fields?.[f.name],S=f.type||y?.type,E={...f};if(y&&(!f.type&&y.type&&(E.type=y.type),y.options&&!E.options&&(E.options=y.options),y.currency&&!E.currency&&(E.currency=y.currency),y.precision!==void 0&&E.precision===void 0&&(E.precision=y.precision),y.format&&!E.format&&(E.format=y.format),y.reference_to&&!E.reference_to&&(E.reference_to=y.reference_to),y.reference_field&&!E.reference_field&&(E.reference_field=y.reference_field)),S){const I=rn(S);if(I)return e.jsx(I,{value:x,field:E})}return String(x)})(),R=x!=null&&x!=="",F=o===f.name;return e.jsxs("div",{className:$("space-y-1.5 group",C),children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:f.label||f.name}),l&&!f.readonly?e.jsx("div",{className:"min-h-[44px] sm:min-h-0",children:e.jsx("input",{type:f.type==="number"?"number":f.type==="date"?"date":"text",className:"w-full px-2 py-1.5 text-sm border rounded-md bg-background focus:outline-none focus:ring-2 focus:ring-ring",value:x!=null?String(x):"",onChange:y=>d?.(f.name,y.target.value)})}):e.jsxs("div",{className:$("flex items-start justify-between gap-2 min-h-[44px] sm:min-h-0 rounded-md",R&&"cursor-pointer active:bg-muted/60 transition-colors"),onClick:R?()=>n(f.name,x):void 0,onKeyDown:R?y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),n(f.name,x))}:void 0,role:R?"button":void 0,tabIndex:R?0:void 0,children:[e.jsx("div",{className:"text-sm flex-1 break-words py-1",children:D}),R&&e.jsx(Wa,{children:e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",onClick:y=>{y.stopPropagation(),n(f.name,x)},children:F?e.jsx(Za,{className:"h-3 w-3 text-green-600"}):e.jsx(er,{className:"h-3 w-3"})})}),e.jsx(ut,{children:h(F?"detail.copied":"detail.copyToClipboard")})]})})]})]},f.name)},w=t.hideEmpty?t.fields.filter(f=>{const x=s?.[f.name]??f.value;return x!=null&&x!==""}):t.fields;if(w.length===0)return null;const{fields:g,columns:b}=pl(w,t.columns),p=e.jsx("div",{className:$("grid gap-3 sm:gap-4",b===1?"grid-cols-1":b===2?"grid-cols-1 md:grid-cols-2":"grid-cols-1 md:grid-cols-2 lg:grid-cols-3"),children:g.map(N)});return t.collapsible?e.jsx(tn,{open:!c,onOpenChange:f=>i(!f),className:a,children:e.jsxs(Fe,{children:[e.jsx(sn,{asChild:!0,children:e.jsxs(Ie,{className:$("cursor-pointer hover:bg-muted/50 transition-colors",t.headerColor&&`bg-${t.headerColor}`),children:[e.jsxs($e,{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[t.icon&&e.jsx("span",{className:"text-muted-foreground",children:t.icon}),e.jsx("span",{children:t.title}),t.fields&&e.jsx(Jt,{variant:"secondary",className:"ml-2 text-xs",children:t.fields.length})]}),e.jsx("div",{className:"flex items-center gap-2",children:c?e.jsx(ps,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(It,{className:"h-4 w-4 text-muted-foreground"})})]}),t.description&&!c&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1.5",children:t.description})]})}),e.jsx(an,{children:e.jsx(Oe,{className:"pt-4 sm:pt-6 px-3 sm:px-6",children:p})})]})}):e.jsxs(Fe,{className:$(t.showBorder===!1?"border-none shadow-none":"",a),children:[t.title&&e.jsxs(Ie,{className:$(t.headerColor&&`bg-${t.headerColor}`),children:[e.jsx($e,{className:"flex items-center justify-between",children:e.jsxs("div",{className:"flex items-center gap-2",children:[t.icon&&e.jsx("span",{className:"text-muted-foreground",children:t.icon}),e.jsx("span",{children:t.title}),t.fields&&e.jsx(Jt,{variant:"secondary",className:"ml-2 text-xs",children:t.fields.length})]})}),t.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1.5",children:t.description})]}),e.jsx(Oe,{className:"pt-4 sm:pt-6 px-3 sm:px-6",children:p})]})},xl=({tabs:t,data:s,className:a})=>{const[r,l]=m.useState(t[0]?.key),d=t.filter(c=>typeof c.visible=="boolean"?c.visible:(typeof c.visible=="string",!0));return e.jsxs(Ga,{value:r,onValueChange:l,className:a,children:[e.jsx(Ua,{className:"w-full justify-start border-b rounded-none bg-transparent p-0",children:d.map(c=>e.jsx(kt,{value:c.key,className:"relative rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent",children:e.jsxs("div",{className:"flex items-center gap-2",children:[c.icon&&e.jsx("span",{children:c.icon}),e.jsx("span",{children:c.label}),c.badge&&e.jsx(Jt,{variant:"secondary",className:"ml-1",children:c.badge})]})},c.key))}),d.map(c=>e.jsx(Dt,{value:c.key,className:"mt-4",children:Array.isArray(c.content)?e.jsx("div",{className:"space-y-4",children:c.content.map((i,o)=>e.jsx(_e,{schema:i,data:s},o))}):e.jsx(_e,{schema:c.content,data:s})},c.key))]})},hr=({title:t,type:s,api:a,data:r=[],schema:l,columns:d,className:c,dataSource:i,onNew:o,onViewAll:u})=>{const[h,n]=m.useState(r),[N,w]=m.useState(!1),{t:g}=qs();m.useEffect(()=>{a&&!r.length&&(w(!0),i&&typeof i.find=="function"?i.find(a).then(f=>{const x=Array.isArray(f)?f:Array.isArray(f?.data)?f.data:[];n(x),w(!1)}).catch(f=>{console.error("Failed to fetch related data:",f),w(!1)}):fetch(a).then(f=>f.json()).then(f=>{const x=Array.isArray(f)?f:f?.data||[];n(x)}).catch(f=>{console.error("Failed to fetch related data:",f)}).finally(()=>w(!1)))},[a,r,i]);const b=m.useMemo(()=>{if(l)return l;switch(s){case"grid":case"table":return{type:"data-table",data:h,columns:d||[],pagination:h.length>10,pageSize:10};case"list":return{type:"data-list",data:h};default:return{type:"div",children:"No view configured"}}},[s,h,d,l]),p=h.length===1?g("detail.relatedRecordOne",{count:h.length}):g("detail.relatedRecords",{count:h.length});return e.jsxs(Fe,{className:c,children:[e.jsx(Ie,{children:e.jsxs($e,{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{children:t}),e.jsx("span",{className:"text-sm font-normal text-muted-foreground",children:p})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[o&&e.jsxs(B,{variant:"ghost",size:"sm",onClick:o,className:"gap-1 h-7 text-xs",children:[e.jsx(Ge,{className:"h-3.5 w-3.5"}),g("detail.new")]}),u&&e.jsxs(B,{variant:"ghost",size:"sm",onClick:u,className:"gap-1 h-7 text-xs",children:[g("detail.viewAll"),e.jsx(jn,{className:"h-3 w-3"})]})]})]})}),e.jsx(Oe,{children:N?e.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:g("detail.loading")}):h.length===0?e.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground text-sm",children:g("detail.noRelatedRecords")}):e.jsx(_e,{schema:b})})]})};function gl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}const bl=({comments:t,onAddComment:s,onTogglePin:a,searchable:r=!1,className:l})=>{const[d,c]=m.useState(""),[i,o]=m.useState(!1),[u,h]=m.useState(""),n=m.useCallback(async()=>{const g=d.trim();if(!(!g||!s)){o(!0);try{await s(g),c("")}finally{o(!1)}}},[d,s]),N=m.useCallback(g=>{g.key==="Enter"&&(g.ctrlKey||g.metaKey)&&(g.preventDefault(),n())},[n]),w=m.useMemo(()=>[...u.trim()?t.filter(b=>{const p=u.trim().toLowerCase();return b.text.toLowerCase().includes(p)||b.author.toLowerCase().includes(p)}):t].sort((b,p)=>b.pinned&&!p.pinned?-1:!b.pinned&&p.pinned?1:0),[t,u]);return e.jsxs(Fe,{className:$("",l),children:[e.jsx(Ie,{children:e.jsxs($e,{className:"flex items-center gap-2 text-base",children:[e.jsx(wt,{className:"h-4 w-4"}),"Comments",e.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["(",t.length,")"]})]})}),e.jsxs(Oe,{className:"space-y-4",children:[r&&e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Ps,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),e.jsx("input",{className:"w-full rounded-md border border-input bg-background pl-8 pr-8 py-1.5 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Search comments…",value:u,onChange:g=>h(g.target.value),"aria-label":"Search comments"}),u&&e.jsx("button",{className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",onClick:()=>h(""),"aria-label":"Clear search",type:"button",children:e.jsx(Zt,{className:"h-3.5 w-3.5"})})]})}),s&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("textarea",{className:"flex-1 min-h-[60px] rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none",placeholder:"Add a comment… (Ctrl+Enter to submit)",value:d,onChange:g=>c(g.target.value),onKeyDown:N,disabled:i}),e.jsx(B,{size:"icon",variant:"default",onClick:n,disabled:!d.trim()||i,className:"shrink-0 self-end",children:e.jsx(tr,{className:"h-4 w-4"})})]}),w.length===0?e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:u.trim()?"No matching comments":"No comments yet"}):e.jsx("div",{className:"space-y-3",children:w.map(g=>e.jsxs("div",{className:$("flex gap-3",g.pinned&&"bg-muted/40 rounded-md p-2 -mx-2"),children:[e.jsx("div",{className:"shrink-0",children:g.avatarUrl?e.jsx("img",{src:g.avatarUrl,alt:g.author,className:"h-8 w-8 rounded-full object-cover"}):e.jsx("div",{className:"h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground",children:g.author.charAt(0).toUpperCase()})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("span",{className:"text-sm font-medium truncate",children:g.author}),e.jsx("span",{className:"text-xs text-muted-foreground",children:gl(g.createdAt)}),g.pinned&&e.jsxs("span",{className:"text-xs text-amber-600 flex items-center gap-0.5",children:[e.jsx(sa,{className:"h-3 w-3"}),"Pinned"]})]}),e.jsx("p",{className:"text-sm whitespace-pre-wrap break-words",children:g.text}),a&&e.jsxs("button",{type:"button",className:"mt-1 text-xs text-muted-foreground hover:text-foreground flex items-center gap-1",onClick:()=>a(g.id),"aria-label":g.pinned?"Unpin comment":"Pin comment",children:[e.jsx(sa,{className:"h-3 w-3"}),g.pinned?"Unpin":"Pin"]})]})]},g.id))})]})]})},ia={field_change:Pt,create:Nn,delete:jt,comment:wt,status_change:wn},yl={field_change:"bg-blue-100 text-blue-600",create:"bg-green-100 text-green-600",delete:"bg-red-100 text-red-600",comment:"bg-purple-100 text-purple-600",status_change:"bg-amber-100 text-amber-600"};function vl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}function jl(t){if(t.description)return t.description;if(t.type==="field_change"&&t.field){const s=t.field.charAt(0).toUpperCase()+t.field.slice(1).replace(/_/g," "),a=t.oldValue!=null?String(t.oldValue):"(empty)",r=t.newValue!=null?String(t.newValue):"(empty)";return`Changed ${s} from "${a}" to "${r}"`}return t.type==="create"?"Created this record":t.type==="delete"?"Deleted this record":t.type==="status_change"&&t.field?`Changed status to "${t.newValue!=null?String(t.newValue):"(empty)"}"`:"Updated record"}const oa={all:"All",field_change:"Field Changes",create:"Creates",delete:"Deletes",comment:"Comments",status_change:"Status Changes"},wl=({activities:t,filterable:s=!1,defaultFilter:a="all",className:r})=>{const[l,d]=m.useState(a),c=m.useMemo(()=>l==="all"?t:t.filter(i=>i.type===l),[t,l]);return e.jsxs(Fe,{className:$("",r),children:[e.jsx(Ie,{children:e.jsxs($e,{className:"flex items-center gap-2 text-base",children:[e.jsx(Vs,{className:"h-4 w-4"}),"Activity",e.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["(",c.length,")"]})]})}),e.jsxs(Oe,{children:[s&&e.jsx("div",{className:"flex flex-wrap gap-1.5 mb-4",role:"group","aria-label":"Activity type filter",children:Object.keys(oa).map(i=>e.jsxs("button",{type:"button",className:$("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors",l===i?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:()=>d(i),"aria-pressed":l===i,children:[i!=="all"&&m.createElement(ia[i]||Pt,{className:"h-3 w-3"}),oa[i]]},i))}),c.length===0?e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"No activity recorded"}):e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-4 top-2 bottom-2 w-px bg-border"}),e.jsx("div",{className:"space-y-4",children:c.map(i=>{const o=ia[i.type]||Pt,u=yl[i.type]||"bg-gray-100 text-gray-600";return e.jsxs("div",{className:"flex gap-3 relative",children:[e.jsx("div",{className:$("shrink-0 h-8 w-8 rounded-full flex items-center justify-center z-10",u),children:e.jsx(o,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"flex-1 min-w-0 pt-1",children:[e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:i.user})," ",e.jsx("span",{className:"text-muted-foreground",children:jl(i)})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:vl(i.timestamp)})]})]},i.id)})})]})]})]})},xr=({schema:t,dataSource:s,className:a,onEdit:r,onDelete:l,onBack:d,inlineEdit:c=!1,onFieldSave:i})=>{const[o,u]=m.useState(t.data),[h,n]=m.useState(!t.data&&!!(t.api&&t.resourceId||s&&t.objectName&&t.resourceId)),[N,w]=m.useState(!1),[g,b]=m.useState(!1),[p,f]=m.useState({}),[x,C]=m.useState(null),{t:D}=qs();m.useEffect(()=>{let j=!0;if(t.data){u(t.data),n(!1);return}if(s&&t.objectName&&t.resourceId){n(!0),C(null),u(null);const k=t.objectName,T=t.resourceId,H=`${k}-`,_=[...t.sections?.flatMap(ne=>ne.fields)||[],...t.fields||[]];(s.getObjectSchema?s.getObjectSchema(k).catch(()=>null):Promise.resolve(null)).then(ne=>{if(!j)return;C(ne);const we=Ms(ne?.fields,_),ue=we.length>0?{$expand:we}:void 0;return(ue?s.findOne(k,T,ue):s.findOne(k,T)).then(de=>{if(!j)return;if(de){u(de),n(!1);return}const W=String(T),se=W.startsWith(H)?W.slice(H.length):`${H}${W}`;return(ue?s.findOne(k,se,ue):s.findOne(k,se)).then(fe=>{j&&(u(fe),n(!1))}).catch(()=>{j&&(u(null),n(!1))})})}).catch(ne=>{j&&(console.error("Failed to fetch detail data:",ne),n(!1))})}else t.api&&t.resourceId&&(n(!0),fetch(`${t.api}/${t.resourceId}`).then(k=>k.json()).then(k=>{j&&u(k?.data||k)}).catch(k=>{console.error("Failed to fetch detail data:",k)}).finally(()=>{j&&n(!1)}));return()=>{j=!1}},[t.api,t.resourceId,t.objectName,s,t.sections,t.fields]);const R=m.useCallback(()=>{if(d)d();else if(t.onNavigate){const j=t.backUrl||(t.objectName?`/${t.objectName}`:"/");t.onNavigate(j,{replace:!0})}else t.backUrl?window.location.href=t.backUrl:window.history.back()},[d,t]),F=m.useCallback(()=>{r?r():t.onNavigate&&t.editUrl?t.onNavigate(t.editUrl):t.onNavigate&&t.objectName&&t.resourceId?t.onNavigate(`/${t.objectName}/${t.resourceId}/edit`):t.editUrl&&(window.location.href=t.editUrl)},[r,t]),y=m.useCallback(()=>{const j=t.deleteConfirmation||D("detail.deleteConfirmation");window.confirm(j)&&(l?.(),t.onNavigate&&t.objectName&&t.onNavigate(`/${t.objectName}`,{replace:!0}))},[l,t]),S=m.useCallback(()=>{navigator.share&&t.objectName&&t.resourceId?navigator.share({title:t.title||D("detail.details"),text:`${t.objectName} #${t.resourceId}`,url:window.location.href}).catch(j=>console.log("Share failed:",j)):navigator.clipboard.writeText(window.location.href).then(()=>{console.log("Link copied to clipboard")})},[t]),E=m.useCallback(()=>{console.log("Duplicate record:",o)},[o]),I=m.useCallback(()=>{console.log("Export record:",o)},[o]),O=m.useCallback(()=>{console.log("View history for record:",t.resourceId)},[t]),A=m.useCallback(()=>{w(!N)},[N]),M=m.useCallback(()=>{if(g){const j=Object.entries(p);if(j.length>0){const k={...o,...p};u(k),j.forEach(([T,H])=>{i?.(T,H,k)})}f({})}b(!g)},[g,p,o,i]),L=m.useCallback((j,k)=>{f(T=>({...T,[j]:k}))},[]);return m.useEffect(()=>{if(!t.recordNavigation)return;const j=t.recordNavigation,k=T=>{const H=T.target?.tagName;H==="INPUT"||H==="TEXTAREA"||T.target?.isContentEditable||(T.key==="ArrowLeft"&&j.currentIndex>0?(T.preventDefault(),j.onNavigate(j.recordIds[j.currentIndex-1])):T.key==="ArrowRight"&&j.currentIndex<j.recordIds.length-1&&(T.preventDefault(),j.onNavigate(j.recordIds[j.currentIndex+1])))};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[t.recordNavigation]),h||t.loading?e.jsxs("div",{className:$("space-y-4",a),children:[e.jsx(ge,{className:"h-10 w-full"}),e.jsx(ge,{className:"h-64 w-full"}),e.jsx(ge,{className:"h-48 w-full"})]}):!o&&!t.data?e.jsxs("div",{className:$("flex flex-col items-center justify-center py-16 text-center",a),children:[e.jsx("p",{className:"text-lg font-semibold",children:D("detail.recordNotFound")}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:D("detail.recordNotFoundDescription")}),(t.showBack??!0)&&e.jsxs(B,{variant:"outline",size:"sm",onClick:R,className:"mt-4 gap-2",children:[e.jsx(aa,{className:"h-4 w-4"}),D("detail.goBack")]})]}):e.jsx(Wa,{children:e.jsxs("div",{className:$("space-y-6",a),children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-3 sm:gap-4 pb-4 border-b",children:[e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3 flex-1 min-w-0",children:[(t.showBack??!0)&&e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",onClick:R,className:"shrink-0 mt-1",children:e.jsx(aa,{className:"h-4 w-4"})})}),e.jsx(ut,{children:D("detail.back")})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold truncate",children:t.primaryField&&o?.[t.primaryField]||t.title||D("detail.details")}),t.summaryFields?.map(j=>{const k=o?.[j];return k==null||k===""?null:e.jsx(Jt,{variant:"secondary",className:"text-xs","aria-label":`${j}: ${k}`,children:String(k)},j)}),e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0",onClick:A,children:N?e.jsx(Cn,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}):e.jsx(Sn,{className:"h-4 w-4 text-muted-foreground"})})}),e.jsx(ut,{children:D(N?"detail.removeFromFavorites":"detail.addToFavorites")})]})]}),t.objectName&&e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium",children:t.objectName}),e.jsx("span",{className:"text-muted-foreground/60",children:"•"}),e.jsxs("span",{children:["#",t.resourceId]})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 shrink-0 w-full sm:w-auto",children:[t.recordNavigation&&e.jsxs("div",{className:"flex items-center gap-1 mr-2",children:[e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:t.recordNavigation.currentIndex<=0,onClick:()=>{const j=t.recordNavigation;j.currentIndex>0&&j.onNavigate(j.recordIds[j.currentIndex-1])},children:e.jsx(kn,{className:"h-4 w-4"})})}),e.jsx(ut,{children:D("detail.previousRecord")})]}),e.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap px-1",children:D("detail.recordOf",{current:t.recordNavigation.currentIndex+1,total:t.recordNavigation.recordIds.length})}),e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:t.recordNavigation.currentIndex>=t.recordNavigation.recordIds.length-1,onClick:()=>{const j=t.recordNavigation;j.currentIndex<j.recordIds.length-1&&j.onNavigate(j.recordIds[j.currentIndex+1])},children:e.jsx(ps,{className:"h-4 w-4"})})}),e.jsx(ut,{children:D("detail.nextRecord")})]})]}),t.actions?.map((j,k)=>e.jsx(_e,{schema:j,data:o},k)),c&&e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:g?"default":"outline",size:"sm",onClick:M,className:"gap-2",children:g?e.jsxs(e.Fragment,{children:[e.jsx(Za,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:D("detail.save")})]}):e.jsxs(e.Fragment,{children:[e.jsx(Pt,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:D("detail.editInline")})]})})}),e.jsx(ut,{children:D(g?"detail.saveChanges":"detail.editFieldsInline")})]}),e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(B,{variant:"outline",size:"icon",onClick:S,children:e.jsx(Ja,{className:"h-4 w-4"})})}),e.jsx(ut,{children:D("detail.share")})]}),t.showEdit&&e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsxs(B,{variant:"default",onClick:F,className:"gap-2",children:[e.jsx(Pt,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:D("detail.edit")})]})}),e.jsx(ut,{children:D("detail.editRecord")})]}),e.jsxs(nn,{children:[e.jsxs(ct,{children:[e.jsx(dt,{asChild:!0,children:e.jsx(ln,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",children:e.jsx(Dn,{className:"h-4 w-4"})})})}),e.jsx(ut,{children:D("detail.moreActions")})]}),e.jsxs(on,{align:"end",className:"w-[calc(100vw-2rem)] sm:w-48 max-h-[60vh] overflow-y-auto",children:[e.jsxs(ss,{onClick:E,children:[e.jsx(er,{className:"h-4 w-4 mr-2"}),D("detail.duplicate")]}),e.jsxs(ss,{onClick:I,children:[e.jsx(Lt,{className:"h-4 w-4 mr-2"}),D("detail.export")]}),e.jsxs(ss,{onClick:O,children:[e.jsx(Rn,{className:"h-4 w-4 mr-2"}),D("detail.viewHistory")]}),t.showDelete&&e.jsxs(e.Fragment,{children:[e.jsx(cn,{}),e.jsxs(ss,{onClick:y,className:"text-destructive focus:text-destructive",children:[e.jsx(jt,{className:"h-4 w-4 mr-2"}),D("detail.delete")]})]})]})]})]})]}),t.header&&e.jsx("div",{children:e.jsx(_e,{schema:t.header,data:o})}),t.sections&&t.sections.length>0&&e.jsx("div",{className:"space-y-3 sm:space-y-4",children:t.sections.map((j,k)=>e.jsx(As,{section:j,data:{...o,...p},objectSchema:x,isEditing:g,onFieldChange:L},k))}),t.fields&&t.fields.length>0&&!t.sections?.length&&e.jsx(As,{section:{fields:t.fields,columns:t.columns},data:{...o,...p},objectSchema:x,isEditing:g,onFieldChange:L}),t.tabs&&t.tabs.length>0&&e.jsx(xl,{tabs:t.tabs,data:o}),t.related&&t.related.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-xl font-semibold",children:D("detail.related")}),t.related.map((j,k)=>e.jsx(hr,{title:j.title,type:j.type,api:j.api,data:j.data,columns:j.columns,dataSource:s},k))]}),t.comments&&e.jsx(bl,{comments:t.comments,onAddComment:t.onAddComment}),t.activities&&t.activities.length>0&&e.jsx(wl,{activities:t.activities}),t.footer&&e.jsx("div",{children:e.jsx(_e,{schema:t.footer,data:o})})]})})},Nl=({change:t,className:s})=>{const a=t.fieldLabel??t.field.charAt(0).toUpperCase()+t.field.slice(1).replace(/_/g," "),r=t.oldDisplayValue??(t.oldValue!=null?String(t.oldValue):"(empty)"),l=t.newDisplayValue??(t.newValue!=null?String(t.newValue):"(empty)");return e.jsxs("div",{className:$("flex items-center gap-1.5 text-sm flex-wrap",s),children:[e.jsx("span",{className:"font-medium text-foreground",children:a}),e.jsx("span",{className:"text-muted-foreground line-through",children:r}),e.jsx(Fn,{className:"h-3 w-3 text-muted-foreground shrink-0"}),e.jsx("span",{className:"text-foreground",children:l})]})},Cl=["👍","❤️","🎉","😂","😮","😢"],ca=({reactions:t,onToggleReaction:s,emojiOptions:a=Cl,className:r})=>{const[l,d]=m.useState(!1),c=m.useCallback(i=>{s?.(i),d(!1)},[s]);return e.jsxs("div",{className:$("flex items-center gap-1 flex-wrap",r),children:[t.map(i=>e.jsxs("button",{type:"button",className:$("inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs border transition-colors",i.reacted?"bg-primary/10 border-primary/30 text-primary":"bg-muted border-border text-muted-foreground hover:bg-muted/80"),onClick:()=>c(i.emoji),disabled:!s,"aria-label":`${i.emoji} ${i.count} reaction${i.count!==1?"s":""}`,children:[e.jsx("span",{children:i.emoji}),e.jsx("span",{children:i.count})]},i.emoji)),s&&e.jsxs("div",{className:"relative",children:[e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>d(!l),"aria-label":"Add reaction",children:e.jsx(On,{className:"h-3.5 w-3.5"})}),l&&e.jsx("div",{className:"absolute bottom-full mb-1 left-0 bg-popover border rounded-md shadow-md z-50 p-1.5 flex gap-1",role:"listbox","aria-label":"Emoji picker",children:a.map(i=>e.jsx("button",{type:"button",className:"hover:bg-accent rounded p-1 text-base transition-colors",onClick:()=>c(i),role:"option","aria-selected":t.some(o=>o.emoji===i&&o.reacted),children:i},i))})]})]})};function Sl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}const kl=({parentItem:t,replies:s,onAddReply:a,showReplyInput:r=!0,className:l})=>{const[d,c]=m.useState(!1),[i,o]=m.useState(""),[u,h]=m.useState(!1),n=m.useCallback(async()=>{const w=i.trim();if(!(!w||!a)){h(!0);try{await a(t.id,w),o("")}finally{h(!1)}}},[i,a,t.id]),N=m.useCallback(w=>{w.key==="Enter"&&(w.ctrlKey||w.metaKey)&&(w.preventDefault(),n())},[n]);return s.length===0&&!r?null:e.jsxs("div",{className:$("ml-10 mt-1",l),children:[s.length>0&&e.jsxs("button",{type:"button",className:"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors mb-1",onClick:()=>c(!d),"aria-expanded":d,children:[d?e.jsx(It,{className:"h-3 w-3"}):e.jsx(ps,{className:"h-3 w-3"}),e.jsx(wt,{className:"h-3 w-3"}),e.jsxs("span",{children:[s.length," ",s.length===1?"reply":"replies"]})]}),d&&e.jsx("div",{className:"space-y-2 border-l-2 border-border pl-3",children:s.map(w=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"shrink-0",children:w.actorAvatarUrl?e.jsx("img",{src:w.actorAvatarUrl,alt:w.actor,className:"h-6 w-6 rounded-full object-cover"}):e.jsx("div",{className:"h-6 w-6 rounded-full bg-muted flex items-center justify-center text-[10px] font-medium text-muted-foreground",children:w.actor.charAt(0).toUpperCase()})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs font-medium",children:w.actor}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:Sl(w.createdAt)})]}),e.jsx("p",{className:"text-xs whitespace-pre-wrap break-words",children:w.body})]})]},w.id))}),r&&a&&e.jsxs("div",{className:"flex gap-1.5 mt-1.5",children:[e.jsx("input",{className:"flex-1 rounded-md border border-input bg-background px-2 py-1 text-xs placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Reply…",value:i,onChange:w=>o(w.target.value),onKeyDown:N,disabled:u}),e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0",onClick:n,disabled:!i.trim()||u,"aria-label":"Send reply",children:e.jsx(tr,{className:"h-3 w-3"})})]})]})},Dl=({subscription:t,onToggle:s,className:a})=>{const[r,l]=m.useState(!1),d=m.useCallback(async()=>{if(s){l(!0);try{await s(!t.subscribed)}finally{l(!1)}}},[s,t.subscribed]);return e.jsx(B,{variant:"ghost",size:"icon",className:$("h-8 w-8",a),onClick:d,disabled:r||!s,"aria-label":t.subscribed?"Unsubscribe from notifications":"Subscribe to notifications",title:t.subscribed?"Subscribed — click to unsubscribe":"Subscribe to notifications",children:t.subscribed?e.jsx(Tn,{className:"h-4 w-4 text-primary"}):e.jsx(Pn,{className:"h-4 w-4 text-muted-foreground"})})},Rl={comment:wt,field_change:Pt,task:An,event:fs,system:ar,email:sr,call:En},Fl={comment:"bg-purple-100 text-purple-600",field_change:"bg-blue-100 text-blue-600",task:"bg-green-100 text-green-600",event:"bg-amber-100 text-amber-600",system:"bg-gray-100 text-gray-600",email:"bg-indigo-100 text-indigo-600",call:"bg-teal-100 text-teal-600"},Ol=[{value:"all",label:"All Activity"},{value:"comments_only",label:"Comments Only"},{value:"changes_only",label:"Field Changes"},{value:"tasks_only",label:"Tasks Only"}];function Tl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}function Pl(t,s){switch(s){case"comments_only":return t.filter(a=>a.type==="comment");case"changes_only":return t.filter(a=>a.type==="field_change");case"tasks_only":return t.filter(a=>a.type==="task");default:return t}}const da=({items:t,config:s,filterMode:a,onFilterChange:r,hasMore:l=!1,onLoadMore:d,loading:c=!1,onAddComment:i,onAddReply:o,onToggleReaction:u,subscription:h,onToggleSubscription:n,collapseWhenEmpty:N=!1,className:w})=>{const[g,b]=m.useState("all"),[p,f]=m.useState(""),[x,C]=m.useState(!1),[D,R]=m.useState(!1),F=a??g,y=s?.showFilterToggle!==!1,S=s?.showCommentInput!==!1&&!!i,E=s?.enableReactions??!1,I=s?.enableThreading??!1,O=s?.showSubscriptionToggle??!1,A=m.useMemo(()=>Pl(t,F),[t,F]),M=m.useMemo(()=>I?A.filter(_=>!_.parentId):A,[A,I]),L=m.useMemo(()=>{if(!I)return new Map;const _=new Map;for(const U of A)if(U.parentId){const ne=_.get(U.parentId)??[];ne.push(U),_.set(U.parentId,ne)}return _},[A,I]),j=m.useCallback(_=>{r?r(_):b(_)},[r]),k=m.useCallback(async()=>{const _=p.trim();if(!(!_||!i)){C(!0);try{await i(_),f("")}finally{C(!1)}}},[p,i]),T=m.useCallback(_=>{_.key==="Enter"&&(_.ctrlKey||_.metaKey)&&(_.preventDefault(),k())},[k]),H=m.useCallback(async()=>{if(d){R(!0);try{await d()}finally{R(!1)}}},[d]);return e.jsxs(Fe,{className:$("",w),children:[e.jsx(Ie,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs($e,{className:"flex items-center gap-2 text-base",children:[e.jsx(Vs,{className:"h-4 w-4"}),"Activity",e.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["(",A.length,")"]})]}),e.jsx("div",{className:"flex items-center gap-1",children:O&&h&&e.jsx(Dl,{subscription:h,onToggle:n})})]})}),e.jsxs(Oe,{className:"space-y-4",children:[y&&e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("select",{className:"rounded-md border border-input bg-background px-2.5 py-1.5 text-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",value:F,onChange:_=>j(_.target.value),"aria-label":"Filter activity",children:Ol.map(_=>e.jsx("option",{value:_.value,children:_.label},_.value))})}),S&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("textarea",{className:"flex-1 min-h-[60px] rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none",placeholder:"Leave a comment… (Ctrl+Enter to submit)",value:p,onChange:_=>f(_.target.value),onKeyDown:T,disabled:x}),e.jsx(B,{size:"icon",variant:"default",onClick:k,disabled:!p.trim()||x,className:"shrink-0 self-end","aria-label":"Submit comment",children:e.jsx(wt,{className:"h-4 w-4"})})]}),A.length===0?N?null:e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"No activity recorded"}):e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-4 top-2 bottom-2 w-px bg-border"}),e.jsx("div",{className:"space-y-4",children:M.map(_=>{const U=Rl[_.type]||ar,ne=Fl[_.type]||"bg-gray-100 text-gray-600",we=L.get(_.id)??[];return e.jsxs("div",{children:[e.jsxs("div",{className:"flex gap-3 relative",children:[e.jsx("div",{className:$("shrink-0 h-8 w-8 rounded-full flex items-center justify-center z-10",ne),children:_.actorAvatarUrl?e.jsx("img",{src:_.actorAvatarUrl,alt:_.actor,className:"h-8 w-8 rounded-full object-cover"}):e.jsx(U,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"flex-1 min-w-0 pt-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("span",{className:"text-sm font-medium",children:_.actor}),_.source&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:["via ",_.source]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:Tl(_.createdAt)}),_.edited&&e.jsx("span",{className:"text-xs text-muted-foreground italic",children:"(edited)"}),_.pinned&&e.jsx("span",{className:"text-xs text-amber-600",children:"📌 Pinned"})]}),_.body&&e.jsx("p",{className:"text-sm whitespace-pre-wrap break-words text-muted-foreground",children:_.body}),_.type==="field_change"&&_.fieldChanges&&e.jsx("div",{className:"space-y-1 mt-1",children:_.fieldChanges.map((ue,le)=>e.jsx(Nl,{change:ue},le))}),E&&_.reactions&&_.reactions.length>0&&e.jsx("div",{className:"mt-1.5",children:e.jsx(ca,{reactions:_.reactions,onToggleReaction:u?ue=>u(_.id,ue):void 0})}),E&&(!_.reactions||_.reactions.length===0)&&u&&e.jsx("div",{className:"mt-1.5",children:e.jsx(ca,{reactions:[],onToggleReaction:ue=>u(_.id,ue)})})]})]}),I&&(_.replyCount??0)>0&&e.jsx(kl,{parentItem:_,replies:we,onAddReply:o,showReplyInput:!!o})]},_.id)})})]}),l&&e.jsx("div",{className:"text-center pt-2",children:e.jsxs(B,{variant:"ghost",size:"sm",onClick:H,disabled:D,"aria-label":"Load more activity",children:[D?e.jsx(zn,{className:"h-4 w-4 animate-spin mr-1"}):e.jsx(It,{className:"h-4 w-4 mr-1"}),"Load more"]})})]})]})},So=({config:t,items:s,hasMore:a,onLoadMore:r,loading:l,onAddComment:d,onAddReply:c,onToggleReaction:i,subscription:o,onToggleSubscription:u,filterMode:h,onFilterChange:n,className:N})=>{const w=t?.position??"right",g=t?.width??"360px",b=t?.collapsible??!0,p=t?.defaultCollapsed??!1,[f,x]=m.useState(p);return w==="right"||w==="left"?f&&b?e.jsx("div",{className:$("flex items-start pt-4",w==="right"?"border-l":"border-r",N),children:e.jsx(B,{variant:"ghost",size:"icon",className:"h-8 w-8 mx-1",onClick:()=>x(!1),"aria-label":"Open discussion panel",children:e.jsx(Mn,{className:"h-4 w-4"})})}):e.jsxs("div",{className:$("flex flex-col overflow-hidden",w==="right"?"border-l":"border-r",N),style:{width:g,minWidth:g},children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(wt,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm font-medium",children:"Discussion"})]}),b&&e.jsx(B,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>x(!0),"aria-label":"Close discussion panel",children:e.jsx(Zt,{className:"h-3.5 w-3.5"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto",children:e.jsx(da,{items:s,config:t?.feed,hasMore:a,onLoadMore:r,loading:l,onAddComment:d,onAddReply:c,onToggleReaction:i,subscription:o,onToggleSubscription:u,filterMode:h,onFilterChange:n,className:"border-0 shadow-none"})})]}):e.jsx("div",{className:$("",N),children:b&&f?e.jsxs(B,{variant:"ghost",className:"w-full justify-start gap-2 text-muted-foreground",onClick:()=>x(!1),"aria-label":"Show discussion",children:[e.jsx(wt,{className:"h-4 w-4"}),e.jsxs("span",{children:["Show Discussion (",s.length,")"]})]}):e.jsxs("div",{children:[b&&e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(wt,{className:"h-4 w-4"}),"Discussion"]}),e.jsx(B,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>x(!0),"aria-label":"Hide discussion",children:e.jsx(Ln,{className:"h-3.5 w-3.5"})})]}),e.jsx(da,{items:s,config:t?.feed,hasMore:a,onLoadMore:r,loading:l,onAddComment:d,onAddReply:c,onToggleReaction:i,subscription:o,onToggleSubscription:u,filterMode:h,onFilterChange:n})]})})};je.register("detail-view",xr,{namespace:"plugin-detail",label:"Detail View",category:"Views",icon:"FileText",inputs:[{name:"title",type:"string",label:"Title"},{name:"objectName",type:"string",label:"Object Name"},{name:"resourceId",type:"string",label:"Resource ID"},{name:"api",type:"string",label:"API Endpoint"},{name:"data",type:"object",label:"Data"},{name:"layout",type:"enum",label:"Layout Mode",enum:["vertical","horizontal","grid"]},{name:"columns",type:"number",label:"Grid Columns"},{name:"sections",type:"array",label:"Sections"},{name:"fields",type:"array",label:"Fields"},{name:"tabs",type:"array",label:"Tabs"},{name:"related",type:"array",label:"Related Lists"},{name:"actions",type:"array",label:"Actions"},{name:"showBack",type:"boolean",label:"Show Back Button",defaultValue:!0},{name:"backUrl",type:"string",label:"Back URL"},{name:"showEdit",type:"boolean",label:"Show Edit Button",defaultValue:!1},{name:"editUrl",type:"string",label:"Edit URL"},{name:"showDelete",type:"boolean",label:"Show Delete Button",defaultValue:!1},{name:"deleteConfirmation",type:"string",label:"Delete Confirmation Message"},{name:"loading",type:"boolean",label:"Show Loading State"},{name:"header",type:"object",label:"Custom Header"},{name:"footer",type:"object",label:"Custom Footer"}],defaultProps:{title:"Detail View",showBack:!0,showEdit:!1,showDelete:!1,sections:[],fields:[],tabs:[],related:[]}});je.register("detail-section",As,{namespace:"plugin-detail",label:"Detail Section",category:"Detail Components",inputs:[{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"fields",type:"array",label:"Fields",required:!0},{name:"collapsible",type:"boolean",label:"Collapsible",defaultValue:!1},{name:"defaultCollapsed",type:"boolean",label:"Default Collapsed",defaultValue:!1},{name:"columns",type:"number",label:"Columns",defaultValue:2},{name:"showBorder",type:"boolean",label:"Show Border",defaultValue:!0},{name:"headerColor",type:"string",label:"Header Color"}]});je.register("related-list",hr,{namespace:"plugin-detail",label:"Related List",category:"Detail Components",inputs:[{name:"title",type:"string",label:"Title",required:!0},{name:"type",type:"enum",label:"Type",enum:[{label:"List",value:"list"},{label:"Grid",value:"grid"},{label:"Table",value:"table"}],defaultValue:"table"},{name:"api",type:"string",label:"API Endpoint"},{name:"data",type:"array",label:"Data"},{name:"columns",type:"array",label:"Columns"}]});je.register("detail",xr,{namespace:"view",category:"view",label:"Detail",icon:"FileText",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"recordId",type:"string",label:"Record ID"},{name:"fields",type:"array",label:"Fields"}]});function _t(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.provider==="object"}function as(t){if(t!=null)return typeof t=="string"?t:t.defaultValue||t.key}const Ss=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],El=m.forwardRef(({schema:t,className:s,dataSource:a,onRefresh:r,recordCount:l,userActions:d,designMode:c,selectedWidgetId:i,onWidgetClick:o,...u},h)=>{const n=t.columns||4,N=t.gap||4,[w,g]=m.useState(!1),[b,p]=m.useState(!1),f=m.useRef(null);m.useEffect(()=>{const O=()=>p(window.innerWidth<768);return O(),window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[]);const x=m.useCallback(()=>{r&&(g(!0),r(),setTimeout(()=>g(!1),600))},[r]);m.useEffect(()=>{if(!(!t.refreshInterval||t.refreshInterval<=0||!r))return f.current=setInterval(x,t.refreshInterval*1e3),()=>{f.current&&clearInterval(f.current)}},[t.refreshInterval,r,x]);const C=m.useCallback((O,A)=>{!c||!o||!A||(O.stopPropagation(),o(A))},[c,o]),D=m.useCallback((O,A,M)=>{if(!c||!o)return;const L=t.widgets||[];if(O.key==="Enter"||O.key===" ")O.preventDefault(),o(A??null);else if(O.key==="ArrowRight"||O.key==="ArrowDown"){O.preventDefault();const j=M+1<L.length?L[M+1]:null;j?.id&&o(j.id)}else if(O.key==="ArrowLeft"||O.key==="ArrowUp"){O.preventDefault();const j=M-1>=0?L[M-1]:null;j?.id&&o(j.id)}else O.key==="Escape"&&(O.preventDefault(),o(null))},[c,o,t.widgets]),R=m.useCallback(O=>{!c||!o||O.target===O.currentTarget&&o(null)},[c,o]),F=(O,A,M)=>{const L=O.layout?{...O.layout,w:Math.min(O.layout.w,n)}:void 0,k=(()=>{if(O.component)return O.component;const le=O.type,de=O.options||{};if(le==="bar"||le==="line"||le==="area"||le==="pie"||le==="donut"||le==="scatter"){const W=O.data||de.data,se=O.categoryField||de.xField||"name",fe=O.valueField||de.yField||"value";if(_t(W)){const re=W.aggregate,q=re?{field:O.valueField||re.field,function:O.aggregate||re.function,groupBy:O.categoryField||re.groupBy}:void 0,me=q?.field||fe;return{type:"object-chart",chartType:le,objectName:O.object||W.object,aggregate:q,xAxisKey:se,series:[{dataKey:me}],colors:Ss,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}if(!W&&O.object){const re=O.aggregate?{field:O.valueField||"value",function:O.aggregate,groupBy:O.categoryField||"name"}:void 0;return{type:"object-chart",chartType:le,objectName:O.object,aggregate:re,xAxisKey:se,series:[{dataKey:O.valueField||"value"}],colors:Ss,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}const ae=Array.isArray(W)?W:W?.items||[];return{type:"chart",chartType:le,data:ae,xAxisKey:se,series:[{dataKey:fe}],colors:Ss,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}if(le==="table"){const W=O.data||de.data;if(_t(W)){const{data:se,...fe}=de;return{type:"object-data-table",...fe,objectName:O.object||W.object,dataProvider:W,filter:W.filter||O.filter,searchable:O.searchable??!1,pagination:O.pagination??!1,className:"border-0"}}return!W&&O.object?{type:"object-data-table",...de,objectName:O.object,filter:O.filter,searchable:O.searchable??!1,pagination:O.pagination??!1,className:"border-0"}:{type:"data-table",...de,data:W?.items||[],searchable:!1,pagination:!1,className:"border-0"}}if(le==="pivot"){const W=O.data||de.data;if(_t(W)){const{data:se,...fe}=de;return{type:"object-pivot",...fe,objectName:O.object||W.object,dataProvider:W,filter:W.filter||O.filter}}return!W&&O.object?{type:"object-pivot",...de,objectName:O.object,filter:O.filter}:{type:"pivot",...de,data:Array.isArray(W)?W:W?.items||[]}}return{...O,...de}})(),T=O.type==="metric",H=as(O.title),_=as(O.description),U=O.id||H||`widget-${A}`,ne=c&&i===O.id,we=c?{"data-testid":`dashboard-preview-widget-${O.id}`,"data-widget-id":O.id,role:"button",tabIndex:0,"aria-selected":ne,"aria-label":`Widget: ${H||`Widget ${A+1}`}`,onClick:le=>C(le,O.id),onKeyDown:le=>D(le,O.id,A)}:{},ue=c?$("cursor-pointer rounded-lg transition-all outline-none","focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",ne?"ring-2 ring-primary shadow-md bg-primary/5 dark:bg-primary/10":"hover:ring-2 hover:ring-primary/40 hover:shadow-sm"):void 0;return T?e.jsxs("div",{className:$("h-full w-full",c&&"relative",ue),style:!b&&L?{gridColumn:`span ${L.w}`,gridRow:`span ${L.h}`}:void 0,...we,children:[e.jsx(_e,{schema:k,className:$("h-full w-full",c&&"pointer-events-none")}),c&&e.jsx("div",{className:"absolute inset-0 z-10","aria-hidden":"true","data-testid":"widget-click-overlay"})]},U):e.jsxs(Fe,{className:$("overflow-hidden border-border/50 shadow-sm transition-all hover:shadow-md","bg-card/50 backdrop-blur-sm",M&&"w-full",c&&"relative",ue),style:!b&&L?{gridColumn:`span ${L.w}`,gridRow:`span ${L.h}`}:void 0,...we,children:[H&&e.jsxs(Ie,{className:"pb-2 border-b border-border/40 bg-muted/20 px-3 sm:px-6",children:[e.jsx($e,{className:"text-sm sm:text-base font-medium tracking-tight truncate",title:H,children:H}),_&&e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:_})]}),e.jsx(Oe,{className:"p-0",children:e.jsx("div",{className:$("h-full w-full","p-3 sm:p-4 md:p-6",c&&"pointer-events-none"),children:e.jsx(_e,{schema:k})})}),c&&e.jsx("div",{className:"absolute inset-0 z-10","aria-hidden":"true","data-testid":"widget-click-overlay"})]},U)},y=t.header&&e.jsxs("div",{className:"col-span-full mb-4",children:[t.header.showTitle!==!1&&t.title&&e.jsx("h2",{className:"text-lg font-semibold tracking-tight",children:as(t.title)}),t.header.showDescription!==!1&&t.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:as(t.description)}),t.header.actions&&t.header.actions.length>0&&e.jsx("div",{className:"flex gap-2 mt-3",children:t.header.actions.map((O,A)=>e.jsx(B,{variant:"outline",size:"sm",children:O.label},A))})]}),S=l!==void 0&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[l.toLocaleString()," records"]}),E=d?JSON.stringify(d):void 0,I=r&&e.jsxs("div",{className:$("flex items-center justify-end gap-3 mb-2",!b&&"col-span-full"),children:[S,e.jsxs(B,{variant:"outline",size:"sm",onClick:x,disabled:w,"aria-label":"Refresh dashboard",children:[e.jsx(Hs,{className:$("h-4 w-4 mr-2",w&&"animate-spin")}),w?"Refreshing…":"Refresh All"]})]});if(b){const O=t.widgets?.filter(M=>M.type==="metric")||[],A=t.widgets?.filter(M=>M.type!=="metric")||[];return e.jsxs("div",{ref:h,className:$("flex flex-col gap-4 px-4",s),"data-user-actions":E,onClick:R,...u,children:[y,I,O.length>0&&e.jsx("div",{className:"grid grid-cols-2 gap-3",onClick:R,children:O.map((M,L)=>F(M,L))}),A.length>0&&e.jsx("div",{className:"flex flex-col gap-4",onClick:R,children:A.map((M,L)=>F(M,L,!0))})]})}return e.jsxs("div",{ref:h,className:$("grid auto-rows-min","grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",s),style:{...n>4&&{gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`},gap:`${N*.25}rem`},"data-user-actions":E,onClick:R,...u,children:[y,I,t.widgets?.map((O,A)=>F(O,A))]})});function Bt(t){const{margin:s,containerPadding:a,containerWidth:r,cols:l}=t;return(r-s[0]*(l-1)-a[0]*2)/l}function $t(t,s,a){return Number.isFinite(t)?Math.round(s*t+Math.max(0,t-1)*a):t}function Ht(t,s,a,r,l,d,c){const{margin:i,containerPadding:o,rowHeight:u}=t,h=Bt(t);let n,N,w,g;if(c?(n=Math.round(c.width),N=Math.round(c.height)):(n=$t(r,h,i[0]),N=$t(l,u,i[1])),d?(w=Math.round(d.top),g=Math.round(d.left)):c?(w=Math.round(c.top),g=Math.round(c.left)):(w=Math.round((u+i[1])*a+o[1]),g=Math.round((h+i[0])*s+o[0])),!d&&!c){if(Number.isFinite(r)){const p=Math.round((h+i[0])*(s+r)+o[0])-g-n;p!==i[0]&&(n+=p-i[0])}if(Number.isFinite(l)){const p=Math.round((u+i[1])*(a+l)+o[1])-w-N;p!==i[1]&&(N+=p-i[1])}}return{top:w,left:g,width:n,height:N}}function Al(t,s,a,r,l){const{margin:d,containerPadding:c,cols:i,rowHeight:o,maxRows:u}=t,h=Bt(t);let n=Math.round((a-c[0])/(h+d[0])),N=Math.round((s-c[1])/(o+d[1]));return n=ds(n,0,i-r),N=ds(N,0,u-l),{x:n,y:N}}function rs(t,s,a){const{margin:r,containerPadding:l,rowHeight:d}=t,c=Bt(t),i=Math.round((a-l[0])/(c+r[0])),o=Math.round((s-l[1])/(d+r[1]));return{x:i,y:o}}function zl(t,s,a){const{margin:r,rowHeight:l}=t,d=Bt(t),c=Math.max(1,Math.round((s+r[0])/(d+r[0]))),i=Math.max(1,Math.round((a+r[1])/(l+r[1])));return{w:c,h:i}}function ds(t,s,a){return Math.max(Math.min(t,a),s)}function Ws(t,s){return!(t.i===s.i||t.x+t.w<=s.x||t.x>=s.x+s.w||t.y+t.h<=s.y||t.y>=s.y+s.h)}function Tt(t,s){for(let a=0;a<t.length;a++){const r=t[a];if(r!==void 0&&Ws(r,s))return r}}function gr(t,s){return t.filter(a=>Ws(a,s))}function Ml(t,s){return s==="horizontal"?br(t):s==="vertical"||s==="wrap"?zs(t):[...t]}function zs(t){return[...t].sort((s,a)=>s.y!==a.y?s.y-a.y:s.x-a.x)}function br(t){return[...t].sort((s,a)=>s.x!==a.x?s.x-a.x:s.y-a.y)}function hs(t){let s=0;for(let a=0;a<t.length;a++){const r=t[a];if(r!==void 0){const l=r.y+r.h;l>s&&(s=l)}}return s}function Rt(t,s){for(let a=0;a<t.length;a++){const r=t[a];if(r!==void 0&&r.i===s)return r}}function xs(t){return t.filter(s=>s.static===!0)}function Et(t){return{i:t.i,x:t.x,y:t.y,w:t.w,h:t.h,minW:t.minW,maxW:t.maxW,minH:t.minH,maxH:t.maxH,moved:!!t.moved,static:!!t.static,isDraggable:t.isDraggable,isResizable:t.isResizable,resizeHandles:t.resizeHandles,constraints:t.constraints,isBounded:t.isBounded}}function Nt(t){const s=new Array(t.length);for(let a=0;a<t.length;a++){const r=t[a];r!==void 0&&(s[a]=Et(r))}return s}function Ll(t,s){const a=new Array(t.length);for(let r=0;r<t.length;r++){const l=t[r];l!==void 0&&(s.i===l.i?a[r]=s:a[r]=l)}return a}function _l(t,s,a){let r=Rt(t,s);return r?(r=a(Et(r)),[Ll(t,r),r]):[[...t],null]}function Gs(t,s){const a=xs(t);for(let r=0;r<t.length;r++){const l=t[r];if(l!==void 0)if(l.x+l.w>s.cols&&(l.x=s.cols-l.w),l.x<0&&(l.x=0,l.w=s.cols),!l.static)a.push(l);else for(;Tt(a,l);)l.y++}return t}function Ot(t,s,a,r,l,d,c,i,o){if(s.static&&s.isDraggable!==!0)return[...t];if(s.y===r&&s.x===a)return[...t];const u=s.x,h=s.y;typeof a=="number"&&(s.x=a),typeof r=="number"&&(s.y=r),s.moved=!0;let n=Ml(t,c);(c==="vertical"&&typeof r=="number"?h>=r:c==="horizontal"&&typeof a=="number"?u>=a:!1)&&(n=n.reverse());const w=gr(n,s),g=w.length>0;if(g&&o)return Nt(t);if(g&&d)return s.x=u,s.y=h,s.moved=!1,t;let b=[...t];for(let p=0;p<w.length;p++){const f=w[p];f!==void 0&&(f.moved||(f.static?b=ua(b,f,s,l,c):b=ua(b,s,f,l,c)))}return b}function ua(t,s,a,r,l,d){const c=l==="horizontal",i=l==="vertical",o=s.static;if(r){r=!1;const n={x:c?Math.max(s.x-a.w,0):a.x,y:i?Math.max(s.y-a.h,0):a.y,w:a.w,h:a.h,i:"-1"},N=Tt(t,n),w=N!==void 0&&N.y+N.h>s.y,g=N!==void 0&&s.x+s.w>N.x;if(!N)return Ot(t,a,c?n.x:void 0,i?n.y:void 0,r,o,l);if(w&&i)return Ot(t,a,void 0,a.y+1,r,o,l);if(w&&l===null)return s.y=a.y,a.y=a.y+a.h,[...t];if(g&&c)return Ot(t,s,a.x,void 0,r,o,l)}const u=c?a.x+1:void 0,h=i?a.y+1:void 0;return u===void 0&&h===void 0?[...t]:Ot(t,a,u,h,r,o,l)}function Mt(t,s,a){return Math.max(s,Math.min(a,t))}var Il={name:"gridBounds",constrainPosition(t,s,a,{cols:r,maxRows:l}){return{x:Mt(s,0,Math.max(0,r-t.w)),y:Mt(a,0,Math.max(0,l-t.h))}},constrainSize(t,s,a,r,{cols:l,maxRows:d}){const c=r==="w"||r==="nw"||r==="sw"?t.x+t.w:l-t.x,i=r==="n"||r==="nw"||r==="ne"?t.y+t.h:d-t.y;return{w:Mt(s,1,Math.max(1,c)),h:Mt(a,1,Math.max(1,i))}}},$l={name:"minMaxSize",constrainSize(t,s,a){return{w:Mt(s,t.minW??1,t.maxW??1/0),h:Mt(a,t.minH??1,t.maxH??1/0)}}},yr=[Il,$l];function ns(t,s,a,r,l){let d={x:a,y:r};for(const c of t)c.constrainPosition&&(d=c.constrainPosition(s,d.x,d.y,l));if(s.constraints)for(const c of s.constraints)c.constrainPosition&&(d=c.constrainPosition(s,d.x,d.y,l));return d}function Bl(t,s,a,r,l,d){let c={w:a,h:r};for(const i of t)i.constrainSize&&(c=i.constrainSize(s,c.w,c.h,l,d));if(s.constraints)for(const i of s.constraints)i.constrainSize&&(c=i.constrainSize(s,c.w,c.h,l,d));return c}function vr({top:t,left:s,width:a,height:r}){const l=`translate(${s}px,${t}px)`;return{transform:l,WebkitTransform:l,MozTransform:l,msTransform:l,OTransform:l,width:`${a}px`,height:`${r}px`,position:"absolute"}}function Vl({top:t,left:s,width:a,height:r}){return{top:`${t}px`,left:`${s}px`,width:`${a}px`,height:`${r}px`,position:"absolute"}}function fa(t){return t*100+"%"}function Hl(t,s,a,r){return t+a>r?s:a}function jr(t,s,a){return t<0?s:a}function ql(t){return Math.max(0,t)}function us(t){return Math.max(0,t)}var Us=(t,s,a)=>{const{left:r,height:l,width:d}=s,c=t.top-(l-t.height);return{left:r,width:d,height:jr(c,t.height,l),top:us(c)}},Ys=(t,s,a)=>{const{top:r,left:l,height:d,width:c}=s;return{top:r,height:d,width:Hl(t.left,t.width,c,a),left:ql(l)}},Xs=(t,s,a)=>{const{top:r,height:l,width:d}=s,c=t.left+t.width-d;return c<0?{height:l,width:t.left+t.width,top:us(r),left:0}:{height:l,width:d,top:us(r),left:c}},Ks=(t,s,a)=>{const{top:r,left:l,height:d,width:c}=s;return{width:c,left:l,height:jr(r,t.height,d),top:us(r)}},Wl=(t,s,a)=>Us(t,Ys(t,s,a)),Gl=(t,s,a)=>Us(t,Xs(t,s)),Ul=(t,s,a)=>Ks(t,Ys(t,s,a)),Yl=(t,s,a)=>Ks(t,Xs(t,s)),Xl={n:Us,ne:Wl,e:Ys,se:Ul,s:Ks,sw:Yl,w:Xs,nw:Gl};function Kl(t,s,a,r){const l=Xl[t];return l?l(s,{...s,...a},r):a}var Jl={type:"transform",scale:1,calcStyle(t){return vr(t)}},Ql=Jl,Zl={cols:12,rowHeight:150,margin:[10,10],containerPadding:null,maxRows:1/0},ei={enabled:!0,bounded:!1,threshold:3},ti={enabled:!0,handles:["se"]},si={enabled:!1,defaultItem:{w:1,h:1}};function Js(t,s,a,r,l){const d=r==="x"?"w":"h";s[r]+=1;const c=t.findIndex(o=>o.i===s.i),i=l??xs(t).length>0;for(let o=c+1;o<t.length;o++){const u=t[o];if(u!==void 0&&!u.static){if(!i&&u.y>s.y+s.h)break;Ws(s,u)&&Js(t,u,a+s[d],r,i)}}s[r]=a}function ai(t,s,a,r){for(s.x=Math.max(s.x,0),s.y=Math.max(s.y,0),s.y=Math.min(r,s.y);s.y>0&&!Tt(t,s);)s.y--;let l;for(;(l=Tt(t,s))!==void 0;)Js(a,s,l.y+l.h,"y");return s.y=Math.max(s.y,0),s}function ri(t,s,a,r){for(s.x=Math.max(s.x,0),s.y=Math.max(s.y,0);s.x>0&&!Tt(t,s);)s.x--;let l;for(;(l=Tt(t,s))!==void 0;)if(Js(r,s,l.x+l.w,"x"),s.x+s.w>a)for(s.x=a-s.w,s.y++;s.x>0&&!Tt(t,s);)s.x--;return s.x=Math.max(s.x,0),s}var wr={type:"vertical",allowOverlap:!1,compact(t,s){const a=xs(t);let r=hs(a);const l=zs(t),d=new Array(t.length);for(let c=0;c<l.length;c++){const i=l[c];if(i===void 0)continue;let o=Et(i);o.static||(o=ai(a,o,l,r),r=Math.max(r,o.y+o.h),a.push(o));const u=t.indexOf(i);d[u]=o,o.moved=!1}return d}},Nr={type:"horizontal",allowOverlap:!1,compact(t,s){const a=xs(t),r=br(t),l=new Array(t.length);for(let d=0;d<r.length;d++){const c=r[d];if(c===void 0)continue;let i=Et(c);i.static||(i=ri(a,i,s,r),a.push(i));const o=t.indexOf(c);l[o]=i,i.moved=!1}return l}},Cr={type:null,allowOverlap:!1,compact(t,s){return Nt(t)}},ni={...wr,allowOverlap:!0,compact(t,s){return Nt(t)}},li={...Nr,allowOverlap:!0,compact(t,s){return Nt(t)}},ii={...Cr,allowOverlap:!0};function Qs(t,s=!1,a=!1){let r;return s?t==="vertical"?r=ni:t==="horizontal"?r=li:r=ii:t==="vertical"?r=wr:t==="horizontal"?r=Nr:r=Cr,a?{...r,preventCollision:a}:r}function Sr(t){return Object.keys(t).sort((a,r)=>t[a]-t[r])}function pa(t,s){const a=Sr(t);let r=a[0];if(r===void 0)throw new Error("No breakpoints defined");for(let l=1;l<a.length;l++){const d=a[l];if(d===void 0)continue;const c=t[d];s>c&&(r=d)}return r}function ma(t,s){const a=s[t];if(a===void 0)throw new Error(`ResponsiveReactGridLayout: \`cols\` entry for breakpoint ${String(t)} is missing!`);return a}function ks(t,s,a,r,l,d){const c=t[a];if(c)return Nt(c);let i=t[r];const o=Sr(s),u=o.slice(o.indexOf(a));for(let w=0;w<u.length;w++){const g=u[w];if(g===void 0)continue;const b=t[g];if(b){i=b;break}}const h=Nt(i||[]),n=Gs(h,{cols:l});return(typeof d=="object"&&d!==null?d:Qs(d)).compact(n,l)}function ls(t,s){if(Array.isArray(t))return t;const a=t,r=a[s];if(r!==void 0)return r;const l=Object.keys(a);for(const d of l){const c=a[d];if(c!==void 0)return c}return[10,10]}function kr(t){return function(a,r,l,d,c,i,o){return t(a,r,o)}}function gs(t){return function(a,r,l,d){if(!a||!r||typeof a!="object"||typeof r!="object")return t(a,r,l,d);var c=d.get(a),i=d.get(r);if(c&&i)return c===r&&i===a;d.set(a,r),d.set(r,a);var o=t(a,r,l,d);return d.delete(a),d.delete(r),o}}function Dr(t,s){var a={};for(var r in t)a[r]=t[r];for(var r in s)a[r]=s[r];return a}function ha(t){return t.constructor===Object||t.constructor==null}function xa(t){return typeof t.then=="function"}function bs(t,s){return t===s||t!==t&&s!==s}var oi="[object Arguments]",ci="[object Boolean]",di="[object Date]",ui="[object RegExp]",fi="[object Map]",pi="[object Number]",mi="[object Object]",hi="[object Set]",xi="[object String]",ga=Object.prototype.toString;function ys(t){var s=t.areArraysEqual,a=t.areDatesEqual,r=t.areMapsEqual,l=t.areObjectsEqual,d=t.areRegExpsEqual,c=t.areSetsEqual,i=t.createIsNestedEqual,o=i(u);function u(h,n,N){if(h===n)return!0;if(!h||!n||typeof h!="object"||typeof n!="object")return h!==h&&n!==n;if(ha(h)&&ha(n))return l(h,n,o,N);var w=Array.isArray(h),g=Array.isArray(n);if(w||g)return w===g&&s(h,n,o,N);var b=ga.call(h);return b!==ga.call(n)?!1:b===di?a(h,n,o,N):b===ui?d(h,n,o,N):b===fi?r(h,n,o,N):b===hi?c(h,n,o,N):b===mi||b===oi?xa(h)||xa(n)?!1:l(h,n,o,N):b===ci||b===pi||b===xi?bs(h.valueOf(),n.valueOf()):!1}return u}function Rr(t,s,a,r){var l=t.length;if(s.length!==l)return!1;for(;l-- >0;)if(!a(t[l],s[l],l,l,t,s,r))return!1;return!0}var gi=gs(Rr);function Fr(t,s){return bs(t.valueOf(),s.valueOf())}function Or(t,s,a,r){var l=t.size===s.size;if(!l)return!1;if(!t.size)return!0;var d={},c=0;return t.forEach(function(i,o){if(l){var u=!1,h=0;s.forEach(function(n,N){!u&&!d[h]&&(u=a(o,N,c,h,t,s,r)&&a(i,n,o,N,t,s,r))&&(d[h]=!0),h++}),c++,l=u}}),l}var bi=gs(Or),yi="_owner",vi=Object.prototype.hasOwnProperty;function Tr(t,s,a,r){var l=Object.keys(t),d=l.length;if(Object.keys(s).length!==d)return!1;for(var c;d-- >0;){if(c=l[d],c===yi){var i=!!t.$$typeof,o=!!s.$$typeof;if((i||o)&&i!==o)return!1}if(!vi.call(s,c)||!a(t[c],s[c],c,c,t,s,r))return!1}return!0}var ji=gs(Tr);function Pr(t,s){return t.source===s.source&&t.flags===s.flags}function Er(t,s,a,r){var l=t.size===s.size;if(!l)return!1;if(!t.size)return!0;var d={};return t.forEach(function(c,i){if(l){var o=!1,u=0;s.forEach(function(h,n){!o&&!d[u]&&(o=a(c,h,i,n,t,s,r))&&(d[u]=!0),u++}),l=o}}),l}var wi=gs(Er),Ar=Object.freeze({areArraysEqual:Rr,areDatesEqual:Fr,areMapsEqual:Or,areObjectsEqual:Tr,areRegExpsEqual:Pr,areSetsEqual:Er,createIsNestedEqual:kr}),zr=Object.freeze({areArraysEqual:gi,areDatesEqual:Fr,areMapsEqual:bi,areObjectsEqual:ji,areRegExpsEqual:Pr,areSetsEqual:wi,createIsNestedEqual:kr}),Ni=ys(Ar);function ht(t,s){return Ni(t,s,void 0)}ys(Dr(Ar,{createIsNestedEqual:function(){return bs}}));ys(zr);ys(Dr(zr,{createIsNestedEqual:function(){return bs}}));function Ci(t={}){const{measureBeforeMount:s=!1,initialWidth:a=1280}=t,[r,l]=m.useState(a),[d,c]=m.useState(!s),i=m.useRef(null),o=m.useRef(null),u=m.useCallback(()=>{const h=i.current;if(h){const n=h.offsetWidth;l(n),d||c(!0)}},[d]);return m.useEffect(()=>{const h=i.current;if(h)return u(),typeof ResizeObserver<"u"&&(o.current=new ResizeObserver(n=>{const N=n[0];if(N){const w=N.contentRect.width;l(w)}}),o.current.observe(h)),()=>{o.current&&(o.current.disconnect(),o.current=null)}},[u]),{width:r,mounted:d,containerRef:i,measureWidth:u}}var qt={exports:{}},Ds={},Ce={},yt={},ba;function vs(){if(ba)return yt;ba=1,Object.defineProperty(yt,"__esModule",{value:!0}),yt.dontSetMe=l,yt.findInArray=t,yt.int=r,yt.isFunction=s,yt.isNum=a;function t(d,c){for(let i=0,o=d.length;i<o;i++)if(c.apply(c,[d[i],i,d]))return d[i]}function s(d){return typeof d=="function"||Object.prototype.toString.call(d)==="[object Function]"}function a(d){return typeof d=="number"&&!isNaN(d)}function r(d){return parseInt(d,10)}function l(d,c,i){if(d[c])return new Error(`Invalid prop ${c} passed to ${i} - do not set this, set it on the child.`)}return yt}var vt={},ya;function Si(){if(ya)return vt;ya=1,Object.defineProperty(vt,"__esModule",{value:!0}),vt.browserPrefixToKey=a,vt.browserPrefixToStyle=r,vt.default=void 0,vt.getPrefix=s;const t=["Moz","Webkit","O","ms"];function s(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const c=window.document?.documentElement?.style;if(!c||d in c)return"";for(let i=0;i<t.length;i++)if(a(d,t[i])in c)return t[i];return""}function a(d,c){return c?`${c}${l(d)}`:d}function r(d,c){return c?`-${c.toLowerCase()}-${d}`:d}function l(d){let c="",i=!0;for(let o=0;o<d.length;o++)i?(c+=d[o].toUpperCase(),i=!1):d[o]==="-"?i=!0:c+=d[o];return c}return vt.default=s(),vt}var va;function Zs(){if(va)return Ce;va=1,Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.addClassName=R,Ce.addEvent=c,Ce.addUserSelectStyles=x,Ce.createCSSTransform=w,Ce.createSVGTransform=g,Ce.getTouch=p,Ce.getTouchIdentifier=f,Ce.getTranslation=b,Ce.innerHeight=h,Ce.innerWidth=n,Ce.matchesSelector=l,Ce.matchesSelectorAndParentsTo=d,Ce.offsetXYFromParent=N,Ce.outerHeight=o,Ce.outerWidth=u,Ce.removeClassName=F,Ce.removeEvent=i,Ce.scheduleRemoveUserSelectStyles=C;var t=vs(),s=a(Si());function a(y,S){if(typeof WeakMap=="function")var E=new WeakMap,I=new WeakMap;return(a=function(O,A){if(!A&&O&&O.__esModule)return O;var M,L,j={__proto__:null,default:O};if(O===null||typeof O!="object"&&typeof O!="function")return j;if(M=A?I:E){if(M.has(O))return M.get(O);M.set(O,j)}for(const k in O)k!=="default"&&{}.hasOwnProperty.call(O,k)&&((L=(M=Object.defineProperty)&&Object.getOwnPropertyDescriptor(O,k))&&(L.get||L.set)?M(j,k,L):j[k]=O[k]);return j})(y,S)}let r="";function l(y,S){return r||(r=(0,t.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(E){return(0,t.isFunction)(y[E])})),(0,t.isFunction)(y[r])?y[r](S):!1}function d(y,S,E){let I=y;do{if(l(I,S))return!0;if(I===E)return!1;I=I.parentNode}while(I);return!1}function c(y,S,E,I){if(!y)return;const O={capture:!0,...I};y.addEventListener?y.addEventListener(S,E,O):y.attachEvent?y.attachEvent("on"+S,E):y["on"+S]=E}function i(y,S,E,I){if(!y)return;const O={capture:!0,...I};y.removeEventListener?y.removeEventListener(S,E,O):y.detachEvent?y.detachEvent("on"+S,E):y["on"+S]=null}function o(y){let S=y.clientHeight;const E=y.ownerDocument.defaultView.getComputedStyle(y);return S+=(0,t.int)(E.borderTopWidth),S+=(0,t.int)(E.borderBottomWidth),S}function u(y){let S=y.clientWidth;const E=y.ownerDocument.defaultView.getComputedStyle(y);return S+=(0,t.int)(E.borderLeftWidth),S+=(0,t.int)(E.borderRightWidth),S}function h(y){let S=y.clientHeight;const E=y.ownerDocument.defaultView.getComputedStyle(y);return S-=(0,t.int)(E.paddingTop),S-=(0,t.int)(E.paddingBottom),S}function n(y){let S=y.clientWidth;const E=y.ownerDocument.defaultView.getComputedStyle(y);return S-=(0,t.int)(E.paddingLeft),S-=(0,t.int)(E.paddingRight),S}function N(y,S,E){const O=S===S.ownerDocument.body?{left:0,top:0}:S.getBoundingClientRect(),A=(y.clientX+S.scrollLeft-O.left)/E,M=(y.clientY+S.scrollTop-O.top)/E;return{x:A,y:M}}function w(y,S){const E=b(y,S,"px");return{[(0,s.browserPrefixToKey)("transform",s.default)]:E}}function g(y,S){return b(y,S,"")}function b(y,S,E){let{x:I,y:O}=y,A=`translate(${I}${E},${O}${E})`;if(S){const M=`${typeof S.x=="string"?S.x:S.x+E}`,L=`${typeof S.y=="string"?S.y:S.y+E}`;A=`translate(${M}, ${L})`+A}return A}function p(y,S){return y.targetTouches&&(0,t.findInArray)(y.targetTouches,E=>S===E.identifier)||y.changedTouches&&(0,t.findInArray)(y.changedTouches,E=>S===E.identifier)}function f(y){if(y.targetTouches&&y.targetTouches[0])return y.targetTouches[0].identifier;if(y.changedTouches&&y.changedTouches[0])return y.changedTouches[0].identifier}function x(y){if(!y)return;let S=y.getElementById("react-draggable-style-el");S||(S=y.createElement("style"),S.type="text/css",S.id="react-draggable-style-el",S.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
4
- `,S.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
5
- `,y.getElementsByTagName("head")[0].appendChild(S)),y.body&&R(y.body,"react-draggable-transparent-selection")}function C(y){window.requestAnimationFrame?window.requestAnimationFrame(()=>{D(y)}):D(y)}function D(y){if(y)try{if(y.body&&F(y.body,"react-draggable-transparent-selection"),y.selection)y.selection.empty();else{const S=(y.defaultView||window).getSelection();S&&S.type!=="Caret"&&S.removeAllRanges()}}catch{}}function R(y,S){y.classList?y.classList.add(S):y.className.match(new RegExp(`(?:^|\\s)${S}(?!\\S)`))||(y.className+=` ${S}`)}function F(y,S){y.classList?y.classList.remove(S):y.className=y.className.replace(new RegExp(`(?:^|\\s)${S}(?!\\S)`,"g"),"")}return Ce}var at={},ja;function Mr(){if(ja)return at;ja=1,Object.defineProperty(at,"__esModule",{value:!0}),at.canDragX=l,at.canDragY=d,at.createCoreData=i,at.createDraggableData=o,at.getBoundPosition=a,at.getControlPosition=c,at.snapToGrid=r;var t=vs(),s=Zs();function a(n,N,w){if(!n.props.bounds)return[N,w];let{bounds:g}=n.props;g=typeof g=="string"?g:u(g);const b=h(n);if(typeof g=="string"){const{ownerDocument:p}=b,f=p.defaultView;let x;if(g==="parent"?x=b.parentNode:x=b.getRootNode().querySelector(g),!(x instanceof f.HTMLElement))throw new Error('Bounds selector "'+g+'" could not find an element.');const C=x,D=f.getComputedStyle(b),R=f.getComputedStyle(C);g={left:-b.offsetLeft+(0,t.int)(R.paddingLeft)+(0,t.int)(D.marginLeft),top:-b.offsetTop+(0,t.int)(R.paddingTop)+(0,t.int)(D.marginTop),right:(0,s.innerWidth)(C)-(0,s.outerWidth)(b)-b.offsetLeft+(0,t.int)(R.paddingRight)-(0,t.int)(D.marginRight),bottom:(0,s.innerHeight)(C)-(0,s.outerHeight)(b)-b.offsetTop+(0,t.int)(R.paddingBottom)-(0,t.int)(D.marginBottom)}}return(0,t.isNum)(g.right)&&(N=Math.min(N,g.right)),(0,t.isNum)(g.bottom)&&(w=Math.min(w,g.bottom)),(0,t.isNum)(g.left)&&(N=Math.max(N,g.left)),(0,t.isNum)(g.top)&&(w=Math.max(w,g.top)),[N,w]}function r(n,N,w){const g=Math.round(N/n[0])*n[0],b=Math.round(w/n[1])*n[1];return[g,b]}function l(n){return n.props.axis==="both"||n.props.axis==="x"}function d(n){return n.props.axis==="both"||n.props.axis==="y"}function c(n,N,w){const g=typeof N=="number"?(0,s.getTouch)(n,N):null;if(typeof N=="number"&&!g)return null;const b=h(w),p=w.props.offsetParent||b.offsetParent||b.ownerDocument.body;return(0,s.offsetXYFromParent)(g||n,p,w.props.scale)}function i(n,N,w){const g=!(0,t.isNum)(n.lastX),b=h(n);return g?{node:b,deltaX:0,deltaY:0,lastX:N,lastY:w,x:N,y:w}:{node:b,deltaX:N-n.lastX,deltaY:w-n.lastY,lastX:n.lastX,lastY:n.lastY,x:N,y:w}}function o(n,N){const w=n.props.scale;return{node:N.node,x:n.state.x+N.deltaX/w,y:n.state.y+N.deltaY/w,deltaX:N.deltaX/w,deltaY:N.deltaY/w,lastX:n.state.x,lastY:n.state.y}}function u(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom}}function h(n){const N=n.findDOMNode();if(!N)throw new Error("<DraggableCore>: Unmounted during event!");return N}return at}var Wt={},is={},wa;function Lr(){if(wa)return is;wa=1,Object.defineProperty(is,"__esModule",{value:!0}),is.default=t;function t(){}return is}var Na;function ki(){if(Na)return Wt;Na=1,Object.defineProperty(Wt,"__esModule",{value:!0}),Wt.default=void 0;var t=o(Qt()),s=i(ms()),a=i(Ba()),r=Zs(),l=Mr(),d=vs(),c=i(Lr());function i(b){return b&&b.__esModule?b:{default:b}}function o(b,p){if(typeof WeakMap=="function")var f=new WeakMap,x=new WeakMap;return(o=function(C,D){if(!D&&C&&C.__esModule)return C;var R,F,y={__proto__:null,default:C};if(C===null||typeof C!="object"&&typeof C!="function")return y;if(R=D?x:f){if(R.has(C))return R.get(C);R.set(C,y)}for(const S in C)S!=="default"&&{}.hasOwnProperty.call(C,S)&&((F=(R=Object.defineProperty)&&Object.getOwnPropertyDescriptor(C,S))&&(F.get||F.set)?R(y,S,F):y[S]=C[S]);return y})(b,p)}function u(b,p,f){return(p=h(p))in b?Object.defineProperty(b,p,{value:f,enumerable:!0,configurable:!0,writable:!0}):b[p]=f,b}function h(b){var p=n(b,"string");return typeof p=="symbol"?p:p+""}function n(b,p){if(typeof b!="object"||!b)return b;var f=b[Symbol.toPrimitive];if(f!==void 0){var x=f.call(b,p);if(typeof x!="object")return x;throw new TypeError("@@toPrimitive must return a primitive value.")}return(p==="string"?String:Number)(b)}const N={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let w=N.mouse,g=class extends t.Component{constructor(){super(...arguments),u(this,"dragging",!1),u(this,"lastX",NaN),u(this,"lastY",NaN),u(this,"touchIdentifier",null),u(this,"mounted",!1),u(this,"handleDragStart",p=>{if(this.props.onMouseDown(p),!this.props.allowAnyClick&&typeof p.button=="number"&&p.button!==0)return!1;const f=this.findDOMNode();if(!f||!f.ownerDocument||!f.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:x}=f;if(this.props.disabled||!(p.target instanceof x.defaultView.Node)||this.props.handle&&!(0,r.matchesSelectorAndParentsTo)(p.target,this.props.handle,f)||this.props.cancel&&(0,r.matchesSelectorAndParentsTo)(p.target,this.props.cancel,f))return;p.type==="touchstart"&&!this.props.allowMobileScroll&&p.preventDefault();const C=(0,r.getTouchIdentifier)(p);this.touchIdentifier=C;const D=(0,l.getControlPosition)(p,C,this);if(D==null)return;const{x:R,y:F}=D,y=(0,l.createCoreData)(this,R,F);(0,c.default)("DraggableCore: handleDragStart: %j",y),(0,c.default)("calling",this.props.onStart),!(this.props.onStart(p,y)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,r.addUserSelectStyles)(x),this.dragging=!0,this.lastX=R,this.lastY=F,(0,r.addEvent)(x,w.move,this.handleDrag),(0,r.addEvent)(x,w.stop,this.handleDragStop))}),u(this,"handleDrag",p=>{const f=(0,l.getControlPosition)(p,this.touchIdentifier,this);if(f==null)return;let{x,y:C}=f;if(Array.isArray(this.props.grid)){let F=x-this.lastX,y=C-this.lastY;if([F,y]=(0,l.snapToGrid)(this.props.grid,F,y),!F&&!y)return;x=this.lastX+F,C=this.lastY+y}const D=(0,l.createCoreData)(this,x,C);if((0,c.default)("DraggableCore: handleDrag: %j",D),this.props.onDrag(p,D)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const y=document.createEvent("MouseEvents");y.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(y)}return}this.lastX=x,this.lastY=C}),u(this,"handleDragStop",p=>{if(!this.dragging)return;const f=(0,l.getControlPosition)(p,this.touchIdentifier,this);if(f==null)return;let{x,y:C}=f;if(Array.isArray(this.props.grid)){let y=x-this.lastX||0,S=C-this.lastY||0;[y,S]=(0,l.snapToGrid)(this.props.grid,y,S),x=this.lastX+y,C=this.lastY+S}const D=(0,l.createCoreData)(this,x,C);if(this.props.onStop(p,D)===!1||this.mounted===!1)return!1;const F=this.findDOMNode();F&&this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(F.ownerDocument),(0,c.default)("DraggableCore: handleDragStop: %j",D),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,F&&((0,c.default)("DraggableCore: Removing handlers"),(0,r.removeEvent)(F.ownerDocument,w.move,this.handleDrag),(0,r.removeEvent)(F.ownerDocument,w.stop,this.handleDragStop))}),u(this,"onMouseDown",p=>(w=N.mouse,this.handleDragStart(p))),u(this,"onMouseUp",p=>(w=N.mouse,this.handleDragStop(p))),u(this,"onTouchStart",p=>(w=N.touch,this.handleDragStart(p))),u(this,"onTouchEnd",p=>(w=N.touch,this.handleDragStop(p)))}componentDidMount(){this.mounted=!0;const p=this.findDOMNode();p&&(0,r.addEvent)(p,N.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const p=this.findDOMNode();if(p){const{ownerDocument:f}=p;(0,r.removeEvent)(f,N.mouse.move,this.handleDrag),(0,r.removeEvent)(f,N.touch.move,this.handleDrag),(0,r.removeEvent)(f,N.mouse.stop,this.handleDragStop),(0,r.removeEvent)(f,N.touch.stop,this.handleDragStop),(0,r.removeEvent)(p,N.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(f)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:a.default.findDOMNode(this)}render(){return t.cloneElement(t.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return Wt.default=g,u(g,"displayName","DraggableCore"),u(g,"propTypes",{allowAnyClick:s.default.bool,allowMobileScroll:s.default.bool,children:s.default.node.isRequired,disabled:s.default.bool,enableUserSelectHack:s.default.bool,offsetParent:function(b,p){if(b[p]&&b[p].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:s.default.arrayOf(s.default.number),handle:s.default.string,cancel:s.default.string,nodeRef:s.default.object,onStart:s.default.func,onDrag:s.default.func,onStop:s.default.func,onMouseDown:s.default.func,scale:s.default.number,className:d.dontSetMe,style:d.dontSetMe,transform:d.dontSetMe}),u(g,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),Wt}var Ca;function Di(){return Ca||(Ca=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return o.default}}),t.default=void 0;var s=n(Qt()),a=h(ms()),r=h(Ba()),l=Bn(),d=Zs(),c=Mr(),i=vs(),o=h(ki()),u=h(Lr());function h(f){return f&&f.__esModule?f:{default:f}}function n(f,x){if(typeof WeakMap=="function")var C=new WeakMap,D=new WeakMap;return(n=function(R,F){if(!F&&R&&R.__esModule)return R;var y,S,E={__proto__:null,default:R};if(R===null||typeof R!="object"&&typeof R!="function")return E;if(y=F?D:C){if(y.has(R))return y.get(R);y.set(R,E)}for(const I in R)I!=="default"&&{}.hasOwnProperty.call(R,I)&&((S=(y=Object.defineProperty)&&Object.getOwnPropertyDescriptor(R,I))&&(S.get||S.set)?y(E,I,S):E[I]=R[I]);return E})(f,x)}function N(){return N=Object.assign?Object.assign.bind():function(f){for(var x=1;x<arguments.length;x++){var C=arguments[x];for(var D in C)({}).hasOwnProperty.call(C,D)&&(f[D]=C[D])}return f},N.apply(null,arguments)}function w(f,x,C){return(x=g(x))in f?Object.defineProperty(f,x,{value:C,enumerable:!0,configurable:!0,writable:!0}):f[x]=C,f}function g(f){var x=b(f,"string");return typeof x=="symbol"?x:x+""}function b(f,x){if(typeof f!="object"||!f)return f;var C=f[Symbol.toPrimitive];if(C!==void 0){var D=C.call(f,x);if(typeof D!="object")return D;throw new TypeError("@@toPrimitive must return a primitive value.")}return(x==="string"?String:Number)(f)}class p extends s.Component{static getDerivedStateFromProps(x,C){let{position:D}=x,{prevPropsPosition:R}=C;return D&&(!R||D.x!==R.x||D.y!==R.y)?((0,u.default)("Draggable: getDerivedStateFromProps %j",{position:D,prevPropsPosition:R}),{x:D.x,y:D.y,prevPropsPosition:{...D}}):null}constructor(x){super(x),w(this,"onDragStart",(C,D)=>{if((0,u.default)("Draggable: onDragStart: %j",D),this.props.onStart(C,(0,c.createDraggableData)(this,D))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),w(this,"onDrag",(C,D)=>{if(!this.state.dragging)return!1;(0,u.default)("Draggable: onDrag: %j",D);const R=(0,c.createDraggableData)(this,D),F={x:R.x,y:R.y,slackX:0,slackY:0};if(this.props.bounds){const{x:S,y:E}=F;F.x+=this.state.slackX,F.y+=this.state.slackY;const[I,O]=(0,c.getBoundPosition)(this,F.x,F.y);F.x=I,F.y=O,F.slackX=this.state.slackX+(S-F.x),F.slackY=this.state.slackY+(E-F.y),R.x=F.x,R.y=F.y,R.deltaX=F.x-this.state.x,R.deltaY=F.y-this.state.y}if(this.props.onDrag(C,R)===!1)return!1;this.setState(F)}),w(this,"onDragStop",(C,D)=>{if(!this.state.dragging||this.props.onStop(C,(0,c.createDraggableData)(this,D))===!1)return!1;(0,u.default)("Draggable: onDragStop: %j",D);const F={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:S,y:E}=this.props.position;F.x=S,F.y=E}this.setState(F)}),this.state={dragging:!1,dragged:!1,x:x.position?x.position.x:x.defaultPosition.x,y:x.position?x.position.y:x.defaultPosition.y,prevPropsPosition:{...x.position},slackX:0,slackY:0,isElementSVG:!1},x.position&&!(x.onDrag||x.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??r.default.findDOMNode(this)}render(){const{axis:x,bounds:C,children:D,defaultPosition:R,defaultClassName:F,defaultClassNameDragging:y,defaultClassNameDragged:S,position:E,positionOffset:I,scale:O,...A}=this.props;let M={},L=null;const k=!!!E||this.state.dragging,T=E||R,H={x:(0,c.canDragX)(this)&&k?this.state.x:T.x,y:(0,c.canDragY)(this)&&k?this.state.y:T.y};this.state.isElementSVG?L=(0,d.createSVGTransform)(H,I):M=(0,d.createCSSTransform)(H,I);const _=(0,l.clsx)(D.props.className||"",F,{[y]:this.state.dragging,[S]:this.state.dragged});return s.createElement(o.default,N({},A,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),s.cloneElement(s.Children.only(D),{className:_,style:{...D.props.style,...M},transform:L}))}}t.default=p,w(p,"displayName","Draggable"),w(p,"propTypes",{...o.default.propTypes,axis:a.default.oneOf(["both","x","y","none"]),bounds:a.default.oneOfType([a.default.shape({left:a.default.number,right:a.default.number,top:a.default.number,bottom:a.default.number}),a.default.string,a.default.oneOf([!1])]),defaultClassName:a.default.string,defaultClassNameDragging:a.default.string,defaultClassNameDragged:a.default.string,defaultPosition:a.default.shape({x:a.default.number,y:a.default.number}),positionOffset:a.default.shape({x:a.default.oneOfType([a.default.number,a.default.string]),y:a.default.oneOfType([a.default.number,a.default.string])}),position:a.default.shape({x:a.default.number,y:a.default.number}),className:i.dontSetMe,style:i.dontSetMe,transform:i.dontSetMe}),w(p,"defaultProps",{...o.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(Ds)),Ds}var Sa;function ea(){if(Sa)return qt.exports;Sa=1;const{default:t,DraggableCore:s}=Di();return qt.exports=t,qt.exports.default=t,qt.exports.DraggableCore=s,qt.exports}var Ri=ea(),Gt={exports:{}},Ut={},os={},ka;function Fi(){if(ka)return os;ka=1,os.__esModule=!0,os.cloneElement=i;var t=s(Qt());function s(o){return o&&o.__esModule?o:{default:o}}function a(o,u){var h=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);u&&(n=n.filter(function(N){return Object.getOwnPropertyDescriptor(o,N).enumerable})),h.push.apply(h,n)}return h}function r(o){for(var u=1;u<arguments.length;u++){var h=arguments[u]!=null?arguments[u]:{};u%2?a(Object(h),!0).forEach(function(n){l(o,n,h[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(h)):a(Object(h)).forEach(function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(h,n))})}return o}function l(o,u,h){return(u=d(u))in o?Object.defineProperty(o,u,{value:h,enumerable:!0,configurable:!0,writable:!0}):o[u]=h,o}function d(o){var u=c(o,"string");return typeof u=="symbol"?u:u+""}function c(o,u){if(typeof o!="object"||!o)return o;var h=o[Symbol.toPrimitive];if(h!==void 0){var n=h.call(o,u);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(o)}function i(o,u){return u.style&&o.props.style&&(u.style=r(r({},o.props.style),u.style)),u.className&&o.props.className&&(u.className=`${o.props.className} ${u.className}`),t.default.cloneElement(o,u)}return os}var Yt={},Da;function _r(){if(Da)return Yt;Da=1,Yt.__esModule=!0,Yt.resizableProps=void 0;var t=s(ms());ea();function s(a){return a&&a.__esModule?a:{default:a}}return Yt.resizableProps={axis:t.default.oneOf(["both","x","y","none"]),className:t.default.string,children:t.default.element.isRequired,draggableOpts:t.default.shape({allowAnyClick:t.default.bool,cancel:t.default.string,children:t.default.node,disabled:t.default.bool,enableUserSelectHack:t.default.bool,offsetParent:typeof Element<"u"?t.default.instanceOf(Element):t.default.any,grid:t.default.arrayOf(t.default.number),handle:t.default.string,nodeRef:t.default.object,onStart:t.default.func,onDrag:t.default.func,onStop:t.default.func,onMouseDown:t.default.func,scale:t.default.number}),height:function(){for(var a=arguments.length,r=new Array(a),l=0;l<a;l++)r[l]=arguments[l];const[d]=r;return d.axis==="both"||d.axis==="y"?t.default.number.isRequired(...r):t.default.number(...r)},handle:t.default.oneOfType([t.default.node,t.default.func]),handleSize:t.default.arrayOf(t.default.number),lockAspectRatio:t.default.bool,maxConstraints:t.default.arrayOf(t.default.number),minConstraints:t.default.arrayOf(t.default.number),onResizeStop:t.default.func,onResizeStart:t.default.func,onResize:t.default.func,resizeHandles:t.default.arrayOf(t.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),transformScale:t.default.number,width:function(){for(var a=arguments.length,r=new Array(a),l=0;l<a;l++)r[l]=arguments[l];const[d]=r;return d.axis==="both"||d.axis==="x"?t.default.number.isRequired(...r):t.default.number(...r)}},Yt}var Ra;function Ir(){if(Ra)return Ut;Ra=1,Ut.__esModule=!0,Ut.default=void 0;var t=d(Qt()),s=ea(),a=Fi(),r=_r();const l=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function d(b,p){if(typeof WeakMap=="function")var f=new WeakMap,x=new WeakMap;return(d=function(C,D){if(!D&&C&&C.__esModule)return C;var R,F,y={__proto__:null,default:C};if(C===null||typeof C!="object"&&typeof C!="function")return y;if(R=D?x:f){if(R.has(C))return R.get(C);R.set(C,y)}for(const S in C)S!=="default"&&{}.hasOwnProperty.call(C,S)&&((F=(R=Object.defineProperty)&&Object.getOwnPropertyDescriptor(C,S))&&(F.get||F.set)?R(y,S,F):y[S]=C[S]);return y})(b,p)}function c(){return c=Object.assign?Object.assign.bind():function(b){for(var p=1;p<arguments.length;p++){var f=arguments[p];for(var x in f)({}).hasOwnProperty.call(f,x)&&(b[x]=f[x])}return b},c.apply(null,arguments)}function i(b,p){if(b==null)return{};var f,x,C=o(b,p);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(b);for(x=0;x<D.length;x++)f=D[x],p.indexOf(f)===-1&&{}.propertyIsEnumerable.call(b,f)&&(C[f]=b[f])}return C}function o(b,p){if(b==null)return{};var f={};for(var x in b)if({}.hasOwnProperty.call(b,x)){if(p.indexOf(x)!==-1)continue;f[x]=b[x]}return f}function u(b,p){var f=Object.keys(b);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(b);p&&(x=x.filter(function(C){return Object.getOwnPropertyDescriptor(b,C).enumerable})),f.push.apply(f,x)}return f}function h(b){for(var p=1;p<arguments.length;p++){var f=arguments[p]!=null?arguments[p]:{};p%2?u(Object(f),!0).forEach(function(x){n(b,x,f[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(f)):u(Object(f)).forEach(function(x){Object.defineProperty(b,x,Object.getOwnPropertyDescriptor(f,x))})}return b}function n(b,p,f){return(p=N(p))in b?Object.defineProperty(b,p,{value:f,enumerable:!0,configurable:!0,writable:!0}):b[p]=f,b}function N(b){var p=w(b,"string");return typeof p=="symbol"?p:p+""}function w(b,p){if(typeof b!="object"||!b)return b;var f=b[Symbol.toPrimitive];if(f!==void 0){var x=f.call(b,p);if(typeof x!="object")return x;throw new TypeError("@@toPrimitive must return a primitive value.")}return(p==="string"?String:Number)(b)}let g=class extends t.Component{constructor(){super(...arguments),this.handleRefs={},this.lastHandleRect=null,this.slack=null,this.lastSize=null}componentWillUnmount(){this.resetData()}resetData(){this.lastHandleRect=this.slack=this.lastSize=null}runConstraints(p,f){const{minConstraints:x,maxConstraints:C,lockAspectRatio:D}=this.props;if(!x&&!C&&!D)return[p,f];if(D){const E=this.props.width/this.props.height,I=p-this.props.width,O=f-this.props.height;Math.abs(I)>Math.abs(O*E)?f=p/E:p=f*E}const[R,F]=[p,f];let[y,S]=this.slack||[0,0];return p+=y,f+=S,x&&(p=Math.max(x[0],p),f=Math.max(x[1],f)),C&&(p=Math.min(C[0],p),f=Math.min(C[1],f)),this.slack=[y+(R-p),S+(F-f)],[p,f]}resizeHandler(p,f){return(x,C)=>{let{node:D,deltaX:R,deltaY:F}=C;p==="onResizeStart"&&this.resetData();const y=(this.props.axis==="both"||this.props.axis==="x")&&f!=="n"&&f!=="s",S=(this.props.axis==="both"||this.props.axis==="y")&&f!=="e"&&f!=="w";if(!y&&!S)return;const E=f[0],I=f[f.length-1],O=D.getBoundingClientRect();if(this.lastHandleRect!=null){if(I==="w"){const T=O.left-this.lastHandleRect.left;R+=T}if(E==="n"){const T=O.top-this.lastHandleRect.top;F+=T}}this.lastHandleRect=O,I==="w"&&(R=-R),E==="n"&&(F=-F);let A=this.props.width+(y?R/this.props.transformScale:0),M=this.props.height+(S?F/this.props.transformScale:0);[A,M]=this.runConstraints(A,M),p==="onResizeStop"&&this.lastSize&&({width:A,height:M}=this.lastSize);const L=A!==this.props.width||M!==this.props.height;p!=="onResizeStop"&&(this.lastSize={width:A,height:M});const j=typeof this.props[p]=="function"?this.props[p]:null;j&&!(p==="onResize"&&!L)&&(x.persist?.(),j(x,{node:D,size:{width:A,height:M},handle:f})),p==="onResizeStop"&&this.resetData()}}renderResizeHandle(p,f){const{handle:x}=this.props;if(!x)return t.createElement("span",{className:`react-resizable-handle react-resizable-handle-${p}`,ref:f});if(typeof x=="function")return x(p,f);const C=typeof x.type=="string",D=h({ref:f},C?{}:{handleAxis:p});return t.cloneElement(x,D)}render(){const p=this.props,{children:f,className:x,draggableOpts:C,width:D,height:R,handle:F,handleSize:y,lockAspectRatio:S,axis:E,minConstraints:I,maxConstraints:O,onResize:A,onResizeStop:M,onResizeStart:L,resizeHandles:j,transformScale:k}=p,T=i(p,l);return(0,a.cloneElement)(f,h(h({},T),{},{className:`${x?`${x} `:""}react-resizable`,children:[...t.Children.toArray(f.props.children),...j.map(H=>{const _=this.handleRefs[H]??(this.handleRefs[H]=t.createRef());return t.createElement(s.DraggableCore,c({},C,{nodeRef:_,key:`resizableHandle-${H}`,onStop:this.resizeHandler("onResizeStop",H),onStart:this.resizeHandler("onResizeStart",H),onDrag:this.resizeHandler("onResize",H)}),this.renderResizeHandle(H,_))})]}))}};return Ut.default=g,g.propTypes=r.resizableProps,g.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},Ut}var Xt={},Fa;function Oi(){if(Fa)return Xt;Fa=1,Xt.__esModule=!0,Xt.default=void 0;var t=c(Qt()),s=d(ms()),a=d(Ir()),r=_r();const l=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function d(p){return p&&p.__esModule?p:{default:p}}function c(p,f){if(typeof WeakMap=="function")var x=new WeakMap,C=new WeakMap;return(c=function(D,R){if(!R&&D&&D.__esModule)return D;var F,y,S={__proto__:null,default:D};if(D===null||typeof D!="object"&&typeof D!="function")return S;if(F=R?C:x){if(F.has(D))return F.get(D);F.set(D,S)}for(const E in D)E!=="default"&&{}.hasOwnProperty.call(D,E)&&((y=(F=Object.defineProperty)&&Object.getOwnPropertyDescriptor(D,E))&&(y.get||y.set)?F(S,E,y):S[E]=D[E]);return S})(p,f)}function i(){return i=Object.assign?Object.assign.bind():function(p){for(var f=1;f<arguments.length;f++){var x=arguments[f];for(var C in x)({}).hasOwnProperty.call(x,C)&&(p[C]=x[C])}return p},i.apply(null,arguments)}function o(p,f){var x=Object.keys(p);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(p);f&&(C=C.filter(function(D){return Object.getOwnPropertyDescriptor(p,D).enumerable})),x.push.apply(x,C)}return x}function u(p){for(var f=1;f<arguments.length;f++){var x=arguments[f]!=null?arguments[f]:{};f%2?o(Object(x),!0).forEach(function(C){h(p,C,x[C])}):Object.getOwnPropertyDescriptors?Object.defineProperties(p,Object.getOwnPropertyDescriptors(x)):o(Object(x)).forEach(function(C){Object.defineProperty(p,C,Object.getOwnPropertyDescriptor(x,C))})}return p}function h(p,f,x){return(f=n(f))in p?Object.defineProperty(p,f,{value:x,enumerable:!0,configurable:!0,writable:!0}):p[f]=x,p}function n(p){var f=N(p,"string");return typeof f=="symbol"?f:f+""}function N(p,f){if(typeof p!="object"||!p)return p;var x=p[Symbol.toPrimitive];if(x!==void 0){var C=x.call(p,f);if(typeof C!="object")return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return(f==="string"?String:Number)(p)}function w(p,f){if(p==null)return{};var x,C,D=g(p,f);if(Object.getOwnPropertySymbols){var R=Object.getOwnPropertySymbols(p);for(C=0;C<R.length;C++)x=R[C],f.indexOf(x)===-1&&{}.propertyIsEnumerable.call(p,x)&&(D[x]=p[x])}return D}function g(p,f){if(p==null)return{};var x={};for(var C in p)if({}.hasOwnProperty.call(p,C)){if(f.indexOf(C)!==-1)continue;x[C]=p[C]}return x}let b=class extends t.Component{constructor(){super(...arguments),this.state={width:this.props.width,height:this.props.height,propsWidth:this.props.width,propsHeight:this.props.height},this.onResize=(f,x)=>{const{size:C}=x;this.props.onResize?(f.persist?.(),this.setState(C,()=>this.props.onResize&&this.props.onResize(f,x))):this.setState(C)}}static getDerivedStateFromProps(f,x){return x.propsWidth!==f.width||x.propsHeight!==f.height?{width:f.width,height:f.height,propsWidth:f.width,propsHeight:f.height}:null}render(){const f=this.props,{handle:x,handleSize:C,onResize:D,onResizeStart:R,onResizeStop:F,draggableOpts:y,minConstraints:S,maxConstraints:E,lockAspectRatio:I,axis:O,width:A,height:M,resizeHandles:L,style:j,transformScale:k}=f,T=w(f,l);return t.createElement(a.default,{axis:O,draggableOpts:y,handle:x,handleSize:C,height:this.state.height,lockAspectRatio:I,maxConstraints:E,minConstraints:S,onResizeStart:R,onResize:this.onResize,onResizeStop:F,resizeHandles:L,transformScale:k,width:this.state.width},t.createElement("div",i({},T,{style:u(u({},j),{},{width:this.state.width+"px",height:this.state.height+"px"})})))}};return Xt.default=b,b.propTypes=u(u({},r.resizableProps),{},{children:s.default.element}),Xt}var Oa;function Ti(){return Oa||(Oa=1,Gt.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},Gt.exports.Resizable=Ir().default,Gt.exports.ResizableBox=Oi().default),Gt.exports}var Pi=Ti();function Ta(t){const{children:s,cols:a,containerWidth:r,margin:l,containerPadding:d,rowHeight:c,maxRows:i,isDraggable:o,isResizable:u,isBounded:h,static:n,useCSSTransforms:N=!0,usePercentages:w=!1,transformScale:g=1,positionStrategy:b,dragThreshold:p=0,droppingPosition:f,className:x="",style:C,handle:D="",cancel:R="",x:F,y,w:S,h:E,minW:I=1,maxW:O=1/0,minH:A=1,maxH:M=1/0,i:L,resizeHandles:j,resizeHandle:k,constraints:T=yr,layoutItem:H,layout:_=[],onDragStart:U,onDrag:ne,onDragStop:we,onResizeStart:ue,onResize:le,onResizeStop:de}=t,[W,se]=m.useState(!1),[fe,ae]=m.useState(!1),re=m.useRef(null),q=m.useRef({left:0,top:0}),me=m.useRef({top:0,left:0,width:0,height:0}),De=m.useRef(void 0),et=m.useRef(_);et.current=_;const Re=m.useRef(null),be=m.useRef(null),Pe=m.useRef(!1),xt=m.useRef({x:0,y:0}),ce=m.useRef(!1),ie=m.useMemo(()=>({cols:a,containerPadding:d,containerWidth:r,margin:l,maxRows:i,rowHeight:c}),[a,d,r,l,i,c]),Se=m.useMemo(()=>({cols:a,maxRows:i,containerWidth:r,containerHeight:0,rowHeight:c,margin:l,layout:[]}),[a,i,r,c,l]),ye=m.useCallback(()=>({...Se,layout:et.current}),[Se]),He=m.useMemo(()=>H??{i:L,x:F,y,w:S,h:E,minW:I,maxW:O,minH:A,maxH:M},[H,L,F,y,S,E,I,O,A,M]),Ct=m.useCallback(K=>{if(b?.calcStyle)return b.calcStyle(K);if(N)return vr(K);const Z=Vl(K);return w?{...Z,left:fa(K.left/r),width:fa(K.width/r)}:Z},[b,N,w,r]),Ue=m.useCallback((K,{node:Z})=>{if(!U)return;const{offsetParent:pe}=Z;if(!pe)return;const te=pe.getBoundingClientRect(),he=Z.getBoundingClientRect(),ve=he.left/g,ze=te.left/g,Te=he.top/g,Le=te.top/g;let Ve;if(b?.calcDragPosition){const P=K;Ve=b.calcDragPosition(P.clientX,P.clientY,P.clientX-he.left,P.clientY-he.top)}else Ve={left:ve-ze+pe.scrollLeft,top:Te-Le+pe.scrollTop};if(q.current=Ve,p>0){const P=K;xt.current={x:P.clientX,y:P.clientY},Pe.current=!0,ce.current=!1,se(!0);return}se(!0);const st=rs(ie,Ve.top,Ve.left),{x:Ke,y:v}=ns(T,He,st.x,st.y,ye());U(L,Ke,v,{e:K,node:Z,newPosition:Ve})},[U,g,ie,b,p,T,He,ye,L]),nt=m.useCallback((K,{node:Z,deltaX:pe,deltaY:te})=>{if(!ne||!W)return;const he=K;if(Pe.current&&!ce.current){const Ke=he.clientX-xt.current.x,v=he.clientY-xt.current.y;if(Math.hypot(Ke,v)<p)return;if(ce.current=!0,Pe.current=!1,U){const z=rs(ie,q.current.top,q.current.left),{x:V,y:G}=ns(T,He,z.x,z.y,ye());U(L,V,G,{e:K,node:Z,newPosition:q.current})}}let ve=q.current.top+te,ze=q.current.left+pe;if(h){const{offsetParent:Ke}=Z;if(Ke){const v=Ke.clientHeight-$t(E,c,l[1]);ve=ds(ve,0,v);const P=Bt(ie),z=r-$t(S,P,l[0]);ze=ds(ze,0,z)}}const Te={top:ve,left:ze};q.current=Te;const Le=rs(ie,ve,ze),{x:Ve,y:st}=ns(T,He,Le.x,Le.y,ye());ne(L,Ve,st,{e:K,node:Z,newPosition:Te})},[ne,U,W,p,h,E,c,l,ie,r,S,L,T,He,ye]),Ee=m.useCallback((K,{node:Z})=>{if(!we||!W)return;const pe=Pe.current;if(Pe.current=!1,ce.current=!1,xt.current={x:0,y:0},pe){se(!1),q.current={left:0,top:0};return}const{left:te,top:he}=q.current,ve={top:he,left:te};se(!1),q.current={left:0,top:0};const ze=rs(ie,he,te),{x:Te,y:Le}=ns(T,He,ze.x,ze.y,ye());we(L,Te,Le,{e:K,node:Z,newPosition:ve})},[we,W,ie,T,He,ye,L]);Re.current=Ue,be.current=nt;const Be=m.useCallback((K,{node:Z,size:pe,handle:te},he,ve)=>{const ze=ve==="onResizeStart"?ue:ve==="onResize"?le:de;if(!ze)return;let Te;Z?Te=Kl(te,he,pe,r):Te={...pe,top:he.top,left:he.left},me.current=Te;const Le=zl(ie,Te.width,Te.height),{w:Ve,h:st}=Bl(T,He,Le.w,Le.h,te,ye());ze(L,Ve,st,{e:K.nativeEvent,node:Z,size:Te,handle:te})},[ue,le,de,r,ie,L,T,He,ye]),gt=m.useCallback((K,Z)=>{ae(!0);const pe=Ht(ie,F,y,S,E),te={...Z,handle:Z.handle};Be(K,te,pe,"onResizeStart")},[Be,ie,F,y,S,E]),bt=m.useCallback((K,Z)=>{const pe=Ht(ie,F,y,S,E),te={...Z,handle:Z.handle};Be(K,te,pe,"onResize")},[Be,ie,F,y,S,E]),tt=m.useCallback((K,Z)=>{ae(!1),me.current={top:0,left:0,width:0,height:0};const pe=Ht(ie,F,y,S,E),te={...Z,handle:Z.handle};Be(K,te,pe,"onResizeStop")},[Be,ie,F,y,S,E]);m.useEffect(()=>{if(!f)return;const K=re.current;if(!K)return;const Z=De.current||{left:0,top:0},pe=W&&(f.left!==Z.left||f.top!==Z.top);if(W){if(pe){const te=f.left-q.current.left,he=f.top-q.current.top,ve={node:K,deltaX:te,deltaY:he,lastX:q.current.left,lastY:q.current.top,x:f.left,y:f.top};be.current?.(f.e,ve)}}else{const te={node:K,deltaX:f.left,deltaY:f.top,lastX:0,lastY:0,x:f.left,y:f.top};Re.current?.(f.e,te)}De.current=f},[f,W,L]);const qe=Ht(ie,F,y,S,E,W?q.current:null,fe?me.current:null),Ye=Ze.Children.only(s),Xe=Ht(ie,0,0,1,1),At=[Xe.width,Xe.height],lt=[1/0,1/0],Me=Ye.props,Vt=Me.className,zt=Me.style;let Je=Ze.cloneElement(Ye,{ref:re,className:cr("react-grid-item",Vt,x,{static:n,resizing:fe,"react-draggable":o,"react-draggable-dragging":W,dropping:!!f,cssTransforms:N}),style:{...C,...zt,...Ct(qe)}});const St=k;return Je=e.jsx(Pi.Resizable,{draggableOpts:{disabled:!u},className:u?void 0:"react-resizable-hide",width:qe.width,height:qe.height,minConstraints:At,maxConstraints:lt,onResizeStart:gt,onResize:bt,onResizeStop:tt,transformScale:g,resizeHandles:j,handle:St,children:Je}),Je=e.jsx(Ri.DraggableCore,{disabled:!o,onStart:Ue,onDrag:nt,onStop:Ee,handle:D,cancel:".react-resizable-handle"+(R?","+R:""),scale:g,nodeRef:re,children:Je}),Je}var ot=()=>{},Pa="react-grid-layout",$r=!1;try{$r=/firefox/i.test(navigator.userAgent)}catch{}function Ei(t,s){const a=Ze.Children.toArray(t),r=Ze.Children.toArray(s);if(a.length!==r.length)return!1;for(let l=0;l<a.length;l++){const d=a[l],c=r[l];if(d?.key!==c?.key)return!1}return!0}function Ea(t,s,a,r){const l=[],d=new Set;Ze.Children.forEach(s,i=>{if(!Ze.isValidElement(i)||i.key===null)return;const o=String(i.key);d.add(o);const u=t.find(h=>h.i===o);if(u)l.push(Et(u));else{const n=i.props["data-grid"];n?l.push({i:o,x:n.x??0,y:n.y??0,w:n.w??1,h:n.h??1,minW:n.minW,maxW:n.maxW,minH:n.minH,maxH:n.maxH,static:n.static,isDraggable:n.isDraggable,isResizable:n.isResizable,resizeHandles:n.resizeHandles,isBounded:n.isBounded}):l.push({i:o,x:0,y:hs(l),w:1,h:1})}});const c=Gs(l,{cols:a});return r.compact(c,a)}function Ai(t){const{children:s,width:a,gridConfig:r,dragConfig:l,resizeConfig:d,dropConfig:c,positionStrategy:i=Ql,compactor:o,constraints:u=yr,layout:h=[],droppingItem:n,autoSize:N=!0,className:w="",style:g={},innerRef:b,onLayoutChange:p=ot,onDragStart:f=ot,onDrag:x=ot,onDragStop:C=ot,onResizeStart:D=ot,onResize:R=ot,onResizeStop:F=ot,onDrop:y=ot,onDropDragOver:S=ot}=t,E=m.useMemo(()=>({...Zl,...r}),[r]),I=m.useMemo(()=>({...ei,...l}),[l]),O=m.useMemo(()=>({...ti,...d}),[d]),A=m.useMemo(()=>({...si,...c}),[c]),{cols:M,rowHeight:L,maxRows:j,margin:k,containerPadding:T}=E,{enabled:H,bounded:_,handle:U,cancel:ne,threshold:we}=I,{enabled:ue,handles:le,handleComponent:de}=O,{enabled:W,defaultItem:se,onDragOver:fe}=A,ae=o??Qs("vertical"),re=ae.type,q=ae.allowOverlap,me=ae.preventCollision??!1,De=m.useMemo(()=>n??{i:"__dropping-elem__",...se},[n,se]),et=i.type==="transform",Re=i.scale,be=T??k,[Pe,xt]=m.useState(!1),[ce,ie]=m.useState(()=>Ea(h,s,M,ae)),[Se,ye]=m.useState(null),[He,Ct]=m.useState(!1),[Ue,nt]=m.useState(null),[Ee,Be]=m.useState(),gt=m.useRef(null),bt=m.useRef(null),tt=m.useRef(null),qe=m.useRef(0),Ye=m.useRef(ce),Xe=m.useRef(h),At=m.useRef(s),lt=m.useRef(re),Me=m.useRef(ce);Me.current=ce,m.useEffect(()=>{xt(!0),ht(ce,h)||p(ce)},[]),m.useEffect(()=>{if(Se||Ue)return;const v=!ht(h,Xe.current),P=!Ei(s,At.current),z=re!==lt.current;if(v||P||z){const G=Ea(v?h:ce,s,M,ae);ht(G,ce)||ie(G)}Xe.current=h,At.current=s,lt.current=re},[h,s,M,re,ae,Se,Ue,ce]),m.useEffect(()=>{if(!Se&&!ht(ce,Ye.current)){Ye.current=ce;const v=ce.filter(P=>P.i!==De.i);p(v)}},[ce,Se,p,De.i]);const Vt=m.useMemo(()=>{if(!N)return;const v=hs(ce),P=be[1];return v*L+(v-1)*k[1]+P*2+"px"},[N,ce,L,k,be]),zt=m.useCallback((v,P,z,V)=>{const G=Me.current,Y=Rt(G,v);if(!Y)return;const J={w:Y.w,h:Y.h,x:Y.x,y:Y.y,i:v};gt.current=Et(Y),tt.current=G,ye(J),f(G,Y,Y,null,V.e,V.node)},[f]),Je=m.useCallback((v,P,z,V)=>{const G=Me.current,Y=gt.current,J=Rt(G,v);if(!J)return;const oe={w:J.w,h:J.h,x:J.x,y:J.y,i:v},X=Ot(G,J,P,z,!0,me,re,M,q);x(X,Y,J,oe,V.e,V.node),ie(ae.compact(X,M)),ye(oe)},[me,re,M,q,ae,x]),St=m.useCallback((v,P,z,V)=>{if(!Se)return;const G=Me.current,Y=gt.current,J=Rt(G,v);if(!J)return;const oe=Ot(G,J,P,z,!0,me,re,M,q),X=ae.compact(oe,M);C(X,Y,J,null,V.e,V.node);const Ne=tt.current;gt.current=null,tt.current=null,ye(null),ie(X),Ne&&!ht(Ne,X)&&p(X)},[Se,me,re,M,q,ae,C,p]),K=m.useCallback((v,P,z,V)=>{const G=Me.current,Y=Rt(G,v);Y&&(bt.current=Et(Y),tt.current=G,Ct(!0),D(G,Y,Y,null,V.e,V.node))},[D]),Z=m.useCallback((v,P,z,V)=>{const G=Me.current,Y=bt.current,{handle:J}=V;let oe=!1,X,Ne;const[Ae,xe]=_l(G,v,Q=>(X=Q.x,Ne=Q.y,["sw","w","nw","n","ne"].includes(J)&&(["sw","nw","w"].includes(J)&&(X=Q.x+(Q.w-P),P=Q.x!==X&&X<0?Q.w:P,X=X<0?0:X),["ne","n","nw"].includes(J)&&(Ne=Q.y+(Q.h-z),z=Q.y!==Ne&&Ne<0?Q.h:z,Ne=Ne<0?0:Ne),oe=!0),me&&!q&&gr(G,{...Q,w:P,h:z,x:X??Q.x,y:Ne??Q.y}).filter(it=>it.i!==Q.i).length>0&&(Ne=Q.y,z=Q.h,X=Q.x,P=Q.w,oe=!1),Q.w=P,Q.h=z,Q));if(!xe)return;let ke=Ae;oe&&X!==void 0&&Ne!==void 0&&(ke=Ot(Ae,xe,X,Ne,!0,me,re,M,q));const Qe={w:xe.w,h:xe.h,x:xe.x,y:xe.y,i:v,static:!0};R(ke,Y,xe,Qe,V.e,V.node),ie(ae.compact(ke,M)),ye(Qe)},[me,re,M,q,ae,R]),pe=m.useCallback((v,P,z,V)=>{const G=Me.current,Y=bt.current,J=Rt(G,v),oe=ae.compact(G,M);F(oe,Y,J??null,null,V.e,V.node);const X=tt.current;bt.current=null,tt.current=null,ye(null),Ct(!1),ie(oe),X&&!ht(X,oe)&&p(oe)},[M,ae,F,p]),te=m.useCallback(()=>{const v=Me.current;if(!v.some(V=>V.i===De.i)){nt(null),ye(null),Be(void 0);return}const z=ae.compact(v.filter(V=>V.i!==De.i),M);ie(z),nt(null),ye(null),Be(void 0)},[De.i,M,ae]),he=m.useCallback(v=>{if(v.preventDefault(),v.stopPropagation(),$r&&!v.nativeEvent.target?.classList.contains(Pa))return!1;const P=fe?fe(v.nativeEvent):S(v);if(P===!1)return Ue&&te(),!1;const{dragOffsetX:z=0,dragOffsetY:V=0,...G}=P??{},Y={...De,...G},J=v.currentTarget.getBoundingClientRect(),oe={cols:M,margin:k,maxRows:j,rowHeight:L,containerWidth:a,containerPadding:be},X=Bt(oe),Ne=$t(Y.w,X,k[0]),Ae=$t(Y.h,L,k[1]),xe=Ne/2,ke=Ae/2,Qe=v.clientX-J.left+z-xe,Q=v.clientY-J.top+V-ke,es=Math.max(0,Qe),it=Math.max(0,Q),ts={left:es/Re,top:it/Re,e:v.nativeEvent};if(Ue)Ee&&(Ee.left!==ts.left||Ee.top!==ts.top)&&Be(ts);else{const ws=Al(oe,it,es,Y.w,Y.h);nt(e.jsx("div",{},Y.i)),Be(ts),ie([...Me.current,{...Y,x:ws.x,y:ws.y,static:!1,isDraggable:!0}])}},[Ue,Ee,De,fe,S,te,Re,M,k,j,L,a,be]),ve=m.useCallback(v=>{v.preventDefault(),v.stopPropagation(),qe.current--,qe.current<0&&(qe.current=0),qe.current===0&&te()},[te]),ze=m.useCallback(v=>{v.preventDefault(),v.stopPropagation(),qe.current++},[]),Te=m.useCallback(v=>{v.preventDefault(),v.stopPropagation();const P=Me.current,z=P.find(V=>V.i===De.i);qe.current=0,te(),y(P,z,v.nativeEvent)},[De.i,te,y]),Le=m.useCallback((v,P)=>{if(!v||!v.key)return null;const z=Rt(ce,String(v.key));if(!z)return null;const V=typeof z.isDraggable=="boolean"?z.isDraggable:!z.static&&H,G=typeof z.isResizable=="boolean"?z.isResizable:!z.static&&ue,Y=z.resizeHandles||[...le],J=V&&_&&z.isBounded!==!1,oe=de;return e.jsx(Ta,{containerWidth:a,cols:M,margin:k,containerPadding:be,maxRows:j,rowHeight:L,cancel:ne,handle:U,onDragStart:zt,onDrag:Je,onDragStop:St,onResizeStart:K,onResize:Z,onResizeStop:pe,isDraggable:V,isResizable:G,isBounded:J,useCSSTransforms:et&&Pe,usePercentages:!Pe,transformScale:Re,positionStrategy:i,dragThreshold:we,w:z.w,h:z.h,x:z.x,y:z.y,i:z.i,minH:z.minH,minW:z.minW,maxH:z.maxH,maxW:z.maxW,static:z.static,droppingPosition:P?Ee:void 0,resizeHandles:Y,resizeHandle:oe,constraints:u,layoutItem:z,layout:ce,children:v},z.i)},[ce,a,M,k,be,j,L,ne,U,zt,Je,St,K,Z,pe,H,ue,_,et,Pe,Re,i,we,Ee,le,de,u]),Ve=()=>Se?e.jsx(Ta,{w:Se.w,h:Se.h,x:Se.x,y:Se.y,i:Se.i,className:`react-grid-placeholder ${He?"placeholder-resizing":""}`,containerWidth:a,cols:M,margin:k,containerPadding:be,maxRows:j,rowHeight:L,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:et,transformScale:Re,constraints:u,layout:ce,children:e.jsx("div",{})}):null,st=cr(Pa,w),Ke={height:Vt,...g};return e.jsxs("div",{ref:b,className:st,style:Ke,onDrop:W?Te:void 0,onDragLeave:W?ve:void 0,onDragEnter:W?ze:void 0,onDragOver:W?he:void 0,children:[Ze.Children.map(s,v=>Ze.isValidElement(v)?Le(v):null),W&&Ue&&Le(Ue,!0),Ve()]})}var zi={lg:1200,md:996,sm:768,xs:480,xxs:0},Mi={lg:12,md:10,sm:6,xs:4,xxs:2},Rs=()=>{};function Li(t,s,a,r){const l=[];Ze.Children.forEach(s,c=>{if(!Ze.isValidElement(c)||c.key===null)return;const i=String(c.key),o=t.find(u=>u.i===i);if(o)l.push({...o,i});else{const h=c.props["data-grid"];h?l.push({i,x:h.x??0,y:h.y??0,w:h.w??1,h:h.h??1,minW:h.minW,maxW:h.maxW,minH:h.minH,maxH:h.maxH,static:h.static,isDraggable:h.isDraggable,isResizable:h.isResizable,resizeHandles:h.resizeHandles,isBounded:h.isBounded}):l.push({i,x:0,y:hs(l),w:1,h:1})}});const d=Gs(l,{cols:a});return r.compact(d,a)}function _i(t){const{children:s,width:a,breakpoint:r,breakpoints:l=zi,cols:d=Mi,layouts:c={},rowHeight:i=150,maxRows:o=1/0,margin:u=[10,10],containerPadding:h=null,compactor:n,onBreakpointChange:N=Rs,onLayoutChange:w=Rs,onWidthChange:g=Rs,...b}=t,p=n??Qs("vertical"),f=p.type,x=p.allowOverlap,C=m.useMemo(()=>r??pa(l,a),[]),D=m.useMemo(()=>ma(C,d),[C,d]),R=m.useMemo(()=>ks(c,l,C,C,D,f),[]),[F,y]=m.useState(C),[S,E]=m.useState(D),[I,O]=m.useState(R),[A,M]=m.useState(c),L=m.useRef(a),j=m.useRef(r),k=m.useRef(l),T=m.useRef(d),H=m.useRef(c),_=m.useRef(f),U=m.useRef(A);m.useEffect(()=>{U.current=A},[A]);const ne=m.useMemo(()=>ht(c,H.current)?null:ks(c,l,F,F,S,p),[c,l,F,S,p]),we=ne??I;m.useEffect(()=>{ne!==null&&(O(ne),M(c),U.current=c,H.current=c)},[ne,c]),m.useEffect(()=>{if(f!==_.current){const se=p.compact(Nt(we),S),fe={...U.current,[F]:se};O(se),M(fe),U.current=fe,w(se,fe),_.current=f}},[f,p,we,S,x,F,w]),m.useEffect(()=>{const se=a!==L.current,fe=r!==j.current,ae=!ht(l,k.current),re=!ht(d,T.current);if(se||fe||ae||re){const q=r??pa(l,a),me=ma(q,d),De=F;if(De!==q||ae||re){const be={...U.current};be[De]||(be[De]=Nt(I));let Pe=ks(be,l,q,De,me,p);Pe=Li(Pe,s,me,p),be[q]=Pe,y(q),E(me),O(Pe),M(be),U.current=be,N(q,me),w(Pe,be)}const et=ls(u,q),Re=h?ls(h,q):null;g(a,et,me,Re),L.current=a,j.current=r,k.current=l,T.current=d}},[a,r,l,d,F,S,I,s,p,f,x,u,h,N,w,g]);const ue=m.useCallback(se=>{const ae={...U.current,[F]:se};O(se),M(ae),U.current=ae,w(se,ae)},[F,w]),le=m.useMemo(()=>ls(u,F),[u,F]),de=m.useMemo(()=>h===null?null:ls(h,F),[h,F]),W=m.useMemo(()=>({cols:S,rowHeight:i,maxRows:o,margin:le,containerPadding:de}),[S,i,o,le,de]);return e.jsx(Ai,{...b,width:a,gridConfig:W,compactor:p,onLayoutChange:ue,layout:we,children:s})}function Ii({editMode:t}){const s=Qr();return m.useEffect(()=>{if(t)return s.startDrag({id:"dashboard-layout",type:"dashboard-widget",data:{}}),()=>{s.endDrag()};s.endDrag("dashboard")},[t,s]),null}const Fs=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],$i=({schema:t,className:s,onLayoutChange:a,persistLayoutKey:r="dashboard-layout",onRefresh:l})=>{const{width:d,containerRef:c,mounted:i}=Ci(),[o,u]=m.useState(!1),[h,n]=m.useState(!1),N=Jr(),w=m.useRef(null),g=m.useCallback(()=>{l&&(n(!0),l(),setTimeout(()=>n(!1),600))},[l]);m.useEffect(()=>{if(!(!t.refreshInterval||t.refreshInterval<=0||!l))return w.current=setInterval(g,t.refreshInterval*1e3),()=>{w.current&&clearInterval(w.current)}},[t.refreshInterval,l,g]);const[b,p]=m.useState(()=>{if(typeof window<"u"&&r){const R=localStorage.getItem(r);if(R)try{return JSON.parse(R)}catch(F){console.error("Failed to parse saved layout:",F)}}return{lg:t.widgets?.map((R,F)=>({i:R.id||`widget-${F}`,x:R.layout?.x||F%4*3,y:R.layout?.y||Math.floor(F/4)*4,w:R.layout?.w||3,h:R.layout?.h||4}))||[]}}),f=m.useCallback((R,F)=>{p(F),a?.(R)},[a]),x=m.useCallback(()=>{typeof window<"u"&&r&&localStorage.setItem(r,JSON.stringify(b)),u(!1)},[b,r]),C=m.useCallback(()=>{const R={lg:t.widgets?.map((F,y)=>({i:F.id||`widget-${y}`,x:F.layout?.x||y%4*3,y:F.layout?.y||Math.floor(y/4)*4,w:F.layout?.w||3,h:F.layout?.h||4}))||[]};p(R),typeof window<"u"&&r&&localStorage.removeItem(r)},[t.widgets,r]),D=m.useCallback(R=>{if(R.component)return R.component;const F=R.type,y=R.options||{};if(F==="bar"||F==="line"||F==="area"||F==="pie"||F==="donut"||F==="scatter"){const S=R.data||y.data,E=R.categoryField||y.xField||"name",I=R.valueField||y.yField||"value";if(_t(S)){const A=S.aggregate,M=A?{field:R.valueField||A.field,function:R.aggregate||A.function,groupBy:R.categoryField||A.groupBy}:void 0,L=M?.field||I;return{type:"object-chart",chartType:F,objectName:R.object||S.object,aggregate:M,xAxisKey:E,series:[{dataKey:L}],colors:Fs,className:"h-full"}}if(!S&&R.object){const A=R.aggregate?{field:R.valueField||"value",function:R.aggregate,groupBy:R.categoryField||"name"}:void 0;return{type:"object-chart",chartType:F,objectName:R.object,aggregate:A,xAxisKey:E,series:[{dataKey:R.valueField||"value"}],colors:Fs,className:"h-full"}}const O=Array.isArray(S)?S:S?.items||[];return{type:"chart",chartType:F,data:O,xAxisKey:E,series:[{dataKey:I}],colors:Fs,className:"h-full"}}if(F==="table"){const S=R.data||y.data;if(_t(S)){const{data:E,...I}=y;return{type:"data-table",...I,objectName:R.object||S.object,dataProvider:S,data:[],searchable:!1,pagination:!1,className:"border-0"}}return!S&&R.object?{type:"data-table",...y,objectName:R.object,data:[],searchable:!1,pagination:!1,className:"border-0"}:{type:"data-table",...y,data:S?.items||[],searchable:!1,pagination:!1,className:"border-0"}}if(F==="pivot"){const S=R.data||y.data;if(_t(S)){const{data:E,...I}=y;return{type:"pivot",...I,objectName:R.object||S.object,dataProvider:S,data:[]}}return{type:"pivot",...y,data:Array.isArray(S)?S:S?.items||[]}}return{...R,...y}},[]);return e.jsxs("div",{ref:c,className:$("w-full",s),"data-testid":"grid-layout",children:[N&&e.jsx(Ii,{editMode:o}),e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("h2",{className:"text-2xl font-bold",children:t.title||"Dashboard"}),e.jsx("div",{className:"flex gap-2",children:o?e.jsxs(e.Fragment,{children:[e.jsxs(B,{onClick:x,size:"sm",variant:"default",children:[e.jsx(rr,{className:"h-4 w-4 mr-2"}),"Save Layout"]}),e.jsxs(B,{onClick:C,size:"sm",variant:"outline",children:[e.jsx(Zt,{className:"h-4 w-4 mr-2"}),"Reset"]}),e.jsx(B,{onClick:()=>u(!1),size:"sm",variant:"ghost",children:"Cancel"})]}):e.jsxs(e.Fragment,{children:[l&&e.jsxs(B,{onClick:g,size:"sm",variant:"outline",disabled:h,"aria-label":"Refresh dashboard",children:[e.jsx(Hs,{className:$("h-4 w-4 mr-2",h&&"animate-spin")}),h?"Refreshing…":"Refresh All"]}),e.jsxs(B,{onClick:()=>u(!0),size:"sm",variant:"outline",children:[e.jsx(Pt,{className:"h-4 w-4 mr-2"}),"Edit Layout"]})]})})]}),i&&e.jsx(_i,{className:"layout",width:d,layouts:b,breakpoints:{lg:1200,md:996,sm:768,xs:480,xxs:0},cols:{lg:12,md:10,sm:6,xs:4,xxs:2},rowHeight:60,dragConfig:{enabled:o,handle:".drag-handle"},resizeConfig:{enabled:o},onLayoutChange:f,children:t.widgets?.map((R,F)=>{const y=R.id||`widget-${F}`,S=D(R),E=R.type==="metric";return e.jsx("div",{className:"h-full",children:E?e.jsxs("div",{className:"h-full w-full relative",children:[o&&e.jsx("div",{className:"drag-handle absolute top-2 right-2 z-10 cursor-move p-1 bg-background/80 rounded border border-border",children:e.jsx(ra,{className:"h-4 w-4"})}),e.jsx(_e,{schema:S,className:"h-full w-full"})]}):e.jsxs(Fe,{className:$("h-full overflow-hidden border-border/50 shadow-sm transition-all","bg-card/50 backdrop-blur-sm",o&&"ring-2 ring-primary/20"),children:[R.title&&e.jsxs(Ie,{className:"pb-2 border-b border-border/40 bg-muted/20 flex flex-row items-center justify-between",children:[e.jsx($e,{className:"text-base font-medium tracking-tight truncate",title:R.title,children:R.title}),o&&e.jsx("div",{className:"drag-handle cursor-move p-1 hover:bg-muted/40 rounded",children:e.jsx(ra,{className:"h-4 w-4"})})]}),e.jsx(Oe,{className:"p-0 h-full",children:e.jsx("div",{className:$("h-full w-full overflow-auto p-4"),children:e.jsx(_e,{schema:S})})})]})},y)})})]})};function Os(t){if(t!=null)return typeof t=="string"?t:t.defaultValue||t.key}const Bi=({label:t,value:s,trend:a,icon:r,className:l,description:d,...c})=>{const i=m.useMemo(()=>{if(typeof r=="string"){const o=nr[r];return o?e.jsx(o,{className:"h-4 w-4 text-muted-foreground"}):null}return r},[r]);return e.jsxs(Fe,{className:$("h-full overflow-hidden",l),...c,children:[e.jsxs(Ie,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx($e,{className:"text-sm font-medium truncate",children:Os(t)}),i&&e.jsx("div",{className:"h-4 w-4 text-muted-foreground shrink-0",children:i})]}),e.jsxs(Oe,{children:[e.jsx("div",{className:"text-2xl font-bold truncate",children:s}),(a||d)&&e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1 truncate",children:[a&&e.jsxs("span",{className:$("flex items-center mr-2 shrink-0",a.direction==="up"&&"text-green-500",a.direction==="down"&&"text-red-500",a.direction==="neutral"&&"text-yellow-500"),children:[a.direction==="up"&&e.jsx(lr,{className:"h-3 w-3 mr-1"}),a.direction==="down"&&e.jsx(ir,{className:"h-3 w-3 mr-1"}),a.direction==="neutral"&&e.jsx(or,{className:"h-3 w-3 mr-1"}),a.value,"%"]}),e.jsx("span",{className:"truncate",children:Os(d)||Os(a?.label)})]})]})]})};function Aa(t){if(t!=null)return typeof t=="string"?t:t.defaultValue||t.key}const Vi=({title:t,value:s,icon:a,trend:r,trendValue:l,description:d,className:c,...i})=>{const o=a&&nr[a];return e.jsxs(Fe,{className:$("h-full",c),...i,children:[e.jsxs(Ie,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx($e,{className:"text-sm font-medium",children:Aa(t)}),o&&e.jsx(o,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Oe,{children:[e.jsx("div",{className:"text-2xl font-bold",children:s}),(r||l||d)&&e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[r&&l&&e.jsxs("span",{className:$("flex items-center mr-2",r==="up"&&"text-green-500",r==="down"&&"text-red-500",r==="neutral"&&"text-yellow-500"),children:[r==="up"&&e.jsx(lr,{className:"h-3 w-3 mr-1"}),r==="down"&&e.jsx(ir,{className:"h-3 w-3 mr-1"}),r==="neutral"&&e.jsx(or,{className:"h-3 w-3 mr-1"}),l]}),Aa(d)]})]})]})};function Hi(t,s){if(!s)return String(t);let a="",r="",l=!1,d,c=s;const i=c.match(/^([^0-9.,#]*)/);if(i&&i[1]){const h=i[1];a=h.replace(",",""),h.includes(",")&&(l=!0),c=c.slice(i[1].length)}c.includes(",")&&(l=!0,c=c.replace(/,/g,""));const o=c.match(/\.(\d+)f?/);o&&(d=Number(o[1]),c=c.slice(o[0].length)),r=c.replace(/[0-9#.f]/g,"");const u=d!==void 0?t.toFixed(d):String(t);if(l){const[h,n]=u.split("."),N=h.replace(/\B(?=(\d{3})+(?!\d))/g,",");return a+(n!==void 0?`${N}.${n}`:N)+r}return a+u+r}function cs(t,s){if(t.length===0)return 0;switch(s){case"sum":return t.reduce((a,r)=>a+r,0);case"count":return t.length;case"avg":return t.reduce((a,r)=>a+r,0)/t.length;case"min":return Math.min(...t);case"max":return Math.max(...t);default:return t.reduce((a,r)=>a+r,0)}}const Br=({schema:t,className:s})=>{const{title:a,rowField:r,columnField:l,valueField:d,aggregation:c="sum",data:i=[],showRowTotals:o=!1,showColumnTotals:u=!1,format:h,columnColors:n}=t,N=Array.isArray(i)?i:[],{rowKeys:w,colKeys:g,matrix:b,rowTotals:p,colTotals:f,grandTotal:x}=m.useMemo(()=>{const D=new Map,R=new Map,F={};for(const L of N){const j=String(L[r]??""),k=String(L[l]??""),T=Number(L[d])||0;D.set(j,!0),R.set(k,!0),F[j]||(F[j]={}),F[j][k]||(F[j][k]=[]),F[j][k].push(T)}const y=Array.from(D.keys()),S=Array.from(R.keys()),E={},I={},O={};for(const L of y){E[L]={};const j=[];for(const k of S){const T=F[L]?.[k]??[],H=cs(T,c);E[L][k]=H,j.push(...T),!O[k]&&O[k]}I[L]=cs(j,c)}for(const L of S){const j=[];for(const k of y){const T=F[k]?.[L]??[];j.push(...T)}O[L]=cs(j,c)}const A=[];for(const L of N)A.push(Number(L[d])||0);const M=cs(A,c);return{rowKeys:y,colKeys:S,matrix:E,rowTotals:I,colTotals:O,grandTotal:M}},[N,r,l,d,c]),C=D=>Hi(D,h);return N.length===0?e.jsxs("div",{className:$("overflow-auto",s),children:[a&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:a}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground","data-testid":"pivot-empty-state",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"3",y:"3",width:"7",height:"7"}),e.jsx("rect",{x:"14",y:"3",width:"7",height:"7"}),e.jsx("rect",{x:"3",y:"14",width:"7",height:"7"}),e.jsx("rect",{x:"14",y:"14",width:"7",height:"7"})]}),e.jsx("p",{className:"text-xs",children:"No data available"})]})]}):e.jsxs("div",{className:$("overflow-auto",s),children:[a&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:a}),e.jsxs("table",{className:"w-full text-sm border-collapse",role:"table",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-2 font-medium text-muted-foreground",children:r}),g.map(D=>e.jsx("th",{className:$("text-right p-2 font-medium",n?.[D]??"text-muted-foreground"),children:D},D)),o&&e.jsx("th",{className:"text-right p-2 font-semibold text-muted-foreground bg-muted/20",children:"Total"})]})}),e.jsx("tbody",{children:w.map(D=>e.jsxs("tr",{className:"border-b border-border/50 hover:bg-muted/30",children:[e.jsx("td",{className:"p-2 font-medium",children:D}),g.map(R=>e.jsx("td",{className:$("text-right p-2 tabular-nums",n?.[R]),children:C(b[D]?.[R]??0)},R)),o&&e.jsx("td",{className:"text-right p-2 font-semibold tabular-nums bg-muted/20",children:C(p[D]??0)})]},D))}),u&&e.jsx("tfoot",{children:e.jsxs("tr",{className:"border-t-2 border-border font-semibold bg-muted/40",children:[e.jsx("td",{className:"p-2",children:"Total"}),g.map(D=>e.jsx("td",{className:"text-right p-2 tabular-nums",children:C(f[D]??0)},D)),o&&e.jsx("td",{className:"text-right p-2 tabular-nums font-bold",children:C(x)})]})})]})]})},qi=({schema:t,dataSource:s,className:a})=>{const r=m.useContext(Ls),l=s||r?.dataSource,d=_s(t.bind),[c,i]=m.useState([]),[o,u]=m.useState(!1),[h,n]=m.useState(null);m.useEffect(()=>{let b=!0;const p=async()=>{if(!(!l||!t.objectName)){b&&(u(!0),n(null));try{let f;if(typeof l.find=="function"){const x=await l.find(t.objectName,{$filter:t.filter});f=Ha(x)}else return;b&&i(f)}catch(f){console.error("[ObjectPivotTable] Fetch error:",f),b&&n(f instanceof Error?f.message:"Failed to load data")}finally{b&&u(!1)}}};return t.objectName&&!d&&(!t.data||t.data.length===0)&&p(),()=>{b=!1}},[t.objectName,l,d,t.data,t.filter]);const N=d||t.data||c,w=Array.isArray(N)?N:[];if(o&&w.length===0)return e.jsxs("div",{className:$("overflow-auto",a),"data-testid":"pivot-loading",children:[t.title&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:t.title}),e.jsxs("div",{className:"space-y-2 p-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ge,{className:"h-6 w-24"}),e.jsx(ge,{className:"h-6 w-20"}),e.jsx(ge,{className:"h-6 w-20"}),e.jsx(ge,{className:"h-6 w-20"})]}),[1,2,3].map(b=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ge,{className:"h-5 w-24"}),e.jsx(ge,{className:"h-5 w-20"}),e.jsx(ge,{className:"h-5 w-20"}),e.jsx(ge,{className:"h-5 w-20"})]},b))]})]});if(h)return e.jsxs("div",{className:$("overflow-auto",a),"data-testid":"pivot-error",children:[t.title&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:t.title}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-destructive","data-testid":"pivot-error-message",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-60",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),e.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),e.jsx("p",{className:"text-xs",children:h})]})]});if(!l&&t.objectName&&w.length===0)return e.jsxs("div",{className:$("overflow-auto",a),children:[t.title&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:t.title}),e.jsx("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:e.jsxs("p",{className:"text-xs",children:["No data source available for “",t.objectName,"”"]})})]});const g={...t,data:w};return e.jsx(Br,{schema:g,className:a})},Wi=({schema:t,dataSource:s,className:a})=>{const r=m.useContext(Ls),l=s||r?.dataSource,d=_s(t.bind),[c,i]=m.useState([]),[o,u]=m.useState(!1),[h,n]=m.useState(null);m.useEffect(()=>{let p=!0;const f=async()=>{if(!(!l||!t.objectName)){p&&(u(!0),n(null));try{let x;if(typeof l.find=="function"){const C=await l.find(t.objectName,{$filter:t.filter});x=Ha(C)}else return;p&&i(x)}catch(x){console.error("[ObjectDataTable] Fetch error:",x),p&&n(x instanceof Error?x.message:"Failed to load data")}finally{p&&u(!1)}}};return t.objectName&&!d&&(!t.data||t.data.length===0)&&f(),()=>{p=!1}},[t.objectName,l,d,t.data,t.filter]);const N=d||t.data||c,w=Array.isArray(N)?N:[],g=m.useMemo(()=>t.columns&&t.columns.length>0?t.columns:w.length===0?[]:Object.keys(w[0]).filter(f=>!f.startsWith("_")).map(f=>({header:f.charAt(0).toUpperCase()+f.slice(1).replace(/([A-Z])/g," $1"),accessorKey:f})),[t.columns,w]);if(o&&w.length===0)return e.jsx("div",{className:$("overflow-auto",a),"data-testid":"table-loading",children:e.jsxs("div",{className:"space-y-2 p-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ge,{className:"h-6 w-1/4"}),e.jsx(ge,{className:"h-6 w-1/4"}),e.jsx(ge,{className:"h-6 w-1/4"}),e.jsx(ge,{className:"h-6 w-1/4"})]}),[1,2,3,4].map(p=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ge,{className:"h-5 w-1/4"}),e.jsx(ge,{className:"h-5 w-1/4"}),e.jsx(ge,{className:"h-5 w-1/4"}),e.jsx(ge,{className:"h-5 w-1/4"})]},p))]})});if(h)return e.jsx("div",{className:$("overflow-auto",a),"data-testid":"table-error",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-destructive","data-testid":"table-error-message",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-60",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),e.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),e.jsx("p",{className:"text-xs",children:h})]})});if(!l&&t.objectName&&w.length===0)return e.jsx("div",{className:$("overflow-auto",a),children:e.jsx("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:e.jsxs("p",{className:"text-xs",children:["No data source available for “",t.objectName,"”"]})})});if(w.length===0)return e.jsx("div",{className:$("overflow-auto",a),"data-testid":"table-empty-state",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e.jsx("line",{x1:"3",y1:"9",x2:"21",y2:"9"}),e.jsx("line",{x1:"9",y1:"21",x2:"9",y2:"9"})]}),e.jsx("p",{className:"text-xs",children:"No data available"})]})});const b={...t,type:"data-table",data:w,columns:g};return e.jsx(_e,{schema:b,className:a})},Gi={breadcrumb:["Dashboard","Configuration"],sections:[{key:"layout",title:"Layout",fields:[{key:"columns",label:"Columns",type:"slider",defaultValue:3,min:1,max:12,step:1},{key:"gap",label:"Gap",type:"slider",defaultValue:4,min:0,max:16,step:1},{key:"rowHeight",label:"Row height",type:"input",defaultValue:"120",placeholder:"e.g. 120"}]},{key:"data",title:"Data",collapsible:!0,fields:[{key:"refreshInterval",label:"Refresh interval",type:"select",defaultValue:"0",options:[{value:"0",label:"Manual"},{value:"30",label:"30s"},{value:"60",label:"1 min"},{value:"300",label:"5 min"}]}]},{key:"appearance",title:"Appearance",collapsible:!0,defaultCollapsed:!0,fields:[{key:"title",label:"Title",type:"input",placeholder:"Dashboard title"},{key:"showDescription",label:"Show description",type:"switch",defaultValue:!0},{key:"theme",label:"Theme",type:"select",defaultValue:"auto",options:[{value:"light",label:"Light"},{value:"dark",label:"Dark"},{value:"auto",label:"Auto"}]}]}]};function Fo({open:t,onClose:s,config:a,onSave:r,onFieldChange:l}){const{draft:d,isDirty:c,updateField:i,discard:o}=Is(a,{onUpdate:l});return e.jsx($s,{open:t,onClose:s,schema:Gi,draft:d,isDirty:c,onFieldChange:i,onSave:()=>r(d),onDiscard:o})}const Ui=[{value:"metric",label:"Metric"},{value:"bar",label:"Bar Chart"},{value:"line",label:"Line Chart"},{value:"pie",label:"Pie Chart"},{value:"donut",label:"Donut Chart"},{value:"area",label:"Area Chart"},{value:"scatter",label:"Scatter Plot"},{value:"table",label:"Table"},{value:"pivot",label:"Pivot Table"},{value:"list",label:"List"},{value:"custom",label:"Custom"}],Yi=[{value:"default",label:"Default"},{value:"blue",label:"Blue"},{value:"teal",label:"Teal"},{value:"orange",label:"Orange"},{value:"purple",label:"Purple"},{value:"success",label:"Success"},{value:"warning",label:"Warning"},{value:"danger",label:"Danger"}],za=[{value:"count",label:"Count"},{value:"sum",label:"Sum"},{value:"avg",label:"Average"},{value:"min",label:"Min"},{value:"max",label:"Max"}],Xi=["bar","line","area","pie","donut","scatter"];function Ma(t){return!!t&&Xi.includes(t)}const La=[{value:"group",label:"Group"},{value:"value",label:"Value"}],_a=[{value:"asc",label:"↑"},{value:"desc",label:"↓"}];function Kt(t,s,a,r){return{key:t,label:s,type:"custom",render:(l,d,c)=>e.jsx(Ya,{label:s,children:e.jsx("div",{"data-testid":`config-field-${t}`,children:e.jsx(Xa,{options:r??[],value:l??"",onValueChange:d,placeholder:a,searchPlaceholder:"Search fields…",emptyText:"No fields found.",className:"h-7 w-32 text-xs",disabled:!c.object})})})}}function Ki(t,s,a){const r=t&&t.length>0,l=r?{key:"object",label:"Data source",type:"custom",render:(N,w)=>e.jsx(Ya,{label:"Data source",children:e.jsx("div",{"data-testid":"config-field-object",children:e.jsx(Xa,{options:t,value:N??"",onValueChange:w,placeholder:"Select object…",searchPlaceholder:"Search objects…",emptyText:"No objects found.",className:"h-7 w-32 text-xs"})})})}:{key:"object",label:"Data source",type:"input",placeholder:"Object name"},d=r?Kt("categoryField","Category field","Select field…",s):{key:"categoryField",label:"Category field",type:"input",placeholder:"e.g. status"},c=r?Kt("valueField","Value field","Select field…",s):{key:"valueField",label:"Value field",type:"input",placeholder:"e.g. amount"},i=r?Kt("rowField","Field","Select row field…",s):{key:"rowField",label:"Field",type:"input",placeholder:"e.g. owner"},o=r?Kt("columnField","Field","Select column field…",s):{key:"columnField",label:"Field",type:"input",placeholder:"e.g. stage"},u=r?Kt("pivotValueField","Field","Select value field…",s):{key:"pivotValueField",label:"Field",type:"input",placeholder:"e.g. amount"};return{breadcrumb:["Dashboard",{pivot:"Pivot table",table:"Table"}[a??""]??(Ma(a)?"Chart":"Widget")],sections:[{key:"general",title:"General",fields:[{key:"title",label:"Title",type:"input",placeholder:"Widget title"},{key:"description",label:"Description",type:"input",placeholder:"Widget description"},{key:"type",label:"Widget type",type:"select",options:Ui,defaultValue:"metric"}]},{key:"data",title:"Data Binding",collapsible:!0,visibleWhen:N=>N.type!=="pivot",fields:[l,d,c,{key:"aggregate",label:"Aggregation",type:"select",options:za,defaultValue:"count"}]},{key:"pivot-data",title:"Data",collapsible:!0,visibleWhen:N=>N.type==="pivot",fields:[l]},{key:"pivot-rows",title:"Rows",collapsible:!0,visibleWhen:N=>N.type==="pivot",fields:[i,{key:"rowSortBy",label:"Sort by",type:"icon-group",options:La,defaultValue:"group"},{key:"rowSortOrder",label:"Sort order",type:"icon-group",options:_a,defaultValue:"asc"},{key:"showRowLabels",label:"Show label",type:"switch",defaultValue:!0},{key:"showRowTotals",label:"Show totals",type:"switch",defaultValue:!1}]},{key:"pivot-columns",title:"Columns",collapsible:!0,visibleWhen:N=>N.type==="pivot",fields:[o,{key:"columnSortBy",label:"Sort by",type:"icon-group",options:La,defaultValue:"group"},{key:"columnSortOrder",label:"Sort order",type:"icon-group",options:_a,defaultValue:"asc"},{key:"showColumnLabels",label:"Show label",type:"switch",defaultValue:!0},{key:"showColumnTotals",label:"Show totals",type:"switch",defaultValue:!1}]},{key:"pivot-values",title:"Values",collapsible:!0,visibleWhen:N=>N.type==="pivot",fields:[u,{key:"aggregation",label:"Aggregation",type:"select",options:za,defaultValue:"sum"},{key:"format",label:"Number format",type:"input",placeholder:"e.g. $,.2f"}]},{key:"chart-axis",title:"Axis & Series",collapsible:!0,visibleWhen:N=>Ma(N.type),fields:[{key:"xAxisLabel",label:"X-axis label",type:"input",placeholder:"e.g. Month"},{key:"yAxisLabel",label:"Y-axis label",type:"input",placeholder:"e.g. Revenue"},{key:"showLegend",label:"Show legend",type:"switch",defaultValue:!0}]},{key:"table-columns",title:"Columns",collapsible:!0,visibleWhen:N=>N.type==="table",fields:[{key:"searchable",label:"Searchable",type:"switch",defaultValue:!1},{key:"pagination",label:"Pagination",type:"switch",defaultValue:!1}]},{key:"layout",title:"Layout",collapsible:!0,fields:[{key:"layoutW",label:"Width (columns)",type:"slider",min:1,max:12,step:1,defaultValue:1},{key:"layoutH",label:"Height (rows)",type:"slider",min:1,max:6,step:1,defaultValue:1}]},{key:"appearance",title:"Appearance",collapsible:!0,defaultCollapsed:!0,fields:[{key:"colorVariant",label:"Color variant",type:"select",options:Yi,defaultValue:"default"},{key:"actionUrl",label:"Action URL",type:"input",placeholder:"https://..."}]}]}}function Ia(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){const s=t;return s.defaultValue||s.key||""}return String(t)}function Oo({open:t,onClose:s,config:a,onSave:r,onFieldChange:l,headerExtra:d,availableObjects:c,availableFields:i}){const o=m.useMemo(()=>({...a,title:typeof a.title=="object"?Ia(a.title):a.title,description:typeof a.description=="object"?Ia(a.description):a.description}),[a]),{draft:u,isDirty:h,updateField:n,discard:N}=Is(o,{onUpdate:l}),w=m.useMemo(()=>Ki(c,i,u.type),[c,i,u.type]);return e.jsx($s,{open:t,onClose:s,schema:w,draft:u,isDirty:h,onFieldChange:n,onSave:()=>r(u),onDiscard:N,headerExtra:d})}je.register("dashboard",El,{namespace:"view",label:"Dashboard",category:"Complex",icon:"layout-dashboard",inputs:[{name:"columns",type:"number",label:"Columns",defaultValue:3},{name:"gap",type:"number",label:"Gap",defaultValue:4},{name:"className",type:"string",label:"CSS Class"}],defaultProps:{columns:3,widgets:[]}});je.register("metric",Bi,{namespace:"plugin-dashboard",label:"Metric Widget",category:"Dashboard",inputs:[{name:"label",type:"string",label:"Label"},{name:"value",type:"string",label:"Value"}]});je.register("metric-card",Vi,{namespace:"plugin-dashboard",label:"Metric Card",category:"Dashboard",inputs:[{name:"title",type:"string",label:"Title"},{name:"value",type:"string",label:"Value",required:!0},{name:"icon",type:"string",label:"Icon (Lucide name)"},{name:"trend",type:"enum",label:"Trend",enum:[{label:"Up",value:"up"},{label:"Down",value:"down"},{label:"Neutral",value:"neutral"}]},{name:"trendValue",type:"string",label:"Trend Value (e.g., +12%)"},{name:"description",type:"string",label:"Description"}],defaultProps:{title:"Metric",value:"0"}});je.register("pivot",Br,{namespace:"plugin-dashboard",label:"Pivot Table",category:"Dashboard",icon:"table-2",inputs:[{name:"title",type:"string",label:"Title"},{name:"rowField",type:"string",label:"Row Field",required:!0},{name:"columnField",type:"string",label:"Column Field",required:!0},{name:"valueField",type:"string",label:"Value Field",required:!0},{name:"aggregation",type:"enum",label:"Aggregation",enum:[{label:"Sum",value:"sum"},{label:"Count",value:"count"},{label:"Average",value:"avg"},{label:"Min",value:"min"},{label:"Max",value:"max"}]},{name:"showRowTotals",type:"boolean",label:"Show Row Totals"},{name:"showColumnTotals",type:"boolean",label:"Show Column Totals"},{name:"format",type:"string",label:"Number Format"}],defaultProps:{rowField:"",columnField:"",valueField:"",aggregation:"sum",data:[]}});je.register("object-pivot",qi,{namespace:"plugin-dashboard",label:"Object Pivot Table",category:"Dashboard",icon:"table-2",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"title",type:"string",label:"Title"},{name:"rowField",type:"string",label:"Row Field",required:!0},{name:"columnField",type:"string",label:"Column Field",required:!0},{name:"valueField",type:"string",label:"Value Field",required:!0},{name:"aggregation",type:"enum",label:"Aggregation",enum:[{label:"Sum",value:"sum"},{label:"Count",value:"count"},{label:"Average",value:"avg"},{label:"Min",value:"min"},{label:"Max",value:"max"}]},{name:"showRowTotals",type:"boolean",label:"Show Row Totals"},{name:"showColumnTotals",type:"boolean",label:"Show Column Totals"},{name:"filter",type:"array",label:"Filter"},{name:"format",type:"string",label:"Number Format"}],defaultProps:{rowField:"",columnField:"",valueField:"",aggregation:"sum"}});je.register("dashboard-grid",$i,{namespace:"plugin-dashboard",label:"Dashboard Grid (Editable)",category:"Complex",icon:"layout-grid",inputs:[{name:"title",type:"string",label:"Title"},{name:"persistLayoutKey",type:"string",label:"Layout Storage Key",defaultValue:"dashboard-layout"},{name:"className",type:"string",label:"CSS Class"}],defaultProps:{title:"Dashboard",widgets:[],persistLayoutKey:"dashboard-layout"}});je.register("object-data-table",Wi,{namespace:"plugin-dashboard",label:"Object Data Table",category:"Dashboard",icon:"table",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"columns",type:"array",label:"Columns"},{name:"filter",type:"array",label:"Filter"},{name:"searchable",type:"boolean",label:"Searchable"},{name:"pagination",type:"boolean",label:"Pagination"}],defaultProps:{searchable:!1,pagination:!1}});const Ji=({schema:t})=>{const{title:s,description:a,data:r,columns:l}=t;t.chart?.type;const d=!!t.chart;return e.jsxs(Fe,{className:`h-full flex flex-col ${t.className||""}`,children:[e.jsxs(Ie,{children:[s&&e.jsx($e,{children:s}),a&&e.jsx(Bs,{children:a})]}),e.jsxs(Oe,{className:"flex-1 overflow-auto space-y-4",children:[d&&(()=>{const c=t.chart?.type;let i=c?je.get(c):null;return i||(i=je.get("chart")),i?e.jsx("div",{className:"min-h-[300px] border rounded-lg p-4 bg-background/50",children:e.jsx(i,{schema:{...t.chart,data:t.chart.data||r}})}):e.jsxs("div",{className:"min-h-[100px] border rounded-md p-4 bg-muted/20 text-muted-foreground flex items-center justify-center",children:["Unknown component type: ",c||"chart"]})})(),r&&r.length>0&&e.jsx("div",{className:"border rounded-lg",children:(()=>{const c=je.get("aggrid")||je.get("table");return c?e.jsx(c,{schema:{type:"aggrid",rowData:r,columnDefs:l,domLayout:"autoHeight"}}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{className:"text-xs uppercase bg-muted",children:e.jsx("tr",{children:l?.map(i=>e.jsx("th",{className:"px-6 py-3",children:i.headerName||i.label||i.field},i.field))})}),e.jsx("tbody",{children:r.map((i,o)=>e.jsx("tr",{className:"bg-background border-b",children:l?.map(u=>e.jsx("td",{className:"px-6 py-4",children:i[u.field]},u.field))},o))})]})})})()})]})]})};function Qi(t,s,a){const r=t.fields||[],l=r.map(i=>i.label||i.name),d=s.map(i=>r.map(o=>{let u=i[o.name];return u=Hr(u),typeof u=="string"&&(u.includes(",")||u.includes('"')||u.includes(`
6
- `))?`"${u.replace(/"/g,'""')}"`:u??""})),c=[...a?.includeHeaders!==!1?[l.join(",")]:[],...d.map(i=>i.join(","))].join(`
7
- `);js(c,a?.filename||`${t.title||"report"}.csv`,"text/csv")}function Zi(t,s,a){const r={title:t.title,description:t.description,generatedAt:new Date().toISOString(),data:s},l=JSON.stringify(r,null,2);js(l,a?.filename||`${t.title||"report"}.json`,"application/json")}function Vr(t,s,a){const r=t.fields||[],l=Wr(a?.orientation),d=qr(a?.pageSize),c=`<!DOCTYPE html>
8
- <html>
9
- <head>
10
- <meta charset="utf-8">
11
- <title>${rt(t.title||"Report")}</title>
12
- <style>
13
- @page { size: ${d} ${l}; margin: 20mm; }
14
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #333; }
15
- h1 { font-size: 24px; margin-bottom: 8px; }
16
- .description { color: #666; margin-bottom: 24px; }
17
- .meta { color: #999; font-size: 12px; margin-bottom: 16px; }
18
- table { width: 100%; border-collapse: collapse; margin-top: 16px; }
19
- th { background: #f5f5f5; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }
20
- td { padding: 8px 12px; border: 1px solid #ddd; }
21
- tr:nth-child(even) { background: #fafafa; }
22
- </style>
23
- </head>
24
- <body>
25
- <h1>${rt(t.title||"Report")}</h1>
26
- ${t.description?`<p class="description">${rt(t.description)}</p>`:""}
27
- <p class="meta">Generated: ${new Date().toLocaleString()}</p>
28
- <table>
29
- <thead><tr>${r.map(i=>`<th>${rt(i.label||i.name)}</th>`).join("")}</tr></thead>
30
- <tbody>${s.map(i=>`<tr>${r.map(o=>`<td>${rt(String(i[o.name]??""))}</td>`).join("")}</tr>`).join("")}</tbody>
31
- </table>
32
- </body>
33
- </html>`;js(c,a?.filename||`${t.title||"report"}.html`,"text/html")}function eo(t,s,a){const r=t.fields||[],l=Wr(a?.orientation),d=qr(a?.pageSize),c=window.open("","_blank");if(!c){const i={...a,filename:a?.filename?.replace(/\.pdf$/,".html")||`${t.title||"report"}.html`};Vr(t,s,i);return}c.document.write(`<!DOCTYPE html>
34
- <html>
35
- <head>
36
- <meta charset="utf-8">
37
- <title>${rt(t.title||"Report")}</title>
38
- <style>
39
- @page { size: ${d} ${l}; margin: 20mm; }
40
- @media print { .no-print { display: none; } }
41
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #333; }
42
- h1 { font-size: 24px; margin-bottom: 8px; }
43
- .description { color: #666; margin-bottom: 24px; }
44
- .meta { color: #999; font-size: 12px; margin-bottom: 16px; }
45
- table { width: 100%; border-collapse: collapse; margin-top: 16px; }
46
- th { background: #f5f5f5; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }
47
- td { padding: 8px 12px; border: 1px solid #ddd; }
48
- tr:nth-child(even) { background: #fafafa; }
49
- </style>
50
- </head>
51
- <body>
52
- <h1>${rt(t.title||"Report")}</h1>
53
- ${t.description?`<p class="description">${rt(t.description)}</p>`:""}
54
- <p class="meta">Generated: ${new Date().toLocaleString()}</p>
55
- <table>
56
- <thead><tr>${r.map(i=>`<th>${rt(i.label||i.name)}</th>`).join("")}</tr></thead>
57
- <tbody>${s.map(i=>`<tr>${r.map(o=>`<td>${rt(String(i[o.name]??""))}</td>`).join("")}</tr>`).join("")}</tbody>
58
- </table>
59
- </body>
60
- </html>`),c.document.close(),c.onload=()=>{c.print()}}function to(t,s,a){const r=t.fields||[],l=r.map(i=>i.label||i.name),d=s.map(i=>r.map(o=>{let u=i[o.name];return u=Hr(u),typeof u=="string"&&(u.includes(",")||u.includes('"')||u.includes(`
61
- `)||u.includes(" "))?`"${u.replace(/"/g,'""')}"`:u??""})),c="\uFEFF"+[...a?.includeHeaders!==!1?[l.join(" ")]:[],...d.map(i=>i.join(" "))].join(`
62
- `);js(c,a?.filename||`${t.title||"report"}.tsv`,"text/tab-separated-values")}function so(t,s,a,r){switch(t){case"csv":Qi(s,a,r);break;case"json":Zi(s,a,r);break;case"html":Vr(s,a,r);break;case"pdf":eo(s,a,r);break;case"excel":to(s,a,r);break;default:console.warn(`Unsupported export format: ${t}`)}}function rt(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function Hr(t){if(typeof t=="string"&&t.length>0){const s=t.charAt(0);if(s==="="||s==="+"||s==="-"||s==="@"||s==="|")return` ${t}`}return t}function qr(t){return["A4","A3","Letter","Legal"].includes(t||"")?t:"A4"}function Wr(t){return t==="landscape"?"landscape":"portrait"}function js(t,s,a){const r=new Blob([t],{type:`${a};charset=utf-8`}),l=URL.createObjectURL(r),d=document.createElement("a");d.href=l,d.download=s,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(l)}function $a(t,s){if(t==null||t==="")return"";const a=s?.type,r=s?.format;if(a==="date"||r==="date"||ao(t))return ro(t);if(a==="number"||typeof t=="number"){const l=typeof t=="number"?t:Number(t);return isNaN(l)?String(t):r==="currency"||r==="currency_cny"?`¥${l.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})}`:r==="currency_usd"?`$${l.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})}`:r==="percent"?`${l.toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}%`:l.toLocaleString("en-US")}return String(t)}function ao(t){return typeof t!="string"?!1:/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2})?/.test(t)}function ro(t){try{const s=new Date(t);if(isNaN(s.getTime()))return String(t);const a=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),l=String(s.getDate()).padStart(2,"0");return`${a}-${r}-${l}`}catch{return String(t)}}function no(t,s){if(!s||s.length===0||!t||t.length===0)return null;const a=s[0],r=a.field,l=new Map;for(const i of t){const o=String(i[r]??"(empty)");l.has(o)||l.set(o,[]),l.get(o).push(i)}const d=[];for(const[i,o]of l)d.push({key:i,label:`${a.label||r}: ${i}`,rows:o});const c=a.sort==="desc"?-1:1;return d.sort((i,o)=>i.key.localeCompare(o.key)*c),d}const Gr=({schema:t,onRefresh:s})=>{const{report:a,data:r,showToolbar:l=!0,allowExport:d=!0,allowPrint:c=!0,loading:i=!1}=t,o=g=>{if(!a){console.warn("ReportViewer: Cannot export, no report defined");return}so(g,a,r||[],a.exportConfigs?.[g])},u=()=>{window.print()},h=()=>{s?.()},n=(g,b)=>{if(!r)return 0;const p=r.map(f=>Number(f[g])||0);switch(b){case"count":return r.length;case"sum":return p.reduce((f,x)=>f+x,0);case"avg":return p.length>0?(p.reduce((f,x)=>f+x,0)/p.length).toFixed(2):0;case"min":return p.length>0?Math.min(...p):0;case"max":return p.length>0?Math.max(...p):0;default:return""}},N=(g,b)=>{const p=a?.conditionalFormatting;if(!(!p||!Array.isArray(p)))for(const f of p){if(f.field!==g)continue;const x=String(b??""),C=String(f.value??"");let D=!1;switch(f.operator){case"equals":D=x===C;break;case"not_equals":D=x!==C;break;case"contains":D=x.includes(C);break;case"greater_than":D=Number(b)>Number(f.value);break;case"less_than":D=Number(b)<Number(f.value);break}if(D){const R={};return f.backgroundColor&&(R.backgroundColor=f.backgroundColor),f.textColor&&(R.color=f.textColor),R}}},w=(g,b)=>{if(g==null||g==="")return"";if(b.renderAs==="badge"){const p=b.colorMap?.[String(g)]||"";return e.jsx(Jt,{className:p,children:String(g)})}return $a(g,b)};return a?e.jsxs("div",{className:"space-y-4",children:[l&&e.jsxs("div",{className:"flex items-center justify-between gap-2 p-4 bg-card rounded-lg border",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold",children:a.title}),a.description&&e.jsx("p",{className:"text-sm text-muted-foreground",children:a.description})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a.refreshInterval&&e.jsxs(B,{variant:"outline",size:"sm",onClick:h,children:[e.jsx(Hs,{className:"h-4 w-4 mr-2"}),"Refresh"]}),c&&e.jsxs(B,{variant:"outline",size:"sm",onClick:u,children:[e.jsx(Qa,{className:"h-4 w-4 mr-2"}),"Print"]}),d&&a.showExportButtons&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(B,{variant:"outline",size:"sm",onClick:()=>o("pdf"),children:[e.jsx(Lt,{className:"h-4 w-4 mr-2"}),"PDF"]}),e.jsxs(B,{variant:"outline",size:"sm",onClick:()=>o("excel"),children:[e.jsx(Lt,{className:"h-4 w-4 mr-2"}),"Excel"]}),e.jsxs(B,{variant:"outline",size:"sm",onClick:()=>o("csv"),children:[e.jsx(Lt,{className:"h-4 w-4 mr-2"}),"CSV"]})]})]})]}),e.jsxs(Fe,{children:[e.jsxs(Ie,{children:[!l&&a.title&&e.jsx($e,{children:a.title}),!l&&a.description&&e.jsx(Bs,{children:a.description})]}),e.jsxs(Oe,{className:"space-y-6",children:[i&&e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[1,2,3].map(g=>e.jsx(Fe,{children:e.jsxs(Oe,{className:"p-4 space-y-2",children:[e.jsx(ge,{className:"h-4 w-20"}),e.jsx(ge,{className:"h-8 w-28"})]})},g))}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ge,{className:"h-10 w-full"}),[1,2,3,4,5].map(g=>e.jsx(ge,{className:"h-8 w-full"},g))]})]}),!i&&a.sections?.map((g,b)=>g.visible===!1?null:e.jsxs("div",{className:"space-y-2",children:[g.title&&g.type!=="header"&&e.jsx("h3",{className:"text-lg font-semibold border-b pb-2",children:g.title}),g.type==="header"&&g.title&&e.jsx("div",{className:"text-2xl font-bold py-4",children:g.title}),g.type==="summary"&&e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:a.fields?.filter(p=>p.showInSummary).map((p,f)=>e.jsx(Fe,{children:e.jsxs(Oe,{className:"p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:p.label||p.name}),e.jsx("div",{className:"text-2xl font-bold",children:$a(n(p.name,p.aggregation),p)})]})},f))}),g.type==="chart"&&g.chart&&e.jsx("div",{className:"min-h-[300px]",children:(()=>{let p=g.chart.type;const f=!!g.chart.chartType;!p&&f&&(p="chart"),p&&!!je.get(p)||(p="chart");const D=p==="chart"?{xAxisKey:g.chart.xAxisKey||g.chart.xAxisField||"name",series:g.chart.series||(g.chart.yAxisFields?g.chart.yAxisFields.map(F=>({dataKey:F})):[]),chartType:g.chart.chartType||"bar"}:{},R={...g.chart,type:p,...D,data:r||g.chart.data,className:g.chart.className||"w-full h-[350px]"};return e.jsx(_e,{schema:R})})()}),g.type==="table"&&e.jsx("div",{className:"border rounded-lg overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm min-w-[600px]",children:[e.jsx("thead",{className:"bg-muted",children:e.jsx("tr",{children:g.columns?.map((p,f)=>e.jsx("th",{className:`px-4 py-2 font-medium ${p.type==="number"?"text-right":"text-left"}`,children:p.label||p.name},f))})}),e.jsx("tbody",{children:(()=>{const p=no(r||[],a.groupBy||[]);return p?p.map(f=>e.jsxs(Ze.Fragment,{children:[e.jsx("tr",{className:"bg-muted/60",children:e.jsxs("td",{colSpan:g.columns?.length||1,className:"px-4 py-2 font-semibold text-sm",children:[f.label," (",f.rows.length,")"]})}),f.rows.map((x,C)=>e.jsx("tr",{className:"border-t hover:bg-muted/50 even:bg-muted/20",children:g.columns?.map((D,R)=>e.jsx("td",{className:`px-4 py-2 ${D.type==="number"?"text-right tabular-nums":""}`,style:N(D.name,x[D.name]),children:w(x[D.name],D)},R))},C))]},f.key)):r?.map((f,x)=>e.jsx("tr",{className:"border-t hover:bg-muted/50 even:bg-muted/20",children:g.columns?.map((C,D)=>e.jsx("td",{className:`px-4 py-2 ${C.type==="number"?"text-right tabular-nums":""}`,style:N(C.name,f[C.name]),children:w(f[C.name],C)},D))},x))})()})]})}),g.type==="text"&&g.text&&e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{children:g.text})}),g.type==="page-break"&&e.jsx("div",{className:"border-t-2 border-dashed my-8 print:page-break-after-always"}),g.content&&e.jsx(_e,{schema:g.content})]},b)),!a.sections&&r&&r.length>0&&e.jsx("div",{className:"border rounded-lg overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm min-w-[600px]",children:[e.jsx("thead",{className:"bg-muted",children:e.jsx("tr",{children:a.fields?.map((g,b)=>e.jsx("th",{className:`px-4 py-2 font-medium ${g.type==="number"?"text-right":"text-left"}`,children:g.label||g.name},b))})}),e.jsx("tbody",{children:r.map((g,b)=>e.jsx("tr",{className:"border-t hover:bg-muted/50 even:bg-muted/20",children:a.fields?.map((p,f)=>e.jsx("td",{className:`px-4 py-2 ${p.type==="number"?"text-right tabular-nums":""}`,style:N(p.name,g[p.name]),children:w(g[p.name],p)},f))},b))})]})})]})]})]}):e.jsx(Fe,{children:e.jsx(Oe,{className:"p-8 text-center text-muted-foreground",children:"No report to display"})})},Ur=({schedule:t,onChange:s})=>{const[a,r]=m.useState(t||{enabled:!1,frequency:"weekly",time:"09:00",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,recipients:[],formats:["pdf"]}),l=o=>{const u={...a,...o};r(u),s?.(u)},d=[{value:"once",label:"Once"},{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"monthly",label:"Monthly"},{value:"quarterly",label:"Quarterly"},{value:"yearly",label:"Yearly"}],c=[{value:"pdf",label:"PDF"},{value:"excel",label:"Excel"},{value:"csv",label:"CSV"},{value:"html",label:"HTML"}],i=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:2,label:"Tuesday"},{value:3,label:"Wednesday"},{value:4,label:"Thursday"},{value:5,label:"Friday"},{value:6,label:"Saturday"}];return e.jsxs(Fe,{children:[e.jsx(Ie,{children:e.jsxs($e,{className:"flex items-center gap-2",children:[e.jsx(fs,{className:"h-5 w-5"}),"Schedule Configuration"]})}),e.jsxs(Oe,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"schedule-enabled",checked:a.enabled||!1,onChange:o=>l({enabled:o.target.checked}),className:"rounded"}),e.jsx(ee,{htmlFor:"schedule-enabled",children:"Enable Scheduled Report"})]}),a.enabled&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Frequency"}),e.jsx("select",{className:"w-full border rounded-md p-2 bg-background",value:a.frequency||"weekly",onChange:o=>l({frequency:o.target.value}),children:d.map(o=>e.jsx("option",{value:o.value,children:o.label},o.value))})]}),a.frequency==="weekly"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Day of Week"}),e.jsx("select",{className:"w-full border rounded-md p-2 bg-background",value:a.dayOfWeek??1,onChange:o=>l({dayOfWeek:Number(o.target.value)}),children:i.map(o=>e.jsx("option",{value:o.value,children:o.label},o.value))})]}),a.frequency==="monthly"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Day of Month"}),e.jsx(We,{type:"number",min:1,max:31,value:a.dayOfMonth??1,onChange:o=>l({dayOfMonth:Number(o.target.value)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(ee,{className:"flex items-center gap-2",children:[e.jsx(_n,{className:"h-4 w-4"}),"Time"]}),e.jsx(We,{type:"time",value:a.time||"09:00",onChange:o=>l({time:o.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Timezone"}),e.jsx(We,{value:a.timezone||"",onChange:o=>l({timezone:o.target.value}),placeholder:"e.g. America/New_York"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Export Formats"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:c.map(o=>e.jsxs("label",{className:"flex items-center gap-1.5 px-3 py-1.5 border rounded-md cursor-pointer hover:bg-muted/50",children:[e.jsx("input",{type:"checkbox",checked:a.formats?.includes(o.value)||!1,onChange:u=>{const h=a.formats||[];l({formats:u.target.checked?[...h,o.value]:h.filter(n=>n!==o.value)})},className:"rounded"}),e.jsx("span",{className:"text-sm",children:o.label})]},o.value))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(ee,{className:"flex items-center gap-2",children:[e.jsx(sr,{className:"h-4 w-4"}),"Email Recipients"]}),e.jsx(We,{placeholder:"email1@example.com, email2@example.com",value:a.recipients?.join(", ")||"",onChange:o=>l({recipients:o.target.value.split(",").map(u=>u.trim()).filter(Boolean)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Email Subject"}),e.jsx(We,{value:a.subject||"",onChange:o=>l({subject:o.target.value}),placeholder:"Scheduled Report: {report_title}"})]})]})]})]})},lo=({schema:t})=>{const{report:s,dataSources:a=[],availableFields:r=[],showPreview:l=!0,onSave:d,onCancel:c}=t,[i,o]=m.useState(s||{type:"report",title:"New Report",fields:[],filters:[],groupBy:[],sections:[],showExportButtons:!0,showPrintButton:!0}),[u,h]=m.useState(i.fields||[]),[n,N]=m.useState(i.filters||[]),[w,g]=m.useState(i.groupBy||[]),[b,p]=m.useState(i.sections||[]),f=()=>{if(r.length>0&&u.length<r.length){const j=r.find(k=>!u.some(T=>T.name===k.name));if(j){const k=[...u,j];h(k),o({...i,fields:k})}}},x=j=>{const k=u.filter((T,H)=>H!==j);h(k),o({...i,fields:k})},C=(j,k)=>{const T=[...u];T[j]=k,h(T),o({...i,fields:T})},D=()=>{const j={field:r[0]?.name||"",operator:"equals",value:""},k=[...n,j];N(k),o({...i,filters:k})},R=j=>{const k=n.filter((T,H)=>H!==j);N(k),o({...i,filters:k})},F=(j,k)=>{const T=[...n];T[j]=k,N(T),o({...i,filters:T})},y=()=>{const j={field:r[0]?.name||"",sort:"asc"},k=[...w,j];g(k),o({...i,groupBy:k})},S=j=>{const k=w.filter((T,H)=>H!==j);g(k),o({...i,groupBy:k})},E=(j,k)=>{const T=[...w];T[j]=k,g(T),o({...i,groupBy:T})},I=j=>{const k={type:j,title:`New ${j} Section`},T=[...b,k];p(T),o({...i,sections:T})},O=j=>{const k=b.filter((T,H)=>H!==j);p(k),o({...i,sections:k})},A=(j,k)=>{const T=[...b];T[j]=k,p(T),o({...i,sections:T})},M=()=>{console.log("Saving report:",i),d&&alert("Report saved! (Handler: "+d+")")},L=()=>{c&&console.log("Report cancelled:",c)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(Fe,{children:[e.jsxs(Ie,{children:[e.jsx($e,{children:"Report Builder"}),e.jsx(Bs,{children:"Configure your report settings, fields, filters, and sections"})]}),e.jsxs(Oe,{children:[e.jsxs(Ga,{defaultValue:"basic",className:"w-full",children:[e.jsxs(Ua,{className:"grid w-full grid-cols-6",children:[e.jsxs(kt,{value:"basic",children:[e.jsx(In,{className:"h-4 w-4 mr-2"}),"Basic"]}),e.jsxs(kt,{value:"fields",children:[e.jsx(Ns,{className:"h-4 w-4 mr-2"}),"Fields"]}),e.jsxs(kt,{value:"filters",children:[e.jsx($n,{className:"h-4 w-4 mr-2"}),"Filters"]}),e.jsxs(kt,{value:"grouping",children:[e.jsx(Ns,{className:"h-4 w-4 mr-2"}),"Group By"]}),e.jsxs(kt,{value:"sections",children:[e.jsx(Ns,{className:"h-4 w-4 mr-2"}),"Sections"]}),e.jsxs(kt,{value:"schedule",children:[e.jsx(fs,{className:"h-4 w-4 mr-2"}),"Schedule"]})]}),e.jsx(Dt,{value:"basic",className:"space-y-4 mt-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{htmlFor:"report-title",children:"Report Title"}),e.jsx(We,{id:"report-title",value:i.title||"",onChange:j=>o({...i,title:j.target.value}),placeholder:"Enter report title"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{htmlFor:"report-description",children:"Description"}),e.jsx(We,{id:"report-description",value:i.description||"",onChange:j=>o({...i,description:j.target.value}),placeholder:"Enter report description"})]}),a.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Data Source"}),e.jsxs("select",{className:"w-full border rounded-md p-2",children:[e.jsx("option",{value:"",children:"Select a data source"}),a.map((j,k)=>e.jsxs("option",{value:k,children:["Data Source ",k+1]},k))]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{children:"Export Options"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:i.showExportButtons||!1,onChange:j=>o({...i,showExportButtons:j.target.checked})}),e.jsx("span",{className:"text-sm",children:"Show Export Buttons"})]}),e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:i.showPrintButton||!1,onChange:j=>o({...i,showPrintButton:j.target.checked})}),e.jsx("span",{className:"text-sm",children:"Show Print Button"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ee,{htmlFor:"export-format",children:"Default Export Format"}),e.jsxs("select",{id:"export-format",className:"w-full border rounded-md p-2",value:i.defaultExportFormat||"pdf",onChange:j=>o({...i,defaultExportFormat:j.target.value}),children:[e.jsx("option",{value:"pdf",children:"PDF"}),e.jsx("option",{value:"excel",children:"Excel"}),e.jsx("option",{value:"csv",children:"CSV"}),e.jsx("option",{value:"json",children:"JSON"}),e.jsx("option",{value:"html",children:"HTML"})]})]})]})}),e.jsxs(Dt,{value:"fields",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ee,{children:"Report Fields"}),e.jsxs(B,{size:"sm",variant:"outline",onClick:f,disabled:u.length>=r.length,children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),"Add Field"]})]}),e.jsxs("div",{className:"space-y-2",children:[u.map((j,k)=>e.jsx("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:e.jsxs("div",{className:"flex-1 grid grid-cols-4 gap-2",children:[e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Field Name"}),e.jsx("div",{className:"text-sm font-medium",children:j.name})]}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Label"}),e.jsx(We,{className:"h-8 text-sm",value:j.label||j.name,onChange:T=>C(k,{...j,label:T.target.value})})]}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Aggregation"}),e.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:j.aggregation||"",onChange:T=>C(k,{...j,aggregation:T.target.value}),children:[e.jsx("option",{value:"",children:"None"}),e.jsx("option",{value:"sum",children:"Sum"}),e.jsx("option",{value:"count",children:"Count"}),e.jsx("option",{value:"avg",children:"Average"}),e.jsx("option",{value:"min",children:"Min"}),e.jsx("option",{value:"max",children:"Max"})]})]}),e.jsx("div",{className:"flex items-end justify-end",children:e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50",onClick:()=>x(k),children:e.jsx(jt,{className:"h-4 w-4"})})})]})},k)),u.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:'No fields selected. Click "Add Field" to begin.'})]})]}),e.jsxs(Dt,{value:"filters",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ee,{children:"Report Filters"}),e.jsxs(B,{size:"sm",variant:"outline",onClick:D,children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),"Add Filter"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.map((j,k)=>e.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-2",children:[e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Field"}),e.jsx("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:j.field,onChange:T=>F(k,{...j,field:T.target.value}),children:r.map((T,H)=>e.jsx("option",{value:T.name,children:T.label||T.name},H))})]}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Operator"}),e.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:j.operator,onChange:T=>F(k,{...j,operator:T.target.value}),children:[e.jsx("option",{value:"equals",children:"Equals"}),e.jsx("option",{value:"contains",children:"Contains"}),e.jsx("option",{value:"gt",children:"Greater Than"}),e.jsx("option",{value:"lt",children:"Less Than"}),e.jsx("option",{value:"between",children:"Between"})]})]}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Value"}),e.jsx(We,{className:"h-8 text-sm",value:String(j.value),onChange:T=>F(k,{...j,value:T.target.value})})]})]}),e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50 self-end",onClick:()=>R(k),children:e.jsx(jt,{className:"h-4 w-4"})})]},k)),n.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No filters defined."})]})]}),e.jsxs(Dt,{value:"grouping",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ee,{children:"Grouping Rules"}),e.jsxs(B,{size:"sm",variant:"outline",onClick:y,children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),"Add Group"]})]}),e.jsxs("div",{className:"space-y-2",children:[w.map((j,k)=>e.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Field"}),e.jsx("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:j.field,onChange:T=>E(k,{...j,field:T.target.value}),children:r.map((T,H)=>e.jsx("option",{value:T.name,children:T.label||T.name},H))})]}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Sort Order"}),e.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:j.sort||"asc",onChange:T=>E(k,{...j,sort:T.target.value}),children:[e.jsx("option",{value:"asc",children:"Ascending"}),e.jsx("option",{value:"desc",children:"Descending"})]})]})]}),e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50 self-end",onClick:()=>S(k),children:e.jsx(jt,{className:"h-4 w-4"})})]},k)),w.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No grouping rules applied."})]})]}),e.jsxs(Dt,{value:"sections",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ee,{children:"Report Sections"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(B,{size:"sm",variant:"outline",onClick:()=>I("header"),children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),"Header"]}),e.jsxs(B,{size:"sm",variant:"outline",onClick:()=>I("chart"),children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),"Chart"]}),e.jsxs(B,{size:"sm",variant:"outline",onClick:()=>I("table"),children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),"Table"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[b.map((j,k)=>e.jsxs("div",{className:"p-3 border rounded-lg space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"font-medium flex items-center gap-2",children:[e.jsx("div",{className:"text-xs bg-muted px-2 py-0.5 rounded uppercase",children:j.type}),j.title]}),e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50",onClick:()=>O(k),children:e.jsx(jt,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Title"}),e.jsx(We,{className:"h-8 text-sm",value:j.title||"",onChange:T=>A(k,{...j,title:T.target.value})})]}),j.type==="text"&&e.jsxs("div",{className:"col-span-2",children:[e.jsx(ee,{className:"text-xs",children:"Content"}),e.jsx(We,{className:"h-8 text-sm",value:j.text||"",onChange:T=>A(k,{...j,text:T.target.value})})]}),j.type==="chart"&&e.jsxs("div",{className:"col-span-2 grid grid-cols-2 gap-2 mt-2 p-2 bg-muted/20 rounded",children:[e.jsx("div",{className:"col-span-2",children:e.jsx(ee,{className:"text-xs font-semibold",children:"Chart Configuration"})}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"Chart Type"}),e.jsxs("select",{className:"flex h-8 w-full rounded-md border border-input bg-background px-3 py-1 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",value:j.chart?.chartType||"bar",onChange:T=>A(k,{...j,chart:{...j.chart,type:"chart",chartType:T.target.value}}),children:[e.jsx("option",{value:"bar",children:"Bar"}),e.jsx("option",{value:"line",children:"Line"}),e.jsx("option",{value:"area",children:"Area"}),e.jsx("option",{value:"pie",children:"Pie"})]})]}),e.jsxs("div",{children:[e.jsx(ee,{className:"text-xs",children:"X-Axis Field"}),e.jsxs("select",{className:"flex h-8 w-full rounded-md border border-input bg-background px-3 py-1 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",value:j.chart?.xAxisField||"",onChange:T=>A(k,{...j,chart:{...j.chart,type:"chart",xAxisField:T.target.value}}),children:[e.jsx("option",{value:"",children:"Select Field..."}),r.map(T=>e.jsx("option",{value:T.name,children:T.label||T.name},T.name)),r.length===0&&e.jsxs(e.Fragment,{children:[e.jsx("option",{value:"name",children:"Name"}),e.jsx("option",{value:"month",children:"Month"})]})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(ee,{className:"text-xs",children:"Y-Axis Fields (comma separated)"}),e.jsx(We,{className:"h-8 text-sm",placeholder:"e.g. value, count",value:j.chart?.yAxisFields?.join(", ")||"",onChange:T=>A(k,{...j,chart:{...j.chart,type:"chart",yAxisFields:T.target.value.split(",").map(H=>H.trim()).filter(Boolean)}})})]})]})]})]},k)),b.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No customized sections. The default report layout will be used."})]})]}),e.jsx(Dt,{value:"schedule",className:"space-y-4 mt-4",children:e.jsx(Ur,{schedule:i.schedule,onChange:j=>o({...i,schedule:j})})})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2 mt-6 pt-4 border-t",children:[e.jsx(B,{variant:"outline",onClick:L,children:"Cancel"}),e.jsxs(B,{onClick:M,children:[e.jsx(rr,{className:"h-4 w-4 mr-2"}),"Save Report"]})]})]})]}),l&&e.jsxs(Fe,{className:"mt-8 border-2 border-blue-100",children:[e.jsx(Ie,{className:"bg-blue-50/50",children:e.jsx($e,{className:"text-blue-900 text-sm uppercase tracking-wide",children:"Live Preview"})}),e.jsx(Oe,{className:"pt-6",children:e.jsx(Gr,{schema:{type:"report-viewer",report:{...i,fields:u,filters:n,groupBy:w,sections:b},data:[{id:1,name:"Sample Item A",value:100,status:"New"},{id:2,name:"Sample Item B",value:250,status:"Active"},{id:3,name:"Sample Item C",value:75,status:"Closed"}]}})})]})]})},io=[{value:"",label:"None"},{value:"sum",label:"Sum"},{value:"count",label:"Count"},{value:"avg",label:"Average"},{value:"min",label:"Min"},{value:"max",label:"Max"}];function oo({availableFields:t,value:s,onChange:a}){const r=Array.isArray(s)?s.map(i=>typeof i=="string"?{name:i,label:i,type:"string"}:{name:i.name||i.field||i.value,label:i.label||i.name||"",type:i.type||"string",aggregation:i.aggregation}):[],l=r.map(i=>i.name),d=i=>{const o=l.includes(i);let u;if(o)u=r.filter(h=>h.name!==i);else{const h=t.find(n=>n.value===i);u=[...r,{name:i,label:h?.label||i,type:h?.type||"string"}]}a(u)},c=(i,o)=>{const u=r.map(h=>h.name===i?{...h,aggregation:o||void 0,showInSummary:!!o}:h);a(u)};return t.length===0?e.jsx("div",{className:"text-xs text-muted-foreground py-2","data-testid":"field-picker-empty",children:"No fields available"}):e.jsx("div",{className:"space-y-1 py-1","data-testid":"field-picker",children:t.map(i=>{const o=l.includes(i.value),u=r.find(h=>h.name===i.value);return e.jsxs("div",{className:"flex items-center gap-2 px-1 py-0.5 rounded hover:bg-muted/50 text-xs",children:[e.jsxs("label",{className:"flex items-center gap-2 flex-1 cursor-pointer",children:[e.jsx(dn,{checked:o,onCheckedChange:()=>d(i.value),"data-testid":`field-picker-${i.value}`}),e.jsx("span",{className:"flex-1",children:i.label}),i.type&&e.jsx("span",{className:"text-[10px] text-muted-foreground",children:i.type})]}),o&&e.jsx("select",{className:"h-5 text-[10px] border rounded px-1 bg-background",value:u?.aggregation||"",onChange:h=>c(i.value,h.target.value),"data-testid":`field-agg-${i.value}`,children:io.map(h=>e.jsx("option",{value:h.value,children:h.label},h.value))})]},i.value)})})}const co=[{value:"",label:"None"},{value:"bar",label:"Bar Chart"},{value:"line",label:"Line Chart"},{value:"pie",label:"Pie Chart"},{value:"area",label:"Area Chart"},{value:"donut",label:"Donut Chart"},{value:"scatter",label:"Scatter Plot"}];function uo({availableFields:t,value:s,onChange:a}){const r=s||{},l=d=>a({...r,...d});return e.jsxs("div",{className:"space-y-2 py-1","data-testid":"chart-config",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-muted-foreground",children:"Chart type"}),e.jsx("select",{className:"w-full h-7 text-xs border rounded px-2 bg-background",value:r.chartType||"",onChange:d=>l({chartType:d.target.value||void 0}),"data-testid":"chart-type-select",children:co.map(d=>e.jsx("option",{value:d.value,children:d.label},d.value))})]}),r.chartType&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-muted-foreground",children:"X-axis field"}),e.jsxs("select",{className:"w-full h-7 text-xs border rounded px-2 bg-background",value:r.xAxisField||"",onChange:d=>l({xAxisField:d.target.value||void 0}),"data-testid":"chart-x-field",children:[e.jsx("option",{value:"",children:"Select field…"}),t.map(d=>e.jsx("option",{value:d.value,children:d.label},d.value))]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-muted-foreground",children:"Y-axis field"}),e.jsxs("select",{className:"w-full h-7 text-xs border rounded px-2 bg-background",value:r.yAxisFields?.[0]||"",onChange:d=>l({yAxisFields:d.target.value?[d.target.value]:[]}),"data-testid":"chart-y-field",children:[e.jsx("option",{value:"",children:"Select field…"}),t.filter(d=>d.type==="number").map(d=>e.jsx("option",{value:d.value,children:d.label},d.value))]})]})]})]})}const fo=[{value:"equals",label:"="},{value:"not_equals",label:"≠"},{value:"greater_than",label:">"},{value:"less_than",label:"<"},{value:"contains",label:"Contains"}];function po({availableFields:t,value:s,onChange:a}){const r=Array.isArray(s)?s:[],l=()=>{a([...r,{field:t[0]?.value||"",operator:"equals",value:"",backgroundColor:"#fef9c3",textColor:""}])},d=i=>{a(r.filter((o,u)=>u!==i))},c=(i,o)=>{a(r.map((u,h)=>h===i?{...u,...o}:u))};return e.jsxs("div",{className:"space-y-2 py-1","data-testid":"conditional-format-rules",children:[r.map((i,o)=>e.jsxs("div",{className:"flex items-center gap-1 text-[10px] p-1 border rounded bg-muted/20",children:[e.jsx("select",{className:"h-5 text-[10px] border rounded px-1 bg-background flex-1",value:i.field,onChange:u=>c(o,{field:u.target.value}),"data-testid":`cf-rule-field-${o}`,children:t.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))}),e.jsx("select",{className:"h-5 text-[10px] border rounded px-1 bg-background w-12",value:i.operator,onChange:u=>c(o,{operator:u.target.value}),children:fo.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))}),e.jsx("input",{className:"h-5 text-[10px] border rounded px-1 bg-background w-16",value:i.value,placeholder:"value",onChange:u=>c(o,{value:u.target.value}),"data-testid":`cf-rule-value-${o}`}),e.jsx("input",{type:"color",className:"h-5 w-5 rounded border cursor-pointer",value:i.backgroundColor||"#fef9c3",onChange:u=>c(o,{backgroundColor:u.target.value}),title:"Background color"}),e.jsx(B,{type:"button",size:"sm",variant:"ghost",className:"h-5 w-5 p-0",onClick:()=>d(o),"data-testid":`cf-rule-remove-${o}`,children:e.jsx(jt,{className:"h-3 w-3"})})]},o)),e.jsxs(B,{type:"button",size:"sm",variant:"outline",className:"h-6 text-[10px] w-full",onClick:l,"data-testid":"cf-add-rule",children:[e.jsx(Ge,{className:"h-3 w-3 mr-1"}),"Add Rule"]})]})}const mo=[{value:"header",label:"Header"},{value:"summary",label:"Summary"},{value:"table",label:"Table"},{value:"chart",label:"Chart"},{value:"text",label:"Text"}];function ho({value:t,onChange:s}){const a=Array.isArray(t)?t:[],r=i=>{s([...a,{type:i,title:`New ${i}`,visible:!0}])},l=i=>{s(a.filter((o,u)=>u!==i))},d=(i,o)=>{s(a.map((u,h)=>h===i?{...u,...o}:u))},c=(i,o)=>{const u=i+o;if(u<0||u>=a.length)return;const h=[...a];[h[i],h[u]]=[h[u],h[i]],s(h)};return e.jsxs("div",{className:"space-y-2 py-1","data-testid":"section-manager",children:[a.map((i,o)=>e.jsxs("div",{className:"flex items-center gap-1 text-[10px] p-1.5 border rounded bg-muted/20",children:[e.jsxs("div",{className:"flex flex-col gap-0.5 mr-1",children:[e.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground disabled:opacity-30",disabled:o===0,onClick:()=>c(o,-1),"data-testid":`section-up-${o}`,children:"▲"}),e.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground disabled:opacity-30",disabled:o===a.length-1,onClick:()=>c(o,1),"data-testid":`section-down-${o}`,children:"▼"})]}),e.jsx("span",{className:"text-[9px] bg-muted px-1.5 py-0.5 rounded uppercase font-medium shrink-0",children:i.type}),e.jsx("input",{className:"h-5 text-[10px] border rounded px-1 bg-background flex-1 min-w-0",value:i.title||"",placeholder:"Section title",onChange:u=>d(o,{title:u.target.value}),"data-testid":`section-title-${o}`}),e.jsx(B,{type:"button",size:"sm",variant:"ghost",className:"h-5 w-5 p-0 shrink-0",onClick:()=>l(o),"data-testid":`section-remove-${o}`,children:e.jsx(jt,{className:"h-3 w-3"})})]},o)),e.jsx("div",{className:"flex gap-1 flex-wrap",children:mo.map(i=>e.jsxs(B,{type:"button",size:"sm",variant:"outline",className:"h-6 text-[10px]",onClick:()=>r(i.value),"data-testid":`section-add-${i.value}`,children:[e.jsx(Ge,{className:"h-3 w-3 mr-0.5"}),i.label]},i.value))})]})}function xo(t=[]){return{breadcrumb:["Report","Configuration"],sections:[{key:"basic",title:"Basic",fields:[{key:"title",label:"Title",type:"input",placeholder:"Report title"},{key:"description",label:"Description",type:"input",placeholder:"Report description"},{key:"reportType",label:"Report type",type:"select",defaultValue:"tabular",options:[{value:"tabular",label:"Tabular"},{value:"summary",label:"Summary"},{value:"matrix",label:"Matrix"}],helpText:"Tabular: flat table. Summary: grouped with subtotals. Matrix: pivot table (planned)."}]},{key:"data",title:"Data",collapsible:!0,fields:[{key:"objectName",label:"Data source",type:"input",placeholder:"e.g. opportunity",helpText:"Object name to query data from"},{key:"limit",label:"Row limit",type:"input",defaultValue:"100",placeholder:"e.g. 100"}]},{key:"columns",title:"Columns",collapsible:!0,hint:"Select fields to display as report columns. Set aggregation per column for summary reports.",fields:[{key:"fields",label:"Report columns",type:"custom",render:(s,a)=>e.jsx(oo,{availableFields:t,value:s,onChange:a})}]},{key:"filters",title:"Filters",collapsible:!0,hint:"Define filter conditions for the report data",fields:[{key:"filters",label:"Conditions",type:"filter",fields:t}]},{key:"groupBy",title:"Group By",collapsible:!0,hint:"Group report data and compute aggregations",fields:[{key:"groupBy",label:"Grouping",type:"sort",fields:t}]},{key:"chart",title:"Chart",collapsible:!0,hint:"Add a chart visualization to the report",fields:[{key:"chartConfig",label:"Chart",type:"custom",render:(s,a)=>e.jsx(uo,{availableFields:t,value:s,onChange:a})}]},{key:"conditionalFormatting",title:"Conditional Format",collapsible:!0,defaultCollapsed:!0,hint:"Highlight cells based on field value conditions",fields:[{key:"conditionalFormatting",label:"Rules",type:"custom",render:(s,a)=>e.jsx(po,{availableFields:t,value:s,onChange:a})}]},{key:"sections",title:"Sections",collapsible:!0,defaultCollapsed:!0,hint:"Manage report layout blocks (header, table, chart, summary)",fields:[{key:"sections",label:"Report sections",type:"custom",render:(s,a)=>e.jsx(ho,{value:s,onChange:a})}]},{key:"export",title:"Export",collapsible:!0,defaultCollapsed:!0,fields:[{key:"showExportButtons",label:"Show export buttons",type:"switch",defaultValue:!0},{key:"showPrintButton",label:"Show print button",type:"switch",defaultValue:!0},{key:"defaultExportFormat",label:"Default export format",type:"select",defaultValue:"pdf",options:[{value:"pdf",label:"PDF"},{value:"excel",label:"Excel"},{value:"csv",label:"CSV"},{value:"json",label:"JSON"},{value:"html",label:"HTML"}]}]},{key:"schedule",title:"Schedule",collapsible:!0,defaultCollapsed:!0,fields:[{key:"schedule",label:"Schedule",type:"custom",render:(s,a)=>e.jsx(Ur,{schedule:s,onChange:a})}]},{key:"appearance",title:"Appearance",collapsible:!0,defaultCollapsed:!0,fields:[{key:"showToolbar",label:"Show toolbar",type:"switch",defaultValue:!0},{key:"refreshInterval",label:"Refresh interval",type:"select",defaultValue:"0",options:[{value:"0",label:"Manual"},{value:"30",label:"30s"},{value:"60",label:"1 min"},{value:"300",label:"5 min"}]}]}]}}function To({open:t,onClose:s,config:a,onSave:r,onFieldChange:l,availableFields:d}){const{draft:c,isDirty:i,updateField:o,discard:u,undo:h,redo:n,canUndo:N,canRedo:w}=Is(a,{onUpdate:l}),g=m.useMemo(()=>xo(d),[d]);return e.jsx($s,{open:t,onClose:s,schema:g,draft:c,isDirty:i,onFieldChange:o,onSave:()=>r(c),onDiscard:u,onUndo:h,onRedo:n,canUndo:N,canRedo:w})}je.register("report",Ji,{namespace:"report",label:"Report",category:"Report",inputs:[{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"chart",type:"code",label:"Chart Configuration"}]});je.register("report-viewer",Gr,{namespace:"report",label:"Report Viewer",category:"Report",inputs:[{name:"report",type:"code",label:"Report Definition"},{name:"showToolbar",type:"boolean",label:"Show Toolbar"}]});je.register("report-builder",lo,{namespace:"report",label:"Report Builder",category:"Report",inputs:[{name:"report",type:"code",label:"Initial Report"}]});export{xr as D,mr as L,Co as M,So as R,Oo as W,El as a,Fo as b,Gr as c,To as d,tl as u};