1import{h as F,r as l,j as s,ac as A,bt as O,lX as R,aq as W}from"./index-DHT8ocXi.js";import{a0 as N,a5 as J}from"./routes-B59S94UY.js";import{W as T,B as E,u as D,a as H,b as I,T as $,c as z,P as U}from"./useToolsCatalog-B8-CcgNm.js";import"./RerollBtn-BPahoQdf.js";import"./_baseClone-CLcwX-rf.js";import"./useHandlePaymentModalGA4Events-D4ZazDL-.js";import"./index-6noLYrto.js";import"./Avatars-_cLWQhwN.js";import"./ChatInterface-DmB40cF-.js";import"./ChatBatchLoadError-C_FRX9aP.js";import"./useJobHistory-D3ZXTA5S.js";import"./useDragAndDropUpload-BBapqkk3.js";import"./RecentUploadsButton-CbOVShcT.js";import"./SelectRadix-BSZTHgK6.js";const q=()=>{const{t:a}=F(),[e,u]=l.useState("news"),i=[{id:"news",label:a("tools.dashboard.updates.news",{defaultValue:"News"})},{id:"blog",label:a("tools.dashboard.updates.blog",{defaultValue:"Blog"})}];return s.jsxs("section",{className:"dashboard-updates",children:[s.jsx("div",{className:"dashboard-updates__tabs",role:"tablist",children:i.map(({id:t,label:o})=>s.jsx("button",{type:"button",role:"tab",id:`dashboard-updates-tab-${t}`,"aria-selected":e===t,"aria-controls":`dashboard-updates-panel-${t}`,className:A("dashboard-updates__tab",{"dashboard-updates__tab--active":e===t}),onClick:()=>u(t),children:o},t))}),s.jsx("div",{role:"tabpanel",id:`dashboard-updates-panel-${e}`,"aria-labelledby":`dashboard-updates-tab-${e}`,className:"dashboard-updates__panel",children:e==="news"?s.jsx(T,{}):s.jsx(E,{})})]})},M={xxl:{recentJobs:5,avatarPresets:6,toolsBesideSide:12,toolColumns:4,sideColumnBeside:!0,toolsCollapsed:0},xl:{recentJobs:5,avatarPresets:6,toolsBesideSide:12,toolColumns:4,sideColumnBeside:!0,toolsCollapsed:0},lg:{recentJobs:4,avatarPresets:4,toolsBesideSide:9,toolColumns:3,sideColumnBeside:!0,toolsCollapsed:0},md:{recentJobs:5,avatarPresets:6,toolsBesideSide:9,toolColumns:3,sideColumnBeside:!1,toolsCollapsed:6},sm:{recentJobs:3,avatarPresets:6,toolsBesideSide:6,toolColumns:2,sideColumnBeside:!1,toolsCollapsed:4},xs:{recentJobs:2,avatarPresets:6,toolsBesideSide:6,toolColumns:2,sideColumnBeside:!1,toolsCollapsed:4}},V=M.xxl,K=a=>a&&M[a]||V,X=a=>{const[e,u]=l.useState(null),[i,t]=l.useState({columns:0,trailingSpace:0,columnGap:0,trackWidth:0,rows:[]}),o=l.useCallback(()=>{if(!e)return;const r=getComputedStyle(e),m=r.gridTemplateColumns.split(" ").filter(Boolean).map(parseFloat).filter(Number.isFinite),c=parseFloat(r.columnGap
1)||0,h=m.reduce((d,n)=>d+n,0)+c*Math.max(0,m.length-1),p=new Map;[...e.children].forEach(d=>{const n=d;if(n.classList.contains("dashboard__tools-edge"))return;const _=n.offsetTop,f=p.get(_)??{bottom:0,items:0};p.set(_,{bottom:Math.max(f.bottom,_+n.offsetHeight),items:f.items+1})});const b=[...p.entries()].sort(([d],[n])=>d-n).map(([d,n])=>({top:d,height:n.bottom-d,items:n.items}));t({columns:m.length,trailingSpace:Math.max(0,Math.round(e.clientWidth-h)),columnGap:c,trackWidth:m[0]||0,rows:b})},[e,a]);return l.useEffect(()=>{if(o(),!e)return;const r=new ResizeObserver(o);return r.observe(e),()=>r.disconnect()},[o,e]),[u,i]},Y=a=>{const[e,u]=l.useState(0),i=l.useCallback(()=>{const t=a.current;if(!t)return;const o=parseFloat(getComputedStyle(t).rowGap)||0,r=[...t.children].filter(c=>!c.classList.contains("dashboard__filler"));if(!r.length)return;const m=r.reduce((c,h)=>c+h.offsetHeight,o*(r.length-1));u(Math.round(t.clientHeight-m-o))},[a]);return l.useEffect(()=>{i();const t=a.current;if(!t)return;const o=new ResizeObserver(i),r=()=>{o.disconnect(),o.observe(t),[...t.children].forEach(c=>o.observe(c)),t.parentElement&&o.observe(t.parentElement),i()};r();const m=new MutationObserver(r);return m.observe(t,{childList:!0}),()=>{o.disconnect(),m.disconnect()}},[i,a]),e},Q=(a,e,{total:u,fallback:i,collapsedRows:t=0})=>{const[o,r]=l.useState(i),[m,c]=l.useState(!0),h=l.useCallback(()=>{const b=a.current,d=e.current,n=d?.querySelector(".dashboard-tools__grid");if(!b||!d||!n)return;const f=b.getBoundingClientRect().left>=d.getBoundingClientRect().right,x=d.closest(".dashboard__inner");c(f);const S=getComputedStyle(n).gridTemplateColumns.split(" ").filter(Boolean),C=S.length;if(!C)return;if(!f){x?.style.removeProperty("--dashboard-tool-card"),r(t?Math.min(u,t*C):u);return}const v=parseFloat(S[0]);v&&x?.style.setProperty("--dashboard-tool-card",`${v}px`);const B=n.firstElementChild;if(!B)return;const g=B.getBoundingClientRect().height;if(!g)return;const y=parseFloat(getComputedStyle(n).rowGap)||0,k=g+y,j=[...b.children].filter(G=>!G.classList.contains("dashboard__filler")),w=j[j.length-1];if(!w)return;const P=w.getBoundingClientRect().bottom-n.getBoundingClientRect().top,L=Math.max(1,Math.ceil(P/k));r(Math.min(u,Math.max(C,L*C)))},[a,e,u,t]);l.useEffect(()=>{h();const b=new ResizeObserver(h);return a.current&&b.observe(a.current),e.current&&b.observe(e.current),window.addEventListener("resize",h),()=>{b.disconnect(),window.removeEventListener("resize",h)}},[h,a,e]);const p=l.useRef(!1);return l.useEffect(()=>{if(!p.current){p.current=!0;return}r(i)},[i]),{count:o,besideSideColumn:m}},Z=36,ss=40,es=2,ts=()=>{const a=O(),e=K(R()),u=l.useRef(null),i=l.useRef(null),t=!!W(),o=D(),[r,m]=l.useState(!1),c=e.toolsCollapsed>0&&!r,{count:h,besideSideColumn:p}=Q(i,u,{total:o.visibleTools.length,fallback:e.sideColumnBeside?e.toolsBesideSide:c?e.toolsCollapsed:o.visibleTools.length,collapsedRows:c?es:0}),b=p?o.visibleTools.slice(h):[],[d,{columns:n,trailingSpace:_,columnGap:f,trackWidth:x,rows:S}]=X(b.length),C=Y(i)>=ss,v=_-f,B=x>0&&v>=Z&&_<=x/2;return s.jsxs("main",{className:"dashboard",children:[s.jsxs("div",{className:"dashboard__aurora","aria-hidden":"true",children:[s.jsx("span",{className:"dashboard__aurora-blob dashboard__aurora-blob--sky"}),s.jsx("span",{className:"dashboard__aurora-blob dashboard__aurora-blob--pink"}),s.jsx("span",{className:"dashboard__aurora-blob dashboard__aurora-blob--navy"}),s.jsx("span",{className:"dashboard__aurora-fade"})]}),s.jsxs("div",{className:"dashboard__inner",children:[s.jsxs("div",{className:"dashboard__columns",children:[s.jsxs("div",{className:"dashboard__main",ref:u,children:[t&&s.jsx(H,{limit:e.recentJobs}),s.jsx(I,{isMobile:a,limit:e.avatarPresets}),s.jsx($,{catalog:o,limit:h,onShowAll:c?()=>m(!0):void 0})]}),s.jsxs("aside",{className:"dashboard__side",ref:i,children:[a?s.jsx(q,{}):s.jsxs(s.Fragment,{children:[s.jsx(T,{}),s.jsx(E,{})]}),s.jsx(N,{app:"photo-editor",variant:"inline"}),s.jsx(N,{app:"photo-enhancer",variant:"inline"}),C&&s.jsx("span",{className:"dashboard__filler","aria-hidden":"true"})]})]}),s.jsx(z,{ref:d,className:"dashboard__tools-rest",tools:b,onOpen:o.openTool,children:B&&S.filter(g=>g.items===n).map(g=>s.jsx("span",{className:"dashboard__tools-edge",style:{width:v,top:g.top,height:g.height},"aria-hidden":"true"},g.top))})]}),s.jsx(U,{})]})},_s=()=>s.jsx(J,{children:s.jsx(ts,{})});
1export{_s as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.