import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{C as t,Rt as n,S as r,T as i,_ as a,b as o,bi as s,g as c,h as l,m as u,p as d,ri as f,rr as p,v as m,w as h,x as g,y as _}from"./vendor-DU4C2Mru.js";import{vt as v}from"./index-B7s3VjPV.js";import{n as y,r as b,t as x}from"./useMeasuredSpan-888u6FTc.js";var S=e(s(),1),C=f();function w({tiles:e,maxColumns:n=2,editing:a=!1,onReorder:s,onHide:f}){let x=(0,S.useMemo)(()=>e.map(e=>e.key),[e]),{canvasRef:w,positions:E,reportSpan:D}=y({keys:x,colSpans:(0,S.useMemo)(()=>{let t={};for(let r of e)t[r.key]=Math.max(1,Math.min(n,r.colSpan??1));return t},[e,n])}),O=i(h(g,{activationConstraint:{distance:4}}),h(r,{activationConstraint:{delay:180,tolerance:6}}),h(o,{coordinateGetter:c})),[k,A]=(0,S.useState)(null),[j,M]=(0,S.useState)(null),N=k?e.find(e=>e.key===k)??null:null,P=(0,S.useCallback)(e=>A(String(e.active.id)),[]),F=(0,S.useCallback)(e=>M(e.over?String(e.over.id):null),[]),I=(0,S.useCallback)(()=>{A(null),M(null)},[]);return(0,C.jsxs)(m,{sensors:O,collisionDetection:t,onDragStart:P,onDragOver:F,onDragEnd:(0,S.useCallback)(e=>{A(null),M(null);let{active:t,over:n}=e;if(!n||t.id===n.id||!s)return;let r=x.indexOf(String(t.id)),i=x.indexOf(String(n.id));if(r<0||i<0)return;let a=u(x,r,i),o=document,c=()=>s(a);typeof o.startViewTransition==`function`?o.startViewTransition(c):c()},[x,s]),onDragCancel:I,children:[(0,C.jsx)(d,{items:x,strategy:l,children:(0,C.jsx)(`div`,{className:`glk-static-bento`,children:(0,C.jsx)(`div`,{ref:w,className:v(`glk-widget-canvas`,`glk-static-bento-${n}`),children:e.map(e=>(0,C.jsx)(T,{tile:e,position:E[e.key],onSpanChange:D,editing:a,isDropTarget:a&&j===e.key&&k!==e.key,onHide:f},e.key))})})}),(0,C.jsx)(_,{adjustScale:!1,dropAnimation:null,children:N?(0,C.jsxs)(`div`,{className:`glk-widget-tile glk-widget-drag-overlay pointer-events-none`,children:[!N.titleHidden&&N.title&&(0,C.jsx)(`div`,{className:`flex items-center justify-between px-5 pt-4 pb-3`,children:(0,C.jsxs)(`h2`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(p,{size:12,className:`text-[var(--glk-brand)]`}),N.icon&&(0,C.jsx)(`span`,{className:`inline-flex text-zinc-500 dark:text-zinc-400`,"aria-hidden":`true`,children:N.icon}),(0,C.jsx)(`span`,{className:`font-semibold uppercase text-zinc-500 dark:text-zinc-400`,style:{fontSize:`11px`,letterSpacing:`0.08em`},children:N.title})]})}),(0,C.jsx)(`div`,{className:`glk-widget-content px-5 pb-5 opacity-70`,children:(0,C.jsx)(b,{componentName:`bento:${N.key}`,children:N.component})})]}):null})]})}function T({tile:e,position:t,onSpanChange:r,editing:i,isDropTarget:o,onHide:s}){let{ref:c}=x({key:e.key,onSpanChange:r}),{attributes:l,listeners:u,setNodeRef:d,transform:f,transition:m,isDragging:h}=a({id:e.key,disabled:!i}),g={viewTransitionName:`widget-${e.key.replace(/[^a-zA-Z0-9_-]/g,`-`)}`,containerType:`inline-size`,opacity:+!h,gridColumn:t?`${t.colStart} / span ${t.colSpan}`:`span 1`,gridRow:t?`${t.rowStart} / span ${t.rowSpan}`:`span 1`},_=i?{...l,...u}:void 0;return(0,C.jsx)(`div`,{ref:d,style:g,children:(0,C.jsxs)(`div`,{className:v(`glk-widget-tile group relative overflow-hidden rounded-xl w-full flex flex-col`,i&&!h&&`ring-1 ring-zinc-300 dark:ring-zinc-700`,o&&`ring-2 ring-[var(--glk-brand)] ring-offset-2 ring-offset-[var(--bg-page)]`),children:[!e.titleHidden&&e.title||i?(0,C.jsxs)(`div`,{className:`flex items-center justify-between px-5 pt-4 pb-3`,children:[(0,C.jsxs)(`h2`,{className:v(`flex items-center gap-2 min-w-0 flex-1`,i&&`cursor-grab active:cursor-grabbing touch-none select-none`),...i?_??{}:{},children:[i&&(0,C.jsx)(p,{size:14,className:`shrink-0 text-zinc-400 dark:text-zinc-500`}),e.icon&&(0,C.jsx)(`span`,{className:`inline-flex text-zinc-500 dark:text-zinc-400`,"aria-hidden":`true`,children:e.icon}),!e.titleHidden&&e.title&&(0,C.jsx)(`span`,{className:`glk-eyebrow truncate text-zinc-600 dark:text-zinc-300`,style:{fontSize:`11px`},children:e.title})]}),i&&s&&(0,C.jsx)(`button`,{onClick:t=>{t.stopPropagation(),s(e.key)},onPointerDown:e=>e.stopPropagation(),className:`flex h-6 w-6 items-center justify-center rounded-full bg-zinc-200 text-zinc-500 hover:bg-[var(--glk-loss)] hover:text-white dark:bg-zinc-700 dark:text-zinc-400 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--glk-brand)]`,"aria-label":`Hide ${e.title??e.key} widget`,children:(0,C.jsx)(n,{size:12,"aria-hidden":`true`})})]}):null,(0,C.jsx)(`div`,{ref:c,className:v(`glk-widget-content px-5 pb-5`,i&&`pointer-events-none opacity-60`),children:(0,C.jsx)(b,{componentName:`bento:${e.key}`,children:e.component})})]})})}export{w as t};