@object-ui/runner 4.8.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{$ as e,X as t,Y as n}from"./index-CS6VCmwe.js";var r=e(n()),i=e(t());function a(){var e=[...arguments];return(0,i.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}var o=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function s(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function c(e){return`nodeType`in e}function l(e){return e?s(e)?e:c(e)?e.ownerDocument?.defaultView??window:window:window}function u(e){let{Document:t}=l(e);return e instanceof t}function d(e){return s(e)?!1:e instanceof l(e).HTMLElement}function f(e){return e instanceof l(e).SVGElement}function p(e){return e?s(e)?e.document:c(e)?u(e)?e:d(e)||f(e)?e.ownerDocument:document:document:document}var m=o?i.useLayoutEffect:i.useEffect;function h(e){let t=(0,i.useRef)(e);return m(()=>{t.current=e}),(0,i.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function g(){let e=(0,i.useRef)(null);return[(0,i.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,i.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function _(e,t){t===void 0&&(t=[e]);let n=(0,i.useRef)(e);return m(()=>{n.current!==e&&(n.current=e)},t),n}function v(e,t){let n=(0,i.useRef)();return(0,i.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function y(e){let t=h(e),n=(0,i.useRef)(null);return[n,(0,i.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function b(e){let t=(0,i.useRef)();return(0,i.useEffect)(()=>{t.current=e},[e]),t.current}var x={};function S(e,t){return(0,i.useMemo)(()=>{if(t)return t;let n=x[e]==null?0:x[e]+1;return x[e]=n,e+`-`+n},[e,t])}function C(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var w=C(1),T=C(-1);function E(e){return`clientX`in e&&`clientY`in e}function D(e){if(!e)return!1;let{KeyboardEvent:t}=l(e.target);return t&&e instanceof t}function ee(e){if(!e)return!1;let{TouchEvent:t}=l(e.target);return t&&e instanceof t}function te(e){if(ee(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return E(e)?{x:e.clientX,y:e.clientY}:null}var O=Object.freeze({Translate:{toString(e){if(!e)return;let{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;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[O.Translate.toString(e),O.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),k=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function A(e){return e.matches(k)?e:e.querySelector(k)}var ne={display:`none`};function re(e){let{id:t,value:n}=e;return i.createElement(`div`,{id:t,style:ne},n)}function j(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return i.createElement(`div`,{id:t,style:{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`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function ie(){let[e,t]=(0,i.useState)(``);return{announce:(0,i.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var ae=(0,i.createContext)(null);function M(e){let t=(0,i.useContext)(ae);(0,i.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function oe(){let[e]=(0,i.useState)(()=>new Set),t=(0,i.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,i.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var se={draggable:`
1
+ import{$ as e,X as t,Y as n}from"./index-Yfw6iWON.js";var r=e(n()),i=e(t());function a(){var e=[...arguments];return(0,i.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}var o=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function s(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function c(e){return`nodeType`in e}function l(e){return e?s(e)?e:c(e)?e.ownerDocument?.defaultView??window:window:window}function u(e){let{Document:t}=l(e);return e instanceof t}function d(e){return s(e)?!1:e instanceof l(e).HTMLElement}function f(e){return e instanceof l(e).SVGElement}function p(e){return e?s(e)?e.document:c(e)?u(e)?e:d(e)||f(e)?e.ownerDocument:document:document:document}var m=o?i.useLayoutEffect:i.useEffect;function h(e){let t=(0,i.useRef)(e);return m(()=>{t.current=e}),(0,i.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function g(){let e=(0,i.useRef)(null);return[(0,i.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,i.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function _(e,t){t===void 0&&(t=[e]);let n=(0,i.useRef)(e);return m(()=>{n.current!==e&&(n.current=e)},t),n}function v(e,t){let n=(0,i.useRef)();return(0,i.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function y(e){let t=h(e),n=(0,i.useRef)(null);return[n,(0,i.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function b(e){let t=(0,i.useRef)();return(0,i.useEffect)(()=>{t.current=e},[e]),t.current}var x={};function S(e,t){return(0,i.useMemo)(()=>{if(t)return t;let n=x[e]==null?0:x[e]+1;return x[e]=n,e+`-`+n},[e,t])}function C(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var w=C(1),T=C(-1);function E(e){return`clientX`in e&&`clientY`in e}function D(e){if(!e)return!1;let{KeyboardEvent:t}=l(e.target);return t&&e instanceof t}function ee(e){if(!e)return!1;let{TouchEvent:t}=l(e.target);return t&&e instanceof t}function te(e){if(ee(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return E(e)?{x:e.clientX,y:e.clientY}:null}var O=Object.freeze({Translate:{toString(e){if(!e)return;let{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;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[O.Translate.toString(e),O.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),k=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function A(e){return e.matches(k)?e:e.querySelector(k)}var ne={display:`none`};function re(e){let{id:t,value:n}=e;return i.createElement(`div`,{id:t,style:ne},n)}function j(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return i.createElement(`div`,{id:t,style:{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`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function ie(){let[e,t]=(0,i.useState)(``);return{announce:(0,i.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var ae=(0,i.createContext)(null);function M(e){let t=(0,i.useContext)(ae);(0,i.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function oe(){let[e]=(0,i.useState)(()=>new Set),t=(0,i.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,i.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var se={draggable:`
2
2
  To pick up a draggable item, press the space bar.
3
3
  While dragging, use the arrow keys to move the item.
4
4
  Press space again to drop the item in its new position, or press escape to cancel.
package/dist/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Object UI React Example</title>
8
- <script type="module" crossorigin src="/assets/index-CS6VCmwe.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-Yfw6iWON.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-DsHPBIfF.css">
10
10
  </head>
11
11
  <body>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@object-ui/runner",
3
3
  "private": false,
4
- "version": "4.8.0",
4
+ "version": "5.0.0",
5
5
  "description": "Universal Object UI Application Runner",
6
6
  "type": "module",
7
7
  "homepage": "https://www.objectui.org/docs/utilities/runner",
@@ -21,12 +21,12 @@
21
21
  "react-dom": "19.2.6",
22
22
  "tailwind-merge": "^3.6.0",
23
23
  "tailwindcss-animate": "^1.0.7",
24
- "@object-ui/components": "4.8.0",
25
- "@object-ui/core": "4.8.0",
26
- "@object-ui/plugin-charts": "4.8.0",
27
- "@object-ui/plugin-kanban": "4.8.0",
28
- "@object-ui/react": "4.8.0",
29
- "@object-ui/types": "4.8.0"
24
+ "@object-ui/components": "5.0.0",
25
+ "@object-ui/core": "5.0.0",
26
+ "@object-ui/plugin-charts": "5.0.0",
27
+ "@object-ui/plugin-kanban": "5.0.0",
28
+ "@object-ui/react": "5.0.0",
29
+ "@object-ui/types": "5.0.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@tailwindcss/postcss": "^4.3.0",
@@ -1 +0,0 @@
1
- import{$ as e,B as t,F as n,I as r,J as i,K as a,L as o,M as s,N as c,P as l,R as u,W as d,X as f,n as p,q as m,r as h,t as g}from"./index-CS6VCmwe.js";import{a as _,c as v,d as y,f as b,i as x,l as S,n as C,o as w,r as T,s as E,t as D,u as O}from"./sortable.esm-E1lJaysW.js";var k=e(f(),1),A=i(),j=(...e)=>e.filter(Boolean).join(` `),M=d({"kanban.addCard":`Add card`,"kanban.noCards":`No cards`,"kanban.cardTitlePlaceholder":`Enter card title...`},`kanban.noCards`),N=`Uncategorized`,P=[{stripe:`from-indigo-500 via-indigo-400/70 to-indigo-500/0`,text:`text-indigo-600 dark:text-indigo-300`,ring:`ring-indigo-500/20`,tint:`bg-indigo-500/10`},{stripe:`from-sky-500 via-sky-400/70 to-sky-500/0`,text:`text-sky-600 dark:text-sky-300`,ring:`ring-sky-500/20`,tint:`bg-sky-500/10`},{stripe:`from-emerald-500 via-emerald-400/70 to-emerald-500/0`,text:`text-emerald-600 dark:text-emerald-300`,ring:`ring-emerald-500/20`,tint:`bg-emerald-500/10`},{stripe:`from-amber-500 via-amber-400/70 to-amber-500/0`,text:`text-amber-600 dark:text-amber-300`,ring:`ring-amber-500/20`,tint:`bg-amber-500/10`},{stripe:`from-rose-500 via-rose-400/70 to-rose-500/0`,text:`text-rose-600 dark:text-rose-300`,ring:`ring-rose-500/20`,tint:`bg-rose-500/10`},{stripe:`from-violet-500 via-violet-400/70 to-violet-500/0`,text:`text-violet-600 dark:text-violet-300`,ring:`ring-violet-500/20`,tint:`bg-violet-500/10`},{stripe:`from-cyan-500 via-cyan-400/70 to-cyan-500/0`,text:`text-cyan-600 dark:text-cyan-300`,ring:`ring-cyan-500/20`,tint:`bg-cyan-500/10`},{stripe:`from-fuchsia-500 via-fuchsia-400/70 to-fuchsia-500/0`,text:`text-fuchsia-600 dark:text-fuchsia-300`,ring:`ring-fuchsia-500/20`,tint:`bg-fuchsia-500/10`}];function F(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n);return P[Math.abs(t)%P.length]}function I(e,t){if(!t||t.length===0)return{};for(let n of t){let t=e[n.field];if(t==null)continue;let r=!1,i=String(t);switch(n.operator){case`equals`:r=i===String(n.value);break;case`not_equals`:r=i!==String(n.value);break;case`contains`:r=i.toLowerCase().includes(String(n.value).toLowerCase());break;case`in`:r=Array.isArray(n.value)&&n.value.includes(i);break}if(r)return{...n.backgroundColor?{backgroundColor:n.backgroundColor}:{},...n.borderColor?{borderColor:n.borderColor}:{}}}return{}}function L({card:e,onCardClick:t,conditionalFormatting:i}){let{attributes:a,listeners:u,setNodeRef:d,transform:f,transition:p,isDragging:m}=T({id:e.id}),h={transform:b.Transform.toString(f),transition:p,opacity:m?.5:void 0},g=I(e,i);return(0,A.jsx)(`div`,{ref:d,style:h,...a,...u,role:`listitem`,"aria-label":e.title,onClick:n=>t?.(e,n),children:(0,A.jsxs)(s,{className:`mb-2 cursor-grab active:cursor-grabbing border-border border-l-4 border-l-primary/40 bg-card/60 hover:border-primary/40 hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 group touch-manipulation`,style:g,children:[e.coverImage&&(0,A.jsx)(`div`,{className:`w-full h-32 overflow-hidden rounded-t-lg`,children:(0,A.jsx)(`img`,{src:e.coverImage,alt:``,className:`w-full h-full object-cover`,loading:`lazy`})}),(0,A.jsxs)(n,{className:`p-2 sm:p-4`,children:[(0,A.jsx)(r,{className:`text-xs sm:text-sm font-medium tracking-tight text-foreground group-hover:text-primary transition-colors`,children:e.title}),(e.cardSubtitle??e.description)&&(0,A.jsx)(l,{className:`text-xs text-muted-foreground line-clamp-2 sm:line-clamp-none`,children:e.cardSubtitle??e.description})]}),e.badges&&e.badges.length>0&&(0,A.jsx)(c,{className:`p-2 sm:p-4 pt-0`,children:(0,A.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.badges.map((e,t)=>(0,A.jsx)(o,{variant:e.colorClass?`outline`:e.variant||`default`,className:j(`text-xs font-normal`,e.colorClass),children:e.label},t))})})]})})}function R({columnId:e,onAdd:n}){let{t:r}=M(),[i,a]=k.useState(!1),[o,s]=k.useState(``),c=k.useRef(null),l=()=>{let t=o.trim();t&&(n(e,t),s(``)),a(!1)};return i?(0,A.jsx)(`div`,{className:`mt-2 space-y-2`,children:(0,A.jsx)(h,{ref:c,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),l()):e.key===`Escape`&&(s(``),a(!1))},onBlur:l,placeholder:r(`kanban.cardTitlePlaceholder`),className:`text-sm`,autoFocus:!0})}):(0,A.jsxs)(u,{variant:`ghost`,size:`sm`,className:`w-full mt-2 text-muted-foreground hover:text-foreground`,onClick:()=>{a(!0),setTimeout(()=>c.current?.focus(),0)},children:[(0,A.jsx)(t,{className:`h-4 w-4 mr-1`}),r(`kanban.addCard`)]})}function z({column:e,cards:t,onCardClick:n,quickAdd:r,onQuickAdd:i,conditionalFormatting:a,columnStyle:s}){let{t:c}=M(),l=t||[],{setNodeRef:u,isOver:d}=T({id:e.id,data:{type:`column`}}),f=e.limit&&l.length>=e.limit,m=s&&s.width!=null?`shrink-0`:`w-[85vw] sm:w-80 shrink-0`,h=F(e.id);return(0,A.jsxs)(`div`,{ref:u,role:`group`,"aria-label":e.title,style:s,className:j(`relative flex flex-col rounded-xl border border-border/60 bg-muted/15 snap-start max-h-full min-h-0 transition-all duration-200 shadow-sm hover:shadow-md overflow-hidden`,m,d&&`ring-2 ring-primary/60 bg-primary/5`,e.className),children:[(0,A.jsx)(`div`,{"aria-hidden":!0,className:j(`absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r`,h.stripe)}),(0,A.jsx)(`div`,{className:`px-3 sm:px-4 pt-3.5 pb-3 border-b border-border/40 bg-gradient-to-b from-background/60 to-transparent`,children:(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,A.jsx)(`h3`,{id:`kanban-col-${e.id}`,className:j(`text-xs sm:text-sm font-semibold tracking-tight truncate`,h.text),children:e.title}),(0,A.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[(0,A.jsxs)(`span`,{className:j(`inline-flex items-center justify-center min-w-[22px] h-[22px] px-1.5 rounded-md text-[11px] font-semibold tabular-nums ring-1 ring-inset`,h.tint,h.text,h.ring),children:[l.length,e.limit&&(0,A.jsx)(`span`,{className:`text-muted-foreground/70 font-normal`,children:` / ${e.limit}`})]}),f&&(0,A.jsx)(o,{variant:`destructive`,className:`text-[10px] h-[22px] px-1.5`,children:`Full`})]})]})}),(0,A.jsxs)(p,{className:`flex-1 p-4`,children:[(0,A.jsx)(D,{items:l.map(e=>e.id),strategy:x,children:(0,A.jsxs)(`div`,{className:`space-y-2`,role:`list`,"aria-label":`${e.title} cards`,children:[l.length===0&&(0,A.jsx)(`div`,{className:j(`flex flex-col items-center justify-center py-10 rounded-md border-2 border-dashed transition-colors`,d?`border-primary/60 bg-primary/10 text-primary`:`border-border/40 text-muted-foreground/60`),children:(0,A.jsxs)(`span`,{className:`text-xs`,children:[d?`↓ `:``,c(`kanban.noCards`)]})}),l.map(e=>(0,A.jsx)(L,{card:e,onCardClick:n,conditionalFormatting:a},e.id))]})}),r&&i&&(0,A.jsx)(R,{columnId:e.id,onAdd:i})]})]})}function B({children:e}){return(0,A.jsx)(A.Fragment,{children:e(a())})}function V({columns:e,onCardMove:t,onCardClick:n,className:r,quickAdd:i,onQuickAdd:a,coverImageField:o,conditionalFormatting:s,swimlaneField:c}){return m()?(0,A.jsx)(B,{children:l=>(0,A.jsx)(H,{columns:e,onCardMove:t,onCardClick:n,className:r,dnd:l,quickAdd:i,onQuickAdd:a,coverImageField:o,conditionalFormatting:s,swimlaneField:c})}):(0,A.jsx)(H,{columns:e,onCardMove:t,onCardClick:n,className:r,dnd:null,quickAdd:i,onQuickAdd:a,coverImageField:o,conditionalFormatting:s,swimlaneField:c})}function H({columns:e,onCardMove:t,onCardClick:n,className:r,dnd:i,quickAdd:a,onQuickAdd:o,coverImageField:s,conditionalFormatting:c,swimlaneField:l}){let[u,d]=k.useState(null),f=k.useRef(null),{width:p}=g(f),m=k.useMemo(()=>p?p<480?{width:Math.max(p-32,220)}:p<720?{width:280}:{width:320}:{},[p]),h=l?`objectui:kanban-collapsed:${l}`:null,[b,T]=k.useState(()=>{if(!h)return new Set;try{let e=localStorage.getItem(h);if(e){let t=JSON.parse(e);if(Array.isArray(t))return new Set(t.filter(e=>typeof e==`string`))}}catch{}return new Set}),M=k.useMemo(()=>(e||[]).map(e=>({...e,cards:e.cards||[]})),[e]),[P,F]=k.useState(M);k.useEffect(()=>{F(M)},[M]);let I=k.useMemo(()=>{if(!l)return null;let e=P.flatMap(e=>e.cards),t=new Set;return e.forEach(e=>{let n=e[l];t.add(n==null?N:String(n))}),Array.from(t).sort()},[P,l]),R=k.useCallback(e=>{T(t=>{let n=new Set(t);if(n.has(e)?n.delete(e):n.add(e),h)try{localStorage.setItem(h,JSON.stringify([...n]))}catch{}return n})},[h]),B=y(O(E,{activationConstraint:{distance:5}}),O(v,{activationConstraint:{delay:200,tolerance:5}})),V=e=>{let{active:t}=e,n=U(t.id);if(d(n),i&&n){let e=W(n.id);e&&i.startDrag({id:n.id,type:`kanban-card`,data:n,sourceId:e.id})}},H=e=>{let{active:n,over:r}=e;if(d(null),!r){i&&i.endDrag();return}let a=n.id,o=r.id;if(a===o){i&&i.endDrag();return}let s=W(a),c=W(o)||G(o);if(!s||!c){i&&i.endDrag();return}if(s.id===c.id){let e=[...s.cards],t=C(e,e.findIndex(e=>e.id===a),e.findIndex(e=>e.id===o));F(e=>e.map(e=>e.id===s.id?{...e,cards:t}:e))}else{let e=[...s.cards],n=[...c.cards],r=e.findIndex(e=>e.id===a),i=o===c.id?n.length:n.findIndex(e=>e.id===o),[l]=e.splice(r,1);n.splice(i,0,l),F(t=>t.map(t=>t.id===s.id?{...t,cards:e}:t.id===c.id?{...t,cards:n}:t)),t&&t(a,s.id,c.id,i)}i&&i.endDrag(c.id)},U=k.useCallback(e=>{for(let t of P){let n=t.cards.find(t=>t.id===e);if(n)return n}return null},[P]),W=k.useCallback(e=>P.find(t=>t.cards.some(t=>t.id===e))||null,[P]),G=k.useCallback(e=>P.find(t=>t.id===e)||null,[P]),K=k.useRef(null),[q,J]=k.useState(0);return k.useEffect(()=>{let e=K.current;if(!e)return;let t=()=>{let t=e.clientWidth;if(t<=0)return;let n=Math.round(e.scrollLeft/t);J(Math.max(0,Math.min(P.length-1,n)))};return t(),e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[P.length]),(0,A.jsxs)(_,{sensors:B,collisionDetection:S,onDragStart:V,onDragEnd:H,children:[(0,A.jsxs)(`div`,{ref:f,className:`flex flex-col min-w-0 min-h-0 h-full`,children:[P.length>1&&(0,A.jsx)(`div`,{className:`flex sm:hidden items-center justify-center gap-1.5 px-3 pb-2`,"aria-hidden":!0,children:P.map((e,t)=>(0,A.jsx)(`span`,{className:j(`h-1.5 rounded-full transition-all`,t===q?`w-4 bg-foreground/70`:`w-1.5 bg-muted-foreground/30`)},e.id))}),I?(0,A.jsxs)(`div`,{className:j(`flex flex-col gap-2 px-4 sm:px-6 py-3 sm:py-4 min-w-0 overflow-hidden`,r),role:`region`,"aria-label":`Kanban board with swimlanes`,children:[(0,A.jsx)(`div`,{className:`flex gap-3 sm:gap-4 pl-36 sm:pl-44 overflow-x-auto`,children:P.map(e=>(0,A.jsxs)(`div`,{className:`w-[85vw] sm:w-80 shrink-0 text-center`,children:[(0,A.jsx)(`span`,{className:` text-xs sm:text-sm font-semibold tracking-wider text-primary/90 uppercase`,children:e.title}),(0,A.jsxs)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[`(`,e.cards.length,`)`]})]},e.id))}),I.map(e=>{let t=b.has(e),r=P.reduce((t,n)=>t+n.cards.filter(t=>(t[l]==null?N:String(t[l]))===e).length,0);return(0,A.jsxs)(`div`,{className:`border rounded-lg bg-muted/10`,children:[(0,A.jsxs)(`button`,{className:`w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-muted/30 transition-colors`,onClick:()=>R(e),"aria-expanded":!t,children:[(0,A.jsx)(`span`,{className:j(`transition-transform text-xs`,t?``:`rotate-90`),children:`▶`}),(0,A.jsx)(`span`,{className:` text-xs font-semibold text-muted-foreground uppercase tracking-wider`,children:e}),(0,A.jsxs)(`span`,{className:` text-xs text-muted-foreground`,children:[`(`,r,`)`]})]}),!t&&(0,A.jsx)(`div`,{className:`flex gap-3 sm:gap-4 overflow-x-auto px-2 pb-3 pl-36 sm:pl-44`,children:P.map(t=>{let r=t.cards.filter(t=>(t[l]==null?N:String(t[l]))===e);return(0,A.jsx)(`div`,{className:`w-[85vw] sm:w-80 shrink-0 min-h-[60px] rounded-md bg-card/20 p-2`,children:(0,A.jsx)(D,{items:r.map(e=>e.id),strategy:x,children:(0,A.jsx)(`div`,{className:`space-y-2`,role:`list`,"aria-label":`${t.title} - ${e} cards`,children:r.map(e=>(0,A.jsx)(L,{card:e,onCardClick:n,conditionalFormatting:c},e.id))})})},t.id)})})]},e)})]}):(0,A.jsx)(`div`,{ref:K,className:j(`flex gap-3 sm:gap-4 overflow-x-auto snap-x snap-mandatory px-4 sm:px-6 py-3 sm:py-4 [-webkit-overflow-scrolling:touch] min-w-0 min-h-0 h-full`,r),role:`region`,"aria-label":`Kanban board`,children:P.map(e=>(0,A.jsx)(z,{column:e,cards:e.cards,onCardClick:n,quickAdd:a,onQuickAdd:o,conditionalFormatting:c,columnStyle:m},e.id))})]}),(0,A.jsx)(w,{children:(0,A.jsx)(`div`,{"aria-live":`assertive`,"aria-label":u?`Dragging ${u.title}`:void 0,children:u?(0,A.jsx)(L,{card:u,conditionalFormatting:c}):null})})]})}export{V as default};