@object-ui/plugin-dashboard 0.1.1 → 0.5.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.
- package/.turbo/turbo-build.log +20 -0
- package/dist/index.css +1 -0
- package/dist/index.js +5797 -266
- package/dist/index.umd.cjs +5 -2
- package/dist/src/DashboardGridLayout.d.ts +11 -0
- package/dist/src/DashboardGridLayout.d.ts.map +1 -0
- package/dist/src/DashboardRenderer.d.ts +1 -1
- package/dist/src/DashboardRenderer.d.ts.map +1 -1
- package/dist/src/MetricCard.d.ts +16 -0
- package/dist/src/MetricCard.d.ts.map +1 -0
- package/dist/src/MetricWidget.d.ts +1 -1
- package/dist/src/MetricWidget.d.ts.map +1 -1
- package/dist/src/ReportBuilder.d.ts +11 -0
- package/dist/src/ReportBuilder.d.ts.map +1 -0
- package/dist/src/ReportRenderer.d.ts +15 -0
- package/dist/src/ReportRenderer.d.ts.map +1 -0
- package/dist/src/ReportViewer.d.ts +11 -0
- package/dist/src/ReportViewer.d.ts.map +1 -0
- package/dist/src/index.d.ts +19 -1
- package/dist/src/index.d.ts.map +1 -1
- package/package.json +10 -8
- package/src/DashboardGridLayout.tsx +210 -0
- package/src/DashboardRenderer.tsx +108 -20
- package/src/MetricCard.tsx +75 -0
- package/src/MetricWidget.tsx +13 -3
- package/src/ReportBuilder.tsx +625 -0
- package/src/ReportRenderer.tsx +89 -0
- package/src/ReportViewer.tsx +232 -0
- package/src/__tests__/DashboardGridLayout.test.tsx +199 -0
- package/src/__tests__/MetricCard.test.tsx +59 -0
- package/src/__tests__/ReportBuilder.test.tsx +115 -0
- package/src/__tests__/ReportViewer.test.tsx +107 -0
- package/src/index.tsx +122 -3
- package/vite.config.ts +19 -0
- package/vitest.config.ts +9 -0
- package/vitest.setup.tsx +18 -0
package/dist/index.umd.cjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(he,ve){typeof exports=="object"&&typeof module<"u"?ve(exports,require("@object-ui/core"),require("react"),require("@object-ui/react"),require("@object-ui/components"),require("clsx"),require("react-dom"),require("lucide-react")):typeof define=="function"&&define.amd?define(["exports","@object-ui/core","react","@object-ui/react","@object-ui/components","clsx","react-dom","lucide-react"],ve):(he=typeof globalThis<"u"?globalThis:he||self,ve(he.ObjectUIPluginDashboard={},he.ObjectUICore,he.React,he.ObjectUIReact,he.ObjectUIComponents,he.require$$3,he.ReactDOM,he.LucideIcons))})(this,(function(he,ve,me,De,A,$e,it,oe){"use strict";function Ct(e){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const u=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(c,a,u.get?u:{enumerable:!0,get:()=>e[a]})}}return c.default=e,Object.freeze(c)}const Te=Ct(me),Dt=Ct(oe);function Dr(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var c=e.default;if(typeof c=="function"){var a=function u(){var x=!1;try{x=this instanceof u}catch{}return x?Reflect.construct(c,arguments,this.constructor):c.apply(this,arguments)};a.prototype=c.prototype}else a={};return Object.defineProperty(a,"__esModule",{value:!0}),Object.keys(e).forEach(function(u){var x=Object.getOwnPropertyDescriptor(e,u);Object.defineProperty(a,u,x.get?x:{enumerable:!0,get:function(){return e[u]}})}),a}var Ve={exports:{}},ke={};var Tt;function Tr(){if(Tt)return ke;Tt=1;var e=Symbol.for("react.transitional.element"),c=Symbol.for("react.fragment");function a(u,x,p){var m=null;if(p!==void 0&&(m=""+p),x.key!==void 0&&(m=""+x.key),"key"in x){p={};for(var w in x)w!=="key"&&(p[w]=x[w])}else p=x;return x=p.ref,{$$typeof:e,type:u,key:m,ref:x!==void 0?x:null,props:p}}return ke.Fragment=c,ke.jsx=a,ke.jsxs=a,ke}var Ae={};var Nt;function Nr(){return Nt||(Nt=1,process.env.NODE_ENV!=="production"&&(function(){function e(b){if(b==null)return null;if(typeof b=="function")return b.$$typeof===I?null:b.displayName||b.name||null;if(typeof b=="string")return b;switch(b){case n:return"Fragment";case t:return"Profiler";case r:return"StrictMode";case y:return"Suspense";case d:return"SuspenseList";case z:return"Activity"}if(typeof b=="object")switch(typeof b.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),b.$$typeof){case g:return"Portal";case l:return b.displayName||"Context";case i:return(b._context.displayName||"Context")+".Consumer";case o:var k=b.render;return b=b.displayName,b||(b=k.displayName||k.name||"",b=b!==""?"ForwardRef("+b+")":"ForwardRef"),b;case f:return k=b.displayName||null,k!==null?k:e(b.type)||"Memo";case O:k=b._payload,b=b._init;try{return e(b(k))}catch{}}return null}function c(b){return""+b}function a(b){try{c(b);var k=!1}catch{k=!0}if(k){k=console;var Y=k.error,U=typeof Symbol=="function"&&Symbol.toStringTag&&b[Symbol.toStringTag]||b.constructor.name||"Object";return Y.call(k,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U),c(b)}}function u(b){if(b===n)return"<>";if(typeof b=="object"&&b!==null&&b.$$typeof===O)return"<...>";try{var k=e(b);return k?"<"+k+">":"<...>"}catch{return"<...>"}}function x(){var b=G.A;return b===null?null:b.getOwner()}function p(){return Error("react-stack-top-frame")}function m(b){if(B.call(b,"key")){var k=Object.getOwnPropertyDescriptor(b,"key").get;if(k&&k.isReactWarning)return!1}return b.key!==void 0}function w(b,k){function Y(){D||(D=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",k))}Y.isReactWarning=!0,Object.defineProperty(b,"key",{get:Y,configurable:!0})}function S(){var b=e(this.type);return N[b]||(N[b]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),b=this.props.ref,b!==void 0?b:null}function P(b,k,Y,U,te,re){var X=Y.ref;return b={$$typeof:L,type:b,key:k,props:Y,_owner:U},(X!==void 0?X:null)!==null?Object.defineProperty(b,"ref",{enumerable:!1,get:S}):Object.defineProperty(b,"ref",{enumerable:!1,value:null}),b._store={},Object.defineProperty(b._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(b,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(b,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:te}),Object.defineProperty(b,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:re}),Object.freeze&&(Object.freeze(b.props),Object.freeze(b)),b}function _(b,k,Y,U,te,re){var X=k.children;if(X!==void 0)if(U)if(V(X)){for(U=0;U<X.length;U++)j(X[U]);Object.freeze&&Object.freeze(X)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else j(X);if(B.call(k,"key")){X=e(b);var q=Object.keys(k).filter(function($){return $!=="key"});U=0<q.length?"{key: someKey, "+q.join(": ..., ")+": ...}":"{key: someKey}",M[X+U]||(q=0<q.length?"{"+q.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
2
|
let props = %s;
|
|
3
3
|
<%s {...props} />
|
|
4
4
|
React keys must be passed directly to JSX without using spread:
|
|
5
5
|
let props = %s;
|
|
6
|
-
<%s key={someKey} {...props} />`,a,n,_,n),J[n+a]=!0)}if(n=null,t!==void 0&&(o(t),n=""+t),u(r)&&(o(r.key),n=""+r.key),"key"in r){t={};for(var S in r)S!=="key"&&(t[S]=r[S])}else t=r;return n&&v(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),Z(e,n,t,l(),j,k)}function $(e){M(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===g&&(e._payload.status==="fulfilled"?M(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function M(e){return typeof e=="object"&&e!==null&&e.$$typeof===U}var T=N,U=Symbol.for("react.transitional.element"),Q=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),K=Symbol.for("react.strict_mode"),ee=Symbol.for("react.profiler"),re=Symbol.for("react.consumer"),te=Symbol.for("react.context"),ae=Symbol.for("react.forward_ref"),ne=Symbol.for("react.suspense"),oe=Symbol.for("react.suspense_list"),se=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),le=Symbol.for("react.activity"),ce=Symbol.for("react.client.reference"),w=T.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,F=Object.prototype.hasOwnProperty,ue=Array.isArray,O=console.createTask?console.createTask:function(){return null};T={react_stack_bottom_frame:function(e){return e()}};var W,L={},q=T.react_stack_bottom_frame.bind(T,c)(),V=O(d(c)),J={};R.Fragment=y,R.jsx=function(e,r,t){var a=1e4>w.recentlyCreatedOwnerStacks++;return D(e,r,t,!1,a?Error("react-stack-top-frame"):q,a?O(d(e)):V)},R.jsxs=function(e,r,t){var a=1e4>w.recentlyCreatedOwnerStacks++;return D(e,r,t,!0,a?Error("react-stack-top-frame"):q,a?O(d(e)):V)}})()),R}var C;function H(){return C||(C=1,process.env.NODE_ENV==="production"?x.exports=G():x.exports=X()),x.exports}var s=H();const I=N.forwardRef(({schema:i,className:b,...o},d)=>{const l=i.columns||3,c=i.gap||4;return s.jsx("div",{ref:d,className:m.cn("grid",b),style:{gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`,gap:`${c*.25}rem`},...o,children:i.widgets?.map(u=>s.jsxs("div",{className:m.cn("border rounded-lg p-4 bg-card text-card-foreground shadow-sm"),style:u.layout?{gridColumn:`span ${u.layout.w}`,gridRow:`span ${u.layout.h}`}:void 0,children:[u.title&&s.jsx("h3",{className:"font-semibold mb-2",children:u.title}),s.jsx(z.SchemaRenderer,{schema:u.component})]},u.id))})}),Y=({label:i,value:b,trend:o,icon:d,className:l,description:c,...u})=>s.jsxs(m.Card,{className:m.cn("h-full",l),...u,children:[s.jsxs(m.CardHeader,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[s.jsx(m.CardTitle,{className:"text-sm font-medium",children:i}),d&&s.jsx("div",{className:"h-4 w-4 text-muted-foreground",children:d})]}),s.jsxs(m.CardContent,{children:[s.jsx("div",{className:"text-2xl font-bold",children:b}),(o||c)&&s.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[o&&s.jsxs("span",{className:m.cn("flex items-center mr-2",o.direction==="up"&&"text-green-500",o.direction==="down"&&"text-red-500",o.direction==="neutral"&&"text-yellow-500"),children:[o.direction==="up"&&s.jsx(h.ArrowUpIcon,{className:"h-3 w-3 mr-1"}),o.direction==="down"&&s.jsx(h.ArrowDownIcon,{className:"h-3 w-3 mr-1"}),o.direction==="neutral"&&s.jsx(h.MinusIcon,{className:"h-3 w-3 mr-1"}),o.value,"%"]}),c||o?.label]})]})]});p.ComponentRegistry.register("dashboard",I,{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:[]}}),p.ComponentRegistry.register("metric",Y,{label:"Metric Card",category:"Dashboard",inputs:[{name:"label",type:"string",label:"Label"},{name:"value",type:"string",label:"Value"}]}),f.DashboardRenderer=I,f.MetricWidget=Y,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})}));
|
|
6
|
+
<%s key={someKey} {...props} />`,U,X,q,X),M[X+U]=!0)}if(X=null,Y!==void 0&&(a(Y),X=""+Y),m(k)&&(a(k.key),X=""+k.key),"key"in k){Y={};for(var F in k)F!=="key"&&(Y[F]=k[F])}else Y=k;return X&&w(Y,typeof b=="function"?b.displayName||b.name||"Unknown":b),P(b,X,Y,x(),te,re)}function j(b){R(b)?b._store&&(b._store.validated=1):typeof b=="object"&&b!==null&&b.$$typeof===O&&(b._payload.status==="fulfilled"?R(b._payload.value)&&b._payload.value._store&&(b._payload.value._store.validated=1):b._store&&(b._store.validated=1))}function R(b){return typeof b=="object"&&b!==null&&b.$$typeof===L}var C=me,L=Symbol.for("react.transitional.element"),g=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),t=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),l=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),f=Symbol.for("react.memo"),O=Symbol.for("react.lazy"),z=Symbol.for("react.activity"),I=Symbol.for("react.client.reference"),G=C.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B=Object.prototype.hasOwnProperty,V=Array.isArray,T=console.createTask?console.createTask:function(){return null};C={react_stack_bottom_frame:function(b){return b()}};var D,N={},K=C.react_stack_bottom_frame.bind(C,p)(),ie=T(u(p)),M={};Ae.Fragment=n,Ae.jsx=function(b,k,Y){var U=1e4>G.recentlyCreatedOwnerStacks++;return _(b,k,Y,!1,U?Error("react-stack-top-frame"):K,U?T(u(b)):ie)},Ae.jsxs=function(b,k,Y){var U=1e4>G.recentlyCreatedOwnerStacks++;return _(b,k,Y,!0,U?Error("react-stack-top-frame"):K,U?T(u(b)):ie)}})()),Ae}var zt;function zr(){return zt||(zt=1,process.env.NODE_ENV==="production"?Ve.exports=Tr():Ve.exports=Nr()),Ve.exports}var s=zr();const Mr=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],st=me.forwardRef(({schema:e,className:c,...a},u)=>{const x=e.columns||4,p=e.gap||4;return s.jsx("div",{ref:u,className:A.cn("grid auto-rows-min",c),style:{gridTemplateColumns:`repeat(${x}, minmax(0, 1fr))`,gap:`${p*.25}rem`},...a,children:e.widgets?.map(m=>{const S=(()=>{if(m.component)return m.component;const _=m.type;if(_==="bar"||_==="line"||_==="area"||_==="pie"||_==="donut"){const j=Array.isArray(m.data)?m.data:m.data?.items||[],R=m.options||{},C=R.xField||"name",L=R.yField||"value";return{type:"chart",chartType:_,data:j,xAxisKey:C,series:[{dataKey:L}],colors:Mr,className:"h-[300px]"}}return _==="table"?{type:"data-table",...m.options,data:m.data?.items||[],searchable:!1,pagination:!1,className:"border-0"}:{...m,...m.options||{}}})();return m.type==="metric"?s.jsx("div",{className:"h-full w-full",style:m.layout?{gridColumn:`span ${m.layout.w}`,gridRow:`span ${m.layout.h}`}:void 0,children:s.jsx(De.SchemaRenderer,{schema:S,className:"h-full w-full"})},m.id||m.title):s.jsxs(A.Card,{className:A.cn("overflow-hidden border-border/50 shadow-sm transition-all hover:shadow-md","bg-card/50 backdrop-blur-sm"),style:m.layout?{gridColumn:`span ${m.layout.w}`,gridRow:`span ${m.layout.h}`}:void 0,children:[m.title&&s.jsx(A.CardHeader,{className:"pb-2 border-b border-border/40 bg-muted/20",children:s.jsx(A.CardTitle,{className:"text-base font-medium tracking-tight truncate",title:m.title,children:m.title})}),s.jsx(A.CardContent,{className:"p-0",children:s.jsx("div",{className:A.cn("h-full w-full",(m.title,"p-4")),children:s.jsx(De.SchemaRenderer,{schema:S})})})]},m.id||m.title)})})});var lt={exports:{}},Le={},qe={exports:{}},kr=qe.exports,Mt;function ut(){return Mt||(Mt=1,(function(e,c){(function(a,u){u(c)})(kr,(function(a){function u(q){return function($,ee,W,ne,ce,ye,de){return q($,ee,de)}}function x(q){return function($,ee,W,ne){if(!$||!ee||typeof $!="object"||typeof ee!="object")return q($,ee,W,ne);var ce=ne.get($),ye=ne.get(ee);if(ce&&ye)return ce===ee&&ye===$;ne.set($,ee),ne.set(ee,$);var de=q($,ee,W,ne);return ne.delete($),ne.delete(ee),de}}function p(q,F){var $={};for(var ee in q)$[ee]=q[ee];for(var ee in F)$[ee]=F[ee];return $}function m(q){return q.constructor===Object||q.constructor==null}function w(q){return typeof q.then=="function"}function S(q,F){return q===F||q!==q&&F!==F}var P="[object Arguments]",_="[object Boolean]",j="[object Date]",R="[object RegExp]",C="[object Map]",L="[object Number]",g="[object Object]",n="[object Set]",r="[object String]",t=Object.prototype.toString;function i(q){var F=q.areArraysEqual,$=q.areDatesEqual,ee=q.areMapsEqual,W=q.areObjectsEqual,ne=q.areRegExpsEqual,ce=q.areSetsEqual,ye=q.createIsNestedEqual,de=ye(v);function v(h,E,H){if(h===E)return!0;if(!h||!E||typeof h!="object"||typeof E!="object")return h!==h&&E!==E;if(m(h)&&m(E))return W(h,E,de,H);var Q=Array.isArray(h),Z=Array.isArray(E);if(Q||Z)return Q===Z&&F(h,E,de,H);var J=t.call(h);return J!==t.call(E)?!1:J===j?$(h,E,de,H):J===R?ne(h,E,de,H):J===C?ee(h,E,de,H):J===n?ce(h,E,de,H):J===g||J===P?w(h)||w(E)?!1:W(h,E,de,H):J===_||J===L||J===r?S(h.valueOf(),E.valueOf()):!1}return v}function l(q,F,$,ee){var W=q.length;if(F.length!==W)return!1;for(;W-- >0;)if(!$(q[W],F[W],W,W,q,F,ee))return!1;return!0}var o=x(l);function y(q,F){return S(q.valueOf(),F.valueOf())}function d(q,F,$,ee){var W=q.size===F.size;if(!W)return!1;if(!q.size)return!0;var ne={},ce=0;return q.forEach(function(ye,de){if(W){var v=!1,h=0;F.forEach(function(E,H){!v&&!ne[h]&&(v=$(de,H,ce,h,q,F,ee)&&$(ye,E,de,H,q,F,ee))&&(ne[h]=!0),h++}),ce++,W=v}}),W}var f=x(d),O="_owner",z=Object.prototype.hasOwnProperty;function I(q,F,$,ee){var W=Object.keys(q),ne=W.length;if(Object.keys(F).length!==ne)return!1;for(var ce;ne-- >0;){if(ce=W[ne],ce===O){var ye=!!q.$$typeof,de=!!F.$$typeof;if((ye||de)&&ye!==de)return!1}if(!z.call(F,ce)||!$(q[ce],F[ce],ce,ce,q,F,ee))return!1}return!0}var G=x(I);function B(q,F){return q.source===F.source&&q.flags===F.flags}function V(q,F,$,ee){var W=q.size===F.size;if(!W)return!1;if(!q.size)return!0;var ne={};return q.forEach(function(ce,ye){if(W){var de=!1,v=0;F.forEach(function(h,E){!de&&!ne[v]&&(de=$(ce,h,ye,E,q,F,ee))&&(ne[v]=!0),v++}),W=de}}),W}var T=x(V),D=Object.freeze({areArraysEqual:l,areDatesEqual:y,areMapsEqual:d,areObjectsEqual:I,areRegExpsEqual:B,areSetsEqual:V,createIsNestedEqual:u}),N=Object.freeze({areArraysEqual:o,areDatesEqual:y,areMapsEqual:f,areObjectsEqual:G,areRegExpsEqual:B,areSetsEqual:T,createIsNestedEqual:u}),K=i(D);function ie(q,F){return K(q,F,void 0)}var M=i(p(D,{createIsNestedEqual:function(){return S}}));function b(q,F){return M(q,F,void 0)}var k=i(N);function Y(q,F){return k(q,F,new WeakMap)}var U=i(p(N,{createIsNestedEqual:function(){return S}}));function te(q,F){return U(q,F,new WeakMap)}function re(q){return i(p(D,q(D)))}function X(q){var F=i(p(N,q(N)));return(function($,ee,W){return W===void 0&&(W=new WeakMap),F($,ee,W)})}a.circularDeepEqual=Y,a.circularShallowEqual=te,a.createCustomCircularEqual=X,a.createCustomEqual=re,a.deepEqual=ie,a.sameValueZeroEqual=S,a.shallowEqual=b,Object.defineProperty(a,"__esModule",{value:!0})}))})(qe,qe.exports)),qe.exports}var ae={},ct,kt;function Ar(){return kt||(kt=1,ct=function(c,a,u){return c===a?!0:c.className===a.className&&u(c.style,a.style)&&c.width===a.width&&c.autoSize===a.autoSize&&c.cols===a.cols&&c.draggableCancel===a.draggableCancel&&c.draggableHandle===a.draggableHandle&&u(c.verticalCompact,a.verticalCompact)&&u(c.compactType,a.compactType)&&u(c.layout,a.layout)&&u(c.margin,a.margin)&&u(c.containerPadding,a.containerPadding)&&c.rowHeight===a.rowHeight&&c.maxRows===a.maxRows&&c.isBounded===a.isBounded&&c.isDraggable===a.isDraggable&&c.isResizable===a.isResizable&&c.allowOverlap===a.allowOverlap&&c.preventCollision===a.preventCollision&&c.useCSSTransforms===a.useCSSTransforms&&c.transformScale===a.transformScale&&c.isDroppable===a.isDroppable&&u(c.resizeHandles,a.resizeHandles)&&u(c.resizeHandle,a.resizeHandle)&&c.onLayoutChange===a.onLayoutChange&&c.onDragStart===a.onDragStart&&c.onDrag===a.onDrag&&c.onDragStop===a.onDragStop&&c.onResizeStart===a.onResizeStart&&c.onResize===a.onResize&&c.onResizeStop===a.onResizeStop&&c.onDrop===a.onDrop&&u(c.droppingItem,a.droppingItem)&&u(c.innerRef,a.innerRef)}),ct}var At;function Ne(){if(At)return ae;At=1,Object.defineProperty(ae,"__esModule",{value:!0}),ae.bottom=P,ae.childrenEqual=L,ae.cloneLayout=_,ae.cloneLayoutItem=C,ae.collides=n,ae.compact=r,ae.compactItem=l,ae.compactType=ce,ae.correctBounds=o,ae.fastPositionEqual=g,ae.fastRGLPropsEqual=void 0,ae.getAllCollisions=f,ae.getFirstCollision=d,ae.getLayoutItem=y,ae.getStatics=O,ae.modifyLayout=j,ae.moveElement=z,ae.moveElementAwayFromCollision=I,ae.noop=void 0,ae.perc=G,ae.resizeItemInDirection=re,ae.setTopLeft=q,ae.setTransform=X,ae.sortLayoutItems=F,ae.sortLayoutItemsByColRow=ee,ae.sortLayoutItemsByRowCol=$,ae.synchronizeLayoutWithChildren=W,ae.validateLayout=ne,ae.withLayoutItem=R;var e=ut(),c=a(me);function a(v){return v&&v.__esModule?v:{default:v}}function u(v,h){var E=Object.keys(v);if(Object.getOwnPropertySymbols){var H=Object.getOwnPropertySymbols(v);h&&(H=H.filter(function(Q){return Object.getOwnPropertyDescriptor(v,Q).enumerable})),E.push.apply(E,H)}return E}function x(v){for(var h=1;h<arguments.length;h++){var E=arguments[h]!=null?arguments[h]:{};h%2?u(Object(E),!0).forEach(function(H){p(v,H,E[H])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(E)):u(Object(E)).forEach(function(H){Object.defineProperty(v,H,Object.getOwnPropertyDescriptor(E,H))})}return v}function p(v,h,E){return(h=m(h))in v?Object.defineProperty(v,h,{value:E,enumerable:!0,configurable:!0,writable:!0}):v[h]=E,v}function m(v){var h=w(v,"string");return typeof h=="symbol"?h:h+""}function w(v,h){if(typeof v!="object"||!v)return v;var E=v[Symbol.toPrimitive];if(E!==void 0){var H=E.call(v,h);if(typeof H!="object")return H;throw new TypeError("@@toPrimitive must return a primitive value.")}return(h==="string"?String:Number)(v)}const S=process.env.NODE_ENV==="production";function P(v){let h=0,E;for(let H=0,Q=v.length;H<Q;H++)E=v[H].y+v[H].h,E>h&&(h=E);return h}function _(v){const h=Array(v.length);for(let E=0,H=v.length;E<H;E++)h[E]=C(v[E]);return h}function j(v,h){const E=Array(v.length);for(let H=0,Q=v.length;H<Q;H++)h.i===v[H].i?E[H]=h:E[H]=v[H];return E}function R(v,h,E){let H=y(v,h);return H?(H=E(C(H)),v=j(v,H),[v,H]):[v,null]}function C(v){return{w:v.w,h:v.h,x:v.x,y:v.y,i:v.i,minW:v.minW,maxW:v.maxW,minH:v.minH,maxH:v.maxH,moved:!!v.moved,static:!!v.static,isDraggable:v.isDraggable,isResizable:v.isResizable,resizeHandles:v.resizeHandles,isBounded:v.isBounded}}function L(v,h){return(0,e.deepEqual)(c.default.Children.map(v,E=>E?.key),c.default.Children.map(h,E=>E?.key))&&(0,e.deepEqual)(c.default.Children.map(v,E=>E?.props["data-grid"]),c.default.Children.map(h,E=>E?.props["data-grid"]))}ae.fastRGLPropsEqual=Ar();function g(v,h){return v.left===h.left&&v.top===h.top&&v.width===h.width&&v.height===h.height}function n(v,h){return!(v.i===h.i||v.x+v.w<=h.x||v.x>=h.x+h.w||v.y+v.h<=h.y||v.y>=h.y+h.h)}function r(v,h,E,H){const Q=O(v);let Z=P(Q);const J=F(v,h),ue=Array(v.length);for(let fe=0,ge=J.length;fe<ge;fe++){let be=C(J[fe]);be.static||(be=l(Q,be,h,E,J,H,Z),Z=Math.max(Z,be.y+be.h),Q.push(be)),ue[v.indexOf(J[fe])]=be,be.moved=!1}return ue}const t={x:"w",y:"h"};function i(v,h,E,H){const Q=t[H];h[H]+=1;const Z=v.map(J=>J.i).indexOf(h.i);for(let J=Z+1;J<v.length;J++){const ue=v[J];if(!ue.static){if(ue.y>h.y+h.h)break;n(h,ue)&&i(v,ue,E+h[Q],H)}}h[H]=E}function l(v,h,E,H,Q,Z,J){const ue=E==="vertical",fe=E==="horizontal";if(ue)for(typeof J=="number"?h.y=Math.min(J,h.y):h.y=Math.min(P(v),h.y);h.y>0&&!d(v,h);)h.y--;else if(fe)for(;h.x>0&&!d(v,h);)h.x--;let ge;for(;(ge=d(v,h))&&!(E===null&&Z);)if(fe?i(Q,h,ge.x+ge.w,"x"):i(Q,h,ge.y+ge.h,"y"),fe&&h.x+h.w>H)for(h.x=H-h.w,h.y++;h.x>0&&!d(v,h);)h.x--;return h.y=Math.max(h.y,0),h.x=Math.max(h.x,0),h}function o(v,h){const E=O(v);for(let H=0,Q=v.length;H<Q;H++){const Z=v[H];if(Z.x+Z.w>h.cols&&(Z.x=h.cols-Z.w),Z.x<0&&(Z.x=0,Z.w=h.cols),!Z.static)E.push(Z);else for(;d(E,Z);)Z.y++}return v}function y(v,h){for(let E=0,H=v.length;E<H;E++)if(v[E].i===h)return v[E]}function d(v,h){for(let E=0,H=v.length;E<H;E++)if(n(v[E],h))return v[E]}function f(v,h){return v.filter(E=>n(E,h))}function O(v){return v.filter(h=>h.static)}function z(v,h,E,H,Q,Z,J,ue,fe){if(h.static&&h.isDraggable!==!0||h.y===H&&h.x===E)return v;"Moving element ".concat(h.i," to [").concat(String(E),",").concat(String(H),"] from [").concat(h.x,",").concat(h.y,"]");const ge=h.x,be=h.y;typeof E=="number"&&(h.x=E),typeof H=="number"&&(h.y=H),h.moved=!0;let Re=F(v,J);(J==="vertical"&&typeof H=="number"?be>=H:J==="horizontal"&&typeof E=="number"&&ge>=E)&&(Re=Re.reverse());const Me=f(Re,h),ot=Me.length>0;if(ot&&fe)return _(v);if(ot&&Z)return"Collision prevented on ".concat(h.i,", reverting."),h.x=ge,h.y=be,h.moved=!1,v;for(let Pt=0,jn=Me.length;Pt<jn;Pt++){const Ce=Me[Pt];"Resolving collision between ".concat(h.i," at [").concat(h.x,",").concat(h.y,"] and ").concat(Ce.i," at [").concat(Ce.x,",").concat(Ce.y,"]"),!Ce.moved&&(Ce.static?v=I(v,Ce,h,Q,J):v=I(v,h,Ce,Q,J))}return v}function I(v,h,E,H,Q,Z){const J=Q==="horizontal",ue=Q==="vertical",fe=h.static;if(H){H=!1;const Re={x:J?Math.max(h.x-E.w,0):E.x,y:ue?Math.max(h.y-E.h,0):E.y,w:E.w,h:E.h,i:"-1"},Pe=d(v,Re),Me=Pe&&Pe.y+Pe.h>h.y,ot=Pe&&h.x+h.w>Pe.x;if(Pe){if(Me&&ue)return z(v,E,void 0,E.y+1,H,fe,Q);if(Me&&Q==null)return h.y=E.y,E.y=E.y+E.h,v;if(ot&&J)return z(v,h,E.x,void 0,H,fe,Q)}else return"Doing reverse collision on ".concat(E.i," up to [").concat(Re.x,",").concat(Re.y,"]."),z(v,E,J?Re.x:void 0,ue?Re.y:void 0,H,fe,Q)}const ge=J?E.x+1:void 0,be=ue?E.y+1:void 0;return ge==null&&be==null?v:z(v,E,J?E.x+1:void 0,ue?E.y+1:void 0,H,fe,Q)}function G(v){return v*100+"%"}const B=(v,h,E,H)=>v+E>H?h:E,V=(v,h,E)=>v<0?h:E,T=v=>Math.max(0,v),D=v=>Math.max(0,v),N=(v,h,E)=>{let{left:H,height:Q,width:Z}=h;const J=v.top-(Q-v.height);return{left:H,width:Z,height:V(J,v.height,Q),top:D(J)}},K=(v,h,E)=>{let{top:H,left:Q,height:Z,width:J}=h;return{top:H,height:Z,width:B(v.left,v.width,J,E),left:T(Q)}},ie=(v,h,E)=>{let{top:H,height:Q,width:Z}=h;const J=v.left-(Z-v.width);return{height:Q,width:J<0?v.width:B(v.left,v.width,Z,E),top:D(H),left:T(J)}},M=(v,h,E)=>{let{top:H,left:Q,height:Z,width:J}=h;return{width:J,left:Q,height:V(H,v.height,Z),top:D(H)}},te={n:N,ne:function(){return N(arguments.length<=0?void 0:arguments[0],K(...arguments))},e:K,se:function(){return M(arguments.length<=0?void 0:arguments[0],K(...arguments))},s:M,sw:function(){return M(arguments.length<=0?void 0:arguments[0],ie(...arguments))},w:ie,nw:function(){return N(arguments.length<=0?void 0:arguments[0],ie(...arguments))}};function re(v,h,E,H){const Q=te[v];return Q?Q(h,x(x({},h),E),H):E}function X(v){let{top:h,left:E,width:H,height:Q}=v;const Z="translate(".concat(E,"px,").concat(h,"px)");return{transform:Z,WebkitTransform:Z,MozTransform:Z,msTransform:Z,OTransform:Z,width:"".concat(H,"px"),height:"".concat(Q,"px"),position:"absolute"}}function q(v){let{top:h,left:E,width:H,height:Q}=v;return{top:"".concat(h,"px"),left:"".concat(E,"px"),width:"".concat(H,"px"),height:"".concat(Q,"px"),position:"absolute"}}function F(v,h){return h==="horizontal"?ee(v):h==="vertical"?$(v):v}function $(v){return v.slice(0).sort(function(h,E){return h.y>E.y||h.y===E.y&&h.x>E.x?1:h.y===E.y&&h.x===E.x?0:-1})}function ee(v){return v.slice(0).sort(function(h,E){return h.x>E.x||h.x===E.x&&h.y>E.y?1:-1})}function W(v,h,E,H,Q){v=v||[];const Z=[];c.default.Children.forEach(h,ue=>{if(ue?.key==null)return;const fe=y(v,String(ue.key)),ge=ue.props["data-grid"];fe&&ge==null?Z.push(C(fe)):ge?(S||ne([ge],"ReactGridLayout.children"),Z.push(C(x(x({},ge),{},{i:ue.key})))):Z.push(C({w:1,h:1,x:0,y:P(Z),i:String(ue.key)}))});const J=o(Z,{cols:E});return Q?J:r(J,H,E)}function ne(v){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Layout";const E=["x","y","w","h"];if(!Array.isArray(v))throw new Error(h+" must be an array!");for(let H=0,Q=v.length;H<Q;H++){const Z=v[H];for(let J=0;J<E.length;J++){const ue=E[J],fe=Z[ue];if(typeof fe!="number"||Number.isNaN(fe))throw new Error("ReactGridLayout: ".concat(h,"[").concat(H,"].").concat(ue," must be a number! Received: ").concat(fe," (").concat(typeof fe,")"))}if(typeof Z.i<"u"&&typeof Z.i!="string")throw new Error("ReactGridLayout: ".concat(h,"[").concat(H,"].i must be a string! Received: ").concat(Z.i," (").concat(typeof Z.i,")"))}}function ce(v){const{verticalCompact:h,compactType:E}=v||{};return h===!1?null:E}function ye(){}const de=()=>{};return ae.noop=de,ae}var we={},Lt;function dt(){if(Lt)return we;Lt=1,Object.defineProperty(we,"__esModule",{value:!0}),we.calcGridColWidth=e,we.calcGridItemPosition=a,we.calcGridItemWHPx=c,we.calcWH=x,we.calcXY=u,we.clamp=p;function e(m){const{margin:w,containerPadding:S,containerWidth:P,cols:_}=m;return(P-w[0]*(_-1)-S[0]*2)/_}function c(m,w,S){return Number.isFinite(m)?Math.round(w*m+Math.max(0,m-1)*S):m}function a(m,w,S,P,_,j){const{margin:R,containerPadding:C,rowHeight:L}=m,g=e(m),n={};return j&&j.resizing?(n.width=Math.round(j.resizing.width),n.height=Math.round(j.resizing.height)):(n.width=c(P,g,R[0]),n.height=c(_,L,R[1])),j&&j.dragging?(n.top=Math.round(j.dragging.top),n.left=Math.round(j.dragging.left)):j&&j.resizing&&typeof j.resizing.top=="number"&&typeof j.resizing.left=="number"?(n.top=Math.round(j.resizing.top),n.left=Math.round(j.resizing.left)):(n.top=Math.round((L+R[1])*S+C[1]),n.left=Math.round((g+R[0])*w+C[0])),n}function u(m,w,S,P,_){const{margin:j,containerPadding:R,cols:C,rowHeight:L,maxRows:g}=m,n=e(m);let r=Math.round((S-R[0])/(n+j[0])),t=Math.round((w-R[1])/(L+j[1]));return r=p(r,0,C-P),t=p(t,0,g-_),{x:r,y:t}}function x(m,w,S,P,_,j){const{margin:R,maxRows:C,cols:L,rowHeight:g}=m,n=e(m);let r=Math.round((w+R[0])/(n+R[0])),t=Math.round((S+R[1])/(g+R[1])),i=p(r,0,L-P),l=p(t,0,C-_);return["sw","w","nw"].indexOf(j)!==-1&&(i=p(r,0,L)),["nw","n","ne"].indexOf(j)!==-1&&(l=p(t,0,C)),{w:i,h:l}}function p(m,w,S){return Math.max(Math.min(m,S),w)}return we}var We={},Xe={exports:{}},Ke={exports:{}},se={};var qt;function Lr(){if(qt)return se;qt=1;var e=typeof Symbol=="function"&&Symbol.for,c=e?Symbol.for("react.element"):60103,a=e?Symbol.for("react.portal"):60106,u=e?Symbol.for("react.fragment"):60107,x=e?Symbol.for("react.strict_mode"):60108,p=e?Symbol.for("react.profiler"):60114,m=e?Symbol.for("react.provider"):60109,w=e?Symbol.for("react.context"):60110,S=e?Symbol.for("react.async_mode"):60111,P=e?Symbol.for("react.concurrent_mode"):60111,_=e?Symbol.for("react.forward_ref"):60112,j=e?Symbol.for("react.suspense"):60113,R=e?Symbol.for("react.suspense_list"):60120,C=e?Symbol.for("react.memo"):60115,L=e?Symbol.for("react.lazy"):60116,g=e?Symbol.for("react.block"):60121,n=e?Symbol.for("react.fundamental"):60117,r=e?Symbol.for("react.responder"):60118,t=e?Symbol.for("react.scope"):60119;function i(o){if(typeof o=="object"&&o!==null){var y=o.$$typeof;switch(y){case c:switch(o=o.type,o){case S:case P:case u:case p:case x:case j:return o;default:switch(o=o&&o.$$typeof,o){case w:case _:case L:case C:case m:return o;default:return y}}case a:return y}}}function l(o){return i(o)===P}return se.AsyncMode=S,se.ConcurrentMode=P,se.ContextConsumer=w,se.ContextProvider=m,se.Element=c,se.ForwardRef=_,se.Fragment=u,se.Lazy=L,se.Memo=C,se.Portal=a,se.Profiler=p,se.StrictMode=x,se.Suspense=j,se.isAsyncMode=function(o){return l(o)||i(o)===S},se.isConcurrentMode=l,se.isContextConsumer=function(o){return i(o)===w},se.isContextProvider=function(o){return i(o)===m},se.isElement=function(o){return typeof o=="object"&&o!==null&&o.$$typeof===c},se.isForwardRef=function(o){return i(o)===_},se.isFragment=function(o){return i(o)===u},se.isLazy=function(o){return i(o)===L},se.isMemo=function(o){return i(o)===C},se.isPortal=function(o){return i(o)===a},se.isProfiler=function(o){return i(o)===p},se.isStrictMode=function(o){return i(o)===x},se.isSuspense=function(o){return i(o)===j},se.isValidElementType=function(o){return typeof o=="string"||typeof o=="function"||o===u||o===P||o===p||o===x||o===j||o===R||typeof o=="object"&&o!==null&&(o.$$typeof===L||o.$$typeof===C||o.$$typeof===m||o.$$typeof===w||o.$$typeof===_||o.$$typeof===n||o.$$typeof===r||o.$$typeof===t||o.$$typeof===g)},se.typeOf=i,se}var le={};var Wt;function qr(){return Wt||(Wt=1,process.env.NODE_ENV!=="production"&&(function(){var e=typeof Symbol=="function"&&Symbol.for,c=e?Symbol.for("react.element"):60103,a=e?Symbol.for("react.portal"):60106,u=e?Symbol.for("react.fragment"):60107,x=e?Symbol.for("react.strict_mode"):60108,p=e?Symbol.for("react.profiler"):60114,m=e?Symbol.for("react.provider"):60109,w=e?Symbol.for("react.context"):60110,S=e?Symbol.for("react.async_mode"):60111,P=e?Symbol.for("react.concurrent_mode"):60111,_=e?Symbol.for("react.forward_ref"):60112,j=e?Symbol.for("react.suspense"):60113,R=e?Symbol.for("react.suspense_list"):60120,C=e?Symbol.for("react.memo"):60115,L=e?Symbol.for("react.lazy"):60116,g=e?Symbol.for("react.block"):60121,n=e?Symbol.for("react.fundamental"):60117,r=e?Symbol.for("react.responder"):60118,t=e?Symbol.for("react.scope"):60119;function i(W){return typeof W=="string"||typeof W=="function"||W===u||W===P||W===p||W===x||W===j||W===R||typeof W=="object"&&W!==null&&(W.$$typeof===L||W.$$typeof===C||W.$$typeof===m||W.$$typeof===w||W.$$typeof===_||W.$$typeof===n||W.$$typeof===r||W.$$typeof===t||W.$$typeof===g)}function l(W){if(typeof W=="object"&&W!==null){var ne=W.$$typeof;switch(ne){case c:var ce=W.type;switch(ce){case S:case P:case u:case p:case x:case j:return ce;default:var ye=ce&&ce.$$typeof;switch(ye){case w:case _:case L:case C:case m:return ye;default:return ne}}case a:return ne}}}var o=S,y=P,d=w,f=m,O=c,z=_,I=u,G=L,B=C,V=a,T=p,D=x,N=j,K=!1;function ie(W){return K||(K=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),M(W)||l(W)===S}function M(W){return l(W)===P}function b(W){return l(W)===w}function k(W){return l(W)===m}function Y(W){return typeof W=="object"&&W!==null&&W.$$typeof===c}function U(W){return l(W)===_}function te(W){return l(W)===u}function re(W){return l(W)===L}function X(W){return l(W)===C}function q(W){return l(W)===a}function F(W){return l(W)===p}function $(W){return l(W)===x}function ee(W){return l(W)===j}le.AsyncMode=o,le.ConcurrentMode=y,le.ContextConsumer=d,le.ContextProvider=f,le.Element=O,le.ForwardRef=z,le.Fragment=I,le.Lazy=G,le.Memo=B,le.Portal=V,le.Profiler=T,le.StrictMode=D,le.Suspense=N,le.isAsyncMode=ie,le.isConcurrentMode=M,le.isContextConsumer=b,le.isContextProvider=k,le.isElement=Y,le.isForwardRef=U,le.isFragment=te,le.isLazy=re,le.isMemo=X,le.isPortal=q,le.isProfiler=F,le.isStrictMode=$,le.isSuspense=ee,le.isValidElementType=i,le.typeOf=l})()),le}var Ht;function It(){return Ht||(Ht=1,process.env.NODE_ENV==="production"?Ke.exports=Lr():Ke.exports=qr()),Ke.exports}var ft,Bt;function Wr(){if(Bt)return ft;Bt=1;var e=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function u(p){if(p==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(p)}function x(){try{if(!Object.assign)return!1;var p=new String("abc");if(p[5]="de",Object.getOwnPropertyNames(p)[0]==="5")return!1;for(var m={},w=0;w<10;w++)m["_"+String.fromCharCode(w)]=w;var S=Object.getOwnPropertyNames(m).map(function(_){return m[_]});if(S.join("")!=="0123456789")return!1;var P={};return"abcdefghijklmnopqrst".split("").forEach(function(_){P[_]=_}),Object.keys(Object.assign({},P)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}return ft=x()?Object.assign:function(p,m){for(var w,S=u(p),P,_=1;_<arguments.length;_++){w=Object(arguments[_]);for(var j in w)c.call(w,j)&&(S[j]=w[j]);if(e){P=e(w);for(var R=0;R<P.length;R++)a.call(w,P[R])&&(S[P[R]]=w[P[R]])}}return S},ft}var pt,Ft;function ht(){if(Ft)return pt;Ft=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return pt=e,pt}var mt,Gt;function Yt(){return Gt||(Gt=1,mt=Function.call.bind(Object.prototype.hasOwnProperty)),mt}var gt,Ut;function Hr(){if(Ut)return gt;Ut=1;var e=function(){};if(process.env.NODE_ENV!=="production"){var c=ht(),a={},u=Yt();e=function(p){var m="Warning: "+p;typeof console<"u"&&console.error(m);try{throw new Error(m)}catch{}}}function x(p,m,w,S,P){if(process.env.NODE_ENV!=="production"){for(var _ in p)if(u(p,_)){var j;try{if(typeof p[_]!="function"){var R=Error((S||"React class")+": "+w+" type `"+_+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof p[_]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw R.name="Invariant Violation",R}j=p[_](m,_,S,w,null,c)}catch(L){j=L}if(j&&!(j instanceof Error)&&e((S||"React class")+": type specification of "+w+" `"+_+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof j+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),j instanceof Error&&!(j.message in a)){a[j.message]=!0;var C=P?P():"";e("Failed "+w+" type: "+j.message+(C??""))}}}}return x.resetWarningCache=function(){process.env.NODE_ENV!=="production"&&(a={})},gt=x,gt}var yt,$t;function Ir(){if($t)return yt;$t=1;var e=It(),c=Wr(),a=ht(),u=Yt(),x=Hr(),p=function(){};process.env.NODE_ENV!=="production"&&(p=function(w){var S="Warning: "+w;typeof console<"u"&&console.error(S);try{throw new Error(S)}catch{}});function m(){return null}return yt=function(w,S){var P=typeof Symbol=="function"&&Symbol.iterator,_="@@iterator";function j(M){var b=M&&(P&&M[P]||M[_]);if(typeof b=="function")return b}var R="<<anonymous>>",C={array:r("array"),bigint:r("bigint"),bool:r("boolean"),func:r("function"),number:r("number"),object:r("object"),string:r("string"),symbol:r("symbol"),any:t(),arrayOf:i,element:l(),elementType:o(),instanceOf:y,node:z(),objectOf:f,oneOf:d,oneOfType:O,shape:G,exact:B};function L(M,b){return M===b?M!==0||1/M===1/b:M!==M&&b!==b}function g(M,b){this.message=M,this.data=b&&typeof b=="object"?b:{},this.stack=""}g.prototype=Error.prototype;function n(M){if(process.env.NODE_ENV!=="production")var b={},k=0;function Y(te,re,X,q,F,$,ee){if(q=q||R,$=$||X,ee!==a){if(S){var W=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw W.name="Invariant Violation",W}else if(process.env.NODE_ENV!=="production"&&typeof console<"u"){var ne=q+":"+X;!b[ne]&&k<3&&(p("You are manually calling a React.PropTypes validation function for the `"+$+"` prop on `"+q+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),b[ne]=!0,k++)}}return re[X]==null?te?re[X]===null?new g("The "+F+" `"+$+"` is marked as required "+("in `"+q+"`, but its value is `null`.")):new g("The "+F+" `"+$+"` is marked as required in "+("`"+q+"`, but its value is `undefined`.")):null:M(re,X,q,F,$)}var U=Y.bind(null,!1);return U.isRequired=Y.bind(null,!0),U}function r(M){function b(k,Y,U,te,re,X){var q=k[Y],F=D(q);if(F!==M){var $=N(q);return new g("Invalid "+te+" `"+re+"` of type "+("`"+$+"` supplied to `"+U+"`, expected ")+("`"+M+"`."),{expectedType:M})}return null}return n(b)}function t(){return n(m)}function i(M){function b(k,Y,U,te,re){if(typeof M!="function")return new g("Property `"+re+"` of component `"+U+"` has invalid PropType notation inside arrayOf.");var X=k[Y];if(!Array.isArray(X)){var q=D(X);return new g("Invalid "+te+" `"+re+"` of type "+("`"+q+"` supplied to `"+U+"`, expected an array."))}for(var F=0;F<X.length;F++){var $=M(X,F,U,te,re+"["+F+"]",a);if($ instanceof Error)return $}return null}return n(b)}function l(){function M(b,k,Y,U,te){var re=b[k];if(!w(re)){var X=D(re);return new g("Invalid "+U+" `"+te+"` of type "+("`"+X+"` supplied to `"+Y+"`, expected a single ReactElement."))}return null}return n(M)}function o(){function M(b,k,Y,U,te){var re=b[k];if(!e.isValidElementType(re)){var X=D(re);return new g("Invalid "+U+" `"+te+"` of type "+("`"+X+"` supplied to `"+Y+"`, expected a single ReactElement type."))}return null}return n(M)}function y(M){function b(k,Y,U,te,re){if(!(k[Y]instanceof M)){var X=M.name||R,q=ie(k[Y]);return new g("Invalid "+te+" `"+re+"` of type "+("`"+q+"` supplied to `"+U+"`, expected ")+("instance of `"+X+"`."))}return null}return n(b)}function d(M){if(!Array.isArray(M))return process.env.NODE_ENV!=="production"&&(arguments.length>1?p("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):p("Invalid argument supplied to oneOf, expected an array.")),m;function b(k,Y,U,te,re){for(var X=k[Y],q=0;q<M.length;q++)if(L(X,M[q]))return null;var F=JSON.stringify(M,function(ee,W){var ne=N(W);return ne==="symbol"?String(W):W});return new g("Invalid "+te+" `"+re+"` of value `"+String(X)+"` "+("supplied to `"+U+"`, expected one of "+F+"."))}return n(b)}function f(M){function b(k,Y,U,te,re){if(typeof M!="function")return new g("Property `"+re+"` of component `"+U+"` has invalid PropType notation inside objectOf.");var X=k[Y],q=D(X);if(q!=="object")return new g("Invalid "+te+" `"+re+"` of type "+("`"+q+"` supplied to `"+U+"`, expected an object."));for(var F in X)if(u(X,F)){var $=M(X,F,U,te,re+"."+F,a);if($ instanceof Error)return $}return null}return n(b)}function O(M){if(!Array.isArray(M))return process.env.NODE_ENV!=="production"&&p("Invalid argument supplied to oneOfType, expected an instance of array."),m;for(var b=0;b<M.length;b++){var k=M[b];if(typeof k!="function")return p("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+K(k)+" at index "+b+"."),m}function Y(U,te,re,X,q){for(var F=[],$=0;$<M.length;$++){var ee=M[$],W=ee(U,te,re,X,q,a);if(W==null)return null;W.data&&u(W.data,"expectedType")&&F.push(W.data.expectedType)}var ne=F.length>0?", expected one of type ["+F.join(", ")+"]":"";return new g("Invalid "+X+" `"+q+"` supplied to "+("`"+re+"`"+ne+"."))}return n(Y)}function z(){function M(b,k,Y,U,te){return V(b[k])?null:new g("Invalid "+U+" `"+te+"` supplied to "+("`"+Y+"`, expected a ReactNode."))}return n(M)}function I(M,b,k,Y,U){return new g((M||"React class")+": "+b+" type `"+k+"."+Y+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+U+"`.")}function G(M){function b(k,Y,U,te,re){var X=k[Y],q=D(X);if(q!=="object")return new g("Invalid "+te+" `"+re+"` of type `"+q+"` "+("supplied to `"+U+"`, expected `object`."));for(var F in M){var $=M[F];if(typeof $!="function")return I(U,te,re,F,N($));var ee=$(X,F,U,te,re+"."+F,a);if(ee)return ee}return null}return n(b)}function B(M){function b(k,Y,U,te,re){var X=k[Y],q=D(X);if(q!=="object")return new g("Invalid "+te+" `"+re+"` of type `"+q+"` "+("supplied to `"+U+"`, expected `object`."));var F=c({},k[Y],M);for(var $ in F){var ee=M[$];if(u(M,$)&&typeof ee!="function")return I(U,te,re,$,N(ee));if(!ee)return new g("Invalid "+te+" `"+re+"` key `"+$+"` supplied to `"+U+"`.\nBad object: "+JSON.stringify(k[Y],null," ")+`
|
|
7
|
+
Valid keys: `+JSON.stringify(Object.keys(M),null," "));var W=ee(X,$,U,te,re+"."+$,a);if(W)return W}return null}return n(b)}function V(M){switch(typeof M){case"number":case"string":case"undefined":return!0;case"boolean":return!M;case"object":if(Array.isArray(M))return M.every(V);if(M===null||w(M))return!0;var b=j(M);if(b){var k=b.call(M),Y;if(b!==M.entries){for(;!(Y=k.next()).done;)if(!V(Y.value))return!1}else for(;!(Y=k.next()).done;){var U=Y.value;if(U&&!V(U[1]))return!1}}else return!1;return!0;default:return!1}}function T(M,b){return M==="symbol"?!0:b?b["@@toStringTag"]==="Symbol"||typeof Symbol=="function"&&b instanceof Symbol:!1}function D(M){var b=typeof M;return Array.isArray(M)?"array":M instanceof RegExp?"object":T(b,M)?"symbol":b}function N(M){if(typeof M>"u"||M===null)return""+M;var b=D(M);if(b==="object"){if(M instanceof Date)return"date";if(M instanceof RegExp)return"regexp"}return b}function K(M){var b=N(M);switch(b){case"array":case"object":return"an "+b;case"boolean":case"date":case"regexp":return"a "+b;default:return b}}function ie(M){return!M.constructor||!M.constructor.name?R:M.constructor.name}return C.checkPropTypes=x,C.resetWarningCache=x.resetWarningCache,C.PropTypes=C,C},yt}var vt,Vt;function Br(){if(Vt)return vt;Vt=1;var e=ht();function c(){}function a(){}return a.resetWarningCache=c,vt=function(){function u(m,w,S,P,_,j){if(j!==e){var R=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw R.name="Invariant Violation",R}}u.isRequired=u;function x(){return u}var p={array:u,bigint:u,bool:u,func:u,number:u,object:u,string:u,symbol:u,any:u,arrayOf:x,element:u,elementType:u,instanceOf:x,node:u,objectOf:x,oneOf:x,oneOfType:x,shape:x,exact:x,checkPropTypes:a,resetWarningCache:c};return p.PropTypes=p,p},vt}var Xt;function Se(){if(Xt)return Xe.exports;if(Xt=1,process.env.NODE_ENV!=="production"){var e=It(),c=!0;Xe.exports=Ir()(e.isElement,c)}else Xe.exports=Br()();return Xe.exports}var He={exports:{}},bt={},pe={},Oe={},Kt;function Je(){if(Kt)return Oe;Kt=1,Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.dontSetMe=x,Oe.findInArray=e,Oe.int=u,Oe.isFunction=c,Oe.isNum=a;function e(p,m){for(let w=0,S=p.length;w<S;w++)if(m.apply(m,[p[w],w,p]))return p[w]}function c(p){return typeof p=="function"||Object.prototype.toString.call(p)==="[object Function]"}function a(p){return typeof p=="number"&&!isNaN(p)}function u(p){return parseInt(p,10)}function x(p,m,w){if(p[m])return new Error(`Invalid prop ${m} passed to ${w} - do not set this, set it on the child.`)}return Oe}var _e={},Jt;function Fr(){if(Jt)return _e;Jt=1,Object.defineProperty(_e,"__esModule",{value:!0}),_e.browserPrefixToKey=a,_e.browserPrefixToStyle=u,_e.default=void 0,_e.getPrefix=c;const e=["Moz","Webkit","O","ms"];function c(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const m=window.document?.documentElement?.style;if(!m||p in m)return"";for(let w=0;w<e.length;w++)if(a(p,e[w])in m)return e[w];return""}function a(p,m){return m?`${m}${x(p)}`:p}function u(p,m){return m?`-${m.toLowerCase()}-${p}`:p}function x(p){let m="",w=!0;for(let S=0;S<p.length;S++)w?(m+=p[S].toUpperCase(),w=!1):p[S]==="-"?w=!0:m+=p[S];return m}return _e.default=c(),_e}var Zt;function xt(){if(Zt)return pe;Zt=1,Object.defineProperty(pe,"__esModule",{value:!0}),pe.addClassName=o,pe.addEvent=m,pe.addUserSelectStyles=t,pe.createCSSTransform=C,pe.createSVGTransform=L,pe.getTouch=n,pe.getTouchIdentifier=r,pe.getTranslation=g,pe.innerHeight=_,pe.innerWidth=j,pe.matchesSelector=x,pe.matchesSelectorAndParentsTo=p,pe.offsetXYFromParent=R,pe.outerHeight=S,pe.outerWidth=P,pe.removeClassName=y,pe.removeEvent=w,pe.scheduleRemoveUserSelectStyles=i;var e=Je(),c=a(Fr());function a(d,f){if(typeof WeakMap=="function")var O=new WeakMap,z=new WeakMap;return(a=function(I,G){if(!G&&I&&I.__esModule)return I;var B,V,T={__proto__:null,default:I};if(I===null||typeof I!="object"&&typeof I!="function")return T;if(B=G?z:O){if(B.has(I))return B.get(I);B.set(I,T)}for(const D in I)D!=="default"&&{}.hasOwnProperty.call(I,D)&&((V=(B=Object.defineProperty)&&Object.getOwnPropertyDescriptor(I,D))&&(V.get||V.set)?B(T,D,V):T[D]=I[D]);return T})(d,f)}let u="";function x(d,f){return u||(u=(0,e.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(O){return(0,e.isFunction)(d[O])})),(0,e.isFunction)(d[u])?d[u](f):!1}function p(d,f,O){let z=d;do{if(x(z,f))return!0;if(z===O)return!1;z=z.parentNode}while(z);return!1}function m(d,f,O,z){if(!d)return;const I={capture:!0,...z};d.addEventListener?d.addEventListener(f,O,I):d.attachEvent?d.attachEvent("on"+f,O):d["on"+f]=O}function w(d,f,O,z){if(!d)return;const I={capture:!0,...z};d.removeEventListener?d.removeEventListener(f,O,I):d.detachEvent?d.detachEvent("on"+f,O):d["on"+f]=null}function S(d){let f=d.clientHeight;const O=d.ownerDocument.defaultView.getComputedStyle(d);return f+=(0,e.int)(O.borderTopWidth),f+=(0,e.int)(O.borderBottomWidth),f}function P(d){let f=d.clientWidth;const O=d.ownerDocument.defaultView.getComputedStyle(d);return f+=(0,e.int)(O.borderLeftWidth),f+=(0,e.int)(O.borderRightWidth),f}function _(d){let f=d.clientHeight;const O=d.ownerDocument.defaultView.getComputedStyle(d);return f-=(0,e.int)(O.paddingTop),f-=(0,e.int)(O.paddingBottom),f}function j(d){let f=d.clientWidth;const O=d.ownerDocument.defaultView.getComputedStyle(d);return f-=(0,e.int)(O.paddingLeft),f-=(0,e.int)(O.paddingRight),f}function R(d,f,O){const I=f===f.ownerDocument.body?{left:0,top:0}:f.getBoundingClientRect(),G=(d.clientX+f.scrollLeft-I.left)/O,B=(d.clientY+f.scrollTop-I.top)/O;return{x:G,y:B}}function C(d,f){const O=g(d,f,"px");return{[(0,c.browserPrefixToKey)("transform",c.default)]:O}}function L(d,f){return g(d,f,"")}function g(d,f,O){let{x:z,y:I}=d,G=`translate(${z}${O},${I}${O})`;if(f){const B=`${typeof f.x=="string"?f.x:f.x+O}`,V=`${typeof f.y=="string"?f.y:f.y+O}`;G=`translate(${B}, ${V})`+G}return G}function n(d,f){return d.targetTouches&&(0,e.findInArray)(d.targetTouches,O=>f===O.identifier)||d.changedTouches&&(0,e.findInArray)(d.changedTouches,O=>f===O.identifier)}function r(d){if(d.targetTouches&&d.targetTouches[0])return d.targetTouches[0].identifier;if(d.changedTouches&&d.changedTouches[0])return d.changedTouches[0].identifier}function t(d){if(!d)return;let f=d.getElementById("react-draggable-style-el");f||(f=d.createElement("style"),f.type="text/css",f.id="react-draggable-style-el",f.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
|
|
8
|
+
`,f.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
|
|
9
|
+
`,d.getElementsByTagName("head")[0].appendChild(f)),d.body&&o(d.body,"react-draggable-transparent-selection")}function i(d){window.requestAnimationFrame?window.requestAnimationFrame(()=>{l(d)}):l(d)}function l(d){if(d)try{if(d.body&&y(d.body,"react-draggable-transparent-selection"),d.selection)d.selection.empty();else{const f=(d.defaultView||window).getSelection();f&&f.type!=="Caret"&&f.removeAllRanges()}}catch{}}function o(d,f){d.classList?d.classList.add(f):d.className.match(new RegExp(`(?:^|\\s)${f}(?!\\S)`))||(d.className+=` ${f}`)}function y(d,f){d.classList?d.classList.remove(f):d.className=d.className.replace(new RegExp(`(?:^|\\s)${f}(?!\\S)`,"g"),"")}return pe}var xe={},Qt;function er(){if(Qt)return xe;Qt=1,Object.defineProperty(xe,"__esModule",{value:!0}),xe.canDragX=x,xe.canDragY=p,xe.createCoreData=w,xe.createDraggableData=S,xe.getBoundPosition=a,xe.getControlPosition=m,xe.snapToGrid=u;var e=Je(),c=xt();function a(j,R,C){if(!j.props.bounds)return[R,C];let{bounds:L}=j.props;L=typeof L=="string"?L:P(L);const g=_(j);if(typeof L=="string"){const{ownerDocument:n}=g,r=n.defaultView;let t;if(L==="parent"?t=g.parentNode:t=g.getRootNode().querySelector(L),!(t instanceof r.HTMLElement))throw new Error('Bounds selector "'+L+'" could not find an element.');const i=t,l=r.getComputedStyle(g),o=r.getComputedStyle(i);L={left:-g.offsetLeft+(0,e.int)(o.paddingLeft)+(0,e.int)(l.marginLeft),top:-g.offsetTop+(0,e.int)(o.paddingTop)+(0,e.int)(l.marginTop),right:(0,c.innerWidth)(i)-(0,c.outerWidth)(g)-g.offsetLeft+(0,e.int)(o.paddingRight)-(0,e.int)(l.marginRight),bottom:(0,c.innerHeight)(i)-(0,c.outerHeight)(g)-g.offsetTop+(0,e.int)(o.paddingBottom)-(0,e.int)(l.marginBottom)}}return(0,e.isNum)(L.right)&&(R=Math.min(R,L.right)),(0,e.isNum)(L.bottom)&&(C=Math.min(C,L.bottom)),(0,e.isNum)(L.left)&&(R=Math.max(R,L.left)),(0,e.isNum)(L.top)&&(C=Math.max(C,L.top)),[R,C]}function u(j,R,C){const L=Math.round(R/j[0])*j[0],g=Math.round(C/j[1])*j[1];return[L,g]}function x(j){return j.props.axis==="both"||j.props.axis==="x"}function p(j){return j.props.axis==="both"||j.props.axis==="y"}function m(j,R,C){const L=typeof R=="number"?(0,c.getTouch)(j,R):null;if(typeof R=="number"&&!L)return null;const g=_(C),n=C.props.offsetParent||g.offsetParent||g.ownerDocument.body;return(0,c.offsetXYFromParent)(L||j,n,C.props.scale)}function w(j,R,C){const L=!(0,e.isNum)(j.lastX),g=_(j);return L?{node:g,deltaX:0,deltaY:0,lastX:R,lastY:C,x:R,y:C}:{node:g,deltaX:R-j.lastX,deltaY:C-j.lastY,lastX:j.lastX,lastY:j.lastY,x:R,y:C}}function S(j,R){const C=j.props.scale;return{node:R.node,x:j.state.x+R.deltaX/C,y:j.state.y+R.deltaY/C,deltaX:R.deltaX/C,deltaY:R.deltaY/C,lastX:j.state.x,lastY:j.state.y}}function P(j){return{left:j.left,top:j.top,right:j.right,bottom:j.bottom}}function _(j){const R=j.findDOMNode();if(!R)throw new Error("<DraggableCore>: Unmounted during event!");return R}return xe}var Ie={},Ze={},tr;function rr(){if(tr)return Ze;tr=1,Object.defineProperty(Ze,"__esModule",{value:!0}),Ze.default=e;function e(){}return Ze}var nr;function Gr(){if(nr)return Ie;nr=1,Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.default=void 0;var e=S(me),c=w(Se()),a=w(it),u=xt(),x=er(),p=Je(),m=w(rr());function w(g){return g&&g.__esModule?g:{default:g}}function S(g,n){if(typeof WeakMap=="function")var r=new WeakMap,t=new WeakMap;return(S=function(i,l){if(!l&&i&&i.__esModule)return i;var o,y,d={__proto__:null,default:i};if(i===null||typeof i!="object"&&typeof i!="function")return d;if(o=l?t:r){if(o.has(i))return o.get(i);o.set(i,d)}for(const f in i)f!=="default"&&{}.hasOwnProperty.call(i,f)&&((y=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(i,f))&&(y.get||y.set)?o(d,f,y):d[f]=i[f]);return d})(g,n)}function P(g,n,r){return(n=_(n))in g?Object.defineProperty(g,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):g[n]=r,g}function _(g){var n=j(g,"string");return typeof n=="symbol"?n:n+""}function j(g,n){if(typeof g!="object"||!g)return g;var r=g[Symbol.toPrimitive];if(r!==void 0){var t=r.call(g,n);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(g)}const R={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let C=R.mouse,L=class extends e.Component{constructor(){super(...arguments),P(this,"dragging",!1),P(this,"lastX",NaN),P(this,"lastY",NaN),P(this,"touchIdentifier",null),P(this,"mounted",!1),P(this,"handleDragStart",n=>{if(this.props.onMouseDown(n),!this.props.allowAnyClick&&typeof n.button=="number"&&n.button!==0)return!1;const r=this.findDOMNode();if(!r||!r.ownerDocument||!r.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:t}=r;if(this.props.disabled||!(n.target instanceof t.defaultView.Node)||this.props.handle&&!(0,u.matchesSelectorAndParentsTo)(n.target,this.props.handle,r)||this.props.cancel&&(0,u.matchesSelectorAndParentsTo)(n.target,this.props.cancel,r))return;n.type==="touchstart"&&!this.props.allowMobileScroll&&n.preventDefault();const i=(0,u.getTouchIdentifier)(n);this.touchIdentifier=i;const l=(0,x.getControlPosition)(n,i,this);if(l==null)return;const{x:o,y}=l,d=(0,x.createCoreData)(this,o,y);(0,m.default)("DraggableCore: handleDragStart: %j",d),(0,m.default)("calling",this.props.onStart),!(this.props.onStart(n,d)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,u.addUserSelectStyles)(t),this.dragging=!0,this.lastX=o,this.lastY=y,(0,u.addEvent)(t,C.move,this.handleDrag),(0,u.addEvent)(t,C.stop,this.handleDragStop))}),P(this,"handleDrag",n=>{const r=(0,x.getControlPosition)(n,this.touchIdentifier,this);if(r==null)return;let{x:t,y:i}=r;if(Array.isArray(this.props.grid)){let y=t-this.lastX,d=i-this.lastY;if([y,d]=(0,x.snapToGrid)(this.props.grid,y,d),!y&&!d)return;t=this.lastX+y,i=this.lastY+d}const l=(0,x.createCoreData)(this,t,i);if((0,m.default)("DraggableCore: handleDrag: %j",l),this.props.onDrag(n,l)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const d=document.createEvent("MouseEvents");d.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(d)}return}this.lastX=t,this.lastY=i}),P(this,"handleDragStop",n=>{if(!this.dragging)return;const r=(0,x.getControlPosition)(n,this.touchIdentifier,this);if(r==null)return;let{x:t,y:i}=r;if(Array.isArray(this.props.grid)){let d=t-this.lastX||0,f=i-this.lastY||0;[d,f]=(0,x.snapToGrid)(this.props.grid,d,f),t=this.lastX+d,i=this.lastY+f}const l=(0,x.createCoreData)(this,t,i);if(this.props.onStop(n,l)===!1||this.mounted===!1)return!1;const y=this.findDOMNode();y&&this.props.enableUserSelectHack&&(0,u.scheduleRemoveUserSelectStyles)(y.ownerDocument),(0,m.default)("DraggableCore: handleDragStop: %j",l),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,y&&((0,m.default)("DraggableCore: Removing handlers"),(0,u.removeEvent)(y.ownerDocument,C.move,this.handleDrag),(0,u.removeEvent)(y.ownerDocument,C.stop,this.handleDragStop))}),P(this,"onMouseDown",n=>(C=R.mouse,this.handleDragStart(n))),P(this,"onMouseUp",n=>(C=R.mouse,this.handleDragStop(n))),P(this,"onTouchStart",n=>(C=R.touch,this.handleDragStart(n))),P(this,"onTouchEnd",n=>(C=R.touch,this.handleDragStop(n)))}componentDidMount(){this.mounted=!0;const n=this.findDOMNode();n&&(0,u.addEvent)(n,R.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const n=this.findDOMNode();if(n){const{ownerDocument:r}=n;(0,u.removeEvent)(r,R.mouse.move,this.handleDrag),(0,u.removeEvent)(r,R.touch.move,this.handleDrag),(0,u.removeEvent)(r,R.mouse.stop,this.handleDragStop),(0,u.removeEvent)(r,R.touch.stop,this.handleDragStop),(0,u.removeEvent)(n,R.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,u.scheduleRemoveUserSelectStyles)(r)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:a.default.findDOMNode(this)}render(){return e.cloneElement(e.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return Ie.default=L,P(L,"displayName","DraggableCore"),P(L,"propTypes",{allowAnyClick:c.default.bool,allowMobileScroll:c.default.bool,children:c.default.node.isRequired,disabled:c.default.bool,enableUserSelectHack:c.default.bool,offsetParent:function(g,n){if(g[n]&&g[n].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:c.default.arrayOf(c.default.number),handle:c.default.string,cancel:c.default.string,nodeRef:c.default.object,onStart:c.default.func,onDrag:c.default.func,onStop:c.default.func,onMouseDown:c.default.func,scale:c.default.number,className:p.dontSetMe,style:p.dontSetMe,transform:p.dontSetMe}),P(L,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),Ie}var ar;function Yr(){return ar||(ar=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return S.default}}),e.default=void 0;var c=j(me),a=_(Se()),u=_(it),x=$e,p=xt(),m=er(),w=Je(),S=_(Gr()),P=_(rr());function _(r){return r&&r.__esModule?r:{default:r}}function j(r,t){if(typeof WeakMap=="function")var i=new WeakMap,l=new WeakMap;return(j=function(o,y){if(!y&&o&&o.__esModule)return o;var d,f,O={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return O;if(d=y?l:i){if(d.has(o))return d.get(o);d.set(o,O)}for(const z in o)z!=="default"&&{}.hasOwnProperty.call(o,z)&&((f=(d=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,z))&&(f.get||f.set)?d(O,z,f):O[z]=o[z]);return O})(r,t)}function R(){return R=Object.assign?Object.assign.bind():function(r){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var l in i)({}).hasOwnProperty.call(i,l)&&(r[l]=i[l])}return r},R.apply(null,arguments)}function C(r,t,i){return(t=L(t))in r?Object.defineProperty(r,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[t]=i,r}function L(r){var t=g(r,"string");return typeof t=="symbol"?t:t+""}function g(r,t){if(typeof r!="object"||!r)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var l=i.call(r,t);if(typeof l!="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(r)}class n extends c.Component{static getDerivedStateFromProps(t,i){let{position:l}=t,{prevPropsPosition:o}=i;return l&&(!o||l.x!==o.x||l.y!==o.y)?((0,P.default)("Draggable: getDerivedStateFromProps %j",{position:l,prevPropsPosition:o}),{x:l.x,y:l.y,prevPropsPosition:{...l}}):null}constructor(t){super(t),C(this,"onDragStart",(i,l)=>{if((0,P.default)("Draggable: onDragStart: %j",l),this.props.onStart(i,(0,m.createDraggableData)(this,l))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),C(this,"onDrag",(i,l)=>{if(!this.state.dragging)return!1;(0,P.default)("Draggable: onDrag: %j",l);const o=(0,m.createDraggableData)(this,l),y={x:o.x,y:o.y,slackX:0,slackY:0};if(this.props.bounds){const{x:f,y:O}=y;y.x+=this.state.slackX,y.y+=this.state.slackY;const[z,I]=(0,m.getBoundPosition)(this,y.x,y.y);y.x=z,y.y=I,y.slackX=this.state.slackX+(f-y.x),y.slackY=this.state.slackY+(O-y.y),o.x=y.x,o.y=y.y,o.deltaX=y.x-this.state.x,o.deltaY=y.y-this.state.y}if(this.props.onDrag(i,o)===!1)return!1;this.setState(y)}),C(this,"onDragStop",(i,l)=>{if(!this.state.dragging||this.props.onStop(i,(0,m.createDraggableData)(this,l))===!1)return!1;(0,P.default)("Draggable: onDragStop: %j",l);const y={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:f,y:O}=this.props.position;y.x=f,y.y=O}this.setState(y)}),this.state={dragging:!1,dragged:!1,x:t.position?t.position.x:t.defaultPosition.x,y:t.position?t.position.y:t.defaultPosition.y,prevPropsPosition:{...t.position},slackX:0,slackY:0,isElementSVG:!1},t.position&&!(t.onDrag||t.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??u.default.findDOMNode(this)}render(){const{axis:t,bounds:i,children:l,defaultPosition:o,defaultClassName:y,defaultClassNameDragging:d,defaultClassNameDragged:f,position:O,positionOffset:z,scale:I,...G}=this.props;let B={},V=null;const D=!!!O||this.state.dragging,N=O||o,K={x:(0,m.canDragX)(this)&&D?this.state.x:N.x,y:(0,m.canDragY)(this)&&D?this.state.y:N.y};this.state.isElementSVG?V=(0,p.createSVGTransform)(K,z):B=(0,p.createCSSTransform)(K,z);const ie=(0,x.clsx)(l.props.className||"",y,{[d]:this.state.dragging,[f]:this.state.dragged});return c.createElement(S.default,R({},G,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),c.cloneElement(c.Children.only(l),{className:ie,style:{...l.props.style,...B},transform:V}))}}e.default=n,C(n,"displayName","Draggable"),C(n,"propTypes",{...S.default.propTypes,axis:a.default.oneOf(["both","x","y","none"]),bounds:a.default.oneOfType([a.default.shape({left:a.default.number,right:a.default.number,top:a.default.number,bottom:a.default.number}),a.default.string,a.default.oneOf([!1])]),defaultClassName:a.default.string,defaultClassNameDragging:a.default.string,defaultClassNameDragged:a.default.string,defaultPosition:a.default.shape({x:a.default.number,y:a.default.number}),positionOffset:a.default.shape({x:a.default.oneOfType([a.default.number,a.default.string]),y:a.default.oneOfType([a.default.number,a.default.string])}),position:a.default.shape({x:a.default.number,y:a.default.number}),className:w.dontSetMe,style:w.dontSetMe,transform:w.dontSetMe}),C(n,"defaultProps",{...S.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(bt)),bt}var or;function wt(){if(or)return He.exports;or=1;const{default:e,DraggableCore:c}=Yr();return He.exports=e,He.exports.default=e,He.exports.DraggableCore=c,He.exports}var Be={exports:{}},Fe={},Qe={},ir;function Ur(){if(ir)return Qe;ir=1,Qe.__esModule=!0,Qe.cloneElement=w;var e=c(me);function c(S){return S&&S.__esModule?S:{default:S}}function a(S,P){var _=Object.keys(S);if(Object.getOwnPropertySymbols){var j=Object.getOwnPropertySymbols(S);P&&(j=j.filter(function(R){return Object.getOwnPropertyDescriptor(S,R).enumerable})),_.push.apply(_,j)}return _}function u(S){for(var P=1;P<arguments.length;P++){var _=arguments[P]!=null?arguments[P]:{};P%2?a(Object(_),!0).forEach(function(j){x(S,j,_[j])}):Object.getOwnPropertyDescriptors?Object.defineProperties(S,Object.getOwnPropertyDescriptors(_)):a(Object(_)).forEach(function(j){Object.defineProperty(S,j,Object.getOwnPropertyDescriptor(_,j))})}return S}function x(S,P,_){return(P=p(P))in S?Object.defineProperty(S,P,{value:_,enumerable:!0,configurable:!0,writable:!0}):S[P]=_,S}function p(S){var P=m(S,"string");return typeof P=="symbol"?P:P+""}function m(S,P){if(typeof S!="object"||!S)return S;var _=S[Symbol.toPrimitive];if(_!==void 0){var j=_.call(S,P);if(typeof j!="object")return j;throw new TypeError("@@toPrimitive must return a primitive value.")}return(P==="string"?String:Number)(S)}function w(S,P){return P.style&&S.props.style&&(P.style=u(u({},S.props.style),P.style)),P.className&&S.props.className&&(P.className=`${S.props.className} ${P.className}`),e.default.cloneElement(S,P)}return Qe}var Ge={},sr;function lr(){if(sr)return Ge;sr=1,Ge.__esModule=!0,Ge.resizableProps=void 0;var e=c(Se());wt();function c(a){return a&&a.__esModule?a:{default:a}}return Ge.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 a=arguments.length,u=new Array(a),x=0;x<a;x++)u[x]=arguments[x];const[p]=u;return p.axis==="both"||p.axis==="y"?e.default.number.isRequired(...u):e.default.number(...u)},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 a=arguments.length,u=new Array(a),x=0;x<a;x++)u[x]=arguments[x];const[p]=u;return p.axis==="both"||p.axis==="x"?e.default.number.isRequired(...u):e.default.number(...u)}},Ge}var ur;function cr(){if(ur)return Fe;ur=1,Fe.__esModule=!0,Fe.default=void 0;var e=p(me),c=wt(),a=Ur(),u=lr();const x=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function p(g,n){if(typeof WeakMap=="function")var r=new WeakMap,t=new WeakMap;return(p=function(i,l){if(!l&&i&&i.__esModule)return i;var o,y,d={__proto__:null,default:i};if(i===null||typeof i!="object"&&typeof i!="function")return d;if(o=l?t:r){if(o.has(i))return o.get(i);o.set(i,d)}for(const f in i)f!=="default"&&{}.hasOwnProperty.call(i,f)&&((y=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(i,f))&&(y.get||y.set)?o(d,f,y):d[f]=i[f]);return d})(g,n)}function m(){return m=Object.assign?Object.assign.bind():function(g){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(g[t]=r[t])}return g},m.apply(null,arguments)}function w(g,n){if(g==null)return{};var r,t,i=S(g,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(g);for(t=0;t<l.length;t++)r=l[t],n.indexOf(r)===-1&&{}.propertyIsEnumerable.call(g,r)&&(i[r]=g[r])}return i}function S(g,n){if(g==null)return{};var r={};for(var t in g)if({}.hasOwnProperty.call(g,t)){if(n.indexOf(t)!==-1)continue;r[t]=g[t]}return r}function P(g,n){var r=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);n&&(t=t.filter(function(i){return Object.getOwnPropertyDescriptor(g,i).enumerable})),r.push.apply(r,t)}return r}function _(g){for(var n=1;n<arguments.length;n++){var r=arguments[n]!=null?arguments[n]:{};n%2?P(Object(r),!0).forEach(function(t){j(g,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach(function(t){Object.defineProperty(g,t,Object.getOwnPropertyDescriptor(r,t))})}return g}function j(g,n,r){return(n=R(n))in g?Object.defineProperty(g,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):g[n]=r,g}function R(g){var n=C(g,"string");return typeof n=="symbol"?n:n+""}function C(g,n){if(typeof g!="object"||!g)return g;var r=g[Symbol.toPrimitive];if(r!==void 0){var t=r.call(g,n);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(g)}let L=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(n,r){const{minConstraints:t,maxConstraints:i,lockAspectRatio:l}=this.props;if(!t&&!i&&!l)return[n,r];if(l){const O=this.props.width/this.props.height,z=n-this.props.width,I=r-this.props.height;Math.abs(z)>Math.abs(I*O)?r=n/O:n=r*O}const[o,y]=[n,r];let[d,f]=this.slack||[0,0];return n+=d,r+=f,t&&(n=Math.max(t[0],n),r=Math.max(t[1],r)),i&&(n=Math.min(i[0],n),r=Math.min(i[1],r)),this.slack=[d+(o-n),f+(y-r)],[n,r]}resizeHandler(n,r){return(t,i)=>{let{node:l,deltaX:o,deltaY:y}=i;n==="onResizeStart"&&this.resetData();const d=(this.props.axis==="both"||this.props.axis==="x")&&r!=="n"&&r!=="s",f=(this.props.axis==="both"||this.props.axis==="y")&&r!=="e"&&r!=="w";if(!d&&!f)return;const O=r[0],z=r[r.length-1],I=l.getBoundingClientRect();if(this.lastHandleRect!=null){if(z==="w"){const N=I.left-this.lastHandleRect.left;o+=N}if(O==="n"){const N=I.top-this.lastHandleRect.top;y+=N}}this.lastHandleRect=I,z==="w"&&(o=-o),O==="n"&&(y=-y);let G=this.props.width+(d?o/this.props.transformScale:0),B=this.props.height+(f?y/this.props.transformScale:0);[G,B]=this.runConstraints(G,B),n==="onResizeStop"&&this.lastSize&&({width:G,height:B}=this.lastSize);const V=G!==this.props.width||B!==this.props.height;n!=="onResizeStop"&&(this.lastSize={width:G,height:B});const T=typeof this.props[n]=="function"?this.props[n]:null;T&&!(n==="onResize"&&!V)&&(t.persist?.(),T(t,{node:l,size:{width:G,height:B},handle:r})),n==="onResizeStop"&&this.resetData()}}renderResizeHandle(n,r){const{handle:t}=this.props;if(!t)return e.createElement("span",{className:`react-resizable-handle react-resizable-handle-${n}`,ref:r});if(typeof t=="function")return t(n,r);const i=typeof t.type=="string",l=_({ref:r},i?{}:{handleAxis:n});return e.cloneElement(t,l)}render(){const n=this.props,{children:r,className:t,draggableOpts:i,width:l,height:o,handle:y,handleSize:d,lockAspectRatio:f,axis:O,minConstraints:z,maxConstraints:I,onResize:G,onResizeStop:B,onResizeStart:V,resizeHandles:T,transformScale:D}=n,N=w(n,x);return(0,a.cloneElement)(r,_(_({},N),{},{className:`${t?`${t} `:""}react-resizable`,children:[...e.Children.toArray(r.props.children),...T.map(K=>{const ie=this.handleRefs[K]??(this.handleRefs[K]=e.createRef());return e.createElement(c.DraggableCore,m({},i,{nodeRef:ie,key:`resizableHandle-${K}`,onStop:this.resizeHandler("onResizeStop",K),onStart:this.resizeHandler("onResizeStart",K),onDrag:this.resizeHandler("onResize",K)}),this.renderResizeHandle(K,ie))})]}))}};return Fe.default=L,L.propTypes=u.resizableProps,L.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},Fe}var Ye={},dr;function $r(){if(dr)return Ye;dr=1,Ye.__esModule=!0,Ye.default=void 0;var e=m(me),c=p(Se()),a=p(cr()),u=lr();const x=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function p(n){return n&&n.__esModule?n:{default:n}}function m(n,r){if(typeof WeakMap=="function")var t=new WeakMap,i=new WeakMap;return(m=function(l,o){if(!o&&l&&l.__esModule)return l;var y,d,f={__proto__:null,default:l};if(l===null||typeof l!="object"&&typeof l!="function")return f;if(y=o?i:t){if(y.has(l))return y.get(l);y.set(l,f)}for(const O in l)O!=="default"&&{}.hasOwnProperty.call(l,O)&&((d=(y=Object.defineProperty)&&Object.getOwnPropertyDescriptor(l,O))&&(d.get||d.set)?y(f,O,d):f[O]=l[O]);return f})(n,r)}function w(){return w=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var i in t)({}).hasOwnProperty.call(t,i)&&(n[i]=t[i])}return n},w.apply(null,arguments)}function S(n,r){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);r&&(i=i.filter(function(l){return Object.getOwnPropertyDescriptor(n,l).enumerable})),t.push.apply(t,i)}return t}function P(n){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?S(Object(t),!0).forEach(function(i){_(n,i,t[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):S(Object(t)).forEach(function(i){Object.defineProperty(n,i,Object.getOwnPropertyDescriptor(t,i))})}return n}function _(n,r,t){return(r=j(r))in n?Object.defineProperty(n,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[r]=t,n}function j(n){var r=R(n,"string");return typeof r=="symbol"?r:r+""}function R(n,r){if(typeof n!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var i=t.call(n,r);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(n)}function C(n,r){if(n==null)return{};var t,i,l=L(n,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);for(i=0;i<o.length;i++)t=o[i],r.indexOf(t)===-1&&{}.propertyIsEnumerable.call(n,t)&&(l[t]=n[t])}return l}function L(n,r){if(n==null)return{};var t={};for(var i in n)if({}.hasOwnProperty.call(n,i)){if(r.indexOf(i)!==-1)continue;t[i]=n[i]}return t}let g=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=(r,t)=>{const{size:i}=t;this.props.onResize?(r.persist?.(),this.setState(i,()=>this.props.onResize&&this.props.onResize(r,t))):this.setState(i)}}static getDerivedStateFromProps(r,t){return t.propsWidth!==r.width||t.propsHeight!==r.height?{width:r.width,height:r.height,propsWidth:r.width,propsHeight:r.height}:null}render(){const r=this.props,{handle:t,handleSize:i,onResize:l,onResizeStart:o,onResizeStop:y,draggableOpts:d,minConstraints:f,maxConstraints:O,lockAspectRatio:z,axis:I,width:G,height:B,resizeHandles:V,style:T,transformScale:D}=r,N=C(r,x);return e.createElement(a.default,{axis:I,draggableOpts:d,handle:t,handleSize:i,height:this.state.height,lockAspectRatio:z,maxConstraints:O,minConstraints:f,onResizeStart:o,onResize:this.onResize,onResizeStop:y,resizeHandles:V,transformScale:D,width:this.state.width},e.createElement("div",w({},N,{style:P(P({},T),{},{width:this.state.width+"px",height:this.state.height+"px"})})))}};return Ye.default=g,g.propTypes=P(P({},u.resizableProps),{},{children:c.default.element}),Ye}var fr;function Vr(){return fr||(fr=1,Be.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},Be.exports.Resizable=cr().default,Be.exports.ResizableBox=$r().default),Be.exports}var je={},pr;function hr(){if(pr)return je;pr=1,Object.defineProperty(je,"__esModule",{value:!0}),je.resizeHandleType=je.resizeHandleAxesType=je.default=void 0;var e=a(Se()),c=a(me);function a(p){return p&&p.__esModule?p:{default:p}}const u=je.resizeHandleAxesType=e.default.arrayOf(e.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),x=je.resizeHandleType=e.default.oneOfType([e.default.node,e.default.func]);return je.default={className:e.default.string,style:e.default.object,width:e.default.number,autoSize:e.default.bool,cols:e.default.number,draggableCancel:e.default.string,draggableHandle:e.default.string,verticalCompact:function(p){p.verticalCompact===!1&&process.env.NODE_ENV!=="production"&&console.warn('`verticalCompact` on <ReactGridLayout> is deprecated and will be removed soon. Use `compactType`: "horizontal" | "vertical" | null.')},compactType:e.default.oneOf(["vertical","horizontal"]),layout:function(p){var m=p.layout;m!==void 0&&Ne().validateLayout(m,"layout")},margin:e.default.arrayOf(e.default.number),containerPadding:e.default.arrayOf(e.default.number),rowHeight:e.default.number,maxRows:e.default.number,isBounded:e.default.bool,isDraggable:e.default.bool,isResizable:e.default.bool,allowOverlap:e.default.bool,preventCollision:e.default.bool,useCSSTransforms:e.default.bool,transformScale:e.default.number,isDroppable:e.default.bool,resizeHandles:u,resizeHandle:x,onLayoutChange:e.default.func,onDragStart:e.default.func,onDrag:e.default.func,onDragStop:e.default.func,onResizeStart:e.default.func,onResize:e.default.func,onResizeStop:e.default.func,onDrop:e.default.func,droppingItem:e.default.shape({i:e.default.string.isRequired,w:e.default.number.isRequired,h:e.default.number.isRequired}),children:function(p,m){const w=p[m],S={};c.default.Children.forEach(w,function(P){if(P?.key!=null){if(S[P.key])throw new Error('Duplicate child key "'+P.key+'" found! This will cause problems in ReactGridLayout.');S[P.key]=!0}})},innerRef:e.default.any},je}var mr;function Xr(){if(mr)return We;mr=1,Object.defineProperty(We,"__esModule",{value:!0}),We.default=void 0;var e=P(me),c=it,a=P(Se()),u=wt(),x=Vr(),p=Ne(),m=dt(),w=hr(),S=P($e);function P(n){return n&&n.__esModule?n:{default:n}}function _(n,r){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);r&&(i=i.filter(function(l){return Object.getOwnPropertyDescriptor(n,l).enumerable})),t.push.apply(t,i)}return t}function j(n){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?_(Object(t),!0).forEach(function(i){R(n,i,t[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):_(Object(t)).forEach(function(i){Object.defineProperty(n,i,Object.getOwnPropertyDescriptor(t,i))})}return n}function R(n,r,t){return(r=C(r))in n?Object.defineProperty(n,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[r]=t,n}function C(n){var r=L(n,"string");return typeof r=="symbol"?r:r+""}function L(n,r){if(typeof n!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var i=t.call(n,r);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(n)}let g=class extends e.default.Component{constructor(){super(...arguments),R(this,"state",{resizing:null,dragging:null,className:""}),R(this,"elementRef",e.default.createRef()),R(this,"onDragStart",(r,t)=>{let{node:i}=t;const{onDragStart:l,transformScale:o}=this.props;if(!l)return;const y={top:0,left:0},{offsetParent:d}=i;if(!d)return;const f=d.getBoundingClientRect(),O=i.getBoundingClientRect(),z=O.left/o,I=f.left/o,G=O.top/o,B=f.top/o;y.left=z-I+d.scrollLeft,y.top=G-B+d.scrollTop,this.setState({dragging:y});const{x:V,y:T}=(0,m.calcXY)(this.getPositionParams(),y.top,y.left,this.props.w,this.props.h);return l.call(this,this.props.i,V,T,{e:r,node:i,newPosition:y})}),R(this,"onDrag",(r,t,i)=>{let{node:l,deltaX:o,deltaY:y}=t;const{onDrag:d}=this.props;if(!d)return;if(!this.state.dragging)throw new Error("onDrag called before onDragStart.");let f=this.state.dragging.top+y,O=this.state.dragging.left+o;const{isBounded:z,i:I,w:G,h:B,containerWidth:V}=this.props,T=this.getPositionParams();if(z){const{offsetParent:ie}=l;if(ie){const{margin:M,rowHeight:b}=this.props,k=ie.clientHeight-(0,m.calcGridItemWHPx)(B,b,M[1]);f=(0,m.clamp)(f,0,k);const Y=(0,m.calcGridColWidth)(T),U=V-(0,m.calcGridItemWHPx)(G,Y,M[0]);O=(0,m.clamp)(O,0,U)}}const D={top:f,left:O};i?this.setState({dragging:D}):(0,c.flushSync)(()=>{this.setState({dragging:D})});const{x:N,y:K}=(0,m.calcXY)(T,f,O,G,B);return d.call(this,I,N,K,{e:r,node:l,newPosition:D})}),R(this,"onDragStop",(r,t)=>{let{node:i}=t;const{onDragStop:l}=this.props;if(!l)return;if(!this.state.dragging)throw new Error("onDragEnd called before onDragStart.");const{w:o,h:y,i:d}=this.props,{left:f,top:O}=this.state.dragging,z={top:O,left:f};this.setState({dragging:null});const{x:I,y:G}=(0,m.calcXY)(this.getPositionParams(),O,f,o,y);return l.call(this,d,I,G,{e:r,node:i,newPosition:z})}),R(this,"onResizeStop",(r,t,i)=>this.onResizeHandler(r,t,i,"onResizeStop")),R(this,"onResizeStart",(r,t,i)=>this.onResizeHandler(r,t,i,"onResizeStart")),R(this,"onResize",(r,t,i)=>this.onResizeHandler(r,t,i,"onResize"))}shouldComponentUpdate(r,t){if(this.props.children!==r.children||this.props.droppingPosition!==r.droppingPosition)return!0;const i=(0,m.calcGridItemPosition)(this.getPositionParams(this.props),this.props.x,this.props.y,this.props.w,this.props.h,this.state),l=(0,m.calcGridItemPosition)(this.getPositionParams(r),r.x,r.y,r.w,r.h,t);return!(0,p.fastPositionEqual)(i,l)||this.props.useCSSTransforms!==r.useCSSTransforms}componentDidMount(){this.moveDroppingItem({})}componentDidUpdate(r){this.moveDroppingItem(r)}moveDroppingItem(r){const{droppingPosition:t}=this.props;if(!t)return;const i=this.elementRef.current;if(!i)return;const l=r.droppingPosition||{left:0,top:0},{dragging:o}=this.state,y=o&&t.left!==l.left||t.top!==l.top;if(!o)this.onDragStart(t.e,{node:i,deltaX:t.left,deltaY:t.top});else if(y){const d=t.left-o.left,f=t.top-o.top;this.onDrag(t.e,{node:i,deltaX:d,deltaY:f},!0)}}getPositionParams(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.props;return{cols:r.cols,containerPadding:r.containerPadding,containerWidth:r.containerWidth,margin:r.margin,maxRows:r.maxRows,rowHeight:r.rowHeight}}createStyle(r){const{usePercentages:t,containerWidth:i,useCSSTransforms:l}=this.props;let o;return l?o=(0,p.setTransform)(r):(o=(0,p.setTopLeft)(r),t&&(o.left=(0,p.perc)(r.left/i),o.width=(0,p.perc)(r.width/i))),o}mixinDraggable(r,t){return e.default.createElement(u.DraggableCore,{disabled:!t,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale,nodeRef:this.elementRef},r)}curryResizeHandler(r,t){return(i,l)=>t(i,l,r)}mixinResizable(r,t,i){const{cols:l,minW:o,minH:y,maxW:d,maxH:f,transformScale:O,resizeHandles:z,resizeHandle:I}=this.props,G=this.getPositionParams(),B=(0,m.calcGridItemPosition)(G,0,0,l,0).width,V=(0,m.calcGridItemPosition)(G,0,0,o,y),T=(0,m.calcGridItemPosition)(G,0,0,d,f),D=[V.width,V.height],N=[Math.min(T.width,B),Math.min(T.height,1/0)];return e.default.createElement(x.Resizable,{draggableOpts:{disabled:!i},className:i?void 0:"react-resizable-hide",width:t.width,height:t.height,minConstraints:D,maxConstraints:N,onResizeStop:this.curryResizeHandler(t,this.onResizeStop),onResizeStart:this.curryResizeHandler(t,this.onResizeStart),onResize:this.curryResizeHandler(t,this.onResize),transformScale:O,resizeHandles:z,handle:I},r)}onResizeHandler(r,t,i,l){let{node:o,size:y,handle:d}=t;const f=this.props[l];if(!f)return;const{x:O,y:z,i:I,maxH:G,minH:B,containerWidth:V}=this.props,{minW:T,maxW:D}=this.props;let N=y;o&&(N=(0,p.resizeItemInDirection)(d,i,y,V),(0,c.flushSync)(()=>{this.setState({resizing:l==="onResizeStop"?null:N})}));let{w:K,h:ie}=(0,m.calcWH)(this.getPositionParams(),N.width,N.height,O,z,d);K=(0,m.clamp)(K,Math.max(T,1),D),ie=(0,m.clamp)(ie,B,G),f.call(this,I,K,ie,{e:r,node:o,size:N,handle:d})}render(){const{x:r,y:t,w:i,h:l,isDraggable:o,isResizable:y,droppingPosition:d,useCSSTransforms:f}=this.props,O=(0,m.calcGridItemPosition)(this.getPositionParams(),r,t,i,l,this.state),z=e.default.Children.only(this.props.children);let I=e.default.cloneElement(z,{ref:this.elementRef,className:(0,S.default)("react-grid-item",z.props.className,this.props.className,{static:this.props.static,resizing:!!this.state.resizing,"react-draggable":o,"react-draggable-dragging":!!this.state.dragging,dropping:!!d,cssTransforms:f}),style:j(j(j({},this.props.style),z.props.style),this.createStyle(O))});return I=this.mixinResizable(I,O,y),I=this.mixinDraggable(I,o),I}};return We.default=g,R(g,"propTypes",{children:a.default.element,cols:a.default.number.isRequired,containerWidth:a.default.number.isRequired,rowHeight:a.default.number.isRequired,margin:a.default.array.isRequired,maxRows:a.default.number.isRequired,containerPadding:a.default.array.isRequired,x:a.default.number.isRequired,y:a.default.number.isRequired,w:a.default.number.isRequired,h:a.default.number.isRequired,minW:function(n,r){const t=n[r];if(typeof t!="number")return new Error("minWidth not Number");if(t>n.w||t>n.maxW)return new Error("minWidth larger than item width/maxWidth")},maxW:function(n,r){const t=n[r];if(typeof t!="number")return new Error("maxWidth not Number");if(t<n.w||t<n.minW)return new Error("maxWidth smaller than item width/minWidth")},minH:function(n,r){const t=n[r];if(typeof t!="number")return new Error("minHeight not Number");if(t>n.h||t>n.maxH)return new Error("minHeight larger than item height/maxHeight")},maxH:function(n,r){const t=n[r];if(typeof t!="number")return new Error("maxHeight not Number");if(t<n.h||t<n.minH)return new Error("maxHeight smaller than item height/minHeight")},i:a.default.string.isRequired,resizeHandles:w.resizeHandleAxesType,resizeHandle:w.resizeHandleType,onDragStop:a.default.func,onDragStart:a.default.func,onDrag:a.default.func,onResizeStop:a.default.func,onResizeStart:a.default.func,onResize:a.default.func,isDraggable:a.default.bool.isRequired,isResizable:a.default.bool.isRequired,isBounded:a.default.bool.isRequired,static:a.default.bool,useCSSTransforms:a.default.bool.isRequired,transformScale:a.default.number,className:a.default.string,handle:a.default.string,cancel:a.default.string,droppingPosition:a.default.shape({e:a.default.object.isRequired,left:a.default.number.isRequired,top:a.default.number.isRequired})}),R(g,"defaultProps",{className:"",cancel:"",handle:"",minH:1,minW:1,maxH:1/0,maxW:1/0,transformScale:1}),We}var gr;function yr(){if(gr)return Le;gr=1,Object.defineProperty(Le,"__esModule",{value:!0}),Le.default=void 0;var e=S(me),c=ut(),a=w($e),u=Ne(),x=dt(),p=w(Xr()),m=w(hr());function w(r){return r&&r.__esModule?r:{default:r}}function S(r,t){if(typeof WeakMap=="function")var i=new WeakMap,l=new WeakMap;return(S=function(o,y){if(!y&&o&&o.__esModule)return o;var d,f,O={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return O;if(d=y?l:i){if(d.has(o))return d.get(o);d.set(o,O)}for(const z in o)z!=="default"&&{}.hasOwnProperty.call(o,z)&&((f=(d=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,z))&&(f.get||f.set)?d(O,z,f):O[z]=o[z]);return O})(r,t)}function P(r,t){var i=Object.keys(r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(r);t&&(l=l.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),i.push.apply(i,l)}return i}function _(r){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?P(Object(i),!0).forEach(function(l){j(r,l,i[l])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):P(Object(i)).forEach(function(l){Object.defineProperty(r,l,Object.getOwnPropertyDescriptor(i,l))})}return r}function j(r,t,i){return(t=R(t))in r?Object.defineProperty(r,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[t]=i,r}function R(r){var t=C(r,"string");return typeof t=="symbol"?t:t+""}function C(r,t){if(typeof r!="object"||!r)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var l=i.call(r,t);if(typeof l!="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(r)}const L="react-grid-layout";let g=!1;try{g=/firefox/i.test(navigator.userAgent)}catch{}let n=class extends e.Component{constructor(){super(...arguments),j(this,"state",{activeDrag:null,layout:(0,u.synchronizeLayoutWithChildren)(this.props.layout,this.props.children,this.props.cols,(0,u.compactType)(this.props),this.props.allowOverlap),mounted:!1,oldDragItem:null,oldLayout:null,oldResizeItem:null,resizing:!1,droppingDOMNode:null,children:[]}),j(this,"dragEnterCounter",0),j(this,"onDragStart",(t,i,l,o)=>{let{e:y,node:d}=o;const{layout:f}=this.state,O=(0,u.getLayoutItem)(f,t);if(!O)return;const z={w:O.w,h:O.h,x:O.x,y:O.y,placeholder:!0,i:t};return this.setState({oldDragItem:(0,u.cloneLayoutItem)(O),oldLayout:f,activeDrag:z}),this.props.onDragStart(f,O,O,null,y,d)}),j(this,"onDrag",(t,i,l,o)=>{let{e:y,node:d}=o;const{oldDragItem:f}=this.state;let{layout:O}=this.state;const{cols:z,allowOverlap:I,preventCollision:G}=this.props,B=(0,u.getLayoutItem)(O,t);if(!B)return;const V={w:B.w,h:B.h,x:B.x,y:B.y,placeholder:!0,i:t};O=(0,u.moveElement)(O,B,i,l,!0,G,(0,u.compactType)(this.props),z,I),this.props.onDrag(O,f,B,V,y,d),this.setState({layout:I?O:(0,u.compact)(O,(0,u.compactType)(this.props),z),activeDrag:V})}),j(this,"onDragStop",(t,i,l,o)=>{let{e:y,node:d}=o;if(!this.state.activeDrag)return;const{oldDragItem:f}=this.state;let{layout:O}=this.state;const{cols:z,preventCollision:I,allowOverlap:G}=this.props,B=(0,u.getLayoutItem)(O,t);if(!B)return;O=(0,u.moveElement)(O,B,i,l,!0,I,(0,u.compactType)(this.props),z,G);const T=G?O:(0,u.compact)(O,(0,u.compactType)(this.props),z);this.props.onDragStop(T,f,B,null,y,d);const{oldLayout:D}=this.state;this.setState({activeDrag:null,layout:T,oldDragItem:null,oldLayout:null}),this.onLayoutMaybeChanged(T,D)}),j(this,"onResizeStart",(t,i,l,o)=>{let{e:y,node:d}=o;const{layout:f}=this.state,O=(0,u.getLayoutItem)(f,t);O&&(this.setState({oldResizeItem:(0,u.cloneLayoutItem)(O),oldLayout:this.state.layout,resizing:!0}),this.props.onResizeStart(f,O,O,null,y,d))}),j(this,"onResize",(t,i,l,o)=>{let{e:y,node:d,size:f,handle:O}=o;const{oldResizeItem:z}=this.state,{layout:I}=this.state,{cols:G,preventCollision:B,allowOverlap:V}=this.props;let T=!1,D,N,K;const[ie,M]=(0,u.withLayoutItem)(I,t,k=>{let Y;return N=k.x,K=k.y,["sw","w","nw","n","ne"].indexOf(O)!==-1&&(["sw","nw","w"].indexOf(O)!==-1&&(N=k.x+(k.w-i),i=k.x!==N&&N<0?k.w:i,N=N<0?0:N),["ne","n","nw"].indexOf(O)!==-1&&(K=k.y+(k.h-l),l=k.y!==K&&K<0?k.h:l,K=K<0?0:K),T=!0),B&&!V&&(Y=(0,u.getAllCollisions)(I,_(_({},k),{},{w:i,h:l,x:N,y:K})).filter(te=>te.i!==k.i).length>0,Y&&(K=k.y,l=k.h,N=k.x,i=k.w,T=!1)),k.w=i,k.h=l,k});if(!M)return;D=ie,T&&(D=(0,u.moveElement)(ie,M,N,K,!0,this.props.preventCollision,(0,u.compactType)(this.props),G,V));const b={w:M.w,h:M.h,x:M.x,y:M.y,static:!0,i:t};this.props.onResize(D,z,M,b,y,d),this.setState({layout:V?D:(0,u.compact)(D,(0,u.compactType)(this.props),G),activeDrag:b})}),j(this,"onResizeStop",(t,i,l,o)=>{let{e:y,node:d}=o;const{layout:f,oldResizeItem:O}=this.state,{cols:z,allowOverlap:I}=this.props,G=(0,u.getLayoutItem)(f,t),B=I?f:(0,u.compact)(f,(0,u.compactType)(this.props),z);this.props.onResizeStop(B,O,G,null,y,d);const{oldLayout:V}=this.state;this.setState({activeDrag:null,layout:B,oldResizeItem:null,oldLayout:null,resizing:!1}),this.onLayoutMaybeChanged(B,V)}),j(this,"onDragOver",t=>{var i;if(t.preventDefault(),t.stopPropagation(),g&&!((i=t.nativeEvent.target)!==null&&i!==void 0&&i.classList.contains(L)))return!1;const{droppingItem:l,onDropDragOver:o,margin:y,cols:d,rowHeight:f,maxRows:O,width:z,containerPadding:I,transformScale:G}=this.props,B=o?.(t);if(B===!1)return this.state.droppingDOMNode&&this.removeDroppingPlaceholder(),!1;const V=_(_({},l),B),{layout:T}=this.state,D=t.currentTarget.getBoundingClientRect(),N=t.clientX-D.left,K=t.clientY-D.top,ie={left:N/G,top:K/G,e:t};if(this.state.droppingDOMNode){if(this.state.droppingPosition){const{left:M,top:b}=this.state.droppingPosition;(M!=N||b!=K)&&this.setState({droppingPosition:ie})}}else{const M={cols:d,margin:y,maxRows:O,rowHeight:f,containerWidth:z,containerPadding:I||y},b=(0,x.calcXY)(M,K,N,V.w,V.h);this.setState({droppingDOMNode:e.createElement("div",{key:V.i}),droppingPosition:ie,layout:[...T,_(_({},V),{},{x:b.x,y:b.y,static:!1,isDraggable:!0})]})}}),j(this,"removeDroppingPlaceholder",()=>{const{droppingItem:t,cols:i}=this.props,{layout:l}=this.state,o=(0,u.compact)(l.filter(y=>y.i!==t.i),(0,u.compactType)(this.props),i,this.props.allowOverlap);this.setState({layout:o,droppingDOMNode:null,activeDrag:null,droppingPosition:void 0})}),j(this,"onDragLeave",t=>{t.preventDefault(),t.stopPropagation(),this.dragEnterCounter--,this.dragEnterCounter===0&&this.removeDroppingPlaceholder()}),j(this,"onDragEnter",t=>{t.preventDefault(),t.stopPropagation(),this.dragEnterCounter++}),j(this,"onDrop",t=>{t.preventDefault(),t.stopPropagation();const{droppingItem:i}=this.props,{layout:l}=this.state,o=l.find(y=>y.i===i.i);this.dragEnterCounter=0,this.removeDroppingPlaceholder(),this.props.onDrop(l,o,t)})}componentDidMount(){this.setState({mounted:!0}),this.onLayoutMaybeChanged(this.state.layout,this.props.layout)}static getDerivedStateFromProps(t,i){let l;return i.activeDrag?null:(!(0,c.deepEqual)(t.layout,i.propsLayout)||t.compactType!==i.compactType?l=t.layout:(0,u.childrenEqual)(t.children,i.children)||(l=i.layout),l?{layout:(0,u.synchronizeLayoutWithChildren)(l,t.children,t.cols,(0,u.compactType)(t),t.allowOverlap),compactType:t.compactType,children:t.children,propsLayout:t.layout}:null)}shouldComponentUpdate(t,i){return this.props.children!==t.children||!(0,u.fastRGLPropsEqual)(this.props,t,c.deepEqual)||this.state.activeDrag!==i.activeDrag||this.state.mounted!==i.mounted||this.state.droppingPosition!==i.droppingPosition}componentDidUpdate(t,i){if(!this.state.activeDrag){const l=this.state.layout,o=i.layout;this.onLayoutMaybeChanged(l,o)}}containerHeight(){if(!this.props.autoSize)return;const t=(0,u.bottom)(this.state.layout),i=this.props.containerPadding?this.props.containerPadding[1]:this.props.margin[1];return t*this.props.rowHeight+(t-1)*this.props.margin[1]+i*2+"px"}onLayoutMaybeChanged(t,i){i||(i=this.state.layout),(0,c.deepEqual)(i,t)||this.props.onLayoutChange(t)}placeholder(){const{activeDrag:t}=this.state;if(!t)return null;const{width:i,cols:l,margin:o,containerPadding:y,rowHeight:d,maxRows:f,useCSSTransforms:O,transformScale:z}=this.props;return e.createElement(p.default,{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,className:"react-grid-placeholder ".concat(this.state.resizing?"placeholder-resizing":""),containerWidth:i,cols:l,margin:o,containerPadding:y||o,maxRows:f,rowHeight:d,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:O,transformScale:z},e.createElement("div",null))}processGridItem(t,i){if(!t||!t.key)return;const l=(0,u.getLayoutItem)(this.state.layout,String(t.key));if(!l)return null;const{width:o,cols:y,margin:d,containerPadding:f,rowHeight:O,maxRows:z,isDraggable:I,isResizable:G,isBounded:B,useCSSTransforms:V,transformScale:T,draggableCancel:D,draggableHandle:N,resizeHandles:K,resizeHandle:ie}=this.props,{mounted:M,droppingPosition:b}=this.state,k=typeof l.isDraggable=="boolean"?l.isDraggable:!l.static&&I,Y=typeof l.isResizable=="boolean"?l.isResizable:!l.static&&G,U=l.resizeHandles||K,te=k&&B&&l.isBounded!==!1;return e.createElement(p.default,{containerWidth:o,cols:y,margin:d,containerPadding:f||d,maxRows:z,rowHeight:O,cancel:D,handle:N,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:k,isResizable:Y,isBounded:te,useCSSTransforms:V&&M,usePercentages:!M,transformScale:T,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?b:void 0,resizeHandles:U,resizeHandle:ie},t)}render(){const{className:t,style:i,isDroppable:l,innerRef:o}=this.props,y=(0,a.default)(L,t),d=_({height:this.containerHeight()},i);return e.createElement("div",{ref:o,className:y,style:d,onDrop:l?this.onDrop:u.noop,onDragLeave:l?this.onDragLeave:u.noop,onDragEnter:l?this.onDragEnter:u.noop,onDragOver:l?this.onDragOver:u.noop},e.Children.map(this.props.children,f=>this.processGridItem(f)),l&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}};return Le.default=n,j(n,"displayName","ReactGridLayout"),j(n,"propTypes",m.default),j(n,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isBounded:!1,isDraggable:!0,isResizable:!0,allowOverlap:!1,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},resizeHandles:["se"],onLayoutChange:u.noop,onDragStart:u.noop,onDrag:u.noop,onDragStop:u.noop,onResizeStart:u.noop,onResize:u.noop,onResizeStop:u.noop,onDrop:u.noop,onDropDragOver:u.noop}),Le}var Ue={},Ee={},vr;function br(){if(vr)return Ee;vr=1,Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.findOrGenerateResponsiveLayout=u,Ee.getBreakpointFromWidth=c,Ee.getColsFromBreakpoint=a,Ee.sortBreakpoints=x;var e=Ne();function c(p,m){const w=x(p);let S=w[0];for(let P=1,_=w.length;P<_;P++){const j=w[P];m>p[j]&&(S=j)}return S}function a(p,m){if(!m[p])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+p+" is missing!");return m[p]}function u(p,m,w,S,P,_){if(p[w])return(0,e.cloneLayout)(p[w]);let j=p[S];const R=x(m),C=R.slice(R.indexOf(w));for(let L=0,g=C.length;L<g;L++){const n=C[L];if(p[n]){j=p[n];break}}return j=(0,e.cloneLayout)(j||[]),(0,e.compact)((0,e.correctBounds)(j,{cols:P}),_,P)}function x(p){return Object.keys(p).sort(function(w,S){return p[w]-p[S]})}return Ee}var xr;function Kr(){if(xr)return Ue;xr=1,Object.defineProperty(Ue,"__esModule",{value:!0}),Ue.default=void 0;var e=S(me),c=w(Se()),a=ut(),u=Ne(),x=br(),p=w(yr());const m=["breakpoint","breakpoints","cols","layouts","margin","containerPadding","onBreakpointChange","onLayoutChange","onWidthChange"];function w(l){return l&&l.__esModule?l:{default:l}}function S(l,o){if(typeof WeakMap=="function")var y=new WeakMap,d=new WeakMap;return(S=function(f,O){if(!O&&f&&f.__esModule)return f;var z,I,G={__proto__:null,default:f};if(f===null||typeof f!="object"&&typeof f!="function")return G;if(z=O?d:y){if(z.has(f))return z.get(f);z.set(f,G)}for(const B in f)B!=="default"&&{}.hasOwnProperty.call(f,B)&&((I=(z=Object.defineProperty)&&Object.getOwnPropertyDescriptor(f,B))&&(I.get||I.set)?z(G,B,I):G[B]=f[B]);return G})(l,o)}function P(){return P=Object.assign?Object.assign.bind():function(l){for(var o=1;o<arguments.length;o++){var y=arguments[o];for(var d in y)({}).hasOwnProperty.call(y,d)&&(l[d]=y[d])}return l},P.apply(null,arguments)}function _(l,o){if(l==null)return{};var y,d,f=j(l,o);if(Object.getOwnPropertySymbols){var O=Object.getOwnPropertySymbols(l);for(d=0;d<O.length;d++)y=O[d],o.indexOf(y)===-1&&{}.propertyIsEnumerable.call(l,y)&&(f[y]=l[y])}return f}function j(l,o){if(l==null)return{};var y={};for(var d in l)if({}.hasOwnProperty.call(l,d)){if(o.indexOf(d)!==-1)continue;y[d]=l[d]}return y}function R(l,o){var y=Object.keys(l);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(l);o&&(d=d.filter(function(f){return Object.getOwnPropertyDescriptor(l,f).enumerable})),y.push.apply(y,d)}return y}function C(l){for(var o=1;o<arguments.length;o++){var y=arguments[o]!=null?arguments[o]:{};o%2?R(Object(y),!0).forEach(function(d){L(l,d,y[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(y)):R(Object(y)).forEach(function(d){Object.defineProperty(l,d,Object.getOwnPropertyDescriptor(y,d))})}return l}function L(l,o,y){return(o=g(o))in l?Object.defineProperty(l,o,{value:y,enumerable:!0,configurable:!0,writable:!0}):l[o]=y,l}function g(l){var o=n(l,"string");return typeof o=="symbol"?o:o+""}function n(l,o){if(typeof l!="object"||!l)return l;var y=l[Symbol.toPrimitive];if(y!==void 0){var d=y.call(l,o);if(typeof d!="object")return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(l)}const r=l=>Object.prototype.toString.call(l);function t(l,o){return l==null?null:Array.isArray(l)?l:l[o]}let i=class extends e.Component{constructor(){super(...arguments),L(this,"state",this.generateInitialState()),L(this,"onLayoutChange",o=>{this.props.onLayoutChange(o,C(C({},this.props.layouts),{},{[this.state.breakpoint]:o}))})}generateInitialState(){const{width:o,breakpoints:y,layouts:d,cols:f}=this.props,O=(0,x.getBreakpointFromWidth)(y,o),z=(0,x.getColsFromBreakpoint)(O,f),I=this.props.verticalCompact===!1?null:this.props.compactType;return{layout:(0,x.findOrGenerateResponsiveLayout)(d,y,O,O,z,I),breakpoint:O,cols:z}}static getDerivedStateFromProps(o,y){if(!(0,a.deepEqual)(o.layouts,y.layouts)){const{breakpoint:d,cols:f}=y;return{layout:(0,x.findOrGenerateResponsiveLayout)(o.layouts,o.breakpoints,d,d,f,o.compactType),layouts:o.layouts}}return null}componentDidUpdate(o){(this.props.width!=o.width||this.props.breakpoint!==o.breakpoint||!(0,a.deepEqual)(this.props.breakpoints,o.breakpoints)||!(0,a.deepEqual)(this.props.cols,o.cols))&&this.onWidthChange(o)}onWidthChange(o){const{breakpoints:y,cols:d,layouts:f,compactType:O}=this.props,z=this.props.breakpoint||(0,x.getBreakpointFromWidth)(this.props.breakpoints,this.props.width),I=this.state.breakpoint,G=(0,x.getColsFromBreakpoint)(z,d),B=C({},f);if(I!==z||o.breakpoints!==y||o.cols!==d){I in B||(B[I]=(0,u.cloneLayout)(this.state.layout));let D=(0,x.findOrGenerateResponsiveLayout)(B,y,z,I,G,O);D=(0,u.synchronizeLayoutWithChildren)(D,this.props.children,G,O,this.props.allowOverlap),B[z]=D,this.props.onBreakpointChange(z,G),this.props.onLayoutChange(D,B),this.setState({breakpoint:z,layout:D,cols:G})}const V=t(this.props.margin,z),T=t(this.props.containerPadding,z);this.props.onWidthChange(this.props.width,V,G,T)}render(){const o=this.props,{breakpoint:y,breakpoints:d,cols:f,layouts:O,margin:z,containerPadding:I,onBreakpointChange:G,onLayoutChange:B,onWidthChange:V}=o,T=_(o,m);return e.createElement(p.default,P({},T,{margin:t(z,this.state.breakpoint),containerPadding:t(I,this.state.breakpoint),onLayoutChange:this.onLayoutChange,layout:this.state.layout,cols:this.state.cols}))}};return Ue.default=i,L(i,"propTypes",{breakpoint:c.default.string,breakpoints:c.default.object,allowOverlap:c.default.bool,cols:c.default.object,margin:c.default.oneOfType([c.default.array,c.default.object]),containerPadding:c.default.oneOfType([c.default.array,c.default.object]),layouts(l,o){if(r(l[o])!=="[object Object]")throw new Error("Layout property must be an object. Received: "+r(l[o]));Object.keys(l[o]).forEach(y=>{if(!(y in l.breakpoints))throw new Error("Each key in layouts must align with a key in breakpoints.");(0,u.validateLayout)(l.layouts[y],"layouts."+y)})},width:c.default.number.isRequired,onBreakpointChange:c.default.func,onLayoutChange:c.default.func,onWidthChange:c.default.func}),L(i,"defaultProps",{breakpoints:{lg:1200,md:996,sm:768,xs:480,xxs:0},cols:{lg:12,md:10,sm:6,xs:4,xxs:2},containerPadding:{lg:null,md:null,sm:null,xs:null,xxs:null},layouts:{},margin:[10,10],allowOverlap:!1,onBreakpointChange:u.noop,onLayoutChange:u.noop,onWidthChange:u.noop}),Ue}var et={},wr=(function(){if(typeof Map<"u")return Map;function e(c,a){var u=-1;return c.some(function(x,p){return x[0]===a?(u=p,!0):!1}),u}return(function(){function c(){this.__entries__=[]}return Object.defineProperty(c.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),c.prototype.get=function(a){var u=e(this.__entries__,a),x=this.__entries__[u];return x&&x[1]},c.prototype.set=function(a,u){var x=e(this.__entries__,a);~x?this.__entries__[x][1]=u:this.__entries__.push([a,u])},c.prototype.delete=function(a){var u=this.__entries__,x=e(u,a);~x&&u.splice(x,1)},c.prototype.has=function(a){return!!~e(this.__entries__,a)},c.prototype.clear=function(){this.__entries__.splice(0)},c.prototype.forEach=function(a,u){u===void 0&&(u=null);for(var x=0,p=this.__entries__;x<p.length;x++){var m=p[x];a.call(u,m[1],m[0])}},c})()})(),jt=typeof window<"u"&&typeof document<"u"&&window.document===document,tt=(function(){return typeof global<"u"&&global.Math===Math?global:typeof self<"u"&&self.Math===Math?self:typeof window<"u"&&window.Math===Math?window:Function("return this")()})(),Jr=(function(){return typeof requestAnimationFrame=="function"?requestAnimationFrame.bind(tt):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)}})(),Zr=2;function Qr(e,c){var a=!1,u=!1,x=0;function p(){a&&(a=!1,e()),u&&w()}function m(){Jr(p)}function w(){var S=Date.now();if(a){if(S-x<Zr)return;u=!0}else a=!0,u=!1,setTimeout(m,c);x=S}return w}var en=20,tn=["top","right","bottom","left","width","height","size","weight"],rn=typeof MutationObserver<"u",nn=(function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=Qr(this.refresh.bind(this),en)}return e.prototype.addObserver=function(c){~this.observers_.indexOf(c)||this.observers_.push(c),this.connected_||this.connect_()},e.prototype.removeObserver=function(c){var a=this.observers_,u=a.indexOf(c);~u&&a.splice(u,1),!a.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){var c=this.updateObservers_();c&&this.refresh()},e.prototype.updateObservers_=function(){var c=this.observers_.filter(function(a){return a.gatherActive(),a.hasActive()});return c.forEach(function(a){return a.broadcastActive()}),c.length>0},e.prototype.connect_=function(){!jt||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),rn?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!jt||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(c){var a=c.propertyName,u=a===void 0?"":a,x=tn.some(function(p){return!!~u.indexOf(p)});x&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e})(),jr=(function(e,c){for(var a=0,u=Object.keys(c);a<u.length;a++){var x=u[a];Object.defineProperty(e,x,{value:c[x],enumerable:!1,writable:!1,configurable:!0})}return e}),ze=(function(e){var c=e&&e.ownerDocument&&e.ownerDocument.defaultView;return c||tt}),Rr=nt(0,0,0,0);function rt(e){return parseFloat(e)||0}function Sr(e){for(var c=[],a=1;a<arguments.length;a++)c[a-1]=arguments[a];return c.reduce(function(u,x){var p=e["border-"+x+"-width"];return u+rt(p)},0)}function an(e){for(var c=["top","right","bottom","left"],a={},u=0,x=c;u<x.length;u++){var p=x[u],m=e["padding-"+p];a[p]=rt(m)}return a}function on(e){var c=e.getBBox();return nt(0,0,c.width,c.height)}function sn(e){var c=e.clientWidth,a=e.clientHeight;if(!c&&!a)return Rr;var u=ze(e).getComputedStyle(e),x=an(u),p=x.left+x.right,m=x.top+x.bottom,w=rt(u.width),S=rt(u.height);if(u.boxSizing==="border-box"&&(Math.round(w+p)!==c&&(w-=Sr(u,"left","right")+p),Math.round(S+m)!==a&&(S-=Sr(u,"top","bottom")+m)),!un(e)){var P=Math.round(w+p)-c,_=Math.round(S+m)-a;Math.abs(P)!==1&&(w-=P),Math.abs(_)!==1&&(S-=_)}return nt(x.left,x.top,w,S)}var ln=(function(){return typeof SVGGraphicsElement<"u"?function(e){return e instanceof ze(e).SVGGraphicsElement}:function(e){return e instanceof ze(e).SVGElement&&typeof e.getBBox=="function"}})();function un(e){return e===ze(e).document.documentElement}function cn(e){return jt?ln(e)?on(e):sn(e):Rr}function dn(e){var c=e.x,a=e.y,u=e.width,x=e.height,p=typeof DOMRectReadOnly<"u"?DOMRectReadOnly:Object,m=Object.create(p.prototype);return jr(m,{x:c,y:a,width:u,height:x,top:a,right:c+u,bottom:x+a,left:c}),m}function nt(e,c,a,u){return{x:e,y:c,width:a,height:u}}var fn=(function(){function e(c){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=nt(0,0,0,0),this.target=c}return e.prototype.isActive=function(){var c=cn(this.target);return this.contentRect_=c,c.width!==this.broadcastWidth||c.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var c=this.contentRect_;return this.broadcastWidth=c.width,this.broadcastHeight=c.height,c},e})(),pn=(function(){function e(c,a){var u=dn(a);jr(this,{target:c,contentRect:u})}return e})(),hn=(function(){function e(c,a,u){if(this.activeObservations_=[],this.observations_=new wr,typeof c!="function")throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=c,this.controller_=a,this.callbackCtx_=u}return e.prototype.observe=function(c){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(c instanceof ze(c).Element))throw new TypeError('parameter 1 is not of type "Element".');var a=this.observations_;a.has(c)||(a.set(c,new fn(c)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(c){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(c instanceof ze(c).Element))throw new TypeError('parameter 1 is not of type "Element".');var a=this.observations_;a.has(c)&&(a.delete(c),a.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var c=this;this.clearActive(),this.observations_.forEach(function(a){a.isActive()&&c.activeObservations_.push(a)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var c=this.callbackCtx_,a=this.activeObservations_.map(function(u){return new pn(u.target,u.broadcastRect())});this.callback_.call(c,a,c),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e})(),Or=typeof WeakMap<"u"?new WeakMap:new wr,_r=(function(){function e(c){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var a=nn.getInstance(),u=new hn(c,a,this);Or.set(this,u)}return e})();["observe","unobserve","disconnect"].forEach(function(e){_r.prototype[e]=function(){var c;return(c=Or.get(this))[e].apply(c,arguments)}});var mn=(function(){return typeof tt.ResizeObserver<"u"?tt.ResizeObserver:_r})();const gn=Dr(Object.freeze(Object.defineProperty({__proto__:null,default:mn},Symbol.toStringTag,{value:"Module"})));var Er;function yn(){if(Er)return et;Er=1,Object.defineProperty(et,"__esModule",{value:!0}),et.default=L;var e=m(me),c=p(Se()),a=p(gn),u=p($e);const x=["measureBeforeMount"];function p(g){return g&&g.__esModule?g:{default:g}}function m(g,n){if(typeof WeakMap=="function")var r=new WeakMap,t=new WeakMap;return(m=function(i,l){if(!l&&i&&i.__esModule)return i;var o,y,d={__proto__:null,default:i};if(i===null||typeof i!="object"&&typeof i!="function")return d;if(o=l?t:r){if(o.has(i))return o.get(i);o.set(i,d)}for(const f in i)f!=="default"&&{}.hasOwnProperty.call(i,f)&&((y=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(i,f))&&(y.get||y.set)?o(d,f,y):d[f]=i[f]);return d})(g,n)}function w(){return w=Object.assign?Object.assign.bind():function(g){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(g[t]=r[t])}return g},w.apply(null,arguments)}function S(g,n){if(g==null)return{};var r,t,i=P(g,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(g);for(t=0;t<l.length;t++)r=l[t],n.indexOf(r)===-1&&{}.propertyIsEnumerable.call(g,r)&&(i[r]=g[r])}return i}function P(g,n){if(g==null)return{};var r={};for(var t in g)if({}.hasOwnProperty.call(g,t)){if(n.indexOf(t)!==-1)continue;r[t]=g[t]}return r}function _(g,n,r){return(n=j(n))in g?Object.defineProperty(g,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):g[n]=r,g}function j(g){var n=R(g,"string");return typeof n=="symbol"?n:n+""}function R(g,n){if(typeof g!="object"||!g)return g;var r=g[Symbol.toPrimitive];if(r!==void 0){var t=r.call(g,n);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(g)}const C="react-grid-layout";function L(g){var n;return n=class extends e.Component{constructor(){super(...arguments),_(this,"state",{width:1280}),_(this,"elementRef",e.createRef()),_(this,"mounted",!1),_(this,"resizeObserver",void 0)}componentDidMount(){this.mounted=!0,this.resizeObserver=new a.default(i=>{if(this.elementRef.current instanceof HTMLElement){const o=i[0].contentRect.width;this.setState({width:o})}});const t=this.elementRef.current;t instanceof HTMLElement&&this.resizeObserver.observe(t)}componentWillUnmount(){this.mounted=!1;const t=this.elementRef.current;t instanceof HTMLElement&&this.resizeObserver.unobserve(t),this.resizeObserver.disconnect()}render(){const t=this.props,{measureBeforeMount:i}=t,l=S(t,x);return i&&!this.mounted?e.createElement("div",{className:(0,u.default)(this.props.className,C),style:this.props.style,ref:this.elementRef}):e.createElement(g,w({innerRef:this.elementRef},l,this.state))}},_(n,"defaultProps",{measureBeforeMount:!1}),_(n,"propTypes",{measureBeforeMount:c.default.bool}),n}return et}var Pr;function vn(){return Pr||(Pr=1,(function(e){e.exports=yr().default,e.exports.utils=Ne(),e.exports.calculateUtils=dt(),e.exports.Responsive=Kr().default,e.exports.Responsive.utils=br(),e.exports.WidthProvider=yn().default})(lt)),lt.exports}var Cr=vn();const bn=Cr.WidthProvider(Cr.Responsive),xn=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],Rt=({schema:e,className:c,onLayoutChange:a,persistLayoutKey:u="dashboard-layout"})=>{const[x,p]=Te.useState(!1),[m,w]=Te.useState(()=>{if(typeof window<"u"&&u){const R=localStorage.getItem(u);if(R)try{return JSON.parse(R)}catch(C){console.error("Failed to parse saved layout:",C)}}return{lg:e.widgets?.map((R,C)=>({i:R.id||`widget-${C}`,x:R.layout?.x||C%4*3,y:R.layout?.y||Math.floor(C/4)*4,w:R.layout?.w||3,h:R.layout?.h||4}))||[]}}),S=Te.useCallback((R,C)=>{w(C),a?.(R)},[a]),P=Te.useCallback(()=>{typeof window<"u"&&u&&localStorage.setItem(u,JSON.stringify(m)),p(!1)},[m,u]),_=Te.useCallback(()=>{const R={lg:e.widgets?.map((C,L)=>({i:C.id||`widget-${L}`,x:C.layout?.x||L%4*3,y:C.layout?.y||Math.floor(L/4)*4,w:C.layout?.w||3,h:C.layout?.h||4}))||[]};w(R),typeof window<"u"&&u&&localStorage.removeItem(u)},[e.widgets,u]),j=Te.useCallback(R=>{if(R.component)return R.component;const C=R.type;if(C==="bar"||C==="line"||C==="area"||C==="pie"||C==="donut"){const L=Array.isArray(R.data)?R.data:R.data?.items||[],g=R.options||{},n=g.xField||"name",r=g.yField||"value";return{type:"chart",chartType:C,data:L,xAxisKey:n,series:[{dataKey:r}],colors:xn,className:"h-full"}}return C==="table"?{type:"data-table",...R.options,data:R.data?.items||[],searchable:!1,pagination:!1,className:"border-0"}:R},[]);return s.jsxs("div",{className:A.cn("w-full",c),"data-testid":"grid-layout",children:[s.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[s.jsx("h2",{className:"text-2xl font-bold",children:e.title||"Dashboard"}),s.jsx("div",{className:"flex gap-2",children:x?s.jsxs(s.Fragment,{children:[s.jsxs(A.Button,{onClick:P,size:"sm",variant:"default",children:[s.jsx(oe.Save,{className:"h-4 w-4 mr-2"}),"Save Layout"]}),s.jsxs(A.Button,{onClick:_,size:"sm",variant:"outline",children:[s.jsx(oe.X,{className:"h-4 w-4 mr-2"}),"Reset"]}),s.jsx(A.Button,{onClick:()=>p(!1),size:"sm",variant:"ghost",children:"Cancel"})]}):s.jsxs(A.Button,{onClick:()=>p(!0),size:"sm",variant:"outline",children:[s.jsx(oe.Edit,{className:"h-4 w-4 mr-2"}),"Edit Layout"]})})]}),s.jsx(bn,{className:"layout",layouts:m,breakpoints:{lg:1200,md:996,sm:768,xs:480,xxs:0},cols:{lg:12,md:10,sm:6,xs:4,xxs:2},rowHeight:60,isDraggable:x,isResizable:x,onLayoutChange:S,draggableHandle:".drag-handle",children:e.widgets?.map((R,C)=>{const L=R.id||`widget-${C}`,g=j(R),n=R.type==="metric";return s.jsx("div",{className:"h-full",children:n?s.jsxs("div",{className:"h-full w-full relative",children:[x&&s.jsx("div",{className:"drag-handle absolute top-2 right-2 z-10 cursor-move p-1 bg-background/80 rounded border border-border",children:s.jsx(oe.GripVertical,{className:"h-4 w-4"})}),s.jsx(De.SchemaRenderer,{schema:g,className:"h-full w-full"})]}):s.jsxs(A.Card,{className:A.cn("h-full overflow-hidden border-border/50 shadow-sm transition-all","bg-card/50 backdrop-blur-sm",x&&"ring-2 ring-primary/20"),children:[R.title&&s.jsxs(A.CardHeader,{className:"pb-2 border-b border-border/40 bg-muted/20 flex flex-row items-center justify-between",children:[s.jsx(A.CardTitle,{className:"text-base font-medium tracking-tight truncate",title:R.title,children:R.title}),x&&s.jsx("div",{className:"drag-handle cursor-move p-1 hover:bg-muted/40 rounded",children:s.jsx(oe.GripVertical,{className:"h-4 w-4"})})]}),s.jsx(A.CardContent,{className:"p-0 h-full",children:s.jsx("div",{className:A.cn("h-full w-full overflow-auto",(R.title,"p-4")),children:s.jsx(De.SchemaRenderer,{schema:g})})})]})},L)})})]})},St=({label:e,value:c,trend:a,icon:u,className:x,description:p,...m})=>{const w=me.useMemo(()=>{if(typeof u=="string"){const S=Dt[u];return S?s.jsx(S,{className:"h-4 w-4 text-muted-foreground"}):null}return u},[u]);return s.jsxs(A.Card,{className:A.cn("h-full",x),...m,children:[s.jsxs(A.CardHeader,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[s.jsx(A.CardTitle,{className:"text-sm font-medium",children:e}),w&&s.jsx("div",{className:"h-4 w-4 text-muted-foreground",children:w})]}),s.jsxs(A.CardContent,{children:[s.jsx("div",{className:"text-2xl font-bold",children:c}),(a||p)&&s.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[a&&s.jsxs("span",{className:A.cn("flex items-center mr-2",a.direction==="up"&&"text-green-500",a.direction==="down"&&"text-red-500",a.direction==="neutral"&&"text-yellow-500"),children:[a.direction==="up"&&s.jsx(oe.ArrowUpIcon,{className:"h-3 w-3 mr-1"}),a.direction==="down"&&s.jsx(oe.ArrowDownIcon,{className:"h-3 w-3 mr-1"}),a.direction==="neutral"&&s.jsx(oe.MinusIcon,{className:"h-3 w-3 mr-1"}),a.value,"%"]}),p||a?.label]})]})]})},Ot=({title:e,value:c,icon:a,trend:u,trendValue:x,description:p,className:m,...w})=>{const S=a&&Dt[a];return s.jsxs(A.Card,{className:A.cn("h-full",m),...w,children:[s.jsxs(A.CardHeader,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[s.jsx(A.CardTitle,{className:"text-sm font-medium",children:e}),S&&s.jsx(S,{className:"h-4 w-4 text-muted-foreground"})]}),s.jsxs(A.CardContent,{children:[s.jsx("div",{className:"text-2xl font-bold",children:c}),(u||x||p)&&s.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[u&&x&&s.jsxs("span",{className:A.cn("flex items-center mr-2",u==="up"&&"text-green-500",u==="down"&&"text-red-500",u==="neutral"&&"text-yellow-500"),children:[u==="up"&&s.jsx(oe.ArrowUpIcon,{className:"h-3 w-3 mr-1"}),u==="down"&&s.jsx(oe.ArrowDownIcon,{className:"h-3 w-3 mr-1"}),u==="neutral"&&s.jsx(oe.MinusIcon,{className:"h-3 w-3 mr-1"}),x]}),p]})]})]})},_t=({schema:e})=>{const{title:c,description:a,data:u,columns:x}=e,p=e.chart?.type||"chart",m=!!e.chart,S=!(process.env.NODE_ENV==="test");return s.jsxs(A.Card,{className:`h-full flex flex-col ${e.className||""}`,children:[s.jsxs(A.CardHeader,{children:[c&&s.jsx(A.CardTitle,{children:c}),a&&s.jsx(A.CardDescription,{children:a})]}),s.jsxs(A.CardContent,{className:"flex-1 overflow-auto space-y-4",children:[m&&(()=>{const P=ve.ComponentRegistry.get(p);return P?s.jsx("div",{className:"min-h-[300px] border rounded-md p-4 bg-white/50",children:s.jsx(P,{schema:{...e.chart,data:u}})}):null})(),u&&u.length>0&&s.jsx("div",{className:"border rounded-md",children:(()=>{const P=S?ve.ComponentRegistry.get("aggrid")||ve.ComponentRegistry.get("table"):null;return P?s.jsx(P,{schema:{type:"aggrid",rowData:u,columnDefs:x,domLayout:"autoHeight"}}):s.jsx("div",{className:"overflow-x-auto",children:s.jsxs("table",{className:"w-full text-sm text-left",children:[s.jsx("thead",{className:"text-xs uppercase bg-gray-50",children:s.jsx("tr",{children:x?.map(_=>s.jsx("th",{className:"px-6 py-3",children:_.headerName||_.label||_.field},_.field))})}),s.jsx("tbody",{children:u.map((_,j)=>s.jsx("tr",{className:"bg-white border-b",children:x?.map(R=>s.jsx("td",{className:"px-6 py-4",children:_[R.field]},R.field))},j))})]})})})()})]})]})},at=({schema:e})=>{const{report:c,data:a,showToolbar:u=!0,allowExport:x=!0,allowPrint:p=!0,loading:m=!1}=e,w=_=>{console.log("Export report as:",_),alert(`Export to ${_.toUpperCase()} - Feature coming soon!`)},S=()=>{console.log("Print report"),window.print()},P=()=>{console.log("Refresh report")};return c?s.jsxs("div",{className:"space-y-4",children:[u&&s.jsxs("div",{className:"flex items-center justify-between gap-2 p-4 bg-card rounded-lg border",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-lg font-semibold",children:c.title}),c.description&&s.jsx("p",{className:"text-sm text-muted-foreground",children:c.description})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[c.refreshInterval&&s.jsxs(A.Button,{variant:"outline",size:"sm",onClick:P,children:[s.jsx(oe.RefreshCw,{className:"h-4 w-4 mr-2"}),"Refresh"]}),p&&s.jsxs(A.Button,{variant:"outline",size:"sm",onClick:S,children:[s.jsx(oe.Printer,{className:"h-4 w-4 mr-2"}),"Print"]}),x&&c.showExportButtons&&s.jsx(s.Fragment,{children:s.jsxs(A.Button,{variant:"outline",size:"sm",onClick:()=>w(c.defaultExportFormat||"pdf"),children:[s.jsx(oe.Download,{className:"h-4 w-4 mr-2"}),"Export"]})})]})]}),s.jsxs(A.Card,{children:[s.jsxs(A.CardHeader,{children:[!u&&c.title&&s.jsx(A.CardTitle,{children:c.title}),!u&&c.description&&s.jsx(A.CardDescription,{children:c.description})]}),s.jsxs(A.CardContent,{className:"space-y-6",children:[m&&s.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"Loading report data..."}),!m&&c.sections?.map((_,j)=>_.visible===!1?null:s.jsxs("div",{className:"space-y-2",children:[_.title&&s.jsx("h3",{className:"text-lg font-semibold border-b pb-2",children:_.title}),_.type==="header"&&_.title&&s.jsx("div",{className:"text-2xl font-bold py-4",children:_.title}),_.type==="summary"&&s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:c.fields?.filter(R=>R.showInSummary).map((R,C)=>s.jsx(A.Card,{children:s.jsxs(A.CardContent,{className:"p-4",children:[s.jsx("div",{className:"text-sm text-muted-foreground",children:R.label||R.name}),s.jsxs("div",{className:"text-2xl font-bold",children:[R.aggregation==="count"&&a?.length,R.aggregation==="sum"&&a?.reduce((L,g)=>L+(g[R.name]||0),0)]})]})},C))}),_.type==="chart"&&_.chart&&s.jsx("div",{className:"min-h-[300px]",children:s.jsx(De.SchemaRenderer,{schema:{..._.chart,data:a||_.chart.data}})}),_.type==="table"&&s.jsx("div",{className:"border rounded-lg overflow-hidden",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{className:"bg-muted",children:s.jsx("tr",{children:_.columns?.map((R,C)=>s.jsx("th",{className:"px-4 py-2 text-left font-medium",children:R.label||R.name},C))})}),s.jsx("tbody",{children:a?.map((R,C)=>s.jsx("tr",{className:"border-t",children:_.columns?.map((L,g)=>s.jsx("td",{className:"px-4 py-2",children:R[L.name]},g))},C))})]})}),_.type==="text"&&_.text&&s.jsx("div",{className:"prose max-w-none",children:s.jsx("p",{children:_.text})}),_.type==="page-break"&&s.jsx("div",{className:"border-t-2 border-dashed my-8 print:page-break-after-always"}),_.content&&s.jsx(De.SchemaRenderer,{schema:_.content})]},j)),!c.sections&&a&&a.length>0&&s.jsx("div",{className:"border rounded-lg overflow-hidden",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{className:"bg-muted",children:s.jsx("tr",{children:c.fields?.map((_,j)=>s.jsx("th",{className:"px-4 py-2 text-left font-medium",children:_.label||_.name},j))})}),s.jsx("tbody",{children:a.map((_,j)=>s.jsx("tr",{className:"border-t",children:c.fields?.map((R,C)=>s.jsx("td",{className:"px-4 py-2",children:_[R.name]},C))},j))})]})})]})]})]}):s.jsx(A.Card,{children:s.jsx(A.CardContent,{className:"p-8 text-center text-muted-foreground",children:"No report to display"})})},Et=({schema:e})=>{const{report:c,dataSources:a=[],availableFields:u=[],showPreview:x=!0,onSave:p,onCancel:m}=e,[w,S]=me.useState(c||{type:"report",title:"New Report",fields:[],filters:[],groupBy:[],sections:[],showExportButtons:!0,showPrintButton:!0}),[P,_]=me.useState(w.fields||[]),[j,R]=me.useState(w.filters||[]),[C,L]=me.useState(w.groupBy||[]),[g,n]=me.useState(w.sections||[]),r=()=>{if(u.length>0&&P.length<u.length){const T=u.find(D=>!P.some(N=>N.name===D.name));if(T){const D=[...P,T];_(D),S({...w,fields:D})}}},t=T=>{const D=P.filter((N,K)=>K!==T);_(D),S({...w,fields:D})},i=(T,D)=>{const N=[...P];N[T]=D,_(N),S({...w,fields:N})},l=()=>{const T={field:u[0]?.name||"",operator:"equals",value:""},D=[...j,T];R(D),S({...w,filters:D})},o=T=>{const D=j.filter((N,K)=>K!==T);R(D),S({...w,filters:D})},y=(T,D)=>{const N=[...j];N[T]=D,R(N),S({...w,filters:N})},d=()=>{const T={field:u[0]?.name||"",sort:"asc"},D=[...C,T];L(D),S({...w,groupBy:D})},f=T=>{const D=C.filter((N,K)=>K!==T);L(D),S({...w,groupBy:D})},O=(T,D)=>{const N=[...C];N[T]=D,L(N),S({...w,groupBy:N})},z=T=>{const D={type:T,title:`New ${T} Section`},N=[...g,D];n(N),S({...w,sections:N})},I=T=>{const D=g.filter((N,K)=>K!==T);n(D),S({...w,sections:D})},G=(T,D)=>{const N=[...g];N[T]=D,n(N),S({...w,sections:N})},B=()=>{console.log("Saving report:",w),p&&alert("Report saved! (Handler: "+p+")")},V=()=>{console.log("Canceling report builder")};return s.jsxs("div",{className:"space-y-4",children:[s.jsxs(A.Card,{children:[s.jsxs(A.CardHeader,{children:[s.jsx(A.CardTitle,{children:"Report Builder"}),s.jsx(A.CardDescription,{children:"Configure your report settings, fields, filters, and sections"})]}),s.jsxs(A.CardContent,{children:[s.jsxs(A.Tabs,{defaultValue:"basic",className:"w-full",children:[s.jsxs(A.TabsList,{className:"grid w-full grid-cols-5",children:[s.jsxs(A.TabsTrigger,{value:"basic",children:[s.jsx(oe.Settings,{className:"h-4 w-4 mr-2"}),"Basic"]}),s.jsxs(A.TabsTrigger,{value:"fields",children:[s.jsx(oe.Layers,{className:"h-4 w-4 mr-2"}),"Fields"]}),s.jsxs(A.TabsTrigger,{value:"filters",children:[s.jsx(oe.Filter,{className:"h-4 w-4 mr-2"}),"Filters"]}),s.jsxs(A.TabsTrigger,{value:"grouping",children:[s.jsx(oe.Layers,{className:"h-4 w-4 mr-2"}),"Group By"]}),s.jsxs(A.TabsTrigger,{value:"sections",children:[s.jsx(oe.Layers,{className:"h-4 w-4 mr-2"}),"Sections"]})]}),s.jsx(A.TabsContent,{value:"basic",className:"space-y-4 mt-4",children:s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(A.Label,{htmlFor:"report-title",children:"Report Title"}),s.jsx(A.Input,{id:"report-title",value:w.title||"",onChange:T=>S({...w,title:T.target.value}),placeholder:"Enter report title"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(A.Label,{htmlFor:"report-description",children:"Description"}),s.jsx(A.Input,{id:"report-description",value:w.description||"",onChange:T=>S({...w,description:T.target.value}),placeholder:"Enter report description"})]}),a.length>0&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(A.Label,{children:"Data Source"}),s.jsxs("select",{className:"w-full border rounded-md p-2",children:[s.jsx("option",{value:"",children:"Select a data source"}),a.map((T,D)=>s.jsxs("option",{value:D,children:["Data Source ",D+1]},D))]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(A.Label,{children:"Export Options"}),s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsxs("label",{className:"flex items-center gap-2",children:[s.jsx("input",{type:"checkbox",checked:w.showExportButtons||!1,onChange:T=>S({...w,showExportButtons:T.target.checked})}),s.jsx("span",{className:"text-sm",children:"Show Export Buttons"})]}),s.jsxs("label",{className:"flex items-center gap-2",children:[s.jsx("input",{type:"checkbox",checked:w.showPrintButton||!1,onChange:T=>S({...w,showPrintButton:T.target.checked})}),s.jsx("span",{className:"text-sm",children:"Show Print Button"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(A.Label,{htmlFor:"export-format",children:"Default Export Format"}),s.jsxs("select",{id:"export-format",className:"w-full border rounded-md p-2",value:w.defaultExportFormat||"pdf",onChange:T=>S({...w,defaultExportFormat:T.target.value}),children:[s.jsx("option",{value:"pdf",children:"PDF"}),s.jsx("option",{value:"excel",children:"Excel"}),s.jsx("option",{value:"csv",children:"CSV"}),s.jsx("option",{value:"json",children:"JSON"}),s.jsx("option",{value:"html",children:"HTML"})]})]})]})}),s.jsxs(A.TabsContent,{value:"fields",className:"space-y-4 mt-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(A.Label,{children:"Report Fields"}),s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:r,disabled:P.length>=u.length,children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Add Field"]})]}),s.jsxs("div",{className:"space-y-2",children:[P.map((T,D)=>s.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[s.jsxs("div",{className:"flex-1 grid grid-cols-4 gap-2",children:[s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Field Name"}),s.jsx("div",{className:"text-sm font-medium",children:T.name})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Label"}),s.jsx(A.Input,{className:"h-8 text-sm",value:T.label||T.name,onChange:N=>i(D,{...T,label:N.target.value})})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Aggregation"}),s.jsxs("select",{className:"w-full border rounded p-1 text-sm h-8",value:T.aggregation||"",onChange:N=>i(D,{...T,aggregation:N.target.value}),children:[s.jsx("option",{value:"",children:"None"}),s.jsx("option",{value:"sum",children:"Sum"}),s.jsx("option",{value:"avg",children:"Average"}),s.jsx("option",{value:"min",children:"Min"}),s.jsx("option",{value:"max",children:"Max"}),s.jsx("option",{value:"count",children:"Count"}),s.jsx("option",{value:"distinct",children:"Distinct"})]})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Show in Summary"}),s.jsx("input",{type:"checkbox",checked:T.showInSummary||!1,onChange:N=>i(D,{...T,showInSummary:N.target.checked}),className:"mt-2"})]})]}),s.jsx(A.Button,{size:"sm",variant:"ghost",onClick:()=>t(D),children:s.jsx(oe.Trash2,{className:"h-4 w-4 text-destructive"})})]},D)),P.length===0&&s.jsx("div",{className:"text-center py-8 text-muted-foreground border rounded-lg border-dashed",children:'No fields selected. Click "Add Field" to get started.'})]})]}),s.jsxs(A.TabsContent,{value:"filters",className:"space-y-4 mt-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(A.Label,{children:"Report Filters"}),s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:l,disabled:u.length===0,children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Add Filter"]})]}),s.jsxs("div",{className:"space-y-2",children:[j.map((T,D)=>s.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[s.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-2",children:[s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Field"}),s.jsx("select",{className:"w-full border rounded p-1 text-sm h-8",value:T.field,onChange:N=>y(D,{...T,field:N.target.value}),children:u.map(N=>s.jsx("option",{value:N.name,children:N.label||N.name},N.name))})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Operator"}),s.jsxs("select",{className:"w-full border rounded p-1 text-sm h-8",value:T.operator,onChange:N=>y(D,{...T,operator:N.target.value}),children:[s.jsx("option",{value:"equals",children:"Equals"}),s.jsx("option",{value:"not_equals",children:"Not Equals"}),s.jsx("option",{value:"contains",children:"Contains"}),s.jsx("option",{value:"greater_than",children:"Greater Than"}),s.jsx("option",{value:"less_than",children:"Less Than"}),s.jsx("option",{value:"between",children:"Between"}),s.jsx("option",{value:"in",children:"In"}),s.jsx("option",{value:"not_in",children:"Not In"})]})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Value"}),s.jsx(A.Input,{className:"h-8 text-sm",value:T.value||"",onChange:N=>y(D,{...T,value:N.target.value}),placeholder:"Enter value"})]})]}),s.jsx(A.Button,{size:"sm",variant:"ghost",onClick:()=>o(D),children:s.jsx(oe.Trash2,{className:"h-4 w-4 text-destructive"})})]},D)),j.length===0&&s.jsx("div",{className:"text-center py-8 text-muted-foreground border rounded-lg border-dashed",children:'No filters defined. Click "Add Filter" to filter your report data.'})]})]}),s.jsxs(A.TabsContent,{value:"grouping",className:"space-y-4 mt-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(A.Label,{children:"Group By Fields"}),s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:d,disabled:u.length===0,children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Add Group"]})]}),s.jsxs("div",{className:"space-y-2",children:[C.map((T,D)=>s.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[s.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-2",children:[s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Field"}),s.jsx("select",{className:"w-full border rounded p-1 text-sm h-8",value:T.field,onChange:N=>O(D,{...T,field:N.target.value}),children:u.map(N=>s.jsx("option",{value:N.name,children:N.label||N.name},N.name))})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Label"}),s.jsx(A.Input,{className:"h-8 text-sm",value:T.label||"",onChange:N=>O(D,{...T,label:N.target.value}),placeholder:"Optional label"})]}),s.jsxs("div",{children:[s.jsx(A.Label,{className:"text-xs",children:"Sort"}),s.jsxs("select",{className:"w-full border rounded p-1 text-sm h-8",value:T.sort||"asc",onChange:N=>O(D,{...T,sort:N.target.value}),children:[s.jsx("option",{value:"asc",children:"Ascending"}),s.jsx("option",{value:"desc",children:"Descending"})]})]})]}),s.jsx(A.Button,{size:"sm",variant:"ghost",onClick:()=>f(D),children:s.jsx(oe.Trash2,{className:"h-4 w-4 text-destructive"})})]},D)),C.length===0&&s.jsx("div",{className:"text-center py-8 text-muted-foreground border rounded-lg border-dashed",children:'No grouping defined. Click "Add Group" to group your report data.'})]})]}),s.jsxs(A.TabsContent,{value:"sections",className:"space-y-4 mt-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(A.Label,{children:"Report Sections"}),s.jsxs("div",{className:"flex gap-2",children:[s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:()=>z("header"),children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Header"]}),s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:()=>z("summary"),children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Summary"]}),s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:()=>z("chart"),children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Chart"]}),s.jsxs(A.Button,{size:"sm",variant:"outline",onClick:()=>z("table"),children:[s.jsx(oe.Plus,{className:"h-4 w-4 mr-2"}),"Table"]})]})]}),s.jsxs("div",{className:"space-y-2",children:[g.map((T,D)=>s.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[s.jsxs("div",{className:"flex-1 space-y-2",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase",children:T.type}),s.jsx(A.Input,{className:"h-8 text-sm",value:T.title||"",onChange:N=>G(D,{...T,title:N.target.value}),placeholder:"Section title"})]}),T.type==="text"&&s.jsx(A.Input,{className:"h-8 text-sm",value:T.text||"",onChange:N=>G(D,{...T,text:N.target.value}),placeholder:"Text content"})]}),s.jsx(A.Button,{size:"sm",variant:"ghost",onClick:()=>I(D),children:s.jsx(oe.Trash2,{className:"h-4 w-4 text-destructive"})})]},D)),g.length===0&&s.jsx("div",{className:"text-center py-8 text-muted-foreground border rounded-lg border-dashed",children:"No sections defined. Click section buttons above to add report sections."})]})]})]}),s.jsxs("div",{className:"flex items-center justify-end gap-2 pt-4 mt-6 border-t",children:[s.jsxs(A.Button,{variant:"outline",onClick:V,children:[s.jsx(oe.X,{className:"h-4 w-4 mr-2"}),"Cancel"]}),s.jsxs(A.Button,{onClick:B,children:[s.jsx(oe.Save,{className:"h-4 w-4 mr-2"}),"Save Report"]})]})]})]}),x&&s.jsxs("div",{children:[s.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Preview"}),s.jsx(at,{schema:{type:"report-viewer",report:w,data:[],showToolbar:!1,allowExport:!1,allowPrint:!1}})]})]})};ve.ComponentRegistry.register("dashboard",st,{namespace:"plugin-dashboard",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:[]}}),ve.ComponentRegistry.register("metric",St,{namespace:"plugin-dashboard",label:"Metric Widget",category:"Dashboard",inputs:[{name:"label",type:"string",label:"Label"},{name:"value",type:"string",label:"Value"}]}),ve.ComponentRegistry.register("metric-card",Ot,{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"}}),ve.ComponentRegistry.register("report",_t,{namespace:"plugin-dashboard",label:"Report",category:"Dashboard",inputs:[{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"chart",type:"code",label:"Chart Configuration"}]}),ve.ComponentRegistry.register("report-viewer",at,{namespace:"plugin-dashboard",label:"Report Viewer",category:"Reports",inputs:[{name:"report",type:"code",label:"Report Configuration",required:!0},{name:"data",type:"code",label:"Report Data"},{name:"showToolbar",type:"boolean",label:"Show Toolbar",defaultValue:!0},{name:"allowExport",type:"boolean",label:"Allow Export",defaultValue:!0},{name:"allowPrint",type:"boolean",label:"Allow Print",defaultValue:!0}]}),ve.ComponentRegistry.register("report-builder",Et,{namespace:"plugin-dashboard",label:"Report Builder",category:"Reports",inputs:[{name:"report",type:"code",label:"Initial Report Config"},{name:"dataSources",type:"code",label:"Available Data Sources"},{name:"availableFields",type:"code",label:"Available Fields"},{name:"showPreview",type:"boolean",label:"Show Preview",defaultValue:!0}]}),ve.ComponentRegistry.register("dashboard-grid",Rt,{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 wn={DashboardRenderer:st,DashboardGridLayout:Rt,MetricWidget:St,MetricCard:Ot,ReportRenderer:_t,ReportViewer:at,ReportBuilder:Et};he.DashboardGridLayout=Rt,he.DashboardRenderer=st,he.MetricCard=Ot,he.MetricWidget=St,he.ReportBuilder=Et,he.ReportRenderer=_t,he.ReportViewer=at,he.dashboardComponents=wn,Object.defineProperty(he,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Layout as RGLLayout } from 'react-grid-layout';
|
|
2
|
+
import { DashboardSchema } from '../../types/src';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export interface DashboardGridLayoutProps {
|
|
5
|
+
schema: DashboardSchema;
|
|
6
|
+
className?: string;
|
|
7
|
+
onLayoutChange?: (layout: RGLLayout[]) => void;
|
|
8
|
+
persistLayoutKey?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const DashboardGridLayout: React.FC<DashboardGridLayoutProps>;
|
|
11
|
+
//# sourceMappingURL=DashboardGridLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardGridLayout.d.ts","sourceRoot":"","sources":["../../src/DashboardGridLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA6B,MAAM,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAY/E,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwLlE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardRenderer.d.ts","sourceRoot":"","sources":["../../src/DashboardRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"DashboardRenderer.d.ts","sourceRoot":"","sources":["../../src/DashboardRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAc/E,eAAO,MAAM,iBAAiB;;YAAwC,eAAe;gBAAc,MAAM;0DAkHxG,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface MetricCardProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: string | number;
|
|
5
|
+
icon?: string;
|
|
6
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
7
|
+
trendValue?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* MetricCard - Standalone metric card component for dashboard KPIs
|
|
13
|
+
* Displays a metric value with optional icon, trend indicator, and description
|
|
14
|
+
*/
|
|
15
|
+
export declare const MetricCard: React.FC<MetricCardProps>;
|
|
16
|
+
//# sourceMappingURL=MetricCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricCard.d.ts","sourceRoot":"","sources":["../../src/MetricCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8ChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricWidget.d.ts","sourceRoot":"","sources":["../../src/MetricWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MetricWidget.d.ts","sourceRoot":"","sources":["../../src/MetricWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;IACF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,GAAI,iEAQ1B,iBAAiB,4CAyCnB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ReportBuilderSchema } from '../../types/src';
|
|
3
|
+
export interface ReportBuilderProps {
|
|
4
|
+
schema: ReportBuilderSchema;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* ReportBuilder - Interactive report builder component
|
|
8
|
+
* Allows users to configure report fields, filters, grouping, sections, and export settings
|
|
9
|
+
*/
|
|
10
|
+
export declare const ReportBuilder: React.FC<ReportBuilderProps>;
|
|
11
|
+
//# sourceMappingURL=ReportBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportBuilder.d.ts","sourceRoot":"","sources":["../../src/ReportBuilder.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAyE,MAAM,kBAAkB,CAAC;AAInI,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA0lBtD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ReportRendererProps {
|
|
3
|
+
schema: {
|
|
4
|
+
type: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
chart?: any;
|
|
9
|
+
data?: any[];
|
|
10
|
+
columns?: any[];
|
|
11
|
+
className?: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare const ReportRenderer: React.FC<ReportRendererProps>;
|
|
15
|
+
//# sourceMappingURL=ReportRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportRenderer.d.ts","sourceRoot":"","sources":["../../src/ReportRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAuExD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ReportViewerSchema } from '../../types/src';
|
|
3
|
+
export interface ReportViewerProps {
|
|
4
|
+
schema: ReportViewerSchema;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* ReportViewer - Display a generated report with optional toolbar
|
|
8
|
+
* Supports rendering report sections, charts, tables, and export functionality
|
|
9
|
+
*/
|
|
10
|
+
export declare const ReportViewer: React.FC<ReportViewerProps>;
|
|
11
|
+
//# sourceMappingURL=ReportViewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportViewer.d.ts","sourceRoot":"","sources":["../../src/ReportViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,kBAAkB,CAAC;AAG1E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgNpD,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import { DashboardRenderer } from './DashboardRenderer';
|
|
2
|
+
import { DashboardGridLayout } from './DashboardGridLayout';
|
|
2
3
|
import { MetricWidget } from './MetricWidget';
|
|
3
|
-
|
|
4
|
+
import { MetricCard } from './MetricCard';
|
|
5
|
+
import { ReportRenderer } from './ReportRenderer';
|
|
6
|
+
import { ReportViewer } from './ReportViewer';
|
|
7
|
+
import { ReportBuilder } from './ReportBuilder';
|
|
8
|
+
export { DashboardRenderer, DashboardGridLayout, MetricWidget, MetricCard, ReportRenderer, ReportViewer, ReportBuilder };
|
|
9
|
+
export declare const dashboardComponents: {
|
|
10
|
+
DashboardRenderer: import('react').ForwardRefExoticComponent<Omit<{
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
schema: import('../../types/src').DashboardSchema;
|
|
13
|
+
className?: string;
|
|
14
|
+
}, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
|
15
|
+
DashboardGridLayout: import('react').FC<import('./DashboardGridLayout').DashboardGridLayoutProps>;
|
|
16
|
+
MetricWidget: ({ label, value, trend, icon, className, description, ...props }: import('./MetricWidget').MetricWidgetProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
MetricCard: import('react').FC<import('./MetricCard').MetricCardProps>;
|
|
18
|
+
ReportRenderer: import('react').FC<import('./ReportRenderer').ReportRendererProps>;
|
|
19
|
+
ReportViewer: import('react').FC<import('./ReportViewer').ReportViewerProps>;
|
|
20
|
+
ReportBuilder: import('react').FC<import('./ReportBuilder').ReportBuilderProps>;
|
|
21
|
+
};
|
|
4
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AA2IzH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;CAQ/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/plugin-dashboard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Dashboard plugin for Object UI",
|
|
@@ -17,20 +17,22 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"clsx": "^2.1.0",
|
|
19
19
|
"lucide-react": "^0.563.0",
|
|
20
|
-
"react": "^
|
|
21
|
-
"react-dom": "^
|
|
20
|
+
"react": "^19.2.4",
|
|
21
|
+
"react-dom": "^19.2.4",
|
|
22
|
+
"react-grid-layout": "^1.4.4",
|
|
22
23
|
"tailwind-merge": "^2.2.1",
|
|
23
|
-
"@object-ui/components": "0.
|
|
24
|
-
"@object-ui/core": "0.
|
|
25
|
-
"@object-ui/react": "0.
|
|
26
|
-
"@object-ui/types": "0.
|
|
24
|
+
"@object-ui/components": "0.5.0",
|
|
25
|
+
"@object-ui/core": "0.5.0",
|
|
26
|
+
"@object-ui/react": "0.5.0",
|
|
27
|
+
"@object-ui/types": "0.5.0"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
30
|
"react": "^18.0.0",
|
|
30
31
|
"react-dom": "^18.0.0"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|
|
33
|
-
"@
|
|
34
|
+
"@types/react-grid-layout": "^1.3.5",
|
|
35
|
+
"@vitejs/plugin-react": "^5.1.3",
|
|
34
36
|
"typescript": "^5.9.3",
|
|
35
37
|
"vite": "^7.3.1",
|
|
36
38
|
"vite-plugin-dts": "^4.5.4"
|