@object-ui/console 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +118 -0
  3. package/dist/assets/AdvancedChartImpl-DAS1mU9o.js +7 -0
  4. package/dist/assets/AdvancedChartImpl-DAS1mU9o.js.br +0 -0
  5. package/dist/assets/AdvancedChartImpl-DAS1mU9o.js.gz +0 -0
  6. package/dist/assets/AuditLogPage-BQW_Xbnm.js +1 -0
  7. package/dist/assets/AuditLogPage-BQW_Xbnm.js.br +0 -0
  8. package/dist/assets/AuditLogPage-BQW_Xbnm.js.gz +0 -0
  9. package/dist/assets/ChartImpl-2ivTljUi.js +1 -0
  10. package/dist/assets/ChartImpl-2ivTljUi.js.br +0 -0
  11. package/dist/assets/ChartImpl-2ivTljUi.js.gz +0 -0
  12. package/dist/assets/DashboardView-Dt-4VhH6.js +1 -0
  13. package/dist/assets/DashboardView-Dt-4VhH6.js.br +0 -0
  14. package/dist/assets/DashboardView-Dt-4VhH6.js.gz +0 -0
  15. package/dist/assets/ForgotPasswordPage-zr9S5vrE.js +1 -0
  16. package/dist/assets/KanbanEnhanced-BlGp--J7.js +1 -0
  17. package/dist/assets/KanbanEnhanced-BlGp--J7.js.br +0 -0
  18. package/dist/assets/KanbanEnhanced-BlGp--J7.js.gz +0 -0
  19. package/dist/assets/KanbanImpl-B5wWMXrJ.js +1 -0
  20. package/dist/assets/KanbanImpl-B5wWMXrJ.js.br +0 -0
  21. package/dist/assets/KanbanImpl-B5wWMXrJ.js.gz +0 -0
  22. package/dist/assets/LoginPage-H688gsah.js +1 -0
  23. package/dist/assets/MarkdownImpl-BshtTFK2.js +29 -0
  24. package/dist/assets/MarkdownImpl-BshtTFK2.js.br +0 -0
  25. package/dist/assets/MarkdownImpl-BshtTFK2.js.gz +0 -0
  26. package/dist/assets/OrgManagementPage-x3qIkxHL.js +1 -0
  27. package/dist/assets/OrgManagementPage-x3qIkxHL.js.br +0 -0
  28. package/dist/assets/OrgManagementPage-x3qIkxHL.js.gz +0 -0
  29. package/dist/assets/PageView-BRN1h8QD.js +1 -0
  30. package/dist/assets/PageView-BRN1h8QD.js.br +0 -0
  31. package/dist/assets/PageView-BRN1h8QD.js.gz +0 -0
  32. package/dist/assets/ProfilePage-DjAiGvFb.js +1 -0
  33. package/dist/assets/ProfilePage-DjAiGvFb.js.br +0 -0
  34. package/dist/assets/ProfilePage-DjAiGvFb.js.gz +0 -0
  35. package/dist/assets/RecordDetailView-Bfu7541n.js +1 -0
  36. package/dist/assets/RecordDetailView-Bfu7541n.js.br +0 -0
  37. package/dist/assets/RecordDetailView-Bfu7541n.js.gz +0 -0
  38. package/dist/assets/RegisterPage-CR91Lc7x.js +1 -0
  39. package/dist/assets/ReportView-CwWsv2yl.js +1 -0
  40. package/dist/assets/ReportView-CwWsv2yl.js.br +0 -0
  41. package/dist/assets/ReportView-CwWsv2yl.js.gz +0 -0
  42. package/dist/assets/RoleManagementPage-DnWuzxKJ.js +1 -0
  43. package/dist/assets/RoleManagementPage-DnWuzxKJ.js.br +0 -0
  44. package/dist/assets/RoleManagementPage-DnWuzxKJ.js.gz +0 -0
  45. package/dist/assets/SearchResultsPage-DBpjAlh2.js +1 -0
  46. package/dist/assets/SearchResultsPage-DBpjAlh2.js.br +0 -0
  47. package/dist/assets/SearchResultsPage-DBpjAlh2.js.gz +0 -0
  48. package/dist/assets/UserManagementPage-o0_K0dzR.js +1 -0
  49. package/dist/assets/UserManagementPage-o0_K0dzR.js.br +0 -0
  50. package/dist/assets/UserManagementPage-o0_K0dzR.js.gz +0 -0
  51. package/dist/assets/ViewDesignerPage-BbwrZa9D.js +1 -0
  52. package/dist/assets/ViewDesignerPage-BbwrZa9D.js.br +0 -0
  53. package/dist/assets/ViewDesignerPage-BbwrZa9D.js.gz +0 -0
  54. package/dist/assets/data-adapter-Cn800k4a.js +1 -0
  55. package/dist/assets/data-adapter-Cn800k4a.js.br +0 -0
  56. package/dist/assets/data-adapter-Cn800k4a.js.gz +0 -0
  57. package/dist/assets/framework-mHWN965c.js +10 -0
  58. package/dist/assets/framework-mHWN965c.js.br +0 -0
  59. package/dist/assets/framework-mHWN965c.js.gz +0 -0
  60. package/dist/assets/index-BjEGJcpx.js +56 -0
  61. package/dist/assets/index-BjEGJcpx.js.br +0 -0
  62. package/dist/assets/index-BjEGJcpx.js.gz +0 -0
  63. package/dist/assets/index-CUnVdETN.css +1 -0
  64. package/dist/assets/index-CUnVdETN.css.br +0 -0
  65. package/dist/assets/index-CUnVdETN.css.gz +0 -0
  66. package/dist/assets/infrastructure-aS2LF8OZ.js +1 -0
  67. package/dist/assets/infrastructure-aS2LF8OZ.js.br +0 -0
  68. package/dist/assets/infrastructure-aS2LF8OZ.js.gz +0 -0
  69. package/dist/assets/maplibre-gl-D2AsLM0J.js +811 -0
  70. package/dist/assets/maplibre-gl-D2AsLM0J.js.br +0 -0
  71. package/dist/assets/maplibre-gl-D2AsLM0J.js.gz +0 -0
  72. package/dist/assets/plugins-core-CcBSZCjG.js +4 -0
  73. package/dist/assets/plugins-core-CcBSZCjG.js.br +0 -0
  74. package/dist/assets/plugins-core-CcBSZCjG.js.gz +0 -0
  75. package/dist/assets/plugins-views-DQwkCaaO.js +60 -0
  76. package/dist/assets/plugins-views-DQwkCaaO.js.br +0 -0
  77. package/dist/assets/plugins-views-DQwkCaaO.js.gz +0 -0
  78. package/dist/assets/plugins-views-P3eB-els.css +1 -0
  79. package/dist/assets/plugins-views-P3eB-els.css.br +0 -0
  80. package/dist/assets/plugins-views-P3eB-els.css.gz +0 -0
  81. package/dist/assets/systemObjects-DSpePIIy.js +1 -0
  82. package/dist/assets/systemObjects-DSpePIIy.js.br +2 -0
  83. package/dist/assets/systemObjects-DSpePIIy.js.gz +0 -0
  84. package/dist/assets/ui-components-DVonQS7H.js +31 -0
  85. package/dist/assets/ui-components-DVonQS7H.js.br +0 -0
  86. package/dist/assets/ui-components-DVonQS7H.js.gz +0 -0
  87. package/dist/assets/ui-components-GrNdJOi1.css +1 -0
  88. package/dist/assets/ui-components-GrNdJOi1.css.br +0 -0
  89. package/dist/assets/ui-components-GrNdJOi1.css.gz +0 -0
  90. package/dist/assets/ui-layout-BENIRxAF.js +1 -0
  91. package/dist/assets/ui-layout-BENIRxAF.js.br +0 -0
  92. package/dist/assets/ui-layout-BENIRxAF.js.gz +0 -0
  93. package/dist/assets/vendor-charts-CSvoW-yB.js +65 -0
  94. package/dist/assets/vendor-charts-CSvoW-yB.js.br +0 -0
  95. package/dist/assets/vendor-charts-CSvoW-yB.js.gz +0 -0
  96. package/dist/assets/vendor-dndkit-DRGpK6sP.js +5 -0
  97. package/dist/assets/vendor-dndkit-DRGpK6sP.js.br +0 -0
  98. package/dist/assets/vendor-dndkit-DRGpK6sP.js.gz +0 -0
  99. package/dist/assets/vendor-i18n-D5KbMT7w.js +9 -0
  100. package/dist/assets/vendor-i18n-D5KbMT7w.js.br +0 -0
  101. package/dist/assets/vendor-i18n-D5KbMT7w.js.gz +0 -0
  102. package/dist/assets/vendor-icons-CQ8b-fGy.js +8671 -0
  103. package/dist/assets/vendor-icons-CQ8b-fGy.js.br +0 -0
  104. package/dist/assets/vendor-icons-CQ8b-fGy.js.gz +0 -0
  105. package/dist/assets/vendor-objectstack-DqojdwYW.js +37 -0
  106. package/dist/assets/vendor-objectstack-DqojdwYW.js.br +0 -0
  107. package/dist/assets/vendor-objectstack-DqojdwYW.js.gz +0 -0
  108. package/dist/assets/vendor-radix-BbeYj_o4.js +56 -0
  109. package/dist/assets/vendor-radix-BbeYj_o4.js.br +0 -0
  110. package/dist/assets/vendor-radix-BbeYj_o4.js.gz +0 -0
  111. package/dist/assets/vendor-react-Dy_xkBQQ.js +60 -0
  112. package/dist/assets/vendor-react-Dy_xkBQQ.js.br +0 -0
  113. package/dist/assets/vendor-react-Dy_xkBQQ.js.gz +0 -0
  114. package/dist/assets/vendor-ui-utils-h6yAcIi9.js +1 -0
  115. package/dist/assets/vendor-ui-utils-h6yAcIi9.js.br +0 -0
  116. package/dist/assets/vendor-ui-utils-h6yAcIi9.js.gz +0 -0
  117. package/dist/assets/vendor-zod-Dpl-cylz.js +39 -0
  118. package/dist/assets/vendor-zod-Dpl-cylz.js.br +0 -0
  119. package/dist/assets/vendor-zod-Dpl-cylz.js.gz +0 -0
  120. package/dist/index.html +49 -0
  121. package/dist/index.html.br +0 -0
  122. package/dist/index.html.gz +0 -0
  123. package/dist/manifest.json +19 -0
  124. package/dist/mockServiceWorker.js +349 -0
  125. package/dist/mockServiceWorker.js.br +0 -0
  126. package/dist/mockServiceWorker.js.gz +0 -0
  127. package/dist/stats.html +4949 -0
  128. package/package.json +98 -0
  129. package/plugin.ts +177 -0
@@ -0,0 +1,60 @@
1
+ import{r as g,j as t,a as Ot,f as nn,R as Ge}from"./vendor-react-Dy_xkBQQ.js";import{f as Jn,S as De,C as he,g as Zn,c as Qn,i as es,j as ts}from"./framework-mHWN965c.js";import{c as G,B,P as Pr,J as Er,K as Or,X as rs,Q as ns,M as Ee,N as ss,Y as Ne,Z as Ce,$ as Me,a0 as Fe,a1 as pr,a2 as as,a3 as is,a4 as os,a5 as sn,a6 as mt,a7 as gt,a8 as xt,T as an,a as on,d as nt,e as st,a9 as or,t as ls,u as cs,v as ds,w as qt,aa as us,ab as br,L as $}from"./ui-components-DVonQS7H.js";import{r as fs,c as ln}from"./vendor-ui-utils-h6yAcIi9.js";import{Z as hs,a6 as ps,_ as ms,j as gs,a7 as xs,$ as bs,a0 as ys,y as vs,a3 as js,a8 as ws,a9 as Ns,aa as Cs,ab as Ss,S as zr,X as cn,a as Ds,C as Rs,d as ks,V as dn,A as Ps,H as Es,ac as Os,ad as zs,v as un,E as Ms,u as Fs,ae as Ts,l as Ls,af as fn,t as _s,G as Mr,r as hn,a4 as pn,a5 as mn,M as gn,ag as As,ah as Is,ai as lr,aj as xn,ak as Bs,al as qs,am as Hs,an as cr,ao as Ws,ap as pt,aq as Ht,ar as $s}from"./vendor-icons-CQ8b-fGy.js";import{r as Kt}from"./vendor-charts-CSvoW-yB.js";const Gs={grid:t.jsx(ys,{className:"h-4 w-4"}),kanban:t.jsx(bs,{className:"h-4 w-4"}),gallery:t.jsx(xs,{className:"h-4 w-4"}),calendar:t.jsx(gs,{className:"h-4 w-4"}),timeline:t.jsx(ms,{className:"h-4 w-4"}),gantt:t.jsx(ps,{className:"h-4 w-4"}),map:t.jsx(hs,{className:"h-4 w-4"})},dr={grid:"Grid",kanban:"Kanban",gallery:"Gallery",calendar:"Calendar",timeline:"Timeline",gantt:"Gantt",map:"Map"},Vs=({currentView:e,availableViews:r=["grid","kanban"],onViewChange:n,className:s,animated:a=!0})=>{const u=g.useCallback(l=>{if(!a||l===e){n(l);return}typeof document<"u"&&"startViewTransition"in document?document.startViewTransition(()=>n(l)):n(l)},[a,e,n]);return t.jsx("div",{className:G("flex items-center gap-1 bg-transparent oui-view-switcher",s),children:r.map(l=>{const d=e===l;return t.jsxs("button",{type:"button",onClick:()=>u(l),"aria-label":dr[l],title:dr[l],"aria-pressed":d,"data-state":d?"on":"off",className:G("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:[Gs[l],t.jsx("span",{className:"hidden sm:inline-block text-xs font-medium",children:dr[l]})]},l)})})},mr={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},it=["xs","sm","md","lg","xl","2xl"];function Ys(e){for(let r=it.length-1;r>=0;r--){const n=it[r];if(e>=mr[n])return n}return"xs"}function Xs(){const[e,r]=g.useState(()=>typeof window<"u"?window.innerWidth:1024);g.useEffect(()=>{if(typeof window>"u")return;let a;const u=()=>{clearTimeout(a),a=setTimeout(()=>{r(window.innerWidth)},100)};return window.addEventListener("resize",u),()=>{clearTimeout(a),window.removeEventListener("resize",u)}},[]);const n=Ys(e),s=it.indexOf(n);return{breakpoint:n,width:e,isMobile:s<it.indexOf("md"),isTablet:s>=it.indexOf("md")&&s<it.indexOf("lg"),isDesktop:s>=it.indexOf("lg"),isAbove:a=>e>=mr[a],isBelow:a=>e<mr[a]}}function Us(e){const{onRefresh:r,threshold:n=80,enabled:s=!0}=e,a=g.useRef(null),[u,l]=g.useState(!1),[d,c]=g.useState(0),o=g.useRef(0),p=g.useCallback(C=>{if(!s||u)return;const S=a.current;S&&S.scrollTop===0&&(o.current=C.touches[0].clientY)},[s,u]),h=g.useCallback(C=>{if(!s||u||!o.current)return;const x=C.touches[0].clientY-o.current;x>0&&c(Math.min(x,n*1.5))},[s,u,n]),y=g.useCallback(async()=>{if(!(!s||u)){if(d>=n){l(!0);try{await r()}finally{l(!1)}}c(0),o.current=0}},[s,u,d,n,r]);return g.useEffect(()=>{const C=a.current;if(!(!C||!s))return C.addEventListener("touchstart",p,{passive:!0}),C.addEventListener("touchmove",h,{passive:!0}),C.addEventListener("touchend",y,{passive:!0}),()=>{C.removeEventListener("touchstart",p),C.removeEventListener("touchmove",h),C.removeEventListener("touchend",y)}},[p,h,y,s]),{ref:a,isRefreshing:u,pullDistance:d}}const bn=g.createContext(null);bn.displayName="MobileContext";function ki({pwa:e,offline:r,children:n}){const s=Xs(),a=g.useMemo(()=>({...s,pwa:e,offline:r}),[s,e,r]);return t.jsx(bn.Provider,{value:a,children:n})}function Ks(e){switch(e){case"equals":return"=";case"notEquals":return"!=";case"contains":return"contains";case"notContains":return"notcontains";case"greaterThan":return">";case"greaterOrEqual":return">=";case"lessThan":return"<";case"lessOrEqual":return"<=";case"in":return"in";case"notIn":return"not in";case"before":return"<";case"after":return">";default:return"="}}function Js(e){if(!e||!e.conditions||e.conditions.length===0)return[];const r=e.conditions.map(n=>n.operator==="isEmpty"?[n.field,"=",null]:n.operator==="isNotEmpty"?[n.field,"!=",null]:[n.field,Ks(n.operator),n.value]);return r.length===1?r[0]:[e.logic,...r]}const yn=({schema:e,className:r,onViewChange:n,onFilterChange:s,onSortChange:a,onSearchChange:u,onRowClick:l,showViewSwitcher:d=!1,...c})=>{const o=g.useMemo(()=>({...e,viewType:e.viewType||"grid"}),[e]),[p,h]=g.useState(o.viewType),[y,C]=g.useState(""),[S,x]=g.useState(!1),[i,f]=g.useState(()=>o.sort&&o.sort.length>0?o.sort.map(O=>({id:crypto.randomUUID(),field:O.field,order:O.order||"asc"})):[]),[m,v]=g.useState(!1),[w,D]=g.useState({id:"root",logic:"and",conditions:[]}),N=c.dataSource,[b,j]=g.useState([]),[k,F]=g.useState(!1),[T,q]=g.useState(null),[M,A]=g.useState(0),R=g.useCallback(async()=>{A(O=>O+1)},[]),{ref:P,isRefreshing:E,pullDistance:H}=Us({onRefresh:R,enabled:!!N&&!!o.objectName}),be=g.useMemo(()=>o.id?`listview-${o.objectName}-${o.id}-view`:`listview-${o.objectName}-view`,[o.objectName,o.id]);g.useEffect(()=>{let O=!0;return(async()=>{if(!(!N||!o.objectName))try{const _=await N.getObjectSchema(o.objectName);O&&q(_)}catch(_){console.warn("Failed to fetch object schema for ListView:",_)}})(),()=>{O=!1}},[o.objectName,N]),g.useEffect(()=>{let O=!0;return(async()=>{if(!(!N||!o.objectName)){F(!0);try{let _=[];const ie=o.filters||[],se=Js(w);ie.length>0&&se.length>0?_=["and",ie,se]:se.length>0?_=se:_=ie;const Be=i.length>0?i.filter(ue=>ue.field).map(ue=>({field:ue.field,order:ue.order})):void 0,de=await N.find(o.objectName,{$filter:_,$orderby:Be,$top:100});let te=[];Array.isArray(de)?te=de:de&&typeof de=="object"&&(Array.isArray(de.data)?te=de.data:Array.isArray(de.records)&&(te=de.records)),O&&j(te)}catch(_){console.error("ListView data fetch error:",_)}finally{O&&F(!1)}}})(),()=>{O=!1}},[o.objectName,N,o.filters,i,w,M]);const le=g.useMemo(()=>{const O=["grid"];return o.options?.kanban?.groupField&&O.push("kanban"),o.options?.gallery?.imageField&&O.push("gallery"),o.options?.calendar?.startDateField&&O.push("calendar"),(o.options?.timeline?.dateField||o.options?.calendar?.startDateField)&&O.push("timeline"),o.options?.gantt?.startDateField&&O.push("gantt"),(o.options?.map?.locationField||o.options?.map?.latitudeField&&o.options?.map?.longitudeField)&&O.push("map"),o.viewType&&!O.includes(o.viewType)&&["grid","kanban","calendar","timeline","gantt","map","gallery"].includes(o.viewType)&&O.push(o.viewType),O},[o.options,o.viewType]);g.useEffect(()=>{o.viewType&&h(o.viewType)},[o.viewType]);const Re=g.useCallback(O=>{h(O);try{localStorage.setItem(be,O)}catch(U){console.warn("Failed to save view preference to localStorage:",U)}n?.(O)},[be,n]),ke=g.useCallback(O=>{C(O),u?.(O)},[u]),Te=Jn({navigation:o.navigation,objectName:o.objectName,onNavigate:o.onNavigate,onRowClick:l}),Ie=g.useMemo(()=>{const O={objectName:o.objectName,fields:o.fields,filters:o.filters,sort:i,className:"h-full w-full",showSearch:!1,onRowClick:Te.handleClick};switch(p){case"grid":return{type:"object-grid",...O,columns:o.fields,...o.options?.grid||{}};case"kanban":return{type:"object-kanban",...O,groupBy:o.options?.kanban?.groupField||"status",groupField:o.options?.kanban?.groupField||"status",titleField:o.options?.kanban?.titleField||"name",cardFields:o.fields||[],...o.options?.kanban||{}};case"calendar":return{type:"object-calendar",...O,startDateField:o.options?.calendar?.startDateField||"start_date",endDateField:o.options?.calendar?.endDateField||"end_date",titleField:o.options?.calendar?.titleField||"name",...o.options?.calendar||{}};case"gallery":return{type:"object-gallery",...O,imageField:o.options?.gallery?.imageField,titleField:o.options?.gallery?.titleField||"name",subtitleField:o.options?.gallery?.subtitleField,...o.options?.gallery||{}};case"timeline":return{type:"object-timeline",...O,dateField:o.options?.timeline?.dateField||"created_at",titleField:o.options?.timeline?.titleField||"name",...o.options?.timeline||{}};case"gantt":return{type:"object-gantt",...O,startDateField:o.options?.gantt?.startDateField||"start_date",endDateField:o.options?.gantt?.endDateField||"end_date",progressField:o.options?.gantt?.progressField||"progress",dependenciesField:o.options?.gantt?.dependenciesField||"dependencies",...o.options?.gantt||{}};case"map":return{type:"object-map",...O,locationField:o.options?.map?.locationField||"location",...o.options?.map||{}};default:return O}},[p,o,i]),Le=w.conditions&&w.conditions.length>0,ce=g.useMemo(()=>T?.fields?Object.entries(T.fields).map(([O,U])=>({value:O,label:U.label||O,type:U.type||"text",options:U.options})):(o.fields||[]).map(O=>typeof O=="string"?{value:O,label:O,type:"text"}:{value:O.name||O.fieldName,label:O.label||O.name,type:O.type||"text",options:O.options}),[T,o.fields]),[fe,ge]=g.useState(!1);return t.jsxs("div",{ref:P,className:G("flex flex-col h-full bg-background relative",r),children:[H>0&&t.jsx("div",{className:"flex items-center justify-center text-xs text-muted-foreground",style:{height:H},children:E?"Refreshing…":"Pull to refresh"}),d&&t.jsx("div",{className:"border-b px-4 py-1 flex items-center bg-background",children:t.jsx(Vs,{currentView:p,availableViews:le,onViewChange:Re})}),t.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:[t.jsxs("div",{className:"flex items-center gap-0.5 overflow-hidden flex-1 min-w-0",children:[t.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs",disabled:!0,children:[t.jsx(vs,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Hide fields"})]}),t.jsxs(Pr,{open:m,onOpenChange:v,children:[t.jsx(Er,{asChild:!0,children:t.jsxs(B,{variant:"ghost",size:"sm",className:G("h-7 px-2 text-muted-foreground hover:text-primary text-xs",Le&&"text-primary"),children:[t.jsx(js,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Filter"}),Le&&t.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:w.conditions?.length||0})]})}),t.jsx(Or,{align:"start",className:"w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4",children:t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"flex items-center justify-between border-b pb-2",children:t.jsx("h4",{className:"font-medium text-sm",children:"Filter Records"})}),t.jsx(rs,{fields:ce,value:w,onChange:O=>{D(O),s&&s(O)}})]})})]}),t.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs",disabled:!0,children:[t.jsx(ws,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Group"})]}),t.jsxs(Pr,{open:S,onOpenChange:x,children:[t.jsx(Er,{asChild:!0,children:t.jsxs(B,{variant:"ghost",size:"sm",className:G("h-7 px-2 text-muted-foreground hover:text-primary text-xs",i.length>0&&"text-primary"),children:[t.jsx(Ns,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Sort"}),i.length>0&&t.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.length})]})}),t.jsx(Or,{align:"start",className:"w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4",children:t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"flex items-center justify-between border-b pb-2",children:t.jsx("h4",{className:"font-medium text-sm",children:"Sort Records"})}),t.jsx(ns,{fields:ce,value:i,onChange:O=>{f(O),a&&a(O)}})]})})]}),t.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs",disabled:!0,children:[t.jsx(Cs,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Color"})]}),t.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs hidden lg:flex",disabled:!0,children:[t.jsx(Ss,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Row height"})]})]}),t.jsx("div",{className:"flex items-center gap-1",children:fe?t.jsxs("div",{className:"relative w-36 sm:w-48 lg:w-64",children:[t.jsx(zr,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),t.jsx(Ee,{placeholder:"Find...",value:y,onChange:O=>ke(O.target.value),className:"pl-7 h-7 text-xs bg-muted/50 border-transparent hover:bg-muted focus:bg-background focus:border-input transition-colors",autoFocus:!0,onBlur:()=>{y||ge(!1)}}),t.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:()=>{ke(""),ge(!1)},children:t.jsx(cn,{className:"h-3 w-3"})})]}):t.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs",onClick:()=>ge(!0),children:[t.jsx(zr,{className:"h-3.5 w-3.5 mr-1.5"}),t.jsx("span",{className:"hidden sm:inline",children:"Search"})]})})]}),t.jsx("div",{className:"flex-1 min-h-0 bg-background relative overflow-hidden animate-in fade-in-0 duration-200",children:t.jsx(De,{schema:Ie,...c,data:b,loading:k})},p),Te.isOverlay&&t.jsx(ss,{...Te,title:o.label?`${o.label} Detail`:o.objectName?`${o.objectName.charAt(0).toUpperCase()+o.objectName.slice(1)} Detail`:"Record Detail",children:O=>t.jsx("div",{className:"space-y-3",children:Object.entries(O).map(([U,_])=>t.jsxs("div",{className:"flex flex-col",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:U.replace(/_/g," ")}),t.jsx("span",{className:"text-sm",children:String(_??"—")})]},U))})})]})},Zs={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"},Qs={small:"aspect-square",medium:"aspect-[4/3]",large:"aspect-[16/10]"},ea=e=>{const{schema:r}=e,n=Zn(),s=e.dataSource||n.dataSource,a=Qn(r.bind),[u,l]=g.useState([]),[d,c]=g.useState(!1),o=r.gallery,p=o?.coverField??r.imageField??"image",h=o?.coverFit??"cover",y=o?.cardSize??"medium",C=o?.titleField??r.titleField??"name",S=o?.visibleFields;g.useEffect(()=>{let i=!0;if(e.data&&Array.isArray(e.data)){l(e.data);return}const f=async()=>{if(!(!s||!r.objectName)){i&&c(!0);try{const m=await s.find(r.objectName,{$filter:r.filter});let v=[];if(Array.isArray(m))v=m;else if(m&&typeof m=="object"){const w=m;Array.isArray(w.records)?v=w.records:Array.isArray(w.data)&&(v=w.data)}i&&l(v)}catch(m){console.error("[ObjectGallery] Fetch error:",m)}finally{i&&c(!1)}}};return r.objectName&&!a&&!r.data&&!e.data&&f(),()=>{i=!1}},[r.objectName,s,a,r.data,r.filter,e.data]);const x=e.data||a||r.data||u||[];return d&&!x.length?t.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:"Loading Gallery..."}):x.length?t.jsx("div",{className:G("grid gap-4 p-4",Zs[y],r.className),role:"list",children:x.map((i,f)=>{const m=i._id??i.id??f,v=String(i[C]??"Untitled"),w=i[p];return t.jsxs(Ne,{role:"listitem",className:G("group overflow-hidden transition-all hover:shadow-md",e.onCardClick&&"cursor-pointer"),onClick:e.onCardClick?()=>e.onCardClick(i):void 0,children:[t.jsx("div",{className:G("w-full overflow-hidden bg-muted relative",Qs[y]),children:w?t.jsx("img",{src:w,alt:v,className:G("h-full w-full transition-transform group-hover:scale-105",h==="cover"&&"object-cover",h==="contain"&&"object-contain")}):t.jsx("div",{className:"flex h-full w-full items-center justify-center bg-secondary/50 text-muted-foreground",children:t.jsx("span",{className:"text-4xl font-light opacity-20",children:v[0]?.toUpperCase()})})}),t.jsxs(Ce,{className:"p-3 border-t",children:[t.jsx("h3",{className:"font-medium truncate text-sm",title:v,children:v}),S&&S.length>0&&t.jsx("div",{className:"mt-1 space-y-0.5",children:S.map(D=>{const N=i[D];return N==null?null:t.jsx("p",{className:"text-xs text-muted-foreground truncate",children:String(N)},D)})})]})]},m)})}):t.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:"No items to display"})};he.register("object-gallery",ea,{namespace:"plugin-list",label:"Gallery View",category:"view"});he.register("list-view",yn,{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:"List",value:"list"},{label:"Kanban",value:"kanban"},{label:"Calendar",value:"calendar"},{label:"Chart",value:"chart"}],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:{}}});he.register("list",yn,{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:"List",value:"list"},{label:"Kanban",value:"kanban"},{label:"Calendar",value:"calendar"},{label:"Chart",value:"chart"}],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 gr=({section:e,data:r,className:n})=>{const[s,a]=g.useState(e.defaultCollapsed??!1),[u,l]=g.useState(null),d=g.useCallback((p,h)=>{const y=h!=null?String(h):"";navigator.clipboard.writeText(y).then(()=>{l(p),setTimeout(()=>l(null),2e3)})},[]),c=p=>{const h=r?.[p.name]??p.value;if(p.render)return t.jsx(De,{schema:p.render,data:{...r,value:h}});const y=p.span===1?"col-span-1":p.span===2?"col-span-2":p.span===3?"col-span-3":p.span===4?"col-span-4":p.span===5?"col-span-5":p.span===6?"col-span-6":"",C=h!=null?String(h):"-",S=h!=null&&h!=="",x=u===p.name;return t.jsxs("div",{className:G("space-y-1.5 group",y),children:[t.jsx("div",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:p.label||p.name}),t.jsxs("div",{className:G("flex items-start justify-between gap-2 min-h-[44px] sm:min-h-0 rounded-md",S&&"cursor-pointer active:bg-muted/60 transition-colors"),onClick:S?()=>d(p.name,h):void 0,onKeyDown:S?i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),d(p.name,h))}:void 0,role:S?"button":void 0,tabIndex:S?0:void 0,children:[t.jsx("div",{className:"text-sm flex-1 break-words py-1",children:C}),S&&t.jsx(sn,{children:t.jsxs(mt,{children:[t.jsx(gt,{asChild:!0,children:t.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",onClick:i=>{i.stopPropagation(),d(p.name,h)},children:x?t.jsx(ks,{className:"h-3 w-3 text-green-600"}):t.jsx(dn,{className:"h-3 w-3"})})}),t.jsx(xt,{children:x?"Copied!":"Copy to clipboard"})]})})]})]},p.name)},o=t.jsx("div",{className:G("grid gap-3 sm:gap-4",e.columns===1?"grid-cols-1":e.columns===2?"grid-cols-1 sm:grid-cols-2":(e.columns===3,"grid-cols-1 sm:grid-cols-2 md:grid-cols-3")),children:e.fields.map(c)});return e.collapsible?t.jsx(as,{open:!s,onOpenChange:p=>a(!p),className:n,children:t.jsxs(Ne,{children:[t.jsx(is,{asChild:!0,children:t.jsxs(Me,{className:G("cursor-pointer hover:bg-muted/50 transition-colors",e.headerColor&&`bg-${e.headerColor}`),children:[t.jsxs(Fe,{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[e.icon&&t.jsx("span",{className:"text-muted-foreground",children:e.icon}),t.jsx("span",{children:e.title}),e.fields&&t.jsx(pr,{variant:"secondary",className:"ml-2 text-xs",children:e.fields.length})]}),t.jsx("div",{className:"flex items-center gap-2",children:s?t.jsx(Ds,{className:"h-4 w-4 text-muted-foreground"}):t.jsx(Rs,{className:"h-4 w-4 text-muted-foreground"})})]}),e.description&&!s&&t.jsx("p",{className:"text-sm text-muted-foreground mt-1.5",children:e.description})]})}),t.jsx(os,{children:t.jsx(Ce,{className:"pt-4 sm:pt-6 px-3 sm:px-6",children:o})})]})}):t.jsxs(Ne,{className:G(e.showBorder===!1?"border-none shadow-none":"",n),children:[e.title&&t.jsxs(Me,{className:G(e.headerColor&&`bg-${e.headerColor}`),children:[t.jsx(Fe,{className:"flex items-center justify-between",children:t.jsxs("div",{className:"flex items-center gap-2",children:[e.icon&&t.jsx("span",{className:"text-muted-foreground",children:e.icon}),t.jsx("span",{children:e.title}),e.fields&&t.jsx(pr,{variant:"secondary",className:"ml-2 text-xs",children:e.fields.length})]})}),e.description&&t.jsx("p",{className:"text-sm text-muted-foreground mt-1.5",children:e.description})]}),t.jsx(Ce,{className:"pt-4 sm:pt-6 px-3 sm:px-6",children:o})]})},ta=({tabs:e,data:r,className:n})=>{const[s,a]=g.useState(e[0]?.key),u=e.filter(l=>typeof l.visible=="boolean"?l.visible:(typeof l.visible=="string",!0));return t.jsxs(an,{value:s,onValueChange:a,className:n,children:[t.jsx(on,{className:"w-full justify-start border-b rounded-none bg-transparent p-0",children:u.map(l=>t.jsx(nt,{value:l.key,className:"relative rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent",children:t.jsxs("div",{className:"flex items-center gap-2",children:[l.icon&&t.jsx("span",{children:l.icon}),t.jsx("span",{children:l.label}),l.badge&&t.jsx(pr,{variant:"secondary",className:"ml-1",children:l.badge})]})},l.key))}),u.map(l=>t.jsx(st,{value:l.key,className:"mt-4",children:Array.isArray(l.content)?t.jsx("div",{className:"space-y-4",children:l.content.map((d,c)=>t.jsx(De,{schema:d,data:r},c))}):t.jsx(De,{schema:l.content,data:r})},l.key))]})},vn=({title:e,type:r,api:n,data:s=[],schema:a,columns:u,className:l,dataSource:d})=>{const[c,o]=g.useState(s),[p,h]=g.useState(!1);g.useEffect(()=>{n&&!s.length&&(h(!0),d?d.find(n).then(C=>{const S=Array.isArray(C)?C:Array.isArray(C?.data)?C.data:[];o(S),h(!1)}).catch(C=>{console.error("Failed to fetch related data:",C),h(!1)}):fetch(n).then(C=>C.json()).then(C=>{const S=Array.isArray(C)?C:C?.data||[];o(S)}).catch(C=>{console.error("Failed to fetch related data:",C)}).finally(()=>h(!1)))},[n,s,d]);const y=g.useMemo(()=>{if(a)return a;switch(r){case"grid":case"table":return{type:"data-table",data:c,columns:u||[],pagination:c.length>10,pageSize:10};case"list":return{type:"data-list",data:c};default:return{type:"div",children:"No view configured"}}},[r,c,u,a]);return t.jsxs(Ne,{className:l,children:[t.jsx(Me,{children:t.jsxs(Fe,{className:"flex items-center justify-between",children:[t.jsx("span",{children:e}),t.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:[c.length," record",c.length!==1?"s":""]})]})}),t.jsx(Ce,{children:p?t.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:"Loading..."}):c.length===0?t.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground text-sm",children:"No related records found"}):t.jsx(De,{schema:y})})]})},jn=({schema:e,dataSource:r,className:n,onEdit:s,onDelete:a,onBack:u})=>{const[l,d]=g.useState(e.data),[c,o]=g.useState(!e.data&&!!(e.api&&e.resourceId||r&&e.objectName&&e.resourceId)),[p,h]=g.useState(!1);g.useEffect(()=>{if(e.data){d(e.data),o(!1);return}r&&e.objectName&&e.resourceId?(o(!0),r.findOne(e.objectName,e.resourceId).then(w=>{d(w),o(!1)}).catch(w=>{console.error("Failed to fetch detail data:",w),o(!1)})):e.api&&e.resourceId&&(o(!0),fetch(`${e.api}/${e.resourceId}`).then(w=>w.json()).then(w=>{d(w?.data||w)}).catch(w=>{console.error("Failed to fetch detail data:",w)}).finally(()=>o(!1)))},[e.api,e.resourceId]);const y=g.useCallback(()=>{if(u)u();else if(e.onNavigate){const w=e.backUrl||(e.objectName?`/${e.objectName}`:"/");e.onNavigate(w,{replace:!0})}else e.backUrl?window.location.href=e.backUrl:window.history.back()},[u,e]),C=g.useCallback(()=>{s?s():e.onNavigate&&e.editUrl?e.onNavigate(e.editUrl):e.onNavigate&&e.objectName&&e.resourceId?e.onNavigate(`/${e.objectName}/${e.resourceId}/edit`):e.editUrl&&(window.location.href=e.editUrl)},[s,e]),S=g.useCallback(()=>{const w=e.deleteConfirmation||"Are you sure you want to delete this record?";window.confirm(w)&&(a?.(),e.onNavigate&&e.objectName&&e.onNavigate(`/${e.objectName}`,{replace:!0}))},[a,e]),x=g.useCallback(()=>{navigator.share&&e.objectName&&e.resourceId?navigator.share({title:e.title||"Record Details",text:`${e.objectName} #${e.resourceId}`,url:window.location.href}).catch(w=>console.log("Share failed:",w)):navigator.clipboard.writeText(window.location.href).then(()=>{console.log("Link copied to clipboard")})},[e]),i=g.useCallback(()=>{console.log("Duplicate record:",l)},[l]),f=g.useCallback(()=>{console.log("Export record:",l)},[l]),m=g.useCallback(()=>{console.log("View history for record:",e.resourceId)},[e]),v=g.useCallback(()=>{h(!p)},[p]);return c||e.loading?t.jsxs("div",{className:G("space-y-4",n),children:[t.jsx(or,{className:"h-10 w-full"}),t.jsx(or,{className:"h-64 w-full"}),t.jsx(or,{className:"h-48 w-full"})]}):t.jsx(sn,{children:t.jsxs("div",{className:G("space-y-6",n),children:[t.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-3 sm:gap-4 pb-4 border-b",children:[t.jsxs("div",{className:"flex items-start gap-2 sm:gap-3 flex-1 min-w-0",children:[(e.showBack??!0)&&t.jsxs(mt,{children:[t.jsx(gt,{asChild:!0,children:t.jsx(B,{variant:"ghost",size:"icon",onClick:y,className:"shrink-0 mt-1",children:t.jsx(Ps,{className:"h-4 w-4"})})}),t.jsx(xt,{children:"Back"})]}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("h1",{className:"text-xl sm:text-2xl font-bold truncate",children:e.title||"Details"}),t.jsxs(mt,{children:[t.jsx(gt,{asChild:!0,children:t.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0",onClick:v,children:p?t.jsx(Es,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}):t.jsx(Os,{className:"h-4 w-4 text-muted-foreground"})})}),t.jsx(xt,{children:p?"Remove from favorites":"Add to favorites"})]})]}),e.objectName&&t.jsxs("p",{className:"text-sm text-muted-foreground mt-1 flex items-center gap-1.5",children:[t.jsx("span",{className:"font-medium",children:e.objectName}),t.jsx("span",{className:"text-muted-foreground/60",children:"•"}),t.jsxs("span",{children:["#",e.resourceId]})]})]})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 shrink-0 w-full sm:w-auto",children:[e.actions?.map((w,D)=>t.jsx(De,{schema:w,data:l},D)),t.jsxs(mt,{children:[t.jsx(gt,{asChild:!0,children:t.jsx(B,{variant:"outline",size:"icon",onClick:x,children:t.jsx(zs,{className:"h-4 w-4"})})}),t.jsx(xt,{children:"Share"})]}),e.showEdit&&t.jsxs(mt,{children:[t.jsx(gt,{asChild:!0,children:t.jsxs(B,{variant:"default",onClick:C,className:"gap-2",children:[t.jsx(un,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:"Edit"})]})}),t.jsx(xt,{children:"Edit record"})]}),t.jsxs(ls,{children:[t.jsxs(mt,{children:[t.jsx(gt,{asChild:!0,children:t.jsx(cs,{asChild:!0,children:t.jsx(B,{variant:"ghost",size:"icon",children:t.jsx(Ms,{className:"h-4 w-4"})})})}),t.jsx(xt,{children:"More actions"})]}),t.jsxs(ds,{align:"end",className:"w-[calc(100vw-2rem)] sm:w-48 max-h-[60vh] overflow-y-auto",children:[t.jsxs(qt,{onClick:i,children:[t.jsx(dn,{className:"h-4 w-4 mr-2"}),"Duplicate"]}),t.jsxs(qt,{onClick:f,children:[t.jsx(Fs,{className:"h-4 w-4 mr-2"}),"Export"]}),t.jsxs(qt,{onClick:m,children:[t.jsx(Ts,{className:"h-4 w-4 mr-2"}),"View history"]}),e.showDelete&&t.jsxs(t.Fragment,{children:[t.jsx(us,{}),t.jsxs(qt,{onClick:S,className:"text-destructive focus:text-destructive",children:[t.jsx(Ls,{className:"h-4 w-4 mr-2"}),"Delete"]})]})]})]})]})]}),e.header&&t.jsx("div",{children:t.jsx(De,{schema:e.header,data:l})}),e.sections&&e.sections.length>0&&t.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.sections.map((w,D)=>t.jsx(gr,{section:w,data:l},D))}),e.fields&&e.fields.length>0&&!e.sections?.length&&t.jsx(gr,{section:{fields:e.fields,columns:e.columns||2},data:l}),e.tabs&&e.tabs.length>0&&t.jsx(ta,{tabs:e.tabs,data:l}),e.related&&e.related.length>0&&t.jsxs("div",{className:"space-y-4",children:[t.jsx("h2",{className:"text-xl font-semibold",children:"Related"}),e.related.map((w,D)=>t.jsx(vn,{title:w.title,type:w.type,api:w.api,data:w.data,columns:w.columns,dataSource:r},D))]}),e.footer&&t.jsx("div",{children:t.jsx(De,{schema:e.footer,data:l})})]})})};he.register("detail-view",jn,{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:"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:"showEdit",type:"boolean",label:"Show Edit Button",defaultValue:!1},{name:"showDelete",type:"boolean",label:"Show Delete Button",defaultValue:!1}],defaultProps:{title:"Detail View",showBack:!0,showEdit:!1,showDelete:!1,sections:[],fields:[],tabs:[],related:[]}});he.register("detail-section",gr,{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}]});he.register("related-list",vn,{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"}]});he.register("detail",jn,{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"}]});const ra=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],na=g.forwardRef(({schema:e,className:r,dataSource:n,onRefresh:s,...a},u)=>{const l=e.columns||4,d=e.gap||4,[c,o]=g.useState(!1),[p,h]=g.useState(!1),y=g.useRef(null);g.useEffect(()=>{const i=()=>h(window.innerWidth<640);return i(),window.addEventListener("resize",i),()=>window.removeEventListener("resize",i)},[]);const C=g.useCallback(()=>{s&&(o(!0),s(),setTimeout(()=>o(!1),600))},[s]);g.useEffect(()=>{if(!(!e.refreshInterval||e.refreshInterval<=0||!s))return y.current=setInterval(C,e.refreshInterval*1e3),()=>{y.current&&clearInterval(y.current)}},[e.refreshInterval,s,C]);const S=i=>{const m=(()=>{if(i.component)return i.component;const w=i.type;if(w==="bar"||w==="line"||w==="area"||w==="pie"||w==="donut"){const D=Array.isArray(i.data)?i.data:i.data?.items||[],N=i.options||{},b=N.xField||"name",j=N.yField||"value";return{type:"chart",chartType:w,data:D,xAxisKey:b,series:[{dataKey:j}],colors:ra,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}return w==="table"?{type:"data-table",...i.options,data:i.data?.items||[],searchable:!1,pagination:!1,className:"border-0"}:{...i,...i.options||{}}})();return i.type==="metric"?t.jsx("div",{className:G("h-full w-full",p&&"w-[85vw] shrink-0 snap-center"),style:!p&&i.layout?{gridColumn:`span ${i.layout.w}`,gridRow:`span ${i.layout.h}`}:void 0,children:t.jsx(De,{schema:m,className:"h-full w-full"})},i.id||i.title):t.jsxs(Ne,{className:G("overflow-hidden border-border/50 shadow-sm transition-all hover:shadow-md","bg-card/50 backdrop-blur-sm",p&&"w-[85vw] shrink-0 snap-center"),style:!p&&i.layout?{gridColumn:`span ${i.layout.w}`,gridRow:`span ${i.layout.h}`}:void 0,children:[i.title&&t.jsx(Me,{className:"pb-2 border-b border-border/40 bg-muted/20 px-3 sm:px-6",children:t.jsx(Fe,{className:"text-sm sm:text-base font-medium tracking-tight truncate",title:i.title,children:i.title})}),t.jsx(Ce,{className:"p-0",children:t.jsx("div",{className:G("h-full w-full","p-3 sm:p-4 md:p-6"),children:t.jsx(De,{schema:m})})})]},i.id||i.title)},x=s&&t.jsx("div",{className:G(p?"flex justify-end mb-2":"col-span-full flex justify-end mb-2"),children:t.jsxs(B,{variant:"outline",size:"sm",onClick:C,disabled:c,"aria-label":"Refresh dashboard",children:[t.jsx(fn,{className:G("h-4 w-4 mr-2",c&&"animate-spin")}),c?"Refreshing…":"Refresh All"]})});return p?t.jsxs("div",{ref:u,className:G("flex flex-col",r),...a,children:[x,t.jsx("div",{className:"flex overflow-x-auto snap-x snap-mandatory gap-3 pb-4 [-webkit-overflow-scrolling:touch]",style:{scrollPaddingLeft:"0.75rem"},children:e.widgets?.map(i=>S(i))})]}):t.jsxs("div",{ref:u,className:G("grid auto-rows-min","grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",r),style:{...l>4&&{gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`},gap:`${d*.25}rem`},...a,children:[x,e.widgets?.map(i=>S(i))]})});function vt(e){const{margin:r,containerPadding:n,containerWidth:s,cols:a}=e;return(s-r[0]*(a-1)-n[0]*2)/a}function yt(e,r,n){return Number.isFinite(e)?Math.round(r*e+Math.max(0,e-1)*n):e}function Ct(e,r,n,s,a,u,l){const{margin:d,containerPadding:c,rowHeight:o}=e,p=vt(e);let h,y,C,S;if(l?(h=Math.round(l.width),y=Math.round(l.height)):(h=yt(s,p,d[0]),y=yt(a,o,d[1])),u?(C=Math.round(u.top),S=Math.round(u.left)):l?(C=Math.round(l.top),S=Math.round(l.left)):(C=Math.round((o+d[1])*n+c[1]),S=Math.round((p+d[0])*r+c[0])),!u&&!l){if(Number.isFinite(s)){const i=Math.round((p+d[0])*(r+s)+c[0])-S-h;i!==d[0]&&(h+=i-d[0])}if(Number.isFinite(a)){const i=Math.round((o+d[1])*(n+a)+c[1])-C-y;i!==d[1]&&(y+=i-d[1])}}return{top:C,left:S,width:h,height:y}}function sa(e,r,n,s,a){const{margin:u,containerPadding:l,cols:d,rowHeight:c,maxRows:o}=e,p=vt(e);let h=Math.round((n-l[0])/(p+u[0])),y=Math.round((r-l[1])/(c+u[1]));return h=Xt(h,0,d-s),y=Xt(y,0,o-a),{x:h,y}}function Wt(e,r,n){const{margin:s,containerPadding:a,rowHeight:u}=e,l=vt(e),d=Math.round((n-a[0])/(l+s[0])),c=Math.round((r-a[1])/(u+s[1]));return{x:d,y:c}}function aa(e,r,n){const{margin:s,rowHeight:a}=e,u=vt(e),l=Math.max(1,Math.round((r+s[0])/(u+s[0]))),d=Math.max(1,Math.round((n+s[1])/(a+s[1])));return{w:l,h:d}}function Xt(e,r,n){return Math.max(Math.min(e,n),r)}function yr(e,r){return!(e.i===r.i||e.x+e.w<=r.x||e.x>=r.x+r.w||e.y+e.h<=r.y||e.y>=r.y+r.h)}function lt(e,r){for(let n=0;n<e.length;n++){const s=e[n];if(s!==void 0&&yr(s,r))return s}}function wn(e,r){return e.filter(n=>yr(n,r))}function ia(e,r){return r==="horizontal"?Nn(e):r==="vertical"||r==="wrap"?xr(e):[...e]}function xr(e){return[...e].sort((r,n)=>r.y!==n.y?r.y-n.y:r.x-n.x)}function Nn(e){return[...e].sort((r,n)=>r.x!==n.x?r.x-n.x:r.y-n.y)}function Jt(e){let r=0;for(let n=0;n<e.length;n++){const s=e[n];if(s!==void 0){const a=s.y+s.h;a>r&&(r=a)}}return r}function at(e,r){for(let n=0;n<e.length;n++){const s=e[n];if(s!==void 0&&s.i===r)return s}}function Zt(e){return e.filter(r=>r.static===!0)}function ct(e){return{i:e.i,x:e.x,y:e.y,w:e.w,h:e.h,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,moved:!!e.moved,static:!!e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,constraints:e.constraints,isBounded:e.isBounded}}function rt(e){const r=new Array(e.length);for(let n=0;n<e.length;n++){const s=e[n];s!==void 0&&(r[n]=ct(s))}return r}function oa(e,r){const n=new Array(e.length);for(let s=0;s<e.length;s++){const a=e[s];a!==void 0&&(r.i===a.i?n[s]=r:n[s]=a)}return n}function la(e,r,n){let s=at(e,r);return s?(s=n(ct(s)),[oa(e,s),s]):[[...e],null]}function vr(e,r){const n=Zt(e);for(let s=0;s<e.length;s++){const a=e[s];if(a!==void 0)if(a.x+a.w>r.cols&&(a.x=r.cols-a.w),a.x<0&&(a.x=0,a.w=r.cols),!a.static)n.push(a);else for(;lt(n,a);)a.y++}return e}function ot(e,r,n,s,a,u,l,d,c){if(r.static&&r.isDraggable!==!0)return[...e];if(r.y===s&&r.x===n)return[...e];const o=r.x,p=r.y;typeof n=="number"&&(r.x=n),typeof s=="number"&&(r.y=s),r.moved=!0;let h=ia(e,l);(l==="vertical"&&typeof s=="number"?p>=s:l==="horizontal"&&typeof n=="number"?o>=n:!1)&&(h=h.reverse());const C=wn(h,r),S=C.length>0;if(S&&c)return rt(e);if(S&&u)return r.x=o,r.y=p,r.moved=!1,e;let x=[...e];for(let i=0;i<C.length;i++){const f=C[i];f!==void 0&&(f.moved||(f.static?x=Fr(x,f,r,a,l):x=Fr(x,r,f,a,l)))}return x}function Fr(e,r,n,s,a,u){const l=a==="horizontal",d=a==="vertical",c=r.static;if(s){s=!1;const h={x:l?Math.max(r.x-n.w,0):n.x,y:d?Math.max(r.y-n.h,0):n.y,w:n.w,h:n.h,i:"-1"},y=lt(e,h),C=y!==void 0&&y.y+y.h>r.y,S=y!==void 0&&r.x+r.w>y.x;if(!y)return ot(e,n,l?h.x:void 0,d?h.y:void 0,s,c,a);if(C&&d)return ot(e,n,void 0,n.y+1,s,c,a);if(C&&a===null)return r.y=n.y,n.y=n.y+n.h,[...e];if(S&&l)return ot(e,r,n.x,void 0,s,c,a)}const o=l?n.x+1:void 0,p=d?n.y+1:void 0;return o===void 0&&p===void 0?[...e]:ot(e,n,o,p,s,c,a)}function bt(e,r,n){return Math.max(r,Math.min(n,e))}var ca={name:"gridBounds",constrainPosition(e,r,n,{cols:s,maxRows:a}){return{x:bt(r,0,Math.max(0,s-e.w)),y:bt(n,0,Math.max(0,a-e.h))}},constrainSize(e,r,n,s,{cols:a,maxRows:u}){const l=s==="w"||s==="nw"||s==="sw"?e.x+e.w:a-e.x,d=s==="n"||s==="nw"||s==="ne"?e.y+e.h:u-e.y;return{w:bt(r,1,Math.max(1,l)),h:bt(n,1,Math.max(1,d))}}},da={name:"minMaxSize",constrainSize(e,r,n){return{w:bt(r,e.minW??1,e.maxW??1/0),h:bt(n,e.minH??1,e.maxH??1/0)}}},Cn=[ca,da];function $t(e,r,n,s,a){let u={x:n,y:s};for(const l of e)l.constrainPosition&&(u=l.constrainPosition(r,u.x,u.y,a));if(r.constraints)for(const l of r.constraints)l.constrainPosition&&(u=l.constrainPosition(r,u.x,u.y,a));return u}function ua(e,r,n,s,a,u){let l={w:n,h:s};for(const d of e)d.constrainSize&&(l=d.constrainSize(r,l.w,l.h,a,u));if(r.constraints)for(const d of r.constraints)d.constrainSize&&(l=d.constrainSize(r,l.w,l.h,a,u));return l}function Sn({top:e,left:r,width:n,height:s}){const a=`translate(${r}px,${e}px)`;return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:`${n}px`,height:`${s}px`,position:"absolute"}}function fa({top:e,left:r,width:n,height:s}){return{top:`${e}px`,left:`${r}px`,width:`${n}px`,height:`${s}px`,position:"absolute"}}function Tr(e){return e*100+"%"}function ha(e,r,n,s){return e+n>s?r:n}function Dn(e,r,n){return e<0?r:n}function pa(e){return Math.max(0,e)}function Ut(e){return Math.max(0,e)}var jr=(e,r,n)=>{const{left:s,height:a,width:u}=r,l=e.top-(a-e.height);return{left:s,width:u,height:Dn(l,e.height,a),top:Ut(l)}},wr=(e,r,n)=>{const{top:s,left:a,height:u,width:l}=r;return{top:s,height:u,width:ha(e.left,e.width,l,n),left:pa(a)}},Nr=(e,r,n)=>{const{top:s,height:a,width:u}=r,l=e.left+e.width-u;return l<0?{height:a,width:e.left+e.width,top:Ut(s),left:0}:{height:a,width:u,top:Ut(s),left:l}},Cr=(e,r,n)=>{const{top:s,left:a,height:u,width:l}=r;return{width:l,left:a,height:Dn(s,e.height,u),top:Ut(s)}},ma=(e,r,n)=>jr(e,wr(e,r,n)),ga=(e,r,n)=>jr(e,Nr(e,r)),xa=(e,r,n)=>Cr(e,wr(e,r,n)),ba=(e,r,n)=>Cr(e,Nr(e,r)),ya={n:jr,ne:ma,e:wr,se:xa,s:Cr,sw:ba,w:Nr,nw:ga};function va(e,r,n,s){const a=ya[e];return a?a(r,{...r,...n},s):n}var ja={type:"transform",scale:1,calcStyle(e){return Sn(e)}},wa=ja,Na={cols:12,rowHeight:150,margin:[10,10],containerPadding:null,maxRows:1/0},Ca={enabled:!0,bounded:!1,threshold:3},Sa={enabled:!0,handles:["se"]},Da={enabled:!1,defaultItem:{w:1,h:1}};function Sr(e,r,n,s,a){const u=s==="x"?"w":"h";r[s]+=1;const l=e.findIndex(c=>c.i===r.i),d=a??Zt(e).length>0;for(let c=l+1;c<e.length;c++){const o=e[c];if(o!==void 0&&!o.static){if(!d&&o.y>r.y+r.h)break;yr(r,o)&&Sr(e,o,n+r[u],s,d)}}r[s]=n}function Ra(e,r,n,s){for(r.x=Math.max(r.x,0),r.y=Math.max(r.y,0),r.y=Math.min(s,r.y);r.y>0&&!lt(e,r);)r.y--;let a;for(;(a=lt(e,r))!==void 0;)Sr(n,r,a.y+a.h,"y");return r.y=Math.max(r.y,0),r}function ka(e,r,n,s){for(r.x=Math.max(r.x,0),r.y=Math.max(r.y,0);r.x>0&&!lt(e,r);)r.x--;let a;for(;(a=lt(e,r))!==void 0;)if(Sr(s,r,a.x+a.w,"x"),r.x+r.w>n)for(r.x=n-r.w,r.y++;r.x>0&&!lt(e,r);)r.x--;return r.x=Math.max(r.x,0),r}var Rn={type:"vertical",allowOverlap:!1,compact(e,r){const n=Zt(e);let s=Jt(n);const a=xr(e),u=new Array(e.length);for(let l=0;l<a.length;l++){const d=a[l];if(d===void 0)continue;let c=ct(d);c.static||(c=Ra(n,c,a,s),s=Math.max(s,c.y+c.h),n.push(c));const o=e.indexOf(d);u[o]=c,c.moved=!1}return u}},kn={type:"horizontal",allowOverlap:!1,compact(e,r){const n=Zt(e),s=Nn(e),a=new Array(e.length);for(let u=0;u<s.length;u++){const l=s[u];if(l===void 0)continue;let d=ct(l);d.static||(d=ka(n,d,r,s),n.push(d));const c=e.indexOf(l);a[c]=d,d.moved=!1}return a}},Pn={type:null,allowOverlap:!1,compact(e,r){return rt(e)}},Pa={...Rn,allowOverlap:!0,compact(e,r){return rt(e)}},Ea={...kn,allowOverlap:!0,compact(e,r){return rt(e)}},Oa={...Pn,allowOverlap:!0};function Dr(e,r=!1,n=!1){let s;return r?e==="vertical"?s=Pa:e==="horizontal"?s=Ea:s=Oa:e==="vertical"?s=Rn:e==="horizontal"?s=kn:s=Pn,n?{...s,preventCollision:n}:s}function En(e){return Object.keys(e).sort((n,s)=>e[n]-e[s])}function Lr(e,r){const n=En(e);let s=n[0];if(s===void 0)throw new Error("No breakpoints defined");for(let a=1;a<n.length;a++){const u=n[a];if(u===void 0)continue;const l=e[u];r>l&&(s=u)}return s}function _r(e,r){const n=r[e];if(n===void 0)throw new Error(`ResponsiveReactGridLayout: \`cols\` entry for breakpoint ${String(e)} is missing!`);return n}function ur(e,r,n,s,a,u){const l=e[n];if(l)return rt(l);let d=e[s];const c=En(r),o=c.slice(c.indexOf(n));for(let C=0;C<o.length;C++){const S=o[C];if(S===void 0)continue;const x=e[S];if(x){d=x;break}}const p=rt(d||[]),h=vr(p,{cols:a});return(typeof u=="object"&&u!==null?u:Dr(u)).compact(h,a)}function Gt(e,r){if(Array.isArray(e))return e;const n=e,s=n[r];if(s!==void 0)return s;const a=Object.keys(n);for(const u of a){const l=n[u];if(l!==void 0)return l}return[10,10]}function On(e){return function(n,s,a,u,l,d,c){return e(n,s,c)}}function Qt(e){return function(n,s,a,u){if(!n||!s||typeof n!="object"||typeof s!="object")return e(n,s,a,u);var l=u.get(n),d=u.get(s);if(l&&d)return l===s&&d===n;u.set(n,s),u.set(s,n);var c=e(n,s,a,u);return u.delete(n),u.delete(s),c}}function zn(e,r){var n={};for(var s in e)n[s]=e[s];for(var s in r)n[s]=r[s];return n}function Ar(e){return e.constructor===Object||e.constructor==null}function Ir(e){return typeof e.then=="function"}function er(e,r){return e===r||e!==e&&r!==r}var za="[object Arguments]",Ma="[object Boolean]",Fa="[object Date]",Ta="[object RegExp]",La="[object Map]",_a="[object Number]",Aa="[object Object]",Ia="[object Set]",Ba="[object String]",Br=Object.prototype.toString;function tr(e){var r=e.areArraysEqual,n=e.areDatesEqual,s=e.areMapsEqual,a=e.areObjectsEqual,u=e.areRegExpsEqual,l=e.areSetsEqual,d=e.createIsNestedEqual,c=d(o);function o(p,h,y){if(p===h)return!0;if(!p||!h||typeof p!="object"||typeof h!="object")return p!==p&&h!==h;if(Ar(p)&&Ar(h))return a(p,h,c,y);var C=Array.isArray(p),S=Array.isArray(h);if(C||S)return C===S&&r(p,h,c,y);var x=Br.call(p);return x!==Br.call(h)?!1:x===Fa?n(p,h,c,y):x===Ta?u(p,h,c,y):x===La?s(p,h,c,y):x===Ia?l(p,h,c,y):x===Aa||x===za?Ir(p)||Ir(h)?!1:a(p,h,c,y):x===Ma||x===_a||x===Ba?er(p.valueOf(),h.valueOf()):!1}return o}function Mn(e,r,n,s){var a=e.length;if(r.length!==a)return!1;for(;a-- >0;)if(!n(e[a],r[a],a,a,e,r,s))return!1;return!0}var qa=Qt(Mn);function Fn(e,r){return er(e.valueOf(),r.valueOf())}function Tn(e,r,n,s){var a=e.size===r.size;if(!a)return!1;if(!e.size)return!0;var u={},l=0;return e.forEach(function(d,c){if(a){var o=!1,p=0;r.forEach(function(h,y){!o&&!u[p]&&(o=n(c,y,l,p,e,r,s)&&n(d,h,c,y,e,r,s))&&(u[p]=!0),p++}),l++,a=o}}),a}var Ha=Qt(Tn),Wa="_owner",$a=Object.prototype.hasOwnProperty;function Ln(e,r,n,s){var a=Object.keys(e),u=a.length;if(Object.keys(r).length!==u)return!1;for(var l;u-- >0;){if(l=a[u],l===Wa){var d=!!e.$$typeof,c=!!r.$$typeof;if((d||c)&&d!==c)return!1}if(!$a.call(r,l)||!n(e[l],r[l],l,l,e,r,s))return!1}return!0}var Ga=Qt(Ln);function _n(e,r){return e.source===r.source&&e.flags===r.flags}function An(e,r,n,s){var a=e.size===r.size;if(!a)return!1;if(!e.size)return!0;var u={};return e.forEach(function(l,d){if(a){var c=!1,o=0;r.forEach(function(p,h){!c&&!u[o]&&(c=n(l,p,d,h,e,r,s))&&(u[o]=!0),o++}),a=c}}),a}var Va=Qt(An),In=Object.freeze({areArraysEqual:Mn,areDatesEqual:Fn,areMapsEqual:Tn,areObjectsEqual:Ln,areRegExpsEqual:_n,areSetsEqual:An,createIsNestedEqual:On}),Bn=Object.freeze({areArraysEqual:qa,areDatesEqual:Fn,areMapsEqual:Ha,areObjectsEqual:Ga,areRegExpsEqual:_n,areSetsEqual:Va,createIsNestedEqual:On}),Ya=tr(In);function Xe(e,r){return Ya(e,r,void 0)}tr(zn(In,{createIsNestedEqual:function(){return er}}));tr(Bn);tr(zn(Bn,{createIsNestedEqual:function(){return er}}));function Xa(e={}){const{measureBeforeMount:r=!1,initialWidth:n=1280}=e,[s,a]=g.useState(n),[u,l]=g.useState(!r),d=g.useRef(null),c=g.useRef(null),o=g.useCallback(()=>{const p=d.current;if(p){const h=p.offsetWidth;a(h),u||l(!0)}},[u]);return g.useEffect(()=>{const p=d.current;if(p)return o(),typeof ResizeObserver<"u"&&(c.current=new ResizeObserver(h=>{const y=h[0];if(y){const C=y.contentRect.width;a(C)}}),c.current.observe(p)),()=>{c.current&&(c.current.disconnect(),c.current=null)}},[o]),{width:s,mounted:u,containerRef:d,measureWidth:o}}var St={exports:{}},fr={},oe={},et={},qr;function rr(){if(qr)return et;qr=1,Object.defineProperty(et,"__esModule",{value:!0}),et.dontSetMe=a,et.findInArray=e,et.int=s,et.isFunction=r,et.isNum=n;function e(u,l){for(let d=0,c=u.length;d<c;d++)if(l.apply(l,[u[d],d,u]))return u[d]}function r(u){return typeof u=="function"||Object.prototype.toString.call(u)==="[object Function]"}function n(u){return typeof u=="number"&&!isNaN(u)}function s(u){return parseInt(u,10)}function a(u,l,d){if(u[l])return new Error(`Invalid prop ${l} passed to ${d} - do not set this, set it on the child.`)}return et}var tt={},Hr;function Ua(){if(Hr)return tt;Hr=1,Object.defineProperty(tt,"__esModule",{value:!0}),tt.browserPrefixToKey=n,tt.browserPrefixToStyle=s,tt.default=void 0,tt.getPrefix=r;const e=["Moz","Webkit","O","ms"];function r(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const l=window.document?.documentElement?.style;if(!l||u in l)return"";for(let d=0;d<e.length;d++)if(n(u,e[d])in l)return e[d];return""}function n(u,l){return l?`${l}${a(u)}`:u}function s(u,l){return l?`-${l.toLowerCase()}-${u}`:u}function a(u){let l="",d=!0;for(let c=0;c<u.length;c++)d?(l+=u[c].toUpperCase(),d=!1):u[c]==="-"?d=!0:l+=u[c];return l}return tt.default=r(),tt}var Wr;function Rr(){if(Wr)return oe;Wr=1,Object.defineProperty(oe,"__esModule",{value:!0}),oe.addClassName=D,oe.addEvent=l,oe.addUserSelectStyles=m,oe.createCSSTransform=C,oe.createSVGTransform=S,oe.getTouch=i,oe.getTouchIdentifier=f,oe.getTranslation=x,oe.innerHeight=p,oe.innerWidth=h,oe.matchesSelector=a,oe.matchesSelectorAndParentsTo=u,oe.offsetXYFromParent=y,oe.outerHeight=c,oe.outerWidth=o,oe.removeClassName=N,oe.removeEvent=d,oe.scheduleRemoveUserSelectStyles=v;var e=rr(),r=n(Ua());function n(b,j){if(typeof WeakMap=="function")var k=new WeakMap,F=new WeakMap;return(n=function(T,q){if(!q&&T&&T.__esModule)return T;var M,A,R={__proto__:null,default:T};if(T===null||typeof T!="object"&&typeof T!="function")return R;if(M=q?F:k){if(M.has(T))return M.get(T);M.set(T,R)}for(const P in T)P!=="default"&&{}.hasOwnProperty.call(T,P)&&((A=(M=Object.defineProperty)&&Object.getOwnPropertyDescriptor(T,P))&&(A.get||A.set)?M(R,P,A):R[P]=T[P]);return R})(b,j)}let s="";function a(b,j){return s||(s=(0,e.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(k){return(0,e.isFunction)(b[k])})),(0,e.isFunction)(b[s])?b[s](j):!1}function u(b,j,k){let F=b;do{if(a(F,j))return!0;if(F===k)return!1;F=F.parentNode}while(F);return!1}function l(b,j,k,F){if(!b)return;const T={capture:!0,...F};b.addEventListener?b.addEventListener(j,k,T):b.attachEvent?b.attachEvent("on"+j,k):b["on"+j]=k}function d(b,j,k,F){if(!b)return;const T={capture:!0,...F};b.removeEventListener?b.removeEventListener(j,k,T):b.detachEvent?b.detachEvent("on"+j,k):b["on"+j]=null}function c(b){let j=b.clientHeight;const k=b.ownerDocument.defaultView.getComputedStyle(b);return j+=(0,e.int)(k.borderTopWidth),j+=(0,e.int)(k.borderBottomWidth),j}function o(b){let j=b.clientWidth;const k=b.ownerDocument.defaultView.getComputedStyle(b);return j+=(0,e.int)(k.borderLeftWidth),j+=(0,e.int)(k.borderRightWidth),j}function p(b){let j=b.clientHeight;const k=b.ownerDocument.defaultView.getComputedStyle(b);return j-=(0,e.int)(k.paddingTop),j-=(0,e.int)(k.paddingBottom),j}function h(b){let j=b.clientWidth;const k=b.ownerDocument.defaultView.getComputedStyle(b);return j-=(0,e.int)(k.paddingLeft),j-=(0,e.int)(k.paddingRight),j}function y(b,j,k){const T=j===j.ownerDocument.body?{left:0,top:0}:j.getBoundingClientRect(),q=(b.clientX+j.scrollLeft-T.left)/k,M=(b.clientY+j.scrollTop-T.top)/k;return{x:q,y:M}}function C(b,j){const k=x(b,j,"px");return{[(0,r.browserPrefixToKey)("transform",r.default)]:k}}function S(b,j){return x(b,j,"")}function x(b,j,k){let{x:F,y:T}=b,q=`translate(${F}${k},${T}${k})`;if(j){const M=`${typeof j.x=="string"?j.x:j.x+k}`,A=`${typeof j.y=="string"?j.y:j.y+k}`;q=`translate(${M}, ${A})`+q}return q}function i(b,j){return b.targetTouches&&(0,e.findInArray)(b.targetTouches,k=>j===k.identifier)||b.changedTouches&&(0,e.findInArray)(b.changedTouches,k=>j===k.identifier)}function f(b){if(b.targetTouches&&b.targetTouches[0])return b.targetTouches[0].identifier;if(b.changedTouches&&b.changedTouches[0])return b.changedTouches[0].identifier}function m(b){if(!b)return;let j=b.getElementById("react-draggable-style-el");j||(j=b.createElement("style"),j.type="text/css",j.id="react-draggable-style-el",j.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
2
+ `,j.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
3
+ `,b.getElementsByTagName("head")[0].appendChild(j)),b.body&&D(b.body,"react-draggable-transparent-selection")}function v(b){window.requestAnimationFrame?window.requestAnimationFrame(()=>{w(b)}):w(b)}function w(b){if(b)try{if(b.body&&N(b.body,"react-draggable-transparent-selection"),b.selection)b.selection.empty();else{const j=(b.defaultView||window).getSelection();j&&j.type!=="Caret"&&j.removeAllRanges()}}catch{}}function D(b,j){b.classList?b.classList.add(j):b.className.match(new RegExp(`(?:^|\\s)${j}(?!\\S)`))||(b.className+=` ${j}`)}function N(b,j){b.classList?b.classList.remove(j):b.className=b.className.replace(new RegExp(`(?:^|\\s)${j}(?!\\S)`,"g"),"")}return oe}var We={},$r;function qn(){if($r)return We;$r=1,Object.defineProperty(We,"__esModule",{value:!0}),We.canDragX=a,We.canDragY=u,We.createCoreData=d,We.createDraggableData=c,We.getBoundPosition=n,We.getControlPosition=l,We.snapToGrid=s;var e=rr(),r=Rr();function n(h,y,C){if(!h.props.bounds)return[y,C];let{bounds:S}=h.props;S=typeof S=="string"?S:o(S);const x=p(h);if(typeof S=="string"){const{ownerDocument:i}=x,f=i.defaultView;let m;if(S==="parent"?m=x.parentNode:m=x.getRootNode().querySelector(S),!(m instanceof f.HTMLElement))throw new Error('Bounds selector "'+S+'" could not find an element.');const v=m,w=f.getComputedStyle(x),D=f.getComputedStyle(v);S={left:-x.offsetLeft+(0,e.int)(D.paddingLeft)+(0,e.int)(w.marginLeft),top:-x.offsetTop+(0,e.int)(D.paddingTop)+(0,e.int)(w.marginTop),right:(0,r.innerWidth)(v)-(0,r.outerWidth)(x)-x.offsetLeft+(0,e.int)(D.paddingRight)-(0,e.int)(w.marginRight),bottom:(0,r.innerHeight)(v)-(0,r.outerHeight)(x)-x.offsetTop+(0,e.int)(D.paddingBottom)-(0,e.int)(w.marginBottom)}}return(0,e.isNum)(S.right)&&(y=Math.min(y,S.right)),(0,e.isNum)(S.bottom)&&(C=Math.min(C,S.bottom)),(0,e.isNum)(S.left)&&(y=Math.max(y,S.left)),(0,e.isNum)(S.top)&&(C=Math.max(C,S.top)),[y,C]}function s(h,y,C){const S=Math.round(y/h[0])*h[0],x=Math.round(C/h[1])*h[1];return[S,x]}function a(h){return h.props.axis==="both"||h.props.axis==="x"}function u(h){return h.props.axis==="both"||h.props.axis==="y"}function l(h,y,C){const S=typeof y=="number"?(0,r.getTouch)(h,y):null;if(typeof y=="number"&&!S)return null;const x=p(C),i=C.props.offsetParent||x.offsetParent||x.ownerDocument.body;return(0,r.offsetXYFromParent)(S||h,i,C.props.scale)}function d(h,y,C){const S=!(0,e.isNum)(h.lastX),x=p(h);return S?{node:x,deltaX:0,deltaY:0,lastX:y,lastY:C,x:y,y:C}:{node:x,deltaX:y-h.lastX,deltaY:C-h.lastY,lastX:h.lastX,lastY:h.lastY,x:y,y:C}}function c(h,y){const C=h.props.scale;return{node:y.node,x:h.state.x+y.deltaX/C,y:h.state.y+y.deltaY/C,deltaX:y.deltaX/C,deltaY:y.deltaY/C,lastX:h.state.x,lastY:h.state.y}}function o(h){return{left:h.left,top:h.top,right:h.right,bottom:h.bottom}}function p(h){const y=h.findDOMNode();if(!y)throw new Error("<DraggableCore>: Unmounted during event!");return y}return We}var Dt={},Vt={},Gr;function Hn(){if(Gr)return Vt;Gr=1,Object.defineProperty(Vt,"__esModule",{value:!0}),Vt.default=e;function e(){}return Vt}var Vr;function Ka(){if(Vr)return Dt;Vr=1,Object.defineProperty(Dt,"__esModule",{value:!0}),Dt.default=void 0;var e=c(Ot()),r=d(Kt()),n=d(nn()),s=Rr(),a=qn(),u=rr(),l=d(Hn());function d(x){return x&&x.__esModule?x:{default:x}}function c(x,i){if(typeof WeakMap=="function")var f=new WeakMap,m=new WeakMap;return(c=function(v,w){if(!w&&v&&v.__esModule)return v;var D,N,b={__proto__:null,default:v};if(v===null||typeof v!="object"&&typeof v!="function")return b;if(D=w?m:f){if(D.has(v))return D.get(v);D.set(v,b)}for(const j in v)j!=="default"&&{}.hasOwnProperty.call(v,j)&&((N=(D=Object.defineProperty)&&Object.getOwnPropertyDescriptor(v,j))&&(N.get||N.set)?D(b,j,N):b[j]=v[j]);return b})(x,i)}function o(x,i,f){return(i=p(i))in x?Object.defineProperty(x,i,{value:f,enumerable:!0,configurable:!0,writable:!0}):x[i]=f,x}function p(x){var i=h(x,"string");return typeof i=="symbol"?i:i+""}function h(x,i){if(typeof x!="object"||!x)return x;var f=x[Symbol.toPrimitive];if(f!==void 0){var m=f.call(x,i);if(typeof m!="object")return m;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(x)}const y={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let C=y.mouse,S=class extends e.Component{constructor(){super(...arguments),o(this,"dragging",!1),o(this,"lastX",NaN),o(this,"lastY",NaN),o(this,"touchIdentifier",null),o(this,"mounted",!1),o(this,"handleDragStart",i=>{if(this.props.onMouseDown(i),!this.props.allowAnyClick&&typeof i.button=="number"&&i.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:m}=f;if(this.props.disabled||!(i.target instanceof m.defaultView.Node)||this.props.handle&&!(0,s.matchesSelectorAndParentsTo)(i.target,this.props.handle,f)||this.props.cancel&&(0,s.matchesSelectorAndParentsTo)(i.target,this.props.cancel,f))return;i.type==="touchstart"&&!this.props.allowMobileScroll&&i.preventDefault();const v=(0,s.getTouchIdentifier)(i);this.touchIdentifier=v;const w=(0,a.getControlPosition)(i,v,this);if(w==null)return;const{x:D,y:N}=w,b=(0,a.createCoreData)(this,D,N);(0,l.default)("DraggableCore: handleDragStart: %j",b),(0,l.default)("calling",this.props.onStart),!(this.props.onStart(i,b)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,s.addUserSelectStyles)(m),this.dragging=!0,this.lastX=D,this.lastY=N,(0,s.addEvent)(m,C.move,this.handleDrag),(0,s.addEvent)(m,C.stop,this.handleDragStop))}),o(this,"handleDrag",i=>{const f=(0,a.getControlPosition)(i,this.touchIdentifier,this);if(f==null)return;let{x:m,y:v}=f;if(Array.isArray(this.props.grid)){let N=m-this.lastX,b=v-this.lastY;if([N,b]=(0,a.snapToGrid)(this.props.grid,N,b),!N&&!b)return;m=this.lastX+N,v=this.lastY+b}const w=(0,a.createCoreData)(this,m,v);if((0,l.default)("DraggableCore: handleDrag: %j",w),this.props.onDrag(i,w)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const b=document.createEvent("MouseEvents");b.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(b)}return}this.lastX=m,this.lastY=v}),o(this,"handleDragStop",i=>{if(!this.dragging)return;const f=(0,a.getControlPosition)(i,this.touchIdentifier,this);if(f==null)return;let{x:m,y:v}=f;if(Array.isArray(this.props.grid)){let b=m-this.lastX||0,j=v-this.lastY||0;[b,j]=(0,a.snapToGrid)(this.props.grid,b,j),m=this.lastX+b,v=this.lastY+j}const w=(0,a.createCoreData)(this,m,v);if(this.props.onStop(i,w)===!1||this.mounted===!1)return!1;const N=this.findDOMNode();N&&this.props.enableUserSelectHack&&(0,s.scheduleRemoveUserSelectStyles)(N.ownerDocument),(0,l.default)("DraggableCore: handleDragStop: %j",w),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,N&&((0,l.default)("DraggableCore: Removing handlers"),(0,s.removeEvent)(N.ownerDocument,C.move,this.handleDrag),(0,s.removeEvent)(N.ownerDocument,C.stop,this.handleDragStop))}),o(this,"onMouseDown",i=>(C=y.mouse,this.handleDragStart(i))),o(this,"onMouseUp",i=>(C=y.mouse,this.handleDragStop(i))),o(this,"onTouchStart",i=>(C=y.touch,this.handleDragStart(i))),o(this,"onTouchEnd",i=>(C=y.touch,this.handleDragStop(i)))}componentDidMount(){this.mounted=!0;const i=this.findDOMNode();i&&(0,s.addEvent)(i,y.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const i=this.findDOMNode();if(i){const{ownerDocument:f}=i;(0,s.removeEvent)(f,y.mouse.move,this.handleDrag),(0,s.removeEvent)(f,y.touch.move,this.handleDrag),(0,s.removeEvent)(f,y.mouse.stop,this.handleDragStop),(0,s.removeEvent)(f,y.touch.stop,this.handleDragStop),(0,s.removeEvent)(i,y.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,s.scheduleRemoveUserSelectStyles)(f)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:n.default.findDOMNode(this)}render(){return e.cloneElement(e.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return Dt.default=S,o(S,"displayName","DraggableCore"),o(S,"propTypes",{allowAnyClick:r.default.bool,allowMobileScroll:r.default.bool,children:r.default.node.isRequired,disabled:r.default.bool,enableUserSelectHack:r.default.bool,offsetParent:function(x,i){if(x[i]&&x[i].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:r.default.arrayOf(r.default.number),handle:r.default.string,cancel:r.default.string,nodeRef:r.default.object,onStart:r.default.func,onDrag:r.default.func,onStop:r.default.func,onMouseDown:r.default.func,scale:r.default.number,className:u.dontSetMe,style:u.dontSetMe,transform:u.dontSetMe}),o(S,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),Dt}var Yr;function Ja(){return Yr||(Yr=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return c.default}}),e.default=void 0;var r=h(Ot()),n=p(Kt()),s=p(nn()),a=fs(),u=Rr(),l=qn(),d=rr(),c=p(Ka()),o=p(Hn());function p(f){return f&&f.__esModule?f:{default:f}}function h(f,m){if(typeof WeakMap=="function")var v=new WeakMap,w=new WeakMap;return(h=function(D,N){if(!N&&D&&D.__esModule)return D;var b,j,k={__proto__:null,default:D};if(D===null||typeof D!="object"&&typeof D!="function")return k;if(b=N?w:v){if(b.has(D))return b.get(D);b.set(D,k)}for(const F in D)F!=="default"&&{}.hasOwnProperty.call(D,F)&&((j=(b=Object.defineProperty)&&Object.getOwnPropertyDescriptor(D,F))&&(j.get||j.set)?b(k,F,j):k[F]=D[F]);return k})(f,m)}function y(){return y=Object.assign?Object.assign.bind():function(f){for(var m=1;m<arguments.length;m++){var v=arguments[m];for(var w in v)({}).hasOwnProperty.call(v,w)&&(f[w]=v[w])}return f},y.apply(null,arguments)}function C(f,m,v){return(m=S(m))in f?Object.defineProperty(f,m,{value:v,enumerable:!0,configurable:!0,writable:!0}):f[m]=v,f}function S(f){var m=x(f,"string");return typeof m=="symbol"?m:m+""}function x(f,m){if(typeof f!="object"||!f)return f;var v=f[Symbol.toPrimitive];if(v!==void 0){var w=v.call(f,m);if(typeof w!="object")return w;throw new TypeError("@@toPrimitive must return a primitive value.")}return(m==="string"?String:Number)(f)}class i extends r.Component{static getDerivedStateFromProps(m,v){let{position:w}=m,{prevPropsPosition:D}=v;return w&&(!D||w.x!==D.x||w.y!==D.y)?((0,o.default)("Draggable: getDerivedStateFromProps %j",{position:w,prevPropsPosition:D}),{x:w.x,y:w.y,prevPropsPosition:{...w}}):null}constructor(m){super(m),C(this,"onDragStart",(v,w)=>{if((0,o.default)("Draggable: onDragStart: %j",w),this.props.onStart(v,(0,l.createDraggableData)(this,w))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),C(this,"onDrag",(v,w)=>{if(!this.state.dragging)return!1;(0,o.default)("Draggable: onDrag: %j",w);const D=(0,l.createDraggableData)(this,w),N={x:D.x,y:D.y,slackX:0,slackY:0};if(this.props.bounds){const{x:j,y:k}=N;N.x+=this.state.slackX,N.y+=this.state.slackY;const[F,T]=(0,l.getBoundPosition)(this,N.x,N.y);N.x=F,N.y=T,N.slackX=this.state.slackX+(j-N.x),N.slackY=this.state.slackY+(k-N.y),D.x=N.x,D.y=N.y,D.deltaX=N.x-this.state.x,D.deltaY=N.y-this.state.y}if(this.props.onDrag(v,D)===!1)return!1;this.setState(N)}),C(this,"onDragStop",(v,w)=>{if(!this.state.dragging||this.props.onStop(v,(0,l.createDraggableData)(this,w))===!1)return!1;(0,o.default)("Draggable: onDragStop: %j",w);const N={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:j,y:k}=this.props.position;N.x=j,N.y=k}this.setState(N)}),this.state={dragging:!1,dragged:!1,x:m.position?m.position.x:m.defaultPosition.x,y:m.position?m.position.y:m.defaultPosition.y,prevPropsPosition:{...m.position},slackX:0,slackY:0,isElementSVG:!1},m.position&&!(m.onDrag||m.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??s.default.findDOMNode(this)}render(){const{axis:m,bounds:v,children:w,defaultPosition:D,defaultClassName:N,defaultClassNameDragging:b,defaultClassNameDragged:j,position:k,positionOffset:F,scale:T,...q}=this.props;let M={},A=null;const P=!!!k||this.state.dragging,E=k||D,H={x:(0,l.canDragX)(this)&&P?this.state.x:E.x,y:(0,l.canDragY)(this)&&P?this.state.y:E.y};this.state.isElementSVG?A=(0,u.createSVGTransform)(H,F):M=(0,u.createCSSTransform)(H,F);const be=(0,a.clsx)(w.props.className||"",N,{[b]:this.state.dragging,[j]:this.state.dragged});return r.createElement(c.default,y({},q,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),r.cloneElement(r.Children.only(w),{className:be,style:{...w.props.style,...M},transform:A}))}}e.default=i,C(i,"displayName","Draggable"),C(i,"propTypes",{...c.default.propTypes,axis:n.default.oneOf(["both","x","y","none"]),bounds:n.default.oneOfType([n.default.shape({left:n.default.number,right:n.default.number,top:n.default.number,bottom:n.default.number}),n.default.string,n.default.oneOf([!1])]),defaultClassName:n.default.string,defaultClassNameDragging:n.default.string,defaultClassNameDragged:n.default.string,defaultPosition:n.default.shape({x:n.default.number,y:n.default.number}),positionOffset:n.default.shape({x:n.default.oneOfType([n.default.number,n.default.string]),y:n.default.oneOfType([n.default.number,n.default.string])}),position:n.default.shape({x:n.default.number,y:n.default.number}),className:d.dontSetMe,style:d.dontSetMe,transform:d.dontSetMe}),C(i,"defaultProps",{...c.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(fr)),fr}var Xr;function kr(){if(Xr)return St.exports;Xr=1;const{default:e,DraggableCore:r}=Ja();return St.exports=e,St.exports.default=e,St.exports.DraggableCore=r,St.exports}var Za=kr(),Rt={exports:{}},kt={},Yt={},Ur;function Qa(){if(Ur)return Yt;Ur=1,Yt.__esModule=!0,Yt.cloneElement=d;var e=r(Ot());function r(c){return c&&c.__esModule?c:{default:c}}function n(c,o){var p=Object.keys(c);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(c);o&&(h=h.filter(function(y){return Object.getOwnPropertyDescriptor(c,y).enumerable})),p.push.apply(p,h)}return p}function s(c){for(var o=1;o<arguments.length;o++){var p=arguments[o]!=null?arguments[o]:{};o%2?n(Object(p),!0).forEach(function(h){a(c,h,p[h])}):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(p)):n(Object(p)).forEach(function(h){Object.defineProperty(c,h,Object.getOwnPropertyDescriptor(p,h))})}return c}function a(c,o,p){return(o=u(o))in c?Object.defineProperty(c,o,{value:p,enumerable:!0,configurable:!0,writable:!0}):c[o]=p,c}function u(c){var o=l(c,"string");return typeof o=="symbol"?o:o+""}function l(c,o){if(typeof c!="object"||!c)return c;var p=c[Symbol.toPrimitive];if(p!==void 0){var h=p.call(c,o);if(typeof h!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(c)}function d(c,o){return o.style&&c.props.style&&(o.style=s(s({},c.props.style),o.style)),o.className&&c.props.className&&(o.className=`${c.props.className} ${o.className}`),e.default.cloneElement(c,o)}return Yt}var Pt={},Kr;function Wn(){if(Kr)return Pt;Kr=1,Pt.__esModule=!0,Pt.resizableProps=void 0;var e=r(Kt());kr();function r(n){return n&&n.__esModule?n:{default:n}}return Pt.resizableProps={axis:e.default.oneOf(["both","x","y","none"]),className:e.default.string,children:e.default.element.isRequired,draggableOpts:e.default.shape({allowAnyClick:e.default.bool,cancel:e.default.string,children:e.default.node,disabled:e.default.bool,enableUserSelectHack:e.default.bool,offsetParent:typeof Element<"u"?e.default.instanceOf(Element):e.default.any,grid:e.default.arrayOf(e.default.number),handle:e.default.string,nodeRef:e.default.object,onStart:e.default.func,onDrag:e.default.func,onStop:e.default.func,onMouseDown:e.default.func,scale:e.default.number}),height:function(){for(var n=arguments.length,s=new Array(n),a=0;a<n;a++)s[a]=arguments[a];const[u]=s;return u.axis==="both"||u.axis==="y"?e.default.number.isRequired(...s):e.default.number(...s)},handle:e.default.oneOfType([e.default.node,e.default.func]),handleSize:e.default.arrayOf(e.default.number),lockAspectRatio:e.default.bool,maxConstraints:e.default.arrayOf(e.default.number),minConstraints:e.default.arrayOf(e.default.number),onResizeStop:e.default.func,onResizeStart:e.default.func,onResize:e.default.func,resizeHandles:e.default.arrayOf(e.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),transformScale:e.default.number,width:function(){for(var n=arguments.length,s=new Array(n),a=0;a<n;a++)s[a]=arguments[a];const[u]=s;return u.axis==="both"||u.axis==="x"?e.default.number.isRequired(...s):e.default.number(...s)}},Pt}var Jr;function $n(){if(Jr)return kt;Jr=1,kt.__esModule=!0,kt.default=void 0;var e=u(Ot()),r=kr(),n=Qa(),s=Wn();const a=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function u(x,i){if(typeof WeakMap=="function")var f=new WeakMap,m=new WeakMap;return(u=function(v,w){if(!w&&v&&v.__esModule)return v;var D,N,b={__proto__:null,default:v};if(v===null||typeof v!="object"&&typeof v!="function")return b;if(D=w?m:f){if(D.has(v))return D.get(v);D.set(v,b)}for(const j in v)j!=="default"&&{}.hasOwnProperty.call(v,j)&&((N=(D=Object.defineProperty)&&Object.getOwnPropertyDescriptor(v,j))&&(N.get||N.set)?D(b,j,N):b[j]=v[j]);return b})(x,i)}function l(){return l=Object.assign?Object.assign.bind():function(x){for(var i=1;i<arguments.length;i++){var f=arguments[i];for(var m in f)({}).hasOwnProperty.call(f,m)&&(x[m]=f[m])}return x},l.apply(null,arguments)}function d(x,i){if(x==null)return{};var f,m,v=c(x,i);if(Object.getOwnPropertySymbols){var w=Object.getOwnPropertySymbols(x);for(m=0;m<w.length;m++)f=w[m],i.indexOf(f)===-1&&{}.propertyIsEnumerable.call(x,f)&&(v[f]=x[f])}return v}function c(x,i){if(x==null)return{};var f={};for(var m in x)if({}.hasOwnProperty.call(x,m)){if(i.indexOf(m)!==-1)continue;f[m]=x[m]}return f}function o(x,i){var f=Object.keys(x);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(x);i&&(m=m.filter(function(v){return Object.getOwnPropertyDescriptor(x,v).enumerable})),f.push.apply(f,m)}return f}function p(x){for(var i=1;i<arguments.length;i++){var f=arguments[i]!=null?arguments[i]:{};i%2?o(Object(f),!0).forEach(function(m){h(x,m,f[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(x,Object.getOwnPropertyDescriptors(f)):o(Object(f)).forEach(function(m){Object.defineProperty(x,m,Object.getOwnPropertyDescriptor(f,m))})}return x}function h(x,i,f){return(i=y(i))in x?Object.defineProperty(x,i,{value:f,enumerable:!0,configurable:!0,writable:!0}):x[i]=f,x}function y(x){var i=C(x,"string");return typeof i=="symbol"?i:i+""}function C(x,i){if(typeof x!="object"||!x)return x;var f=x[Symbol.toPrimitive];if(f!==void 0){var m=f.call(x,i);if(typeof m!="object")return m;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(x)}let S=class extends e.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(i,f){const{minConstraints:m,maxConstraints:v,lockAspectRatio:w}=this.props;if(!m&&!v&&!w)return[i,f];if(w){const k=this.props.width/this.props.height,F=i-this.props.width,T=f-this.props.height;Math.abs(F)>Math.abs(T*k)?f=i/k:i=f*k}const[D,N]=[i,f];let[b,j]=this.slack||[0,0];return i+=b,f+=j,m&&(i=Math.max(m[0],i),f=Math.max(m[1],f)),v&&(i=Math.min(v[0],i),f=Math.min(v[1],f)),this.slack=[b+(D-i),j+(N-f)],[i,f]}resizeHandler(i,f){return(m,v)=>{let{node:w,deltaX:D,deltaY:N}=v;i==="onResizeStart"&&this.resetData();const b=(this.props.axis==="both"||this.props.axis==="x")&&f!=="n"&&f!=="s",j=(this.props.axis==="both"||this.props.axis==="y")&&f!=="e"&&f!=="w";if(!b&&!j)return;const k=f[0],F=f[f.length-1],T=w.getBoundingClientRect();if(this.lastHandleRect!=null){if(F==="w"){const E=T.left-this.lastHandleRect.left;D+=E}if(k==="n"){const E=T.top-this.lastHandleRect.top;N+=E}}this.lastHandleRect=T,F==="w"&&(D=-D),k==="n"&&(N=-N);let q=this.props.width+(b?D/this.props.transformScale:0),M=this.props.height+(j?N/this.props.transformScale:0);[q,M]=this.runConstraints(q,M),i==="onResizeStop"&&this.lastSize&&({width:q,height:M}=this.lastSize);const A=q!==this.props.width||M!==this.props.height;i!=="onResizeStop"&&(this.lastSize={width:q,height:M});const R=typeof this.props[i]=="function"?this.props[i]:null;R&&!(i==="onResize"&&!A)&&(m.persist?.(),R(m,{node:w,size:{width:q,height:M},handle:f})),i==="onResizeStop"&&this.resetData()}}renderResizeHandle(i,f){const{handle:m}=this.props;if(!m)return e.createElement("span",{className:`react-resizable-handle react-resizable-handle-${i}`,ref:f});if(typeof m=="function")return m(i,f);const v=typeof m.type=="string",w=p({ref:f},v?{}:{handleAxis:i});return e.cloneElement(m,w)}render(){const i=this.props,{children:f,className:m,draggableOpts:v,width:w,height:D,handle:N,handleSize:b,lockAspectRatio:j,axis:k,minConstraints:F,maxConstraints:T,onResize:q,onResizeStop:M,onResizeStart:A,resizeHandles:R,transformScale:P}=i,E=d(i,a);return(0,n.cloneElement)(f,p(p({},E),{},{className:`${m?`${m} `:""}react-resizable`,children:[...e.Children.toArray(f.props.children),...R.map(H=>{const be=this.handleRefs[H]??(this.handleRefs[H]=e.createRef());return e.createElement(r.DraggableCore,l({},v,{nodeRef:be,key:`resizableHandle-${H}`,onStop:this.resizeHandler("onResizeStop",H),onStart:this.resizeHandler("onResizeStart",H),onDrag:this.resizeHandler("onResize",H)}),this.renderResizeHandle(H,be))})]}))}};return kt.default=S,S.propTypes=s.resizableProps,S.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},kt}var Et={},Zr;function ei(){if(Zr)return Et;Zr=1,Et.__esModule=!0,Et.default=void 0;var e=l(Ot()),r=u(Kt()),n=u($n()),s=Wn();const a=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function u(i){return i&&i.__esModule?i:{default:i}}function l(i,f){if(typeof WeakMap=="function")var m=new WeakMap,v=new WeakMap;return(l=function(w,D){if(!D&&w&&w.__esModule)return w;var N,b,j={__proto__:null,default:w};if(w===null||typeof w!="object"&&typeof w!="function")return j;if(N=D?v:m){if(N.has(w))return N.get(w);N.set(w,j)}for(const k in w)k!=="default"&&{}.hasOwnProperty.call(w,k)&&((b=(N=Object.defineProperty)&&Object.getOwnPropertyDescriptor(w,k))&&(b.get||b.set)?N(j,k,b):j[k]=w[k]);return j})(i,f)}function d(){return d=Object.assign?Object.assign.bind():function(i){for(var f=1;f<arguments.length;f++){var m=arguments[f];for(var v in m)({}).hasOwnProperty.call(m,v)&&(i[v]=m[v])}return i},d.apply(null,arguments)}function c(i,f){var m=Object.keys(i);if(Object.getOwnPropertySymbols){var v=Object.getOwnPropertySymbols(i);f&&(v=v.filter(function(w){return Object.getOwnPropertyDescriptor(i,w).enumerable})),m.push.apply(m,v)}return m}function o(i){for(var f=1;f<arguments.length;f++){var m=arguments[f]!=null?arguments[f]:{};f%2?c(Object(m),!0).forEach(function(v){p(i,v,m[v])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(m)):c(Object(m)).forEach(function(v){Object.defineProperty(i,v,Object.getOwnPropertyDescriptor(m,v))})}return i}function p(i,f,m){return(f=h(f))in i?Object.defineProperty(i,f,{value:m,enumerable:!0,configurable:!0,writable:!0}):i[f]=m,i}function h(i){var f=y(i,"string");return typeof f=="symbol"?f:f+""}function y(i,f){if(typeof i!="object"||!i)return i;var m=i[Symbol.toPrimitive];if(m!==void 0){var v=m.call(i,f);if(typeof v!="object")return v;throw new TypeError("@@toPrimitive must return a primitive value.")}return(f==="string"?String:Number)(i)}function C(i,f){if(i==null)return{};var m,v,w=S(i,f);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(i);for(v=0;v<D.length;v++)m=D[v],f.indexOf(m)===-1&&{}.propertyIsEnumerable.call(i,m)&&(w[m]=i[m])}return w}function S(i,f){if(i==null)return{};var m={};for(var v in i)if({}.hasOwnProperty.call(i,v)){if(f.indexOf(v)!==-1)continue;m[v]=i[v]}return m}let x=class extends e.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,m)=>{const{size:v}=m;this.props.onResize?(f.persist?.(),this.setState(v,()=>this.props.onResize&&this.props.onResize(f,m))):this.setState(v)}}static getDerivedStateFromProps(f,m){return m.propsWidth!==f.width||m.propsHeight!==f.height?{width:f.width,height:f.height,propsWidth:f.width,propsHeight:f.height}:null}render(){const f=this.props,{handle:m,handleSize:v,onResize:w,onResizeStart:D,onResizeStop:N,draggableOpts:b,minConstraints:j,maxConstraints:k,lockAspectRatio:F,axis:T,width:q,height:M,resizeHandles:A,style:R,transformScale:P}=f,E=C(f,a);return e.createElement(n.default,{axis:T,draggableOpts:b,handle:m,handleSize:v,height:this.state.height,lockAspectRatio:F,maxConstraints:k,minConstraints:j,onResizeStart:D,onResize:this.onResize,onResizeStop:N,resizeHandles:A,transformScale:P,width:this.state.width},e.createElement("div",d({},E,{style:o(o({},R),{},{width:this.state.width+"px",height:this.state.height+"px"})})))}};return Et.default=x,x.propTypes=o(o({},s.resizableProps),{},{children:r.default.element}),Et}var Qr;function ti(){return Qr||(Qr=1,Rt.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},Rt.exports.Resizable=$n().default,Rt.exports.ResizableBox=ei().default),Rt.exports}var ri=ti();function en(e){const{children:r,cols:n,containerWidth:s,margin:a,containerPadding:u,rowHeight:l,maxRows:d,isDraggable:c,isResizable:o,isBounded:p,static:h,useCSSTransforms:y=!0,usePercentages:C=!1,transformScale:S=1,positionStrategy:x,dragThreshold:i=0,droppingPosition:f,className:m="",style:v,handle:w="",cancel:D="",x:N,y:b,w:j,h:k,minW:F=1,maxW:T=1/0,minH:q=1,maxH:M=1/0,i:A,resizeHandles:R,resizeHandle:P,constraints:E=Cn,layoutItem:H,layout:be=[],onDragStart:le,onDrag:Re,onDragStop:ke,onResizeStart:Te,onResize:Ie,onResizeStop:Le}=e,[ce,fe]=g.useState(!1),[ge,O]=g.useState(!1),U=g.useRef(null),_=g.useRef({left:0,top:0}),ie=g.useRef({top:0,left:0,width:0,height:0}),se=g.useRef(void 0),Be=g.useRef(be);Be.current=be;const de=g.useRef(null),te=g.useRef(null),ue=g.useRef(!1),dt=g.useRef({x:0,y:0}),re=g.useRef(!1),Z=g.useMemo(()=>({cols:n,containerPadding:u,containerWidth:s,margin:a,maxRows:d,rowHeight:l}),[n,u,s,a,d,l]),ve=g.useMemo(()=>({cols:n,maxRows:d,containerWidth:s,containerHeight:0,rowHeight:l,margin:a,layout:[]}),[n,d,s,l,a]),xe=g.useCallback(()=>({...ve,layout:Be.current}),[ve]),_e=g.useMemo(()=>H??{i:A,x:N,y:b,w:j,h:k,minW:F,maxW:T,minH:q,maxH:M},[H,A,N,b,j,k,F,T,q,M]),zt=g.useCallback(V=>{if(x?.calcStyle)return x.calcStyle(V);if(y)return Sn(V);const Y=fa(V);return C?{...Y,left:Tr(V.left/s),width:Tr(V.width/s)}:Y},[x,y,C,s]),qe=g.useCallback((V,{node:Y})=>{if(!le)return;const{offsetParent:ae}=Y;if(!ae)return;const K=ae.getBoundingClientRect(),pe=Y.getBoundingClientRect(),je=pe.left/S,Se=K.left/S,we=pe.top/S,Oe=K.top/S;let ze;if(x?.calcDragPosition){const I=V;ze=x.calcDragPosition(I.clientX,I.clientY,I.clientX-pe.left,I.clientY-pe.top)}else ze={left:je-Se+ae.scrollLeft,top:we-Oe+ae.scrollTop};if(_.current=ze,i>0){const I=V;dt.current={x:I.clientX,y:I.clientY},ue.current=!0,re.current=!1,fe(!0);return}fe(!0);const Ze=Wt(Z,ze.top,ze.left),{x:Qe,y:z}=$t(E,_e,Ze.x,Ze.y,xe());le(A,Qe,z,{e:V,node:Y,newPosition:ze})},[le,S,Z,x,i,E,_e,xe,A]),ut=g.useCallback((V,{node:Y,deltaX:ae,deltaY:K})=>{if(!Re||!ce)return;const pe=V;if(ue.current&&!re.current){const Qe=pe.clientX-dt.current.x,z=pe.clientY-dt.current.y;if(Math.hypot(Qe,z)<i)return;if(re.current=!0,ue.current=!1,le){const L=Wt(Z,_.current.top,_.current.left),{x:W,y:J}=$t(E,_e,L.x,L.y,xe());le(A,W,J,{e:V,node:Y,newPosition:_.current})}}let je=_.current.top+K,Se=_.current.left+ae;if(p){const{offsetParent:Qe}=Y;if(Qe){const z=Qe.clientHeight-yt(k,l,a[1]);je=Xt(je,0,z);const I=vt(Z),L=s-yt(j,I,a[0]);Se=Xt(Se,0,L)}}const we={top:je,left:Se};_.current=we;const Oe=Wt(Z,je,Se),{x:ze,y:Ze}=$t(E,_e,Oe.x,Oe.y,xe());Re(A,ze,Ze,{e:V,node:Y,newPosition:we})},[Re,le,ce,i,p,k,l,a,Z,s,j,A,E,_e,xe]),Ue=g.useCallback((V,{node:Y})=>{if(!ke||!ce)return;const ae=ue.current;if(ue.current=!1,re.current=!1,dt.current={x:0,y:0},ae){fe(!1),_.current={left:0,top:0};return}const{left:K,top:pe}=_.current,je={top:pe,left:K};fe(!1),_.current={left:0,top:0};const Se=Wt(Z,pe,K),{x:we,y:Oe}=$t(E,_e,Se.x,Se.y,xe());ke(A,we,Oe,{e:V,node:Y,newPosition:je})},[ke,ce,Z,E,_e,xe,A]);de.current=qe,te.current=ut;const Ae=g.useCallback((V,{node:Y,size:ae,handle:K},pe,je)=>{const Se=je==="onResizeStart"?Te:je==="onResize"?Ie:Le;if(!Se)return;let we;Y?we=va(K,pe,ae,s):we={...ae,top:pe.top,left:pe.left},ie.current=we;const Oe=aa(Z,we.width,we.height),{w:ze,h:Ze}=ua(E,_e,Oe.w,Oe.h,K,xe());Se(A,ze,Ze,{e:V.nativeEvent,node:Y,size:we,handle:K})},[Te,Ie,Le,s,Z,A,E,_e,xe]),ft=g.useCallback((V,Y)=>{O(!0);const ae=Ct(Z,N,b,j,k),K={...Y,handle:Y.handle};Ae(V,K,ae,"onResizeStart")},[Ae,Z,N,b,j,k]),ht=g.useCallback((V,Y)=>{const ae=Ct(Z,N,b,j,k),K={...Y,handle:Y.handle};Ae(V,K,ae,"onResize")},[Ae,Z,N,b,j,k]),Ke=g.useCallback((V,Y)=>{O(!1),ie.current={top:0,left:0,width:0,height:0};const ae=Ct(Z,N,b,j,k),K={...Y,handle:Y.handle};Ae(V,K,ae,"onResizeStop")},[Ae,Z,N,b,j,k]);g.useEffect(()=>{if(!f)return;const V=U.current;if(!V)return;const Y=se.current||{left:0,top:0},ae=ce&&(f.left!==Y.left||f.top!==Y.top);if(ce){if(ae){const K=f.left-_.current.left,pe=f.top-_.current.top,je={node:V,deltaX:K,deltaY:pe,lastX:_.current.left,lastY:_.current.top,x:f.left,y:f.top};te.current?.(f.e,je)}}else{const K={node:V,deltaX:f.left,deltaY:f.top,lastX:0,lastY:0,x:f.left,y:f.top};de.current?.(f.e,K)}se.current=f},[f,ce,A]);const He=Ct(Z,N,b,j,k,ce?_.current:null,ge?ie.current:null),jt=Ge.Children.only(r),wt=Ct(Z,0,0,1,1),Mt=[wt.width,wt.height],Ft=[1/0,1/0],Pe=jt.props,sr=Pe.className,Tt=Pe.style;let Je=Ge.cloneElement(jt,{ref:U,className:ln("react-grid-item",sr,m,{static:h,resizing:ge,"react-draggable":c,"react-draggable-dragging":ce,dropping:!!f,cssTransforms:y}),style:{...v,...Tt,...zt(He)}});const Lt=P;return Je=t.jsx(ri.Resizable,{draggableOpts:{disabled:!o},className:o?void 0:"react-resizable-hide",width:He.width,height:He.height,minConstraints:Mt,maxConstraints:Ft,onResizeStart:ft,onResize:ht,onResizeStop:Ke,transformScale:S,resizeHandles:R,handle:Lt,children:Je}),Je=t.jsx(Za.DraggableCore,{disabled:!c,onStart:qe,onDrag:ut,onStop:Ue,handle:w,cancel:".react-resizable-handle"+(D?","+D:""),scale:S,nodeRef:U,children:Je}),Je}var Ye=()=>{},tn="react-grid-layout",Gn=!1;try{Gn=/firefox/i.test(navigator.userAgent)}catch{}function ni(e,r){const n=Ge.Children.toArray(e),s=Ge.Children.toArray(r);if(n.length!==s.length)return!1;for(let a=0;a<n.length;a++){const u=n[a],l=s[a];if(u?.key!==l?.key)return!1}return!0}function rn(e,r,n,s){const a=[],u=new Set;Ge.Children.forEach(r,d=>{if(!Ge.isValidElement(d)||d.key===null)return;const c=String(d.key);u.add(c);const o=e.find(p=>p.i===c);if(o)a.push(ct(o));else{const h=d.props["data-grid"];h?a.push({i:c,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}):a.push({i:c,x:0,y:Jt(a),w:1,h:1})}});const l=vr(a,{cols:n});return s.compact(l,n)}function si(e){const{children:r,width:n,gridConfig:s,dragConfig:a,resizeConfig:u,dropConfig:l,positionStrategy:d=wa,compactor:c,constraints:o=Cn,layout:p=[],droppingItem:h,autoSize:y=!0,className:C="",style:S={},innerRef:x,onLayoutChange:i=Ye,onDragStart:f=Ye,onDrag:m=Ye,onDragStop:v=Ye,onResizeStart:w=Ye,onResize:D=Ye,onResizeStop:N=Ye,onDrop:b=Ye,onDropDragOver:j=Ye}=e,k=g.useMemo(()=>({...Na,...s}),[s]),F=g.useMemo(()=>({...Ca,...a}),[a]),T=g.useMemo(()=>({...Sa,...u}),[u]),q=g.useMemo(()=>({...Da,...l}),[l]),{cols:M,rowHeight:A,maxRows:R,margin:P,containerPadding:E}=k,{enabled:H,bounded:be,handle:le,cancel:Re,threshold:ke}=F,{enabled:Te,handles:Ie,handleComponent:Le}=T,{enabled:ce,defaultItem:fe,onDragOver:ge}=q,O=c??Dr("vertical"),U=O.type,_=O.allowOverlap,ie=O.preventCollision??!1,se=g.useMemo(()=>h??{i:"__dropping-elem__",...fe},[h,fe]),Be=d.type==="transform",de=d.scale,te=E??P,[ue,dt]=g.useState(!1),[re,Z]=g.useState(()=>rn(p,r,M,O)),[ve,xe]=g.useState(null),[_e,zt]=g.useState(!1),[qe,ut]=g.useState(null),[Ue,Ae]=g.useState(),ft=g.useRef(null),ht=g.useRef(null),Ke=g.useRef(null),He=g.useRef(0),jt=g.useRef(re),wt=g.useRef(p),Mt=g.useRef(r),Ft=g.useRef(U),Pe=g.useRef(re);Pe.current=re,g.useEffect(()=>{dt(!0),Xe(re,p)||i(re)},[]),g.useEffect(()=>{if(ve||qe)return;const z=!Xe(p,wt.current),I=!ni(r,Mt.current),L=U!==Ft.current;if(z||I||L){const J=rn(z?p:re,r,M,O);Xe(J,re)||Z(J)}wt.current=p,Mt.current=r,Ft.current=U},[p,r,M,U,O,ve,qe,re]),g.useEffect(()=>{if(!ve&&!Xe(re,jt.current)){jt.current=re;const z=re.filter(I=>I.i!==se.i);i(z)}},[re,ve,i,se.i]);const sr=g.useMemo(()=>{if(!y)return;const z=Jt(re),I=te[1];return z*A+(z-1)*P[1]+I*2+"px"},[y,re,A,P,te]),Tt=g.useCallback((z,I,L,W)=>{const J=Pe.current,X=at(J,z);if(!X)return;const Q={w:X.w,h:X.h,x:X.x,y:X.y,i:z};ft.current=ct(X),Ke.current=J,xe(Q),f(J,X,X,null,W.e,W.node)},[f]),Je=g.useCallback((z,I,L,W)=>{const J=Pe.current,X=ft.current,Q=at(J,z);if(!Q)return;const me={w:Q.w,h:Q.h,x:Q.x,y:Q.y,i:z},ee=ot(J,Q,I,L,!0,ie,U,M,_);m(ee,X,Q,me,W.e,W.node),Z(O.compact(ee,M)),xe(me)},[ie,U,M,_,O,m]),Lt=g.useCallback((z,I,L,W)=>{if(!ve)return;const J=Pe.current,X=ft.current,Q=at(J,z);if(!Q)return;const me=ot(J,Q,I,L,!0,ie,U,M,_),ee=O.compact(me,M);v(ee,X,Q,null,W.e,W.node);const ye=Ke.current;ft.current=null,Ke.current=null,xe(null),Z(ee),ye&&!Xe(ye,ee)&&i(ee)},[ve,ie,U,M,_,O,v,i]),V=g.useCallback((z,I,L,W)=>{const J=Pe.current,X=at(J,z);X&&(ht.current=ct(X),Ke.current=J,zt(!0),w(J,X,X,null,W.e,W.node))},[w]),Y=g.useCallback((z,I,L,W)=>{const J=Pe.current,X=ht.current,{handle:Q}=W;let me=!1,ee,ye;const[_t,Ve]=la(J,z,ne=>(ee=ne.x,ye=ne.y,["sw","w","nw","n","ne"].includes(Q)&&(["sw","nw","w"].includes(Q)&&(ee=ne.x+(ne.w-I),I=ne.x!==ee&&ee<0?ne.w:I,ee=ee<0?0:ee),["ne","n","nw"].includes(Q)&&(ye=ne.y+(ne.h-L),L=ne.y!==ye&&ye<0?ne.h:L,ye=ye<0?0:ye),me=!0),ie&&!_&&wn(J,{...ne,w:I,h:L,x:ee??ne.x,y:ye??ne.y}).filter(It=>It.i!==ne.i).length>0&&(ye=ne.y,L=ne.h,ee=ne.x,I=ne.w,me=!1),ne.w=I,ne.h=L,ne));if(!Ve)return;let Nt=_t;me&&ee!==void 0&&ye!==void 0&&(Nt=ot(_t,Ve,ee,ye,!0,ie,U,M,_));const At={w:Ve.w,h:Ve.h,x:Ve.x,y:Ve.y,i:z,static:!0};D(Nt,X,Ve,At,W.e,W.node),Z(O.compact(Nt,M)),xe(At)},[ie,U,M,_,O,D]),ae=g.useCallback((z,I,L,W)=>{const J=Pe.current,X=ht.current,Q=at(J,z),me=O.compact(J,M);N(me,X,Q??null,null,W.e,W.node);const ee=Ke.current;ht.current=null,Ke.current=null,xe(null),zt(!1),Z(me),ee&&!Xe(ee,me)&&i(me)},[M,O,N,i]),K=g.useCallback(()=>{const z=Pe.current;if(!z.some(W=>W.i===se.i)){ut(null),xe(null),Ae(void 0);return}const L=O.compact(z.filter(W=>W.i!==se.i),M);Z(L),ut(null),xe(null),Ae(void 0)},[se.i,M,O]),pe=g.useCallback(z=>{if(z.preventDefault(),z.stopPropagation(),Gn&&!z.nativeEvent.target?.classList.contains(tn))return!1;const I=ge?ge(z.nativeEvent):j(z);if(I===!1)return qe&&K(),!1;const{dragOffsetX:L=0,dragOffsetY:W=0,...J}=I??{},X={...se,...J},Q=z.currentTarget.getBoundingClientRect(),me={cols:M,margin:P,maxRows:R,rowHeight:A,containerWidth:n,containerPadding:te},ee=vt(me),ye=yt(X.w,ee,P[0]),_t=yt(X.h,A,P[1]),Ve=ye/2,Nt=_t/2,At=z.clientX-Q.left+L-Ve,ne=z.clientY-Q.top+W-Nt,ar=Math.max(0,At),It=Math.max(0,ne),Bt={left:ar/de,top:It/de,e:z.nativeEvent};if(qe)Ue&&(Ue.left!==Bt.left||Ue.top!==Bt.top)&&Ae(Bt);else{const ir=sa(me,It,ar,X.w,X.h);ut(t.jsx("div",{},X.i)),Ae(Bt),Z([...Pe.current,{...X,x:ir.x,y:ir.y,static:!1,isDraggable:!0}])}},[qe,Ue,se,ge,j,K,de,M,P,R,A,n,te]),je=g.useCallback(z=>{z.preventDefault(),z.stopPropagation(),He.current--,He.current<0&&(He.current=0),He.current===0&&K()},[K]),Se=g.useCallback(z=>{z.preventDefault(),z.stopPropagation(),He.current++},[]),we=g.useCallback(z=>{z.preventDefault(),z.stopPropagation();const I=Pe.current,L=I.find(W=>W.i===se.i);He.current=0,K(),b(I,L,z.nativeEvent)},[se.i,K,b]),Oe=g.useCallback((z,I)=>{if(!z||!z.key)return null;const L=at(re,String(z.key));if(!L)return null;const W=typeof L.isDraggable=="boolean"?L.isDraggable:!L.static&&H,J=typeof L.isResizable=="boolean"?L.isResizable:!L.static&&Te,X=L.resizeHandles||[...Ie],Q=W&&be&&L.isBounded!==!1,me=Le;return t.jsx(en,{containerWidth:n,cols:M,margin:P,containerPadding:te,maxRows:R,rowHeight:A,cancel:Re,handle:le,onDragStart:Tt,onDrag:Je,onDragStop:Lt,onResizeStart:V,onResize:Y,onResizeStop:ae,isDraggable:W,isResizable:J,isBounded:Q,useCSSTransforms:Be&&ue,usePercentages:!ue,transformScale:de,positionStrategy:d,dragThreshold:ke,w:L.w,h:L.h,x:L.x,y:L.y,i:L.i,minH:L.minH,minW:L.minW,maxH:L.maxH,maxW:L.maxW,static:L.static,droppingPosition:I?Ue:void 0,resizeHandles:X,resizeHandle:me,constraints:o,layoutItem:L,layout:re,children:z},L.i)},[re,n,M,P,te,R,A,Re,le,Tt,Je,Lt,V,Y,ae,H,Te,be,Be,ue,de,d,ke,Ue,Ie,Le,o]),ze=()=>ve?t.jsx(en,{w:ve.w,h:ve.h,x:ve.x,y:ve.y,i:ve.i,className:`react-grid-placeholder ${_e?"placeholder-resizing":""}`,containerWidth:n,cols:M,margin:P,containerPadding:te,maxRows:R,rowHeight:A,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:Be,transformScale:de,constraints:o,layout:re,children:t.jsx("div",{})}):null,Ze=ln(tn,C),Qe={height:sr,...S};return t.jsxs("div",{ref:x,className:Ze,style:Qe,onDrop:ce?we:void 0,onDragLeave:ce?je:void 0,onDragEnter:ce?Se:void 0,onDragOver:ce?pe:void 0,children:[Ge.Children.map(r,z=>Ge.isValidElement(z)?Oe(z):null),ce&&qe&&Oe(qe,!0),ze()]})}var ai={lg:1200,md:996,sm:768,xs:480,xxs:0},ii={lg:12,md:10,sm:6,xs:4,xxs:2},hr=()=>{};function oi(e,r,n,s){const a=[];Ge.Children.forEach(r,l=>{if(!Ge.isValidElement(l)||l.key===null)return;const d=String(l.key),c=e.find(o=>o.i===d);if(c)a.push({...c,i:d});else{const p=l.props["data-grid"];p?a.push({i:d,x:p.x??0,y:p.y??0,w:p.w??1,h:p.h??1,minW:p.minW,maxW:p.maxW,minH:p.minH,maxH:p.maxH,static:p.static,isDraggable:p.isDraggable,isResizable:p.isResizable,resizeHandles:p.resizeHandles,isBounded:p.isBounded}):a.push({i:d,x:0,y:Jt(a),w:1,h:1})}});const u=vr(a,{cols:n});return s.compact(u,n)}function li(e){const{children:r,width:n,breakpoint:s,breakpoints:a=ai,cols:u=ii,layouts:l={},rowHeight:d=150,maxRows:c=1/0,margin:o=[10,10],containerPadding:p=null,compactor:h,onBreakpointChange:y=hr,onLayoutChange:C=hr,onWidthChange:S=hr,...x}=e,i=h??Dr("vertical"),f=i.type,m=i.allowOverlap,v=g.useMemo(()=>s??Lr(a,n),[]),w=g.useMemo(()=>_r(v,u),[v,u]),D=g.useMemo(()=>ur(l,a,v,v,w,f),[]),[N,b]=g.useState(v),[j,k]=g.useState(w),[F,T]=g.useState(D),[q,M]=g.useState(l),A=g.useRef(n),R=g.useRef(s),P=g.useRef(a),E=g.useRef(u),H=g.useRef(l),be=g.useRef(f),le=g.useRef(q);g.useEffect(()=>{le.current=q},[q]);const Re=g.useMemo(()=>Xe(l,H.current)?null:ur(l,a,N,N,j,i),[l,a,N,j,i]),ke=Re??F;g.useEffect(()=>{Re!==null&&(T(Re),M(l),le.current=l,H.current=l)},[Re,l]),g.useEffect(()=>{if(f!==be.current){const fe=i.compact(rt(ke),j),ge={...le.current,[N]:fe};T(fe),M(ge),le.current=ge,C(fe,ge),be.current=f}},[f,i,ke,j,m,N,C]),g.useEffect(()=>{const fe=n!==A.current,ge=s!==R.current,O=!Xe(a,P.current),U=!Xe(u,E.current);if(fe||ge||O||U){const _=s??Lr(a,n),ie=_r(_,u),se=N;if(se!==_||O||U){const te={...le.current};te[se]||(te[se]=rt(F));let ue=ur(te,a,_,se,ie,i);ue=oi(ue,r,ie,i),te[_]=ue,b(_),k(ie),T(ue),M(te),le.current=te,y(_,ie),C(ue,te)}const Be=Gt(o,_),de=p?Gt(p,_):null;S(n,Be,ie,de),A.current=n,R.current=s,P.current=a,E.current=u}},[n,s,a,u,N,j,F,r,i,f,m,o,p,y,C,S]);const Te=g.useCallback(fe=>{const O={...le.current,[N]:fe};T(fe),M(O),le.current=O,C(fe,O)},[N,C]),Ie=g.useMemo(()=>Gt(o,N),[o,N]),Le=g.useMemo(()=>p===null?null:Gt(p,N),[p,N]),ce=g.useMemo(()=>({cols:j,rowHeight:d,maxRows:c,margin:Ie,containerPadding:Le}),[j,d,c,Ie,Le]);return t.jsx(si,{...x,width:n,gridConfig:ce,compactor:i,onLayoutChange:Te,layout:ke,children:r})}function ci({editMode:e}){const r=ts();return g.useEffect(()=>{if(e)return r.startDrag({id:"dashboard-layout",type:"dashboard-widget",data:{}}),()=>{r.endDrag()};r.endDrag("dashboard")},[e,r]),null}const di=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],ui=({schema:e,className:r,onLayoutChange:n,persistLayoutKey:s="dashboard-layout",onRefresh:a})=>{const{width:u,containerRef:l,mounted:d}=Xa(),[c,o]=g.useState(!1),[p,h]=g.useState(!1),y=es(),C=g.useRef(null),S=g.useCallback(()=>{a&&(h(!0),a(),setTimeout(()=>h(!1),600))},[a]);g.useEffect(()=>{if(!(!e.refreshInterval||e.refreshInterval<=0||!a))return C.current=setInterval(S,e.refreshInterval*1e3),()=>{C.current&&clearInterval(C.current)}},[e.refreshInterval,a,S]);const[x,i]=g.useState(()=>{if(typeof window<"u"&&s){const D=localStorage.getItem(s);if(D)try{return JSON.parse(D)}catch(N){console.error("Failed to parse saved layout:",N)}}return{lg:e.widgets?.map((D,N)=>({i:D.id||`widget-${N}`,x:D.layout?.x||N%4*3,y:D.layout?.y||Math.floor(N/4)*4,w:D.layout?.w||3,h:D.layout?.h||4}))||[]}}),f=g.useCallback((D,N)=>{i(N),n?.(D)},[n]),m=g.useCallback(()=>{typeof window<"u"&&s&&localStorage.setItem(s,JSON.stringify(x)),o(!1)},[x,s]),v=g.useCallback(()=>{const D={lg:e.widgets?.map((N,b)=>({i:N.id||`widget-${b}`,x:N.layout?.x||b%4*3,y:N.layout?.y||Math.floor(b/4)*4,w:N.layout?.w||3,h:N.layout?.h||4}))||[]};i(D),typeof window<"u"&&s&&localStorage.removeItem(s)},[e.widgets,s]),w=g.useCallback(D=>{if(D.component)return D.component;const N=D.type;if(N==="bar"||N==="line"||N==="area"||N==="pie"||N==="donut"){const b=Array.isArray(D.data)?D.data:D.data?.items||[],j=D.options||{},k=j.xField||"name",F=j.yField||"value";return{type:"chart",chartType:N,data:b,xAxisKey:k,series:[{dataKey:F}],colors:di,className:"h-full"}}return N==="table"?{type:"data-table",...D.options,data:D.data?.items||[],searchable:!1,pagination:!1,className:"border-0"}:D},[]);return t.jsxs("div",{ref:l,className:G("w-full",r),"data-testid":"grid-layout",children:[y&&t.jsx(ci,{editMode:c}),t.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[t.jsx("h2",{className:"text-2xl font-bold",children:e.title||"Dashboard"}),t.jsx("div",{className:"flex gap-2",children:c?t.jsxs(t.Fragment,{children:[t.jsxs(B,{onClick:m,size:"sm",variant:"default",children:[t.jsx(_s,{className:"h-4 w-4 mr-2"}),"Save Layout"]}),t.jsxs(B,{onClick:v,size:"sm",variant:"outline",children:[t.jsx(cn,{className:"h-4 w-4 mr-2"}),"Reset"]}),t.jsx(B,{onClick:()=>o(!1),size:"sm",variant:"ghost",children:"Cancel"})]}):t.jsxs(t.Fragment,{children:[a&&t.jsxs(B,{onClick:S,size:"sm",variant:"outline",disabled:p,"aria-label":"Refresh dashboard",children:[t.jsx(fn,{className:G("h-4 w-4 mr-2",p&&"animate-spin")}),p?"Refreshing…":"Refresh All"]}),t.jsxs(B,{onClick:()=>o(!0),size:"sm",variant:"outline",children:[t.jsx(un,{className:"h-4 w-4 mr-2"}),"Edit Layout"]})]})})]}),d&&t.jsx(li,{className:"layout",width:u,layouts:x,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:c,handle:".drag-handle"},resizeConfig:{enabled:c},onLayoutChange:f,children:e.widgets?.map((D,N)=>{const b=D.id||`widget-${N}`,j=w(D),k=D.type==="metric";return t.jsx("div",{className:"h-full",children:k?t.jsxs("div",{className:"h-full w-full relative",children:[c&&t.jsx("div",{className:"drag-handle absolute top-2 right-2 z-10 cursor-move p-1 bg-background/80 rounded border border-border",children:t.jsx(Mr,{className:"h-4 w-4"})}),t.jsx(De,{schema:j,className:"h-full w-full"})]}):t.jsxs(Ne,{className:G("h-full overflow-hidden border-border/50 shadow-sm transition-all","bg-card/50 backdrop-blur-sm",c&&"ring-2 ring-primary/20"),children:[D.title&&t.jsxs(Me,{className:"pb-2 border-b border-border/40 bg-muted/20 flex flex-row items-center justify-between",children:[t.jsx(Fe,{className:"text-base font-medium tracking-tight truncate",title:D.title,children:D.title}),c&&t.jsx("div",{className:"drag-handle cursor-move p-1 hover:bg-muted/40 rounded",children:t.jsx(Mr,{className:"h-4 w-4"})})]}),t.jsx(Ce,{className:"p-0 h-full",children:t.jsx("div",{className:G("h-full w-full overflow-auto p-4"),children:t.jsx(De,{schema:j})})})]})},b)})})]})},fi=({label:e,value:r,trend:n,icon:s,className:a,description:u,...l})=>{const d=g.useMemo(()=>{if(typeof s=="string"){const c=hn[s];return c?t.jsx(c,{className:"h-4 w-4 text-muted-foreground"}):null}return s},[s]);return t.jsxs(Ne,{className:G("h-full",a),...l,children:[t.jsxs(Me,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[t.jsx(Fe,{className:"text-sm font-medium",children:e}),d&&t.jsx("div",{className:"h-4 w-4 text-muted-foreground",children:d})]}),t.jsxs(Ce,{children:[t.jsx("div",{className:"text-2xl font-bold",children:r}),(n||u)&&t.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[n&&t.jsxs("span",{className:G("flex items-center mr-2",n.direction==="up"&&"text-green-500",n.direction==="down"&&"text-red-500",n.direction==="neutral"&&"text-yellow-500"),children:[n.direction==="up"&&t.jsx(pn,{className:"h-3 w-3 mr-1"}),n.direction==="down"&&t.jsx(mn,{className:"h-3 w-3 mr-1"}),n.direction==="neutral"&&t.jsx(gn,{className:"h-3 w-3 mr-1"}),n.value,"%"]}),u||n?.label]})]})]})},hi=({title:e,value:r,icon:n,trend:s,trendValue:a,description:u,className:l,...d})=>{const c=n&&hn[n];return t.jsxs(Ne,{className:G("h-full",l),...d,children:[t.jsxs(Me,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[t.jsx(Fe,{className:"text-sm font-medium",children:e}),c&&t.jsx(c,{className:"h-4 w-4 text-muted-foreground"})]}),t.jsxs(Ce,{children:[t.jsx("div",{className:"text-2xl font-bold",children:r}),(s||a||u)&&t.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[s&&a&&t.jsxs("span",{className:G("flex items-center mr-2",s==="up"&&"text-green-500",s==="down"&&"text-red-500",s==="neutral"&&"text-yellow-500"),children:[s==="up"&&t.jsx(pn,{className:"h-3 w-3 mr-1"}),s==="down"&&t.jsx(mn,{className:"h-3 w-3 mr-1"}),s==="neutral"&&t.jsx(gn,{className:"h-3 w-3 mr-1"}),a]}),u]})]})]})};he.register("dashboard",na,{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:[]}});he.register("metric",fi,{namespace:"plugin-dashboard",label:"Metric Widget",category:"Dashboard",inputs:[{name:"label",type:"string",label:"Label"},{name:"value",type:"string",label:"Value"}]});he.register("metric-card",hi,{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"}});he.register("dashboard-grid",ui,{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"}});const pi=({schema:e})=>{const{title:r,description:n,data:s,columns:a}=e;e.chart?.type;const u=!!e.chart;return t.jsxs(Ne,{className:`h-full flex flex-col ${e.className||""}`,children:[t.jsxs(Me,{children:[r&&t.jsx(Fe,{children:r}),n&&t.jsx(br,{children:n})]}),t.jsxs(Ce,{className:"flex-1 overflow-auto space-y-4",children:[u&&(()=>{const l=e.chart?.type;let d=l?he.get(l):null;return d||(d=he.get("chart")),d?t.jsx("div",{className:"min-h-[300px] border rounded-md p-4 bg-white/50",children:t.jsx(d,{schema:{...e.chart,data:e.chart.data||s}})}):t.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: ",l||"chart"]})})(),s&&s.length>0&&t.jsx("div",{className:"border rounded-md",children:(()=>{const l=he.get("aggrid")||he.get("table");return l?t.jsx(l,{schema:{type:"aggrid",rowData:s,columnDefs:a,domLayout:"autoHeight"}}):t.jsx("div",{className:"overflow-x-auto",children:t.jsxs("table",{className:"w-full text-sm text-left",children:[t.jsx("thead",{className:"text-xs uppercase bg-gray-50",children:t.jsx("tr",{children:a?.map(d=>t.jsx("th",{className:"px-6 py-3",children:d.headerName||d.label||d.field},d.field))})}),t.jsx("tbody",{children:s.map((d,c)=>t.jsx("tr",{className:"bg-white border-b",children:a?.map(o=>t.jsx("td",{className:"px-6 py-4",children:d[o.field]},o.field))},c))})]})})})()})]})]})};function mi(e,r,n){const s=e.fields||[],a=s.map(d=>d.label||d.name),u=r.map(d=>s.map(c=>{let o=d[c.name];return o=Yn(o),typeof o=="string"&&(o.includes(",")||o.includes('"')||o.includes(`
4
+ `))?`"${o.replace(/"/g,'""')}"`:o??""})),l=[...n?.includeHeaders!==!1?[a.join(",")]:[],...u.map(d=>d.join(","))].join(`
5
+ `);nr(l,n?.filename||`${e.title||"report"}.csv`,"text/csv")}function gi(e,r,n){const s={title:e.title,description:e.description,generatedAt:new Date().toISOString(),data:r},a=JSON.stringify(s,null,2);nr(a,n?.filename||`${e.title||"report"}.json`,"application/json")}function Vn(e,r,n){const s=e.fields||[],a=Un(n?.orientation),u=Xn(n?.pageSize),l=`<!DOCTYPE html>
6
+ <html>
7
+ <head>
8
+ <meta charset="utf-8">
9
+ <title>${$e(e.title||"Report")}</title>
10
+ <style>
11
+ @page { size: ${u} ${a}; margin: 20mm; }
12
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #333; }
13
+ h1 { font-size: 24px; margin-bottom: 8px; }
14
+ .description { color: #666; margin-bottom: 24px; }
15
+ .meta { color: #999; font-size: 12px; margin-bottom: 16px; }
16
+ table { width: 100%; border-collapse: collapse; margin-top: 16px; }
17
+ th { background: #f5f5f5; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }
18
+ td { padding: 8px 12px; border: 1px solid #ddd; }
19
+ tr:nth-child(even) { background: #fafafa; }
20
+ </style>
21
+ </head>
22
+ <body>
23
+ <h1>${$e(e.title||"Report")}</h1>
24
+ ${e.description?`<p class="description">${$e(e.description)}</p>`:""}
25
+ <p class="meta">Generated: ${new Date().toLocaleString()}</p>
26
+ <table>
27
+ <thead><tr>${s.map(d=>`<th>${$e(d.label||d.name)}</th>`).join("")}</tr></thead>
28
+ <tbody>${r.map(d=>`<tr>${s.map(c=>`<td>${$e(String(d[c.name]??""))}</td>`).join("")}</tr>`).join("")}</tbody>
29
+ </table>
30
+ </body>
31
+ </html>`;nr(l,n?.filename||`${e.title||"report"}.html`,"text/html")}function xi(e,r,n){const s=e.fields||[],a=Un(n?.orientation),u=Xn(n?.pageSize),l=window.open("","_blank");if(!l){const d={...n,filename:n?.filename?.replace(/\.pdf$/,".html")||`${e.title||"report"}.html`};Vn(e,r,d);return}l.document.write(`<!DOCTYPE html>
32
+ <html>
33
+ <head>
34
+ <meta charset="utf-8">
35
+ <title>${$e(e.title||"Report")}</title>
36
+ <style>
37
+ @page { size: ${u} ${a}; margin: 20mm; }
38
+ @media print { .no-print { display: none; } }
39
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #333; }
40
+ h1 { font-size: 24px; margin-bottom: 8px; }
41
+ .description { color: #666; margin-bottom: 24px; }
42
+ .meta { color: #999; font-size: 12px; margin-bottom: 16px; }
43
+ table { width: 100%; border-collapse: collapse; margin-top: 16px; }
44
+ th { background: #f5f5f5; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }
45
+ td { padding: 8px 12px; border: 1px solid #ddd; }
46
+ tr:nth-child(even) { background: #fafafa; }
47
+ </style>
48
+ </head>
49
+ <body>
50
+ <h1>${$e(e.title||"Report")}</h1>
51
+ ${e.description?`<p class="description">${$e(e.description)}</p>`:""}
52
+ <p class="meta">Generated: ${new Date().toLocaleString()}</p>
53
+ <table>
54
+ <thead><tr>${s.map(d=>`<th>${$e(d.label||d.name)}</th>`).join("")}</tr></thead>
55
+ <tbody>${r.map(d=>`<tr>${s.map(c=>`<td>${$e(String(d[c.name]??""))}</td>`).join("")}</tr>`).join("")}</tbody>
56
+ </table>
57
+ </body>
58
+ </html>`),l.document.close(),l.onload=()=>{l.print()}}function bi(e,r,n){const s=e.fields||[],a=s.map(d=>d.label||d.name),u=r.map(d=>s.map(c=>{let o=d[c.name];return o=Yn(o),typeof o=="string"&&(o.includes(",")||o.includes('"')||o.includes(`
59
+ `)||o.includes(" "))?`"${o.replace(/"/g,'""')}"`:o??""})),l="\uFEFF"+[...n?.includeHeaders!==!1?[a.join(" ")]:[],...u.map(d=>d.join(" "))].join(`
60
+ `);nr(l,n?.filename||`${e.title||"report"}.tsv`,"text/tab-separated-values")}function yi(e,r,n,s){switch(e){case"csv":mi(r,n,s);break;case"json":gi(r,n,s);break;case"html":Vn(r,n,s);break;case"pdf":xi(r,n,s);break;case"excel":bi(r,n,s);break;default:console.warn(`Unsupported export format: ${e}`)}}function $e(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function Yn(e){if(typeof e=="string"&&e.length>0){const r=e.charAt(0);if(r==="="||r==="+"||r==="-"||r==="@"||r==="|")return` ${e}`}return e}function Xn(e){return["A4","A3","Letter","Legal"].includes(e||"")?e:"A4"}function Un(e){return e==="landscape"?"landscape":"portrait"}function nr(e,r,n){const s=new Blob([e],{type:`${n};charset=utf-8`}),a=URL.createObjectURL(s),u=document.createElement("a");u.href=a,u.download=r,document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(a)}const Kn=({schema:e,onRefresh:r})=>{const{report:n,data:s,showToolbar:a=!0,allowExport:u=!0,allowPrint:l=!0,loading:d=!1}=e,c=y=>{if(!n){console.warn("ReportViewer: Cannot export, no report defined");return}yi(y,n,s||[],n.exportConfigs?.[y])},o=()=>{window.print()},p=()=>{r?.()},h=(y,C)=>{if(!s)return 0;const S=s.map(x=>Number(x[y])||0);switch(C){case"count":return s.length;case"sum":return S.reduce((x,i)=>x+i,0);case"avg":return S.length>0?(S.reduce((x,i)=>x+i,0)/S.length).toFixed(2):0;case"min":return S.length>0?Math.min(...S):0;case"max":return S.length>0?Math.max(...S):0;default:return""}};return n?t.jsxs("div",{className:"space-y-4",children:[a&&t.jsxs("div",{className:"flex items-center justify-between gap-2 p-4 bg-card rounded-lg border",children:[t.jsxs("div",{children:[t.jsx("h2",{className:"text-lg font-semibold",children:n.title}),n.description&&t.jsx("p",{className:"text-sm text-muted-foreground",children:n.description})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[n.refreshInterval&&t.jsxs(B,{variant:"outline",size:"sm",onClick:p,children:[t.jsx(As,{className:"h-4 w-4 mr-2"}),"Refresh"]}),l&&t.jsxs(B,{variant:"outline",size:"sm",onClick:o,children:[t.jsx(Is,{className:"h-4 w-4 mr-2"}),"Print"]}),u&&n.showExportButtons&&t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsxs(B,{variant:"outline",size:"sm",onClick:()=>c("pdf"),children:[t.jsx(lr,{className:"h-4 w-4 mr-2"}),"PDF"]}),t.jsxs(B,{variant:"outline",size:"sm",onClick:()=>c("excel"),children:[t.jsx(lr,{className:"h-4 w-4 mr-2"}),"Excel"]}),t.jsxs(B,{variant:"outline",size:"sm",onClick:()=>c("csv"),children:[t.jsx(lr,{className:"h-4 w-4 mr-2"}),"CSV"]})]})]})]}),t.jsxs(Ne,{children:[t.jsxs(Me,{children:[!a&&n.title&&t.jsx(Fe,{children:n.title}),!a&&n.description&&t.jsx(br,{children:n.description})]}),t.jsxs(Ce,{className:"space-y-6",children:[d&&t.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"Loading report data..."}),!d&&n.sections?.map((y,C)=>y.visible===!1?null:t.jsxs("div",{className:"space-y-2",children:[y.title&&t.jsx("h3",{className:"text-lg font-semibold border-b pb-2",children:y.title}),y.type==="header"&&y.title&&t.jsx("div",{className:"text-2xl font-bold py-4",children:y.title}),y.type==="summary"&&t.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:n.fields?.filter(S=>S.showInSummary).map((S,x)=>t.jsx(Ne,{children:t.jsxs(Ce,{className:"p-4",children:[t.jsx("div",{className:"text-sm text-muted-foreground",children:S.label||S.name}),t.jsx("div",{className:"text-2xl font-bold",children:h(S.name,S.aggregation)})]})},x))}),y.type==="chart"&&y.chart&&t.jsx("div",{className:"min-h-[300px]",children:(()=>{let S=y.chart.type;const x=!!y.chart.chartType;!S&&x&&(S="chart"),S&&!!he.get(S)||(S="chart");const m=S==="chart"?{xAxisKey:y.chart.xAxisKey||y.chart.xAxisField||"name",series:y.chart.series||(y.chart.yAxisFields?y.chart.yAxisFields.map(w=>({dataKey:w})):[]),chartType:y.chart.chartType||"bar"}:{},v={...y.chart,type:S,...m,data:s||y.chart.data,className:y.chart.className||"w-full h-[350px]"};return t.jsx(De,{schema:v})})()}),y.type==="table"&&t.jsx("div",{className:"border rounded-lg overflow-hidden",children:t.jsxs("table",{className:"w-full text-sm",children:[t.jsx("thead",{className:"bg-muted",children:t.jsx("tr",{children:y.columns?.map((S,x)=>t.jsx("th",{className:"px-4 py-2 text-left font-medium",children:S.label||S.name},x))})}),t.jsx("tbody",{children:s?.map((S,x)=>t.jsx("tr",{className:"border-t",children:y.columns?.map((i,f)=>t.jsx("td",{className:"px-4 py-2",children:S[i.name]},f))},x))})]})}),y.type==="text"&&y.text&&t.jsx("div",{className:"prose max-w-none",children:t.jsx("p",{children:y.text})}),y.type==="page-break"&&t.jsx("div",{className:"border-t-2 border-dashed my-8 print:page-break-after-always"}),y.content&&t.jsx(De,{schema:y.content})]},C)),!n.sections&&s&&s.length>0&&t.jsx("div",{className:"border rounded-lg overflow-hidden",children:t.jsxs("table",{className:"w-full text-sm",children:[t.jsx("thead",{className:"bg-muted",children:t.jsx("tr",{children:n.fields?.map((y,C)=>t.jsx("th",{className:"px-4 py-2 text-left font-medium",children:y.label||y.name},C))})}),t.jsx("tbody",{children:s.map((y,C)=>t.jsx("tr",{className:"border-t",children:n.fields?.map((S,x)=>t.jsx("td",{className:"px-4 py-2",children:y[S.name]},x))},C))})]})})]})]})]}):t.jsx(Ne,{children:t.jsx(Ce,{className:"p-8 text-center text-muted-foreground",children:"No report to display"})})},vi=({schedule:e,onChange:r})=>{const[n,s]=g.useState(e||{enabled:!1,frequency:"weekly",time:"09:00",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,recipients:[],formats:["pdf"]}),a=c=>{const o={...n,...c};s(o),r?.(o)},u=[{value:"once",label:"Once"},{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"monthly",label:"Monthly"},{value:"quarterly",label:"Quarterly"},{value:"yearly",label:"Yearly"}],l=[{value:"pdf",label:"PDF"},{value:"excel",label:"Excel"},{value:"csv",label:"CSV"},{value:"html",label:"HTML"}],d=[{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 t.jsxs(Ne,{children:[t.jsx(Me,{children:t.jsxs(Fe,{className:"flex items-center gap-2",children:[t.jsx(xn,{className:"h-5 w-5"}),"Schedule Configuration"]})}),t.jsxs(Ce,{className:"space-y-4",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("input",{type:"checkbox",id:"schedule-enabled",checked:n.enabled||!1,onChange:c=>a({enabled:c.target.checked}),className:"rounded"}),t.jsx($,{htmlFor:"schedule-enabled",children:"Enable Scheduled Report"})]}),n.enabled&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Frequency"}),t.jsx("select",{className:"w-full border rounded-md p-2 bg-background",value:n.frequency||"weekly",onChange:c=>a({frequency:c.target.value}),children:u.map(c=>t.jsx("option",{value:c.value,children:c.label},c.value))})]}),n.frequency==="weekly"&&t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Day of Week"}),t.jsx("select",{className:"w-full border rounded-md p-2 bg-background",value:n.dayOfWeek??1,onChange:c=>a({dayOfWeek:Number(c.target.value)}),children:d.map(c=>t.jsx("option",{value:c.value,children:c.label},c.value))})]}),n.frequency==="monthly"&&t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Day of Month"}),t.jsx(Ee,{type:"number",min:1,max:31,value:n.dayOfMonth??1,onChange:c=>a({dayOfMonth:Number(c.target.value)})})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsxs($,{className:"flex items-center gap-2",children:[t.jsx(Bs,{className:"h-4 w-4"}),"Time"]}),t.jsx(Ee,{type:"time",value:n.time||"09:00",onChange:c=>a({time:c.target.value})})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Timezone"}),t.jsx(Ee,{value:n.timezone||"",onChange:c=>a({timezone:c.target.value}),placeholder:"e.g. America/New_York"})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Export Formats"}),t.jsx("div",{className:"flex flex-wrap gap-2",children:l.map(c=>t.jsxs("label",{className:"flex items-center gap-1.5 px-3 py-1.5 border rounded-md cursor-pointer hover:bg-muted/50",children:[t.jsx("input",{type:"checkbox",checked:n.formats?.includes(c.value)||!1,onChange:o=>{const p=n.formats||[];a({formats:o.target.checked?[...p,c.value]:p.filter(h=>h!==c.value)})},className:"rounded"}),t.jsx("span",{className:"text-sm",children:c.label})]},c.value))})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsxs($,{className:"flex items-center gap-2",children:[t.jsx(qs,{className:"h-4 w-4"}),"Email Recipients"]}),t.jsx(Ee,{placeholder:"email1@example.com, email2@example.com",value:n.recipients?.join(", ")||"",onChange:c=>a({recipients:c.target.value.split(",").map(o=>o.trim()).filter(Boolean)})})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Email Subject"}),t.jsx(Ee,{value:n.subject||"",onChange:c=>a({subject:c.target.value}),placeholder:"Scheduled Report: {report_title}"})]})]})]})]})},ji=({schema:e})=>{const{report:r,dataSources:n=[],availableFields:s=[],showPreview:a=!0,onSave:u,onCancel:l}=e,[d,c]=g.useState(r||{type:"report",title:"New Report",fields:[],filters:[],groupBy:[],sections:[],showExportButtons:!0,showPrintButton:!0}),[o,p]=g.useState(d.fields||[]),[h,y]=g.useState(d.filters||[]),[C,S]=g.useState(d.groupBy||[]),[x,i]=g.useState(d.sections||[]),f=()=>{if(s.length>0&&o.length<s.length){const R=s.find(P=>!o.some(E=>E.name===P.name));if(R){const P=[...o,R];p(P),c({...d,fields:P})}}},m=R=>{const P=o.filter((E,H)=>H!==R);p(P),c({...d,fields:P})},v=(R,P)=>{const E=[...o];E[R]=P,p(E),c({...d,fields:E})},w=()=>{const R={field:s[0]?.name||"",operator:"equals",value:""},P=[...h,R];y(P),c({...d,filters:P})},D=R=>{const P=h.filter((E,H)=>H!==R);y(P),c({...d,filters:P})},N=(R,P)=>{const E=[...h];E[R]=P,y(E),c({...d,filters:E})},b=()=>{const R={field:s[0]?.name||"",sort:"asc"},P=[...C,R];S(P),c({...d,groupBy:P})},j=R=>{const P=C.filter((E,H)=>H!==R);S(P),c({...d,groupBy:P})},k=(R,P)=>{const E=[...C];E[R]=P,S(E),c({...d,groupBy:E})},F=R=>{const P={type:R,title:`New ${R} Section`},E=[...x,P];i(E),c({...d,sections:E})},T=R=>{const P=x.filter((E,H)=>H!==R);i(P),c({...d,sections:P})},q=(R,P)=>{const E=[...x];E[R]=P,i(E),c({...d,sections:E})},M=()=>{console.log("Saving report:",d),u&&alert("Report saved! (Handler: "+u+")")},A=()=>{l&&console.log("Report cancelled:",l)};return t.jsxs("div",{className:"space-y-4",children:[t.jsxs(Ne,{children:[t.jsxs(Me,{children:[t.jsx(Fe,{children:"Report Builder"}),t.jsx(br,{children:"Configure your report settings, fields, filters, and sections"})]}),t.jsxs(Ce,{children:[t.jsxs(an,{defaultValue:"basic",className:"w-full",children:[t.jsxs(on,{className:"grid w-full grid-cols-6",children:[t.jsxs(nt,{value:"basic",children:[t.jsx(Hs,{className:"h-4 w-4 mr-2"}),"Basic"]}),t.jsxs(nt,{value:"fields",children:[t.jsx(cr,{className:"h-4 w-4 mr-2"}),"Fields"]}),t.jsxs(nt,{value:"filters",children:[t.jsx(Ws,{className:"h-4 w-4 mr-2"}),"Filters"]}),t.jsxs(nt,{value:"grouping",children:[t.jsx(cr,{className:"h-4 w-4 mr-2"}),"Group By"]}),t.jsxs(nt,{value:"sections",children:[t.jsx(cr,{className:"h-4 w-4 mr-2"}),"Sections"]}),t.jsxs(nt,{value:"schedule",children:[t.jsx(xn,{className:"h-4 w-4 mr-2"}),"Schedule"]})]}),t.jsx(st,{value:"basic",className:"space-y-4 mt-4",children:t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{htmlFor:"report-title",children:"Report Title"}),t.jsx(Ee,{id:"report-title",value:d.title||"",onChange:R=>c({...d,title:R.target.value}),placeholder:"Enter report title"})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{htmlFor:"report-description",children:"Description"}),t.jsx(Ee,{id:"report-description",value:d.description||"",onChange:R=>c({...d,description:R.target.value}),placeholder:"Enter report description"})]}),n.length>0&&t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Data Source"}),t.jsxs("select",{className:"w-full border rounded-md p-2",children:[t.jsx("option",{value:"",children:"Select a data source"}),n.map((R,P)=>t.jsxs("option",{value:P,children:["Data Source ",P+1]},P))]})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{children:"Export Options"}),t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("label",{className:"flex items-center gap-2",children:[t.jsx("input",{type:"checkbox",checked:d.showExportButtons||!1,onChange:R=>c({...d,showExportButtons:R.target.checked})}),t.jsx("span",{className:"text-sm",children:"Show Export Buttons"})]}),t.jsxs("label",{className:"flex items-center gap-2",children:[t.jsx("input",{type:"checkbox",checked:d.showPrintButton||!1,onChange:R=>c({...d,showPrintButton:R.target.checked})}),t.jsx("span",{className:"text-sm",children:"Show Print Button"})]})]})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx($,{htmlFor:"export-format",children:"Default Export Format"}),t.jsxs("select",{id:"export-format",className:"w-full border rounded-md p-2",value:d.defaultExportFormat||"pdf",onChange:R=>c({...d,defaultExportFormat:R.target.value}),children:[t.jsx("option",{value:"pdf",children:"PDF"}),t.jsx("option",{value:"excel",children:"Excel"}),t.jsx("option",{value:"csv",children:"CSV"}),t.jsx("option",{value:"json",children:"JSON"}),t.jsx("option",{value:"html",children:"HTML"})]})]})]})}),t.jsxs(st,{value:"fields",className:"space-y-4 mt-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx($,{children:"Report Fields"}),t.jsxs(B,{size:"sm",variant:"outline",onClick:f,disabled:o.length>=s.length,children:[t.jsx(pt,{className:"h-4 w-4 mr-2"}),"Add Field"]})]}),t.jsxs("div",{className:"space-y-2",children:[o.map((R,P)=>t.jsx("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:t.jsxs("div",{className:"flex-1 grid grid-cols-4 gap-2",children:[t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Field Name"}),t.jsx("div",{className:"text-sm font-medium",children:R.name})]}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Label"}),t.jsx(Ee,{className:"h-8 text-sm",value:R.label||R.name,onChange:E=>v(P,{...R,label:E.target.value})})]}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Aggregation"}),t.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:R.aggregation||"",onChange:E=>v(P,{...R,aggregation:E.target.value}),children:[t.jsx("option",{value:"",children:"None"}),t.jsx("option",{value:"sum",children:"Sum"}),t.jsx("option",{value:"count",children:"Count"}),t.jsx("option",{value:"avg",children:"Average"}),t.jsx("option",{value:"min",children:"Min"}),t.jsx("option",{value:"max",children:"Max"})]})]}),t.jsx("div",{className:"flex items-end justify-end",children:t.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50",onClick:()=>m(P),children:t.jsx(Ht,{className:"h-4 w-4"})})})]})},P)),o.length===0&&t.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.'})]})]}),t.jsxs(st,{value:"filters",className:"space-y-4 mt-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx($,{children:"Report Filters"}),t.jsxs(B,{size:"sm",variant:"outline",onClick:w,children:[t.jsx(pt,{className:"h-4 w-4 mr-2"}),"Add Filter"]})]}),t.jsxs("div",{className:"space-y-2",children:[h.map((R,P)=>t.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[t.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-2",children:[t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Field"}),t.jsx("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:R.field,onChange:E=>N(P,{...R,field:E.target.value}),children:s.map((E,H)=>t.jsx("option",{value:E.name,children:E.label||E.name},H))})]}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Operator"}),t.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:R.operator,onChange:E=>N(P,{...R,operator:E.target.value}),children:[t.jsx("option",{value:"equals",children:"Equals"}),t.jsx("option",{value:"contains",children:"Contains"}),t.jsx("option",{value:"gt",children:"Greater Than"}),t.jsx("option",{value:"lt",children:"Less Than"}),t.jsx("option",{value:"between",children:"Between"})]})]}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Value"}),t.jsx(Ee,{className:"h-8 text-sm",value:String(R.value),onChange:E=>N(P,{...R,value:E.target.value})})]})]}),t.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50 self-end",onClick:()=>D(P),children:t.jsx(Ht,{className:"h-4 w-4"})})]},P)),h.length===0&&t.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No filters defined."})]})]}),t.jsxs(st,{value:"grouping",className:"space-y-4 mt-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx($,{children:"Grouping Rules"}),t.jsxs(B,{size:"sm",variant:"outline",onClick:b,children:[t.jsx(pt,{className:"h-4 w-4 mr-2"}),"Add Group"]})]}),t.jsxs("div",{className:"space-y-2",children:[C.map((R,P)=>t.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[t.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Field"}),t.jsx("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:R.field,onChange:E=>k(P,{...R,field:E.target.value}),children:s.map((E,H)=>t.jsx("option",{value:E.name,children:E.label||E.name},H))})]}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Sort Order"}),t.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:R.sort||"asc",onChange:E=>k(P,{...R,sort:E.target.value}),children:[t.jsx("option",{value:"asc",children:"Ascending"}),t.jsx("option",{value:"desc",children:"Descending"})]})]})]}),t.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50 self-end",onClick:()=>j(P),children:t.jsx(Ht,{className:"h-4 w-4"})})]},P)),C.length===0&&t.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No grouping rules applied."})]})]}),t.jsxs(st,{value:"sections",className:"space-y-4 mt-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx($,{children:"Report Sections"}),t.jsxs("div",{className:"flex gap-2",children:[t.jsxs(B,{size:"sm",variant:"outline",onClick:()=>F("header"),children:[t.jsx(pt,{className:"h-4 w-4 mr-2"}),"Header"]}),t.jsxs(B,{size:"sm",variant:"outline",onClick:()=>F("chart"),children:[t.jsx(pt,{className:"h-4 w-4 mr-2"}),"Chart"]}),t.jsxs(B,{size:"sm",variant:"outline",onClick:()=>F("table"),children:[t.jsx(pt,{className:"h-4 w-4 mr-2"}),"Table"]})]})]}),t.jsxs("div",{className:"space-y-2",children:[x.map((R,P)=>t.jsxs("div",{className:"p-3 border rounded-lg space-y-2",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"font-medium flex items-center gap-2",children:[t.jsx("div",{className:"text-xs bg-muted px-2 py-0.5 rounded uppercase",children:R.type}),R.title]}),t.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50",onClick:()=>T(P),children:t.jsx(Ht,{className:"h-4 w-4"})})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Title"}),t.jsx(Ee,{className:"h-8 text-sm",value:R.title||"",onChange:E=>q(P,{...R,title:E.target.value})})]}),R.type==="text"&&t.jsxs("div",{className:"col-span-2",children:[t.jsx($,{className:"text-xs",children:"Content"}),t.jsx(Ee,{className:"h-8 text-sm",value:R.text||"",onChange:E=>q(P,{...R,text:E.target.value})})]}),R.type==="chart"&&t.jsxs("div",{className:"col-span-2 grid grid-cols-2 gap-2 mt-2 p-2 bg-muted/20 rounded",children:[t.jsx("div",{className:"col-span-2",children:t.jsx($,{className:"text-xs font-semibold",children:"Chart Configuration"})}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"Chart Type"}),t.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:R.chart?.chartType||"bar",onChange:E=>q(P,{...R,chart:{...R.chart,type:"chart",chartType:E.target.value}}),children:[t.jsx("option",{value:"bar",children:"Bar"}),t.jsx("option",{value:"line",children:"Line"}),t.jsx("option",{value:"area",children:"Area"}),t.jsx("option",{value:"pie",children:"Pie"})]})]}),t.jsxs("div",{children:[t.jsx($,{className:"text-xs",children:"X-Axis Field"}),t.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:R.chart?.xAxisField||"",onChange:E=>q(P,{...R,chart:{...R.chart,type:"chart",xAxisField:E.target.value}}),children:[t.jsx("option",{value:"",children:"Select Field..."}),s.map(E=>t.jsx("option",{value:E.name,children:E.label||E.name},E.name)),s.length===0&&t.jsxs(t.Fragment,{children:[t.jsx("option",{value:"name",children:"Name"}),t.jsx("option",{value:"month",children:"Month"})]})]})]}),t.jsxs("div",{className:"col-span-2",children:[t.jsx($,{className:"text-xs",children:"Y-Axis Fields (comma separated)"}),t.jsx(Ee,{className:"h-8 text-sm",placeholder:"e.g. value, count",value:R.chart?.yAxisFields?.join(", ")||"",onChange:E=>q(P,{...R,chart:{...R.chart,type:"chart",yAxisFields:E.target.value.split(",").map(H=>H.trim()).filter(Boolean)}})})]})]})]})]},P)),x.length===0&&t.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."})]})]}),t.jsx(st,{value:"schedule",className:"space-y-4 mt-4",children:t.jsx(vi,{schedule:d.schedule,onChange:R=>c({...d,schedule:R})})})]}),t.jsxs("div",{className:"flex items-center justify-end gap-2 mt-6 pt-4 border-t",children:[t.jsx(B,{variant:"outline",onClick:A,children:"Cancel"}),t.jsxs(B,{onClick:M,children:[t.jsx($s,{className:"h-4 w-4 mr-2"}),"Save Report"]})]})]})]}),a&&t.jsxs(Ne,{className:"mt-8 border-2 border-blue-100",children:[t.jsx(Me,{className:"bg-blue-50/50",children:t.jsx(Fe,{className:"text-blue-900 text-sm uppercase tracking-wide",children:"Live Preview"})}),t.jsx(Ce,{className:"pt-6",children:t.jsx(Kn,{schema:{type:"report-viewer",report:{...d,fields:o,filters:h,groupBy:C,sections:x},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"}]}})})]})]})};he.register("report",pi,{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"}]});he.register("report-viewer",Kn,{namespace:"report",label:"Report Viewer",category:"Report",inputs:[{name:"report",type:"code",label:"Report Definition"},{name:"showToolbar",type:"boolean",label:"Show Toolbar"}]});he.register("report-builder",ji,{namespace:"report",label:"Report Builder",category:"Report",inputs:[{name:"report",type:"code",label:"Initial Report"}]});export{jn as D,yn as L,ki as M,ji as R,na as a,Kn as b,Us as u};
@@ -0,0 +1 @@
1
+ .react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
@@ -0,0 +1 @@
1
+ const e=[{name:"sys_user",label:"Users",icon:"Users",fields:[{name:"id",type:"text",label:"ID",readonly:!0},{name:"name",type:"text",label:"Name",required:!0},{name:"email",type:"email",label:"Email",required:!0},{name:"role",type:"select",label:"Role",options:["admin","member","viewer"]},{name:"status",type:"select",label:"Status",options:["active","inactive","suspended"]},{name:"emailVerified",type:"boolean",label:"Email Verified"},{name:"image",type:"url",label:"Avatar URL"},{name:"lastLoginAt",type:"datetime",label:"Last Login",readonly:!0},{name:"createdAt",type:"datetime",label:"Created At",readonly:!0},{name:"updatedAt",type:"datetime",label:"Updated At",readonly:!0}],titleFormat:"{name}",views:[{name:"all",label:"All Users",type:"grid",columns:["name","email","role","status","lastLoginAt"]}]},{name:"sys_org",label:"Organizations",icon:"Building2",fields:[{name:"id",type:"text",label:"ID",readonly:!0},{name:"name",type:"text",label:"Organization Name",required:!0},{name:"slug",type:"text",label:"Slug",required:!0},{name:"description",type:"textarea",label:"Description"},{name:"plan",type:"select",label:"Plan",options:["free","pro","enterprise"]},{name:"status",type:"select",label:"Status",options:["active","inactive","suspended"]},{name:"memberCount",type:"number",label:"Members",readonly:!0},{name:"createdAt",type:"datetime",label:"Created At",readonly:!0}],titleFormat:"{name}",views:[{name:"all",label:"All Organizations",type:"grid",columns:["name","slug","plan","status","memberCount"]}]},{name:"sys_role",label:"Roles",icon:"Shield",fields:[{name:"id",type:"text",label:"ID",readonly:!0},{name:"name",type:"text",label:"Role Name",required:!0},{name:"description",type:"textarea",label:"Description"},{name:"permissions",type:"text",label:"Permissions"},{name:"isSystem",type:"boolean",label:"System Role",readonly:!0},{name:"userCount",type:"number",label:"Users",readonly:!0},{name:"createdAt",type:"datetime",label:"Created At",readonly:!0}],titleFormat:"{name}",views:[{name:"all",label:"All Roles",type:"grid",columns:["name","description","isSystem","userCount"]}]},{name:"sys_permission",label:"Permissions",icon:"Key",fields:[{name:"id",type:"text",label:"ID",readonly:!0},{name:"name",type:"text",label:"Permission Name",required:!0},{name:"description",type:"textarea",label:"Description"},{name:"resource",type:"text",label:"Resource"},{name:"action",type:"select",label:"Action",options:["create","read","update","delete","manage"]},{name:"createdAt",type:"datetime",label:"Created At",readonly:!0}],titleFormat:"{name}",views:[{name:"all",label:"All Permissions",type:"grid",columns:["name","resource","action","description"]}]},{name:"sys_audit_log",label:"Audit Log",icon:"ScrollText",fields:[{name:"id",type:"text",label:"ID",readonly:!0},{name:"action",type:"text",label:"Action",readonly:!0},{name:"resource",type:"text",label:"Resource",readonly:!0},{name:"resourceId",type:"text",label:"Resource ID",readonly:!0},{name:"userId",type:"text",label:"User ID",readonly:!0},{name:"userName",type:"text",label:"User Name",readonly:!0},{name:"ipAddress",type:"text",label:"IP Address",readonly:!0},{name:"details",type:"textarea",label:"Details",readonly:!0},{name:"createdAt",type:"datetime",label:"Timestamp",readonly:!0}],titleFormat:"{action} on {resource}",views:[{name:"all",label:"All Logs",type:"grid",columns:["action","resource","userName","ipAddress","createdAt"]}]}];export{e as s};
@@ -0,0 +1,2 @@
1
+ r
2
  v�΋�4fݰN���>U��=�i��7aj�ҵӷE�B���&�9w�d�&�~�9Z�l�|J���P_bA1Fsݠ/,�?�|hV]Բ�����s����˓�P����u-pj�Q�k�����AG�kKc�XM�
3
+ ��8.(�Y��͓oR5"�|D>��Rsrw}�+�E�[�;;���+ �p���X0ls�dP�EAx�c���