@object-ui/plugin-view 3.0.2 → 3.1.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.
@@ -1,6 +1,10 @@
1
- (function(P,b){typeof exports=="object"&&typeof module<"u"?b(exports,require("react"),require("@object-ui/core"),require("@object-ui/plugin-grid"),require("@object-ui/plugin-form"),require("@object-ui/components"),require("lucide-react"),require("@object-ui/react")):typeof define=="function"&&define.amd?define(["exports","react","@object-ui/core","@object-ui/plugin-grid","@object-ui/plugin-form","@object-ui/components","lucide-react","@object-ui/react"],b):(P=typeof globalThis<"u"?globalThis:P||self,b(P.ObjectUIPluginView={},P.React,P.core,P.pluginGrid,P.pluginForm,P.components,P.lucideReact,P.react))})(this,(function(P,b,J,Me,me,l,$,je){"use strict";function ze(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const c in e)if(c!=="default"){const u=Object.getOwnPropertyDescriptor(e,c);Object.defineProperty(n,c,u.get?u:{enumerable:!0,get:()=>e[c]})}}return n.default=e,Object.freeze(n)}const O=ze(b);var se={exports:{}},re={};var xe;function Be(){if(xe)return re;xe=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function c(u,w,g){var F=null;if(g!==void 0&&(F=""+g),w.key!==void 0&&(F=""+w.key),"key"in w){g={};for(var y in w)y!=="key"&&(g[y]=w[y])}else g=w;return w=g.ref,{$$typeof:e,type:u,key:F,ref:w!==void 0?w:null,props:g}}return re.Fragment=n,re.jsx=c,re.jsxs=c,re}var le={};var he;function Ue(){return he||(he=1,process.env.NODE_ENV!=="production"&&(function(){function e(r){if(r==null)return null;if(typeof r=="function")return r.$$typeof===De?null:r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case k:return"Fragment";case d:return"Profiler";case A:return"StrictMode";case ye:return"Suspense";case ue:return"SuspenseList";case q:return"Activity"}if(typeof r=="object")switch(typeof r.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),r.$$typeof){case o:return"Portal";case L:return r.displayName||"Context";case x:return(r._context.displayName||"Context")+".Consumer";case Z:var p=r.render;return r=r.displayName,r||(r=p.displayName||p.name||"",r=r!==""?"ForwardRef("+r+")":"ForwardRef"),r;case M:return p=r.displayName||null,p!==null?p:e(r.type)||"Memo";case de:p=r._payload,r=r._init;try{return e(r(p))}catch{}}return null}function n(r){return""+r}function c(r){try{n(r);var p=!1}catch{p=!0}if(p){p=console;var v=p.error,j=typeof Symbol=="function"&&Symbol.toStringTag&&r[Symbol.toStringTag]||r.constructor.name||"Object";return v.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",j),n(r)}}function u(r){if(r===k)return"<>";if(typeof r=="object"&&r!==null&&r.$$typeof===de)return"<...>";try{var p=e(r);return p?"<"+p+">":"<...>"}catch{return"<...>"}}function w(){var r=z.A;return r===null?null:r.getOwner()}function g(){return Error("react-stack-top-frame")}function F(r){if(Q.call(r,"key")){var p=Object.getOwnPropertyDescriptor(r,"key").get;if(p&&p.isReactWarning)return!1}return r.key!==void 0}function y(r,p){function v(){T||(T=!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)",p))}v.isReactWarning=!0,Object.defineProperty(r,"key",{get:v,configurable:!0})}function E(){var r=e(this.type);return R[r]||(R[r]=!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.")),r=this.props.ref,r!==void 0?r:null}function N(r,p,v,j,ee,te){var _=v.ref;return r={$$typeof:V,type:r,key:p,props:v,_owner:j},(_!==void 0?_:null)!==null?Object.defineProperty(r,"ref",{enumerable:!1,get:E}):Object.defineProperty(r,"ref",{enumerable:!1,value:null}),r._store={},Object.defineProperty(r._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(r,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(r,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ee}),Object.defineProperty(r,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:te}),Object.freeze&&(Object.freeze(r.props),Object.freeze(r)),r}function C(r,p,v,j,ee,te){var _=p.children;if(_!==void 0)if(j)if(G(_)){for(j=0;j<_.length;j++)s(_[j]);Object.freeze&&Object.freeze(_)}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 s(_);if(Q.call(p,"key")){_=e(r);var W=Object.keys(p).filter(function(ve){return ve!=="key"});j=0<W.length?"{key: someKey, "+W.join(": ..., ")+": ...}":"{key: someKey}",h[_+j]||(W=0<W.length?"{"+W.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(le,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react"),require("@object-ui/core"),require("@object-ui/plugin-grid"),require("@object-ui/plugin-form"),require("@object-ui/components"),require("lucide-react"),require("@object-ui/react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","@object-ui/core","@object-ui/plugin-grid","@object-ui/plugin-form","@object-ui/components","lucide-react","@object-ui/react","react-dom"],l):(le=typeof globalThis<"u"?globalThis:le||self,l(le.ObjectUIPluginView={},le.React,le.core,le.pluginGrid,le.pluginForm,le.components,le.lucideReact,le.react,le.ReactDOM))})(this,(function(le,l,Ve,Zn,kt,h,O,rn,Je){"use strict";function er(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const X=er(l);var bt={exports:{}},Qe={};var sn;function tr(){if(sn)return Qe;sn=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,s,o){var c=null;if(o!==void 0&&(c=""+o),s.key!==void 0&&(c=""+s.key),"key"in s){o={};for(var a in s)a!=="key"&&(o[a]=s[a])}else o=s;return s=o.ref,{$$typeof:e,type:r,key:c,ref:s!==void 0?s:null,props:o}}return Qe.Fragment=t,Qe.jsx=n,Qe.jsxs=n,Qe}var Ze={};var on;function nr(){return on||(on=1,process.env.NODE_ENV!=="production"&&(function(){function e(b){if(b==null)return null;if(typeof b=="function")return b.$$typeof===B?null:b.displayName||b.name||null;if(typeof b=="string")return b;switch(b){case S:return"Fragment";case C:return"Profiler";case E:return"StrictMode";case L:return"Suspense";case y:return"SuspenseList";case _: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 p:return"Portal";case F:return b.displayName||"Context";case N:return(b._context.displayName||"Context")+".Consumer";case V:var u=b.render;return b=b.displayName,b||(b=u.displayName||u.name||"",b=b!==""?"ForwardRef("+b+")":"ForwardRef"),b;case k:return u=b.displayName||null,u!==null?u:e(b.type)||"Memo";case P:u=b._payload,b=b._init;try{return e(b(u))}catch{}}return null}function t(b){return""+b}function n(b){try{t(b);var u=!1}catch{u=!0}if(u){u=console;var M=u.error,I=typeof Symbol=="function"&&Symbol.toStringTag&&b[Symbol.toStringTag]||b.constructor.name||"Object";return M.call(u,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",I),t(b)}}function r(b){if(b===S)return"<>";if(typeof b=="object"&&b!==null&&b.$$typeof===P)return"<...>";try{var u=e(b);return u?"<"+u+">":"<...>"}catch{return"<...>"}}function s(){var b=R.A;return b===null?null:b.getOwner()}function o(){return Error("react-stack-top-frame")}function c(b){if(te.call(b,"key")){var u=Object.getOwnPropertyDescriptor(b,"key").get;if(u&&u.isReactWarning)return!1}return b.key!==void 0}function a(b,u){function M(){fe||(fe=!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)",u))}M.isReactWarning=!0,Object.defineProperty(b,"key",{get:M,configurable:!0})}function f(){var b=e(this.type);return ee[b]||(ee[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 g(b,u,M,I,se,Y){var W=M.ref;return b={$$typeof:D,type:b,key:u,props:M,_owner:I},(W!==void 0?W:null)!==null?Object.defineProperty(b,"ref",{enumerable:!1,get:f}):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:se}),Object.defineProperty(b,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Y}),Object.freeze&&(Object.freeze(b.props),Object.freeze(b)),b}function x(b,u,M,I,se,Y){var W=u.children;if(W!==void 0)if(I)if(J(W)){for(I=0;I<W.length;I++)d(W[I]);Object.freeze&&Object.freeze(W)}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 d(W);if(te.call(u,"key")){W=e(b);var oe=Object.keys(u).filter(function(v){return v!=="key"});I=0<oe.length?"{key: someKey, "+oe.join(": ..., ")+": ...}":"{key: someKey}",me[W+I]||(oe=0<oe.length?"{"+oe.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} />`,j,_,W,_),h[_+j]=!0)}if(_=null,v!==void 0&&(c(v),_=""+v),F(p)&&(c(p.key),_=""+p.key),"key"in p){v={};for(var ae in p)ae!=="key"&&(v[ae]=p[ae])}else v=p;return _&&y(v,typeof r=="function"?r.displayName||r.name||"Unknown":r),N(r,_,v,w(),ee,te)}function s(r){S(r)?r._store&&(r._store.validated=1):typeof r=="object"&&r!==null&&r.$$typeof===de&&(r._payload.status==="fulfilled"?S(r._payload.value)&&r._payload.value._store&&(r._payload.value._store.validated=1):r._store&&(r._store.validated=1))}function S(r){return typeof r=="object"&&r!==null&&r.$$typeof===V}var m=b,V=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),A=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),x=Symbol.for("react.consumer"),L=Symbol.for("react.context"),Z=Symbol.for("react.forward_ref"),ye=Symbol.for("react.suspense"),ue=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),de=Symbol.for("react.lazy"),q=Symbol.for("react.activity"),De=Symbol.for("react.client.reference"),z=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q=Object.prototype.hasOwnProperty,G=Array.isArray,ne=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(r){return r()}};var T,R={},ie=m.react_stack_bottom_frame.bind(m,g)(),ce=ne(u(g)),h={};le.Fragment=k,le.jsx=function(r,p,v){var j=1e4>z.recentlyCreatedOwnerStacks++;return C(r,p,v,!1,j?Error("react-stack-top-frame"):ie,j?ne(u(r)):ce)},le.jsxs=function(r,p,v){var j=1e4>z.recentlyCreatedOwnerStacks++;return C(r,p,v,!0,j?Error("react-stack-top-frame"):ie,j?ne(u(r)):ce)}})()),le}var Ce;function qe(){return Ce||(Ce=1,process.env.NODE_ENV==="production"?se.exports=Be():se.exports=Ue()),se.exports}var t=qe();function Se(e){var n,c,u="";if(typeof e=="string"||typeof e=="number")u+=e;else if(typeof e=="object")if(Array.isArray(e)){var w=e.length;for(n=0;n<w;n++)e[n]&&(c=Se(e[n]))&&(u&&(u+=" "),u+=c)}else for(c in e)e[c]&&(u&&(u+=" "),u+=c);return u}function Ye(){for(var e,n,c=0,u="",w=arguments.length;c<w;c++)(e=arguments[c])&&(n=Se(e))&&(u&&(u+=" "),u+=n);return u}const Ne=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Ve=Ye,X=(e,n)=>c=>{var u;if(n?.variants==null)return Ve(e,c?.class,c?.className);const{variants:w,defaultVariants:g}=n,F=Object.keys(w).map(N=>{const C=c?.[N],s=g?.[N];if(C===null)return null;const S=Ne(C)||Ne(s);return w[N][S]}),y=c&&Object.entries(c).reduce((N,C)=>{let[s,S]=C;return S===void 0||(N[s]=S),N},{}),E=n==null||(u=n.compoundVariants)===null||u===void 0?void 0:u.reduce((N,C)=>{let{class:s,className:S,...m}=C;return Object.entries(m).every(V=>{let[o,k]=V;return Array.isArray(k)?k.includes({...g,...y}[o]):{...g,...y}[o]===k})?[...N,s,S]:N},[]);return Ve(e,F,E,c?.class,c?.className)},We={list:"List",detail:"Detail",grid:"Grid",kanban:"Kanban",calendar:"Calendar",timeline:"Timeline",map:"Map"},Ge={list:$.List,detail:$.FileText,grid:$.Grid,kanban:$.LayoutGrid,calendar:$.Calendar,timeline:$.Activity,map:$.Map},He=X("flex gap-4",{variants:{position:{top:"flex-col",bottom:"flex-col-reverse",left:"flex-row",right:"flex-row-reverse"}},defaultVariants:{position:"top"}}),Ke=X("w-full",{variants:{orientation:{horizontal:"w-full",vertical:"w-48"}},defaultVariants:{orientation:"horizontal"}}),Je=X("flex gap-2",{variants:{orientation:{horizontal:"flex-row flex-wrap",vertical:"flex-col"}},defaultVariants:{orientation:"horizontal"}}),Xe=X("",{variants:{orientation:{horizontal:"",vertical:"flex h-auto flex-col items-stretch"}},defaultVariants:{orientation:"horizontal"}});function Ze(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")}const Qe={Home:"House"};function et(e){if(!e)return null;const n=Ze(e),c=Qe[n]||n;return $.icons[c]||null}function fe(e){return e.label?e.label:We[e.type]||e.type}function Fe(e){return e.icon?et(e.icon):Ge[e.type]||null}function tt(e){return e.activeView?e.activeView:e.defaultView?e.defaultView:e.views?.[0]?.type}const pe=({schema:e,className:n,onViewChange:c,...u})=>{const w=O.useMemo(()=>e.storageKey?e.storageKey:`view-switcher${e.id?`-${e.id}`:""}`,[e.id,e.storageKey]),[g,F]=O.useState(()=>tt(e));O.useEffect(()=>{if(e.activeView){F(e.activeView);return}if(e.persistPreference)try{const d=localStorage.getItem(w);if(d){const x=e.views.find(L=>L.type===d)?.type;x&&F(x)}}catch{}},[e.activeView,e.persistPreference,e.views,w]),O.useEffect(()=>{if(!(!e.persistPreference||!g||e.activeView))try{localStorage.setItem(w,g)}catch{}},[g,e.activeView,e.persistPreference,w]);const y=O.useCallback(d=>{c?.(d),e.onViewChange&&typeof window<"u"&&window.dispatchEvent(new CustomEvent(e.onViewChange,{detail:{view:d}}))},[c,e.onViewChange]),E=O.useCallback(d=>{F(d),y(d)},[y]),N=g||e.views?.[0]?.type,C=N||"",s=e.views.find(d=>d.type===N)||e.views?.[0],S=e.variant||"tabs",m=e.position||"top",V=m==="left"||m==="right",o=V?"vertical":"horizontal",k=t.jsxs("div",{className:l.cn(Ke({orientation:o})),children:[S==="dropdown"&&t.jsxs(l.Select,{value:C,onValueChange:d=>E(d),children:[t.jsx(l.SelectTrigger,{className:l.cn("w-full",V?"h-10":"h-9"),children:t.jsx(l.SelectValue,{placeholder:"Select view"})}),t.jsx(l.SelectContent,{children:e.views.map((d,x)=>t.jsx(l.SelectItem,{value:d.type,children:fe(d)},`${d.type}-${x}`))})]}),S==="buttons"&&t.jsx("div",{className:l.cn(Je({orientation:o})),children:e.views.map((d,x)=>{const L=d.type===N,Z=Fe(d);return t.jsxs(l.Button,{type:"button",size:"sm",variant:L?"secondary":"ghost",className:l.cn("justify-start gap-2",V?"w-full":""),onClick:()=>E(d.type),children:[Z?t.jsx(Z,{className:"h-4 w-4"}):null,t.jsx("span",{children:fe(d)})]},`${d.type}-${x}`)})}),S==="tabs"&&t.jsx(l.Tabs,{value:C,onValueChange:d=>E(d),children:t.jsx(l.TabsList,{className:l.cn(Xe({orientation:o})),children:e.views.map((d,x)=>{const L=Fe(d);return t.jsxs(l.TabsTrigger,{value:d.type,className:l.cn("gap-2",V?"justify-start":""),children:[L?t.jsx(L,{className:"h-4 w-4"}):null,t.jsx("span",{children:fe(d)})]},`${d.type}-${x}`)})})})]}),A=s?.schema?Array.isArray(s.schema)?t.jsx("div",{className:"space-y-4",children:s.schema.map((d,x)=>t.jsx(je.SchemaRenderer,{schema:d,...u},`${s.type}-${x}`))}):t.jsx(je.SchemaRenderer,{schema:s.schema,...u}):null;return t.jsxs("div",{className:l.cn(He({position:m}),n),children:[t.jsx("div",{className:l.cn("shrink-0",V?"flex flex-col":"flex"),children:k}),t.jsx("div",{className:"flex-1 min-w-0",children:A})]})};let oe=null;try{oe=require("@object-ui/react").SchemaRenderer||null}catch{}const Te=({schema:e,dataSource:n,className:c,views:u,activeViewId:w,onViewChange:g,onRowClick:F,onEdit:y,renderListView:E,toolbarAddon:N})=>{const[C,s]=b.useState(null),[S,m]=b.useState(!1),[V,o]=b.useState("create"),[k,A]=b.useState(null),[d,x]=b.useState(0),[L,Z]=b.useState([]),[ye,ue]=b.useState(!1),[M,de]=b.useState({}),[q,De]=b.useState([]),z=e.listViews,Q=z!=null&&Object.keys(z).length>0,[G,ne]=b.useState(()=>e.defaultListView&&z?.[e.defaultListView]?e.defaultListView:z&&Object.keys(z)[0]||""),T=b.useMemo(()=>!Q||!G?null:z[G]||null,[Q,G,z]),R=b.useMemo(()=>u&&u.length>0?u:null,[u]),ie=R!=null&&R.length>0,ce=w||R?.[0]?.id,h=R?.find(i=>i.id===ce)||R?.[0],r=b.useMemo(()=>T?.type?T.type:h?.type?h.type:e.defaultViewType||"grid",[T,h,e.defaultViewType]),p=e.navigation;b.useEffect(()=>{let i=!0;const f=async()=>{try{const a=await n.getObjectSchema(e.objectName);i&&s(a)}catch(a){console.error("Failed to fetch object schema:",a)}};return e.objectName&&n&&f(),()=>{i=!1}},[e.objectName,n]),b.useEffect(()=>{let i=!0;return(async()=>{if(!(r==="grid"&&!E)&&!(!n||!e.objectName)){ue(!0);try{const a=T?.filter||h?.filter||e.table?.defaultFilters||[],U=Object.entries(M).filter(([,B])=>B!==void 0&&B!==""&&B!==null).map(([B,K])=>[B,"=",K]);let I=[];a.length>0&&U.length>0?I=["and",...a,...U]:U.length===1?I=U[0]:U.length>1?I=["and",...U]:I=a;const H=q.length>0?q.map(B=>({field:B.field,order:B.direction})):T?.sort||h?.sort||e.table?.defaultSort||void 0,D=await n.find(e.objectName,{$filter:I.length>0?I:void 0,$orderby:H,$top:100});let Y=[];Array.isArray(D)?Y=D:D&&typeof D=="object"&&(Array.isArray(D.data)?Y=D.data:Array.isArray(D.records)&&(Y=D.records)),i&&Z(Y)}catch(a){console.error("ObjectView data fetch error:",a)}finally{i&&ue(!1)}}})(),()=>{i=!1}},[e.objectName,n,r,M,q,d,T,h,E]);const v=e.layout||"drawer",j=e.operations||e.table?.operations||{create:!0,read:!0,update:!0,delete:!0},ee=b.useCallback(()=>{v==="page"&&e.onNavigate?e.onNavigate("new","edit"):(o("create"),A(null),m(!0))},[v,e]),te=b.useCallback(i=>{if(y){y(i);return}if(v==="page"&&e.onNavigate){const f=i._id||i.id;e.onNavigate(f,"edit")}else o("edit"),A(i),m(!0)},[v,e,y]),_=b.useCallback(i=>{if(v==="page"&&e.onNavigate){const f=i._id||i.id;e.onNavigate(f,"view")}else o("view"),A(i),m(!0)},[v,e]),W=b.useCallback(i=>{if(F){F(i);return}if(p){if(p.mode==="none"||p.preventNavigation)return;if(p.mode==="new_window"||p.openNewTab){const f=i._id||i.id,a=`/${e.objectName}/${f}`;window.open(a,"_blank");return}if(p.mode==="drawer"){o("view"),A(i),m(!0);return}if(p.mode==="modal"){o("view"),A(i),m(!0);return}if(p.mode==="page"){const f=i._id||i.id;e.onNavigate&&e.onNavigate(f,"view");return}}j.read!==!1&&_(i)},[F,p,j.read,_,e]),ae=b.useCallback(i=>{x(f=>f+1)},[]),ve=b.useCallback(i=>{x(f=>f+1)},[]),at=b.useCallback(()=>{m(!1),A(null),x(i=>i+1)},[]),st=b.useCallback(()=>{m(!1),A(null)},[]);b.useCallback(()=>{x(i=>i+1)},[]);const Pe=b.useMemo(()=>!ie||!R||R.length<=1?null:{type:"view-switcher",variant:"tabs",position:"top",persistPreference:!0,storageKey:`view-pref-${e.objectName}`,defaultView:h?.type||"grid",activeView:h?.type||"grid",views:R.map(i=>{const f={kanban:"kanban",calendar:"calendar",map:"map",gallery:"layout-grid",timeline:"activity",gantt:"gantt-chart",grid:"table",list:"list",detail:"file-text"};return{type:i.type,label:i.label,icon:f[i.type]||"table"}})},[ie,R,h,e.objectName]),ot=b.useCallback(i=>{if(!R)return;const f=R.find(a=>a.type===i);f&&g&&g(f.id)},[R,g]),ut=b.useCallback(i=>{ne(i)},[]);b.useMemo(()=>{if(e.showFilters===!1)return null;const i=e.filterableFields,f=C?.fields||{},U=(i?i.map(I=>[I,f[I]||{label:I}]):Object.entries(f).filter(([,I])=>!I.hidden).slice(0,8)).map(([I,H])=>{const D=H.type||"text";let Y="text",B;return D==="number"||D==="currency"||D==="percent"?Y="number":D==="boolean"||D==="toggle"?Y="boolean":D==="date"||D==="datetime"?Y="date":(D==="select"||H.options)&&(Y="select",B=(H.options||[]).map(K=>typeof K=="string"?{label:K,value:K}:{label:K.label,value:K.value})),{field:I,label:H.label||I,type:Y,placeholder:`Filter ${H.label||I}...`,...B?{options:B}:{}}});return U.length===0?null:{type:"filter-ui",layout:"popover",showClear:!0,showApply:!0,filters:U,values:M}},[e.showFilters,e.filterableFields,C,M]),b.useMemo(()=>{const i=C?.fields||{},f=Object.entries(i).filter(([,a])=>!a.hidden).slice(0,10).map(([a,U])=>({field:a,label:U.label||a}));return f.length===0?null:{type:"sort-ui",variant:"dropdown",multiple:!1,fields:f,sort:q}},[C,q]);const dt=b.useCallback(i=>{const f={objectName:e.objectName,fields:T?.columns||h?.columns||e.table?.fields,className:"h-full w-full",showSearch:!1},a=T?.options||h||{};switch(i){case"kanban":return{type:"object-kanban",...f,groupBy:a.kanban?.groupField||a.groupBy||a.groupField||"status",groupField:a.kanban?.groupField||a.groupField||"status",titleField:a.kanban?.titleField||a.titleField||"name",cardFields:f.fields||[],...a.kanban||{}};case"calendar":return{type:"object-calendar",...f,startDateField:a.calendar?.startDateField||a.startDateField||"start_date",endDateField:a.calendar?.endDateField||a.endDateField||"end_date",titleField:a.calendar?.titleField||a.titleField||"name",...a.calendar||{}};case"gallery":return{type:"object-gallery",...f,imageField:a.gallery?.imageField||a.imageField,titleField:a.gallery?.titleField||a.titleField||"name",subtitleField:a.gallery?.subtitleField||a.subtitleField,...a.gallery||{}};case"timeline":return{type:"object-timeline",...f,dateField:a.timeline?.dateField||a.dateField||"created_at",titleField:a.timeline?.titleField||a.titleField||"name",...a.timeline||{}};case"gantt":return{type:"object-gantt",...f,startDateField:a.gantt?.startDateField||a.startDateField||"start_date",endDateField:a.gantt?.endDateField||a.endDateField||"end_date",progressField:a.gantt?.progressField||a.progressField||"progress",dependenciesField:a.gantt?.dependenciesField||a.dependenciesField||"dependencies",...a.gantt||{}};case"map":return{type:"object-map",...f,locationField:a.map?.locationField||a.locationField||"location",...a.map||{}};default:return null}},[e.objectName,e.table?.fields,T,h]),ct=b.useMemo(()=>({type:"object-grid",objectName:e.objectName,title:e.table?.title,description:e.table?.description,fields:T?.columns||h?.columns||e.table?.fields,columns:T?.columns||h?.columns||e.table?.columns,operations:{...j,create:!1},defaultFilters:T?.filter||h?.filter||e.table?.defaultFilters,defaultSort:T?.sort||h?.sort||e.table?.defaultSort,pageSize:e.table?.pageSize,selectable:e.table?.selectable,className:e.table?.className}),[e,j,T,h]),Ie=()=>{const i=k?k._id||k.id:void 0;return{type:"object-form",objectName:e.objectName,mode:V,recordId:i,title:e.form?.title,description:e.form?.description,fields:e.form?.fields,customFields:e.form?.customFields,groups:e.form?.groups,layout:e.form?.layout,columns:e.form?.columns,showSubmit:e.form?.showSubmit,submitText:e.form?.submitText,showCancel:e.form?.showCancel,cancelText:e.form?.cancelText,showReset:e.form?.showReset,initialValues:e.form?.initialValues,readOnly:e.form?.readOnly||V==="view",className:e.form?.className,onSuccess:at,onCancel:st}},Re=()=>{if(e.form?.title)return e.form.title;const i=C?.label||e.objectName;switch(V){case"create":return`Create ${i}`;case"edit":return`Edit ${i}`;case"view":return`View ${i}`;default:return i}},$e=b.useMemo(()=>{const i=p?.width;return i?typeof i=="number"?`max-w-[${i}px]`:`max-w-[${i}]`:""},[p]),ft=()=>t.jsx(l.Drawer,{open:S,onOpenChange:m,direction:"right",children:t.jsxs(l.DrawerContent,{className:l.cn("w-full sm:max-w-2xl",$e),children:[t.jsxs(l.DrawerHeader,{children:[t.jsx(l.DrawerTitle,{children:Re()}),e.form?.description&&t.jsx(l.DrawerDescription,{children:e.form.description})]}),t.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-4",children:t.jsx(me.ObjectForm,{schema:Ie(),dataSource:n})})]})}),pt=()=>t.jsx(l.Dialog,{open:S,onOpenChange:m,children:t.jsxs(l.DialogContent,{className:l.cn("max-w-2xl max-h-[90vh] overflow-y-auto",$e),children:[t.jsxs(l.DialogHeader,{children:[t.jsx(l.DialogTitle,{children:Re()}),e.form?.description&&t.jsx(l.DialogDescription,{children:e.form.description})]}),t.jsx(me.ObjectForm,{schema:Ie(),dataSource:n})]})}),bt=b.useMemo(()=>Object.keys(M).some(f=>M[f]!==void 0&&M[f]!==""&&M[f]!==null)?Object.entries(M).filter(([,f])=>f!==void 0&&f!==""&&f!==null).map(([f,a])=>({field:f,operator:"equals",value:a})):T?.filter||h?.filter||e.table?.defaultFilters,[M,T,h,e.table?.defaultFilters]),wt=b.useMemo(()=>q.length>0?q:T?.sort||h?.sort||e.table?.defaultSort,[q,T,h,e.table?.defaultSort]),gt=()=>{const i=`${e.objectName}-${G||h?.id||"default"}-${r}-${d}`;if(E)return E({schema:{type:"list-view",objectName:e.objectName,viewType:r,fields:T?.columns||h?.columns||e.table?.fields,filters:bt,sort:wt,options:T?.options||h},dataSource:n,onEdit:te,onRowClick:W,className:"h-full"});if(r!=="grid"){const f=dt(r);if(f&&oe)return t.jsx(oe,{schema:f,dataSource:n,data:L,loading:ye},i);if(!oe)return t.jsx("div",{className:"flex items-center justify-center h-40 text-muted-foreground",children:t.jsxs("p",{children:["SchemaRenderer not available. Install @object-ui/react to render ",r," views."]})})}return t.jsx(Me.ObjectGrid,{schema:ct,dataSource:n,onRowClick:W,onEdit:j.update!==!1?te:void 0,onDelete:j.delete!==!1?ae:void 0,onBulkDelete:j.delete!==!1?ve:void 0},i)},yt=()=>{if(!Q)return null;const i=Object.entries(z);return i.length<=1?null:t.jsx(l.Tabs,{value:G,onValueChange:ut,className:"w-full",children:t.jsx(l.TabsList,{className:"w-auto",children:i.map(([f,a])=>t.jsx(l.TabsTrigger,{value:f,className:"text-sm",children:a.label||f},f))})})},vt=()=>{const i=e.showCreate!==!1&&j.create!==!1,f=e.showViewSwitcher===!0,a=yt();return!a&&!f&&!i&&!N?null:t.jsxs("div",{className:"flex flex-col gap-3",children:[a,(f||i||N)&&t.jsxs("div",{className:"flex items-center justify-between gap-4",children:[t.jsx("div",{className:"flex items-center gap-2",children:f&&Pe&&t.jsx(pe,{schema:Pe,onViewChange:ot,className:"overflow-x-auto"})}),t.jsxs("div",{className:"flex items-center gap-2",children:[N,i&&t.jsxs(l.Button,{size:"sm",onClick:ee,children:[t.jsx($.Plus,{className:"h-4 w-4"}),"Create"]})]})]})]})},Le=p?.mode==="modal"?"modal":p?.mode==="drawer"?"drawer":v;return t.jsxs("div",{className:l.cn("flex flex-col h-full",c),children:[(e.title||e.description)&&t.jsxs("div",{className:"mb-4 shrink-0",children:[e.title&&t.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:e.title}),e.description&&t.jsx("p",{className:"text-muted-foreground mt-1",children:e.description})]}),t.jsx("div",{className:"mb-4 shrink-0",children:vt()}),t.jsx("div",{className:"flex-1 min-h-0",children:gt()}),Le==="drawer"&&ft(),Le==="modal"&&pt()]})},be=X("flex",{variants:{layout:{inline:"flex-col space-y-4",popover:"items-center",drawer:"items-center"}},defaultVariants:{layout:"inline"}}),rt=e=>e==null||e===""?!0:Array.isArray(e)?e.length===0:typeof e=="object"?Object.values(e).every(n=>n==null||n===""):!1,lt=e=>Array.isArray(e)?{start:e[0]||"",end:e[1]||""}:e&&typeof e=="object"?{start:e.start||"",end:e.end||""}:{start:"",end:""},Ee=({schema:e,className:n,onChange:c})=>{const[u,w]=O.useState(e.values||{}),[g,F]=O.useState(!1);O.useEffect(()=>{e.values&&w(e.values)},[e.values]);const y=O.useCallback(o=>{c?.(o),e.onChange&&typeof window<"u"&&window.dispatchEvent(new CustomEvent(e.onChange,{detail:{values:o}}))},[c,e.onChange]),E=O.useCallback((o,k)=>{const A={...u,[o]:k};w(A),e.showApply||y(A)},[y,e.showApply,u]),N=O.useCallback(()=>{const o={};if(w(o),e.showApply){y(o);return}y(o)},[y,e.showApply]),C=O.useCallback(()=>{y(u),F(!1)},[y,u]),s=O.useMemo(()=>Object.values(u).filter(o=>!rt(o)).length,[u]),S=o=>{const k=o.label||o.field,A=o.placeholder||`Filter by ${k}`;switch(o.type){case"number":return t.jsx(l.Input,{type:"number",value:u[o.field]??"",placeholder:A,onChange:d=>{const x=d.target.value,L=x===""?"":Number(x);E(o.field,L)}});case"select":return t.jsxs(l.Select,{value:u[o.field]!==void 0?String(u[o.field]):"",onValueChange:d=>{const x=o.options?.find(L=>String(L.value)===d);E(o.field,x?x.value:d)},children:[t.jsx(l.SelectTrigger,{children:t.jsx(l.SelectValue,{placeholder:A})}),t.jsx(l.SelectContent,{children:o.options?.map(d=>t.jsx(l.SelectItem,{value:String(d.value),children:d.label},String(d.value)))})]});case"date":return t.jsx(l.Input,{type:"date",value:u[o.field]??"",onChange:d=>E(o.field,d.target.value)});case"date-range":{const d=lt(u[o.field]);return t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(l.Input,{type:"date",value:d.start??"",onChange:x=>{E(o.field,{...d,start:x.target.value})}}),t.jsx(l.Input,{type:"date",value:d.end??"",onChange:x=>{E(o.field,{...d,end:x.target.value})}})]})}case"boolean":return t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(l.Checkbox,{checked:!!u[o.field],onCheckedChange:d=>E(o.field,!!d)}),t.jsx("span",{className:"text-sm text-muted-foreground",children:"Enabled"})]});default:return t.jsx(l.Input,{value:u[o.field]??"",placeholder:A,onChange:d=>E(o.field,d.target.value)})}},m=t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"grid gap-4 sm:grid-cols-2",children:e.filters.map(o=>t.jsxs("div",{className:"space-y-2",children:[t.jsx(l.Label,{className:"text-xs text-muted-foreground",children:o.label||o.field}),S(o)]},o.field))}),(e.showApply||e.showClear)&&t.jsxs("div",{className:"flex items-center justify-end gap-2 border-t pt-3",children:[e.showClear&&t.jsx(l.Button,{type:"button",variant:"ghost",size:"sm",onClick:N,children:"Clear"}),e.showApply&&t.jsx(l.Button,{type:"button",size:"sm",onClick:C,children:"Apply"})]})]}),V=e.layout||"inline";return V==="popover"?t.jsx("div",{className:l.cn(be({layout:V}),n),children:t.jsxs(l.Popover,{open:g,onOpenChange:F,children:[t.jsx(l.PopoverTrigger,{asChild:!0,children:t.jsxs(l.Button,{type:"button",variant:s>0?"secondary":"outline",size:"sm",className:"gap-2",children:[t.jsx($.SlidersHorizontal,{className:"h-4 w-4"}),"Filters",s>0&&t.jsx("span",{className:"inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary/10 px-1 text-xs font-medium text-primary",children:s})]})}),t.jsx(l.PopoverContent,{align:"start",className:"w-[520px] p-4",children:m})]})}):V==="drawer"?t.jsxs("div",{className:l.cn(be({layout:V}),n),children:[t.jsxs(l.Button,{type:"button",variant:s>0?"secondary":"outline",size:"sm",className:"gap-2",onClick:()=>F(!0),children:[t.jsx($.SlidersHorizontal,{className:"h-4 w-4"}),"Filters",s>0&&t.jsx("span",{className:"inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary/10 px-1 text-xs font-medium text-primary",children:s})]}),t.jsx(l.Drawer,{open:g,onOpenChange:F,children:t.jsxs(l.DrawerContent,{children:[t.jsxs(l.DrawerHeader,{children:[t.jsx(l.DrawerTitle,{children:"Filters"}),t.jsx(l.DrawerDescription,{children:"Refine the data with advanced filters."})]}),t.jsx("div",{className:"px-4 pb-6",children:m})]})})]}):t.jsxs("div",{className:l.cn(be({layout:V}),n),children:[m,!e.showApply&&e.showClear&&t.jsxs(l.Button,{type:"button",variant:"ghost",size:"sm",className:"gap-2",onClick:N,children:[t.jsx($.X,{className:"h-3.5 w-3.5"}),"Clear filters"]})]})},we=X("",{variants:{variant:{buttons:"flex flex-wrap gap-2",dropdown:"flex flex-wrap items-center gap-3",builder:"space-y-3"}},defaultVariants:{variant:"dropdown"}}),ge=e=>e?e.map(n=>({field:n.field,direction:n.direction})):[],_e=e=>e.map(n=>({id:`${n.field}-${n.direction}`,field:n.field,order:n.direction})),nt=e=>e.filter(n=>n.field).map(n=>({field:n.field,direction:n.order})),ke=({schema:e,className:n,onChange:c})=>{const[u,w]=O.useState(()=>ge(e.sort)),[g,F]=O.useState(()=>_e(ge(e.sort)));O.useEffect(()=>{const s=ge(e.sort);w(s),F(_e(s))},[e.sort]);const y=O.useCallback(s=>{w(s),c?.(s),e.onChange&&typeof window<"u"&&window.dispatchEvent(new CustomEvent(e.onChange,{detail:{sort:s}}))},[c,e.onChange]),E=O.useCallback(s=>{const S=u.find(o=>o.field===s),m=!!e.multiple;if(!S){const o=m?[...u,{field:s,direction:"asc"}]:[{field:s,direction:"asc"}];y(o);return}if(S.direction==="asc"){const o=u.map(k=>k.field===s?{...k,direction:"desc"}:k);y(o);return}const V=u.filter(o=>o.field!==s);y(V)},[y,e.multiple,u]);if((e.variant||"dropdown")==="buttons")return t.jsx("div",{className:l.cn(we({variant:"buttons"}),n),children:e.fields.map(s=>{const S=u.find(V=>V.field===s.field),m=S?.direction==="asc"?$.ArrowUp:$.ArrowDown;return t.jsxs(l.Button,{type:"button",variant:S?"secondary":"outline",size:"sm",onClick:()=>E(s.field),className:"gap-2",children:[t.jsx("span",{children:s.label||s.field}),S&&t.jsx(m,{className:"h-3.5 w-3.5"})]},s.field)})});if(e.multiple)return t.jsx("div",{className:l.cn(we({variant:"builder"}),n),children:t.jsx(l.SortBuilder,{fields:e.fields.map(s=>({value:s.field,label:s.label||s.field})),value:g,onChange:s=>{F(s),y(nt(s))}})});const C=u[0];return t.jsxs("div",{className:l.cn(we({variant:"dropdown"}),n),children:[t.jsxs(l.Select,{value:C?.field||"",onValueChange:s=>{if(!s){y([]);return}y([{field:s,direction:C?.direction||"asc"}])},children:[t.jsx(l.SelectTrigger,{className:"w-56",children:t.jsx(l.SelectValue,{placeholder:"Select field"})}),t.jsx(l.SelectContent,{children:e.fields.map(s=>t.jsx(l.SelectItem,{value:s.field,children:s.label||s.field},s.field))})]}),t.jsxs(l.Select,{value:C?.direction||"asc",onValueChange:s=>{C?.field&&y([{field:C.field,direction:s}])},children:[t.jsx(l.SelectTrigger,{className:"w-36",children:t.jsx(l.SelectValue,{})}),t.jsxs(l.SelectContent,{children:[t.jsx(l.SelectItem,{value:"asc",children:"Ascending"}),t.jsx(l.SelectItem,{value:"desc",children:"Descending"})]})]})]})};let Oe=b.createContext(null);try{const e=require("@object-ui/react");e.SchemaRendererContext&&(Oe=e.SchemaRendererContext)}catch{}const Ae=({schema:e})=>{const c=b.useContext(Oe)?.dataSource??null;return t.jsx(Te,{schema:e,dataSource:c})};J.ComponentRegistry.register("object-view",Ae,{namespace:"plugin-view",label:"Object View",category:"view",icon:"LayoutDashboard",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"layout",type:"enum",label:"Form Layout",enum:["drawer","modal","page"]},{name:"defaultViewType",type:"enum",label:"Default View Type",enum:["grid","kanban","gallery","calendar","timeline","gantt","map"]},{name:"defaultListView",type:"string",label:"Default Named View"},{name:"showSearch",type:"boolean",label:"Show Search"},{name:"showFilters",type:"boolean",label:"Show Filters"},{name:"showCreate",type:"boolean",label:"Show Create Button"},{name:"showRefresh",type:"boolean",label:"Show Refresh Button"},{name:"showViewSwitcher",type:"boolean",label:"Show View Switcher"},{name:"listViews",type:"object",label:"Named List Views"},{name:"navigation",type:"object",label:"Navigation Config"},{name:"searchableFields",type:"array",label:"Searchable Fields"},{name:"filterableFields",type:"array",label:"Filterable Fields"}],defaultProps:{layout:"drawer",defaultViewType:"grid",showSearch:!0,showFilters:!0,showCreate:!0,showRefresh:!0,showViewSwitcher:!0}}),J.ComponentRegistry.register("view",Ae,{namespace:"plugin-view",label:"View",category:"view"}),J.ComponentRegistry.register("view-switcher",pe,{namespace:"view",label:"View Switcher",category:"view",icon:"LayoutGrid",inputs:[{name:"views",type:"array",label:"Views",required:!0},{name:"defaultView",type:"string",label:"Default View"},{name:"activeView",type:"string",label:"Active View"},{name:"variant",type:"enum",label:"Variant",enum:["tabs","buttons","dropdown"]},{name:"position",type:"enum",label:"Position",enum:["top","bottom","left","right"]},{name:"persistPreference",type:"boolean",label:"Persist Preference"},{name:"storageKey",type:"string",label:"Storage Key"},{name:"onViewChange",type:"string",label:"On View Change Event"}],defaultProps:{variant:"tabs",position:"top",defaultView:"grid",views:[{type:"grid",label:"Grid",schema:{type:"text",content:"Grid view"}},{type:"list",label:"List",schema:{type:"text",content:"List view"}}]}}),J.ComponentRegistry.register("filter-ui",Ee,{namespace:"view",label:"Filter UI",category:"view",icon:"SlidersHorizontal",inputs:[{name:"filters",type:"array",label:"Filters",required:!0},{name:"values",type:"object",label:"Values"},{name:"onChange",type:"string",label:"On Change Event"},{name:"showClear",type:"boolean",label:"Show Clear Button"},{name:"showApply",type:"boolean",label:"Show Apply Button"},{name:"layout",type:"enum",label:"Layout",enum:["inline","popover","drawer"]}],defaultProps:{layout:"inline",showApply:!1,showClear:!0,filters:[{field:"name",label:"Name",type:"text",placeholder:"Search name"},{field:"status",label:"Status",type:"select",options:[{label:"Open",value:"open"},{label:"Closed",value:"closed"}]},{field:"created_at",label:"Created",type:"date"}]}}),J.ComponentRegistry.register("sort-ui",ke,{namespace:"view",label:"Sort UI",category:"view",icon:"ArrowUpDown",inputs:[{name:"fields",type:"array",label:"Fields",required:!0},{name:"sort",type:"array",label:"Sort"},{name:"onChange",type:"string",label:"On Change Event"},{name:"multiple",type:"boolean",label:"Allow Multiple"},{name:"variant",type:"enum",label:"Variant",enum:["dropdown","buttons"]}],defaultProps:{variant:"dropdown",multiple:!0,fields:[{field:"name",label:"Name"},{field:"created_at",label:"Created At"}],sort:[{field:"name",direction:"asc"}]}});const it=({schema:e,className:n,children:c,dataSource:u,...w})=>{const g=e.props?.columns?{display:"grid",gridTemplateColumns:`repeat(${e.props.columns}, 1fr)`,gap:"1rem"}:void 0;return t.jsx("div",{className:n,style:g,...w,children:c})};J.ComponentRegistry.register("view:simple",it,{namespace:"plugin-view",label:"Simple View",category:"view"}),P.FilterUI=Ee,P.ObjectView=Te,P.SortUI=ke,P.ViewSwitcher=pe,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})}));
6
+ <%s key={someKey} {...props} />`,I,W,oe,W),me[W+I]=!0)}if(W=null,M!==void 0&&(n(M),W=""+M),c(u)&&(n(u.key),W=""+u.key),"key"in u){M={};for(var ce in u)ce!=="key"&&(M[ce]=u[ce])}else M=u;return W&&a(M,typeof b=="function"?b.displayName||b.name||"Unknown":b),g(b,W,M,s(),se,Y)}function d(b){m(b)?b._store&&(b._store.validated=1):typeof b=="object"&&b!==null&&b.$$typeof===P&&(b._payload.status==="fulfilled"?m(b._payload.value)&&b._payload.value._store&&(b._payload.value._store.validated=1):b._store&&(b._store.validated=1))}function m(b){return typeof b=="object"&&b!==null&&b.$$typeof===D}var w=l,D=Symbol.for("react.transitional.element"),p=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),N=Symbol.for("react.consumer"),F=Symbol.for("react.context"),V=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),y=Symbol.for("react.suspense_list"),k=Symbol.for("react.memo"),P=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),B=Symbol.for("react.client.reference"),R=w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te=Object.prototype.hasOwnProperty,J=Array.isArray,ue=console.createTask?console.createTask:function(){return null};w={react_stack_bottom_frame:function(b){return b()}};var fe,ee={},z=w.react_stack_bottom_frame.bind(w,o)(),q=ue(r(o)),me={};Ze.Fragment=S,Ze.jsx=function(b,u,M){var I=1e4>R.recentlyCreatedOwnerStacks++;return x(b,u,M,!1,I?Error("react-stack-top-frame"):z,I?ue(r(b)):q)},Ze.jsxs=function(b,u,M){var I=1e4>R.recentlyCreatedOwnerStacks++;return x(b,u,M,!0,I?Error("react-stack-top-frame"):z,I?ue(r(b)):q)}})()),Ze}var ln;function rr(){return ln||(ln=1,process.env.NODE_ENV==="production"?bt.exports=tr():bt.exports=nr()),bt.exports}var i=rr();function an(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=an(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function ir(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=an(e))&&(r&&(r+=" "),r+=t);return r}const cn=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,dn=ir,Ye=(e,t)=>n=>{var r;if(t?.variants==null)return dn(e,n?.class,n?.className);const{variants:s,defaultVariants:o}=t,c=Object.keys(s).map(g=>{const x=n?.[g],d=o?.[g];if(x===null)return null;const m=cn(x)||cn(d);return s[g][m]}),a=n&&Object.entries(n).reduce((g,x)=>{let[d,m]=x;return m===void 0||(g[d]=m),g},{}),f=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((g,x)=>{let{class:d,className:m,...w}=x;return Object.entries(w).every(D=>{let[p,S]=D;return Array.isArray(S)?S.includes({...o,...a}[p]):{...o,...a}[p]===S})?[...g,d,m]:g},[]);return dn(e,c,f,n?.class,n?.className)},sr={list:"List",detail:"Detail",grid:"Grid",kanban:"Kanban",calendar:"Calendar",timeline:"Timeline",map:"Map",gallery:"Gallery",gantt:"Gantt"},or={list:O.List,detail:O.FileText,grid:O.Grid,kanban:O.LayoutGrid,calendar:O.Calendar,timeline:O.Activity,map:O.Map,gallery:O.Images,gantt:O.GanttChartSquare},lr=Ye("flex gap-4",{variants:{position:{top:"flex-col",bottom:"flex-col-reverse",left:"flex-row",right:"flex-row-reverse"}},defaultVariants:{position:"top"}}),ar=Ye("w-full",{variants:{orientation:{horizontal:"w-full",vertical:"w-48"}},defaultVariants:{orientation:"horizontal"}}),cr=Ye("flex gap-2",{variants:{orientation:{horizontal:"flex-row flex-wrap",vertical:"flex-col"}},defaultVariants:{orientation:"horizontal"}}),dr=Ye("",{variants:{orientation:{horizontal:"",vertical:"flex h-auto flex-col items-stretch"}},defaultVariants:{orientation:"horizontal"}});function ur(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}const fr={Home:"House"};function un(e){if(!e)return null;const t=ur(e),n=fr[t]||t;return O.icons[n]||null}function It(e){return e.label?e.label:sr[e.type]||e.type}function fn(e){return e.icon?un(e.icon):or[e.type]||null}function hr(e){return e.activeView?e.activeView:e.defaultView?e.defaultView:e.views?.[0]?.type}const hn={share:O.Share2,settings:O.Settings,duplicate:O.Copy,delete:O.Trash2},pr={share:"Share",settings:"Settings",duplicate:"Duplicate",delete:"Delete"},Ot=({schema:e,className:t,onViewChange:n,onCreateView:r,onViewAction:s,createViewLabel:o="Create view",...c})=>{const a=X.useMemo(()=>e.storageKey?e.storageKey:`view-switcher${e.id?`-${e.id}`:""}`,[e.id,e.storageKey]),[f,g]=X.useState(()=>hr(e));X.useEffect(()=>{if(e.activeView){g(e.activeView);return}if(e.persistPreference)try{const y=localStorage.getItem(a);if(y){const k=e.views.find(P=>P.type===y)?.type;k&&g(k)}}catch{}},[e.activeView,e.persistPreference,e.views,a]),X.useEffect(()=>{if(!(!e.persistPreference||!f||e.activeView))try{localStorage.setItem(a,f)}catch{}},[f,e.activeView,e.persistPreference,a]);const x=X.useCallback(y=>{n?.(y),e.onViewChange&&typeof window<"u"&&window.dispatchEvent(new CustomEvent(e.onViewChange,{detail:{view:y}}))},[n,e.onViewChange]),d=X.useCallback(y=>{g(y),x(y)},[x]),m=f||e.views?.[0]?.type,w=m||"",D=e.views.find(y=>y.type===m)||e.views?.[0],p=e.variant||"tabs",S=e.position||"top",E=S==="left"||S==="right",C=E?"vertical":"horizontal",N=e.viewActions&&e.viewActions.length>0?i.jsx("div",{className:"flex items-center gap-1",children:e.viewActions.map((y,k)=>{const P=y.icon&&un(y.icon)||hn[y.type];return i.jsx(h.Button,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>s?.(y.type,m),title:pr[y.type]||y.type,children:P?i.jsx(P,{className:"h-3.5 w-3.5"}):null},`action-${y.type}-${k}`)})}):null,F=e.allowCreateView?i.jsx(h.Button,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>r?.(),title:o,children:i.jsx(O.Plus,{className:"h-3.5 w-3.5"})}):null,V=i.jsxs("div",{className:h.cn(ar({orientation:C}),"flex items-center gap-1"),children:[p==="dropdown"&&i.jsxs(h.Select,{value:w,onValueChange:y=>d(y),children:[i.jsx(h.SelectTrigger,{className:h.cn("w-full",E?"h-10":"h-9"),children:i.jsx(h.SelectValue,{placeholder:"Select view"})}),i.jsx(h.SelectContent,{children:e.views.map((y,k)=>i.jsx(h.SelectItem,{value:y.type,children:It(y)},`${y.type}-${k}`))})]}),p==="buttons"&&i.jsx("div",{className:h.cn(cr({orientation:C})),children:e.views.map((y,k)=>{const P=y.type===m,_=fn(y);return i.jsxs(h.Button,{type:"button",size:"sm",variant:P?"secondary":"ghost",className:h.cn("justify-start gap-2",E?"w-full":""),onClick:()=>d(y.type),children:[_?i.jsx(_,{className:"h-4 w-4"}):null,i.jsx("span",{children:It(y)})]},`${y.type}-${k}`)})}),p==="tabs"&&i.jsx(h.Tabs,{value:w,onValueChange:y=>d(y),children:i.jsx(h.TabsList,{className:h.cn(dr({orientation:C})),children:e.views.map((y,k)=>{const P=fn(y);return i.jsxs(h.TabsTrigger,{value:y.type,className:h.cn("gap-2",E?"justify-start":""),children:[P?i.jsx(P,{className:"h-4 w-4"}):null,i.jsx("span",{children:It(y)})]},`${y.type}-${k}`)})})}),N,F]}),L=D?.schema?Array.isArray(D.schema)?i.jsx("div",{className:"space-y-4",children:D.schema.map((y,k)=>i.jsx(rn.SchemaRenderer,{schema:y,...c},`${D.type}-${k}`))}):i.jsx(rn.SchemaRenderer,{schema:D.schema,...c}):null;return i.jsxs("div",{className:h.cn(lr({position:S}),t),children:[i.jsx("div",{className:h.cn("shrink-0",E?"flex flex-col":"flex"),children:V}),i.jsx("div",{className:"flex-1 min-w-0",children:L})]})};let vt=null;try{vt=require("@object-ui/react").SchemaRenderer||null}catch{}const pn=({schema:e,dataSource:t,className:n,views:r,activeViewId:s,onViewChange:o,onRowClick:c,onEdit:a,renderListView:f,toolbarAddon:g,onCreateView:x,onViewAction:d})=>{const[m,w]=l.useState(null),[D,p]=l.useState(!1),[S,E]=l.useState("create"),[C,N]=l.useState(null),[F,V]=l.useState(0),[L,y]=l.useState([]),[k,P]=l.useState(!1),[_,B]=l.useState({}),[R,te]=l.useState([]),J=e.listViews,ue=J!=null&&Object.keys(J).length>0,[fe,ee]=l.useState(()=>e.defaultListView&&J?.[e.defaultListView]?e.defaultListView:J&&Object.keys(J)[0]||""),z=l.useMemo(()=>!ue||!fe?null:J[fe]||null,[ue,fe,J]),q=l.useMemo(()=>r&&r.length>0?r:null,[r]),me=q!=null&&q.length>0,b=s||q?.[0]?.id,u=q?.find(j=>j.id===b)||q?.[0],M=l.useMemo(()=>z?.type?z.type:u?.type?u.type:e.defaultViewType||"grid",[z,u,e.defaultViewType]),I=e.navigation;l.useEffect(()=>{let j=!0;const T=async()=>{try{const A=await t.getObjectSchema(e.objectName);j&&w(A)}catch(A){console.error("Failed to fetch object schema:",A)}};return e.objectName&&t&&T(),()=>{j=!1}},[e.objectName,t]),l.useEffect(()=>{let j=!0;return(async()=>{if(!(M==="grid"&&!f)&&!(!t||!e.objectName)){P(!0);try{const A=z?.filter||u?.filter||e.table?.defaultFilters||[],ve=Object.entries(_).filter(([,H])=>H!==void 0&&H!==""&&H!==null).map(([H,xe])=>[H,"=",xe]);let ie=[];A.length>0&&ve.length>0?ie=["and",...A,...ve]:ve.length===1?ie=ve[0]:ve.length>1?ie=["and",...ve]:ie=A;const De=R.length>0?R.map(H=>({field:H.field,order:H.direction})):z?.sort||u?.sort||e.table?.defaultSort||void 0,ge=Ve.buildExpandFields(m?.fields),be=await t.find(e.objectName,{$filter:ie.length>0?ie:void 0,$orderby:De,$top:100,...ge.length>0?{$expand:ge}:{}});let Q=[];Array.isArray(be)?Q=be:be&&typeof be=="object"&&(Array.isArray(be.data)?Q=be.data:Array.isArray(be.records)&&(Q=be.records)),j&&y(Q)}catch(A){console.error("ObjectView data fetch error:",A)}finally{j&&P(!1)}}})(),()=>{j=!1}},[e.objectName,t,M,_,R,F,z,u,f,m]);const se=e.layout||"drawer",Y=e.operations||e.table?.operations||{create:!0,read:!0,update:!0,delete:!0},W=l.useCallback(()=>{se==="page"&&e.onNavigate?e.onNavigate("new","edit"):(E("create"),N(null),p(!0))},[se,e]),oe=l.useCallback(j=>{if(a){a(j);return}if(se==="page"&&e.onNavigate){const T=j._id||j.id;e.onNavigate(T,"edit")}else E("edit"),N(j),p(!0)},[se,e,a]),ce=l.useCallback(j=>{if(se==="page"&&e.onNavigate){const T=j._id||j.id;e.onNavigate(T,"view")}else E("view"),N(j),p(!0)},[se,e]),v=l.useCallback(j=>{if(c){c(j);return}if(I){if(I.mode==="none"||I.preventNavigation)return;if(I.mode==="new_window"||I.openNewTab){const T=j._id||j.id,A=`/${e.objectName}/${T}`;window.open(A,"_blank");return}if(I.mode==="drawer"){E("view"),N(j),p(!0);return}if(I.mode==="modal"){E("view"),N(j),p(!0);return}if(I.mode==="page"){const T=j._id||j.id;e.onNavigate&&e.onNavigate(T,"view");return}if(I.mode==="split"||I.mode==="popover"){E("view"),N(j),p(!0);return}}Y.read!==!1&&ce(j)},[c,I,Y.read,ce,e]),Z=l.useCallback(j=>{V(T=>T+1)},[]),K=l.useCallback(j=>{V(T=>T+1)},[]),ne=l.useCallback(()=>{p(!1),N(null),V(j=>j+1)},[]),U=l.useCallback(()=>{p(!1),N(null)},[]);l.useCallback(()=>{V(j=>j+1)},[]);const ye=l.useMemo(()=>!me||!q||q.length<=1?null:{type:"view-switcher",variant:"tabs",position:"top",persistPreference:!0,storageKey:`view-pref-${e.objectName}`,defaultView:u?.type||"grid",activeView:u?.type||"grid",views:q.map(j=>{const T={kanban:"kanban",calendar:"calendar",map:"map",gallery:"layout-grid",timeline:"activity",gantt:"gantt-chart",grid:"table",list:"list",detail:"file-text"};return{type:j.type,label:j.label,icon:T[j.type]||"table"}}),allowCreateView:e.allowCreateView,viewActions:e.viewActions},[me,q,u,e.objectName,e.allowCreateView,e.viewActions]),he=l.useCallback(j=>{if(!q)return;const T=q.find(A=>A.type===j);T&&o&&o(T.id)},[q,o]),ct=l.useCallback(j=>{ee(j)},[]);l.useMemo(()=>{if(e.showFilters===!1)return null;const j=e.filterableFields,T=m?.fields||{},ve=(j?j.map(ie=>[ie,T[ie]||{label:ie}]):Object.entries(T).filter(([,ie])=>!ie.hidden).slice(0,8)).map(([ie,De])=>{const ge=De.type||"text";let be="text",Q;return ge==="number"||ge==="currency"||ge==="percent"?be="number":ge==="boolean"||ge==="toggle"?be="boolean":ge==="date"||ge==="datetime"?be="date":(ge==="select"||De.options)&&(be="select",Q=(De.options||[]).map(H=>typeof H=="string"?{label:H,value:H}:{label:H.label,value:H.value})),{field:ie,label:De.label||ie,type:be,placeholder:`Filter ${De.label||ie}...`,...Q?{options:Q}:{}}});return ve.length===0?null:{type:"filter-ui",layout:"popover",showClear:!0,showApply:!0,filters:ve,values:_}},[e.showFilters,e.filterableFields,m,_]);const Re=e.showSort;l.useMemo(()=>{if(Re===!1)return null;const j=m?.fields||{},T=Object.entries(j).filter(([,A])=>!A.hidden).slice(0,10).map(([A,ve])=>({field:A,label:ve.label||A}));return T.length===0?null:{type:"sort-ui",variant:"dropdown",multiple:!1,fields:T,sort:R}},[m,R,Re]);const Le=l.useCallback(j=>{const T={objectName:e.objectName,fields:z?.columns||u?.columns||e.table?.fields,className:"h-full w-full",showSearch:u?.showSearch??e.showSearch??!1,showSort:u?.showSort??e.showSort??!1,showFilters:u?.showFilters??e.showFilters??!1,striped:u?.striped??!1,bordered:u?.bordered??!1,color:u?.color},A=z?.options||u||{};if(process.env.NODE_ENV==="development"){const ve=["startDateField","endDateField","dateField","groupBy","groupField","locationField","imageField","dependenciesField","progressField","titleField","subtitleField","latitudeField","longitudeField"],ie=A[j]||{},De=ve.filter(ge=>ge in A&&!(ge in ie));De.length>0&&console.warn(`[Spec Compliance] View options use flat properties ${JSON.stringify(De)}. Move them under options.${j} per @objectstack/spec protocol.`)}switch(j){case"kanban":return{type:"object-kanban",...T,groupBy:A.kanban?.groupField||"status",groupField:A.kanban?.groupField||"status",titleField:A.kanban?.titleField||"name",cardFields:T.fields||[],...A.kanban||{}};case"calendar":return{type:"object-calendar",...T,startDateField:A.calendar?.startDateField||"start_date",endDateField:A.calendar?.endDateField||"end_date",titleField:A.calendar?.titleField||"name",...A.calendar||{}};case"gallery":return{type:"object-gallery",...T,imageField:A.gallery?.imageField,titleField:A.gallery?.titleField||"name",subtitleField:A.gallery?.subtitleField,...A.gallery||{}};case"timeline":return{type:"object-timeline",...T,dateField:A.timeline?.dateField||"created_at",titleField:A.timeline?.titleField||"name",...A.timeline||{}};case"gantt":return{type:"object-gantt",...T,startDateField:A.gantt?.startDateField||"start_date",endDateField:A.gantt?.endDateField||"end_date",progressField:A.gantt?.progressField||"progress",dependenciesField:A.gantt?.dependenciesField||"dependencies",...A.gantt||{}};case"map":return{type:"object-map",...T,locationField:A.map?.locationField||"location",...A.map||{}};default:return null}},[e.objectName,e.table?.fields,z,u]),Ce=l.useMemo(()=>({type:"object-grid",objectName:e.objectName,title:e.table?.title,description:e.table?.description,fields:z?.columns||u?.columns||e.table?.fields,columns:z?.columns||u?.columns||e.table?.columns,operations:{...Y,create:!1},defaultFilters:z?.filter||u?.filter||e.table?.defaultFilters,defaultSort:z?.sort||u?.sort||e.table?.defaultSort,pageSize:e.table?.pageSize,selectable:e.table?.selectable,striped:u?.striped??e.table?.striped,bordered:u?.bordered??e.table?.bordered,className:e.table?.className}),[e,Y,z,u]),re=()=>{const j=C?C._id||C.id:void 0;return{type:"object-form",objectName:e.objectName,mode:S,recordId:j,title:e.form?.title,description:e.form?.description,fields:e.form?.fields,customFields:e.form?.customFields,groups:e.form?.groups,layout:e.form?.layout,columns:e.form?.columns,showSubmit:e.form?.showSubmit,submitText:e.form?.submitText,showCancel:e.form?.showCancel,cancelText:e.form?.cancelText,showReset:e.form?.showReset,initialValues:e.form?.initialValues,readOnly:e.form?.readOnly||S==="view",className:e.form?.className,onSuccess:ne,onCancel:U}},G=()=>{if(e.form?.title)return e.form.title;const j=m?.label||e.objectName;switch(S){case"create":return`Create ${j}`;case"edit":return`Edit ${j}`;case"view":return`View ${j}`;default:return j}},Fe=l.useMemo(()=>{const j=I?.width;return j?typeof j=="number"?`max-w-[${j}px]`:`max-w-[${j}]`:""},[I]),Xe=()=>i.jsx(h.Drawer,{open:D,onOpenChange:p,direction:"right",children:i.jsxs(h.DrawerContent,{className:h.cn("w-full sm:max-w-2xl",Fe),children:[i.jsxs(h.DrawerHeader,{children:[i.jsx(h.DrawerTitle,{children:G()}),e.form?.description&&i.jsx(h.DrawerDescription,{children:e.form.description})]}),i.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-4",children:i.jsx(kt.ObjectForm,{schema:re(),dataSource:t})})]})}),dt=()=>i.jsx(h.Dialog,{open:D,onOpenChange:p,children:i.jsxs(h.DialogContent,{className:h.cn("max-w-2xl max-h-[90vh] overflow-y-auto",Fe),children:[i.jsxs(h.DialogHeader,{children:[i.jsx(h.DialogTitle,{children:G()}),e.form?.description&&i.jsx(h.DialogDescription,{children:e.form.description})]}),i.jsx(kt.ObjectForm,{schema:re(),dataSource:t})]})}),tn=l.useMemo(()=>Object.keys(_).some(T=>_[T]!==void 0&&_[T]!==""&&_[T]!==null)?Object.entries(_).filter(([,T])=>T!==void 0&&T!==""&&T!==null).map(([T,A])=>({field:T,operator:"equals",value:A})):z?.filter||u?.filter||e.table?.defaultFilters,[_,z,u,e.table?.defaultFilters]),_e=l.useMemo(()=>R.length>0?R:z?.sort||u?.sort||e.table?.defaultSort,[R,z,u,e.table?.defaultSort]),ke=()=>{const j=`${e.objectName}-${fe||u?.id||"default"}-${M}-${F}`;if(f)return f({schema:{type:"list-view",objectName:e.objectName,viewType:M,fields:z?.columns||u?.columns||e.table?.fields,filters:tn,sort:_e,rowHeight:u?.rowHeight,densityMode:u?.densityMode,groupBy:u?.groupBy,options:z?.options||u,showSearch:u?.showSearch??e.showSearch,showFilters:u?.showFilters??e.showFilters,showSort:u?.showSort??e.showSort,showHideFields:u?.showHideFields??e.showHideFields,showGroup:u?.showGroup??e.showGroup,showColor:u?.showColor??e.showColor,showDensity:u?.showDensity??e.showDensity,allowExport:u?.allowExport??e.allowExport,striped:u?.striped??e.striped,bordered:u?.bordered??e.bordered,color:u?.color??e.color,inlineEdit:u?.inlineEdit??e.inlineEdit,wrapHeaders:u?.wrapHeaders??e.wrapHeaders,clickIntoRecordDetails:u?.clickIntoRecordDetails??e.clickIntoRecordDetails,addRecordViaForm:u?.addRecordViaForm??e.addRecordViaForm,addDeleteRecordsInline:u?.addDeleteRecordsInline??e.addDeleteRecordsInline,collapseAllByDefault:u?.collapseAllByDefault??e.collapseAllByDefault,fieldTextColor:u?.fieldTextColor??e.fieldTextColor,prefixField:u?.prefixField??e.prefixField,showDescription:u?.showDescription??e.showDescription,navigation:u?.navigation??e.navigation,selection:u?.selection??e.selection,pagination:u?.pagination??e.pagination,searchableFields:u?.searchableFields??e.searchableFields,filterableFields:u?.filterableFields??e.filterableFields,resizable:u?.resizable??e.resizable,hiddenFields:u?.hiddenFields??e.hiddenFields,rowActions:u?.rowActions??e.rowActions,bulkActions:u?.bulkActions??e.bulkActions,sharing:u?.sharing??e.sharing,addRecord:u?.addRecord??e.addRecord,conditionalFormatting:u?.conditionalFormatting??e.conditionalFormatting,quickFilters:u?.quickFilters??e.quickFilters,showRecordCount:u?.showRecordCount??e.showRecordCount,allowPrinting:u?.allowPrinting??e.allowPrinting,virtualScroll:u?.virtualScroll??e.virtualScroll,emptyState:u?.emptyState??e.emptyState,aria:u?.aria??e.aria,tabs:e.tabs},dataSource:t,onEdit:oe,onRowClick:v,className:"h-full"});if(M!=="grid"){const T=Le(M);if(T&&vt)return i.jsx(vt,{schema:T,dataSource:t,data:L,loading:k},j);if(!vt)return i.jsx("div",{className:"flex items-center justify-center h-40 text-muted-foreground",children:i.jsxs("p",{children:["SchemaRenderer not available. Install @object-ui/react to render ",M," views."]})})}return i.jsx(Zn.ObjectGrid,{schema:Ce,dataSource:t,onRowClick:v,onEdit:Y.update!==!1?oe:void 0,onDelete:Y.delete!==!1?Z:void 0,onBulkDelete:Y.delete!==!1?K:void 0},j)},Ue=()=>{if(!ue)return null;const j=Object.entries(J);return j.length<=1?null:i.jsx(h.Tabs,{value:fe,onValueChange:ct,className:"w-full",children:i.jsx(h.TabsList,{className:"w-auto",children:j.map(([T,A])=>i.jsx(h.TabsTrigger,{value:T,className:"text-sm",children:A.label||T},T))})})},ut=()=>{const j=e.showCreate!==!1&&Y.create!==!1,T=e.showViewSwitcher===!0,A=Ue();return!A&&!T&&!j&&!g?null:i.jsxs("div",{className:"flex flex-col gap-3",children:[A,(T||j||g)&&i.jsxs("div",{className:"flex items-center justify-between gap-4",children:[i.jsx("div",{className:"flex items-center gap-2",children:T&&ye&&i.jsx(Ot,{schema:ye,onViewChange:he,onCreateView:x,onViewAction:d,className:"overflow-x-auto"})}),i.jsxs("div",{className:"flex items-center gap-2",children:[g,j&&i.jsxs(h.Button,{size:"sm",onClick:W,children:[i.jsx(O.Plus,{className:"h-4 w-4"}),"Create"]})]})]})]})},je=I?.mode==="modal"?"modal":I?.mode==="drawer"?"drawer":I?.mode==="split"?"split":I?.mode==="popover"?"popover":se,ft=j=>i.jsx("div",{className:"space-y-3",children:i.jsx(kt.ObjectForm,{schema:re(),dataSource:t})}),At=l.useCallback(j=>{j||U()},[U]);if(je==="split"){const j=m?.label||e.objectName;return i.jsxs("div",{className:h.cn("flex flex-col h-full min-w-0 overflow-hidden",n),children:[(e.title||e.description)&&i.jsxs("div",{className:"mb-4 shrink-0",children:[e.title&&i.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:e.title}),e.description&&i.jsx("p",{className:"text-muted-foreground mt-1",children:e.description})]}),i.jsx("div",{className:"mb-4 shrink-0",children:ut()}),i.jsx("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden",children:D&&C?i.jsx(h.NavigationOverlay,{isOpen:D,selectedRecord:C,mode:"split",close:U,setIsOpen:At,width:I?.width,isOverlay:!0,title:`${j} Detail`,mainContent:i.jsx("div",{className:"h-full overflow-auto",children:ke()}),children:ft}):ke()})]})}return i.jsxs("div",{className:h.cn("flex flex-col h-full min-w-0 overflow-hidden",n),children:[(e.title||e.description)&&i.jsxs("div",{className:"mb-4 shrink-0",children:[e.title&&i.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:e.title}),e.description&&i.jsx("p",{className:"text-muted-foreground mt-1",children:e.description})]}),i.jsx("div",{className:"mb-4 shrink-0",children:ut()}),i.jsx("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden",children:ke()}),je==="drawer"&&Xe(),je==="modal"&&dt(),je==="popover"&&D&&C&&i.jsx(h.NavigationOverlay,{isOpen:D,selectedRecord:C,mode:"popover",close:U,setIsOpen:At,width:I?.width,isOverlay:!0,title:G(),children:ft})]})},Ft=Ye("flex",{variants:{layout:{inline:"flex-col space-y-4",popover:"items-center",drawer:"items-center"}},defaultVariants:{layout:"inline"}}),gr=e=>e==null||e===""?!0:Array.isArray(e)?e.length===0:typeof e=="object"?Object.values(e).every(t=>t==null||t===""):!1,br=e=>Array.isArray(e)?{start:e[0]||"",end:e[1]||""}:e&&typeof e=="object"?{start:e.start||"",end:e.end||""}:{start:"",end:""},gn=({schema:e,className:t,onChange:n})=>{const[r,s]=X.useState(e.values||{}),[o,c]=X.useState(!1);X.useEffect(()=>{e.values&&s(e.values)},[e.values]);const a=X.useCallback(p=>{n?.(p),e.onChange&&typeof window<"u"&&window.dispatchEvent(new CustomEvent(e.onChange,{detail:{values:p}}))},[n,e.onChange]),f=X.useCallback((p,S)=>{const E={...r,[p]:S};s(E),e.showApply||a(E)},[a,e.showApply,r]),g=X.useCallback(()=>{const p={};if(s(p),e.showApply){a(p);return}a(p)},[a,e.showApply]),x=X.useCallback(()=>{a(r),c(!1)},[a,r]),d=X.useMemo(()=>Object.values(r).filter(p=>!gr(p)).length,[r]),m=p=>{const S=p.label||p.field,E=p.placeholder||`Filter by ${S}`;switch(p.type){case"number":return i.jsx(h.Input,{type:"number",value:r[p.field]??"",placeholder:E,onChange:C=>{const N=C.target.value,F=N===""?"":Number(N);f(p.field,F)}});case"select":return i.jsxs(h.Select,{value:r[p.field]!==void 0?String(r[p.field]):"",onValueChange:C=>{const N=p.options?.find(F=>String(F.value)===C);f(p.field,N?N.value:C)},children:[i.jsx(h.SelectTrigger,{children:i.jsx(h.SelectValue,{placeholder:E})}),i.jsx(h.SelectContent,{children:p.options?.map(C=>i.jsx(h.SelectItem,{value:String(C.value),children:C.label},String(C.value)))})]});case"date":return i.jsx(h.Input,{type:"date",value:r[p.field]??"",onChange:C=>f(p.field,C.target.value)});case"date-range":{const C=br(r[p.field]);return i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(h.Input,{type:"date",value:C.start??"",onChange:N=>{f(p.field,{...C,start:N.target.value})}}),i.jsx(h.Input,{type:"date",value:C.end??"",onChange:N=>{f(p.field,{...C,end:N.target.value})}})]})}case"boolean":return i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(h.Checkbox,{checked:!!r[p.field],onCheckedChange:C=>f(p.field,!!C)}),i.jsx("span",{className:"text-sm text-muted-foreground",children:"Enabled"})]});default:return i.jsx(h.Input,{value:r[p.field]??"",placeholder:E,onChange:C=>f(p.field,C.target.value)})}},w=i.jsxs("div",{className:"space-y-4",children:[i.jsx("div",{className:"grid gap-4 sm:grid-cols-2",children:e.filters.map(p=>i.jsxs("div",{className:"space-y-2",children:[i.jsx(h.Label,{className:"text-xs text-muted-foreground",children:p.label||p.field}),m(p)]},p.field))}),(e.showApply||e.showClear)&&i.jsxs("div",{className:"flex items-center justify-end gap-2 border-t pt-3",children:[e.showClear&&i.jsx(h.Button,{type:"button",variant:"ghost",size:"sm",onClick:g,children:"Clear"}),e.showApply&&i.jsx(h.Button,{type:"button",size:"sm",onClick:x,children:"Apply"})]})]}),D=e.layout||"inline";return D==="popover"?i.jsx("div",{className:h.cn(Ft({layout:D}),t),children:i.jsxs(h.Popover,{open:o,onOpenChange:c,children:[i.jsx(h.PopoverTrigger,{asChild:!0,children:i.jsxs(h.Button,{type:"button",variant:d>0?"secondary":"outline",size:"sm",className:"gap-2",children:[i.jsx(O.SlidersHorizontal,{className:"h-4 w-4"}),"Filters",d>0&&i.jsx("span",{className:"inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary/10 px-1 text-xs font-medium text-primary",children:d})]})}),i.jsx(h.PopoverContent,{align:"start",className:"w-[520px] p-4",children:w})]})}):D==="drawer"?i.jsxs("div",{className:h.cn(Ft({layout:D}),t),children:[i.jsxs(h.Button,{type:"button",variant:d>0?"secondary":"outline",size:"sm",className:"gap-2",onClick:()=>c(!0),children:[i.jsx(O.SlidersHorizontal,{className:"h-4 w-4"}),"Filters",d>0&&i.jsx("span",{className:"inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary/10 px-1 text-xs font-medium text-primary",children:d})]}),i.jsx(h.Drawer,{open:o,onOpenChange:c,children:i.jsxs(h.DrawerContent,{children:[i.jsxs(h.DrawerHeader,{children:[i.jsx(h.DrawerTitle,{children:"Filters"}),i.jsx(h.DrawerDescription,{children:"Refine the data with advanced filters."})]}),i.jsx("div",{className:"px-4 pb-6",children:w})]})})]}):i.jsxs("div",{className:h.cn(Ft({layout:D}),t),children:[w,!e.showApply&&e.showClear&&i.jsxs(h.Button,{type:"button",variant:"ghost",size:"sm",className:"gap-2",onClick:g,children:[i.jsx(O.X,{className:"h-3.5 w-3.5"}),"Clear filters"]})]})},Mt=Ye("",{variants:{variant:{buttons:"flex flex-wrap gap-2",dropdown:"flex flex-wrap items-center gap-3",builder:"space-y-3"}},defaultVariants:{variant:"dropdown"}}),Vt=e=>e?e.map(t=>({field:t.field,direction:t.direction})):[],bn=e=>e.map(t=>({id:`${t.field}-${t.direction}`,field:t.field,order:t.direction})),vr=e=>e.filter(t=>t.field).map(t=>({field:t.field,direction:t.order})),vn=({schema:e,className:t,onChange:n})=>{const[r,s]=X.useState(()=>Vt(e.sort)),[o,c]=X.useState(()=>bn(Vt(e.sort)));X.useEffect(()=>{const d=Vt(e.sort);s(d),c(bn(d))},[e.sort]);const a=X.useCallback(d=>{s(d),n?.(d),e.onChange&&typeof window<"u"&&window.dispatchEvent(new CustomEvent(e.onChange,{detail:{sort:d}}))},[n,e.onChange]),f=X.useCallback(d=>{const m=r.find(p=>p.field===d),w=!!e.multiple;if(!m){const p=w?[...r,{field:d,direction:"asc"}]:[{field:d,direction:"asc"}];a(p);return}if(m.direction==="asc"){const p=r.map(S=>S.field===d?{...S,direction:"desc"}:S);a(p);return}const D=r.filter(p=>p.field!==d);a(D)},[a,e.multiple,r]);if((e.variant||"dropdown")==="buttons")return i.jsx("div",{className:h.cn(Mt({variant:"buttons"}),t),children:e.fields.map(d=>{const m=r.find(D=>D.field===d.field),w=m?.direction==="asc"?O.ArrowUp:O.ArrowDown;return i.jsxs(h.Button,{type:"button",variant:m?"secondary":"outline",size:"sm",onClick:()=>f(d.field),className:"gap-2",children:[i.jsx("span",{children:d.label||d.field}),m&&i.jsx(w,{className:"h-3.5 w-3.5"})]},d.field)})});if(e.multiple)return i.jsx("div",{className:h.cn(Mt({variant:"builder"}),t),children:i.jsx(h.SortBuilder,{fields:e.fields.map(d=>({value:d.field,label:d.label||d.field})),value:o,onChange:d=>{c(d),a(vr(d))}})});const x=r[0];return i.jsxs("div",{className:h.cn(Mt({variant:"dropdown"}),t),children:[i.jsxs(h.Select,{value:x?.field||"",onValueChange:d=>{if(!d){a([]);return}a([{field:d,direction:x?.direction||"asc"}])},children:[i.jsx(h.SelectTrigger,{className:"w-56",children:i.jsx(h.SelectValue,{placeholder:"Select field"})}),i.jsx(h.SelectContent,{children:e.fields.map(d=>i.jsx(h.SelectItem,{value:d.field,children:d.label||d.field},d.field))})]}),i.jsxs(h.Select,{value:x?.direction||"asc",onValueChange:d=>{x?.field&&a([{field:x.field,direction:d}])},children:[i.jsx(h.SelectTrigger,{className:"w-36",children:i.jsx(h.SelectValue,{})}),i.jsxs(h.SelectContent,{children:[i.jsx(h.SelectItem,{value:"asc",children:"Ascending"}),i.jsx(h.SelectItem,{value:"desc",children:"Descending"})]})]})]})};function xr(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}return Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2)}function wr(e,t,n,r){return`${e}/share/${t}/${n}?mode=readonly&token=${r}`}const xn=({objectName:e,viewId:t="default",baseUrl:n,onShare:r,className:s})=>{const[o,c]=X.useState(null),[a,f]=X.useState(!1),[g,x]=X.useState(!1),[d,m]=X.useState(""),[w,D]=X.useState(""),p=n??(typeof window<"u"?window.location.origin:""),S=X.useCallback(()=>{const C=xr(),N=wr(p,e,t,C);c(N),f(!1);const F=w?new Date(Date.now()+parseInt(w,10)*864e5).toISOString():void 0;r?.(N,{password:d||void 0,expiresAt:F})},[p,e,t,r,d,w]),E=X.useCallback(async()=>{if(o)try{await navigator.clipboard.writeText(o),f(!0),setTimeout(()=>f(!1),2e3)}catch{const C=document.createElement("textarea");C.value=o,document.body.appendChild(C),C.select(),document.execCommand("copy"),document.body.removeChild(C),f(!0),setTimeout(()=>f(!1),2e3)}},[o]);return i.jsxs(h.Popover,{open:g,onOpenChange:x,children:[i.jsx(h.PopoverTrigger,{asChild:!0,children:i.jsxs(h.Button,{variant:"outline",size:"sm",className:h.cn("gap-2",s),children:[i.jsx(O.Share2,{className:"h-4 w-4"}),"Share"]})}),i.jsxs(h.PopoverContent,{className:"w-96 space-y-4",align:"end",children:[i.jsxs("div",{className:"space-y-2",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("h4",{className:"text-sm font-medium",children:"Share View"}),i.jsx(h.Badge,{variant:"secondary",className:"text-xs",children:"Read-only"})]}),i.jsx("p",{className:"text-xs text-muted-foreground",children:"Generate a public link to share this view. Recipients can view data without logging in."})]}),o?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(h.Input,{value:o,readOnly:!0,className:"h-8 text-xs",onClick:C=>C.target.select()}),i.jsx(h.Button,{variant:"outline",size:"sm",onClick:E,className:"shrink-0 gap-1",children:a?i.jsx(O.Check,{className:"h-4 w-4 text-green-500"}):i.jsx(O.Copy,{className:"h-4 w-4"})})]}),(d||w)&&i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[d&&i.jsxs(h.Badge,{variant:"outline",className:"text-xs gap-1",children:[i.jsx(O.Lock,{className:"h-3 w-3"}),"Password protected"]}),w&&i.jsxs(h.Badge,{variant:"outline",className:"text-xs gap-1",children:[i.jsx(O.Calendar,{className:"h-3 w-3"}),"Expires in ",w," day",w!=="1"?"s":""]})]})]}):i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{className:"space-y-1.5",children:[i.jsxs("label",{className:"flex items-center gap-1.5 text-xs font-medium text-foreground",children:[i.jsx(O.Lock,{className:"h-3.5 w-3.5"}),"Password protection (optional)"]}),i.jsx(h.Input,{type:"password",value:d,onChange:C=>m(C.target.value),placeholder:"Enter password...",className:"h-8 text-xs"})]}),i.jsxs("div",{className:"space-y-1.5",children:[i.jsxs("label",{className:"flex items-center gap-1.5 text-xs font-medium text-foreground",children:[i.jsx(O.Calendar,{className:"h-3.5 w-3.5"}),"Expires after (optional)"]}),i.jsxs("select",{value:w,onChange:C=>D(C.target.value),className:"w-full h-8 text-xs rounded-md border border-input bg-background px-3",children:[i.jsx("option",{value:"",children:"Never"}),i.jsx("option",{value:"1",children:"1 day"}),i.jsx("option",{value:"7",children:"7 days"}),i.jsx("option",{value:"30",children:"30 days"}),i.jsx("option",{value:"90",children:"90 days"})]})]}),i.jsxs(h.Button,{onClick:S,className:"w-full gap-2",size:"sm",children:[i.jsx(O.Share2,{className:"h-4 w-4"}),"Generate Link"]})]})]})]})};function mr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return l.useMemo(()=>r=>{t.forEach(s=>s(r))},t)}const xt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function qe(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function Pt(e){return"nodeType"in e}function we(e){var t,n;return e?qe(e)?e:Pt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function Lt(e){const{Document:t}=we(e);return e instanceof t}function et(e){return qe(e)?!1:e instanceof we(e).HTMLElement}function wn(e){return e instanceof we(e).SVGElement}function We(e){return e?qe(e)?e.document:Pt(e)?Lt(e)?e:et(e)||wn(e)?e.ownerDocument:document:document:document}const Ae=xt?l.useLayoutEffect:l.useEffect;function _t(e){const t=l.useRef(e);return Ae(()=>{t.current=e}),l.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s<n;s++)r[s]=arguments[s];return t.current==null?void 0:t.current(...r)},[])}function yr(){const e=l.useRef(null),t=l.useCallback((r,s)=>{e.current=setInterval(r,s)},[]),n=l.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function tt(e,t){t===void 0&&(t=[e]);const n=l.useRef(e);return Ae(()=>{n.current!==e&&(n.current=e)},t),n}function nt(e,t){const n=l.useRef();return l.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function wt(e){const t=_t(e),n=l.useRef(null),r=l.useCallback(s=>{s!==n.current&&t?.(s,n.current),n.current=s},[]);return[n,r]}function $t(e){const t=l.useRef();return l.useEffect(()=>{t.current=e},[e]),t.current}let Bt={};function rt(e,t){return l.useMemo(()=>{if(t)return t;const n=Bt[e]==null?0:Bt[e]+1;return Bt[e]=n,e+"-"+n},[e,t])}function mn(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return r.reduce((o,c)=>{const a=Object.entries(c);for(const[f,g]of a){const x=o[f];x!=null&&(o[f]=x+e*g)}return o},{...t})}}const Ge=mn(1),mt=mn(-1);function Cr(e){return"clientX"in e&&"clientY"in e}function zt(e){if(!e)return!1;const{KeyboardEvent:t}=we(e.target);return t&&e instanceof t}function jr(e){if(!e)return!1;const{TouchEvent:t}=we(e.target);return t&&e instanceof t}function Rt(e){if(jr(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Cr(e)?{x:e.clientX,y:e.clientY}:null}const it=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[it.Translate.toString(e),it.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),yn="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Sr(e){return e.matches(yn)?e:e.querySelector(yn)}const Nr={display:"none"};function Dr(e){let{id:t,value:n}=e;return l.createElement("div",{id:t,style:Nr},n)}function Er(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return l.createElement("div",{id:t,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function Tr(){const[e,t]=l.useState("");return{announce:l.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Cn=l.createContext(null);function Ar(e){const t=l.useContext(Cn);l.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function kr(){const[e]=l.useState(()=>new Set),t=l.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[l.useCallback(r=>{let{type:s,event:o}=r;e.forEach(c=>{var a;return(a=c[s])==null?void 0:a.call(c,o)})},[e]),t]}const Ir={draggable:`
7
+ To pick up a draggable item, press the space bar.
8
+ While dragging, use the arrow keys to move the item.
9
+ Press space again to drop the item in its new position, or press escape to cancel.
10
+ `},Or={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Fr(e){let{announcements:t=Or,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=Ir}=e;const{announce:o,announcement:c}=Tr(),a=rt("DndLiveRegion"),[f,g]=l.useState(!1);if(l.useEffect(()=>{g(!0)},[]),Ar(l.useMemo(()=>({onDragStart(d){let{active:m}=d;o(t.onDragStart({active:m}))},onDragMove(d){let{active:m,over:w}=d;t.onDragMove&&o(t.onDragMove({active:m,over:w}))},onDragOver(d){let{active:m,over:w}=d;o(t.onDragOver({active:m,over:w}))},onDragEnd(d){let{active:m,over:w}=d;o(t.onDragEnd({active:m,over:w}))},onDragCancel(d){let{active:m,over:w}=d;o(t.onDragCancel({active:m,over:w}))}}),[o,t])),!f)return null;const x=l.createElement(l.Fragment,null,l.createElement(Dr,{id:r,value:s.draggable}),l.createElement(Er,{id:a,announcement:c}));return n?Je.createPortal(x,n):x}var ae;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(ae||(ae={}));function yt(){}function jn(e,t){return l.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Mr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return l.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const Te=Object.freeze({x:0,y:0});function Vr(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Pr(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Lr(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function _r(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function Sn(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const $r=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const s=Sn(t,t.left,t.top),o=[];for(const c of r){const{id:a}=c,f=n.get(a);if(f){const g=Vr(Sn(f),s);o.push({id:a,data:{droppableContainer:c,value:g}})}}return o.sort(Pr)};function Br(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),s=Math.min(t.left+t.width,e.left+e.width),o=Math.min(t.top+t.height,e.top+e.height),c=s-r,a=o-n;if(r<s&&n<o){const f=t.width*t.height,g=e.width*e.height,x=c*a,d=x/(f+g-x);return Number(d.toFixed(4))}return 0}const zr=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const s=[];for(const o of r){const{id:c}=o,a=n.get(c);if(a){const f=Br(a,t);f>0&&s.push({id:c,data:{droppableContainer:o,value:f}})}}return s.sort(Lr)};function Rr(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Nn(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Te}function Ur(e){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;o<r;o++)s[o-1]=arguments[o];return s.reduce((c,a)=>({...c,top:c.top+e*a.y,bottom:c.bottom+e*a.y,left:c.left+e*a.x,right:c.right+e*a.x}),{...n})}}const Yr=Ur(1);function qr(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Wr(e,t,n){const r=qr(t);if(!r)return e;const{scaleX:s,scaleY:o,x:c,y:a}=r,f=e.left-c-(1-s)*parseFloat(n),g=e.top-a-(1-o)*parseFloat(n.slice(n.indexOf(" ")+1)),x=s?e.width/s:e.width,d=o?e.height/o:e.height;return{width:x,height:d,top:g,right:f+x,bottom:g+d,left:f}}const Gr={ignoreTransform:!1};function He(e,t){t===void 0&&(t=Gr);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:g,transformOrigin:x}=we(e).getComputedStyle(e);g&&(n=Wr(n,g,x))}const{top:r,left:s,width:o,height:c,bottom:a,right:f}=n;return{top:r,left:s,width:o,height:c,bottom:a,right:f}}function Dn(e){return He(e,{ignoreTransform:!0})}function Hr(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function Xr(e,t){return t===void 0&&(t=we(e).getComputedStyle(e)),t.position==="fixed"}function Kr(e,t){t===void 0&&(t=we(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const o=t[s];return typeof o=="string"?n.test(o):!1})}function Ut(e,t){const n=[];function r(s){if(t!=null&&n.length>=t||!s)return n;if(Lt(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!et(s)||wn(s)||n.includes(s))return n;const o=we(e).getComputedStyle(s);return s!==e&&Kr(s,o)&&n.push(s),Xr(s,o)?n:r(s.parentNode)}return e?r(e):n}function En(e){const[t]=Ut(e,1);return t??null}function Yt(e){return!xt||!e?null:qe(e)?e:Pt(e)?Lt(e)||e===We(e).scrollingElement?window:et(e)?e:null:null}function Tn(e){return qe(e)?e.scrollX:e.scrollLeft}function An(e){return qe(e)?e.scrollY:e.scrollTop}function qt(e){return{x:Tn(e),y:An(e)}}var de;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(de||(de={}));function kn(e){return!xt||!e?!1:e===document.scrollingElement}function In(e){const t={x:0,y:0},n=kn(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},s=e.scrollTop<=t.y,o=e.scrollLeft<=t.x,c=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:s,isLeft:o,isBottom:c,isRight:a,maxScroll:r,minScroll:t}}const Jr={x:.2,y:.2};function Qr(e,t,n,r,s){let{top:o,left:c,right:a,bottom:f}=n;r===void 0&&(r=10),s===void 0&&(s=Jr);const{isTop:g,isBottom:x,isLeft:d,isRight:m}=In(e),w={x:0,y:0},D={x:0,y:0},p={height:t.height*s.y,width:t.width*s.x};return!g&&o<=t.top+p.height?(w.y=de.Backward,D.y=r*Math.abs((t.top+p.height-o)/p.height)):!x&&f>=t.bottom-p.height&&(w.y=de.Forward,D.y=r*Math.abs((t.bottom-p.height-f)/p.height)),!m&&a>=t.right-p.width?(w.x=de.Forward,D.x=r*Math.abs((t.right-p.width-a)/p.width)):!d&&c<=t.left+p.width&&(w.x=de.Backward,D.x=r*Math.abs((t.left+p.width-c)/p.width)),{direction:w,speed:D}}function Zr(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:c}=window;return{top:0,left:0,right:o,bottom:c,width:o,height:c}}const{top:t,left:n,right:r,bottom:s}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:s,width:e.clientWidth,height:e.clientHeight}}function On(e){return e.reduce((t,n)=>Ge(t,qt(n)),Te)}function ei(e){return e.reduce((t,n)=>t+Tn(n),0)}function ti(e){return e.reduce((t,n)=>t+An(n),0)}function ni(e,t){if(t===void 0&&(t=He),!e)return;const{top:n,left:r,bottom:s,right:o}=t(e);En(e)&&(s<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const ri=[["x",["left","right"],ei],["y",["top","bottom"],ti]];class Wt{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Ut(n),s=On(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,c,a]of ri)for(const f of c)Object.defineProperty(this,f,{get:()=>{const g=a(r),x=s[o]-g;return this.rect[f]+x},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class st{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var s;(s=this.target)==null||s.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function ii(e){const{EventTarget:t}=we(e);return e instanceof t?e:We(e)}function Gt(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var Ne;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Ne||(Ne={}));function Fn(e){e.preventDefault()}function si(e){e.stopPropagation()}var $;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})($||($={}));const Mn={start:[$.Space,$.Enter],cancel:[$.Esc],end:[$.Space,$.Enter,$.Tab]},oi=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case $.Right:return{...n,x:n.x+25};case $.Left:return{...n,x:n.x-25};case $.Down:return{...n,y:n.y+25};case $.Up:return{...n,y:n.y-25}}};class Ht{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new st(We(n)),this.windowListeners=new st(we(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Ne.Resize,this.handleCancel),this.windowListeners.add(Ne.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Ne.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&ni(r),n(Te)}handleKeyDown(t){if(zt(t)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:o=Mn,coordinateGetter:c=oi,scrollBehavior:a="smooth"}=s,{code:f}=t;if(o.end.includes(f)){this.handleEnd(t);return}if(o.cancel.includes(f)){this.handleCancel(t);return}const{collisionRect:g}=r.current,x=g?{x:g.left,y:g.top}:Te;this.referenceCoordinates||(this.referenceCoordinates=x);const d=c(t,{active:n,context:r.current,currentCoordinates:x});if(d){const m=mt(d,x),w={x:0,y:0},{scrollableAncestors:D}=r.current;for(const p of D){const S=t.code,{isTop:E,isRight:C,isLeft:N,isBottom:F,maxScroll:V,minScroll:L}=In(p),y=Zr(p),k={x:Math.min(S===$.Right?y.right-y.width/2:y.right,Math.max(S===$.Right?y.left:y.left+y.width/2,d.x)),y:Math.min(S===$.Down?y.bottom-y.height/2:y.bottom,Math.max(S===$.Down?y.top:y.top+y.height/2,d.y))},P=S===$.Right&&!C||S===$.Left&&!N,_=S===$.Down&&!F||S===$.Up&&!E;if(P&&k.x!==d.x){const B=p.scrollLeft+m.x,R=S===$.Right&&B<=V.x||S===$.Left&&B>=L.x;if(R&&!m.y){p.scrollTo({left:B,behavior:a});return}R?w.x=p.scrollLeft-B:w.x=S===$.Right?p.scrollLeft-V.x:p.scrollLeft-L.x,w.x&&p.scrollBy({left:-w.x,behavior:a});break}else if(_&&k.y!==d.y){const B=p.scrollTop+m.y,R=S===$.Down&&B<=V.y||S===$.Up&&B>=L.y;if(R&&!m.x){p.scrollTo({top:B,behavior:a});return}R?w.y=p.scrollTop-B:w.y=S===$.Down?p.scrollTop-V.y:p.scrollTop-L.y,w.y&&p.scrollBy({top:-w.y,behavior:a});break}}this.handleMove(t,Ge(mt(d,this.referenceCoordinates),w))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Ht.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Mn,onActivation:s}=t,{active:o}=n;const{code:c}=e.nativeEvent;if(r.start.includes(c)){const a=o.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),s?.({event:e.nativeEvent}),!0)}return!1}}];function Vn(e){return!!(e&&"distance"in e)}function Pn(e){return!!(e&&"delay"in e)}class Xt{constructor(t,n,r){var s;r===void 0&&(r=ii(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:o}=t,{target:c}=o;this.props=t,this.events=n,this.document=We(c),this.documentListeners=new st(this.document),this.listeners=new st(r),this.windowListeners=new st(we(c)),this.initialCoordinates=(s=Rt(o))!=null?s:Te,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(Ne.Resize,this.handleCancel),this.windowListeners.add(Ne.DragStart,Fn),this.windowListeners.add(Ne.VisibilityChange,this.handleCancel),this.windowListeners.add(Ne.ContextMenu,Fn),this.documentListeners.add(Ne.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Pn(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Vn(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:s}=this.props;s(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(Ne.Click,si,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Ne.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:s,props:o}=this,{onMove:c,options:{activationConstraint:a}}=o;if(!s)return;const f=(n=Rt(t))!=null?n:Te,g=mt(s,f);if(!r&&a){if(Vn(a)){if(a.tolerance!=null&&Gt(g,a.tolerance))return this.handleCancel();if(Gt(g,a.distance))return this.handleStart()}if(Pn(a)&&Gt(g,a.tolerance))return this.handleCancel();this.handlePending(a,g);return}t.cancelable&&t.preventDefault(),c(f)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===$.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const li={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Kt extends Xt{constructor(t){const{event:n}=t,r=We(n.target);super(t,li,r)}}Kt.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const ai={move:{name:"mousemove"},end:{name:"mouseup"}};var Jt;(function(e){e[e.RightClick=2]="RightClick"})(Jt||(Jt={}));class ci extends Xt{constructor(t){super(t,ai,We(t.event.target))}}ci.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Jt.RightClick?!1:(r?.({event:n}),!0)}}];const Qt={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class di extends Xt{constructor(t){super(t,Qt)}static setup(){return window.addEventListener(Qt.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(Qt.move.name,t)};function t(){}}}di.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var ot;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(ot||(ot={}));var Ct;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Ct||(Ct={}));function ui(e){let{acceleration:t,activator:n=ot.Pointer,canScroll:r,draggingRect:s,enabled:o,interval:c=5,order:a=Ct.TreeOrder,pointerCoordinates:f,scrollableAncestors:g,scrollableAncestorRects:x,delta:d,threshold:m}=e;const w=hi({delta:d,disabled:!o}),[D,p]=yr(),S=l.useRef({x:0,y:0}),E=l.useRef({x:0,y:0}),C=l.useMemo(()=>{switch(n){case ot.Pointer:return f?{top:f.y,bottom:f.y,left:f.x,right:f.x}:null;case ot.DraggableRect:return s}},[n,s,f]),N=l.useRef(null),F=l.useCallback(()=>{const L=N.current;if(!L)return;const y=S.current.x*E.current.x,k=S.current.y*E.current.y;L.scrollBy(y,k)},[]),V=l.useMemo(()=>a===Ct.TreeOrder?[...g].reverse():g,[a,g]);l.useEffect(()=>{if(!o||!g.length||!C){p();return}for(const L of V){if(r?.(L)===!1)continue;const y=g.indexOf(L),k=x[y];if(!k)continue;const{direction:P,speed:_}=Qr(L,k,C,t,m);for(const B of["x","y"])w[B][P[B]]||(_[B]=0,P[B]=0);if(_.x>0||_.y>0){p(),N.current=L,D(F,c),S.current=_,E.current=P;return}}S.current={x:0,y:0},E.current={x:0,y:0},p()},[t,F,r,p,o,c,JSON.stringify(C),JSON.stringify(w),D,g,V,x,JSON.stringify(m)])}const fi={x:{[de.Backward]:!1,[de.Forward]:!1},y:{[de.Backward]:!1,[de.Forward]:!1}};function hi(e){let{delta:t,disabled:n}=e;const r=$t(t);return nt(s=>{if(n||!r||!s)return fi;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[de.Backward]:s.x[de.Backward]||o.x===-1,[de.Forward]:s.x[de.Forward]||o.x===1},y:{[de.Backward]:s.y[de.Backward]||o.y===-1,[de.Forward]:s.y[de.Forward]||o.y===1}}},[n,t,r])}function pi(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return nt(s=>{var o;return t==null?null:(o=r??s)!=null?o:null},[r,t])}function gi(e,t){return l.useMemo(()=>e.reduce((n,r)=>{const{sensor:s}=r,o=s.activators.map(c=>({eventName:c.eventName,handler:t(c.handler,r)}));return[...n,...o]},[]),[e,t])}var lt;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(lt||(lt={}));var Zt;(function(e){e.Optimized="optimized"})(Zt||(Zt={}));const Ln=new Map;function bi(e,t){let{dragging:n,dependencies:r,config:s}=t;const[o,c]=l.useState(null),{frequency:a,measure:f,strategy:g}=s,x=l.useRef(e),d=S(),m=tt(d),w=l.useCallback(function(E){E===void 0&&(E=[]),!m.current&&c(C=>C===null?E:C.concat(E.filter(N=>!C.includes(N))))},[m]),D=l.useRef(null),p=nt(E=>{if(d&&!n)return Ln;if(!E||E===Ln||x.current!==e||o!=null){const C=new Map;for(let N of e){if(!N)continue;if(o&&o.length>0&&!o.includes(N.id)&&N.rect.current){C.set(N.id,N.rect.current);continue}const F=N.node.current,V=F?new Wt(f(F),F):null;N.rect.current=V,V&&C.set(N.id,V)}return C}return E},[e,o,n,d,f]);return l.useEffect(()=>{x.current=e},[e]),l.useEffect(()=>{d||w()},[n,d]),l.useEffect(()=>{o&&o.length>0&&c(null)},[JSON.stringify(o)]),l.useEffect(()=>{d||typeof a!="number"||D.current!==null||(D.current=setTimeout(()=>{w(),D.current=null},a))},[a,d,w,...r]),{droppableRects:p,measureDroppableContainers:w,measuringScheduled:o!=null};function S(){switch(g){case lt.Always:return!1;case lt.BeforeDragging:return n;default:return!n}}}function _n(e,t){return nt(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function vi(e,t){return _n(e,t)}function xi(e){let{callback:t,disabled:n}=e;const r=_t(t),s=l.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return l.useEffect(()=>()=>s?.disconnect(),[s]),s}function jt(e){let{callback:t,disabled:n}=e;const r=_t(t),s=l.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return l.useEffect(()=>()=>s?.disconnect(),[s]),s}function wi(e){return new Wt(He(e),e)}function $n(e,t,n){t===void 0&&(t=wi);const[r,s]=l.useState(null);function o(){s(f=>{if(!e)return null;if(e.isConnected===!1){var g;return(g=f??n)!=null?g:null}const x=t(e);return JSON.stringify(f)===JSON.stringify(x)?f:x})}const c=xi({callback(f){if(e)for(const g of f){const{type:x,target:d}=g;if(x==="childList"&&d instanceof HTMLElement&&d.contains(e)){o();break}}}}),a=jt({callback:o});return Ae(()=>{o(),e?(a?.observe(e),c?.observe(document.body,{childList:!0,subtree:!0})):(a?.disconnect(),c?.disconnect())},[e]),r}function mi(e){const t=_n(e);return Nn(e,t)}const Bn=[];function yi(e){const t=l.useRef(e),n=nt(r=>e?r&&r!==Bn&&e&&t.current&&e.parentNode===t.current.parentNode?r:Ut(e):Bn,[e]);return l.useEffect(()=>{t.current=e},[e]),n}function Ci(e){const[t,n]=l.useState(null),r=l.useRef(e),s=l.useCallback(o=>{const c=Yt(o.target);c&&n(a=>a?(a.set(c,qt(c)),new Map(a)):null)},[]);return l.useEffect(()=>{const o=r.current;if(e!==o){c(o);const a=e.map(f=>{const g=Yt(f);return g?(g.addEventListener("scroll",s,{passive:!0}),[g,qt(g)]):null}).filter(f=>f!=null);n(a.length?new Map(a):null),r.current=e}return()=>{c(e),c(o)};function c(a){a.forEach(f=>{const g=Yt(f);g?.removeEventListener("scroll",s)})}},[s,e]),l.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,c)=>Ge(o,c),Te):On(e):Te,[e,t])}function zn(e,t){t===void 0&&(t=[]);const n=l.useRef(null);return l.useEffect(()=>{n.current=null},t),l.useEffect(()=>{const r=e!==Te;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?mt(e,n.current):Te}function ji(e){l.useEffect(()=>{if(!xt)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n?.()}},e.map(t=>{let{sensor:n}=t;return n}))}function Si(e,t){return l.useMemo(()=>e.reduce((n,r)=>{let{eventName:s,handler:o}=r;return n[s]=c=>{o(c,t)},n},{}),[e,t])}function Rn(e){return l.useMemo(()=>e?Hr(e):null,[e])}const Un=[];function Ni(e,t){t===void 0&&(t=He);const[n]=e,r=Rn(n?we(n):null),[s,o]=l.useState(Un);function c(){o(()=>e.length?e.map(f=>kn(f)?r:new Wt(t(f),f)):Un)}const a=jt({callback:c});return Ae(()=>{a?.disconnect(),c(),e.forEach(f=>a?.observe(f))},[e]),s}function Di(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return et(t)?t:e}function Ei(e){let{measure:t}=e;const[n,r]=l.useState(null),s=l.useCallback(g=>{for(const{target:x}of g)if(et(x)){r(d=>{const m=t(x);return d?{...d,width:m.width,height:m.height}:m});break}},[t]),o=jt({callback:s}),c=l.useCallback(g=>{const x=Di(g);o?.disconnect(),x&&o?.observe(x),r(x?t(x):null)},[t,o]),[a,f]=wt(c);return l.useMemo(()=>({nodeRef:a,rect:n,setRef:f}),[n,a,f])}const Ti=[{sensor:Kt,options:{}},{sensor:Ht,options:{}}],Ai={current:{}},St={draggable:{measure:Dn},droppable:{measure:Dn,strategy:lt.WhileDragging,frequency:Zt.Optimized},dragOverlay:{measure:He}};class at extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const ki={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new at,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:yt},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:St,measureDroppableContainers:yt,windowRect:null,measuringScheduled:!1},Ii={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:yt,draggableNodes:new Map,over:null,measureDroppableContainers:yt},Nt=l.createContext(Ii),Yn=l.createContext(ki);function Oi(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new at}}}function Fi(e,t){switch(t.type){case ae.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case ae.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case ae.DragEnd:case ae.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ae.RegisterDroppable:{const{element:n}=t,{id:r}=n,s=new at(e.droppable.containers);return s.set(r,n),{...e,droppable:{...e.droppable,containers:s}}}case ae.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const c=new at(e.droppable.containers);return c.set(n,{...o,disabled:s}),{...e,droppable:{...e.droppable,containers:c}}}case ae.UnregisterDroppable:{const{id:n,key:r}=t,s=e.droppable.containers.get(n);if(!s||r!==s.key)return e;const o=new at(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function Mi(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:s}=l.useContext(Nt),o=$t(r),c=$t(n?.id);return l.useEffect(()=>{if(!t&&!r&&o&&c!=null){if(!zt(o)||document.activeElement===o.target)return;const a=s.get(c);if(!a)return;const{activatorNode:f,node:g}=a;if(!f.current&&!g.current)return;requestAnimationFrame(()=>{for(const x of[f.current,g.current]){if(!x)continue;const d=Sr(x);if(d){d.focus();break}}})}},[r,t,s,c,o]),null}function Vi(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((s,o)=>o({transform:s,...r}),n):n}function Pi(e){return l.useMemo(()=>({draggable:{...St.draggable,...e?.draggable},droppable:{...St.droppable,...e?.droppable},dragOverlay:{...St.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Li(e){let{activeNode:t,measure:n,initialRect:r,config:s=!0}=e;const o=l.useRef(!1),{x:c,y:a}=typeof s=="boolean"?{x:s,y:s}:s;Ae(()=>{if(!c&&!a||!t){o.current=!1;return}if(o.current||!r)return;const g=t?.node.current;if(!g||g.isConnected===!1)return;const x=n(g),d=Nn(x,r);if(c||(d.x=0),a||(d.y=0),o.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const m=En(g);m&&m.scrollBy({top:d.y,left:d.x})}},[t,c,a,r,n])}const qn=l.createContext({...Te,scaleX:1,scaleY:1});var Pe;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Pe||(Pe={}));const _i=l.memo(function(t){var n,r,s,o;let{id:c,accessibility:a,autoScroll:f=!0,children:g,sensors:x=Ti,collisionDetection:d=zr,measuring:m,modifiers:w,...D}=t;const p=l.useReducer(Fi,void 0,Oi),[S,E]=p,[C,N]=kr(),[F,V]=l.useState(Pe.Uninitialized),L=F===Pe.Initialized,{draggable:{active:y,nodes:k,translate:P},droppable:{containers:_}}=S,B=y!=null?k.get(y):null,R=l.useRef({initial:null,translated:null}),te=l.useMemo(()=>{var Q;return y!=null?{id:y,data:(Q=B?.data)!=null?Q:Ai,rect:R}:null},[y,B]),J=l.useRef(null),[ue,fe]=l.useState(null),[ee,z]=l.useState(null),q=tt(D,Object.values(D)),me=rt("DndDescribedBy",c),b=l.useMemo(()=>_.getEnabled(),[_]),u=Pi(m),{droppableRects:M,measureDroppableContainers:I,measuringScheduled:se}=bi(b,{dragging:L,dependencies:[P.x,P.y],config:u.droppable}),Y=pi(k,y),W=l.useMemo(()=>ee?Rt(ee):null,[ee]),oe=be(),ce=vi(Y,u.draggable.measure);Li({activeNode:y!=null?k.get(y):null,config:oe.layoutShiftCompensation,initialRect:ce,measure:u.draggable.measure});const v=$n(Y,u.draggable.measure,ce),Z=$n(Y?Y.parentElement:null),K=l.useRef({activatorEvent:null,active:null,activeNode:Y,collisionRect:null,collisions:null,droppableRects:M,draggableNodes:k,draggingNode:null,draggingNodeRect:null,droppableContainers:_,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=_.getNodeFor((n=K.current.over)==null?void 0:n.id),U=Ei({measure:u.dragOverlay.measure}),ye=(r=U.nodeRef.current)!=null?r:Y,he=L?(s=U.rect)!=null?s:v:null,ct=!!(U.nodeRef.current&&U.rect),Re=mi(ct?null:v),Le=Rn(ye?we(ye):null),Ce=yi(L?ne??Y:null),re=Ni(Ce),G=Vi(w,{transform:{x:P.x-Re.x,y:P.y-Re.y,scaleX:1,scaleY:1},activatorEvent:ee,active:te,activeNodeRect:v,containerNodeRect:Z,draggingNodeRect:he,over:K.current.over,overlayNodeRect:U.rect,scrollableAncestors:Ce,scrollableAncestorRects:re,windowRect:Le}),Fe=W?Ge(W,P):null,Xe=Ci(Ce),dt=zn(Xe),tn=zn(Xe,[v]),_e=Ge(G,dt),ke=he?Yr(he,G):null,Ue=te&&ke?d({active:te,collisionRect:ke,droppableRects:M,droppableContainers:b,pointerCoordinates:Fe}):null,ut=_r(Ue,"id"),[je,ft]=l.useState(null),At=ct?G:Ge(G,tn),j=Rr(At,(o=je?.rect)!=null?o:null,v),T=l.useRef(null),A=l.useCallback((Q,H)=>{let{sensor:xe,options:$e}=H;if(J.current==null)return;const Ee=k.get(J.current);if(!Ee)return;const Se=Q.nativeEvent,Ie=new xe({active:J.current,activeNode:Ee,event:Se,options:$e,context:K,onAbort(pe){if(!k.get(pe))return;const{onDragAbort:Oe}=q.current,Me={id:pe};Oe?.(Me),C({type:"onDragAbort",event:Me})},onPending(pe,Be,Oe,Me){if(!k.get(pe))return;const{onDragPending:pt}=q.current,ze={id:pe,constraint:Be,initialCoordinates:Oe,offset:Me};pt?.(ze),C({type:"onDragPending",event:ze})},onStart(pe){const Be=J.current;if(Be==null)return;const Oe=k.get(Be);if(!Oe)return;const{onDragStart:Me}=q.current,ht={activatorEvent:Se,active:{id:Be,data:Oe.data,rect:R}};Je.unstable_batchedUpdates(()=>{Me?.(ht),V(Pe.Initializing),E({type:ae.DragStart,initialCoordinates:pe,active:Be}),C({type:"onDragStart",event:ht}),fe(T.current),z(Se)})},onMove(pe){E({type:ae.DragMove,coordinates:pe})},onEnd:Ke(ae.DragEnd),onCancel:Ke(ae.DragCancel)});T.current=Ie;function Ke(pe){return async function(){const{active:Oe,collisions:Me,over:ht,scrollAdjustedTranslate:pt}=K.current;let ze=null;if(Oe&&pt){const{cancelDrop:gt}=q.current;ze={activatorEvent:Se,active:Oe,collisions:Me,delta:pt,over:ht},pe===ae.DragEnd&&typeof gt=="function"&&await Promise.resolve(gt(ze))&&(pe=ae.DragCancel)}J.current=null,Je.unstable_batchedUpdates(()=>{E({type:pe}),V(Pe.Uninitialized),ft(null),fe(null),z(null),T.current=null;const gt=pe===ae.DragEnd?"onDragEnd":"onDragCancel";if(ze){const nn=q.current[gt];nn?.(ze),C({type:gt,event:ze})}})}}},[k]),ve=l.useCallback((Q,H)=>(xe,$e)=>{const Ee=xe.nativeEvent,Se=k.get($e);if(J.current!==null||!Se||Ee.dndKit||Ee.defaultPrevented)return;const Ie={active:Se};Q(xe,H.options,Ie)===!0&&(Ee.dndKit={capturedBy:H.sensor},J.current=$e,A(xe,H))},[k,A]),ie=gi(x,ve);ji(x),Ae(()=>{v&&F===Pe.Initializing&&V(Pe.Initialized)},[v,F]),l.useEffect(()=>{const{onDragMove:Q}=q.current,{active:H,activatorEvent:xe,collisions:$e,over:Ee}=K.current;if(!H||!xe)return;const Se={active:H,activatorEvent:xe,collisions:$e,delta:{x:_e.x,y:_e.y},over:Ee};Je.unstable_batchedUpdates(()=>{Q?.(Se),C({type:"onDragMove",event:Se})})},[_e.x,_e.y]),l.useEffect(()=>{const{active:Q,activatorEvent:H,collisions:xe,droppableContainers:$e,scrollAdjustedTranslate:Ee}=K.current;if(!Q||J.current==null||!H||!Ee)return;const{onDragOver:Se}=q.current,Ie=$e.get(ut),Ke=Ie&&Ie.rect.current?{id:Ie.id,rect:Ie.rect.current,data:Ie.data,disabled:Ie.disabled}:null,pe={active:Q,activatorEvent:H,collisions:xe,delta:{x:Ee.x,y:Ee.y},over:Ke};Je.unstable_batchedUpdates(()=>{ft(Ke),Se?.(pe),C({type:"onDragOver",event:pe})})},[ut]),Ae(()=>{K.current={activatorEvent:ee,active:te,activeNode:Y,collisionRect:ke,collisions:Ue,droppableRects:M,draggableNodes:k,draggingNode:ye,draggingNodeRect:he,droppableContainers:_,over:je,scrollableAncestors:Ce,scrollAdjustedTranslate:_e},R.current={initial:he,translated:ke}},[te,Y,Ue,ke,k,ye,he,M,_,je,Ce,_e]),ui({...oe,delta:P,draggingRect:ke,pointerCoordinates:Fe,scrollableAncestors:Ce,scrollableAncestorRects:re});const De=l.useMemo(()=>({active:te,activeNode:Y,activeNodeRect:v,activatorEvent:ee,collisions:Ue,containerNodeRect:Z,dragOverlay:U,draggableNodes:k,droppableContainers:_,droppableRects:M,over:je,measureDroppableContainers:I,scrollableAncestors:Ce,scrollableAncestorRects:re,measuringConfiguration:u,measuringScheduled:se,windowRect:Le}),[te,Y,v,ee,Ue,Z,U,k,_,M,je,I,Ce,re,u,se,Le]),ge=l.useMemo(()=>({activatorEvent:ee,activators:ie,active:te,activeNodeRect:v,ariaDescribedById:{draggable:me},dispatch:E,draggableNodes:k,over:je,measureDroppableContainers:I}),[ee,ie,te,v,E,me,k,je,I]);return l.createElement(Cn.Provider,{value:N},l.createElement(Nt.Provider,{value:ge},l.createElement(Yn.Provider,{value:De},l.createElement(qn.Provider,{value:j},g)),l.createElement(Mi,{disabled:a?.restoreFocus===!1})),l.createElement(Fr,{...a,hiddenTextDescribedById:me}));function be(){const Q=ue?.autoScrollEnabled===!1,H=typeof f=="object"?f.enabled===!1:f===!1,xe=L&&!Q&&!H;return typeof f=="object"?{...f,enabled:xe}:{enabled:xe}}}),$i=l.createContext(null),Wn="button",Bi="Draggable";function zi(e){let{id:t,data:n,disabled:r=!1,attributes:s}=e;const o=rt(Bi),{activators:c,activatorEvent:a,active:f,activeNodeRect:g,ariaDescribedById:x,draggableNodes:d,over:m}=l.useContext(Nt),{role:w=Wn,roleDescription:D="draggable",tabIndex:p=0}=s??{},S=f?.id===t,E=l.useContext(S?qn:$i),[C,N]=wt(),[F,V]=wt(),L=Si(c,t),y=tt(n);Ae(()=>(d.set(t,{id:t,key:o,node:C,activatorNode:F,data:y}),()=>{const P=d.get(t);P&&P.key===o&&d.delete(t)}),[d,t]);const k=l.useMemo(()=>({role:w,tabIndex:p,"aria-disabled":r,"aria-pressed":S&&w===Wn?!0:void 0,"aria-roledescription":D,"aria-describedby":x.draggable}),[r,w,p,S,D,x.draggable]);return{active:f,activatorEvent:a,activeNodeRect:g,attributes:k,isDragging:S,listeners:r?void 0:L,node:C,over:m,setNodeRef:N,setActivatorNodeRef:V,transform:E}}function Ri(){return l.useContext(Yn)}const Ui="Droppable",Yi={timeout:25};function qi(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:s}=e;const o=rt(Ui),{active:c,dispatch:a,over:f,measureDroppableContainers:g}=l.useContext(Nt),x=l.useRef({disabled:n}),d=l.useRef(!1),m=l.useRef(null),w=l.useRef(null),{disabled:D,updateMeasurementsFor:p,timeout:S}={...Yi,...s},E=tt(p??r),C=l.useCallback(()=>{if(!d.current){d.current=!0;return}w.current!=null&&clearTimeout(w.current),w.current=setTimeout(()=>{g(Array.isArray(E.current)?E.current:[E.current]),w.current=null},S)},[S]),N=jt({callback:C,disabled:D||!c}),F=l.useCallback((k,P)=>{N&&(P&&(N.unobserve(P),d.current=!1),k&&N.observe(k))},[N]),[V,L]=wt(F),y=tt(t);return l.useEffect(()=>{!N||!V.current||(N.disconnect(),d.current=!1,N.observe(V.current))},[V,N]),l.useEffect(()=>(a({type:ae.RegisterDroppable,element:{id:r,key:o,disabled:n,node:V,rect:m,data:y}}),()=>a({type:ae.UnregisterDroppable,key:o,id:r})),[r]),l.useEffect(()=>{n!==x.current.disabled&&(a({type:ae.SetDroppableDisabled,id:r,key:o,disabled:n}),x.current.disabled=n)},[r,o,n,a]),{active:c,rect:m,isOver:f?.id===r,node:V,over:f,setNodeRef:L}}function en(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function Wi(e,t){return e.reduce((n,r,s)=>{const o=t.get(r);return o&&(n[s]=o),n},Array(e.length))}function Dt(e){return e!==null&&e>=0}function Gi(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Hi(e){return typeof e=="boolean"?{draggable:e,droppable:e}:e}const Et={scaleX:1,scaleY:1},Xi=e=>{var t;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:o,index:c}=e;const a=(t=n[s])!=null?t:r;if(!a)return null;const f=Ki(n,c,s);if(c===s){const g=n[o];return g?{x:s<o?g.left+g.width-(a.left+a.width):g.left-a.left,y:0,...Et}:null}return c>s&&c<=o?{x:-a.width-f,y:0,...Et}:c<s&&c>=o?{x:a.width+f,y:0,...Et}:{x:0,y:0,...Et}};function Ki(e,t,n){const r=e[t],s=e[t-1],o=e[t+1];return!r||!s&&!o?0:n<t?s?r.left-(s.left+s.width):o.left-(r.left+r.width):o?o.left-(r.left+r.width):r.left-(s.left+s.width)}const Gn=e=>{let{rects:t,activeIndex:n,overIndex:r,index:s}=e;const o=en(t,r,n),c=t[s],a=o[s];return!a||!c?null:{x:a.left-c.left,y:a.top-c.top,scaleX:a.width/c.width,scaleY:a.height/c.height}},Hn="Sortable",Xn=l.createContext({activeIndex:-1,containerId:Hn,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Gn,disabled:{draggable:!1,droppable:!1}});function Ji(e){let{children:t,id:n,items:r,strategy:s=Gn,disabled:o=!1}=e;const{active:c,dragOverlay:a,droppableRects:f,over:g,measureDroppableContainers:x}=Ri(),d=rt(Hn,n),m=a.rect!==null,w=l.useMemo(()=>r.map(L=>typeof L=="object"&&"id"in L?L.id:L),[r]),D=c!=null,p=c?w.indexOf(c.id):-1,S=g?w.indexOf(g.id):-1,E=l.useRef(w),C=!Gi(w,E.current),N=S!==-1&&p===-1||C,F=Hi(o);Ae(()=>{C&&D&&x(w)},[C,w,D,x]),l.useEffect(()=>{E.current=w},[w]);const V=l.useMemo(()=>({activeIndex:p,containerId:d,disabled:F,disableTransforms:N,items:w,overIndex:S,useDragOverlay:m,sortedRects:Wi(w,f),strategy:s}),[p,d,F.draggable,F.droppable,N,w,S,f,m,s]);return l.createElement(Xn.Provider,{value:V},t)}const Qi=e=>{let{id:t,items:n,activeIndex:r,overIndex:s}=e;return en(n,r,s).indexOf(t)},Zi=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:s,items:o,newIndex:c,previousItems:a,previousContainerId:f,transition:g}=e;return!g||!r||a!==o&&s===c?!1:n?!0:c!==s&&t===f},es={duration:200,easing:"ease"},Kn="transform",ts=it.Transition.toString({property:Kn,duration:0,easing:"linear"}),ns={roleDescription:"sortable"};function rs(e){let{disabled:t,index:n,node:r,rect:s}=e;const[o,c]=l.useState(null),a=l.useRef(n);return Ae(()=>{if(!t&&n!==a.current&&r.current){const f=s.current;if(f){const g=He(r.current,{ignoreTransform:!0}),x={x:f.left-g.left,y:f.top-g.top,scaleX:f.width/g.width,scaleY:f.height/g.height};(x.x||x.y)&&c(x)}}n!==a.current&&(a.current=n)},[t,n,r,s]),l.useEffect(()=>{o&&c(null)},[o]),o}function is(e){let{animateLayoutChanges:t=Zi,attributes:n,disabled:r,data:s,getNewIndex:o=Qi,id:c,strategy:a,resizeObserverConfig:f,transition:g=es}=e;const{items:x,containerId:d,activeIndex:m,disabled:w,disableTransforms:D,sortedRects:p,overIndex:S,useDragOverlay:E,strategy:C}=l.useContext(Xn),N=ss(r,w),F=x.indexOf(c),V=l.useMemo(()=>({sortable:{containerId:d,index:F,items:x},...s}),[d,s,F,x]),L=l.useMemo(()=>x.slice(x.indexOf(c)),[x,c]),{rect:y,node:k,isOver:P,setNodeRef:_}=qi({id:c,data:V,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:L,...f}}),{active:B,activatorEvent:R,activeNodeRect:te,attributes:J,setNodeRef:ue,listeners:fe,isDragging:ee,over:z,setActivatorNodeRef:q,transform:me}=zi({id:c,data:V,attributes:{...ns,...n},disabled:N.draggable}),b=mr(_,ue),u=!!B,M=u&&!D&&Dt(m)&&Dt(S),I=!E&&ee,se=I&&M?me:null,W=M?se??(a??C)({rects:p,activeNodeRect:te,activeIndex:m,overIndex:S,index:F}):null,oe=Dt(m)&&Dt(S)?o({id:c,items:x,activeIndex:m,overIndex:S}):F,ce=B?.id,v=l.useRef({activeId:ce,items:x,newIndex:oe,containerId:d}),Z=x!==v.current.items,K=t({active:B,containerId:d,isDragging:ee,isSorting:u,id:c,index:F,items:x,newIndex:v.current.newIndex,previousItems:v.current.items,previousContainerId:v.current.containerId,transition:g,wasDragging:v.current.activeId!=null}),ne=rs({disabled:!K,index:F,node:k,rect:y});return l.useEffect(()=>{u&&v.current.newIndex!==oe&&(v.current.newIndex=oe),d!==v.current.containerId&&(v.current.containerId=d),x!==v.current.items&&(v.current.items=x)},[u,oe,d,x]),l.useEffect(()=>{if(ce===v.current.activeId)return;if(ce!=null&&v.current.activeId==null){v.current.activeId=ce;return}const ye=setTimeout(()=>{v.current.activeId=ce},50);return()=>clearTimeout(ye)},[ce]),{active:B,activeIndex:m,attributes:J,data:V,rect:y,index:F,newIndex:oe,items:x,isOver:P,isSorting:u,isDragging:ee,listeners:fe,node:k,overIndex:S,over:z,setNodeRef:b,setActivatorNodeRef:q,setDroppableNodeRef:_,setDraggableNodeRef:ue,transform:ne??W,transition:U()};function U(){if(ne||Z&&v.current.newIndex===F)return ts;if(!(I&&!zt(R)||!g)&&(u||K))return it.Transition.toString({...g,property:Kn})}}function ss(e,t){var n,r;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(n=e?.draggable)!=null?n:t.draggable,droppable:(r=e?.droppable)!=null?r:t.droppable}}$.Down,$.Right,$.Up,$.Left;const Tt={private:0,team:1,organization:2,public:3},os=5,ls=({id:e,disabled:t,children:n})=>{const{attributes:r,listeners:s,setNodeRef:o,transform:c,transition:a,isDragging:f}=is({id:e,disabled:t}),g={transform:it.Transform.toString(c),transition:a,zIndex:f?10:void 0,opacity:f?.5:void 0};return i.jsx(i.Fragment,{children:n({setNodeRef:o,style:g,listeners:s,attributes:r,isDragging:f})})},as=({views:e,activeViewId:t,onViewChange:n,viewTypeIcons:r={},config:s={},onAddView:o,onRenameView:c,onDuplicateView:a,onDeleteView:f,onSetDefaultView:g,onShareView:x,onSaveAsView:d,onPinView:m,onReorderViews:w,onChangeViewType:D,onConfigView:p,availableViewTypes:S,hasUnsavedChanges:E=!1,onResetChanges:C,className:N})=>{const{showAddButton:F=!0,inlineRename:V=!0,contextMenu:L=!0,reorderable:y=!1,maxVisibleTabs:k=6,showIndicators:P=!0,showSaveAsView:_=!0,showPinnedSection:B=!0,showVisibilityGroups:R=!1}=s,[te,J]=l.useState(null),[ue,fe]=l.useState(""),ee=l.useRef(null);l.useEffect(()=>{te&&ee.current&&(ee.current.focus(),ee.current.select())},[te]);const z=l.useCallback(v=>{if(!V||!c)return;const Z=e.find(K=>K.id===v);Z&&(J(v),fe(Z.label))},[V,c,e]),q=l.useCallback(()=>{te&&ue.trim()&&c&&c(te,ue.trim()),J(null),fe("")},[te,ue,c]),me=l.useCallback(()=>{J(null),fe("")},[]),b=l.useMemo(()=>{const v=[...e];return v.sort((Z,K)=>{if(B){const ne=Z.isPinned?1:0,U=K.isPinned?1:0;if(ne!==U)return U-ne}if(R){const ne=Tt[Z.visibility||"public"]??Tt.public,U=Tt[K.visibility||"public"]??Tt.public;if(ne!==U)return ne-U}return 0}),v},[e,B,R]),u=b.slice(0,k),M=b.slice(k),I=Mr(jn(Kt,{activationConstraint:{distance:os}}),jn(Ht)),se=l.useCallback(v=>{const{active:Z,over:K}=v;if(!K||Z.id===K.id||!w)return;const ne=b.findIndex(he=>he.id===Z.id),U=b.findIndex(he=>he.id===K.id);if(ne===-1||U===-1)return;const ye=en(b,ne,U);w(ye.map(he=>he.id))},[b,w]),Y=O.Table,W=l.useCallback(v=>{if(!R||v===0)return!1;const Z=u[v-1],K=u[v],ne=U=>U.visibility==="private";return ne(Z)&&!ne(K)},[R,u]),oe=(v,Z)=>{const K=v.id===t,ne=r[v.type]||Y,U=te===v.id,ye=P&&(v.hasActiveFilters||v.hasActiveSort),he=W(Z),Re=(re=>R?re.visibility==="private"?i.jsx(O.Lock,{"data-testid":`view-tab-visibility-${re.id}`,className:"h-3 w-3 text-muted-foreground shrink-0"}):re.visibility?i.jsx(O.Globe,{"data-testid":`view-tab-visibility-${re.id}`,className:"h-3 w-3 text-muted-foreground shrink-0"}):null:null)(v),Le=re=>i.jsxs("button",{"data-testid":`view-tab-${v.id}`,onClick:()=>!U&&n(v.id),onDoubleClick:()=>z(v.id),className:h.cn("inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium border-b-2 transition-colors whitespace-nowrap relative",K?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground hover:border-border"),children:[y&&w&&i.jsx("span",{"data-testid":`view-tab-drag-handle-${v.id}`,className:"cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground",...re?.listeners??{},...re?.attributes??{},children:i.jsx(O.GripVertical,{className:"h-3 w-3"})}),B&&v.isPinned&&i.jsx(O.Pin,{"data-testid":`view-tab-pin-indicator-${v.id}`,className:"h-3 w-3 text-primary shrink-0"}),Re,i.jsx(ne,{className:"h-3.5 w-3.5"}),U?i.jsx(h.Input,{ref:ee,"data-testid":`view-tab-rename-input-${v.id}`,value:ue,onChange:G=>fe(G.target.value),onBlur:q,onKeyDown:G=>{G.key==="Enter"&&q(),G.key==="Escape"&&me()},className:"h-5 w-24 px-1 py-0 text-sm border-none focus-visible:ring-1",onClick:G=>G.stopPropagation()}):i.jsx("span",{children:v.label}),ye&&i.jsxs(h.Tooltip,{children:[i.jsx(h.TooltipTrigger,{asChild:!0,children:i.jsx("span",{"data-testid":`view-tab-indicator-${v.id}`,className:"ml-1 inline-flex items-center justify-center h-4 min-w-[16px] rounded-full bg-primary/15 text-[10px] font-medium text-primary px-1 shrink-0",children:[v.hasActiveFilters&&"F",v.hasActiveSort&&"S"].filter(Boolean).join("")})}),i.jsx(h.TooltipContent,{side:"bottom",className:"text-xs",children:[v.hasActiveFilters&&"Active filters",v.hasActiveSort&&"Active sort"].filter(Boolean).join(", ")})]}),v.isDefault&&i.jsx(O.Star,{className:"h-3 w-3 text-amber-500 fill-amber-500 shrink-0"}),K&&p&&i.jsx("button",{type:"button","data-testid":`view-tab-config-${v.id}`,className:"ml-0.5 h-4 w-4 flex items-center justify-center rounded hover:bg-accent shrink-0 opacity-60 hover:opacity-100 transition-opacity",onClick:G=>{G.stopPropagation(),p(v.id)},"aria-label":`Configure ${v.label}`,children:i.jsx(O.Settings2,{className:"h-3 w-3"})})]}),Ce=re=>!L||U?re:i.jsxs(h.ContextMenu,{children:[i.jsx(h.ContextMenuTrigger,{asChild:!0,children:re}),i.jsxs(h.ContextMenuContent,{children:[c&&i.jsxs(h.ContextMenuItem,{"data-testid":`context-menu-rename-${v.id}`,onClick:()=>z(v.id),children:[i.jsx(O.Pencil,{className:"h-4 w-4 mr-2"})," Rename"]}),a&&i.jsxs(h.ContextMenuItem,{"data-testid":`context-menu-duplicate-${v.id}`,onClick:()=>a(v.id),children:[i.jsx(O.Copy,{className:"h-4 w-4 mr-2"})," Duplicate View"]}),x&&i.jsxs(h.ContextMenuItem,{"data-testid":`context-menu-share-${v.id}`,onClick:()=>x(v.id),children:[i.jsx(O.Share2,{className:"h-4 w-4 mr-2"})," Share View"]}),g&&i.jsxs(h.ContextMenuItem,{"data-testid":`context-menu-default-${v.id}`,onClick:()=>g(v.id),children:[i.jsx(O.Star,{className:"h-4 w-4 mr-2"})," Set as Default"]}),m&&i.jsx(h.ContextMenuItem,{"data-testid":`context-menu-pin-${v.id}`,onClick:()=>m(v.id,!v.isPinned),children:v.isPinned?i.jsxs(i.Fragment,{children:[i.jsx(O.PinOff,{className:"h-4 w-4 mr-2"})," Unpin View"]}):i.jsxs(i.Fragment,{children:[i.jsx(O.Pin,{className:"h-4 w-4 mr-2"})," Pin View"]})}),D&&S&&S.length>0&&i.jsxs(i.Fragment,{children:[i.jsx(h.ContextMenuSeparator,{}),i.jsxs(h.ContextMenuSub,{children:[i.jsxs(h.ContextMenuSubTrigger,{"data-testid":`context-menu-change-type-${v.id}`,children:[i.jsx(O.LayoutGrid,{className:"h-4 w-4 mr-2"})," Change View Type"]}),i.jsx(h.ContextMenuSubContent,{"data-testid":`context-menu-type-submenu-${v.id}`,children:S.map(G=>{const Fe=r[G.type]||Y;return i.jsxs(h.ContextMenuItem,{"data-testid":`context-menu-type-${v.id}-${G.type}`,disabled:G.type===v.type,onClick:()=>D(v.id,G.type),children:[i.jsx(Fe,{className:"h-4 w-4 mr-2"}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("span",{children:G.label}),G.description&&i.jsx("span",{className:"text-xs text-muted-foreground",children:G.description})]})]},G.type)})})]})]}),f&&i.jsxs(i.Fragment,{children:[i.jsx(h.ContextMenuSeparator,{}),i.jsxs(h.ContextMenuItem,{"data-testid":`context-menu-delete-${v.id}`,onClick:()=>f(v.id),className:"text-destructive focus:text-destructive",children:[i.jsx(O.Trash2,{className:"h-4 w-4 mr-2"})," Delete View"]})]})]})]});return y&&w?i.jsxs(l.Fragment,{children:[he&&i.jsx("div",{"data-testid":"view-tab-visibility-separator",className:"w-px h-5 bg-border mx-1 self-center shrink-0"}),i.jsx(ls,{id:v.id,children:({setNodeRef:re,style:G,listeners:Fe,attributes:Xe,isDragging:dt})=>i.jsx("div",{ref:re,style:G,className:h.cn("flex",dt&&"z-10"),children:Ce(Le({listeners:Fe,attributes:Xe}))})})]},v.id):i.jsxs(l.Fragment,{children:[he&&i.jsx("div",{"data-testid":"view-tab-visibility-separator",className:"w-px h-5 bg-border mx-1 self-center shrink-0"}),Ce(Le())]},v.id)},ce=i.jsx(i.Fragment,{children:u.map((v,Z)=>oe(v,Z))});return i.jsx(h.TooltipProvider,{children:i.jsxs("div",{"data-testid":"view-tab-bar",className:h.cn("flex items-center gap-0.5 -mb-px",N),children:[y&&w?i.jsx(_i,{sensors:I,collisionDetection:$r,onDragEnd:se,children:i.jsx(Ji,{items:u.map(v=>v.id),strategy:Xi,children:i.jsx("div",{"data-testid":"view-tab-sortable-container",className:"flex items-center gap-0.5",children:ce})})}):ce,M.length>0&&i.jsxs(h.DropdownMenu,{children:[i.jsx(h.DropdownMenuTrigger,{asChild:!0,children:i.jsxs("button",{"data-testid":"view-tab-overflow",className:"inline-flex items-center gap-1 px-2 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[i.jsx(O.MoreHorizontal,{className:"h-4 w-4"}),i.jsxs("span",{className:"text-xs",children:[M.length," more"]})]})}),i.jsx(h.DropdownMenuContent,{align:"end",children:M.map(v=>{const Z=r[v.type]||Y;return i.jsxs(h.DropdownMenuItem,{"data-testid":`view-tab-overflow-${v.id}`,onClick:()=>n(v.id),children:[v.isPinned&&i.jsx(O.Pin,{className:"h-3 w-3 mr-1 text-primary shrink-0"}),i.jsx(Z,{className:"h-4 w-4 mr-2"}),v.label,P&&(v.hasActiveFilters||v.hasActiveSort)&&i.jsx("span",{className:"ml-auto inline-flex items-center justify-center h-4 min-w-[16px] rounded-full bg-primary/15 text-[10px] font-medium text-primary px-1",children:[v.hasActiveFilters&&"F",v.hasActiveSort&&"S"].filter(Boolean).join("")})]},v.id)})})]}),F&&o&&i.jsxs(h.Tooltip,{children:[i.jsx(h.TooltipTrigger,{asChild:!0,children:i.jsx("button",{"data-testid":"view-tab-add",onClick:o,className:"inline-flex items-center px-2 py-2 text-muted-foreground hover:text-foreground transition-colors",children:i.jsx(O.Plus,{className:"h-4 w-4"})})}),i.jsx(h.TooltipContent,{children:"Add View"})]}),_&&E&&i.jsxs("div",{"data-testid":"view-tab-save-as",className:"flex items-center gap-1 ml-2 text-xs text-amber-600 dark:text-amber-400",children:[i.jsx(O.Save,{className:"h-3.5 w-3.5"}),i.jsx("span",{className:"hidden sm:inline",children:"Unsaved changes"}),d&&i.jsx(h.Button,{variant:"ghost",size:"sm","data-testid":"view-tab-save-as-btn",className:"h-6 px-2 text-xs",onClick:d,children:"Save as View"}),C&&i.jsx(h.Button,{variant:"ghost",size:"sm","data-testid":"view-tab-reset-btn",className:"h-6 px-2 text-xs",onClick:C,children:"Reset"})]})]})})};let Jn=l.createContext(null);try{const e=require("@object-ui/react");e.SchemaRendererContext&&(Jn=e.SchemaRendererContext)}catch{}const Qn=({schema:e})=>{const n=l.useContext(Jn)?.dataSource??null;return i.jsx(pn,{schema:e,dataSource:n})};Ve.ComponentRegistry.register("object-view",Qn,{namespace:"plugin-view",label:"Object View",category:"view",icon:"LayoutDashboard",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"layout",type:"enum",label:"Form Layout",enum:["drawer","modal","page"]},{name:"defaultViewType",type:"enum",label:"Default View Type",enum:["grid","kanban","gallery","calendar","timeline","gantt","map"]},{name:"defaultListView",type:"string",label:"Default Named View"},{name:"showSearch",type:"boolean",label:"Show Search"},{name:"showFilters",type:"boolean",label:"Show Filters"},{name:"showCreate",type:"boolean",label:"Show Create Button"},{name:"showRefresh",type:"boolean",label:"Show Refresh Button"},{name:"showViewSwitcher",type:"boolean",label:"Show View Switcher"},{name:"listViews",type:"object",label:"Named List Views"},{name:"navigation",type:"object",label:"Navigation Config"},{name:"searchableFields",type:"array",label:"Searchable Fields"},{name:"filterableFields",type:"array",label:"Filterable Fields"}],defaultProps:{layout:"drawer",defaultViewType:"grid",showSearch:!0,showFilters:!0,showCreate:!0,showRefresh:!0,showViewSwitcher:!0}}),Ve.ComponentRegistry.register("view",Qn,{namespace:"plugin-view",label:"View",category:"view"}),Ve.ComponentRegistry.register("view-switcher",Ot,{namespace:"view",label:"View Switcher",category:"view",icon:"LayoutGrid",inputs:[{name:"views",type:"array",label:"Views",required:!0},{name:"defaultView",type:"string",label:"Default View"},{name:"activeView",type:"string",label:"Active View"},{name:"variant",type:"enum",label:"Variant",enum:["tabs","buttons","dropdown"]},{name:"position",type:"enum",label:"Position",enum:["top","bottom","left","right"]},{name:"persistPreference",type:"boolean",label:"Persist Preference"},{name:"storageKey",type:"string",label:"Storage Key"},{name:"onViewChange",type:"string",label:"On View Change Event"}],defaultProps:{variant:"tabs",position:"top",defaultView:"grid",views:[{type:"grid",label:"Grid",schema:{type:"text",content:"Grid view"}},{type:"list",label:"List",schema:{type:"text",content:"List view"}}]}}),Ve.ComponentRegistry.register("filter-ui",gn,{namespace:"view",label:"Filter UI",category:"view",icon:"SlidersHorizontal",inputs:[{name:"filters",type:"array",label:"Filters",required:!0},{name:"values",type:"object",label:"Values"},{name:"onChange",type:"string",label:"On Change Event"},{name:"showClear",type:"boolean",label:"Show Clear Button"},{name:"showApply",type:"boolean",label:"Show Apply Button"},{name:"layout",type:"enum",label:"Layout",enum:["inline","popover","drawer"]}],defaultProps:{layout:"inline",showApply:!1,showClear:!0,filters:[{field:"name",label:"Name",type:"text",placeholder:"Search name"},{field:"status",label:"Status",type:"select",options:[{label:"Open",value:"open"},{label:"Closed",value:"closed"}]},{field:"created_at",label:"Created",type:"date"}]}}),Ve.ComponentRegistry.register("sort-ui",vn,{namespace:"view",label:"Sort UI",category:"view",icon:"ArrowUpDown",inputs:[{name:"fields",type:"array",label:"Fields",required:!0},{name:"sort",type:"array",label:"Sort"},{name:"onChange",type:"string",label:"On Change Event"},{name:"multiple",type:"boolean",label:"Allow Multiple"},{name:"variant",type:"enum",label:"Variant",enum:["dropdown","buttons"]}],defaultProps:{variant:"dropdown",multiple:!0,fields:[{field:"name",label:"Name"},{field:"created_at",label:"Created At"}],sort:[{field:"name",direction:"asc"}]}}),Ve.ComponentRegistry.register("shared-view-link",xn,{namespace:"view",label:"Shared View Link",category:"view",icon:"Share2",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"viewId",type:"string",label:"View ID"},{name:"baseUrl",type:"string",label:"Base URL"}],defaultProps:{objectName:"objects",viewId:"default"}});const cs=({schema:e,className:t,children:n,dataSource:r,...s})=>{const o=e.props?.columns?{display:"grid",gridTemplateColumns:`repeat(${e.props.columns}, 1fr)`,gap:"1rem"}:void 0;return i.jsx("div",{className:t,style:o,...s,children:n})};Ve.ComponentRegistry.register("view:simple",cs,{namespace:"plugin-view",label:"Simple View",category:"view"}),le.FilterUI=gn,le.ObjectView=pn,le.SharedViewLink=xn,le.SortUI=vn,le.ViewSwitcher=Ot,le.ViewTabBar=as,Object.defineProperty(le,Symbol.toStringTag,{value:"Module"})}));
@@ -63,6 +63,14 @@ export interface ObjectViewProps {
63
63
  * Toolbar addon: extra elements to render in the toolbar (e.g., MetadataToggle)
64
64
  */
65
65
  toolbarAddon?: React.ReactNode;
66
+ /**
67
+ * Callback when the "+" create view button is clicked in ViewSwitcher.
68
+ */
69
+ onCreateView?: () => void;
70
+ /**
71
+ * Callback when a per-view action is triggered in ViewSwitcher.
72
+ */
73
+ onViewAction?: (action: string, viewType: ViewType) => void;
66
74
  }
67
75
  /**
68
76
  * ObjectView Component
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import * as React from 'react';
9
+ export interface SharedViewLinkProps {
10
+ /** The object name used in the share URL path */
11
+ objectName: string;
12
+ /** Optional view identifier; defaults to "default" */
13
+ viewId?: string;
14
+ /** Base URL for the shareable link (defaults to window.location.origin) */
15
+ baseUrl?: string;
16
+ /** Callback fired after a share URL is generated */
17
+ onShare?: (shareUrl: string, options?: {
18
+ password?: string;
19
+ expiresAt?: string;
20
+ }) => void;
21
+ className?: string;
22
+ }
23
+ export declare const SharedViewLink: React.FC<SharedViewLinkProps>;
@@ -11,6 +11,9 @@ export type ViewSwitcherProps = {
11
11
  schema: ViewSwitcherSchema;
12
12
  className?: string;
13
13
  onViewChange?: (view: ViewType) => void;
14
+ onCreateView?: () => void;
15
+ onViewAction?: (action: string, view: ViewType) => void;
16
+ createViewLabel?: string;
14
17
  [key: string]: any;
15
18
  };
16
19
  export declare const ViewSwitcher: React.FC<ViewSwitcherProps>;
@@ -0,0 +1,75 @@
1
+ import { default as React, ComponentType } from 'react';
2
+ import { ViewTabBarConfig } from '../../types/src';
3
+ /** A single view definition for the tab bar */
4
+ export interface ViewTabItem {
5
+ /** Unique view identifier */
6
+ id: string;
7
+ /** Display label */
8
+ label: string;
9
+ /** View type (grid, kanban, calendar, etc.) */
10
+ type: string;
11
+ /** Whether this view has active filters */
12
+ hasActiveFilters?: boolean;
13
+ /** Whether this view has active sort */
14
+ hasActiveSort?: boolean;
15
+ /** Whether this is the default view */
16
+ isDefault?: boolean;
17
+ /** Whether this view is pinned/favorited */
18
+ isPinned?: boolean;
19
+ /** View visibility for grouping */
20
+ visibility?: 'private' | 'team' | 'organization' | 'public';
21
+ }
22
+ /** Available view type for quick-switch palette */
23
+ export interface AvailableViewType {
24
+ type: string;
25
+ label: string;
26
+ description?: string;
27
+ }
28
+ export interface ViewTabBarProps {
29
+ /** Views to render as tabs */
30
+ views: ViewTabItem[];
31
+ /** Currently active view ID */
32
+ activeViewId: string;
33
+ /** Callback when a view tab is clicked */
34
+ onViewChange: (viewId: string) => void;
35
+ /** Icon map: view type → React component */
36
+ viewTypeIcons?: Record<string, ComponentType<{
37
+ className?: string;
38
+ }>>;
39
+ /** Configuration for the tab bar UX */
40
+ config?: ViewTabBarConfig;
41
+ /** Called when "+" button is clicked to add a new view */
42
+ onAddView?: () => void;
43
+ /** Called when a view is renamed via context menu or double-click */
44
+ onRenameView?: (viewId: string, newName: string) => void;
45
+ /** Called when a view is duplicated */
46
+ onDuplicateView?: (viewId: string) => void;
47
+ /** Called when a view is deleted */
48
+ onDeleteView?: (viewId: string) => void;
49
+ /** Called when a view is set as default */
50
+ onSetDefaultView?: (viewId: string) => void;
51
+ /** Called when a view is shared */
52
+ onShareView?: (viewId: string) => void;
53
+ /** Called when "Save as View" is clicked */
54
+ onSaveAsView?: () => void;
55
+ /** Called when a view is pinned/unpinned */
56
+ onPinView?: (viewId: string, pinned: boolean) => void;
57
+ /** Called when views are reordered via drag */
58
+ onReorderViews?: (viewIds: string[]) => void;
59
+ /** Called when a view type is changed via quick-switch */
60
+ onChangeViewType?: (viewId: string, newType: string) => void;
61
+ /** Called when user clicks the gear icon to configure a view */
62
+ onConfigView?: (viewId: string) => void;
63
+ /** Available view types for quick-switch palette */
64
+ availableViewTypes?: AvailableViewType[];
65
+ /** Whether user has unsaved filter/sort changes (shows "Save as View" indicator) */
66
+ hasUnsavedChanges?: boolean;
67
+ /** Called when user clicks "Reset" to discard changes */
68
+ onResetChanges?: () => void;
69
+ /** Additional CSS class */
70
+ className?: string;
71
+ }
72
+ /**
73
+ * ViewTabBar — Airtable/Salesforce-style view tab bar with management UX.
74
+ */
75
+ export declare const ViewTabBar: React.FC<ViewTabBarProps>;
@@ -2,8 +2,12 @@ import { ObjectView } from './ObjectView';
2
2
  import { ViewSwitcher } from './ViewSwitcher';
3
3
  import { FilterUI } from './FilterUI';
4
4
  import { SortUI } from './SortUI';
5
- export { ObjectView, ViewSwitcher, FilterUI, SortUI };
5
+ import { SharedViewLink } from './SharedViewLink';
6
+ export { ObjectView, ViewSwitcher, FilterUI, SortUI, SharedViewLink };
7
+ export { ViewTabBar } from './ViewTabBar';
6
8
  export type { ObjectViewProps } from './ObjectView';
7
9
  export type { ViewSwitcherProps } from './ViewSwitcher';
10
+ export type { ViewTabBarProps, ViewTabItem, AvailableViewType } from './ViewTabBar';
8
11
  export type { FilterUIProps } from './FilterUI';
9
12
  export type { SortUIProps } from './SortUI';
13
+ export type { SharedViewLinkProps } from './SharedViewLink';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/plugin-view",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Object View plugin for Object UI",
@@ -15,14 +15,17 @@
15
15
  }
16
16
  },
17
17
  "dependencies": {
18
+ "@dnd-kit/core": "^6.3.1",
19
+ "@dnd-kit/sortable": "^10.0.0",
20
+ "@dnd-kit/utilities": "^3.2.2",
18
21
  "class-variance-authority": "^0.7.1",
19
- "lucide-react": "^0.563.0",
20
- "@object-ui/components": "3.0.2",
21
- "@object-ui/core": "3.0.2",
22
- "@object-ui/plugin-form": "3.0.2",
23
- "@object-ui/plugin-grid": "3.0.2",
24
- "@object-ui/react": "3.0.2",
25
- "@object-ui/types": "3.0.2"
22
+ "lucide-react": "^0.576.0",
23
+ "@object-ui/components": "3.1.0",
24
+ "@object-ui/core": "3.1.0",
25
+ "@object-ui/plugin-form": "3.1.0",
26
+ "@object-ui/plugin-grid": "3.1.0",
27
+ "@object-ui/react": "3.1.0",
28
+ "@object-ui/types": "3.1.0"
26
29
  },
27
30
  "peerDependencies": {
28
31
  "react": "^18.0.0 || ^19.0.0",