1import{j as e,ab as x,S as f,aj as M,a7 as u,Q as R,aw as q,R as k,ac as z,T,H as N,N as P}from"./mui-CRsYZxVY.js";import{r as j}from"./vendor-Dwao9eNC.js";import{u as F,m as L,w as D,b as Q,dV as B,dW as W,dX as $,T as V,dY as G,dZ as H,d_ as K,d$ as U,bG as Y,e1 as O,e2 as X,b8 as Z,e3 as J,e4 as ee}from"./index-TALscxEc.js";import{u as te}from"./useAttributes-B8RqNYFn.js";import{S as ie}from"./SwatchChip-BfTakq5s.js";import{a as re,b as se}from"./query-8ViTdhdk.js";import{e as _,G as ae,_ as ne,$ as oe,a0 as le}from"./icons-D8aatgQ4.js";import"./datePickers-BIJXYOKG.js";import"./lab-DSem1Osk.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};t.SENTRY_RELEASE={id:"2ad85febf9735404429b0670d4acf56a0af5a0a2"}}catch{}})();try{(function(){var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},i=new t.Error().stack;i&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[i]="b04dd802-31d5-42b4-974d-aee3679c2a9b",t._sentryDebugIdIdentifier="sentry-dbid-b04dd802-31d5-42b4-974d-aee3679c2a9b")})()}catch{}const de=({valores:t,plusChipEstimatedWidth:i=55,spacingValue:p=.5})=>{const m=j.useRef(null),[c,o]=j.useState(0),[s,l]=j.useState(!0);j.useLayoutEffect(()=>{l(!0),o(t.length)},[t]),j.useEffect(()=>{if(!s||!m.current||t.length===0){t.length===0&&l(!1);return}const n=m.current,h=Array.from(n.children).filter(g=>g.hasAttribute("data-value-chip"));if(h.length===0&&t.length>0)return;if(h.length===0&&t.length===0){l(!1),o(0);return}const w=n.clientWidth,v=p*8;let C=0,d=0;for(let g=0;g<h.length;g++){const I=h[g].offsetWidth,E=C+I+(d>0?v:0);if(E<=w)C=E,d++;else break}let S=d;if(d<t.length){let g=0;for(let y=d;y>=0;y--){let I=0;for(let A=0;A<y;A++)I+=h[A].offsetWidth+(A>0?v:0);if(I+(y>0?v:0)+i<=w){g=y;break}}S=g}o(S),l(!1)},[s,t,i,p]);const a=s?t:t.slice(0,c),r=s?0:t.length-c;return e.jsxs(x,{ref:m,direction:"row",spacing:p,sx:{mt:1,alignItems:"center",visibility:s?"hidden":"visible",minWidth:0},children:[a.map(n=>e.jsx(f,{"data-value-chip":!0,avatar:n.swatch?e.jsx(M,{sx:{width:18,height:18},children:e.jsx(ie,{swatch:n.swatch,size:18})}):void 0,label:n.valor,size:"small"},n.id)),!s&&r>0&&e.jsx(f,{label:`+${r}`,size:"small",variant:"outlined"})]})},ce=()=>{const t=re(),{user:i}=F(),p=i==null?void 0:i.id,{triggerRevalidation:m}=L();return se({mutationFn:async({attributes:c})=>{if(!p)throw new Error("User must be logged in to update attribute order.");const{data:o,error:s}=await D.from("atributos").select("*").in("id",c.map(r=>r.id));if(s)throw s;const l=new Map((o==null?void 0:o.map(r=>[r.id,r]))||[]),{error:a}=await D.from("atributos").upsert(c.map(({id:r,destaque:n})=>{const b=l.get(r);if(!b)throw new Error(`Attribute with id ${r} not found`);return{id:r,destaque:n,nome:b.nome,user_id:b.user_id}}),{onConflict:"id",ignoreDuplicates:!1});if(a)throw a},onMutate:async({attributes:c,originalAttributes:o})=>{await t.cancelQueries({queryKey:["attributes"]});const s=t.getQueryData(["attributes"]);if(o){const l=new Map(c.map(({id:r,destaque:n})=>[r,n])),a=o.map(r=>({...r,destaque:l.get(r.id)??r.destaque})).sort((r,n)=>{const b=r.destaque??-1/0,h=n.destaque??-1/0;return h!==b?h-b:r.id-n.id});t.setQueryData(["attributes"],a)}return{previousAttributes:s}},onError:(c,o,s)=>{s!=null&&s.previousAttributes&&t.setQueryData(["attributes"],s.previousAttributes)},onSettled:()=>{t.invalidateQueries({queryKey:["attributes"]}),m()}})},ue=()=>e.jsx(k,{sx:{opacity:.7,animation:"pulse 1.5s ease-in-out infinite","@keyframes pulse":{"0%":{opacity:.7},"50%":{opacity:.5},"100%":{opacity:.7}}},children:e.jsx(z,{primary:e.jsx(u,{sx:{width:"60%",height:24,bgcolor:"rgba(0,0,0,0.1)",borderRadius:1}}),secondary:e.jsx(x,{direction:"row",spacing:1,sx:{mt:1},children:[1,2,3].map(t=>e.jsx(u,{sx:{width:60,height:24,bgcolor:"rgba(0,0,0,0.1)",borderRadius:12}},t))})})}),he=({attribute:t,onClick:i})=>{const{attributes:p,listeners:m,setNodeRef:c,transform:o,transition:s,isDragging:l}=O({id:t.id.toString()}),a={transform:X.Transform.toString(o),transition:s,opacity:l?.8:1,position:"relative",zIndex:l?999:"auto",boxShadow:l?"0 5px 15px rgba(0,0,0,0.2)":"none"};return e.jsxs(k,{ref:c,style:a,disablePadding:!0,children:[e.jsx(u,{...p,...m,sx:{color:"text.disabled",cursor:"grab",touchAction:"none",display:"flex",alignItems:"center",px:1.5,alignSelf:"stretch","&:active":{cursor:"grabbing"}},"aria-label":"Arrastar para reordenar",onClick:r=>r.stopPropagation(),children:e.jsx(ae,{})}),e.jsx(u,{onClick:i,sx:{flex:1,minWidth:0,py:2,pr:2,display:"flex",alignItems:"center",cursor:"pointer"},children:e.jsx(z,{primary:e.jsx(T,{component:"div",sx:Z,children:t.nome}),secondary:e.jsx(de,{valores:t.valores}),secondaryTypographyProps:{component:"div"}})})]})},pe=({onAddClick:t})=>e.jsx(N,{elevation:0,sx:{p:4,my:2,textAlign:"center",borderRadius:2,bgcolor:"white",border:"1px dashed",borderColor:"divider"},children:e.jsxs(x,{spacing:3,alignItems:"center",children:[e.jsx(u,{sx:{display:"flex",justifyContent:"center"},children:e.jsxs(x,{direction:"row",spacing:1,children:[e.jsx(u,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:40,height:40,bgcolor:"primary.lighter",color:"primary.main",borderRadius:"50%",transform:"rotate(-10deg)"},children:e.jsx(ne,{})}),e.jsx(u,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:40,height:40,bgcolor:"success.lighter",color:"success.main",borderRadius:"50%",position:"relative",top:-10},children:e.jsx(oe,{})}),e.jsx(u,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:40,height:40,bgcolor:"warning.lighter",color:"warning.main",borderRadius:"50%",transform:"rotate(10deg)"},children:e.jsx(le,{})})]})}),e.jsx(T,{variant:"h6",fontWeight:600,children:"Nenhum atributo criado"}),e.jsx(T,{variant:"body2",color:"text.secondary",children:'Atributos permitem criar variações de um mesmo produto com diferentes caracterÃsticas como cor, tamanho, material, etc. Por exemplo, um atributo "Cor" pode ter valores como "Vermelho", "Azul" e "Verde".'}),e.jsx(u,{sx:{p:2,bgcolor:"grey.50",borderRadius:2,width:"100%",mb:1},children:e.jsxs(x,{spacing:1,children:[e.jsx(u,{sx:{display:"flex",alignItems:"center"},children:e.jsx(T,{variant:"body2",fontWeight:600,sx:{mr:1},children:"Exemplos de atributos:"})}),e.jsxs(x,{direction:"row",spacing:1,sx:{mb:1},children:[e.jsx(f,{label:"Cor",size:"small"}),e.jsx(f,{color:"primary",variant:"outlined",label:"Vermelho",size:"small"}),e.jsx(f,{color:"primary",variant:"outlined",label:"Azul",size:"small"})]}),e.jsxs(x,{direction:"row",spacing:1,children:[e.jsx(f,{label:"Tamanho",size:"small"}),e.jsx(f,{color:"primary",variant:"outlined",label:"P",size:"small"}),e.jsx(f,{color:"primary",variant:"outlined",label:"M",size:"small"}),e.jsx(f,{color:"primary",variant:"outlined",label:"G",size:"small"})]})]})}),e.jsx(P,{variant:"contained",startIcon:e.jsx(_,{}),onClick:t,size:"large",children:"Criar primeiro atributo"})]})}),Ce=()=>{const t=Q(),{data:i,isLoading:p}=te(),m=ce(),c=B(W(ee,{activationConstraint:{distance:5}}),W(J,{activationConstraint:{delay:200,tolerance:5}})),o=a=>{t(`/attributes/${a}/edit`)},s=j.useCallback(async a=>{const{active:r,over:n}=a;if(!n||!r||r.id===n.id||!i)return;const b=i.findIndex(d=>d.id.toString()===r.id),h=i.findIndex(d=>d.id.toString()===n.id);if(b===-1||h===-1)return;const w=$(i,b,h),v=w.length,C=w.map((d,S)=>({id:d.id,destaque:v-S}));try{await m.mutateAsync({attributes:C,originalAttributes:i})}catch(d){console.error("Failed to update attribute order:",d)}},[i,m]),l=!!(!p&&i&&i.length>0&&i.length<=2);return e.jsxs(u,{sx:{display:"flex",flexDirection:"column"},children:[e.jsx(V,{title:"Atributos",navigateBack:!0}),e.jsx(u,{sx:{flex:1,overflowY:"auto",padding:2},children:e.jsxs(x,{spacing:2,children:[p?e.jsx(R,{children:[...Array(3)].map((a,r)=>
1e.jsx(ue,{},r))}):i&&i.length>0?e.jsx(G,{sensors:c,collisionDetection:H,onDragEnd:s,children:e.jsx(K,{items:i.map(a=>a.id.toString()),strategy:U,children:e.jsx(R,{disablePadding:!0,children:i.map(a=>e.jsx(he,{attribute:a,onClick:()=>o(a.id)},a.id))})})}):e.jsx(pe,{onAddClick:()=>t("/attributes/new")}),i&&i.length>0&&e.jsx(q,{color:"primary","aria-label":"novo atributo",sx:{position:"fixed",bottom:"calc(16px + var(--safe-area-inset-bottom))",right:16},onClick:()=>t("/attributes/new"),children:e.jsx(_,{})})]})}),e.jsx(Y,{text:"Clique para criar um novo atributo",visible:l,fabBottom:"calc(var(--safe-area-inset-bottom) + 16px)",fabRight:16})]})};export{Ce 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.