@imj_media/tareas 1.5.56 → 1.6.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.
- package/README.md +3 -1
- package/dist/src/modules/teams/ui/organisms/TeamsGridSkeleton.d.ts +6 -2
- package/dist/tareas.cjs +10 -10
- package/dist/tareas.css +1 -1
- package/dist/tareas.es.js +3543 -3527
- package/package.json +6 -4
package/dist/tareas.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),ue=require("@tanstack/react-query"),x=require("@imj_media/ui"),p=require("react"),Xe=require("axios"),Pe=require("qs"),ne=require("@fortawesome/pro-regular-svg-icons"),Ms=require("echarts-for-react"),de=require("@fortawesome/pro-solid-svg-icons"),Na=require("react-dom"),Ce=require("@fortawesome/free-solid-svg-icons"),lt=require("date-fns"),Et=require("date-fns/locale"),Se=require("react-hook-form"),oe=require("@xyflow/react"),$e=require("zustand"),_t=require("moment"),Re=require("@fortawesome/pro-duotone-svg-icons");require("@xyflow/react/dist/style.css");const ks=require("react-pick-color"),Vt=e=>{const a={...e};return delete a.project,delete a["project.id"],a},Wt=e=>{let a={};return Object.entries(e).forEach(([n,s])=>{if(n.includes(".")){let[o,i]=n.split(".");a[o]=a[o]||{},a[o][i]=s}else a[n]=s}),a},Ca=p.createContext({}),Os=({children:e})=>{const[a,n]=p.useState({}),[s,o]=p.useState({}),[i,r]=p.useState([]),[c,u]=p.useState(""),l=({name:f,value:w})=>{function b(y){return!isNaN(y)&&y!==null&&y!==""?parseFloat(y):null}let j=b(w);o(y=>{let h={...y},_=i==null?void 0:i.find(M=>M.label.toLowerCase().replace(/ /g,"_")===f);return _?h[_.id]=j??w:h[f]=j??w,((_==null?void 0:_.id)??f)==="owner.config"&&(h["project.id"]=null),h})};p.useEffect(()=>{let f=i.map(w=>w.id==="owner.config"?[w.id,"yo_y_mis_equipos"]:w.id==="dependency"?[w.id,"ambas"]:[w.id,null]);o(w=>{const b={search:w==null?void 0:w.search,taskName:w==null?void 0:w.taskName};return f.forEach(([j,y])=>{b[j]=(w==null?void 0:w[j])!==void 0?w==null?void 0:w[j]:y}),b})},[i]);const d=()=>{let f=i.map(w=>w.id==="owner.config"?[w.id,"yo_y_mis_equipos"]:w.id==="dependency"?[w.id,"ambas"]:[w.id,null]);o(Object.fromEntries(f)),n(Wt(Object.fromEntries(f)))},m=f=>({1:"Muy facil",2:"Facil",3:"Media",4:"Dificil",5:"Muy dificil"})[f],g=()=>{let f=Wt(s);f.difficulty&&(f.difficulty=m(f.difficulty)),n(f)};return t.jsx(Ca.Provider,{value:{fields:i,filters:a,path:c,defineFields:r,updateFilters:l,cleanFilters:d,applyFilters:g,initialFilters:s,selectPath:u},children:e})},De=()=>p.useContext(Ca),Ta=p.createContext({}),Ls=({children:e,user:a,url:n,mode:s})=>{const o=s==="prod"?"https://services.imjmedia.com.mx":"https://devobp.imjmedia.com.mx",i=Xe.create({baseURL:n,headers:{Authorization:`Bearer ${a.accessToken}`},paramsSerializer:u=>Pe.stringify(u,{encodeValuesOnly:!0})}),r=()=>o,c=u=>u==="undefined"||u===void 0?"":`${o}${u}`;return t.jsx(Ta.Provider,{value:{tasks_api:i,getOBPUrlApi:r,getImageOBP:c},children:e})},ge=()=>p.useContext(Ta),Sa=p.createContext({}),Bs=({children:e,user:a,url:n})=>{const s=Xe.create({baseURL:n,headers:{Authorization:`Bearer ${a.accessToken}`},paramsSerializer:o=>Pe.stringify(o,{encodeValuesOnly:!0})});return t.jsx(Sa.Provider,{value:{user:a,tasks_api:s},children:e})},Ne=()=>p.useContext(Sa),xe=e=>{const a=i=>Object.prototype.toString.call(i)==="[object Object]",n=i=>i&&typeof i=="object"&&("source"in i||"target"in i)&&!("attributes"in i),s=i=>i&&typeof i=="object"&&"position"in i&&typeof i.position=="object"&&("x"in i.position||"y"in i.position)&&!("attributes"in i),o=i=>i.attributes?{id:i.id,...i.attributes}:i;if(Array.isArray(e))return e.map(i=>xe(i));if(a(e)){if(n(e)){const i={};for(const r in e)i[r]=xe(e[r]);return i}if(s(e)){const i={};for(const r in e)i[r]=xe(e[r]);return i}Array.isArray(e.data)?e=[...e.data]:a(e.data)?e=o({...e.data}):e.data===null?e=null:e=o(e);for(const i in e)e[i]=xe(e[i]);return e}return e},Qt=[{label:"Tipo de dependencia 3",type:"select",id:"dependency",options:[{id:"con",name:"Con dependencia"},{id:"sin",name:"Sin dependencia"},{id:"ambas",name:"Ambas"}]},{label:"Por campaña",type:"select",id:"project.id",options:[]},{label:"Por responsable",type:"select",id:"owner.config",options:[{id:"yo",name:"Mis tareas"},{id:"yo_y_mis_equipos",name:"Tareas mías y de mis equipos"},{id:"mis_equipos",name:"Tareas de mis equipos"}]},{label:"Por ejecutivo comercial",type:"select",id:"salesman.id",options:[]},{label:"Por dificultad",type:"select",id:"difficulty",options:[{id:1,name:"Muy facil"},{id:2,name:"Facil"},{id:3,name:"Media"},{id:4,name:"Dificil"},{id:5,name:"Muy dificil"}]}],Xt=[{label:"Responsable",type:"select",id:"responsable.responsableType",options:[{id:"yo_y_mis_equipos",name:"Yo y mis equipos"},{id:"mis_equipos",name:"Mis equipos"},{id:"yo",name:"Yo"}]},{label:"Por Ejecutivo",type:"select",id:"ejecutivo",options:[]}],mt=(e,a,n)=>`${e} ${e===1?a:n}`;function qs(e){const a=e??{pausas:0,atrasos:0,vencidos:0};if((a.pausas??0)===0&&(a.atrasos??0)===0&&(a.vencidos??0)===0)return[{label:"Sin alertas",color:"gray",variant:"sin-alertas"}];const n=[];return(a.atrasos??0)>0&&n.push({label:mt(a.atrasos,"atrasada","atrasadas"),color:"danger",variant:"atrasos"}),(a.pausas??0)>0&&n.push({label:mt(a.pausas,"pausada","pausadas"),color:"warning",variant:"pausas"}),(a.vencidos??0)>0&&n.push({label:mt(a.vencidos,"vencida","vencidas"),color:"info",variant:"vencidos"}),n.slice(0,2)}const Rs=ne.faLightEmergencyOn,zs={name:Rs},$s=({tags:e})=>{const a=Array.isArray(e)?e:[];return t.jsx("div",{className:"ui-inline-flex ui-min-w-0 ui-max-w-full ui-flex-wrap ui-content-center ui-items-center ui-gap-1 ui-justify-center",children:a.map((n,s)=>t.jsx("div",{className:"ui-min-w-0 ui-max-w-full ui-flex-shrink-0",children:t.jsx(x.Tag,{label:n.label,color:n.color,stroke:!1,truncateLabel:!0,truncateTooltip:!0,infoIcon:n.variant==="atrasos"?zs:void 0})},`${n.variant}-${n.label}-${s}`))})},Us=(e,a=500)=>{const[n,s]=p.useState(e);return p.useEffect(()=>{const o=setTimeout(()=>{s(e)},a);return()=>{clearTimeout(o)}},[e,a]),n},Hs=async e=>{const a=Pe.stringify({fields:["id","nombre"],sort:["nombre:asc"]},{encodeValuesOnly:!0}),n=await e.get(`/api/equipos?${a}`);return n.data?{data:xe(n.data.data)}:{data:[]}},Ks=()=>{const{tasks_api:e}=ge();return ue.useQuery({queryKey:["teams"],queryFn:()=>Hs(e),staleTime:1e3*60*60*24,select:n=>n.data.map(o=>({label:o.nombre,value:o.id}))})},Gs="/api/listado-progreso",Vs="/api/proyectos/listado-progreso";function Ws(e){return Pe.stringify(e,{encodeValuesOnly:!0,arrayFormat:"repeat"})}function Qs(e){var i,r,c;const a=Number(e.proyecto_id);if(!Number.isFinite(a)||a<=0||!Number.isInteger(a))throw new Error("listado-progreso: proyecto_id debe ser un entero positivo");const n=String(e.fase).trim().toLowerCase();if(n!=="preventa"&&n!=="venta")throw new Error('listado-progreso: fase debe ser "preventa" o "venta"');const s={proyecto_id:a,fase:n};(i=e.status)!=null&&i.length&&(s.status=e.status.map(u=>String(u).trim()).filter(Boolean)),(r=e.types_media)!=null&&r.length&&(s.types_media=e.types_media.map(u=>String(u).trim()).filter(Boolean)),(c=e.locations)!=null&&c.length&&(s.locations=e.locations.map(u=>String(u).trim()));const o=e.search!=null?String(e.search).trim():"";return o&&(s.search=o),e.blocked_only!==void 0&&(s.blocked_only=e.blocked_only===!0||e.blocked_only==="true"?"true":"false"),s}function Yt(e){const a=Array.isArray(e.data)?e.data:[],n=e.grafico,s=e.graficos,o=Array.isArray(n)&&n.length>0?n:Array.isArray(s)?s:[];return{data:a,grafico:o}}async function Jt(e,a,n){const{data:s}=await e.get(a,{params:n,paramsSerializer:Ws});return s??{}}async function Xs(e,a){var s;const n=Qs(a);try{const o=await Jt(e,Gs,n);return Yt(o)}catch(o){if(Xe.isAxiosError(o)&&((s=o.response)==null?void 0:s.status)===404){const i=await Jt(e,Vs,n);return Yt(i)}throw o}}function Ys({proyectoId:e,fase:a,enabled:n,filters:s}){const{tasks_api:o}=ge(),i=n&&Number.isFinite(e)&&Number.isInteger(e)&&e>0;return ue.useQuery({queryKey:["listado-progreso",e,a,s],queryFn:()=>Xs(o,{proyecto_id:e,fase:a,...s}),enabled:i,staleTime:3e4})}const Js=({campaignName:e,searchValue:a,onSearchChange:n})=>t.jsx("div",{className:"tw-border-b tw-border-gray-200 tw-pb-6 tw-pt-6",children:t.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-justify-between tw-gap-3",children:[t.jsx("h3",{className:"tw-text-[2.1rem] tw-font-semibold tw-leading-tight tw-text-gray-800",children:e||"-"}),t.jsx("div",{className:"tw-w-full sm:tw-w-[260px] md:tw-w-[300px]",children:t.jsx(x.Input,{size:"sm",fullWidth:!0,leftSlot:ne.faSearch,placeholder:"Buscar...",value:a,onValueChange:n,clearable:!0,onClear:()=>n("")})})]})});function Zs(e,a){Array.isArray(e)&&a(e.map(String))}function ft({options:e,selected:a,onChange:n,emptyPlaceholder:s,header:o,tagsOverflowPopoverTitle:i,panelSearch:r,panelSearchPlaceholder:c="Buscar…"}){return t.jsx(x.Dropdown,{field:{placeholder:s},items:{options:e},values:{value:a},events:{onValueChange:u=>Zs(u,n)},multi:{multiple:!0,selectionSummary:"tags",tagsOverflow:"single-line",tagsOverflowPopoverTitle:i},popover:{fullWidth:!0},list:{listVariant:"search-multi-checkbox",searchMultiCheckbox:{header:o,search:{show:r,placeholder:c},showClearSelection:!1}},menuSearch:{searchable:!1}})}const en=({mediosOptions:e,plazasOptions:a,estadosOptions:n,selectedMedios:s,selectedPlazas:o,selectedEstados:i,onlyDelayed:r,onChangeMedios:c,onChangePlazas:u,onChangeEstados:l,onChangeOnlyDelayed:d})=>t.jsx("div",{className:"tw-flex tw-flex-col tw-gap-2 tw-mt-5 tw-mb-5",children:t.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-justify-between tw-gap-3",children:[t.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-gap-4 tw-flex-1",children:[t.jsx("div",{className:"tw-w-full sm:tw-w-[280px]",children:t.jsx(ft,{options:e,selected:s,onChange:c,emptyPlaceholder:"Todos los medios",header:{id:"listado-progreso-medios-all",label:"Todos los medios"},tagsOverflowPopoverTitle:"Medios seleccionados",panelSearch:!1})}),t.jsx("div",{className:"tw-w-full sm:tw-w-[280px]",children:t.jsx(ft,{options:a,selected:o,onChange:u,emptyPlaceholder:"Todas las plazas",header:{id:"listado-progreso-plazas-all",label:"Todas las plazas"},tagsOverflowPopoverTitle:"Plazas seleccionadas",panelSearch:!0,panelSearchPlaceholder:"Buscar…"})}),t.jsx("div",{className:"tw-w-full sm:tw-w-[280px]",children:t.jsx(ft,{options:n,selected:i,onChange:l,emptyPlaceholder:"Todos los estados",header:{id:"listado-progreso-estados-all",label:"Todos los estados"},tagsOverflowPopoverTitle:"Estados seleccionados",panelSearch:!1})})]}),t.jsx("div",{className:"tw-flex tw-items-center",children:t.jsx(x.Toggle,{label:"Solo Atrasadas",checked:r,onChange:d})})]})}),Pt=[{singular:"completada",serieApiName:"completadas",uiLabel:"Completada",chartLegendLabel:"Completadas",tagColor:"success",chartColorHex:"#22C55E"},{singular:"progresada",serieApiName:"progresadas",uiLabel:"En progreso",chartLegendLabel:"En progreso",tagColor:"accent",chartColorHex:"#3658C1"},{singular:"pausada",serieApiName:"pausadas",uiLabel:"Pausada",chartLegendLabel:"Pausadas",tagColor:"warning",chartColorHex:"#EAB308"},{singular:"atrasada",serieApiName:"atrasadas",uiLabel:"Atrasada",chartLegendLabel:"Atrasadas",tagColor:"danger",chartColorHex:"#EF4444"},{singular:"pendiente",serieApiName:"pendientes",uiLabel:"Pendiente",chartLegendLabel:"Pendientes",tagColor:"gray",chartColorHex:"#BABCBF"},{singular:"vencida",serieApiName:"vencidas",uiLabel:"Vencida",chartLegendLabel:"Vencidas",tagColor:"info",chartColorHex:"#0592AA"}],tn=Object.fromEntries(Pt.map(e=>[e.singular,e])),Zt=Pt.map(e=>e.serieApiName),an="atrasada";function At(e){return tn[e]}function sn(e){var a;return(a=At(e.trim().toLowerCase()))==null?void 0:a.serieApiName}function Ea(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function nn(e){const a=At(e);return a?a.uiLabel:Ea(e)}function on(e,a){const n=(e??"").trim().toLowerCase();if(!n)return[{label:a,color:"gray"}];const s=At(n);return s?[{label:s.uiLabel,color:s.tagColor}]:[{label:Ea(n),color:"gray"}]}function rn(e){var a,n;if(Xe.isAxiosError(e)){const s=(a=e.response)==null?void 0:a.data;if(typeof s=="string"&&s.trim())return s;if(s&&typeof s=="object"&&"message"in s){const i=s.message;if(typeof i=="string")return i}const o=(n=e.response)==null?void 0:n.status;if(o)return`Error del servidor (${o}). Revisa logs del backend o el body de la respuesta.`}return e.message||"No se pudieron cargar los datos de progreso."}function ln(e){if(!e||typeof e!="object")return null;const n=e.event;if(n&&typeof n=="object"){const s=n;if(typeof s.offsetX=="number"&&typeof s.offsetY=="number")return{x:s.offsetX,y:s.offsetY};const o=s.event;if(o&&typeof o.offsetX=="number"&&typeof o.offsetY=="number")return{x:o.offsetX,y:o.offsetY}}return null}function cn(e){if(!e||typeof e!="object")return 0;const a=e.value;return typeof a=="number"?a:Array.isArray(a)&&typeof a[0]=="number"?a[0]:0}function dn(e){return(Number.isFinite(e)?e:0).toFixed(0)}const un=({id:e,listadoProgreso:a,phaseLabel:n,listadoForUi:s})=>{const{isPending:o,isError:i,error:r,isSuccess:c,data:u}=a,[l,d]=p.useState(null),m=s??u,g=p.useMemo(()=>{const j=(m==null?void 0:m.grafico)??[],y=F=>{var q,T;return((T=(q=j.find(D=>D.name===F))==null?void 0:q.data)==null?void 0:T[0])??0},h=Pt.map(F=>({key:F.serieApiName,label:F.chartLegendLabel,color:F.chartColorHex})),_=h.map(F=>F.label),M={legendLabel:{color:"#6C6E73",fontSize:12,fontWeight:"bold",padding:[0,0,0,20]}};return h.forEach((F,q)=>{M[`legendDot${q}`]={color:F.color,fontSize:20,fontWeight:"bold",padding:[0,0,0,6]}}),{tooltip:{show:!1},grid:{top:"20%",bottom:"20%",left:"7%",right:"3%"},xAxis:{type:"value",max:100,splitLine:{show:!0},axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"category",data:[n],axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:"#6C6E73",fontWeight:"bold",fontSize:12}},legend:{data:_,orient:"horizontal",top:"0%",left:"center",itemGap:30,icon:"none",itemWidth:0,itemHeight:0,formatter:F=>{const q=h.findIndex(T=>T.label===F);return q===-1?F:`{legendLabel|${F}}{legendDot${q}|●}`},textStyle:{rich:M}},series:h.map(F=>({name:F.label,type:"bar",stack:"total",itemStyle:{color:F.color},barWidth:"50%",data:[y(F.key)]}))}},[m==null?void 0:m.grafico,n]),f=p.useCallback(j=>{const y=j;if(y.componentType!=="series")return;const h=ln(j);if(!h)return;const _=cn(j),M=typeof y.seriesName=="string"?y.seriesName:"";d({x:h.x,y:h.y,label:`${dn(_)}% ${M}`})},[]),w=p.useCallback(()=>{d(null)},[]),b=p.useMemo(()=>({mouseover:f,mousemove:f,globalout:w}),[f,w]);return t.jsx(x.Accordion,{id:e,title:"Grafico de Tareas",subtitle:"Distribución de tareas por estatus",defaultOpen:!0,children:t.jsxs("div",{className:"tw-min-h-[140px] tw-w-full tw-border tw-rounded-3xl tw-border-gray-50 tw-px-2 tw-py-2",style:{backgroundColor:"#F7F8FA"},children:[o&&t.jsx("h3",{className:"tw-flex tw-h-[140px] tw-items-center tw-justify-center tw-text-xl tw-font-medium tw-text-gray-500",children:"Cargando datos de progreso…"}),i&&r&&t.jsx("div",{className:"tw-flex tw-h-[140px] tw-items-center tw-justify-center tw-px-4 tw-text-center",children:t.jsx("span",{className:"tw-text-sm tw-font-medium tw-text-red-600",children:rn(r)})}),c&&u&&t.jsxs("div",{className:"tw-relative tw-h-[140px] tw-w-full",children:[t.jsx(Ms,{option:g,style:{height:"100%",width:"100%"},onEvents:b}),l&&t.jsx("div",{className:"tw-pointer-events-none tw-absolute tw-z-[10]",style:{left:l.x,top:l.y,width:1,height:1,transform:"translate(-50%, -50%)"},"aria-hidden":!0,children:t.jsx(x.InlineTooltip,{isVisible:!0,label:l.label,position:"top"})})]})]})})},It="-";function We(e){const a=String(e??"").trim();return a.length>0?a:null}function He(e){const a=String(e??"").trim();return a.length>0?a:It}function pn(e){var i,r,c,u,l,d,m,g,f,w;if(!e)return;const a=(c=(r=(i=e.formats)==null?void 0:i.thumbnail)==null?void 0:r.url)==null?void 0:c.trim(),n=(d=(l=(u=e.formats)==null?void 0:u.small)==null?void 0:l.url)==null?void 0:d.trim(),s=(f=(g=(m=e.formats)==null?void 0:m.medium)==null?void 0:g.url)==null?void 0:f.trim(),o=(w=e.url)==null?void 0:w.trim();return a||n||s||o||void 0}function mn(e){if(!e)return!1;if(e.startsWith("data:")||e.startsWith("blob:"))return!0;try{const a=new URL(e);return a.protocol==="http:"||a.protocol==="https:"}catch{return!1}}function Dt(e,a){const n=(e.nombre??"").trim()||It,s=pn(e.imagen??null);let o;if(s){const r=s.startsWith("http")||s.startsWith("data:")||s.startsWith("blob:")?s:a(s);mn(r)&&(o=r)}const i=n.slice(0,1);return{name:n,src:o,letter:i}}function fn(e){return{tarea:He(e.tarea),categoria:He(e.categoria),nota:He(e.nota),clave:He(e.clave),tipo_medio:He(e.tipo_medio),ubicacion:He(e.ubicacion)}}function wn(e){return on(e,It)}const Pa=4,ea=Pa-1,gn=120,hn=-8,ta=8;function xn(e){return e.length<=Pa?{visible:e,overflow:[]}:{visible:e.slice(0,ea),overflow:e.slice(ea)}}const et="ui-h-8 ui-w-8 ui-min-h-[32px] ui-min-w-[32px] ui-max-h-[32px] ui-max-w-[32px] ui-shrink-0 ui-border ui-border-default",aa="Sin responsable",Aa="bottom",Ia="center",bn="tw-flex tw-max-w-xs tw-items-start tw-gap-2 tw-py-1",yn="tw-text-sm tw-font-semibold tw-leading-snug tw-text-gray-900";function sa(e,a){return e<a-1?{marginRight:`${hn}px`}:void 0}function jn({person:e,getImageOBP:a}){const{src:n,letter:s}=Dt(e,a);return n?t.jsx(x.Avatar,{type:"people",src:n,size:"xxs",className:et}):t.jsx(x.Avatar,{type:"letter",text:s,size:"xxs",className:et})}function vn({person:e,getImageOBP:a}){const{name:n,src:s,letter:o}=Dt(e,a);return t.jsxs("div",{className:bn,children:[s?t.jsx(x.Avatar,{type:"people",src:s,size:"xxs",className:`ui-mt-0.5 ${et}`}):t.jsx(x.Avatar,{type:"letter",text:o,size:"xxs",className:`ui-mt-0.5 ${et}`}),t.jsx("span",{className:yn,children:n})]})}function _n({popupId:e,trigger:a,children:n,popupBodyClassName:s="tw-p-3"}){const o=p.useRef(null),i=p.useRef(null),r=p.useRef(null),c=p.useCallback(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},[]),u=p.useCallback(()=>{var d;c(),(d=i.current)==null||d.open()},[c]),l=p.useCallback(()=>{c(),r.current=window.setTimeout(()=>{var d;(d=i.current)==null||d.close(),r.current=null},gn)},[c]);return p.useEffect(()=>()=>c(),[c]),t.jsxs("div",{className:"ui-relative ui-inline-flex ui-shrink-0",children:[t.jsx("span",{ref:o,className:"ui-inline-flex ui-cursor-default",onMouseEnter:u,onMouseLeave:l,children:a}),t.jsx(x.Popup,{ref:i,popupId:e,triggerRef:o,closeOnClick:!1,position:"bottom-center",children:t.jsx("div",{className:s,onMouseEnter:u,onMouseLeave:l,children:n})})]})}function Nn(){return t.jsx(x.Tooltip,{label:aa,position:Aa,alignment:Ia,preserveLayout:!0,children:t.jsx("span",{className:"ui-inline-flex ui-shrink-0",role:"img","aria-label":aa,children:t.jsx(x.Avatar,{type:"people",size:"xxs",className:et,alt:""})})})}function Cn({person:e,getImageOBP:a}){const{name:n}=Dt(e,a);return t.jsx(x.Tooltip,{label:n,position:Aa,alignment:Ia,preserveLayout:!0,children:t.jsx("span",{className:"ui-inline-flex ui-shrink-0",children:t.jsx(jn,{person:e,getImageOBP:a})})})}function Tn({overflow:e,getImageOBP:a,popupId:n}){return t.jsx(_n,{popupId:n,popupBodyClassName:"tw-max-h-64 tw-overflow-y-auto tw-p-3",trigger:t.jsxs("span",{className:"ui-inline-flex ui-h-8 ui-w-8 ui-min-h-[32px] ui-min-w-[32px] ui-max-h-[32px] ui-max-w-[32px] ui-cursor-default ui-items-center ui-justify-center ui-rounded-control-pill ui-border ui-border-default ui-bg-fill-brand ui-text-xs ui-font-normal ui-leading-none ui-tracking-[0.5px] ui-text-on-color",children:["+",e.length]}),children:e.map((s,o)=>t.jsx(vn,{person:s,getImageOBP:a},s.id!=null?`${s.id}-${o}`:o))})}const Sn=({responsables:e,getImageOBP:a,rowId:n})=>{const s=Array.isArray(e)?e:[];if(s.length===0)return t.jsx("div",{className:"ui-flex ui-min-w-0 ui-items-center",style:{paddingRight:`${ta}px`},children:t.jsx(Nn,{})});const{visible:o,overflow:i}=xn(s),r=o.length+(i.length>0?1:0);return t.jsxs("div",{className:"ui-flex ui-min-w-0 ui-items-center",style:{paddingRight:`${ta}px`},children:[o.map((c,u)=>{const l=c.id!=null?`r-${c.id}-${u}`:`r-${n}-${u}`;return t.jsx("div",{className:"ui-shrink-0",style:sa(u,r),children:t.jsx(Cn,{person:c,getImageOBP:a})},l)}),i.length>0?t.jsx("div",{className:"ui-shrink-0",style:sa(r-1,r),children:t.jsx(Tn,{overflow:i,getImageOBP:a,popupId:`listado-progreso-${n}-more`})}):null]})},En={name:de.faCircleSmall};function Pn({tags:e}){const a=Array.isArray(e)?e:[];return t.jsx("div",{className:"ui-inline-flex ui-min-w-0 ui-max-w-full ui-flex-wrap ui-content-start ui-items-center ui-gap-1",children:a.map((n,s)=>t.jsx("div",{className:"ui-min-w-0 ui-max-w-full ui-flex-shrink-0",children:t.jsx(x.Tag,{label:n.label,color:n.color,stroke:!1,truncateLabel:!0,truncateTooltip:!0,infoIcon:En})},`${n.label}-${s}`))})}const An=({listadoProgreso:e,listadoForUi:a,hideClaveColumn:n=!1})=>{var u,l;const{getImageOBP:s}=ge(),o=p.useMemo(()=>{const d=[{id:"responsables",header:"Responsable",accessor:m=>m.responsables,width:140,minWidth:100,sortable:!1,filterable:!1,resizable:!1,render:(m,g)=>t.jsx(Sn,{responsables:g.responsables,getImageOBP:s,rowId:g.id})},{id:"tarea",header:"Tarea",accessor:"tarea",width:100,minWidth:90,sortable:!1,filterable:!1,resizable:!1},{id:"categoria",header:"Categoría",accessor:"categoria",width:110,minWidth:90,sortable:!1,filterable:!1,resizable:!1,contentAlign:"center"},{id:"estado",header:"Estado",accessor:m=>wn(m.estado),contentAlign:"center",width:110,minWidth:90,sortable:!1,filterable:!1,resizable:!1,render:m=>t.jsx(Pn,{tags:Array.isArray(m)?m:[]})},{id:"nota",header:"Notas",accessor:"nota",width:100,minWidth:90,sortable:!1,filterable:!1,resizable:!1},{id:"tipo_medio",header:"Grupo medio",accessor:"tipo_medio",width:130,minWidth:110,sortable:!1,filterable:!1,resizable:!1},{id:"ubicacion",header:"Ubicación",accessor:"ubicacion",width:120,minWidth:100,sortable:!1,filterable:!1,resizable:!1}];return n||d.splice(5,0,{id:"clave",header:"Código / Ruta",accessor:"clave",width:130,minWidth:100,sortable:!1,filterable:!1,resizable:!1,contentAlign:"center"}),d},[s,n]),i=p.useMemo(()=>{var m;const d=(a==null?void 0:a.data)??((m=e.data)==null?void 0:m.data);return Array.isArray(d)?d.map(g=>({...g,id:g.id,...fn(g)})):[]},[a==null?void 0:a.data,(u=e.data)==null?void 0:u.data]),r=e.isPending||e.isFetching&&i.length===0&&!e.isError,c=p.useMemo(()=>{var g,f;const d=(g=e.data)==null?void 0:g.data,m=Array.isArray(d)?d.length:0;if(e.isError)return{type:"empty",icon:ne.faBan,title:"No se pudo cargar el listado",description:((f=e.error)==null?void 0:f.message)??"Revisa la conexión o vuelve a intentar."};if(e.isSuccess){if(m===0&&i.length===0)return{type:"empty",icon:ne.faBan,title:"Esta campaña aún no tiene tareas",description:"Cuando asignes tareas a medios, aparecerán aquí con su estado y responsables."};if(m>0&&i.length===0)return{type:"no-filters",icon:ne.faBan,title:"No hay nada aquí...",description:"No hay tareas que coincidan con los filtros seleccionados."}}return{type:"empty",icon:ne.faBan,title:"No hay nada aquí..."}},[e.isError,e.isSuccess,e.error,(l=e.data)==null?void 0:l.data,i.length]);return t.jsx(t.Fragment,{children:t.jsx("div",{className:"tw-flex tw-min-h-0 tw-flex-col tw-mt-2 tw-h-[455px] tw-border tw-rounded-3xl tw-border-gray-300",children:t.jsx(x.Table,{columns:o,columnsLockable:!1,rows:i,loading:r,hoverable:!1,bordered:!1,borderable:!1,stickyHeader:!0,empty:c,resizable:!1,expandable:!1,striped:!1,stickyCheckbox:!1})})})},In={preventa:"Preventa",venta:"Venta"},Dn=({campaignName:e,phase:a,search:n,listado:s,filters:o})=>{const i=In[a],r=a==="preventa";return t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-4",children:[t.jsx(Js,{campaignName:e,searchValue:n.value,onSearchChange:n.onChange}),t.jsx(en,{mediosOptions:o.mediosOptions,plazasOptions:o.plazasOptions,estadosOptions:o.estadosOptions,selectedMedios:o.selectedMedios,selectedPlazas:o.selectedPlazas,selectedEstados:o.selectedEstados,onlyDelayed:o.onlyDelayed,onChangeMedios:o.onChangeMedios,onChangePlazas:o.onChangePlazas,onChangeEstados:o.onChangeEstados,onChangeOnlyDelayed:o.onChangeOnlyDelayed}),t.jsx(un,{id:`progress-chart-${i}`,listadoProgreso:s.query,phaseLabel:i,listadoForUi:s.dataForUi}),t.jsx(An,{listadoProgreso:s.query,listadoForUi:s.dataForUi,hideClaveColumn:r})]})};function Fn(e){var i,r,c,u;const a=(i=e.types_media)==null?void 0:i.map(l=>l.trim()).filter(Boolean),n=(r=e.locations)==null?void 0:r.map(l=>l.trim()),s=(c=e.status)==null?void 0:c.map(l=>l.trim().toLowerCase()).filter(Boolean),o=((u=e.search)==null?void 0:u.trim().toLowerCase())||void 0;return{mediosSet:a&&a.length>0?new Set(a):void 0,locationsSet:n&&n.length>0?new Set(n):void 0,statusSet:s&&s.length>0?new Set(s):void 0,searchLower:o,onlyDelayed:e.onlyDelayed===!0}}function Mn(e,a){const{mediosSet:n,locationsSet:s,statusSet:o,searchLower:i,onlyDelayed:r}=a;if(n){const c=We(e.tipo_medio)??"";if(!n.has(c))return!1}if(s){const c=We(e.ubicacion)??"";if(!s.has(c))return!1}if(o){const c=(e.estado??"").trim().toLowerCase();if(!o.has(c))return!1}return!(r&&(e.estado??"").trim().toLowerCase()!==an||i&&![(e.responsables??[]).flatMap(l=>[l.nombre??"",l.role??"",l.email??""]).join(" ").toLowerCase(),e.tarea??"",e.categoria??"",e.estado??"",e.nota??"",e.clave??"",e.tipo_medio??"",e.ubicacion??""].join(" ").toLowerCase().includes(i))}function kn(e){const a=Object.fromEntries(Zt.map(s=>[s,0]));for(const s of e){const o=sn(s.estado??"");o&&(a[o]+=1)}const n=e.length;return Zt.map(s=>({name:s,data:[n>0?a[s]/n*100:0]}))}function On(e,a){const n=Fn(a);if(!(n.mediosSet!==void 0||n.locationsSet!==void 0||n.statusSet!==void 0||n.searchLower!==void 0||n.onlyDelayed))return e;const o=e.data.filter(i=>Mn(i,n));return{data:o,grafico:kn(o)}}const Da="__sin_ubicacion__";function Fa(e,a){return String(e.label).localeCompare(String(a.label),"es",{sensitivity:"base"})}function wt(e,a,n){const s=new Map;return e.forEach(o=>{const i=a(o);!i||s.has(i)||s.set(i,{label:n?n(i):i,value:i})}),Array.from(s.values()).sort(Fa)}function Ln(e){return e.map(a=>a===Da?"":a)}function Bn(e){const a=wt(e,r=>We(r.tipo_medio)),n=e.some(r=>We(r.ubicacion)===null),s=wt(e,r=>We(r.ubicacion)),o=[...n?[{label:"Sin ubicación",value:Da}]:[],...s].sort(Fa),i=wt(e,r=>{var c;return((c=We(r.estado))==null?void 0:c.toLowerCase())??null},r=>nn(r));return{medios:a,plazas:o,estados:i}}const qn=({isOpen:e,proyectoId:a,campaignName:n,onClose:s})=>{var k;const[r,c]=p.useState("preventa"),[u,l]=p.useState([]),[d,m]=p.useState([]),[g,f]=p.useState([]),[w,b]=p.useState(!1),[j,y]=p.useState(""),h=Us(j,400),_=p.useMemo(()=>[{label:"Fase 1 (Preventa)",value:"preventa",leftSlot:ne.faHandHoldingHand},{label:"Fase 2 (Venta)",value:"venta",leftSlot:ne.faHandHoldingCircleDollar}],[]),M=()=>{l([]),m([]),f([]),b(!1)},F=()=>{c("preventa"),M(),y(""),s()},q=R=>{(R==="preventa"||R==="venta")&&(c(R),M(),y(""))},T=p.useMemo(()=>{const R=h.trim();if(R)return R.length>=2?R:void 0},[h,2]),D=Ys({proyectoId:a,fase:r,enabled:e,filters:{}}),v=p.useMemo(()=>({types_media:u.length>0?u:void 0,locations:d.length>0?Ln(d):void 0,status:g.length>0?g:void 0,search:T,onlyDelayed:w}),[u,d,g,T,w]),{medios:U,plazas:K,estados:J}=p.useMemo(()=>{var ee;const R=((ee=D.data)==null?void 0:ee.data)??[];return Bn(R)},[(k=D.data)==null?void 0:k.data]),H=p.useMemo(()=>{const R=D.data;return R?On(R,v):null},[D.data,v]),O=p.useMemo(()=>({value:j,onChange:y}),[j]),S=p.useMemo(()=>({query:D,dataForUi:H}),[D,H]),B=p.useMemo(()=>({mediosOptions:U,plazasOptions:K,estadosOptions:J,selectedMedios:u,selectedPlazas:d,selectedEstados:g,onlyDelayed:w,onChangeMedios:l,onChangePlazas:m,onChangeEstados:f,onChangeOnlyDelayed:b}),[U,K,J,u,d,g,w]);return t.jsx(x.Modal,{isOpen:e,onClose:F,size:"xl",title:"Progreso",tabs:_,defaultValueTab:"preventa",onChangeTab:q,iconConfig:{icon:ne.faBullhorn},cancelButtonText:"Cerrar",showCancelButton:!0,closeAtCancel:!0,onCancel:F,showSuccessButton:!1,children:t.jsx("div",{style:{backgroundColor:"#F7F8FA",padding:"0px 16px 16px 16px"},children:t.jsx(x.Modal.Body,{children:t.jsx(Dn,{campaignName:n,phase:r,search:O,listado:S,filters:B})})})})},Rn=({setPath:e,setProject:a})=>{var B;const[n,s]=p.useState([]),[o,i]=p.useState(!0),[r,c]=p.useState(0),[u,l]=p.useState(10),[d,m]=p.useState(0),[g,f]=p.useState(!1),[w,b]=p.useState(""),[j,y]=p.useState(0),{filters:h,defineFields:_}=De(),{tasks_api:M,getImageOBP:F}=ge(),{user:q}=Ne(),T=p.useCallback(async(k,R)=>{var ee,W,re;try{i(!0);const Z={filters:{search:(h==null?void 0:h.search)??"",responsable:{idUser:q.id,responsableType:(ee=h==null?void 0:h.responsable)==null?void 0:ee.responsableType},ejecutivo:(h==null?void 0:h.ejecutivo)??"",cancelada:{$eq:!1}}},E=await M.get("/api/listado_campanias",{params:{pagination:{page:k,pageSize:R},...Z}}),z=xe(E==null?void 0:E.data);s(z),m((re=(W=E==null?void 0:E.data)==null?void 0:W.meta)==null?void 0:re.total)}catch(Z){console.error("Error fetching data en Lista Campaña:",Z)}finally{i(!1)}},[h==null?void 0:h.ejecutivo,(B=h==null?void 0:h.responsable)==null?void 0:B.responsableType,h==null?void 0:h.search,M,q.id]),D=p.useCallback(async()=>{try{const k=await M.get("/api/obtener-comerciales");return[...Xt].map(ee=>(ee.id==="ejecutivo"&&(ee.options=k.data.map(W=>({id:W.nombre,name:W.nombre}))),ee))}catch(k){return console.error("Error fetching salesman data:",k),[...Xt]}},[M]);p.useEffect(()=>{(async()=>{const R=await D();_(R)})()},[_,D]),p.useEffect(()=>{const k=Math.floor(r/u)+1;T(k,u)},[r,u,h,T]);const v=k=>{c(k.first),l(k.rows)},U=Math.floor(r/u)+1,K=p.useMemo(()=>(q.role??"").trim().toLowerCase()==="project manager",[q.role]),J=p.useCallback(k=>{var R;b(((R=k.campania)==null?void 0:R.nombre)??k.nombre??""),y(Number(k.id)),f(!0)},[]),H=p.useMemo(()=>({label:"Ver progreso",leftSlot:ne.faEye,theme:"solid",color:"secondary",tooltip:"Ver progreso",onClick:k=>J(k)}),[J]),O=p.useMemo(()=>{const k=[{id:"nombre",header:"CAMPAÑA",accessor:R=>{var ee;return((ee=R.campania)==null?void 0:ee.nombre)??R.nombre??"-"},width:200,sortable:!1,filterable:!1,resizable:!1},{id:"inicia",header:"FECHA INICIO",accessor:R=>{var ee;return((ee=R.campania)==null?void 0:ee.inicia)??"-"},width:100,sortable:!1,filterable:!1,resizable:!1},{id:"termina",header:"FECHA FIN",accessor:R=>{var ee;return((ee=R.campania)==null?void 0:ee.termina)??"-"},width:100,sortable:!1,filterable:!1,resizable:!1},{id:"responsable",header:"RESPONSABLE",type:"primary",accessor:R=>{var ee,W;return((W=(ee=R.campania)==null?void 0:ee.responsable)==null?void 0:W.nombre)??"-"},width:150,sortable:!1,filterable:!1,resizable:!1,render:(R,ee)=>{var Q,I,A,G,P;const W=(Q=ee.campania)==null?void 0:Q.responsable,re=typeof R=="string"||typeof R=="number"?String(R):(W==null?void 0:W.nombre)??"-",Z=(W==null?void 0:W.role)??"-",E=((G=(A=(I=W==null?void 0:W.imagen)==null?void 0:I.formats)==null?void 0:A.thumbnail)==null?void 0:G.url)||((P=W==null?void 0:W.imagen)==null?void 0:P.url)||"",z=E?F(E):W==null?void 0:W.nombre;return{name:re,...z?{avatar:z}:{},...Z?{subtitle:Z}:{}}}},{id:"alertas",header:"ALERTAS",accessor:R=>qs(R.alertas),width:200,minWidth:100,filterable:!1,sortable:!1,resizable:!1,contentAlign:"center",render:R=>t.jsx($s,{tags:Array.isArray(R)?R:[]})}];return K&&k.push({id:"acciones",header:"ACCIONES",type:"button",sortable:!1,filterable:!1,resizable:!1,accessor:()=>H,width:190,minWidth:160}),k},[F,K,H]),S=p.useMemo(()=>(n??[]).map(k=>({...k,id:k.id})),[n]);return t.jsxs("div",{className:"tw-h-full tw-max-h-[100%] tw-overflow-y-auto tw-scrollbar-none",children:[t.jsx(x.Table,{columns:O,columnsLockable:!1,rows:S,loading:o,hoverable:!0,resizable:!1,pagination:{enabled:!0,currentPage:U,pageSize:u,total:d,pageSizes:[5,10,15,20,25,50],onPageChange:k=>c((k-1)*u),onPageSizeChange:k=>v({first:0,rows:k})},onRowClick:k=>{a({id:k.id,project:k.nombre}),e("kanban-campania")},empty:{type:"empty",title:"No hay campañas disponibles"}}),t.jsx(qn,{isOpen:g,proyectoId:j,campaignName:w,onClose:()=>f(!1)})]})},Ma=p.createContext(null),zn=()=>p.useContext(Ma),$n=({children:e})=>{const a=p.useRef(null),n=p.useRef(null),s=()=>{var o;(o=n.current)==null||o.close()};return t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{ref:a,leftSlot:ne.faFilter,color:"primary",theme:"solid",size:"sm",type:"button",children:"Filtrar"}),t.jsx(x.Popup,{ref:n,triggerRef:a,position:"bottom-right",offset:8,closeOnClickOutside:!0,closeOnEscape:!0,closeOnClick:!1,popoverArrow:!1,allowOverflow:!0,popupId:"tareas-filters-layout-popup",children:t.jsx(Ma.Provider,{value:s,children:e})})]})};function Un(e,a=300,n={leading:!1,trailing:!0}){let s,o=null;return function(...i){const r=Date.now(),c=n.leading&&!o;clearTimeout(s),c&&e(...i),o=r,s=setTimeout(()=>{n.trailing&&(!n.leading||r-o>=a)&&(e(...i),o=null)},a)}}function Hn(e){return e!=null&&e.length?e.map(a=>({id:a.id,label:a.name,value:a.id})):[]}function Kn({field:e}){const{updateFilters:a,initialFilters:n}=De(),s=p.useMemo(()=>Hn(e.options),[e.options]),o=n==null?void 0:n[e.id],i=o??"";return t.jsx(x.Dropdown,{field:{label:e.label,placeholder:"Selecciona una opción",size:"xs"},items:{options:s,idName:"id"},values:{value:i},menuSearch:{searchable:!0,searchPlaceholder:"Buscar…"},popover:{fullWidth:!0,absolute:!1,closeOnClickOutside:!0,dropdownId:`filter-layout-${e.id}`,popoverZIndex:1300},events:{onValueChange:r=>{a({name:e.id,value:String(r)})}}})}const Gn=()=>{const{fields:e,updateFilters:a,cleanFilters:n,applyFilters:s,initialFilters:o}=De(),i=zn();return t.jsxs("div",{className:"ui-flex ui-min-w-[280px] ui-max-w-[400px] ui-flex-col ui-gap-8 ui-p-8",children:[t.jsxs("div",{className:"ui-flex ui-items-center ui-justify-between ui-gap-2",children:[t.jsx("p",{className:"ui-m-0 ui-text-heading-h6 ui-font-heading-h6 ui-leading-heading-h6 ui-tracking-heading-h6 ui-text-primary",children:"Filtros"}),t.jsx(x.Button,{color:"secondary",size:"xxs",icon:ne.faXmark,type:"button",onClick:()=>{n(),i==null||i()},children:"Limpiar"})]}),t.jsx("div",{className:"ui-flex ui-flex-col ui-gap-3",children:e==null?void 0:e.map((r,c)=>t.jsx("div",{className:"ui-relative",style:{zIndex:10-c},children:(r==null?void 0:r.type)==="select"?t.jsx("div",{className:"tw-relative tw-z-[10] tw-w-full",children:t.jsx(Kn,{field:r})}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"z-[1] tw-text-xl",children:r.label}),t.jsx("input",{className:"tw-h-[30px] tw-w-full tw-rounded-lg tw-p-s tw-shadow-input",type:r.type,value:o==null?void 0:o[r==null?void 0:r.id],name:r.label.toLowerCase().replace(/ /g,"_"),onChange:Un(u=>{var l,d;return a({name:(l=u==null?void 0:u.target)==null?void 0:l.name,value:(d=u==null?void 0:u.target)==null?void 0:d.value})},1e3)})]})},c))}),t.jsx(x.Button,{color:"primary",size:"xs",type:"button",fullWidth:!0,onClick:()=>{s(),i==null||i()},children:"Filtrar"})]})},Ft=e=>new Intl.DateTimeFormat("es-MX",{month:"long"}).format(e);function Vn(e){const a=["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],n=new Date(e).getDay();return a[n]}const na=e=>{let a=e||new Date,n=a.getDate(),s=Ft(a.getMonth()).slice(0,3),o=a.getFullYear().toString().slice(-2),i=Vn(a).slice(0,3);return`${i.charAt(0).toUpperCase()+i.slice(1)} ${n} ${s.charAt(0).toUpperCase()+s.slice(1)} ${o}`},Mt=(e,a)=>({...e,image:e.image?`${a}${e.image}`:""}),tt=e=>{var a,n;return e?(a=e.responsable)!=null&&a.nombre?e.responsable.nombre:(n=e.equipo)!=null&&n.nombre?e.equipo.nombre:null:null};class Wn{static toCampaignTasks(a){var i,r,c,u,l,d,m,g,f,w,b,j,y,h,_;const n=tt(a==null?void 0:a.id_t_requerida),s=tt(a==null?void 0:a.tarea_padre);let o=[];return a!=null&&a.responsable&&o.push({id:a.responsable.id,name:a.responsable.nombre,image:(l=(u=(c=(r=(i=a.responsable)==null?void 0:i.userOBP)==null?void 0:r.imagen)==null?void 0:c.formats)==null?void 0:u.thumbnail)==null?void 0:l.url,role:((d=a.responsable.userOBP)==null?void 0:d.role)||{id:0,name:""}}),(m=a==null?void 0:a.equipo)!=null&&m.miembros&&a.equipo.miembros.forEach(M=>{var F,q,T,D,v;o!=null&&o.find(U=>U.id===M.idUser.id)||M.idUser&&o.push({id:M.idUser.id,name:M.idUser.nombre,image:(D=(T=(q=(F=M==null?void 0:M.userOBP)==null?void 0:F.imagen)==null?void 0:q.formats)==null?void 0:T.thumbnail)==null?void 0:D.url,role:((v=M.userOBP)==null?void 0:v.role)||{id:0,name:""}})}),{paused:a==null?void 0:a.pausada,isPrincipalTask:(a==null?void 0:a.tarea_principal)??!1,orden:(a==null?void 0:a.orden)??null,id:(a==null?void 0:a.id)??null,task:(a==null?void 0:a.texto_corto)??null,status:(a==null?void 0:a.estatus)??null,difficulty:(a==null?void 0:a.nivel_dificultad)??null,priority:(a==null?void 0:a.prioridad)??0,endDate:new Date((a==null?void 0:a.ffin)??null),startDate:new Date((a==null?void 0:a.finicio)??null),users:o,repeatsToDo:(a==null?void 0:a.repeticiones)??null,repeats:(a==null?void 0:a.repeticiones_realizadas)??null,comments:((g=a==null?void 0:a.comentarios)==null?void 0:g.length)??null,willBePaused:a==null?void 0:a.es_pausable,nameProject:((f=a==null?void 0:a.proyecto)==null?void 0:f.nombre)??null,idProject:((w=a==null?void 0:a.proyecto)==null?void 0:w.id)??null,medioName:(a==null?void 0:a.nombre_medio)??null,statusRequiredTask:((b=a==null?void 0:a.id_t_requerida)==null?void 0:b.estatus)??null,nameRequiredTask:((j=a==null?void 0:a.id_t_requerida)==null?void 0:j.texto_corto)??null,nameRequiredTaskResponsible:n,name_father_required_task:((y=a==null?void 0:a.tarea_padre)==null?void 0:y.texto_corto)??null,name_father_required_task_responsible:s,responsible:((h=a==null?void 0:a.responsable)==null?void 0:h.id)??null,tasks:((_=a==null?void 0:a.tareas)==null?void 0:_.map(M=>({id:M.id,name:M.texto_corto,status:M.estatus})))??null,atraso:(a==null?void 0:a.atraso)??null,categoria:(a==null?void 0:a.categoria)??null,...(a==null?void 0:a.cambio_arte)&&{cambio_arte:a==null?void 0:a.cambio_arte}}}}const Qn=async({filters:e,tasks_api:a,project:n})=>{try{const s=await a.get("/api/listado_tareas_flujo",{params:{...e,project:{id:n},includeAllTasks:!0,populate:"*",cancelada:!1}}),o=xe(s.data.tareas),i=Array.isArray(o)?o:[o],r=new Set;if(i.forEach(c=>{var u;(u=c==null?void 0:c.id_t_requerida)!=null&&u.id&&r.add(c.id_t_requerida.id)}),r.size>0){const c=Array.from(r),u=Pe.stringify({filters:{id:{$in:c}},populate:{responsable:{fields:["id","nombre"]},equipo:{fields:["id","nombre"]}}},{encodeValuesOnly:!0});try{const l=await a.get(`/api/tareas?${u}`),d=xe(l.data.data||l.data),m=Array.isArray(d)?d:[d],g=new Map(m.map(f=>[f.id,f]));i.forEach(f=>{var w;if((w=f==null?void 0:f.id_t_requerida)!=null&&w.id){const b=g.get(f.id_t_requerida.id);b&&(f.id_t_requerida={...f.id_t_requerida,responsable:b.responsable||null,equipo:b.equipo||null})}})}catch{}}return i.map(Wn.toCampaignTasks)}catch(s){console.log(s)}},ka=p.createContext({}),Xn=({children:e,project:a})=>{var y;const[n,s]=p.useState([]),[o,i]=p.useState(!1),[r,c]=p.useState([]),{tasks_api:u}=ge(),{filters:l}=De(),{user:d}=Ne(),[m,g]=p.useState({owner:{user:d.id,config:((y=l==null?void 0:l.owner)==null?void 0:y.config)??"yo_y_mis_equipos"},project:{id:a}});p.useEffect(()=>{var h;if(Object.keys(l).length>0){const _={...l,owner:{user:d.id,config:((h=l==null?void 0:l.owner)==null?void 0:h.config)??"yo_y_mis_equipos"},project:{id:a}};g(_)}},[l,d.id,a]);const f=ue.useQuery({queryKey:["tasksProject",m,a],queryFn:()=>{const h={...m,taskName:l==null?void 0:l.taskName,owner:{...m.owner,config:m.owner.config||"yo_y_mis_equipos"}};return Qn({filters:h,project:a,tasks_api:u})},refetchOnWindowFocus:!1}),w=h=>{s(_=>[..._,h])},b=h=>{c(_=>_.includes(h)?_.filter(M=>M!==h):[..._,h])},j=a??null;return t.jsx(ka.Provider,{value:{tasksProject:f,selectedTasks:n,projectID:j,openTasks:r,selectTask:w,filtersToSend:m,openTask:b,isRefetching:o,project:a,filters:l,setIsRefetching:i},children:e})},Ye=()=>p.useContext(ka),Oa=p.createContext(void 0),oa=()=>({selectedTaskIds:[],baseColumn:null,isFullColumnSelected:!1});function La({children:e,invalidateAfterBulkSuccess:a}){const[n,s]=p.useState(oa),[o,i]=p.useState(null),[r,c]=p.useState(!1),{selectedTaskIds:u,baseColumn:l,isFullColumnSelected:d}=n,m=u.length>0,g=l!==null,f=p.useCallback(()=>{s(oa()),i(null),c(!1)},[]),w=p.useCallback(()=>{s(h=>({...h,selectedTaskIds:[],isFullColumnSelected:!1}))},[]),b=p.useCallback((h,_)=>{_!=="Completadas"&&s(M=>{if(M.baseColumn&&M.baseColumn!==_)return M;const F=new Set(M.selectedTaskIds);return F.has(h)?(F.delete(h),{selectedTaskIds:[...F],baseColumn:M.baseColumn,isFullColumnSelected:!1}):(F.add(h),{selectedTaskIds:[...F],baseColumn:M.baseColumn??_,isFullColumnSelected:!1})})},[]),j=p.useCallback(async(h,_)=>{if(h!=="Completadas"){c(!0);try{const M=await _(),F=[...new Set(M)];s(q=>q.baseColumn&&q.baseColumn!==h?q:{selectedTaskIds:F,baseColumn:q.baseColumn??h,isFullColumnSelected:F.length>0})}finally{c(!1)}}},[]);p.useEffect(()=>{u.length===0&&l!==null&&f()},[u.length,l,f]);const y=p.useMemo(()=>({selectedTaskIds:u,baseColumn:l,isMultiSelectActive:m,isBulkSessionActive:g,isFullColumnSelected:d,pendingTargetStatus:o,isBulkLoading:r,invalidateAfterBulkSuccess:a,toggleTaskSelection:b,deselectAllSelectedTasks:w,exitBulkSelectionMode:f,selectEntireColumn:j,setPendingTargetStatus:i,setIsBulkLoading:c}),[u,l,m,g,d,o,r,a,b,w,f,j,i,c]);return t.jsx(Oa.Provider,{value:y,children:e})}function kt(){return p.useContext(Oa)}const Yn=()=>t.jsxs("div",{className:"tw-flex tw-h-[150px] tw-w-full tw-animate-pulse tw-flex-col tw-gap-[50px] tw-rounded-md tw-bg-gray-200 tw-p-4",children:[t.jsxs("div",{className:"tw-flex tw-h-[30px] tw-gap-3",children:[t.jsx("div",{className:"tw-h-full tw-w-[30px] tw-min-w-[30px] tw-rounded-full tw-bg-gray-300"}),t.jsx("div",{className:"tw-h-full tw-w-full tw-bg-gray-300"}),t.jsx("div",{className:"tw-h-full tw-w-[30px] tw-min-w-[30px] tw-rounded-full tw-bg-gray-300"})]}),t.jsxs("div",{className:"tw-flex tw-h-[30px] tw-w-full tw-justify-between tw-gap-[50px]",children:[t.jsx("div",{className:"tw-h-[30px] tw-w-full tw-bg-gray-300"}),t.jsx("div",{className:"tw-h-[30px] tw-w-full tw-bg-gray-300"})]})]});function Ie({trigger:e,children:a,enabled:n=!0,position:s="top",offset:o=8,closeOnClick:i=!1,popoverArrow:r="auto",className:c="tw-inline-flex tw-max-w-full",triggerWrapperClassName:u="tw-inline-flex tw-max-w-full"}){const l=p.useRef(null);return n?t.jsxs("span",{className:c,children:[t.jsx("span",{ref:l,className:u,children:e}),t.jsx(x.Popover,{triggerRef:l,openOnHover:!0,position:s,offset:o,closeOnClick:i,popoverArrow:r,children:a})]}):t.jsx(t.Fragment,{children:e})}const we={texts:{DEFAULT:"#252525",subtext:"#4f4f4f",placeholder:"#929292"},primary:{regular:"#425CAC"},success:{dark:"#368156",regular:"#43B071"},danger:{dark:"#8C352C",regular:"#C34335"},warning:{dark:"#B4782F",regular:"#D38A31"}},Ba=p.createContext(null),Jn=({children:e})=>{const[a,n]=p.useState({message:"",type:"success"}),s=(o,i)=>{n({message:o,type:i}),setTimeout(()=>n({message:"",type:"success"}),3e3)};return t.jsx(Ba.Provider,{value:{toast:a,showSuccess:o=>s(o,"success"),showError:o=>s(o,"error")},children:e})},Ot=()=>p.useContext(Ba);class qa{static toAtrasoReasons(a){return{id:a.id,motivo_imj:a.motivo_imj,categoria:a.categoria??null}}}const Zn=async({tasks_api:e})=>{try{const a=await e.get("/api/motivos",{params:{populate:{categoria:{fields:["id","nombre","tipo"]}},filters:{tipo:{$eq:"atraso"}}}});return xe(a.data).map(qa.toAtrasoReasons)}catch(a){throw console.log("Error al obtener los motivos de atraso",a),`Error al obtener los motivos de atraso: ${a}`}},Ra=({enabled:e=!1}={})=>{const{tasks_api:a}=ge(),{user:n}=Ne(),s=ue.useQueryClient(),{showSuccess:o,showError:i}=Ot(),{filters:r,path:c}=De(),{data:u,isLoading:l}=ue.useQuery({queryKey:["atraso_reasons"],queryFn:()=>Zn({tasks_api:a}),staleTime:1e3*60*60*24,enabled:e}),d=async()=>{const M=await a.get("/api/motivos",{params:{filters:{tipo:{$eq:"atraso"}}}});return xe(M.data).map(qa.toAtrasoReasons)},m=async({taskId:M,motivoId:F,projectID:q})=>{try{return(await a.post("/api/atrasos",{data:{inicio:new Date,fin:null,motivo:F,proyecto:q,tarea:M,creada_por:n==null?void 0:n.id}})).data}catch(T){console.log("error",T)}},g=async M=>{try{return(await a.delete(`/api/atrasos/${M}`)).data}catch(F){console.log("error",F)}},f=async M=>{try{return(await a.put(`/api/atrasos/${M}`,{data:{fin:new Date}})).data}catch(F){console.log("error",F)}},w=async({taskId:M,projectID:F,motivo:q})=>{await y({taskId:M,motivoId:q,projectID:F})},b=async M=>{await h(M)},j=async M=>{await _(M)},{mutateAsync:y}=ue.useMutation({mutationFn:m,onSuccess:()=>{o("Atraso registrado correctamente"),c==="kanban-general"&&(s.invalidateQueries({queryKey:["to_do_tasks",r]}),s.invalidateQueries({queryKey:["working_tasks",r]})),c==="kanban-campania"&&s.invalidateQueries({queryKey:["tasksProject"]})},onError:()=>{i("Error al registrar el atraso")}}),{mutateAsync:h}=ue.useMutation({mutationFn:g,onSuccess:()=>{o("Atraso eliminado correctamente"),c==="kanban-general"&&(s.invalidateQueries({queryKey:["to_do_tasks"]}),s.invalidateQueries({queryKey:["working_tasks"]}),s.invalidateQueries({queryKey:["done_tasks"]})),c==="kanban-campania"&&s.invalidateQueries({queryKey:["tasksProject"]})},onError:()=>{i("Error al eliminar el atraso")}}),{mutateAsync:_}=ue.useMutation({mutationFn:f,onSuccess:()=>{o("Atraso finalizado correctamente")},onError:()=>{i("Error al finalizar el atraso")}});return{atrasoReasons:u,isLoading:l,createAtraso:w,getAtrasoReasons:d,deleteAtraso:b,finalizarAtraso:j}},Ue=()=>{const{tasks_api:e}=ge(),{user:a}=Ne(),{filters:n,path:s}=De(),o=ue.useQueryClient(),{projectID:i}=Ye(),{showSuccess:r,showError:c}=Ot(),{finalizarAtraso:u}=Ra({enabled:!1}),l=async({id:O})=>(await e.put(`/api/tareas/${O}`,{data:{estatus:1,responsable:a==null?void 0:a.id,updated_by:a==null?void 0:a.id}})).data,d=async({id:O})=>(await e.put(`/api/tareas/${O}`,{data:{estatus:0,responsable:a==null?void 0:a.id,updated_by:a==null?void 0:a.id}})).data,m=async({id:O,idAtraso:S})=>{const B=await e.post("/api/terminarTarea",{id_task:O,ended_at:new Date().toISOString(),id_user:a==null?void 0:a.id});return await u(S),B.data},g=async({id:O,repeats:S})=>(await e.put(`/api/tareas/${O}`,{data:{repeticiones_realizadas:S,updated_by:a==null?void 0:a.id}})).data,f=async({id:O,motiveId:S})=>{try{const B=await e.post("/api/pausarTarea",{taskId:O,userId:a==null?void 0:a.id,motivoId:S});return r("Tarea pausada correctamente"),B.data}catch(B){c("Error al pausar la tarea: "+B)}},w=async({id:O})=>{try{const S=await e.post("/api/reanudarTarea",{taskId:O});return r("Tarea reanudada correctamente"),S.data}catch(S){c("Error al reanudar la tarea: "+S)}},b=async({id:O,idNewResponsible:S,typeOfSelect:B})=>{let k={updated_by:a==null?void 0:a.id};return B==="responsible"&&(k={...k,responsable:S}),B==="team"&&(k={...k,responsable:null,equipo:S}),(await e.put(`/api/tareas/${O}`,{data:k})).data},j=async({id:O,data:S,user:B})=>{try{return(await e.put(`/api/tareas/${O}`,{data:{...S,updated_by:B==null?void 0:B.id}})).data}catch(k){console.error("Error updating the element:",k)}},y=async({id:O})=>{await M({id:O})},h=async({id:O,data:S,user:B})=>{await _({id:O,data:S,user:B})},{mutateAsync:_}=ue.useMutation({mutationFn:j,onSuccess:()=>{r("Tarea actualizada correctamente");const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]})}}),{mutateAsync:M}=ue.useMutation({mutationFn:l,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error updating the element:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:F}=ue.useMutation({mutationFn:m,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{o.setQueryData([O[s],n],S=>{console.log({oldData:S})}),s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["done_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:q}=ue.useMutation({mutationFn:g,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["done_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:T}=ue.useMutation({mutationFn:b,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to reassign the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["done_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:D}=ue.useMutation({mutationFn:d,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error updating the element:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}});return{updatingTask:h,updateTask:j,startTask:async({id:O})=>{await D({id:O})},startWorking:y,completeTask:async({id:O,idAtraso:S})=>{await F({id:O,idAtraso:S})},reasignResponsible:async({id:O,idNewResponsible:S,typeOfSelect:B})=>{await T({id:O,idNewResponsible:S,typeOfSelect:B})},updateUnitys:async({repeats:O,id:S})=>{await q({repeats:O,id:S})},pauseTask:async({id:O,motiveId:S})=>{console.log({taksId:O,motivoId:S,user:a==null?void 0:a.id})},postPauseTask:f,postReanudeTask:w}};function eo(e,a){const n=a??0;return(e??"")!==""&&n===2&&n===2||!(e??"")}function to(e){const a=e.repeatsToDo;return a==null||a<=0?!1:(e.repeats??0)!==a}function Lt(e){return e.status===2||to(e)?!1:eo(e.nameRequiredTask,e.statusRequiredTask)}const Ae=({imageUrl:e="https://www.uv.unach.mx/assets/img/prueba/directorio/userM.png",alt:a="avatar",size:n="s"})=>{const s={xs:"tw-w-[24px] tw-h-[24px] tw-min-w-[24px] tw-min-h-[24px]",s:"tw-w-[28px] tw-h-[28px] tw-min-w-[28px] tw-min-h-[28px]",m:"tw-w-[32px] tw-h-[32px] tw-min-w-[32px] tw-min-h-[32px]",l:"tw-w-[36px] tw-h-[36px] tw-min-w-[36px] tw-min-h-[36px]",xl:"tw-w-[40px] tw-h-[40px] tw-min-w-[40px] tw-min-h-[40px]",xxl:"tw-w-[44px] tw-h-[44px] tw-min-w-[44px] tw-min-h-[44px]"}[n];return t.jsx("img",{src:e===""?"https://www.uv.unach.mx/assets/img/prueba/directorio/userM.png":e,alt:a??"avatar",className:`${s} tw-bg-containers tw-rounded-full tw-border-2 tw-border-white`})},ra=({trigger:e,user:a,showUser:n=!0})=>t.jsx(Ie,{trigger:e,enabled:n,children:t.jsxs("div",{className:"tw-flex tw-h-fit tw-w-fit tw-items-center tw-gap-2 tw-bg-bg-card tw-p-2",children:[t.jsx(Ae,{imageUrl:a.image??"",alt:a.name}),t.jsx("p",{className:"tw-text-s tw-font-bold tw-text-texts-subtext",children:a.name})]})}),ao=({options:e,onselect:a})=>{const[n,s]=p.useState(""),o=[...e].filter(i=>i.name.toLowerCase().includes(n.toLowerCase()));return t.jsxs("div",{className:"tw-h-fit tw-w-full tw-min-w-max",children:[t.jsx(x.Input,{size:"sm",fullWidth:!0,leftSlot:ne.faSearch,placeholder:"Buscar",value:n,onValueChange:s}),t.jsx("div",{className:"tw-border-cards tw-flex tw-max-h-[120px] tw-min-w-max tw-flex-col tw-gap-s tw-overflow-y-auto tw-rounded-lg tw-bg-bg-card tw-p-2 tw-mt-2",children:o.map(i=>t.jsxs("button",{type:"button",onClick:()=>{a(i)},className:"tw-flex tw-min-w-full tw-max-w-[200px] tw-cursor-pointer tw-items-center tw-gap-s hover:tw-bg-primary-light",children:[i.image&&t.jsx(Ae,{imageUrl:i.image,alt:i.name}),t.jsx("p",{className:"tw-text-[14px] tw-content-text tw-truncate tw-py-m tw-font-normal tw-text-texts-subtext",children:i.name})]},i.id??i.name))})]})};class so{static toDomain(a){return{id:a.id,name:a.nombre,color:a.color}}}const no=()=>{const{tasks_api:e}=ge();return{teams:ue.useQuery({queryKey:["teams","all"],queryFn:async()=>{const n=await e.get("/api/equipos");return xe(n.data).map(so.toDomain)},refetchOnWindowFocus:!1})}};class Bt{static toUsers(a){var n,s,o;return{id:a.id,name:a.nombre,image:(o=(s=(n=a.imagen)==null?void 0:n.formats)==null?void 0:s.thumbnail)==null?void 0:o.url,tasksUser:{email:a.tasksUser.email,id:a.tasksUser.id,nombre:a.tasksUser.nombre},role:a.role}}static toUsersV2(a){var n,s,o;return{id:a.id,name:a.nombre,image:(o=(s=(n=a.imagen)==null?void 0:n.formats)==null?void 0:s.thumbnail)==null?void 0:o.url,role:a.role}}static toUsersWithIndex(a){var s,o,i;const n={};for(const r of a)n[r.email]={...r,image:(i=(o=(s=r.imagen)==null?void 0:s.formats)==null?void 0:o.thumbnail)==null?void 0:i.url};return n}}const oo=async({tasks_api:e})=>{try{const a=await e.get("/api/getAllOBPusersMembers");return xe(a.data).map(Bt.toUsers)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},ro=async({tasks_api:e})=>{try{const a={filters:{$and:[{role:{name:{$in:["Project Manager","Operation Manager","Administrador"]}}},{blocked:{$eq:!1}}]}},n=Pe.stringify(a,{encodeValuesOnly:!0}),s=await e.get(`/api/users?${n}`),i=xe(s.data).map(u=>u.email),r=await e.get(`/api/getAllOBPusers?filters[name][$in]=${i}`);return xe(r.data).map(Bt.toUsersV2)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},io=async({users:e})=>{try{const a=xe(e);return Bt.toUsersWithIndex(a)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},lo=()=>{const{tasks_api:e}=ge();return{users:ue.useQuery({queryKey:["users"],queryFn:()=>oo({tasks_api:e}),staleTime:1e3*60*60*24})}},co=()=>{const{tasks_api:e}=ge();return{users:ue.useQuery({queryKey:["allUsers"],queryFn:()=>ro({tasks_api:e}),staleTime:1e3*60*60*24})}},ia="Project Manager",za=({users:e,onClick:a,responsible:n,role:s,status:o})=>{const{getOBPUrlApi:i}=ge(),r=p.useRef(null),c=p.useRef(null),u=p.useId(),[l,d]=p.useState("team"),{teams:m}=no(),{users:g}=lo(),f=s===ia||o===0&&s!==ia,w=()=>n?null:e.length>3&&t.jsx(Ie,{position:"top",popoverArrow:!1,triggerWrapperClassName:"tw-inline-flex tw-items-center",trigger:t.jsx("div",{className:"tw-ml-[-8px] tw-flex tw-h-[28px] tw-w-[28px] tw-items-center tw-justify-center tw-rounded-full tw-border-2 tw-border-white tw-bg-primary-regular",children:t.jsx("p",{className:"tw-text-s tw-font-bold tw-text-white ",children:`+${e.length-3}`})}),children:t.jsx("div",{className:"tw-border-containers tw-h-fit tw-w-fit tw-rounded-lg tw-bg-bg-card tw-p-2",children:e==null?void 0:e.slice(3).map((h,_)=>t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2 ",children:[t.jsx(Ae,{imageUrl:h.image??"",alt:h.name},_),t.jsx("p",{className:"tw-text-s tw-font-bold tw-text-texts-subtext",children:h.name})]},_))})}),b=()=>{if(n){const h=e.find(_=>_.id===n);return t.jsx("div",{children:f?t.jsx(x.Tooltip,{label:(h==null?void 0:h.name)??"",position:"top",children:t.jsx(Ae,{imageUrl:h==null?void 0:h.image,alt:h==null?void 0:h.name},n)}):t.jsx(ra,{trigger:t.jsx(Ae,{imageUrl:h==null?void 0:h.image,alt:h==null?void 0:h.name},n),user:h,showUser:!0})})}return(e==null?void 0:e.length)>0&&e.slice(0,3).map((h,_)=>t.jsx("div",{className:`${_===0?"":"tw-ml-[-8px]"}`,children:f?t.jsx(x.Tooltip,{label:h.name,position:"top",children:t.jsx(Ae,{imageUrl:h.image,alt:h.name})}):t.jsx(ra,{trigger:t.jsx(Ae,{imageUrl:h.image,alt:h.name}),user:h,showUser:!0})},h.id||_))},j=()=>{const h=[{id:"team",label:"Equipo"},{id:"responsible",label:"Responsable"}];return t.jsx("div",{className:"tw-flex tw-w-full tw-justify-center tw-gap-l tw-font-bold tw-text-texts-placeholder",children:h.map((_,M)=>t.jsx("button",{type:"button",className:`tw-w-full tw-border-texts-placeholder tw-text-center tw-text-[10px] ${l===_.id?"tw-text-primary-pastel":""} ${M===h.length-1?"tw-border-r-0":" tw-border-r-2"}`,onClick:()=>d(_.id),children:_.label},_.id))})},y=()=>t.jsxs("div",{className:"tw-border-cards tw-flex tw-max-h-[200px] tw-flex-col tw-gap-m tw-overflow-y-hidden tw-rounded-lg tw-bg-bg-card tw-p-2",style:{boxShadow:"0px 2px 16px 0px rgba(0, 0, 0, 0.25)"},children:[j(),t.jsx(ao,{options:l==="team"?((m==null?void 0:m.data)??[]).map(h=>({id:h.id,name:h.name,image:""})):((g==null?void 0:g.data)??[]).map(h=>Mt(h,i())),onselect:h=>{var _,M;(_=c.current)==null||_.close(),a((M=h.tasksUser)==null?void 0:M.id,l)}})]});return e.length===0?f?t.jsxs(t.Fragment,{children:[t.jsx("span",{ref:r,className:"tw-inline-flex tw-cursor-pointer tw-items-center",children:t.jsx(x.Icon,{name:ne.faUser,size:"xs",color:"current"})}),t.jsx(x.Popover,{ref:c,triggerRef:r,position:"bottom-left",offset:8,closeOnClick:!1,closeOnClickOutside:!0,closeOnEscape:!0,popoverArrow:!1,popupId:`assign-users-${u}`,children:y()})]}):t.jsx("span",{className:"tw-inline-flex tw-items-center",children:t.jsx(x.Icon,{name:ne.faUser,size:"xs",color:"current"})}):t.jsxs(t.Fragment,{children:[t.jsxs("span",{ref:r,className:"tw-flex tw-cursor-pointer tw-items-center",children:[b(),w()]}),f&&t.jsx(x.Popover,{ref:c,triggerRef:r,position:"bottom-left",offset:8,closeOnClick:!1,closeOnClickOutside:!0,closeOnEscape:!0,popoverArrow:!1,popupId:`assign-users-avatars-${u}`,children:y()})]})},$a=({priority:e,id:a,withLabel:n=!1})=>{const{updatingTask:s}=Ue(),o=p.useId().replace(/:/g,""),[i,r]=p.useState(null),{user:c}=Ne(),[u,l]=p.useState(e);p.useEffect(()=>{l(e)},[e]);const d={0:{title:"Normal",color:we.primary.regular},1:{title:"Baja",color:we.success.regular},2:{title:"Media",color:we.warning.regular},3:{title:"Alta",color:we.danger.regular}},m={title:"Sin prioridad",color:we.texts.subtext},f=(()=>{const y=u;if(typeof y!="number"||!Number.isFinite(y))return m;const h=Math.trunc(y);return h<0||h>3?m:d[h]??m})(),w=f.title??"Sin prioridad",b=()=>{if(!i)return null;const y=({priorityTask:h,text:_})=>{var M,F;return t.jsxs("button",{onClick:async()=>{r(null),await s({id:a,data:{prioridad:h},user:c==null?void 0:c.id}),l(h)},className:"tw-flex tw-items-center tw-gap-m tw-px-l tw-py-s hover:tw-bg-primary-light",children:[t.jsx(x.Icon,{name:ne.faFlag,size:"xs",style:{color:(M=d[h??0])==null?void 0:M.color},color:"current"}),t.jsx("p",{className:"tw-text-sm",style:{color:(F=d[h??0])==null?void 0:F.color},children:_})]})};return Na.createPortal(t.jsx("div",{onBlur:()=>{r(null)},id:`${o}-options`,style:{top:`${i.y+5}px`,left:`${i.x+5}px`,zIndex:50},className:`tw-absolute tw-flex tw-h-fit tw-w-max tw-flex-col tw-gap-2 tw-rounded-xl tw-bg-bg-card tw-p-m
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
${M==="second"?"":"
|
|
5
|
-
`,children:re()})})]})})},go=({id:e,idAtraso:a})=>{const[n,s]=p.useState(!1),{completeTask:o}=Ue();return{checked:n,checkTask:()=>{s(!n),o({id:e,idAtraso:a})}}},ca={checked:"tw-mx-[2px] tw-flex tw-h-[20px] tw-w-[20px] tw-items-center tw-justify-center tw-rounded-full tw-bg-success-regular tw-transition-all",unchecked:"tw-transition-colors"},ho="tw-mx-[2px] tw-flex tw-items-center tw-justify-center tw-rounded-full tw-bg-success-regular tw-transition-all",da="tw-text-s tw-flex tw-w-fit tw-max-w-[400px] tw-flex-col tw-gap-m tw-rounded-lg tw-border-l-[5px] tw-border-warning-regular tw-bg-warning-light tw-p-l tw-text-warning-dark tw-shadow-xl",Ha=({id:e,nameRequiredTask:a,statusRequiredTask:n,status:s,idAtraso:o,nameRequiredTaskResponsible:i,name_father_required_task:r,name_father_required_task_responsible:c,repeatsAreCompleted:u=!1})=>{const l=p.useId(),d=`checkbox-${e}-${l}`,{checked:m,checkTask:g}=go({id:e,idAtraso:o}),w=!!(a&&a!==""&&n===2)||!a,b=!!r,j=s===1&&u,y=()=>t.jsx("label",{htmlFor:d,className:m?ca.checked:ca.unchecked,children:m?t.jsx(x.Icon,{name:ne.faCheck,size:"xs",style:{color:"white"},color:"current"}):t.jsx(x.Icon,{name:ne.faCircle,size:"sm",style:{color:we.texts.placeholder},color:"current"})});return s===2?t.jsx("div",{className:ho,children:t.jsx(x.Icon,{name:de.faCircleCheck,size:"xs",style:{color:"white"},color:"current"})}):b?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"tw-flex tw-w-fit tw-shrink-0 tw-flex-row tw-flex-nowrap tw-items-center tw-gap-1",children:[t.jsx(Ie,{position:"bottom",popoverArrow:!1,triggerWrapperClassName:"tw-inline-flex tw-items-center",trigger:t.jsx("span",{className:"tw-cursor-help tw-inline-flex","aria-hidden":!0,children:t.jsx(x.Icon,{name:ne.faCircleInfo,size:"sm",style:{color:we.warning.regular},color:"current"})}),children:t.jsxs("div",{className:da,children:[t.jsx("p",{className:"tw-w-[210px] tw-font-bold",children:"Tarea padre:"}),t.jsx("p",{children:r}),c&&t.jsxs("p",{className:"tw-font-bold",children:["Responsable:"," ",t.jsx("span",{className:"tw-font-normal",children:c})]}),t.jsx("span",{className:"tw-font-normal tw-italic tw-text-[#919191]",children:"Esta tarea completa automáticamente la tarea padre."})]})}),j&&y()]}),t.jsx("input",{id:d,checked:m,onChange:g,type:"checkbox",className:"tw-hidden","aria-hidden":!0})]}):w?t.jsxs(t.Fragment,{children:[s===1&&y(),t.jsx("input",{id:d,checked:m,onChange:g,type:"checkbox",className:"tw-hidden","aria-hidden":!0})]}):t.jsxs(t.Fragment,{children:[t.jsx(Ie,{position:"bottom",popoverArrow:!1,triggerWrapperClassName:"tw-inline-flex tw-items-center",trigger:t.jsx("span",{className:"tw-cursor-help tw-inline-flex","aria-hidden":!0,children:t.jsx(x.Icon,{name:ne.faCircleInfo,size:"sm",style:{color:we.warning.regular},color:"current"})}),children:t.jsxs("div",{className:da,children:[t.jsx("p",{className:"tw-w-[210px] tw-font-bold",children:"Requiere completar su tarea:"}),t.jsx("p",{children:a}),i&&t.jsxs("p",{className:"tw-font-bold",children:["Responsable: ",t.jsx("span",{className:"tw-font-normal",children:i})]})]})}),t.jsx("input",{id:d,checked:m,onChange:g,type:"checkbox",className:"tw-hidden","aria-hidden":!0})]})};function xo({items:e}){var s;const[a,n]=p.useState(1);return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tw-mb-2 tw-mt-4 tw-flex tw-flex-row tw-border-b tw-border-neutral-100 tw-bg-white",children:e.map((o,i)=>t.jsx("div",{className:"tw-border-r tw-border-neutral-100",children:t.jsx(x.Button,{color:"tertiary",pill:"none",size:"xs",active:a===o.id,onClick:()=>n(o.id),children:o.label},o.id)},o.id))}),t.jsx("div",{className:"tw-flex-1 tw-overflow-y-auto tw-bg-white tw-pt-4",children:(s=e.find(o=>o.id===a))==null?void 0:s.component})]})}function bo({comment:e}){var o,i,r,c,u;const{getImageOBP:a}=ge(),n=(c=(r=(i=(o=e==null?void 0:e.autor)==null?void 0:o.imagen)==null?void 0:i.formats)==null?void 0:r.thumbnail)==null?void 0:c.url;function s(l){const d=lt.parseISO(l);return lt.formatDistanceToNow(d,{locale:Et.es,addSuffix:!0})}return t.jsx("div",{children:t.jsxs("div",{className:"tw-flex tw-flex-row tw-items-start tw-gap-3",children:[t.jsx(Ae,{size:"xxl",imageUrl:n?a(n):"",alt:"@shadcn"}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-1",children:[t.jsxs("div",{className:"tw-flex tw-flex-row tw-gap-2",children:[t.jsx("p",{className:"tw-text-xl tw-font-medium tw-text-neutral-900",children:(u=e==null?void 0:e.autor)==null?void 0:u.nombre}),t.jsx("span",{className:"tw-mt-[2px] tw-text-base tw-font-normal tw-text-neutral-600",children:s(e==null?void 0:e.createdAt)})]}),t.jsx("p",{className:"tw-text-xl tw-font-normal tw-text-neutral-600",children:e==null?void 0:e.comentario})]})]})})}function yo({currentUser:e,data:a,taskId:n,onNewComment:s}){var f,w,b;const{tasks_api:o,getImageOBP:i}=ge(),{control:r,handleSubmit:c,reset:u}=Se.useForm({defaultValues:{comment:""}}),[l,d]=p.useState([]),m=(b=(w=(f=e==null?void 0:e.imagen)==null?void 0:f.formats)==null?void 0:w.thumbnail)==null?void 0:b.url;p.useEffect(()=>{if(a!=null&&a.comentarios){const j=[...a.comentarios].sort((y,h)=>new Date(h.createdAt).getTime()-new Date(y.createdAt).getTime());d(j)}},[a]);const g=async j=>{try{const y={id:Date.now(),autor:{id:e==null?void 0:e.id,email:e==null?void 0:e.email,nombre:e==null?void 0:e.nombre,imagen:e==null?void 0:e.imagen},comentario:j.comment,createdAt:new Date().toISOString(),updatedAt:null};await o.post("/api/comentarios",{data:{autor:e==null?void 0:e.id,comentario:j.comment,tarea:n}}),s(!0),d(h=>[y,...h]),u()}catch(y){console.error("Error al agregar comentario:",y)}};return t.jsxs("div",{className:"tw-flex tw-h-full tw-flex-col tw-gap-4",children:[t.jsxs("form",{onSubmit:c(g),className:"tw-flex tw-flex-row tw-items-center tw-gap-3",children:[t.jsx(Ae,{size:"xxl",imageUrl:m?i(m):"",alt:"@shadcn"}),t.jsx("div",{className:"tw-min-w-0 tw-flex-1",children:t.jsx(Se.Controller,{name:"comment",control:r,rules:{required:"Escribe un comentario"},render:({field:j,fieldState:{error:y}})=>t.jsx(x.Input,{fullWidth:!0,placeholder:"Escribe un comentario",autoComplete:"off",size:"xs",error:y==null?void 0:y.message,...j,value:j.value??""})})})]}),l&&l.map((j,y)=>t.jsx(bo,{comment:j},y))]})}function jo({data:e}){const a={0:{color:"tw-bg-gray-400",label:"Sin estado"},1:{color:"tw-bg-primary-regular",label:"En curso"},2:{color:"tw-bg-success-regular",label:"Finalizada"},3:{color:"tw-bg-success-regular",label:"Finalizada"}},n=s=>s?lt.format(new Date(s),"d MMM",{locale:Et.es}):"";return t.jsxs("div",{children:[t.jsxs("div",{className:"tw-flex tw-flex-row tw-items-center tw-gap-4",children:[t.jsx(x.Text,{className:"tw-text-2xl tw-font-medium tw-text-neutral-900",children:"Tareas dependientes"}),t.jsx("span",{className:"tw-text-primary tw-flex tw-h-10 tw-w-10 tw-items-center tw-justify-center tw-rounded-full tw-bg-[#E1EBF9] tw-text-lg tw-font-normal tw-text-neutral-600",children:e==null?void 0:e.length})]}),t.jsx("div",{className:"tw-mt-3 tw-flex tw-flex-col tw-gap-2 tw-rounded-lg tw-border tw-border-neutral-200",children:e==null?void 0:e.map(s=>{var o,i,r,c,u;return t.jsxs("div",{className:"tw-flex tw-w-full tw-flex-row tw-items-center tw-justify-between tw-gap-s tw-border-b tw-border-neutral-200 tw-px-2 tw-py-1",children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx(Ae,{imageUrl:(c=(r=(i=(o=s.responsable)==null?void 0:o.image)==null?void 0:i.formats)==null?void 0:r.thumbnail)==null?void 0:c.url}),t.jsx("p",{className:"tw-w-[400px] tw-overflow-hidden tw-text-ellipsis tw-text-nowrap tw-text-sm tw-font-normal",children:s==null?void 0:s.texto_corto})]}),t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-1",children:[t.jsx("p",{className:"tw-text-sm tw-font-normal",children:n(s==null?void 0:s.createdAt)}),t.jsx("div",{className:`tw-block tw-h-4 tw-w-4 tw-rounded-full tw-bg-gray-400 ${((u=a[s==null?void 0:s.estatus])==null?void 0:u.color)??"tw-bg-gray-400"}`})]})]},s.id)})})]})}function vo({id:e,texto_largo:a,user_id:n}){const[s,o]=p.useState(a),{updatingTask:i}=Ue(),r=async()=>{await i({id:e,data:{texto_largo:s},user:n})};return p.useEffect(()=>{o(a)},[a]),t.jsxs("div",{className:"tw-mt-8 tw-flex tw-w-full tw-flex-col tw-gap-3",children:[t.jsx("h6",{className:"tw-text-2xl tw-font-semibold tw-text-neutral-900",children:"Descripción"}),t.jsx(x.Input,{fullWidth:!0,size:"md",value:s,onChange:c=>o(c.target.value),onBlur:r,autoComplete:"off",placeholder:"Agregar descripción"})]})}function Ka({isOpen:e,setIsOpen:a,taskId:n}){var y,h,_,M,F,q,T,D,v;const[s,o]=p.useState(null),[i,r]=p.useState(!1),[c,u]=p.useState(!1),[l,d]=p.useState(null),m=(M=(_=(h=(y=s==null?void 0:s.responsable)==null?void 0:y.imagen)==null?void 0:h.formats)==null?void 0:_.thumbnail)==null?void 0:M.url,{tasks_api:g,getImageOBP:f}=ge(),{user:w}=Ne();p.useEffect(()=>{if(e&&n||i){const U=async()=>{const J=await g.get(`/api/detalleTarea/${n}`);o(J==null?void 0:J.data)},K=async()=>{const J=await g.get(`/api/users/${w.id}`);d(J==null?void 0:J.data)};U(),K()}},[e,n,i,w.id,g]);const b=U=>U?lt.format(U,"d MMM yyyy, h:mmaaa",{locale:Et.es}):"Fecha no disponible",j=[{id:1,label:"Todo",component:t.jsx(yo,{taskId:n,currentUser:l,data:s,onNewComment:r})},{id:2,label:"Dependencias",component:t.jsx(jo,{data:s==null?void 0:s.ids_t_dependientes})}];return e&&Na.createPortal(t.jsxs(t.Fragment,{children:[t.jsx("div",{className:`tw-fixed tw-inset-0 tw-z-20 tw-flex tw-items-center tw-justify-center tw-bg-transparent tw-bg-opacity-50 ${e?"tw-pointer-events-auto tw-block":"tw-pointer-events-none tw-hidden"}`,onClick:()=>a(!1)}),t.jsx("section",{className:`tw-fixed tw-bottom-0 tw-top-0 tw-z-50 tw-flex tw-h-screen tw-w-[55rem] tw-items-center tw-justify-center tw-overflow-hidden tw-bg-white tw-bg-opacity-50 tw-shadow-2xl tw-transition-all tw-duration-500 tw-ease-in-out ${e?"tw-pointer-events-auto tw-right-0 tw-block":"tw-pointer-events-none tw-right-[-100%] tw-hidden"}`,children:t.jsxs("div",{className:"tw-flex tw-h-full tw-w-full tw-flex-col tw-overflow-y-scroll tw-border-none tw-bg-white tw-px-6 tw-py-10 tw-shadow-xl",children:[t.jsxs("div",{className:"tw-flex tw-w-full tw-flex-row tw-items-center tw-justify-between tw-gap-10 tw-border-none tw-pb-4",children:[t.jsxs("div",{className:"tw-relative tw-flex tw-flex-row tw-items-start tw-gap-2",children:[((F=s==null?void 0:s.id_t_requerida)==null?void 0:F.id)&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tw-cursor-help",onMouseOver:()=>u(!0),onMouseLeave:()=>u(!1),children:t.jsx(x.Icon,{name:ne.faCircleInfo,size:"sm",style:{color:we.warning.regular},color:"current"})}),c&&(()=>{var K;const U=tt(s==null?void 0:s.id_t_requerida);return t.jsxs("div",{style:{top:"25px"},className:"tw-absolute tw-flex tw-w-fit tw-max-w-[400px] tw-flex-col tw-gap-m tw-rounded-lg tw-border-l-[5px] tw-border-warning-regular tw-bg-warning-light tw-p-l tw-text-xs tw-text-warning-dark",children:[t.jsx("p",{className:"tw-font-bold",children:"Requiere completar su tarea:"}),t.jsx("p",{className:"tw-text-2xl tw-font-normal tw-text-neutral-600",children:(K=s==null?void 0:s.id_t_requerida)==null?void 0:K.texto_corto}),U&&t.jsxs("p",{className:"tw-font-bold",children:["Responsable: ",t.jsx("span",{className:"tw-font-normal",children:U})]})]})})()]}),t.jsx("div",{className:"tw-flex tw-flex-row tw-items-center tw-gap-2",children:t.jsxs("h3",{className:"tw-text-3xl tw-font-semibold tw-text-neutral-900",children:[s==null?void 0:s.texto_corto,(s==null?void 0:s.atraso)&&t.jsx(x.Tooltip,{label:(q=s==null?void 0:s.atraso)==null?void 0:q.motivo,position:"bottom",children:t.jsx("button",{className:"tw-ml-2 tw-inline-block tw-h-fit tw-align-middle",children:t.jsx(x.Icon,{name:ne.faTriangleExclamation,size:"md",style:{color:we.warning.dark},color:"current"})})})]})})]}),t.jsx(x.Button,{color:"secondary",pill:"pill",size:"xs",onClick:()=>a(!1),icon:ne.faXmark})]}),t.jsx("div",{className:"tw-mt-6 tw-flex tw-w-full tw-flex-row tw-justify-between",children:t.jsxs("span",{className:"tw-text-xl tw-font-medium tw-text-black-black_light",children:[s==null?void 0:s.campania," / ",s==null?void 0:s.nombre_medio]})}),t.jsx(vo,{id:n,texto_largo:s==null?void 0:s.texto_largo,user_id:w.id}),t.jsx(x.Accordion,{id:`details-task-detalles-${n}`,title:"Detalles",defaultOpen:!0,className:"tw-mt-6 tw-w-full",headerClassName:"tw-border-b tw-border-neutral-200 tw-pb-4",children:t.jsxs("div",{className:"tw-gap-xy-details tw-grid tw-w-full tw-grid-cols-3 tw-p-4",children:[t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Responsable"}),(T=s==null?void 0:s.responsable)!=null&&T.nombre?t.jsxs("div",{className:"tw-flex tw-flex-row tw-items-center tw-gap-2",children:[t.jsx(Ae,{size:"xxl",imageUrl:m?f(m):"",alt:"@shadcn"}),t.jsx("span",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:(D=s==null?void 0:s.responsable)==null?void 0:D.nombre})]}):t.jsx("span",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:"Sin responsable"})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Equipo asignado"}),t.jsx("div",{className:"tw-flex tw-flex-row tw-gap-2",children:t.jsx("span",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:((v=s==null?void 0:s.equipo)==null?void 0:v.nombre)??"Sin equipo"})})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-text-xl tw-font-medium tw-text-neutral-900",children:"Prioridad"}),t.jsx($a,{priority:parseInt(s==null?void 0:s.prioridad)||0,id:n,withLabel:!0})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Lista"}),t.jsx("div",{className:"tw-flex tw-flex-row tw-gap-2",children:t.jsx("span",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:(s==null?void 0:s.lista)??"Sin lista"})})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Fecha estimada de inicio"}),t.jsx("p",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:b(s==null?void 0:s.f_inicio_estimada)})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Fecha estimada de fin"}),t.jsx("p",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:b(s==null?void 0:s.f_fin_estimada)})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Fecha de fin"}),t.jsx("p",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:b(s==null?void 0:s.ffin)})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Creado"}),t.jsx("p",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:b(s==null?void 0:s.createdAt)})]}),t.jsxs("div",{className:"tw-flex tw-w-auto tw-flex-col tw-gap-2",children:[t.jsx("span",{className:"tw-bg-black tw-font-sans tw-text-[1.4rem] tw-font-semibold tw-leading-[100%] tw-tracking-normal",children:"Última modificación"}),t.jsx("p",{className:"tw-text-lg tw-font-normal tw-text-neutral-600",children:b(s==null?void 0:s.updatedAt)})]})]})}),t.jsx(xo,{items:j})]})})]}),document.body)}class _o{static toPauseReasons(a){return{id:a.id,motivo_imj:a.motivo_imj}}}const No=async({tasks_api:e})=>{try{const a=await e.get("/api/motivos");return xe(a.data).map(_o.toPauseReasons)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},Co=()=>{const{tasks_api:e}=ge();return{pauseReasons:ue.useQuery({queryKey:["pause_task_reasons"],queryFn:()=>No({tasks_api:e}),staleTime:1e3*60*60*24})}};class To{static toKanbanTasks(a){var i,r,c,u,l,d,m,g,f,w,b,j,y;const n=tt(a==null?void 0:a.id_t_requerida),s=tt(a==null?void 0:a.tarea_padre);let o=[];return a!=null&&a.responsable&&o.push({id:a.responsable.id,name:a.responsable.nombre,image:(l=(u=(c=(r=(i=a.responsable)==null?void 0:i.userOBP)==null?void 0:r.imagen)==null?void 0:c.formats)==null?void 0:u.thumbnail)==null?void 0:l.url,role:((d=a.responsable.userOBP)==null?void 0:d.role)||{id:0,name:""}}),(m=a==null?void 0:a.equipo)!=null&&m.miembros&&a.equipo.miembros.forEach(h=>{var _,M,F,q,T;o!=null&&o.find(D=>D.id===h.idUser.id)||h.idUser&&o.push({id:h.idUser.id,name:h.idUser.nombre,image:(q=(F=(M=(_=h==null?void 0:h.userOBP)==null?void 0:_.imagen)==null?void 0:M.formats)==null?void 0:F.thumbnail)==null?void 0:q.url,role:((T=h.userOBP)==null?void 0:T.role)||{id:0,name:""}})}),{paused:a==null?void 0:a.pausada,repeats:a==null?void 0:a.repeticiones_realizadas,repeatsToDo:a==null?void 0:a.repeticiones,comments:0,nameProject:(g=a==null?void 0:a.proyecto)==null?void 0:g.nombre,idProject:(f=a==null?void 0:a.proyecto)==null?void 0:f.id,willBePaused:a.es_pausable,difficulty:a.nivel_dificultad,endDate:new Date(a.ffin),id:a.id,priority:a.prioridad??0,status:a.estatus,task:a.texto_corto,users:o,responsible:((w=a==null?void 0:a.responsable)==null?void 0:w.id)??null,name_father_required_task:((b=a==null?void 0:a.tarea_padre)==null?void 0:b.texto_corto)??null,name_father_required_task_responsible:s,statusRequiredTask:((j=a.id_t_requerida)==null?void 0:j.estatus)??null,nameRequiredTask:((y=a.id_t_requerida)==null?void 0:y.texto_corto)??null,nameRequiredTaskResponsible:n,medioName:(a==null?void 0:a.nombre_medio)??null,atraso:(a==null?void 0:a.atraso)??null,categoria:(a==null?void 0:a.categoria)??null,...(a==null?void 0:a.cambio_arte)&&{cambio_arte:a==null?void 0:a.cambio_arte}}}}const ct=async({filters:e,tasks_api:a})=>{try{const s=(await a.get("/api/listado_tareas?populate=*",{params:{...e,cancelada:!1}})).data.tareas.map(xe),o=new Set;if(s.forEach(i=>{var r;(r=i==null?void 0:i.id_t_requerida)!=null&&r.id&&o.add(i.id_t_requerida.id)}),o.size>0){const i=Array.from(o),r=Pe.stringify({filters:{id:{$in:i}},populate:{responsable:{fields:["id","nombre"]},equipo:{fields:["id","nombre"]}}},{encodeValuesOnly:!0});try{const c=await a.get(`/api/tareas?${r}`),u=xe(c.data.data||c.data),l=Array.isArray(u)?u:[u],d=new Map(l.map(m=>[m.id,m]));s.forEach(m=>{var g;if((g=m==null?void 0:m.id_t_requerida)!=null&&g.id){const f=d.get(m.id_t_requerida.id);f&&(m.id_t_requerida={...m.id_t_requerida,responsable:f.responsable||null,equipo:f.equipo||null})}})}catch{}}return s.map(To.toKanbanTasks)}catch(n){throw console.log({error:n}),`Error al obtener las tareas: ${n}`}},qt=30,Rt=e=>{var a;if(e!=null&&e.hasNextPage){const n=(a=e==null?void 0:e.data)==null?void 0:a.pages[e.data.pages.length-1];(n==null?void 0:n.length)===qt&&(e==null||e.fetchNextPage())}},ze=e=>({pagination:{page:e,pageSize:qt,withCount:!0}}),Ga=()=>{var l;const e=ue.useQueryClient(),{tasks_api:a}=ge(),{user:n}=Ne(),{filters:s}=De(),[o,i]=p.useState(0),[r,c]=p.useState({owner:{user:n.id,config:((l=s==null?void 0:s.owner)==null?void 0:l.config)??"yo_y_mis_equipos",role:n.role},status:"por_hacer"}),u=ue.useInfiniteQuery({initialPageParam:1,queryKey:["to_do_tasks",r],queryFn:({pageParam:d})=>ct({filters:{...r,status:"por_hacer",...ze(d)},tasks_api:a}),staleTime:1e3*60*60*24,getNextPageParam:(d,m)=>m.length+1});return p.useEffect(()=>{var d;Object.keys(s).length>0&&c({...s,owner:{user:n.id,config:((d=s==null?void 0:s.owner)==null?void 0:d.config)??"yo_y_mis_equipos",role:n.role},status:"por_hacer"})},[s]),p.useEffect(()=>{e.invalidateQueries({queryKey:["to_do_tasks",r]})},[r]),p.useEffect(()=>{(async()=>{const m=await a.get("/api/listado_tareas",{params:{...r,status:"por_hacer",cancelada:!1,...ze(1),tasks_api:a,justCount:!0}});i(m.data.total)})()},[r,u==null?void 0:u.data]),{toDoTasks:u,total:o,filtersToSend:r}};function So(e){return(e??[]).map(a=>({id:a.id,label:a.motivo_imj}))}const Eo=({idTask:e,setOpen:a,paused:n})=>{const s=ue.useQueryClient(),{toDoTasks:o,filtersToSend:i}=Ga(),[r,c]=p.useState(!1),[u,l]=p.useState(null),{tasksProject:d}=Ye(),{postPauseTask:m,postReanudeTask:g}=Ue(),{pauseReasons:f}=Co(),w=So(f==null?void 0:f.data),b=async()=>{try{if(u==null)return;if(a(!1),await m({id:e,motiveId:u}),await s.invalidateQueries({queryKey:["to_do_tasks",i]}),await s.invalidateQueries({queryKey:["tasksProject"]}),o&&typeof o.refetch=="function"||d&&typeof d.refetch=="function"){const y=await o.refetch(),h=await d.refetch();return[y,h]}}catch(y){console.error("Error al pausar la tarea:",y)}},j=async()=>{try{if(a(!1),await g({id:e}),await s.invalidateQueries({queryKey:["to_do_tasks",i]}),await s.invalidateQueries({queryKey:["tasksProject"]}),o&&typeof o.refetch=="function"||d&&typeof d.refetch=="function"){const y=await o.refetch(),h=await d.refetch();return[y,h]}}catch(y){console.error("Error al reanudar la tarea:",y)}};return t.jsx("div",{className:"tw-flex tw-w-[300px] tw-max-w-[300px] tw-items-center !tw-p-4",children:t.jsxs("div",{className:"tw-flex tw-w-full tw-flex-col tw-gap-s ",children:[t.jsx("h6",{className:"tw-font-regular tw-text-texts-subtexttw-truncate tw-text-xl",children:"Pausar tarea:"}),r?t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-s",children:[t.jsx("p",{className:"tw-text-xl tw-font-medium tw-text-neutral-600",children:"Esta acción detendrá la campaña en curso."}),t.jsx("p",{className:"tw-text-xl tw-font-medium tw-text-neutral-600",children:"¿Estás seguro de continuar?"})]}):n?t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-s",children:[t.jsx("p",{className:"tw-text-xl tw-font-medium tw-text-neutral-600",children:"Esta acción reanudará la campaña en curso."}),t.jsx("p",{className:"tw-text-xl tw-font-medium tw-text-neutral-600",children:"¿Estás seguro de continuar?"})]}):t.jsx(x.Dropdown,{field:{placeholder:"Selecciona una razón"},items:{options:w,idName:"id"},values:{value:u??""},menuSearch:{searchable:!0,searchPlaceholder:"Buscar"},popover:{absolute:!1,closeOnClickOutside:!0,dropdownId:`task-pause-motivo-${e}`,popoverZIndex:1200},events:{onValueChange:y=>{const h=Number(y);Number.isNaN(h)||l(h)},onOptionSelect:y=>{const h=Number(y.id);Number.isNaN(h)||l(h)}}}),t.jsxs("div",{className:"tw-mt-5 tw-flex tw-w-full tw-justify-end tw-gap-m",children:[t.jsx(x.Button,{type:"button",onClick:()=>a(!1),size:"xs",color:"secondary",children:"Cancelar"}),n?t.jsx(x.Button,{type:"button",onClick:()=>j(),size:"xs",color:"primary",children:"Si, reanudar"}):t.jsx(x.Button,{type:"button",disabled:!u,onClick:()=>r?b():c(!0),size:"xs",color:"primary",children:"Aceptar"})]})]})})},Va=({idTask:e,paused:a,popupId:n,children:s})=>{const o=p.useRef(null),i=p.useRef(null),[r,c]=p.useState(!1),[u,l]=p.useState(0),d=`task-pause-motivo-${e}`,m=p.useCallback(()=>{var g;(g=o.current)==null||g.close()},[]);return p.useEffect(()=>{if(!r)return;const g=f=>{const w=f.target;w instanceof Element&&(w.closest(`[data-popup-id="${n}"]`)||w.closest(`[data-dropdown-id="${d}"]`))||m()};return window.addEventListener("scroll",g,!0),document.addEventListener("scroll",g,!0),()=>{window.removeEventListener("scroll",g,!0),document.removeEventListener("scroll",g,!0)}},[r,m,n,d]),t.jsxs(t.Fragment,{children:[s(i),t.jsx(x.Popup,{ref:o,triggerRef:i,popupId:n,position:"bottom-left",offset:5,closeOnClick:!1,closeOnClickOutside:!1,popoverArrow:!1,onOpen:()=>{c(!0),l(g=>g+1)},onClose:()=>c(!1),children:t.jsx(Eo,{idTask:e,paused:a,setOpen:g=>{g||m()}},u)})]})},Po=({id:e,task:a,endDate:n,users:s,willBePaused:o,nameProject:i,comments:r,priority:c,difficulty:u,responsible:l,nameRequiredTask:d,nameRequiredTaskResponsible:m,statusRequiredTask:g,status:f,repeatsToDo:w,repeats:b,medioName:j,paused:y,idProject:h,atraso:_,categoria:M,cambio_arte:F,name_father_required_task:q,name_father_required_task_responsible:T,boardColumnTitle:D,isBulkColumnLocked:v=!1})=>{const[U,K]=p.useState(!1),J=p.useId(),{reasignResponsible:H,updateUnitys:O}=Ue(),{getOBPUrlApi:S}=ge(),[B,k]=p.useState(b??0),R=!!(w&&b===w),ee=!w||w===1,W=f===0,{user:re}=Ne(),Z=kt(),E=!!(Z!=null&&Z.selectedTaskIds.includes(e)),z=Lt({status:f,nameRequiredTask:d,statusRequiredTask:g,repeatsToDo:w,repeats:b}),Q=!!Z&&!!D&&D!=="Completadas"&&!v,I=Q&&z,A=Q&&!z&&!!(Z!=null&&Z.isBulkSessionActive),G=!!(Z!=null&&Z.isMultiSelectActive&&I),P=!I||!!(Z!=null&&Z.isBulkLoading),C=ie=>{!Z||!D||P||Z.toggleTaskSelection(e,D)},$=()=>t.jsxs("div",{className:"tw-relative tw-flex tw-h-fit tw-w-full tw-items-center tw-justify-between",children:[t.jsxs("div",{className:"tw-flex tw-min-w-0 tw-flex-1 tw-flex-row tw-items-start tw-gap-[8px]",children:[f<2&&(q||R||ee||W)&&t.jsx("span",{"data-prevent-bulk-select":!0,children:t.jsx(Ha,{id:e,nameRequiredTask:d??"",statusRequiredTask:g??0,status:f,idAtraso:_==null?void 0:_.atrasoId,nameRequiredTaskResponsible:m,name_father_required_task:q,name_father_required_task_responsible:T,repeatsAreCompleted:R})}),t.jsx("p",{className:"tw-w-full tw-overflow-hidden tw-text-ellipsis tw-text-nowrap tw-text-[1.6rem] tw-font-medium tw-text-neutral-900","data-prevent-bulk-select":!0,onClick:ie=>{ie.stopPropagation(),K(!0)},children:a})]}),z&&t.jsxs("div",{className:"tw-flex tw-shrink-0 tw-items-center tw-gap-2","data-prevent-bulk-select":!0,children:[Z?t.jsx("div",{className:"tw-flex tw-items-center tw-pt-0.5 tw-pr-2",children:t.jsx(x.Checkbox,{id:`kanban-bulk-select-${e}-${J}`,size:"sm",checked:E,disabled:P,onChange:C})}):null,t.jsx(Ua,{id:e,nameRequiredTask:d,status:f,statusRequiredTask:g,projectID:h,atrasoId:_==null?void 0:_.atrasoId,categoria:M,disabled:G})]})]}),L={0:{title:"Muy fácil",color:we.primary.regular},1:{title:"Fácil",color:we.success.regular},2:{title:"Media",color:we.warning.regular},3:{title:"Difícil",color:we.danger.regular},4:{title:"Muy difícil",color:we.danger.dark}},N={title:"Sin dato",color:we.texts.subtext},Y=(()=>{const ie=u;if(typeof ie!="number"||!Number.isFinite(ie))return N;const te=Math.trunc(ie);return te<0||te>4?N:L[te]??N})(),ae=ie=>{k(te=>ie==="minus"?Math.max(0,te-1):Math.min(w,te+1))},le=ie=>{var te;return((te=ie==null?void 0:ie.charAt(0))==null?void 0:te.toUpperCase())??""},X=ie=>ie==="Venta"?"accent":"danger",se=v||!!(Z!=null&&Z.isBulkLoading),ce=A?"tw-cursor-not-allowed tw-opacity-60 hover:tw-border-cards hover:tw-bg-white":"tw-cursor-pointer hover:tw-border-active hover:tw-border-blue-500 hover:tw-bg-primary-light";return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:`tw-border-cards tw-relative tw-h-fit tw-max-w-[350px] tw-rounded-lg tw-border tw-p-[12px_12px] tw-transition-all tw-duration-300 ${ce} ${E?"tw-border-blue-500 tw-bg-primary-light":"tw-border-transparent tw-bg-white"} ${se?"tw-pointer-events-none":""}`,children:[t.jsx($,{}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-[4px] tw-py-2",children:[t.jsx("p",{className:"tw-font-regular tw-max-w-[250px] tw-truncate tw-text-xl tw-text-texts-subtext",children:i}),j&&t.jsx("p",{className:"tw-text-xl",children:j})]}),F&&t.jsx(x.Badge,{label:F.nombre,color:"gray",icon:ne.faImage,size:"md",theme:"solid"}),t.jsxs("div",{"data-prevent-bulk-select":!0,className:"tw-relative tw-flex tw-h-fit tw-w-full tw-items-center tw-justify-between tw-pb-1 tw-pt-5",children:[t.jsxs("div",{className:"tw-relative tw-flex tw-items-center",children:[t.jsx(za,{responsible:l,role:re==null?void 0:re.role,status:f,users:s.filter(ie=>l?ie.id===l:!0).map(ie=>Mt(ie,S())),onClick:async(ie,te)=>{await H({idNewResponsible:ie,id:e,typeOfSelect:te})}}),o&&t.jsx(Va,{idTask:e,paused:y,popupId:`task-pause-menu-${e}`,children:ie=>t.jsx("button",{ref:ie,type:"button",className:"tw-font-regular tw-flex !tw-h-[32px] !tw-w-[32px] tw-items-center tw-justify-center tw-gap-2 tw-text-sm tw-text-gray-400",children:t.jsx(x.Icon,{name:y?ne.faPlay:ne.faPause,size:"xs",color:"current"})})})]}),t.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-gap-m",children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx(x.Badge,{label:le((M==null?void 0:M.tipo)??"P"),color:X((M==null?void 0:M.tipo)??"Preventa"),size:"sm",theme:"solid"}),_&&t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faTriangleExclamation,size:"sm",style:{color:"#C62E1F"},color:"current"}),children:t.jsx("p",{className:"tw-font-regular tw-rounded-lg tw-bg-bg-card tw-p-5 tw-text-sm",style:{color:"#C62E1F"},children:`Tarea atrasada debido a: ${_==null?void 0:_.motivo}`})}),t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faRhombus,size:"sm",style:{color:Y.color},color:"current"}),children:t.jsx("p",{className:"tw-font-regular tw-rounded-lg tw-bg-bg-card tw-p-5 tw-text-sm",style:{color:Y.color},children:`Dificultad ${Y.title}`})}),t.jsx($a,{priority:c,id:e}),!w||w&&f===0&&t.jsxs(t.Fragment,{children:[t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:we.texts.subtext},color:"current"}),t.jsx("p",{className:"tw-font-regular tw-text-sm tw-text-texts-subtext",children:`${n.getDate()} ${Ft(n.getMonth()).slice(0,3)}`})]})]}),f===1&&w&&w>0&&t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-m",children:[t.jsx("p",{className:"tw-pr-[5px] tw-text-[10px] tw-text-texts-placeholder",children:"unidades"}),t.jsx("button",{onClick:()=>ae("minus"),className:"tw-mr-[4px] tw-flex tw-w-[0] tw-items-center tw-justify-center tw-rounded-full tw-bg-gray-200 hover:tw-bg-gray-400",children:t.jsx(x.Icon,{name:ne.faCircleMinus,size:"xs",style:{color:we.texts.placeholder},color:"current"})}),t.jsx("p",{className:"tw-text-[10px] tw-text-texts-placeholder",children:`${B??0} / ${w??0}`}),t.jsx("button",{onClick:()=>ae("plus"),className:"tw-ml-[4px] tw-flex tw-w-[0] tw-items-center tw-justify-center tw-rounded-full tw-bg-gray-200 hover:tw-bg-gray-400",children:t.jsx(x.Icon,{name:ne.faCirclePlus,size:"xs",style:{color:we.texts.placeholder},color:"current"})}),t.jsx("button",{className:"tw-ml-[4px] tw-rounded-md tw-bg-primary-medium tw-px-m tw-py-s tw-text-xs tw-text-primary-regular",onClick:()=>{O({repeats:B,id:e})},children:"Agregar Unidad"})]})]})]}),r>0&&t.jsx("div",{className:"tw-mt-4 tw-border-t tw-border-gray-200 tw-pt-2",children:t.jsxs("button",{type:"button","data-prevent-bulk-select":!0,onClick:ie=>{ie.stopPropagation(),K(!0)},className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx(x.Icon,{name:ne.faComment,size:"xs",color:"current"}),t.jsx("span",{className:"tw-font-regular tw-text-xl tw-text-gray-400",children:r})]})})]}),t.jsx(Ka,{taskId:e,isOpen:U,setIsOpen:K})]})},dt=({title:e,tasks:a,loadNextPage:n,isFetching:s,total:o,bulkSelectAllIds:i})=>{const r=p.useRef(null),c=p.useRef(null),u=p.useRef(!1);p.useEffect(()=>{var j;r!=null&&r.current&&(c!=null&&c.current)&&(c.current.style.minHeight=`${((j=r==null?void 0:r.current)==null?void 0:j.clientHeight)-300}px`)},[r==null?void 0:r.current]);const l=j=>{if(u.current)return;const{scrollTop:y,clientHeight:h,scrollHeight:_}=j==null?void 0:j.target,M=y/(_-h)*100;M<=95||M>=95&&(u.current=!0,n&&n(),setTimeout(()=>{u.current=!1},200))},d={"Por hacer":"tw-border-texts-placeholder",Trabajando:"tw-border-primary-regular",Completadas:"tw-border-success-regular"},m=kt(),g=e,f=!!(m!=null&&m.baseColumn&&m.baseColumn!==e),w=!!m&&e!=="Completadas"&&(m==null?void 0:m.isBulkSessionActive)&&m.baseColumn===e&&typeof i=="function",b=()=>{if(!(!m||!i)){if(m.isFullColumnSelected){m.deselectAllSelectedTasks();return}m.selectEntireColumn(g,i)}};return t.jsxs("div",{ref:r,className:`tw-relative tw-flex tw-h-full tw-min-h-[100%] tw-w-fit tw-min-w-[400px] tw-max-w-[400px] tw-flex-col tw-overflow-hidden tw-rounded-lg tw-border-t-4 tw-bg-gray-100 tw-p-[16px] ${d[e]} ${f?"tw-opacity-40":""}`,children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between",children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-w-full",children:[t.jsx("p",{className:"tw-text-2xl",children:e}),w&&t.jsx("button",{type:"button",className:"tw-text-s tw-font-medium tw-text-primary-regular disabled:tw-cursor-not-allowed disabled:tw-opacity-50 tw-mx-3",disabled:m==null?void 0:m.isBulkLoading,onClick:b,children:m!=null&&m.isBulkLoading?"Cargando…":m!=null&&m.isFullColumnSelected?"Quitar Selección":"Seleccionar todas"})]}),t.jsx("div",{className:"tw-flex tw-items-center tw-gap-[8px]",children:t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-[4px]",children:[t.jsx(x.Icon,{name:ne.faFiles,size:"sm",color:"secondary"}),t.jsx("p",{className:"tw-text-2xl tw-text-texts-placeholder",children:o??0})]})})]}),t.jsxs("div",{ref:c,className:"tw-flex tw-h-full tw-max-w-[350px] tw-flex-col tw-gap-[12px] tw-overflow-y-auto tw-pb-[200px] tw-pt-4 tw-scrollbar-none hover:tw-border-gray-300 hover:tw-bg-gray-100 focus:tw-border-gray-400 focus:tw-bg-gray-200 focus:tw-outline-none",onScroll:l,children:[a==null?void 0:a.map(j=>t.jsx(Po,{...j,boardColumnTitle:m?g:void 0,isBulkColumnLocked:!!(m&&f)},j.id)),s?t.jsx(Yn,{}):t.jsx("p",{className:"tw-text-center tw-text-2xl tw-text-gray-500",children:"No hay más tareas por mostrar..."})]})]})},ua=[{label:"Tipo de dependencia 2",type:"select",id:"dependency",options:[{id:"con",name:"Con dependencia"},{id:"sin",name:"Sin dependencia"},{id:"ambas",name:"Ambas"}]},{label:"Por responsable",type:"select",id:"owner.config",options:[{id:"yo",name:"Mis tareas"},{id:"yo_y_mis_equipos",name:"Tareas mías y de mis equipos"},{id:"mis_equipos",name:"Tareas de mis equipos"}]},{label:"Por dificultad",type:"select",id:"difficulty",options:[{id:1,name:"Muy facil"},{id:2,name:"Facil"},{id:3,name:"Media"},{id:4,name:"Dificil"},{id:5,name:"Muy dificil"}]}],Ao=()=>{const{user:e}=Ne(),[a,n]=p.useState([...ua]),s=[{roles:["Project Manager","Manager","Operation Manager"],id:"owner.config",filters:[{id:"todas",name:"Todas las tareas"}]}];return p.useEffect(()=>{const o=[...ua];s.forEach(c=>{if(c.roles.includes(e.role)){const u=o.find(l=>l.id===c.id);u&&(u.options.some(d=>d.id==="todas")||(u.options=[{id:"todas",name:"Todas las tareas"},...u.options]))}});const i=JSON.stringify(a),r=JSON.stringify(o);i!==r&&n(o)},[e.role]),{filters:a}},Io="/api/tareas/bulk-update-status";async function Do(e,a){const{data:n}=await e.post(Io,a);return n}function Fo(e){var a,n,s,o;if(Xe.isAxiosError(e)){const i=(a=e.response)==null?void 0:a.status,r=(n=e.response)==null?void 0:n.data;if(i===400){if(typeof r=="string"&&r.trim().length>0)return r.trim();if(r&&typeof r=="object"){const c=r.message;if(typeof c=="string"&&c.trim())return c.trim();const u=(s=r.details)==null?void 0:s.errors,l=(o=u==null?void 0:u[0])==null?void 0:o.message;if(typeof l=="string"&&l.trim())return l.trim()}return"Los datos enviados no son válidos. Revisa la selección e inténtalo de nuevo."}return typeof r=="string"&&r.trim().length>0?r.trim():e.message||"No se pudo actualizar las tareas."}return e instanceof Error?e.message:"No se pudo actualizar las tareas."}function Mo(){const{tasks_api:e}=ge(),{user:a}=Ne();return ue.useMutation({mutationKey:["tareas","bulk-update-status"],mutationFn:async n=>{const s=n.user_id??(a==null?void 0:a.id);if(s==null||s<1)throw new Error("No hay usuario válido para la actualización masiva.");try{return await Do(e,{...n,user_id:s})}catch(o){throw new Error(Fo(o))}}})}const gt={MOVE_TO_TRABAJANDO:"kanban-bulk-move-trabajando",MOVE_TO_POR_HACER:"kanban-bulk-move-por-hacer",MOVE_TO_COMPLETADAS:"kanban-bulk-move-completadas"};function ko(e){const{isBulkLoading:a}=e;return[{type:"button",label:"Cancelar",icon:ne.faXmark,color:"secondary",pill:"pill",disabled:a,onClick:()=>{a||(e.setPendingTargetStatus(null),e.setActiveButtonId(null))}},{type:"button",label:"Confirmar",icon:ne.faCheck,color:"secondary",pill:"pill",disabled:a,onClick:()=>{a||e.onConfirmBulkMove()}}]}const ht="secondary";function Oo(e){const a=ko({setActiveButtonId:e.setActiveButtonId,setPendingTargetStatus:e.setPendingTargetStatus,onConfirmBulkMove:e.onConfirmBulkMove,isBulkLoading:e.isBulkLoading});return e.baseColumn==="Por hacer"?[{id:gt.MOVE_TO_TRABAJANDO,label:"Mover a trabajando",icon:ne.faArrowRight,color:ht,disabled:e.isBulkLoading,onClick:()=>{e.isBulkLoading||e.setPendingTargetStatus(1)},addons:a}]:e.baseColumn==="Trabajando"?[{id:gt.MOVE_TO_POR_HACER,label:"Mover a por hacer",icon:ne.faArrowLeft,color:ht,disabled:e.isBulkLoading,onClick:()=>{e.isBulkLoading||e.setPendingTargetStatus(0)},addons:a},{id:gt.MOVE_TO_COMPLETADAS,label:"Mover a completadas",icon:ne.faArrowRight,color:ht,disabled:e.isBulkLoading,onClick:()=>{e.isBulkLoading||e.setPendingTargetStatus(2)},addons:a}]:[]}const Lo="Seleccionados";function Wa(){const e=kt(),[a,n]=p.useState(null),s=a!==null,o=ue.useQueryClient(),{mutate:i}=Mo(),r=(e==null?void 0:e.selectedTaskIds.length)??0;p.useEffect(()=>{r===0&&n(null)},[r]);const c=p.useCallback(()=>{e!=null&&e.isBulkLoading||e==null||e.setPendingTargetStatus(null)},[e]),u=p.useCallback(()=>{n(null),e==null||e.exitBulkSelectionMode()},[e]),l=p.useCallback(()=>{if(!e)return;const m=e.pendingTargetStatus,g=e.selectedTaskIds;if(m==null||g.length===0)return;const f={tasks_ids:[...g],estatus:m,...m===2?{ended_at:new Date().toISOString()}:{}};e.setIsBulkLoading(!0),i(f,{onSettled:()=>{e.setIsBulkLoading(!1)},onSuccess:async()=>{await e.invalidateAfterBulkSuccess(o),n(null),e.exitBulkSelectionMode()},onError:()=>{n(null),e.setPendingTargetStatus(null)}})},[e,i,o]),d=p.useMemo(()=>e?Oo({baseColumn:e.baseColumn,setPendingTargetStatus:e.setPendingTargetStatus,setActiveButtonId:n,onConfirmBulkMove:l,isBulkLoading:e.isBulkLoading}):[],[e,l]);return!e||r===0||e.baseColumn!=="Por hacer"&&e.baseColumn!=="Trabajando"?null:t.jsx(x.Toolbar,{visible:!0,count:r,text:Lo,activeButtonId:a,onActiveButtonIdChange:n,onBackClick:c,buttons:d,onClose:u,showCounterInButtonsView:!s,showBackButton:!s,showCloseButton:!s})}const Qa=["to_do_tasks","working_tasks","done_tasks"],Bo="tasksProject";function qo(e){return Promise.all(Qa.map(a=>e.invalidateQueries({queryKey:[a]}))).then(()=>{})}function Ro(e){return Promise.all(Qa.flatMap(a=>[e.invalidateQueries({queryKey:[a]}),e.refetchQueries({queryKey:[a]})])).then(()=>{})}function zo(e){return e.invalidateQueries({queryKey:[Bo]}).then(()=>{})}const $o=["Por hacer","Trabajando","Completadas"],Uo=()=>{const{defineFields:e}=De(),{tasksProject:a}=Ye(),{filters:n}=Ao();p.useEffect(()=>{(async()=>{let i=[...n];e(i)})()},[]);const s=p.useMemo(()=>{var o;return(o=a==null?void 0:a.data)==null?void 0:o.filter(i=>{var r;return((r=i==null?void 0:i.tasks)==null?void 0:r.length)===0}).reduce((i,r)=>(i[r.status]=i[r.status]||[],i[r.status].push(r),i),{})},[a==null?void 0:a.data]);return t.jsxs(La,{invalidateAfterBulkSuccess:zo,children:[t.jsx(Wa,{}),t.jsx("div",{className:"tw-relative tw-flex tw-h-full tw-min-h-[100%] tw-w-full tw-gap-4",children:$o.map((o,i)=>{const r=(s==null?void 0:s[i])??[];return t.jsx(dt,{total:r.length,title:o,tasks:r,isFetching:a==null?void 0:a.isFetching,isLoadingData:a==null?void 0:a.isLoading,bulkSelectAllIds:()=>Promise.resolve(r.filter(c=>Lt({status:c.status,nameRequiredTask:c.nameRequiredTask,statusRequiredTask:c.statusRequiredTask,repeatsToDo:c.repeatsToDo,repeats:c.repeats})).map(c=>c.id))},o)})})]})};async function Xa(e){const a=[];let n=1;for(;;){const s=await ct({filters:{...e.filters,status:e.status,...ze(n)},tasks_api:e.tasks_api});for(const o of s)Lt({status:o.status,nameRequiredTask:o.nameRequiredTask,statusRequiredTask:o.statusRequiredTask,repeatsToDo:o.repeatsToDo,repeats:o.repeats})&&a.push(o.id);if(s.length<qt)break;n+=1}return a}const Ho=()=>{var i,r;const{tasks_api:e}=ge(),{toDoTasks:a,total:n,filtersToSend:s}=Ga(),o=[...((r=(i=a==null?void 0:a.data)==null?void 0:i.pages)==null?void 0:r.flat())??[]];return t.jsx(dt,{total:n,title:"Por hacer",tasks:o,loadNextPage:()=>Rt(a),isFetching:a==null?void 0:a.isFetching,isLoadingData:a==null?void 0:a.isLoading,bulkSelectAllIds:()=>Xa({tasks_api:e,filters:s,status:"por_hacer"})})},Ko=()=>{var l;const e=ue.useQueryClient(),{tasks_api:a}=ge(),{user:n}=Ne(),{filters:s}=De(),[o,i]=p.useState(0),[r,c]=p.useState({owner:{user:n.id,config:((l=s==null?void 0:s.owner)==null?void 0:l.config)??"yo_y_mis_equipos",role:n.role},status:"trabajando"}),u=ue.useInfiniteQuery({initialPageParam:1,queryKey:["working_tasks",r],queryFn:({pageParam:d})=>ct({filters:{...r,status:"trabajando",...ze(d)},tasks_api:a}),staleTime:1e3*60*60*24,getNextPageParam:(d,m)=>m.length+1});return p.useEffect(()=>{var d;Object.keys(s).length>0&&c({...s,owner:{user:n.id,config:((d=s==null?void 0:s.owner)==null?void 0:d.config)??"yo_y_mis_equipos",role:n.role},status:"trabajando"})},[s]),p.useEffect(()=>{e.invalidateQueries({queryKey:["working_tasks",r]})},[r]),p.useEffect(()=>{(async()=>{const m=await a.get("/api/listado_tareas",{params:{...r,status:"trabajando",cancelada:!1,...ze(1),tasks_api:a,justCount:!0}});i(m.data.total)})()},[r,u==null?void 0:u.data]),{workingTasks:u,total:o,filtersToSend:r}},Go=()=>{var i,r;const{tasks_api:e}=ge(),{workingTasks:a,total:n,filtersToSend:s}=Ko(),o=[...((r=(i=a==null?void 0:a.data)==null?void 0:i.pages)==null?void 0:r.flat())??[]];return t.jsx(dt,{total:n,title:"Trabajando",tasks:o,loadNextPage:()=>Rt(a),isFetching:a==null?void 0:a.isFetching,bulkSelectAllIds:()=>Xa({tasks_api:e,filters:s,status:"trabajando"})})},Vo=()=>{var l;const e=ue.useQueryClient(),{user:a}=Ne(),{tasks_api:n}=ge(),{filters:s}=De(),[o,i]=p.useState(0),[r,c]=p.useState({owner:{user:a.id,config:((l=s==null?void 0:s.owner)==null?void 0:l.config)??"yo_y_mis_equipos",role:a.role},status:"completadas"}),u=ue.useInfiniteQuery({initialPageParam:1,queryKey:["done_tasks",r],queryFn:({pageParam:d})=>ct({filters:{...r,status:"completadas",...ze(d)},tasks_api:n}),staleTime:1e3*60*60*24,getNextPageParam:(d,m)=>m.length+1});return p.useEffect(()=>{var d;Object.keys(s).length>0&&c({...s,owner:{user:a.id,config:((d=s==null?void 0:s.owner)==null?void 0:d.config)??"yo_y_mis_equipos",role:a.role},status:"completadas"})},[s]),p.useEffect(()=>{e.invalidateQueries({queryKey:["done_tasks",r]})},[r]),p.useEffect(()=>{(async()=>{const m=await n.get("/api/listado_tareas",{params:{...r,status:"completadas",cancelada:!1,...ze(1),justCount:!0,tasks_api:n}});i(m.data.total)})()},[u==null?void 0:u.data,r]),{doneTasks:u,total:o,filtersToSend:r}},Wo=()=>{var s,o;const{doneTasks:e,total:a}=Vo(),n=[...((o=(s=e==null?void 0:e.data)==null?void 0:s.pages)==null?void 0:o.flat())??[]];return t.jsx(dt,{title:"Completadas",tasks:n,loadNextPage:()=>Rt(e),isFetching:e==null?void 0:e.isFetching,total:a})};class it{static toSalesmanUsers(a){return{id:a.id,name:a.nombre}}}const Qo=()=>{const{tasks_api:e}=ge(),{filters:a}=De(),{user:n}=Ne(),s=async()=>(await e.get("/api/obtener-comerciales")).data.map(it.toSalesmanUsers),o=async()=>{var c;return(await e.get("/api/listado_tareas",{params:{...Vt(a),owner:{user:n.id,config:((c=a==null?void 0:a.owner)==null?void 0:c.config)??"yo_y_mis_equipos",role:n.role},justProjects:!0,cancelada:!1}})).data.map(it.toSalesmanUsers)};return{getSalesmanAndProjects:p.useCallback(async(r={})=>{var f;const c={...a,...r},u=(r==null?void 0:r["owner.config"])??((f=a==null?void 0:a.owner)==null?void 0:f.config)??"yo_y_mis_equipos",l={...c};delete l["owner.config"];const d=Vt(l),[m,g]=await Promise.all([e.get("/api/obtener-comerciales"),e.get("/api/listado_tareas",{params:{...d,owner:{user:n==null?void 0:n.id,config:u,role:n.role},justProjects:!0,cancelada:!1}})]);return{salesmanUsers:m.data.map(it.toSalesmanUsers),projects:g.data.map(it.toSalesmanUsers)}},[e,a,n==null?void 0:n.id,n==null?void 0:n.role]),getProjects:o,getSalesmans:s}},Xo=()=>{const{user:e}=Ne(),[a,n]=p.useState([...Qt]),s=[{roles:["Project Manager","Manager","Operation Manager"],id:"owner.config",filters:[{id:"todas",name:"Todas las tareas"}]}];return p.useEffect(()=>{const o=[...Qt];s.forEach(c=>{if(c.roles.includes(e.role)){const u=o.find(l=>l.id===c.id);u&&(u.options.some(d=>d.id==="todas")||(u.options=[{id:"todas",name:"Todas las tareas"},...u.options]))}});const i=JSON.stringify(a),r=JSON.stringify(o);i!==r&&n(o)},[e.role]),{filters:a}},Yo=()=>{const{defineFields:e,initialFilters:a}=De(),{getSalesmanAndProjects:n}=Qo(),{filters:s}=Xo(),o=(a==null?void 0:a["owner.config"])??"yo_y_mis_equipos";return p.useEffect(()=>{let i=!1;return(async()=>{const{salesmanUsers:c,projects:u}=await n({"owner.config":o});i||e(s.map(l=>l.id==="project.id"?{...l,options:u}:l.id==="salesman.id"?{...l,options:c}:l))})(),()=>{i=!0}},[e,s,n,o]),t.jsxs(La,{invalidateAfterBulkSuccess:qo,children:[t.jsx(Wa,{}),t.jsxs("div",{className:"tw-relative tw-flex tw-h-full tw-min-h-[100%] tw-w-full tw-gap-4",children:[t.jsx(Ho,{}),t.jsx(Go,{}),t.jsx(Wo,{})]})]})},Ya=p.createContext({}),Jo=({children:e})=>{const[a,n]=p.useState([]),s=o=>{n(i=>i.includes(o)?i.filter(r=>r!==o):[...i,o])};return t.jsx(Ya.Provider,{value:{selectedTasks:a,selectTask:s},children:e})},Zo=()=>p.useContext(Ya),er=()=>{const e=()=>t.jsxs("div",{className:"tw-flex tw-w-full tw-gap-m",children:[t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-full tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-w-[30%] tw-animate-pulse tw-rounded-md tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-lg tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-lg tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-lg tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-w-[10%] tw-animate-pulse tw-rounded-md tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-lg tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-w-[10%] tw-animate-pulse tw-rounded-md tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-lg tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-[30px] tw-min-h-[30px] tw-w-[30px] tw-min-w-[30px] tw-animate-pulse tw-rounded-lg tw-bg-gray-200"})]});return t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-m",children:[t.jsx(e,{}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-m tw-pl-5",children:[t.jsx(e,{}),t.jsx("div",{className:"tw-pl-5",children:t.jsx(e,{})})]}),t.jsx(e,{}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-m tw-pl-5",children:[t.jsx(e,{}),t.jsx("div",{className:"tw-pl-5",children:t.jsx(e,{})})]})]})},Ja=({startDate:e,endDate:a})=>t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"tw-flex tw-h-[30px] tw-w-fit tw-items-center tw-justify-center tw-gap-s tw-rounded-md tw-bg-gray-100 tw-px-xxxl",children:[t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:we.texts.subtext},color:"current"}),t.jsxs("p",{className:"tw-text-lg",children:[" ",na(e)]})]}),t.jsx(x.Icon,{name:ne.faArrowRight,size:"xs",style:{color:we.texts.DEFAULT},color:"current"}),t.jsxs("div",{className:"tw-flex tw-h-[30px] tw-w-fit tw-items-center tw-justify-center tw-gap-s tw-rounded-md tw-bg-gray-100 tw-px-xxxl",children:[t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:we.texts.subtext},color:"current"}),t.jsxs("p",{className:"tw-text-lg",children:[" ",na(a)]})]})]}),Za=({id:e,priority:a,difficulty:n,endDate:s,atraso:o})=>{const[i,r]=p.useState({priority:!1,difficulty:!1,atraso:!1}),c={0:{title:"N/A",color:we.success.regular,bg:"tw-bg-texts-placeholder tw-border-texts-placeholder",border:"tw-border-success-medium",borderHover:"hover:tw-border-success-dark"},1:{title:"Baja",color:we.success.regular,bg:"tw-bg-success-medium tw-border-success-pastel",border:"tw-border-success-pastel",borderHover:"hover:tw-border-success-dark"},2:{title:"Media",color:we.warning.regular,bg:"tw-bg-warning-light tw-border-warning-regular",border:"tw-border-warning-regular",borderHover:"hover:tw-border-warning-dark"},3:{title:"Alta",color:we.danger.regular,bg:"tw-bg-danger-light tw-border-danger-regular",border:"tw-border-danger-regular",borderHover:"hover:tw-border-danger-dark"}},u={1:{title:"Muy fácil",color:we.success.dark,bg:"tw-bg-success-medium tw-border-success-regular",border:"tw-border-success-medium",borderHover:"hover:tw-border-success-dark"},2:{title:"Fácil",color:we.success.regular,bg:"tw-bg-success-medium tw-border-success-pastel",border:"tw-border-success-medium",borderHover:"hover:tw-border-success-dark"},3:{title:"Media",color:we.warning.regular,bg:"tw-bg-warning-light tw-border-warning-regular",border:"tw-border-warning-medium",borderHover:"hover:tw-border-warning-dark"},4:{title:"Difícil",color:we.danger.regular,bg:"tw-bg-danger-light tw-border-danger-regular",border:"tw-border-danger-medium",borderHover:"hover:tw-border-danger-dark"},5:{title:"Muy difícil",color:we.danger.dark,bg:"tw-bg-danger-light tw-border-danger-regular",border:"tw-border-danger-medium",borderHover:"hover:tw-border-danger-dark"}},l=()=>{if(n==null||Number.isNaN(Number(n)))return 1;const w=Math.trunc(Number(n));return w===0?1:w>=1&&w<=5?w:1},d=()=>{if(a==null||Number.isNaN(Number(a)))return 0;const w=Math.trunc(Number(a));return w>=0&&w<=3?w:0},m=u[l()]??u[1],g=c[d()]??c[0],f=s instanceof Date&&!Number.isNaN(s.getTime())?`${s.getDate()} ${Ft(s.getMonth()).slice(0,3)}`:"—";return t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:"tw-flex tw-h-[30px] tw-w-[30px] tw-items-center tw-justify-center tw-gap-s tw-rounded-[8px] tw-bg-gray-100 hover:tw-bg-gray-200",children:t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faAlignCenter,size:"xs",style:{color:we.texts.subtext},color:"current"}),children:t.jsx("p",{className:"tw-font-regular tw-rounded-lg tw-bg-bg-card tw-px-4 tw-py-2 tw-text-2xl",style:{color:"gray"},children:"Espéralo muy pronto..."})})}),t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx("div",{onMouseEnter:()=>r({...i,difficulty:!0}),onMouseLeave:()=>r({...i,difficulty:!1}),className:`tw-gap-s ${m.border} ${m.borderHover} transition-all duration-300 tw-flex tw-h-[30px] tw-w-[30px] tw-items-center tw-justify-center
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
tw-border tw-border-danger-medium tw-shadow-[0px_0px_2px_0px_rgba(37,37,37,0.10)] hover:tw-border-danger-dark`,children:t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faTriangleExclamation,size:"xs",style:{color:i.atraso?we.danger.dark:we.danger.regular},color:"current"}),children:t.jsx("p",{className:"tw-font-regular tw-rounded-lg tw-bg-bg-card tw-p-5 tw-text-sm",style:{color:we.danger.dark},children:o==null?void 0:o.motivo})})}),t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:we.texts.subtext},color:"current"}),t.jsx("p",{className:"tw-font-regular tw-text-xl tw-text-texts-subtext",children:f})]})]})},tr=({id:e})=>{const{selectedTasks:a,selectTask:n}=Zo();return t.jsxs(t.Fragment,{children:[t.jsx("label",{className:"tw-flex tw-h-[20px] tw-w-[20px] tw-cursor-pointer tw-items-center tw-justify-center tw-rounded-md tw-border-2 tw-border-gray-200",htmlFor:e.toString(),children:t.jsx("span",{className:`${a.includes(e)?"tw-opacity-100":"tw-opacity-0"} tw-transition-opacity tw-duration-500`,children:t.jsx(x.Icon,{name:ne.faCheck,size:"xs",style:{color:we.primary.regular},color:"current"})})}),t.jsx("input",{className:"tw-hidden",id:e.toString(),type:"checkbox",onChange:()=>n(e)})]})},es=({task:e})=>t.jsx(Ie,{trigger:t.jsx("p",{className:"tw-max-w-[400px] tw-truncate tw-text-xl tw-text-texts-subtext",children:e}),children:t.jsx("div",{className:"tw-max-w-[400px] tw-p-2 tw-text-xl tw-text-texts-subtext",children:e})}),ar=({id:e})=>{var d,m,g,f,w;const[a,n]=p.useState(!1),{tasksProject:s}=Ye(),{reasignResponsible:o}=Ue(),{getOBPUrlApi:i}=ge(),r=(d=s==null?void 0:s.data)==null?void 0:d.find(b=>b.id===e),[c,u]=p.useState(null),{user:l}=Ne();return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tw-border-b tw-border-gray-200 tw-pb-3",children:t.jsxs("div",{className:"tw-mb-3 tw-ml-[30px] tw-mt-1 tw-flex tw-flex-wrap tw-items-center tw-gap-xl tw-rounded-md tw-p-2 hover:tw-bg-gray-100",onMouseEnter:()=>{u(e)},onMouseLeave:()=>u(null),onClick:()=>n(!0),children:[!(r!=null&&r.nameRequiredTask)||(r==null?void 0:r.nameRequiredTask)!==""&&(r==null?void 0:r.statusRequiredTask)===2&&t.jsx(tr,{id:e}),t.jsx(Ha,{id:e,idAtraso:(m=r==null?void 0:r.atraso)==null?void 0:m.atrasoId,nameRequiredTask:(r==null?void 0:r.nameRequiredTask)??"",status:r==null?void 0:r.status,statusRequiredTask:(r==null?void 0:r.statusRequiredTask)??0,nameRequiredTaskResponsible:r==null?void 0:r.nameRequiredTaskResponsible},e),(r==null?void 0:r.willBePaused)&&t.jsx(Va,{idTask:r.id,paused:r.paused,popupId:`child-task-pause-menu-${r.id}`,children:b=>t.jsx(x.Button,{ref:b,color:"tertiary",icon:r!=null&&r.paused?ne.faPause:ne.faPlay,className:"tw-font-regular tw-flex tw-items-center tw-gap-2 tw-text-sm tw-text-gray-400",size:"xs"})}),t.jsx(za,{role:l==null?void 0:l.role,status:r==null?void 0:r.status,onClick:async(b,j)=>{await o({idNewResponsible:b,id:e,typeOfSelect:j})},responsible:r==null?void 0:r.responsible,users:((g=r==null?void 0:r.users)==null?void 0:g.map(b=>Mt(b,i())))??[]}),t.jsx(es,{task:(r==null?void 0:r.task)??""}),t.jsx(Za,{id:e,priority:r==null?void 0:r.priority,difficulty:r.difficulty,endDate:r==null?void 0:r.endDate,atraso:r==null?void 0:r.atraso}),t.jsx(Ja,{startDate:r==null?void 0:r.startDate,endDate:r==null?void 0:r.endDate}),c===e&&t.jsx("div",{className:"tw-flex tw-h-[30px] tw-items-center tw-justify-center tw-gap-2 tw-rounded-[12px] tw-rounded-md tw-bg-silver-silver_dark tw-p-[4px]",children:(r==null?void 0:r.status)!==2&&t.jsx("div",{onClick:b=>{b.stopPropagation()},children:t.jsx(Ua,{id:e,nameRequiredTask:r.nameRequiredTask,status:r.status,statusRequiredTask:r.statusRequiredTask,projectID:(f=s==null?void 0:s.data)==null?void 0:f.id,atrasoId:(w=r==null?void 0:r.atraso)==null?void 0:w.atrasoId,categoria:r==null?void 0:r.categoria})})})]})}),t.jsx(Ka,{taskId:e,isOpen:a,setIsOpen:n})]})},ts=({id:e})=>{var c,u,l,d,m,g;const{tasksProject:a,openTasks:n,openTask:s}=Ye(),o=(c=a==null?void 0:a.data)==null?void 0:c.find(f=>f.id===e),r=(()=>{var b;const f=a==null?void 0:a.data,w=[];return(b=o==null?void 0:o.tasks)==null||b.forEach(j=>{const y=f.find(h=>h.id===(j==null?void 0:j.id));y&&w.push(y)}),w})();return o?t.jsxs("div",{className:"tw-mb-2 tw-flex tw-flex-col tw-gap-m tw-overflow-y-auto",children:[t.jsxs("div",{className:"tw-flex tw-cursor-pointer tw-flex-wrap tw-items-center tw-gap-m tw-rounded-md tw-p-2 hover:tw-bg-silver-silver_light",onClick:()=>s(e),children:[t.jsx("button",{type:"button",className:`${n.includes(e)?"":"tw--rotate-90"} tw-transition-all tw-duration-300`,children:t.jsx(x.Icon,{name:ne.faChevronDown,size:"sm",style:{color:we.texts.subtext},color:"current"})}),t.jsx("div",{className:"tw-mx-1 tw-flex tw-h-[28px] tw-min-h-[28px] tw-w-fit tw-min-w-[28px] tw-items-center tw-justify-center tw-rounded-full tw-bg-primary-medium",children:t.jsx("p",{className:"tw-text-primary tw-text-xl",children:((u=o==null?void 0:o.tasks)==null?void 0:u.length)===0?1:r.length})}),t.jsx(es,{task:(o==null?void 0:o.task)??""}),t.jsx(Za,{id:e,priority:o==null?void 0:o.priority,difficulty:o==null?void 0:o.difficulty,endDate:o==null?void 0:o.endDate,atraso:o==null?void 0:o.atraso}),t.jsx(Ja,{startDate:o==null?void 0:o.startDate,endDate:o==null?void 0:o.endDate}),t.jsxs("button",{type:"button",className:"tw-flex tw-h-[30px] tw-w-fit tw-items-center tw-justify-center tw-gap-s tw-rounded-md tw-bg-gray-100 tw-px-m hover:tw-bg-gray-200",children:[t.jsx(x.Icon,{name:ne.faDiagramSubtask,size:"sm",style:{color:we.texts.subtext},color:"current"}),t.jsx("p",{className:"tw-text-xl",children:((l=o==null?void 0:o.tasks)==null?void 0:l.length)===0?1:(d=o==null?void 0:o.tasks)==null?void 0:d.length})]})]}),n.includes(e)&&t.jsx("div",{className:"tw-ml-[30px]",children:((m=o==null?void 0:o.tasks)==null?void 0:m.length)>0?(g=o==null?void 0:o.tasks)==null?void 0:g.map(f=>t.jsx(ts,{id:f==null?void 0:f.id})):t.jsx(ar,{id:o==null?void 0:o.id})})]}):null},sr=()=>{var s;const{tasksProject:e,projectID:a}=Ye();if(e!=null&&e.isFetching||e!=null&&e.isLoading)return t.jsx(er,{});let n=[...(s=e==null?void 0:e.data)==null?void 0:s.filter(o=>o.isPrincipalTask)];return t.jsx("div",{className:"tw-flex tw-flex-col tw-gap-m",children:t.jsx(Jo,{project:a,children:n==null?void 0:n.sort((o,i)=>o.orden-i.orden).map(o=>t.jsx("div",{className:"tw-flex tw-flex-col tw-gap-m tw-border-b tw-border-gray-200 tw-pb-m ",children:t.jsx(ts,{id:o.id})}))})})};function nr({title:e,color:a,icon:n}){return t.jsxs("div",{className:"ui-flex ui-items-center ui-gap-x-8",children:[t.jsx(x.Icon,{name:n,size:"md",colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotoneSecondary:.5}),t.jsx("p",{className:"ui-text-base ui-py-0.5 ui-font-body-sm-bold ui-text-body-sm-bold ui-leading-none ui-text-primary",children:e})]})}function or({value:e,onChange:a}){return t.jsxs("div",{className:"ui-flex ui-items-center ui-gap-x-4",children:[t.jsx("label",{className:"ui-text-body-sm-bold ui-text-primary",children:"Nombre del equipo"}),t.jsx(x.Input,{size:"xs",placeholder:"Creative",value:e,onChange:n=>a(n.target.value)})]})}const as=({title:e})=>t.jsxs("div",{className:"flex-1 tw-flex tw-items-center tw-gap-x-4",children:[t.jsx(x.Icon,{background:!0,name:ne.faFilePen,color:"blue",size:"lg"}),t.jsx("h1",{className:"tw-text-[24px] tw-font-bold tw-leading-none",children:e})]}),Ke={search:"",debouncedSearch:"",filters:[]},rr={"kanban-general":{...Ke},"lista-campanias":{...Ke},"kanban-campania":{...Ke},"teams-container":{...Ke},"templates-container":{...Ke}},ut=$e.create((e,a)=>({viewFilters:rr,currentPath:null,debounceTimeouts:{},setCurrentPath:n=>{const s=a().currentPath;e({currentPath:n}),s&&s!==n&&a().resetPathData(s)},setSearch:(n,s)=>{const o=s||a().currentPath;if(!o)return;const i=`search_${o}`,r=a().debounceTimeouts[i];r&&clearTimeout(r),e(u=>({viewFilters:{...u.viewFilters,[o]:{...u.viewFilters[o],search:n}}}));const c=setTimeout(()=>{e(u=>({viewFilters:{...u.viewFilters,[o]:{...u.viewFilters[o],debouncedSearch:n}},debounceTimeouts:{...u.debounceTimeouts,[i]:void 0}}))},500);e(u=>({debounceTimeouts:{...u.debounceTimeouts,[i]:c}}))},setFilters:(n,s)=>{const o=s||a().currentPath;o&&e(i=>({viewFilters:{...i.viewFilters,[o]:{...i.viewFilters[o],filters:n}}}))},getSearch:n=>{var o;const s=n||a().currentPath;return s&&((o=a().viewFilters[s])==null?void 0:o.search)||""},getDebouncedSearch:n=>{var o;const s=n||a().currentPath;return s&&((o=a().viewFilters[s])==null?void 0:o.debouncedSearch)||""},getFilters:n=>{var o;const s=n||a().currentPath;return s?((o=a().viewFilters[s])==null?void 0:o.filters)||[]:[]},resetPathData:n=>{const s=`search_${n}`,o=a().debounceTimeouts[s];o&&clearTimeout(o),e(i=>({viewFilters:{...i.viewFilters,[n]:{...Ke}},debounceTimeouts:{...i.debounceTimeouts,[s]:void 0}}))}}));function ss({path:e}){const{getSearch:a,setSearch:n}=ut(),s=a(e);return t.jsx(x.Input,{leftSlot:ne.faSearch,placeholder:"Buscar...",size:"xs",value:s,onChange:o=>n(o.target.value,e)})}const pa={fase_plantilla:"",tipo_plantilla:"",modo_configuracion:"",categoria:"",formato_salida:"",tipo_medio:"",medio_especifico:"",responsable_impresion:"",pertenencia_medio:"",ubicacion_medio:""},ir={fase_plantilla:null,tipo_plantilla:null,modo_configuracion:null,categoria:null,formato_salida:null,tipo_medio:null,medio_especifico:null,responsable_impresion:null,pertenencia_medio:null,ubicacion_medio:null},lr={fase_plantilla:"",tipo_plantilla:"",categoria:"",tipo_medio:"",medio_especifico:"",modo_configuracion:"",responsable_impresion:"",pertenencia_medio:"",ubicacion_medio:""},ma={tipo_plantilla:!0,modo_configuracion:!0,categoria:!0,formato_salida:!0,tipo_medio:!0,medio_especifico:!0,responsable_impresion:!0,pertenencia_medio:!0,ubicacion_medio:!0},Fe=$e.create(e=>({path:"",viewMode:"grid",isOpenModalLimit:!1,template:null,clave:"XX-XXX-XX-XXX-XX-X-X",templateFormData:pa,disabledFields:ma,claveParams:lr,paramsTipo:ir,isEditTemplate:!1,openModalCreateTemplate:!1,currentTemplateForEdit:null,refetch:null,openModalUnsavedChanges:!1,isDuplicateTemplate:!1,hasFormChanges:!1,openModalPublishTemplate:!1,currentTemplateId:null,openModalDeleteTemplate:!1,setPath:a=>e({path:a}),setViewMode:a=>e({viewMode:a}),setIsOpenModalLimit:a=>e({isOpenModalLimit:a}),setTemplate:a=>e({template:a}),setClave:a=>e({clave:a}),setTemplateFormData:a=>{e(n=>({templateFormData:{...n.templateFormData,...a}}))},resetTemplateFormData:()=>e({templateFormData:pa}),setDisableField:({fields:a,value:n})=>{for(const s of a)e(o=>({disabledFields:{...o.disabledFields,[s]:n}}))},resetDisabledFields:()=>e({disabledFields:ma}),setClaveParams:({field:a,value:n})=>{e(s=>({claveParams:{...s.claveParams,[a]:n}}))},resetClave:()=>e(a=>({clave:"XX-XXX-XX-XXX-XX-X-X"})),setParamTipo:a=>e(n=>({paramsTipo:{...n.paramsTipo,...a}})),setIsEditTemplate:a=>e({isEditTemplate:a}),setOpenModalCreateTemplate:a=>e({openModalCreateTemplate:a}),setCurrentTemplateForEdit:a=>e({currentTemplateForEdit:a}),setRefetch:a=>e({refetch:a}),setOpenModalUnsavedChanges:a=>e({openModalUnsavedChanges:a}),setIsDuplicateTemplate:a=>e({isDuplicateTemplate:a}),setHasFormChanges:a=>e({hasFormChanges:a}),setOpenModalPublishTemplate:a=>e({openModalPublishTemplate:a}),setCurrentTemplateId:a=>e({currentTemplateId:a}),setOpenModalDeleteTemplate:a=>e({openModalDeleteTemplate:a})})),ns=e=>{const{getSearch:a,getDebouncedSearch:n,setSearch:s,getFilters:o,setFilters:i,resetPathData:r}=ut();return{search:a(e),debouncedSearch:n(e),filters:o(e),setSearch:c=>s(c,e),setFilters:c=>i(c,e),resetData:()=>r(e)}},cr=()=>t.jsx(as,{title:"Flujos de trabajo"}),Le=$e.create(e=>({activeTemplate:null,setActiveTemplate:a=>e({activeTemplate:a}),clearActiveTemplate:()=>e({activeTemplate:null})})),_e=$e.create((e,a)=>({mode:"grid",id:null,setMode:(n,s)=>{const o=a();if(n==="grid"||o.id!==null&&o.id!==s){const{clearAllGroupData:r}=a();r()}e({mode:n,id:s??null})},setId:n=>e({id:n}),reset:()=>{const{clearAllGroupData:n}=a();n(),e({mode:"grid",id:null})},addNode:null,addBranch:null,addNodeFromHandle:null,addNodeWithType:null,savePositions:null,loadPositions:null,clearPositions:null,activePlusNode:null,templateViewModes:{},setViewMode:(n,s)=>{const{templateViewModes:o}=a();e({templateViewModes:{...o,[n]:s}})},getViewMode:n=>{const{templateViewModes:s}=a();return s[n]??"readonly"},clearViewMode:n=>{const{templateViewModes:s}=a(),o={...s};delete o[n],e({templateViewModes:o})},expandedGroups:new Set,groupTemplateData:{},toggleGroupExpansion:n=>{const{expandedGroups:s}=a(),o=new Set(s);o.has(n)?o.delete(n):o.add(n),e({expandedGroups:o})},setGroupTemplateData:(n,s)=>{const{groupTemplateData:o}=a();e({groupTemplateData:{...o,[n]:s}})},clearGroupTemplateData:n=>{const{groupTemplateData:s}=a(),o={...s};delete o[n],e({groupTemplateData:o})},clearAllGroupData:()=>{e({expandedGroups:new Set,groupTemplateData:{}})},copiedNodes:[],setCopiedNodes:n=>e({copiedNodes:n}),clearCopiedNodes:()=>e({copiedNodes:[]}),expandGroup:null,collapseGroup:null})),os=()=>{const{tasks_api:e}=ge();return{getTemplateWithTasks:async n=>{var s;try{const o=Pe.stringify({filters:{plantilla:{id:n}}},{encodeValuesOnly:!0}),i=await e.get(`/api/plantillas/plantilla-tareas-grafico?${o}`);if(i.data&&i.data.data)return i.data.data;throw new Error(`No se encontraron datos para la plantilla con ID ${n}`)}catch(o){throw console.error("Error en getTemplateWithTasks:",{error:o.message,status:(s=o.response)==null?void 0:s.status}),o}}}},je={DIRTY:"dirty",IDLE:"idle",NEW:"new"},Ee={DRAFT:"draft",PUBLISHED:"published",DELETED:"deleted"},Ge="templates",Ve="templates_states";function dr(e,a){return $e.create((n,s)=>{let o=null;const i=m=>n({isLoading:m}),r=m=>n({error:m}),c=m=>n({data:m}),u=()=>new Promise((m,g)=>{const f=indexedDB.open(e.name,e.version);f.onerror=()=>{r("Error al abrir la base de datos"),g(new Error("Error al abrir la base de datos"))},f.onsuccess=()=>{o=f.result,n({isConnected:!0,error:null}),m(o)},f.onupgradeneeded=w=>{const b=w.target.result;e.stores.forEach(j=>{var y;if(!b.objectStoreNames.contains(j.name)){const h=b.createObjectStore(j.name,{keyPath:j.keyPath,autoIncrement:j.autoIncrement??!1});(y=j.indexes)==null||y.forEach(_=>{h.createIndex(_.name,_.keyPath,_.options)})}})}}),l=(m="readonly")=>{if(!o)throw new Error("Base de datos no conectada");return o.transaction(a,m)},d=(m="readonly")=>l(m).objectStore(a);return{data:[],isLoading:!1,error:null,isConnected:!1,connect:async()=>{try{i(!0),r(null),await u(),await s().getAll()}catch(m){r(m instanceof Error?m.message:"Error desconocido")}finally{i(!1)}},disconnect:()=>{o&&(o.close(),o=null,n({isConnected:!1,data:[]}))},add:async m=>{try{i(!0),r(null);const g=d("readwrite");return new Promise((f,w)=>{const b=g.add(m);b.onsuccess=async()=>{await s().getAll(),f()},b.onerror=()=>{r("Error al agregar elemento"),w(new Error("Error al agregar elemento"))}})}finally{i(!1)}},addMany:async m=>{try{i(!0),r(null);const g=d("readwrite");return new Promise((f,w)=>{let b=0,j=!1;m.forEach(y=>{const h=g.add(y);h.onsuccess=()=>{b++,b===m.length&&!j&&s().getAll().then(()=>f())},h.onerror=()=>{j||(j=!0,r("Error al agregar elementos"),w(new Error("Error al agregar elementos")))}})})}finally{i(!1)}},get:async m=>{try{r(null);const g=d();return new Promise((f,w)=>{const b=g.get(m);b.onsuccess=()=>{f(b.result)},b.onerror=()=>{r("Error al obtener elemento"),w(new Error("Error al obtener elemento"))}})}catch(g){r(g instanceof Error?g.message:"Error desconocido");return}},getAll:async()=>{try{r(null);const m=d();return new Promise((g,f)=>{const w=m.getAll();w.onsuccess=()=>{const b=w.result;c(b),g(b)},w.onerror=()=>{r("Error al obtener elementos"),f(new Error("Error al obtener elementos"))}})}catch(m){return r(m instanceof Error?m.message:"Error desconocido"),[]}},update:async(m,g)=>{try{i(!0),r(null);const f=d("readwrite");return new Promise((w,b)=>{const j=f.get(m);j.onsuccess=()=>{const y=j.result;if(!y){r("Elemento no encontrado"),b(new Error("Elemento no encontrado"));return}const h={...y,...g},_=f.put(h);_.onsuccess=async()=>{await s().getAll(),w()},_.onerror=()=>{r("Error al actualizar elemento"),b(new Error("Error al actualizar elemento"))}},j.onerror=()=>{r("Error al obtener elemento para actualizar"),b(new Error("Error al obtener elemento para actualizar"))}})}finally{i(!1)}},delete:async m=>{try{i(!0),r(null);const g=d("readwrite");return new Promise((f,w)=>{const b=g.delete(m);b.onsuccess=async()=>{await s().getAll(),f()},b.onerror=()=>{r("Error al eliminar elemento"),w(new Error("Error al eliminar elemento"))}})}finally{i(!1)}},clear:async()=>{try{i(!0),r(null);const m=d("readwrite");return new Promise((g,f)=>{const w=m.clear();w.onsuccess=()=>{c([]),g()},w.onerror=()=>{r("Error al limpiar store"),f(new Error("Error al limpiar store"))}})}finally{i(!1)}},query:async(m,g)=>{try{r(null);const w=d().index(m);return new Promise((b,j)=>{const y=w.getAll(g);y.onsuccess=()=>{b(y.result)},y.onerror=()=>{r("Error en consulta"),j(new Error("Error en consulta"))}})}catch(f){return r(f instanceof Error?f.message:"Error desconocido"),[]}},queryRange:async(m,g,f)=>{try{r(null);const b=d().index(m);return new Promise((j,y)=>{const h=IDBKeyRange.bound(g,f),_=b.getAll(h);_.onsuccess=()=>{j(_.result)},_.onerror=()=>{r("Error en consulta por rango"),y(new Error("Error en consulta por rango"))}})}catch(w){return r(w instanceof Error?w.message:"Error desconocido"),[]}}}})}const xt=new Map;function fa(e,a,n=!0){const s=p.useMemo(()=>{const _=`${e.name}-${a}`;if(!xt.has(_)){const M=dr(e,a);xt.set(_,M)}return xt.get(_)},[e.name,a]);p.useEffect(()=>{n&&!s.getState().isConnected&&s.getState().connect()},[n,s]);const o=s(_=>_.data),i=s(_=>_.isLoading),r=s(_=>_.error),c=s(_=>_.isConnected),u=p.useCallback(()=>s.getState().connect(),[s]),l=p.useCallback(()=>s.getState().disconnect(),[s]),d=p.useCallback(_=>s.getState().add(_),[s]),m=p.useCallback(_=>s.getState().addMany(_),[s]),g=p.useCallback(_=>s.getState().get(_),[s]),f=p.useCallback(()=>s.getState().getAll(),[s]),w=p.useCallback((_,M)=>s.getState().update(_,M),[s]),b=p.useCallback(_=>s.getState().delete(_),[s]),j=p.useCallback(()=>s.getState().clear(),[s]),y=p.useCallback((_,M)=>s.getState().query(_,M),[s]),h=p.useCallback((_,M,F)=>s.getState().queryRange(_,M,F),[s]);return{data:o,isLoading:i,error:r,isConnected:c,connect:u,disconnect:l,add:d,addMany:m,get:g,getAll:f,update:w,delete:b,clear:j,query:y,queryRange:h}}const rs=p.createContext(void 0);function ur({children:e}){const[a,n]=p.useState(!1),[s,o]=p.useState(!0),[i,r]=p.useState(null),c={name:"template_tabs_v1",version:2,stores:[{name:Ge,keyPath:"id",autoIncrement:!1,indexes:[{name:"id",keyPath:"id",options:{unique:!0}}]},{name:Ve,keyPath:"id",autoIncrement:!1,indexes:[{name:"id",keyPath:"id",options:{unique:!0}}]}]},u=fa(c,Ge,!0),l=fa(c,Ve,!0),d=p.useRef(new Map);d.current.has(Ge)||d.current.set(Ge,u),d.current.has(Ve)||d.current.set(Ve,l);const m=u.isConnected,g=u.error;p.useEffect(()=>{d.current.set(Ge,u),d.current.set(Ve,l)},[u,l]);const f=p.useCallback(b=>{const j=d.current.get(b);if(!j)throw new Error(`Store ${b} no encontrado. Asegúrate de que esté configurada en indexedDBConfig.`);return{data:j.data,isLoading:j.isLoading,add:j.add,addMany:j.addMany,get:j.get,getAll:j.getAll,update:j.update,delete:j.delete,clear:j.clear,query:j.query,queryRange:j.queryRange,error:j.error}},[]);p.useEffect(()=>{(async()=>{try{if(o(!0),r(null),await u.connect(),m)n(!0);else throw new Error("No se pudo establecer la conexión con IndexedDB")}catch(j){r(j instanceof Error?j.message:"Error desconocido")}finally{o(!1)}})()},[u.connect,m]),p.useEffect(()=>{g&&r(g)},[g]);const w={isInitialized:a,isInitializing:s,error:i,isConnected:m,getStore:f};return t.jsx(rs.Provider,{value:w,children:e})}function is(){const e=p.useContext(rs);if(e===void 0)throw new Error("useIndexedDBContext debe usarse dentro de IndexedDBProvider");return e}function zt(){const{getStore:e}=is();return e(Ge)}function ls(){const{add:e}=zt(),a=async r=>{try{await e(r)}catch(c){console.error("Error al guardar plantilla a indexDB:",c)}},n=async r=>{const c={},u=l=>{l.id&&(c[l.id]=l),l.tareas&&Array.isArray(l.tareas)&&l.tareas.forEach(d=>{u(d)}),l.ids_t_dependientes&&Array.isArray(l.ids_t_dependientes)&&l.ids_t_dependientes.forEach(d=>{typeof d=="object"&&d.id&&u(d)}),l.plantilla_dependents&&Array.isArray(l.plantilla_dependents)&&l.plantilla_dependents.forEach(d=>{d.tarea_plantillas&&Array.isArray(d.tarea_plantillas)&&d.tarea_plantillas.forEach(m=>{u(m)})})};return r.tarea_plantillas.forEach(l=>{u(l)}),c},s=(r,c)=>{const u=c[r];if(!u)return[];const l=[u];return u.tareas&&Array.isArray(u.tareas)&&u.tareas.forEach(d=>{d.id&&l.push(...s(d.id,c))}),u.ids_t_dependientes&&Array.isArray(u.ids_t_dependientes)&&u.ids_t_dependientes.forEach(d=>{typeof d=="object"&&d.id?l.push(...s(d.id,c)):typeof d=="number"&&c[d]&&l.push(...s(d,c))}),l},o=(r,c)=>{const u=c[r];if(!u)return[];const l=[u];return u.tarea_padre&&c[u.tarea_padre]&&l.unshift(...o(u.tarea_padre,c)),l};return{hydrateTasks:async r=>{var l,d;const c=await n(r);return(d=(l=r==null?void 0:r.graph_layout)==null?void 0:l.snapshot)==null?void 0:d.nodes.map(m=>{if(m.type==="group")return{...m,data:{...m.data,type:"template"},type:"group",selected:!1};const g=m.data.tareaId?c[m.data.tareaId]:r;return g!=null&&g.start?{...m,data:{...g.plantilla,id:g.id},selected:!1}:{...m,data:{...g,type:"task"},selected:!1}})},initializeTemplateStore:a,indexedTasks:n,getTaskHierarchy:s,getTaskPath:o}}function cs(){const{getStore:e}=is();return e(Ve)}const st=()=>{const{add:e,get:a,delete:n,update:s}=cs(),{get:o}=zt(),i={created:[],updated:[],deleted:[]},r=async({templateId:f})=>{const w=await a(f);return w||null};return{addTaskToState:async({task:f})=>{const w=await r({templateId:f.plantilla.id}),b=await o(f.plantilla.id);if(console.log("🔄 template:",b),!w)e({...i,id:f.plantilla.id,created:[...i.created,f]});else{const j=w.created.findIndex(y=>y.id===f.id);if(j!==-1){const y=w.created[j];w.created[j]={...y,...f},await s(f.plantilla.id,w)}else w.created.push(f),await s(f.plantilla.id,w)}},getTaskFromState:r,removeTemplateStates:async f=>{await n(f)},updateTaskInState:async({task:f})=>{const w=await r({templateId:f.plantilla.id}),j=(await o(f.plantilla.id)).graph_layout.snapshot.nodes;if(console.log("🔄 nodes:",j),w){const y=w.updated.findIndex(h=>h.id===f.id);if(y!==-1){const h=w.updated[y];console.log("🔄 currentTask:",h),w.updated[y]={...h,...f}}else w.updated.push(f);await s(f.plantilla.id,w)}else e({...i,id:f.plantilla.id,updated:[...i.updated,f]})},removeTaskFromState:async({templateId:f,id:w})=>{const b=await r({templateId:f});if(b){if(w>0){const y=b.deleted.findIndex(h=>h===w);if(y!==-1){b.deleted.splice(y,1),await s(f,b);return}}const j=b.created.findIndex(y=>y.id===w);if(j!==-1){b.created.splice(j,1),await s(f,b);return}}else if(w>0){e({...i,id:f,deleted:[...i.deleted,w]});return}},removeParentIdFromNodes:async({templateId:f,id:w})=>{const b=await r({templateId:f});if(b){const j=b.created.findIndex(h=>h.id===w);if(j!==-1){b.created[j].tarea_padre=null,b.created[j].id_t_requerida=null,await s(f,b);return}const y=b.updated.findIndex(h=>h.id===w);if(y!==-1){b.updated[y].tarea_padre=null,b.updated[y].id_t_requerida=null,await s(f,b);return}}},updateNodeWithNewEdge:async({templateId:f,edge:w,task:b})=>{console.log("🔵 updateNodeWithNewEdge - Inicio",{templateId:f,taskId:b.id,taskData:b});const j=await r({templateId:f});if(console.log("🔵 updateNodeWithNewEdge - Estado actual:",j),j){console.log("🔵 updateNodeWithNewEdge - Estado existe, buscando tarea...");const y=j.created.findIndex(_=>_.id===b.id);if(console.log("🔵 updateNodeWithNewEdge - Índice en created:",y),y!==-1){console.log("🔵 updateNodeWithNewEdge - Actualizando en created"),j.created[y]=b,await s(f,j),console.log("✅ updateNodeWithNewEdge - Actualizado en created");return}const h=j.updated.findIndex(_=>_.id===b.id);if(console.log("🔵 updateNodeWithNewEdge - Índice en updated:",h),h!==-1){console.log("🔵 updateNodeWithNewEdge - Actualizando en updated"),j.updated[h]=b,await s(f,j),console.log("✅ updateNodeWithNewEdge - Actualizado en updated");return}if(console.log("🔵 updateNodeWithNewEdge - Tarea no encontrada en arrays"),b.id&&b.id!==0){const _=b.id<0;_?(console.log("🔵 updateNodeWithNewEdge - Agregando a created (tarea nueva)"),j.created.push(b)):(console.log("🔵 updateNodeWithNewEdge - Agregando a updated (tarea existente)"),j.updated.push(b)),await s(f,j),console.log("✅ updateNodeWithNewEdge - Tarea agregada exitosamente a",_?"created":"updated")}else console.error("❌ updateNodeWithNewEdge - task.id no válido para agregar:",b.id)}else if(console.log("🔵 updateNodeWithNewEdge - Creando nuevo estado"),b.id&&b.id!==0){const y=b.id<0,h={...i,id:f,created:y?[b]:[],updated:y?[]:[b]};console.log("🔵 updateNodeWithNewEdge - Nuevo estado:",h,y?"(created)":"(updated)"),e(h),console.log("✅ updateNodeWithNewEdge - Estado creado exitosamente")}else console.error("❌ updateNodeWithNewEdge - task.id no válido:",b.id);console.log("🔵 updateNodeWithNewEdge - Fin")}}};function Be(){const{activeTemplate:e,setActiveTemplate:a}=Le(),{mode:n,setMode:s,setViewMode:o,clearViewMode:i}=_e(),{template:r,setIsOpenModalLimit:c,setOpenModalUnsavedChanges:u,setOpenModalPublishTemplate:l,setOpenModalDeleteTemplate:d}=Fe(),{hydrateTasks:m}=ls(),{addTaskToState:g,removeTemplateStates:f}=st(),w=ue.useQueryClient(),{data:b,add:j,update:y,get:h,getAll:_,delete:M,isLoading:F,error:q}=zt(),{get:T}=cs(),{getTemplateWithTasks:D}=os(),{tasks_api:v}=ge(),[U,K]=p.useState(!1),[J,H]=p.useState(!1),[O,S]=p.useState(!1),B=p.useMemo(()=>b.sort((C,$)=>C.order-$.order),[b]);p.useEffect(()=>{B.length===0&&n!=="grid"&&s("grid")},[B,n,s]);const k=async(P,C=je.IDLE)=>{var $;try{const L=await D(P.id),N=await m(L),V={id:crypto.randomUUID(),data:L,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},Y=N||[V],ae={...L,graph_layout:{...L==null?void 0:L.graph_layout,snapshot:{...($=L==null?void 0:L.graph_layout)==null?void 0:$.snapshot,nodes:Y}},estatus:C,estatusFromStrapi:L.estatus};await j(ae)}catch(L){console.warn("No se pudieron obtener los datos completos de la plantilla, creando versión básica:",L);const N=P,V={id:crypto.randomUUID(),data:N,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},Y={id:N.id,snapshot:{nodes:[V],edges:[],viewport:{x:0,y:0,zoom:1}},history:null,zoom:1,position:{x:0,y:0}},ae={...N,graph_layout:N.graph_layout||Y,estatus:C,tarea_plantillas:N.tarea_plantillas||[]};await j(ae)}},R=async({template:P,checkTemplateInIndexedDB:C=!1,statusTemplate:$=je.IDLE})=>{const L=B;if(!L.find(V=>V.id===P.id)){if(L.length===5){c(!0);return}if(C&&await h(P.id))return;await k({...P,order:L.length+1},$)}await W(P.id),await ee(P),s("create-edit",P==null?void 0:P.id)},ee=async P=>{const C=await h(P.id);a(C)},W=async P=>{try{let C=await _();C.sort((L,N)=>(L.order||0)-(N.order||0));const $=C.findIndex(L=>L.id===P);if($!==-1){const[L]=C.splice($,1);C.unshift(L),C.forEach((V,Y)=>{V.order=Y+1});const N=C.map(V=>y(V.id,V));await Promise.all(N)}else return}catch{}},re=async P=>{try{await M(P),i(P);const C=await _();C.forEach((L,N)=>{L.order=N+1});const $=C.map(L=>y(L.id,L));await Promise.all($)}catch{}};return{screens:B,isLoading:F,error:q,add:j,data:b,addScreen:k,openTemplate:R,update:y,delete:re,get:h,activeTemplate:e,activateTemplate:ee,reorderingTemplates:W,replaceTemplate:async()=>{try{const P=[...B],C={...P[P.length-1]};await M(C.id);const $={...r,order:C.order};await k($);const N=(await _()).sort((Y,ae)=>Y.order-ae.order);if(N.some((Y,ae)=>(Y.order||0)!==ae+1)){const Y=N.map((ae,le)=>({...ae,order:le+1}));for(const ae of Y)try{await y(ae.id,ae)}catch{}}}catch{}finally{c(!1)}},addTaskUpdatingTemplate:async(P,C,$="hija")=>{var Y,ae,le,X;const L=await h(C);if(!L)return null;const N={id:P.id,uuid:crypto.randomUUID(),reference_graph:P.reference_graph,texto_corto:P.title,texto_largo:P.description||"",prioridad:P.priority||null,nivel_dificultad:P.difficulty||1,duracion:P.duration||null,start:!1,type:"task",equipo:{id:Number(P.team)||null},responsable:{id:Number(P.responsible)||null},plantilla:{id:L.id,clave:L.clave,categoria:L.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:[],id_t_requerida:$==="dependiente"?(ae=(Y=P.parent)==null?void 0:Y.data)==null?void 0:ae.id:null,ids_t_dependientes:[],tarea_padre:$==="hija"?(X=(le=P.parent)==null?void 0:le.data)==null?void 0:X.id:null,tareas:[]},V={...L,estatus:je.DIRTY};return await y(C,V),e&&e.id===C&&a(V),await g({task:N}),N},addTemplateUpdatingTemplate:async(P,C,$,L="hija")=>{let N=null;if(e&&e.id===C?N=e:N=await h(C),!N)return null;const V=(ae,le,X,se)=>{for(let ce=0;ce<ae.length;ce++){const ie=ae[ce];if(ie.id===le||ie.uuid===le)return se==="dependiente"?(ie.plantilla_dependents||(ie.plantilla_dependents=[]),ie.plantilla_dependents.push(X)):se==="hija"&&(ie.plantilla_dependents||(ie.plantilla_dependents=[]),ie.plantilla_dependents.push(X)),!0;if(ie.tareas&&ie.tareas.length>0){const te=V(ie.tareas,le,X,se);if(te)return te}}return!1};if(V(N.tarea_plantillas,$,P,L)){const ae={...N,estatus:je.DIRTY,updatedAt:new Date().toISOString()};return await y(C,ae),e&&e.id===C&&a(ae),!0}else return!1},updateGraphLayout:async(P,C)=>{var $;if(!P){console.warn("⚠️ updateGraphLayout - Template ID no válido");return}try{const L=await h(P);if(!L){console.warn("⚠️ updateGraphLayout - Template no encontrado");return}const N=(C.nodes||[]).filter(se=>{var ce;return!((ce=se.data)!=null&&ce.isInternal)&&!se.parentId}).map(se=>{const{style:ce,measured:ie,data:te,...pe}=se,{expandedDimensions:fe,isExpanded:he,needsReExpansion:me,...be}=te||{},Me=ce?{...ce,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...pe,style:Me,data:be,position:se.position}}),V=(C.edges||[]).filter(se=>{var ce;return!((ce=se.data)!=null&&ce.isInternal)}).map(se=>{var ce;if((ce=se.data)!=null&&ce.redirectedToInternal){const{redirectedToInternal:ie,originalTarget:te,...pe}=se.data;return{...se,target:te||se.target,data:pe}}return se}),Y={...C,nodes:N,edges:V},ae=($=L.graph_layout)==null?void 0:$.snapshot;if(!(!ae||JSON.stringify(ae)!==JSON.stringify(Y)))return;const X={...L,graph_layout:{...L.graph_layout,snapshot:Y},estatus:je.DIRTY,updatedAt:new Date().toISOString()};await y(P,X),e&&e.id===P&&a(X)}catch(L){console.error("❌ updateGraphLayout - Error:",L)}},saveTemplateChanges:async(P=!0)=>{try{if(e.estatus===je.DIRTY){H(!0);const{id:C}=e,$=await h(C),L=await T(C),N=$.graph_layout.snapshot.nodes||[],V=N.filter(X=>{var se;return!((se=X.data)!=null&&se.isInternal)&&!X.parentId}),Y=N.length-V.length;Y>0&&console.warn(`💾 [saveTemplateChanges] Se filtraron ${Y} nodos internos al guardar plantilla ${C}`);const ae={graph_layout:{...$.graph_layout,snapshot:{...$.graph_layout.snapshot,nodes:V.map(X=>{const{style:se,measured:ce,selected:ie,...te}=X,pe=se?{...se,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return X.type==="group"?{...te,style:pe,data:{tareaId:X.data.id&&X.data.id>0?X.data.id:null,clave:X.data.clave,estatus:X.data.estatus,updatedAt:X.data.updatedAt,id:X.data.id}}:{...te,style:pe,data:{tareaId:X.data.id&&X.data.id>0?X.data.id:null}}}),edges:($.graph_layout.snapshot.edges||[]).filter(X=>{var se;return!((se=X.data)!=null&&se.isInternal)})}},tasks:{created:(L==null?void 0:L.created)||[],updated:(L==null?void 0:L.updated)||[],deleted:(L==null?void 0:L.deleted)||[]}},le=await v.post("/api/tareas/save-tareas-grafico",{data:ae});if(le.data&&le.status===200){try{const X=await D(C),se=await m(X),ce={...X,graph_layout:{...X.graph_layout,snapshot:{...X.graph_layout.snapshot,nodes:se}},estatus:je.IDLE};await y(C,ce),P||a(ce)}catch{const se=await h(C);if(se&&!P){const ce={...se,estatus:je.IDLE};await y(C,ce),a(ce)}}await w.invalidateQueries({queryKey:["template",C]}),await w.invalidateQueries({queryKey:["template"]}),f(C),P&&(re(C),u(!1)),o(C,"readonly")}}}catch(C){console.log(C)}finally{H(!1)}},publishTemplate:async P=>{try{K(!0);const C={estatus:Ee.PUBLISHED,publication_date:new Date},$=await v.put(`/api/plantillas/plantilla-update-estatus/${P}`,{data:C});$.data&&$.status===200&&(a({...e,estatusFromStrapi:Ee.PUBLISHED}),l(!1),x.toast.info("Se publicó correctamente el proceso"))}catch(C){console.log(C),x.toast.error("Surgió un error al publicar el proceso")}finally{K(!1)}},deleteTemplate:async P=>{try{S(!0);const C={estatus:Ee.DELETED,sjdaksd:0},$=await v.put(`/api/plantillas/plantilla-update-estatus/${P}`,{data:C});$.data&&$.status===200&&(d(!1),x.toast.info("Se eliminó correctamente el proceso"))}catch(C){console.error(C),x.toast.error("Surgión un error al eliminar el proceso")}finally{S(!1)}},loadingPublishTemplate:U,loadingSaveChanges:J,loadingDeleteTemplate:O}}const pr=async({tasks_api:e})=>{try{return(await e.get("/api/getAllOBPusers")).data}catch(a){throw console.log("Error al obtener los usuarios de OBP",a),`Error al obtener los usuarios de OBP: ${a}`}},mr=()=>{const{tasks_api:e}=ge();return{users:ue.useQuery({queryKey:["usersOBP"],queryFn:()=>pr({tasks_api:e}),staleTime:1e3*60*60*24})}},Je=()=>{const{users:e}=mr(),a=ue.useQuery({queryKey:["users_index",e.data],queryFn:()=>io({users:e.data||[]}),staleTime:1e3*60*60*24,enabled:!!e.data});return{users:a.data,isLoading:a.isLoading||e.isLoading}},ds=()=>{const{users:e,isLoading:a}=Je(),{getImageOBP:n}=ge();return{getImageByEmail:i=>{const r=e==null?void 0:e[i];return n(r==null?void 0:r.image)},getNameByEmail:i=>{const r=e==null?void 0:e[i];return(r==null?void 0:r.nombre)||""},isLoading:a}},nt=({isLoading:e})=>e?t.jsxs("div",{className:"fixed inset-0 flex items-center justify-center z-50",children:[t.jsx("div",{className:"absolute inset-0",style:{backgroundColor:"rgba(255, 255, 255, 0.5)"}}),t.jsx("div",{className:"relative flex flex-col items-center gap-4",children:t.jsx(x.Spinner,{})})]}):null,wa=({template:e,openModalPublishTemplate:a,onHadleClickEditTemplateParams:n,onEditTasks:s,canDuplicateAndDeleteTemplates:o,onHandleClickDuplicateTemplate:i,openModalDeleteTemplate:r})=>t.jsx(x.Popup,{color:"secondary",pill:"pill",icon:de.faEllipsis,stopPropagationList:!0,children:t.jsxs(x.List,{className:"ui-p-6 ui-gap-4",children:[e.estatus!==Ee.PUBLISHED&&e.counts_tasks>2&&t.jsx(x.ListItem,{icon:de.faArrowUp,onClick:a,children:"Publicar"}),t.jsx(x.ListItem,{icon:de.faEdit,onClick:()=>{n(e)},children:"Editar parámetros"}),t.jsx(x.ListItem,{icon:de.faEdit,onClick:()=>{s&&s(e)},children:"Editar tareas"}),o&&t.jsx(x.ListItem,{icon:de.faClone,onClick:c=>{c.stopPropagation(),i(e)},children:"Duplicar"}),o&&t.jsx(x.ListItem,{color:"red",icon:de.faTrash,onClick:r,children:"Eliminar"})]})}),us=({fullWidth:e,mode:a="grid",onClick:n,active:s,template:o,withOptions:i=!0})=>{const{openTemplate:r}=Be(),{getImageByEmail:c,getNameByEmail:u}=ds(),{setIsEditTemplate:l,setOpenModalCreateTemplate:d,setCurrentTemplateForEdit:m,setIsDuplicateTemplate:g,setOpenModalPublishTemplate:f,setCurrentTemplateId:w,setOpenModalDeleteTemplate:b}=Fe(),j={0:{color:"accent",theme:"solid"},1:{color:"accent",theme:"soft"},2:{color:"warning",theme:"solid"},3:{color:"info",theme:"solid"},4:{color:"gray",theme:"solid"},5:{color:"warning",theme:"soft"},6:{color:"danger",theme:"solid"},7:{color:"info",theme:"soft"},8:{color:"success",theme:"solid"},9:{color:"danger",theme:"solid"}},[y,h]=p.useState(!1),_=async()=>{if(h(!0),a==="grid")try{h(!0),await r({template:o,checkTemplateInIndexedDB:!0})}catch(R){console.error(R)}finally{h(!1)}else h(!1);n==null||n(o==null?void 0:o.id)},M=async()=>{if(!(a!=="grid"||!o)){h(!0);try{await r({template:o,checkTemplateInIndexedDB:!0}),n==null||n(o==null?void 0:o.id)}catch(R){console.error(R)}finally{h(!1)}}},F=R=>{l(!0),d(!0),m(R)},q=R=>{g(!0),d(!0),m(R)},T=()=>{w(o==null?void 0:o.id),f(!0)},D=()=>{w(o==null?void 0:o.id),b(!0)},v=(o==null?void 0:o.dias_duracion)===1?"Día":"Días",U=(o==null?void 0:o.counts_tasks)===1?"Tarea":"Tareas",K=(o==null?void 0:o.estatus)===Ee.PUBLISHED?_t(o==null?void 0:o.publication_date).format("DD/MM/YYYY"):_t(o==null?void 0:o.createdAt).format("DD/MM/YYYY"),J=(o==null?void 0:o.updated_by)||(o==null?void 0:o.created_by),H=c(J==null?void 0:J.email),O=u(J==null?void 0:J.email)||"",S=(o==null?void 0:o.estatus)===Ee.PUBLISHED?"Fecha de publicación":"Fecha de creación",B=(o==null?void 0:o.estatus)===Ee.DRAFT,k=R=>{const ee=R.split("-");return t.jsx(t.Fragment,{children:ee.map((W,re)=>t.jsxs("span",{children:[W,re<ee.length-1&&t.jsx("span",{className:"tw-text-neutral-200",children:"-"})]},re))})};return t.jsxs(x.Card,{active:s,fullWidth:e,onClick:_,className:`${e?"md:tw-flex-row":"tw-flex-col"}`,children:[t.jsx(nt,{isLoading:y}),t.jsx(x.Card.Header,{children:t.jsx("div",{className:"ui-flex ui-justify-between ui-items-start ui-gap-x-4",children:t.jsxs("div",{className:"ui-flex ui-justify-between ui-items-start ui-gap-4 ui-flex-1",children:[t.jsxs("div",{className:"ui-flex ui-place-items-start ui-gap-x-4",children:[t.jsx("div",{className:"tw-flex tw-items-center",children:t.jsx(x.Icon,{name:Re.faChartDiagram,colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotonePrimary:.5,size:"lg"})}),t.jsxs("div",{className:"ui-flex ui-gap-x-1 ui-flex-col ui-gap-y-4",children:[t.jsx("h1",{className:"ui-text-base ui-py-0.5 ui-font-body-sm-bold ui-text-body-sm-bold tw-leading-none ui-text-primary",children:k((o==null?void 0:o.clave)||(o==null?void 0:o.nombre_plantilla))}),t.jsxs("div",{className:"ui-flex tw-items-baseline ui-gap-x-1",children:[t.jsx(x.Badge,{size:"sm",theme:"soft",color:(o==null?void 0:o.estatus)===Ee.PUBLISHED?"success":"gray",label:(o==null?void 0:o.estatus)===Ee.PUBLISHED?"Publicado":"Borrador"}),!(typeof K=="string"&&K==="Invalid date")&&t.jsx(x.Tooltip,{label:S,children:t.jsx("p",{className:"ui-text-body-sm-regular ui-text-tertiary ui-font-body-sm-semibold",children:K})})]})]})]}),!e&&t.jsx(wa,{template:o,openModalPublishTemplate:T,onHadleClickEditTemplateParams:F,onEditTasks:M,canDuplicateAndDeleteTemplates:B,onHandleClickDuplicateTemplate:q,openModalDeleteTemplate:D})]})})}),t.jsx(x.Card.Separator,{vertical:e}),t.jsx(x.Card.Body,{className:"ui-flex ui-flex-wrap ui-gap-x-4 ui-gap-y-1 tw-w-full md:tw-w-auto tw-flex-wrap tw-flex-1 tw-items-center",children:o==null?void 0:o.params_plantillas.map((R,ee)=>{const W=j[R.params_tipo.order-1];return t.jsx(x.Badge,{color:W.color,theme:W.theme,label:R.name,size:"sm"},R.name)})}),!e&&t.jsx(x.Card.Separator,{vertical:e}),t.jsxs(x.Card.Footer,{className:"ui-flex ui-justify-between tw-w-full md:tw-w-auto tw-gap-x-4",children:[t.jsxs("div",{className:`tw-flex tw-flex-1 ${e?"tw-gap-x-2 md:tw-gap-20 lg:tw-gap-32 2xl:tw-gap-44":""}`,children:[t.jsx("div",{className:`ui-flex ui-gap-x-1 ui-justify-center tw-items-center ui-flex-1 ${e?"tw-flex-col":"tw-flex-row"}`,children:t.jsx(x.Tooltip,{label:"Tareas totales",children:t.jsxs("div",{className:`tw-flex tw-items-center tw-gap-2 ${e?"tw-flex-col":"tw-flex-row"}`,children:[t.jsx("p",{className:"ui-text-icon-all-colors-blue ui-text-xs tw-text-center tw-leading-none tw-font-semibold",children:(o==null?void 0:o.counts_tasks)||0}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:U})]})})}),t.jsx("div",{className:`ui-flex ui-gap-x-1 ui-justify-center tw-items-center ui-flex-1 ${e?"tw-flex-col":"tw-flex-row"}`,children:t.jsx(x.Tooltip,{label:"Tareas totales",children:t.jsxs("div",{className:`tw-flex tw-items-center tw-gap-2 ${e?"tw-flex-col":"tw-flex-row"}`,children:[t.jsx("p",{className:"ui-text-icon-all-colors-blue ui-text-xs tw-text-center tw-leading-none tw-font-semibold",children:(o==null?void 0:o.dias_duracion)||0}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:v})]})})}),t.jsxs("div",{className:`ui-flex ui-gap-x-1 ui-justify-center tw-items-center ui-flex-1 ${e?"tw-flex-col-reverse tw-gap-y-1":"tw-flex-row"}`,children:[t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:"Editor"}),t.jsx(x.Tooltip,{label:O,children:t.jsx(x.Avatar,{src:H,size:"xxs",type:"people"})})]})]}),e&&i&&t.jsx(x.Card.Separator,{vertical:e}),i&&t.jsx("div",{className:`tw-w-auto ${e?"tw-flex tw-items-center":""}`,children:e&&t.jsx(wa,{template:o,openModalPublishTemplate:T,onHadleClickEditTemplateParams:F,onEditTasks:M,canDuplicateAndDeleteTemplates:B,onHandleClickDuplicateTemplate:q,openModalDeleteTemplate:D})})]})]})},fr={1:"blue",2:"green",3:"red",4:"yellow"},wr=({difficulty:e})=>t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end ui-gap-2",children:[t.jsx(x.Icon,{name:de.faRhombus,size:"md",color:fr[e]}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:"Dificultad"})]}),gr=({duration:e})=>t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end",children:[t.jsx("p",{className:"ui-text-icon-all-colors-blue ui-text-body-lg-regular tw-leading-none tw-font-semibold",children:e}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:"Duración"})]}),hr={1:"neutral",2:"blue",3:"yellow",4:"red"},xr=({priority:e})=>t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end ui-gap-2",children:[t.jsx(x.Icon,{name:de.faFlag,size:"md",color:hr[e]}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:"Prioridad"})]});class br{static toUsers(a){return{id:a.id,name:a.nombre,image:a.image,email:a.email}}}const yr=async({tasks_api:e})=>{try{const a=Pe.stringify({filters:{blocked:!1}},{encodeValuesOnly:!0}),n=await e.get(`/api/users?${a}`);return xe(n.data).map(br.toUsers).sort((o,i)=>o.name.localeCompare(i.name))}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},$t=()=>{const{tasks_api:e}=ge(),a=ue.useQuery({queryKey:["users-mt"],queryFn:()=>yr({tasks_api:e}),staleTime:1e3*60*60*24});return{isLoading:a.isLoading,users:a.data}},jr=({responsible:e})=>{const{isLoading:a}=$t(),{getImageByEmail:n,isLoading:s}=ds();return a||s?null:t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end",children:[t.jsx(x.Avatar,{size:"xs",src:n(e==null?void 0:e.email),type:"people"}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:"Responsable"})]})},vr=[{label:"Muy alta",value:4,icon:de.faFlag,iconColor:"red"},{label:"Alta",value:3,icon:de.faFlag,iconColor:"yellow"},{label:"Media",value:2,icon:de.faFlag,iconColor:"blue"},{label:"Baja",value:1,icon:de.faFlag,iconColor:"neutral"}],_r=[{label:"Muy alta",value:4,icon:de.faRhombus,iconColor:"red"},{label:"Alta",value:3,icon:de.faRhombus,iconColor:"yellow"},{label:"Media",value:2,icon:de.faRhombus,iconColor:"blue"},{label:"Baja",value:1,icon:de.faRhombus,iconColor:"neutral"}],Nr=[{label:"1 día",value:1},{label:"2 días",value:2},{label:"3 días",value:3},{label:"4 días",value:4},{label:"5 días",value:5}],ps=({isOpen:e,onClose:a,onSuccess:n,nodeDataType:s,parentNodeInfo:o,editMode:i=!1,taskToEdit:r})=>{const{data:c}=Ks(),{users:u}=$t(),{users:l}=Je(),{getImageOBP:d}=ge(),m=p.useMemo(()=>{try{return!u||!l?[]:u.map(T=>{const D=l[T.email],v=D!=null&&D.image?d(D.image):"";return{label:T.name,value:T.id.toString(),icon:v}})}catch(T){return console.error("Error mapeando usuarios:",T),[]}},[u,l]),g=()=>{if(i&&r){const T=K=>{if(K==null)return"";const J=Number(K);return isNaN(J)?"":J},D=K=>K?typeof K=="string"?Number(K)||"":K.id||"":"",v=K=>{var J;return K?typeof K=="string"?K:((J=K.id)==null?void 0:J.toString())||K.name||K.nombre||"":""};return{title:r.texto_corto||"",description:r.texto_largo||"",priority:T(r.prioridad),difficulty:T(r.nivel_dificultad),duration:T(r.duracion),team:D(r.equipo),responsible:v(r.responsable),type:"tarea"}}return{title:"",description:"",priority:"",difficulty:"",duration:"",team:"",responsible:"",type:"tarea"}},{control:f,handleSubmit:w,formState:{errors:b,isValid:j},reset:y,watch:h}=Se.useForm({mode:"onChange",defaultValues:g()});p.useEffect(()=>{e&&y(g())},[e,i,r,y]);const _=h(),M=j&&_.title&&_.description&&_.priority&&_.difficulty&&_.duration&&_.team&&Object.keys(b).length===0,F=async T=>{try{if(["title","description","priority","difficulty","duration","team"].filter(U=>!T[U]).length>0)return;n&&n({...T,parent:o}),y()}catch{}},q=()=>{y(),a()};return t.jsx(x.Drawer,{titleIcon:de.faPencil,isOpen:e,onClose:q,onSuccess:()=>{w(T=>{F(T)},T=>{const D=Object.entries(T).map(([v,U])=>`${v}: ${U.message}`).join(`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),me=require("@tanstack/react-query"),x=require("@imj_media/ui"),u=require("react"),Ye=require("axios"),Pe=require("qs"),ne=require("@fortawesome/pro-regular-svg-icons"),Os=require("echarts-for-react"),de=require("@fortawesome/pro-solid-svg-icons"),Na=require("react-dom"),Ce=require("@fortawesome/free-solid-svg-icons"),ct=require("date-fns"),Pt=require("date-fns/locale"),Se=require("react-hook-form"),oe=require("@xyflow/react"),Ue=require("zustand"),Tt=require("moment"),ze=require("@fortawesome/pro-duotone-svg-icons");require("@xyflow/react/dist/style.css");const Ls=require("react-pick-color"),Qt=e=>{const a={...e};return delete a.project,delete a["project.id"],a},Xt=e=>{let a={};return Object.entries(e).forEach(([n,s])=>{if(n.includes(".")){let[o,i]=n.split(".");a[o]=a[o]||{},a[o][i]=s}else a[n]=s}),a},Sa=u.createContext({}),Bs=({children:e})=>{const[a,n]=u.useState({}),[s,o]=u.useState({}),[i,r]=u.useState([]),[c,m]=u.useState(""),l=({name:f,value:g})=>{function y(j){return!isNaN(j)&&j!==null&&j!==""?parseFloat(j):null}let w=y(g);o(j=>{let b={...j},_=i==null?void 0:i.find(M=>M.label.toLowerCase().replace(/ /g,"_")===f);return _?b[_.id]=w??g:b[f]=w??g,((_==null?void 0:_.id)??f)==="owner.config"&&(b["project.id"]=null),b})};u.useEffect(()=>{let f=i.map(g=>g.id==="owner.config"?[g.id,"yo_y_mis_equipos"]:g.id==="dependency"?[g.id,"ambas"]:[g.id,null]);o(g=>{const y={search:g==null?void 0:g.search,taskName:g==null?void 0:g.taskName};return f.forEach(([w,j])=>{y[w]=(g==null?void 0:g[w])!==void 0?g==null?void 0:g[w]:j}),y})},[i]);const d=()=>{let f=i.map(g=>g.id==="owner.config"?[g.id,"yo_y_mis_equipos"]:g.id==="dependency"?[g.id,"ambas"]:[g.id,null]);o(Object.fromEntries(f)),n(Xt(Object.fromEntries(f)))},p=f=>({1:"Muy facil",2:"Facil",3:"Media",4:"Dificil",5:"Muy dificil"})[f],h=()=>{let f=Xt(s);f.difficulty&&(f.difficulty=p(f.difficulty)),n(f)};return t.jsx(Sa.Provider,{value:{fields:i,filters:a,path:c,defineFields:r,updateFilters:l,cleanFilters:d,applyFilters:h,initialFilters:s,selectPath:m},children:e})},De=()=>u.useContext(Sa),Ea=u.createContext({}),Rs=({children:e,user:a,url:n,mode:s})=>{const o=s==="prod"?"https://services.imjmedia.com.mx":"https://devobp.imjmedia.com.mx",i=Ye.create({baseURL:n,headers:{Authorization:`Bearer ${a.accessToken}`},paramsSerializer:m=>Pe.stringify(m,{encodeValuesOnly:!0})}),r=()=>o,c=m=>m==="undefined"||m===void 0?"":`${o}${m}`;return t.jsx(Ea.Provider,{value:{tasks_api:i,getOBPUrlApi:r,getImageOBP:c},children:e})},he=()=>u.useContext(Ea),Pa=u.createContext({}),qs=({children:e,user:a,url:n})=>{const s=Ye.create({baseURL:n,headers:{Authorization:`Bearer ${a.accessToken}`},paramsSerializer:o=>Pe.stringify(o,{encodeValuesOnly:!0})});return t.jsx(Pa.Provider,{value:{user:a,tasks_api:s},children:e})},we=()=>u.useContext(Pa),be=e=>{const a=i=>Object.prototype.toString.call(i)==="[object Object]",n=i=>i&&typeof i=="object"&&("source"in i||"target"in i)&&!("attributes"in i),s=i=>i&&typeof i=="object"&&"position"in i&&typeof i.position=="object"&&("x"in i.position||"y"in i.position)&&!("attributes"in i),o=i=>i.attributes?{id:i.id,...i.attributes}:i;if(Array.isArray(e))return e.map(i=>be(i));if(a(e)){if(n(e)){const i={};for(const r in e)i[r]=be(e[r]);return i}if(s(e)){const i={};for(const r in e)i[r]=be(e[r]);return i}Array.isArray(e.data)?e=[...e.data]:a(e.data)?e=o({...e.data}):e.data===null?e=null:e=o(e);for(const i in e)e[i]=be(e[i]);return e}return e},Yt=[{label:"Tipo de dependencia",type:"select",id:"dependency",options:[{id:"con",name:"Con dependencia"},{id:"sin",name:"Sin dependencia"},{id:"ambas",name:"Ambas"}]},{label:"Por campaña",type:"select",id:"project.id",options:[]},{label:"Por responsable",type:"select",id:"owner.config",options:[{id:"yo",name:"Mis tareas"},{id:"yo_y_mis_equipos",name:"Tareas mías y de mis equipos"},{id:"mis_equipos",name:"Tareas de mis equipos"}]},{label:"Por ejecutivo comercial",type:"select",id:"salesman.id",options:[]},{label:"Por dificultad",type:"select",id:"difficulty",options:[{id:1,name:"Muy facil"},{id:2,name:"Facil"},{id:3,name:"Media"},{id:4,name:"Dificil"},{id:5,name:"Muy dificil"}]}],Jt=[{label:"Responsable",type:"select",id:"responsable.responsableType",options:[{id:"yo_y_mis_equipos",name:"Yo y mis equipos"},{id:"mis_equipos",name:"Mis equipos"},{id:"yo",name:"Yo"}]},{label:"Por Ejecutivo",type:"select",id:"ejecutivo",options:[]}],ft=(e,a,n)=>`${e} ${e===1?a:n}`;function zs(e){const a=e??{pausas:0,atrasos:0,vencidos:0};if((a.pausas??0)===0&&(a.atrasos??0)===0&&(a.vencidos??0)===0)return[{label:"Sin alertas",color:"gray",variant:"sin-alertas"}];const n=[];return(a.atrasos??0)>0&&n.push({label:ft(a.atrasos,"atrasada","atrasadas"),color:"danger",variant:"atrasos"}),(a.pausas??0)>0&&n.push({label:ft(a.pausas,"pausada","pausadas"),color:"warning",variant:"pausas"}),(a.vencidos??0)>0&&n.push({label:ft(a.vencidos,"vencida","vencidas"),color:"info",variant:"vencidos"}),n.slice(0,2)}const $s=ne.faLightEmergencyOn,Us={name:$s},Hs=({tags:e})=>{const a=Array.isArray(e)?e:[];return t.jsx("div",{className:"tm-inline-flex tm-min-w-0 tm-max-w-full tm-flex-wrap tm-content-center tm-items-center tm-gap-1 tm-justify-center",children:a.map((n,s)=>t.jsx("div",{className:"tm-min-w-0 tm-max-w-full tm-flex-shrink-0",children:t.jsx(x.Tag,{label:n.label,color:n.color,stroke:!1,truncateLabel:!0,truncateTooltip:!0,infoIcon:n.variant==="atrasos"?Us:void 0})},`${n.variant}-${n.label}-${s}`))})},Ks=(e,a=500)=>{const[n,s]=u.useState(e);return u.useEffect(()=>{const o=setTimeout(()=>{s(e)},a);return()=>{clearTimeout(o)}},[e,a]),n},Gs=async e=>{const a=Pe.stringify({fields:["id","nombre"],sort:["nombre:asc"]},{encodeValuesOnly:!0}),n=await e.get(`/api/equipos?${a}`);return n.data?{data:be(n.data.data)}:{data:[]}},Vs=()=>{const{tasks_api:e}=he();return me.useQuery({queryKey:["teams"],queryFn:()=>Gs(e),staleTime:1e3*60*60*24,select:n=>n.data.map(o=>({label:o.nombre,value:o.id}))})},Ws="/api/listado-progreso",Qs="/api/proyectos/listado-progreso";function Xs(e){return Pe.stringify(e,{encodeValuesOnly:!0,arrayFormat:"repeat"})}function Ys(e){var i,r,c;const a=Number(e.proyecto_id);if(!Number.isFinite(a)||a<=0||!Number.isInteger(a))throw new Error("listado-progreso: proyecto_id debe ser un entero positivo");const n=String(e.fase).trim().toLowerCase();if(n!=="preventa"&&n!=="venta")throw new Error('listado-progreso: fase debe ser "preventa" o "venta"');const s={proyecto_id:a,fase:n};(i=e.status)!=null&&i.length&&(s.status=e.status.map(m=>String(m).trim()).filter(Boolean)),(r=e.types_media)!=null&&r.length&&(s.types_media=e.types_media.map(m=>String(m).trim()).filter(Boolean)),(c=e.locations)!=null&&c.length&&(s.locations=e.locations.map(m=>String(m).trim()));const o=e.search!=null?String(e.search).trim():"";return o&&(s.search=o),e.blocked_only!==void 0&&(s.blocked_only=e.blocked_only===!0||e.blocked_only==="true"?"true":"false"),s}function Zt(e){const a=Array.isArray(e.data)?e.data:[],n=e.grafico,s=e.graficos,o=Array.isArray(n)&&n.length>0?n:Array.isArray(s)?s:[];return{data:a,grafico:o}}async function ea(e,a,n){const{data:s}=await e.get(a,{params:n,paramsSerializer:Xs});return s??{}}async function Js(e,a){var s;const n=Ys(a);try{const o=await ea(e,Ws,n);return Zt(o)}catch(o){if(Ye.isAxiosError(o)&&((s=o.response)==null?void 0:s.status)===404){const i=await ea(e,Qs,n);return Zt(i)}throw o}}function Zs({proyectoId:e,fase:a,enabled:n,filters:s}){const{tasks_api:o}=he(),i=n&&Number.isFinite(e)&&Number.isInteger(e)&&e>0;return me.useQuery({queryKey:["listado-progreso",e,a,s],queryFn:()=>Js(o,{proyecto_id:e,fase:a,...s}),enabled:i,staleTime:3e4})}const en=({campaignName:e,searchValue:a,onSearchChange:n})=>t.jsx("div",{className:"tm-border-b tm-border-light-gray-100 tm-pb-6 tm-pt-6",children:t.jsxs("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-justify-between tm-gap-3",children:[t.jsx("h3",{className:"tm-text-[21px] tm-font-semibold tm-leading-tight tm-text-gray-800",children:e||"-"}),t.jsx("div",{className:"tm-w-full sm:tm-w-[260px] md:tm-w-[300px]",children:t.jsx(x.Input,{size:"sm",fullWidth:!0,leftSlot:ne.faSearch,placeholder:"Buscar...",value:a,onValueChange:n,clearable:!0,onClear:()=>n("")})})]})});function tn(e,a){Array.isArray(e)&&a(e.map(String))}function gt({options:e,selected:a,onChange:n,emptyPlaceholder:s,header:o,tagsOverflowPopoverTitle:i,panelSearch:r,panelSearchPlaceholder:c="Buscar…"}){return t.jsx(x.Dropdown,{field:{placeholder:s},items:{options:e},values:{value:a},events:{onValueChange:m=>tn(m,n)},multi:{multiple:!0,selectionSummary:"tags",tagsOverflow:"single-line",tagsOverflowPopoverTitle:i},popover:{fullWidth:!0},list:{listVariant:"search-multi-checkbox",searchMultiCheckbox:{header:o,search:{show:r,placeholder:c},showClearSelection:!1}},menuSearch:{searchable:!1}})}const an=({mediosOptions:e,plazasOptions:a,estadosOptions:n,selectedMedios:s,selectedPlazas:o,selectedEstados:i,onlyDelayed:r,onChangeMedios:c,onChangePlazas:m,onChangeEstados:l,onChangeOnlyDelayed:d})=>t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-2 tm-mt-5 tm-mb-5",children:t.jsxs("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-justify-between tm-gap-3",children:[t.jsxs("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-gap-4 tm-flex-1",children:[t.jsx("div",{className:"tm-w-full sm:tm-w-[280px]",children:t.jsx(gt,{options:e,selected:s,onChange:c,emptyPlaceholder:"Todos los medios",header:{id:"listado-progreso-medios-all",label:"Todos los medios"},tagsOverflowPopoverTitle:"Medios seleccionados",panelSearch:!1})}),t.jsx("div",{className:"tm-w-full sm:tm-w-[280px]",children:t.jsx(gt,{options:a,selected:o,onChange:m,emptyPlaceholder:"Todas las plazas",header:{id:"listado-progreso-plazas-all",label:"Todas las plazas"},tagsOverflowPopoverTitle:"Plazas seleccionadas",panelSearch:!0,panelSearchPlaceholder:"Buscar…"})}),t.jsx("div",{className:"tm-w-full sm:tm-w-[280px]",children:t.jsx(gt,{options:n,selected:i,onChange:l,emptyPlaceholder:"Todos los estados",header:{id:"listado-progreso-estados-all",label:"Todos los estados"},tagsOverflowPopoverTitle:"Estados seleccionados",panelSearch:!1})})]}),t.jsx("div",{className:"tm-flex tm-items-center",children:t.jsx(x.Toggle,{label:"Solo Atrasadas",checked:r,onChange:d})})]})}),At=[{singular:"completada",serieApiName:"completadas",uiLabel:"Completada",chartLegendLabel:"Completadas",tagColor:"success",chartColorHex:"#22C55E"},{singular:"progresada",serieApiName:"progresadas",uiLabel:"En progreso",chartLegendLabel:"En progreso",tagColor:"accent",chartColorHex:"#3658C1"},{singular:"pausada",serieApiName:"pausadas",uiLabel:"Pausada",chartLegendLabel:"Pausadas",tagColor:"warning",chartColorHex:"#EAB308"},{singular:"atrasada",serieApiName:"atrasadas",uiLabel:"Atrasada",chartLegendLabel:"Atrasadas",tagColor:"danger",chartColorHex:"#EF4444"},{singular:"pendiente",serieApiName:"pendientes",uiLabel:"Pendiente",chartLegendLabel:"Pendientes",tagColor:"gray",chartColorHex:"#BABCBF"},{singular:"vencida",serieApiName:"vencidas",uiLabel:"Vencida",chartLegendLabel:"Vencidas",tagColor:"info",chartColorHex:"#0592AA"}],sn=Object.fromEntries(At.map(e=>[e.singular,e])),ta=At.map(e=>e.serieApiName),nn="atrasada";function It(e){return sn[e]}function on(e){var a;return(a=It(e.trim().toLowerCase()))==null?void 0:a.serieApiName}function Aa(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function rn(e){const a=It(e);return a?a.uiLabel:Aa(e)}function ln(e,a){const n=(e??"").trim().toLowerCase();if(!n)return[{label:a,color:"gray"}];const s=It(n);return s?[{label:s.uiLabel,color:s.tagColor}]:[{label:Aa(n),color:"gray"}]}function cn(e){var a,n;if(Ye.isAxiosError(e)){const s=(a=e.response)==null?void 0:a.data;if(typeof s=="string"&&s.trim())return s;if(s&&typeof s=="object"&&"message"in s){const i=s.message;if(typeof i=="string")return i}const o=(n=e.response)==null?void 0:n.status;if(o)return`Error del servidor (${o}). Revisa logs del backend o el body de la respuesta.`}return e.message||"No se pudieron cargar los datos de progreso."}function dn(e){if(!e||typeof e!="object")return null;const n=e.event;if(n&&typeof n=="object"){const s=n;if(typeof s.offsetX=="number"&&typeof s.offsetY=="number")return{x:s.offsetX,y:s.offsetY};const o=s.event;if(o&&typeof o.offsetX=="number"&&typeof o.offsetY=="number")return{x:o.offsetX,y:o.offsetY}}return null}function mn(e){if(!e||typeof e!="object")return 0;const a=e.value;return typeof a=="number"?a:Array.isArray(a)&&typeof a[0]=="number"?a[0]:0}function un(e){return(Number.isFinite(e)?e:0).toFixed(0)}const pn=({id:e,listadoProgreso:a,phaseLabel:n,listadoForUi:s})=>{const{isPending:o,isError:i,error:r,isSuccess:c,data:m}=a,[l,d]=u.useState(null),p=s??m,h=u.useMemo(()=>{const w=(p==null?void 0:p.grafico)??[],j=F=>{var R,N;return((N=(R=w.find(D=>D.name===F))==null?void 0:R.data)==null?void 0:N[0])??0},b=At.map(F=>({key:F.serieApiName,label:F.chartLegendLabel,color:F.chartColorHex})),_=b.map(F=>F.label),M={legendLabel:{color:"#6C6E73",fontSize:12,fontWeight:"bold",padding:[0,0,0,20]}};return b.forEach((F,R)=>{M[`legendDot${R}`]={color:F.color,fontSize:20,fontWeight:"bold",padding:[0,0,0,6]}}),{tooltip:{show:!1},grid:{top:"20%",bottom:"20%",left:"7%",right:"3%"},xAxis:{type:"value",max:100,splitLine:{show:!0},axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"category",data:[n],axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:"#6C6E73",fontWeight:"bold",fontSize:12}},legend:{data:_,orient:"horizontal",top:"0%",left:"center",itemGap:30,icon:"none",itemWidth:0,itemHeight:0,formatter:F=>{const R=b.findIndex(N=>N.label===F);return R===-1?F:`{legendLabel|${F}}{legendDot${R}|●}`},textStyle:{rich:M}},series:b.map(F=>({name:F.label,type:"bar",stack:"total",itemStyle:{color:F.color},barWidth:"50%",data:[j(F.key)]}))}},[p==null?void 0:p.grafico,n]),f=u.useCallback(w=>{const j=w;if(j.componentType!=="series")return;const b=dn(w);if(!b)return;const _=mn(w),M=typeof j.seriesName=="string"?j.seriesName:"";d({x:b.x,y:b.y,label:`${un(_)}% ${M}`})},[]),g=u.useCallback(()=>{d(null)},[]),y=u.useMemo(()=>({mouseover:f,mousemove:f,globalout:g}),[f,g]);return t.jsx(x.Accordion,{id:e,title:"Grafico de Tareas",subtitle:"Distribución de tareas por estatus",defaultOpen:!0,children:t.jsxs("div",{className:"tm-min-h-[140px] tm-w-full tm-border tm-rounded-3xl tm-border-gray-50 tm-px-2 tm-py-2",style:{backgroundColor:"#F7F8FA"},children:[o&&t.jsx("h3",{className:"tm-flex tm-h-[140px] tm-items-center tm-justify-center tm-text-xl tm-font-medium tm-text-gray-500",children:"Cargando datos de progreso…"}),i&&r&&t.jsx("div",{className:"tm-flex tm-h-[140px] tm-items-center tm-justify-center tm-px-4 tm-text-center",children:t.jsx("span",{className:"tm-text-sm tm-font-medium tm-text-red-600",children:cn(r)})}),c&&m&&t.jsxs("div",{className:"tm-relative tm-h-[140px] tm-w-full",children:[t.jsx(Os,{option:h,style:{height:"100%",width:"100%"},onEvents:y}),l&&t.jsx("div",{className:"tm-pointer-events-none tm-absolute tm-z-[10]",style:{left:l.x,top:l.y,width:1,height:1,transform:"translate(-50%, -50%)"},"aria-hidden":!0,children:t.jsx(x.InlineTooltip,{isVisible:!0,label:l.label,position:"top"})})]})]})})},Dt="-";function Qe(e){const a=String(e??"").trim();return a.length>0?a:null}function Ke(e){const a=String(e??"").trim();return a.length>0?a:Dt}function fn(e){var i,r,c,m,l,d,p,h,f,g;if(!e)return;const a=(c=(r=(i=e.formats)==null?void 0:i.thumbnail)==null?void 0:r.url)==null?void 0:c.trim(),n=(d=(l=(m=e.formats)==null?void 0:m.small)==null?void 0:l.url)==null?void 0:d.trim(),s=(f=(h=(p=e.formats)==null?void 0:p.medium)==null?void 0:h.url)==null?void 0:f.trim(),o=(g=e.url)==null?void 0:g.trim();return a||n||s||o||void 0}function gn(e){if(!e)return!1;if(e.startsWith("data:")||e.startsWith("blob:"))return!0;try{const a=new URL(e);return a.protocol==="http:"||a.protocol==="https:"}catch{return!1}}function Ft(e,a){const n=(e.nombre??"").trim()||Dt,s=fn(e.imagen??null);let o;if(s){const r=s.startsWith("http")||s.startsWith("data:")||s.startsWith("blob:")?s:a(s);gn(r)&&(o=r)}const i=n.slice(0,1);return{name:n,src:o,letter:i}}function hn(e){return{tarea:Ke(e.tarea),categoria:Ke(e.categoria),nota:Ke(e.nota),clave:Ke(e.clave),tipo_medio:Ke(e.tipo_medio),ubicacion:Ke(e.ubicacion)}}function xn(e){return ln(e,Dt)}const Ia=4,aa=Ia-1,bn=120,yn=-8,sa=8;function jn(e){return e.length<=Ia?{visible:e,overflow:[]}:{visible:e.slice(0,aa),overflow:e.slice(aa)}}const tt="tm-h-8 tm-w-8 tm-min-h-[32px] tm-min-w-[32px] tm-max-h-[32px] tm-max-w-[32px] tm-shrink-0 tm-border tm-border-default",na="Sin responsable",Da="bottom",Fa="center",wn="tm-flex tm-max-w-xs tm-items-start tm-gap-2 tm-py-1",vn="tm-text-sm tm-font-semibold tm-leading-snug tm-text-gray-900";function oa(e,a){return e<a-1?{marginRight:`${yn}px`}:void 0}function _n({person:e,getImageOBP:a}){const{src:n,letter:s}=Ft(e,a);return n?t.jsx(x.Avatar,{type:"people",src:n,size:"xxs",className:tt}):t.jsx(x.Avatar,{type:"letter",text:s,size:"xxs",className:tt})}function Tn({person:e,getImageOBP:a}){const{name:n,src:s,letter:o}=Ft(e,a);return t.jsxs("div",{className:wn,children:[s?t.jsx(x.Avatar,{type:"people",src:s,size:"xxs",className:`tm-mt-0.5 ${tt}`}):t.jsx(x.Avatar,{type:"letter",text:o,size:"xxs",className:`tm-mt-0.5 ${tt}`}),t.jsx("span",{className:vn,children:n})]})}function Cn({popupId:e,trigger:a,children:n,popupBodyClassName:s="tm-p-3"}){const o=u.useRef(null),i=u.useRef(null),r=u.useRef(null),c=u.useCallback(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},[]),m=u.useCallback(()=>{var d;c(),(d=i.current)==null||d.open()},[c]),l=u.useCallback(()=>{c(),r.current=window.setTimeout(()=>{var d;(d=i.current)==null||d.close(),r.current=null},bn)},[c]);return u.useEffect(()=>()=>c(),[c]),t.jsxs("div",{className:"tm-relative tm-inline-flex tm-shrink-0",children:[t.jsx("span",{ref:o,className:"tm-inline-flex tm-cursor-default",onMouseEnter:m,onMouseLeave:l,children:a}),t.jsx(x.Popup,{ref:i,popupId:e,triggerRef:o,closeOnClick:!1,position:"bottom-center",children:t.jsx("div",{className:s,onMouseEnter:m,onMouseLeave:l,children:n})})]})}function Nn(){return t.jsx(x.Tooltip,{label:na,position:Da,alignment:Fa,preserveLayout:!0,children:t.jsx("span",{className:"tm-inline-flex tm-shrink-0",role:"img","aria-label":na,children:t.jsx(x.Avatar,{type:"people",size:"xxs",className:tt,alt:""})})})}function Sn({person:e,getImageOBP:a}){const{name:n}=Ft(e,a);return t.jsx(x.Tooltip,{label:n,position:Da,alignment:Fa,preserveLayout:!0,children:t.jsx("span",{className:"tm-inline-flex tm-shrink-0",children:t.jsx(_n,{person:e,getImageOBP:a})})})}function En({overflow:e,getImageOBP:a,popupId:n}){return t.jsx(Cn,{popupId:n,popupBodyClassName:"tm-max-h-64 tm-overflow-y-auto tm-p-3",trigger:t.jsxs("span",{className:"tm-inline-flex tm-h-8 tm-w-8 tm-min-h-[32px] tm-min-w-[32px] tm-max-h-[32px] tm-max-w-[32px] tm-cursor-default tm-items-center tm-justify-center tm-rounded-control-pill tm-border tm-border-default tm-bg-fill-brand tm-text-xs tm-font-normal tm-leading-none tm-tracking-[0.5px] tm-text-on-color",children:["+",e.length]}),children:e.map((s,o)=>t.jsx(Tn,{person:s,getImageOBP:a},s.id!=null?`${s.id}-${o}`:o))})}const Pn=({responsables:e,getImageOBP:a,rowId:n})=>{const s=Array.isArray(e)?e:[];if(s.length===0)return t.jsx("div",{className:"tm-flex tm-min-w-0 tm-items-center",style:{paddingRight:`${sa}px`},children:t.jsx(Nn,{})});const{visible:o,overflow:i}=jn(s),r=o.length+(i.length>0?1:0);return t.jsxs("div",{className:"tm-flex tm-min-w-0 tm-items-center",style:{paddingRight:`${sa}px`},children:[o.map((c,m)=>{const l=c.id!=null?`r-${c.id}-${m}`:`r-${n}-${m}`;return t.jsx("div",{className:"tm-shrink-0",style:oa(m,r),children:t.jsx(Sn,{person:c,getImageOBP:a})},l)}),i.length>0?t.jsx("div",{className:"tm-shrink-0",style:oa(r-1,r),children:t.jsx(En,{overflow:i,getImageOBP:a,popupId:`listado-progreso-${n}-more`})}):null]})},An={name:de.faCircleSmall};function In({tags:e}){const a=Array.isArray(e)?e:[];return t.jsx("div",{className:"tm-inline-flex tm-min-w-0 tm-max-w-full tm-flex-wrap tm-content-start tm-items-center tm-gap-1",children:a.map((n,s)=>t.jsx("div",{className:"tm-min-w-0 tm-max-w-full tm-flex-shrink-0",children:t.jsx(x.Tag,{label:n.label,color:n.color,stroke:!1,truncateLabel:!0,truncateTooltip:!0,infoIcon:An})},`${n.label}-${s}`))})}const Dn=({listadoProgreso:e,listadoForUi:a,hideClaveColumn:n=!1})=>{var m,l;const{getImageOBP:s}=he(),o=u.useMemo(()=>{const d=[{id:"responsables",header:"Responsable",accessor:p=>p.responsables,width:140,minWidth:100,sortable:!1,filterable:!1,resizable:!1,render:(p,h)=>t.jsx(Pn,{responsables:h.responsables,getImageOBP:s,rowId:h.id})},{id:"tarea",header:"Tarea",accessor:"tarea",width:100,minWidth:90,sortable:!1,filterable:!1,resizable:!1},{id:"categoria",header:"Categoría",accessor:"categoria",width:110,minWidth:90,sortable:!1,filterable:!1,resizable:!1,contentAlign:"center"},{id:"estado",header:"Estado",accessor:p=>xn(p.estado),contentAlign:"center",width:110,minWidth:90,sortable:!1,filterable:!1,resizable:!1,render:p=>t.jsx(In,{tags:Array.isArray(p)?p:[]})},{id:"nota",header:"Notas",accessor:"nota",width:100,minWidth:90,sortable:!1,filterable:!1,resizable:!1},{id:"tipo_medio",header:"Grupo medio",accessor:"tipo_medio",width:130,minWidth:110,sortable:!1,filterable:!1,resizable:!1},{id:"ubicacion",header:"Ubicación",accessor:"ubicacion",width:120,minWidth:100,sortable:!1,filterable:!1,resizable:!1}];return n||d.splice(5,0,{id:"clave",header:"Código / Ruta",accessor:"clave",width:130,minWidth:100,sortable:!1,filterable:!1,resizable:!1,contentAlign:"center"}),d},[s,n]),i=u.useMemo(()=>{var p;const d=(a==null?void 0:a.data)??((p=e.data)==null?void 0:p.data);return Array.isArray(d)?d.map(h=>({...h,id:h.id,...hn(h)})):[]},[a==null?void 0:a.data,(m=e.data)==null?void 0:m.data]),r=e.isPending||e.isFetching&&i.length===0&&!e.isError,c=u.useMemo(()=>{var h,f;const d=(h=e.data)==null?void 0:h.data,p=Array.isArray(d)?d.length:0;if(e.isError)return{type:"empty",icon:ne.faBan,title:"No se pudo cargar el listado",description:((f=e.error)==null?void 0:f.message)??"Revisa la conexión o vuelve a intentar."};if(e.isSuccess){if(p===0&&i.length===0)return{type:"empty",icon:ne.faBan,title:"Esta campaña aún no tiene tareas",description:"Cuando asignes tareas a medios, aparecerán aquí con su estado y responsables."};if(p>0&&i.length===0)return{type:"no-filters",icon:ne.faBan,title:"No hay nada aquí...",description:"No hay tareas que coincidan con los filtros seleccionados."}}return{type:"empty",icon:ne.faBan,title:"No hay nada aquí..."}},[e.isError,e.isSuccess,e.error,(l=e.data)==null?void 0:l.data,i.length]);return t.jsx(t.Fragment,{children:t.jsx("div",{className:"tm-flex tm-min-h-0 tm-flex-col tm-mt-2 tm-h-[455px] tm-border tm-rounded-3xl tm-border-gray-300",children:t.jsx(x.Table,{columns:o,columnsLockable:!1,rows:i,loading:r,hoverable:!1,bordered:!1,borderable:!1,stickyHeader:!0,empty:c,resizable:!1,expandable:!1,striped:!1,stickyCheckbox:!1})})})},Fn={preventa:"Preventa",venta:"Venta"},Mn=({campaignName:e,phase:a,search:n,listado:s,filters:o})=>{const i=Fn[a],r=a==="preventa";return t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-4",children:[t.jsx(en,{campaignName:e,searchValue:n.value,onSearchChange:n.onChange}),t.jsx(an,{mediosOptions:o.mediosOptions,plazasOptions:o.plazasOptions,estadosOptions:o.estadosOptions,selectedMedios:o.selectedMedios,selectedPlazas:o.selectedPlazas,selectedEstados:o.selectedEstados,onlyDelayed:o.onlyDelayed,onChangeMedios:o.onChangeMedios,onChangePlazas:o.onChangePlazas,onChangeEstados:o.onChangeEstados,onChangeOnlyDelayed:o.onChangeOnlyDelayed}),t.jsx(pn,{id:`progress-chart-${i}`,listadoProgreso:s.query,phaseLabel:i,listadoForUi:s.dataForUi}),t.jsx(Dn,{listadoProgreso:s.query,listadoForUi:s.dataForUi,hideClaveColumn:r})]})};function kn(e){var i,r,c,m;const a=(i=e.types_media)==null?void 0:i.map(l=>l.trim()).filter(Boolean),n=(r=e.locations)==null?void 0:r.map(l=>l.trim()),s=(c=e.status)==null?void 0:c.map(l=>l.trim().toLowerCase()).filter(Boolean),o=((m=e.search)==null?void 0:m.trim().toLowerCase())||void 0;return{mediosSet:a&&a.length>0?new Set(a):void 0,locationsSet:n&&n.length>0?new Set(n):void 0,statusSet:s&&s.length>0?new Set(s):void 0,searchLower:o,onlyDelayed:e.onlyDelayed===!0}}function On(e,a){const{mediosSet:n,locationsSet:s,statusSet:o,searchLower:i,onlyDelayed:r}=a;if(n){const c=Qe(e.tipo_medio)??"";if(!n.has(c))return!1}if(s){const c=Qe(e.ubicacion)??"";if(!s.has(c))return!1}if(o){const c=(e.estado??"").trim().toLowerCase();if(!o.has(c))return!1}return!(r&&(e.estado??"").trim().toLowerCase()!==nn||i&&![(e.responsables??[]).flatMap(l=>[l.nombre??"",l.role??"",l.email??""]).join(" ").toLowerCase(),e.tarea??"",e.categoria??"",e.estado??"",e.nota??"",e.clave??"",e.tipo_medio??"",e.ubicacion??""].join(" ").toLowerCase().includes(i))}function Ln(e){const a=Object.fromEntries(ta.map(s=>[s,0]));for(const s of e){const o=on(s.estado??"");o&&(a[o]+=1)}const n=e.length;return ta.map(s=>({name:s,data:[n>0?a[s]/n*100:0]}))}function Bn(e,a){const n=kn(a);if(!(n.mediosSet!==void 0||n.locationsSet!==void 0||n.statusSet!==void 0||n.searchLower!==void 0||n.onlyDelayed))return e;const o=e.data.filter(i=>On(i,n));return{data:o,grafico:Ln(o)}}const Ma="__sin_ubicacion__";function ka(e,a){return String(e.label).localeCompare(String(a.label),"es",{sensitivity:"base"})}function ht(e,a,n){const s=new Map;return e.forEach(o=>{const i=a(o);!i||s.has(i)||s.set(i,{label:n?n(i):i,value:i})}),Array.from(s.values()).sort(ka)}function Rn(e){return e.map(a=>a===Ma?"":a)}function qn(e){const a=ht(e,r=>Qe(r.tipo_medio)),n=e.some(r=>Qe(r.ubicacion)===null),s=ht(e,r=>Qe(r.ubicacion)),o=[...n?[{label:"Sin ubicación",value:Ma}]:[],...s].sort(ka),i=ht(e,r=>{var c;return((c=Qe(r.estado))==null?void 0:c.toLowerCase())??null},r=>rn(r));return{medios:a,plazas:o,estados:i}}const zn=({isOpen:e,proyectoId:a,campaignName:n,onClose:s})=>{var k;const[r,c]=u.useState("preventa"),[m,l]=u.useState([]),[d,p]=u.useState([]),[h,f]=u.useState([]),[g,y]=u.useState(!1),[w,j]=u.useState(""),b=Ks(w,400),_=u.useMemo(()=>[{label:"Fase 1 (Preventa)",value:"preventa",leftSlot:ne.faHandHoldingHand},{label:"Fase 2 (Venta)",value:"venta",leftSlot:ne.faHandHoldingCircleDollar}],[]),M=()=>{l([]),p([]),f([]),y(!1)},F=()=>{c("preventa"),M(),j(""),s()},R=q=>{(q==="preventa"||q==="venta")&&(c(q),M(),j(""))},N=u.useMemo(()=>{const q=b.trim();if(q)return q.length>=2?q:void 0},[b,2]),D=Zs({proyectoId:a,fase:r,enabled:e,filters:{}}),v=u.useMemo(()=>({types_media:m.length>0?m:void 0,locations:d.length>0?Rn(d):void 0,status:h.length>0?h:void 0,search:N,onlyDelayed:g}),[m,d,h,N,g]),{medios:U,plazas:K,estados:J}=u.useMemo(()=>{var ee;const q=((ee=D.data)==null?void 0:ee.data)??[];return qn(q)},[(k=D.data)==null?void 0:k.data]),H=u.useMemo(()=>{const q=D.data;return q?Bn(q,v):null},[D.data,v]),O=u.useMemo(()=>({value:w,onChange:j}),[w]),S=u.useMemo(()=>({query:D,dataForUi:H}),[D,H]),B=u.useMemo(()=>({mediosOptions:U,plazasOptions:K,estadosOptions:J,selectedMedios:m,selectedPlazas:d,selectedEstados:h,onlyDelayed:g,onChangeMedios:l,onChangePlazas:p,onChangeEstados:f,onChangeOnlyDelayed:y}),[U,K,J,m,d,h,g]);return t.jsx(x.Modal,{isOpen:e,onClose:F,size:"xl",title:"Progreso",tabs:_,defaultValueTab:"preventa",onChangeTab:R,iconConfig:{icon:ne.faBullhorn},cancelButtonText:"Cerrar",showCancelButton:!0,closeAtCancel:!0,onCancel:F,showSuccessButton:!1,children:t.jsx("div",{style:{backgroundColor:"#F7F8FA",padding:"0px 16px 16px 16px"},children:t.jsx(x.Modal.Body,{children:t.jsx(Mn,{campaignName:n,phase:r,search:O,listado:S,filters:B})})})})},$n=({setPath:e,setProject:a})=>{var B;const[n,s]=u.useState([]),[o,i]=u.useState(!0),[r,c]=u.useState(0),[m,l]=u.useState(10),[d,p]=u.useState(0),[h,f]=u.useState(!1),[g,y]=u.useState(""),[w,j]=u.useState(0),{filters:b,defineFields:_}=De(),{tasks_api:M,getImageOBP:F}=he(),{user:R}=we(),N=u.useCallback(async(k,q)=>{var ee,W,re;try{i(!0);const Z={filters:{search:(b==null?void 0:b.search)??"",responsable:{idUser:R.id,responsableType:(ee=b==null?void 0:b.responsable)==null?void 0:ee.responsableType},ejecutivo:(b==null?void 0:b.ejecutivo)??"",cancelada:{$eq:!1}}},E=await M.get("/api/listado_campanias",{params:{pagination:{page:k,pageSize:q},...Z}}),z=be(E==null?void 0:E.data);s(z),p((re=(W=E==null?void 0:E.data)==null?void 0:W.meta)==null?void 0:re.total)}catch(Z){console.error("Error fetching data en Lista Campaña:",Z)}finally{i(!1)}},[b==null?void 0:b.ejecutivo,(B=b==null?void 0:b.responsable)==null?void 0:B.responsableType,b==null?void 0:b.search,M,R.id]),D=u.useCallback(async()=>{try{const k=await M.get("/api/obtener-comerciales");return[...Jt].map(ee=>(ee.id==="ejecutivo"&&(ee.options=k.data.map(W=>({id:W.nombre,name:W.nombre}))),ee))}catch(k){return console.error("Error fetching salesman data:",k),[...Jt]}},[M]);u.useEffect(()=>{(async()=>{const q=await D();_(q)})()},[_,D]),u.useEffect(()=>{const k=Math.floor(r/m)+1;N(k,m)},[r,m,b,N]);const v=k=>{c(k.first),l(k.rows)},U=Math.floor(r/m)+1,K=u.useMemo(()=>(R.role??"").trim().toLowerCase()==="project manager",[R.role]),J=u.useCallback(k=>{var q;y(((q=k.campania)==null?void 0:q.nombre)??k.nombre??""),j(Number(k.id)),f(!0)},[]),H=u.useMemo(()=>({label:"Ver progreso",leftSlot:ne.faEye,theme:"solid",color:"secondary",tooltip:"Ver progreso",onClick:k=>J(k)}),[J]),O=u.useMemo(()=>{const k=[{id:"nombre",header:"CAMPAÑA",accessor:q=>{var ee;return((ee=q.campania)==null?void 0:ee.nombre)??q.nombre??"-"},width:200,sortable:!1,filterable:!1,resizable:!1},{id:"inicia",header:"FECHA INICIO",accessor:q=>{var ee;return((ee=q.campania)==null?void 0:ee.inicia)??"-"},width:100,sortable:!1,filterable:!1,resizable:!1},{id:"termina",header:"FECHA FIN",accessor:q=>{var ee;return((ee=q.campania)==null?void 0:ee.termina)??"-"},width:100,sortable:!1,filterable:!1,resizable:!1},{id:"responsable",header:"RESPONSABLE",type:"primary",accessor:q=>{var ee,W;return((W=(ee=q.campania)==null?void 0:ee.responsable)==null?void 0:W.nombre)??"-"},width:150,sortable:!1,filterable:!1,resizable:!1,render:(q,ee)=>{var Q,I,A,G,P;const W=(Q=ee.campania)==null?void 0:Q.responsable,re=typeof q=="string"||typeof q=="number"?String(q):(W==null?void 0:W.nombre)??"-",Z=(W==null?void 0:W.role)??"-",E=((G=(A=(I=W==null?void 0:W.imagen)==null?void 0:I.formats)==null?void 0:A.thumbnail)==null?void 0:G.url)||((P=W==null?void 0:W.imagen)==null?void 0:P.url)||"",z=E?F(E):W==null?void 0:W.nombre;return{name:re,...z?{avatar:z}:{},...Z?{subtitle:Z}:{}}}},{id:"alertas",header:"ALERTAS",accessor:q=>zs(q.alertas),width:200,minWidth:100,filterable:!1,sortable:!1,resizable:!1,contentAlign:"center",render:q=>t.jsx(Hs,{tags:Array.isArray(q)?q:[]})}];return K&&k.push({id:"acciones",header:"ACCIONES",type:"button",sortable:!1,filterable:!1,resizable:!1,accessor:()=>H,width:190,minWidth:160}),k},[F,K,H]),S=u.useMemo(()=>(n??[]).map(k=>({...k,id:k.id})),[n]);return t.jsxs("div",{className:"tm-h-full tm-max-h-[100%] tm-overflow-y-auto tm-scrollbar-none",children:[t.jsx(x.Table,{columns:O,columnsLockable:!1,rows:S,loading:o,hoverable:!0,resizable:!1,pagination:{enabled:!0,currentPage:U,pageSize:m,total:d,pageSizes:[5,10,15,20,25,50],onPageChange:k=>c((k-1)*m),onPageSizeChange:k=>v({first:0,rows:k})},onRowClick:k=>{a({id:k.id,project:k.nombre}),e("kanban-campania")},empty:{type:"empty",title:"No hay campañas disponibles"}}),t.jsx(zn,{isOpen:h,proyectoId:w,campaignName:g,onClose:()=>f(!1)})]})},Oa=u.createContext(null),Un=()=>u.useContext(Oa),Hn=({children:e})=>{const a=u.useRef(null),n=u.useRef(null),s=()=>{var o;(o=n.current)==null||o.close()};return t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{ref:a,leftSlot:ne.faFilter,color:"primary",theme:"solid",size:"sm",type:"button",children:"Filtrar"}),t.jsx(x.Popup,{ref:n,triggerRef:a,position:"bottom-right",offset:8,closeOnClickOutside:!0,closeOnEscape:!0,closeOnClick:!1,popoverArrow:!1,allowOverflow:!0,popupId:"tareas-filters-layout-popup",children:t.jsx(Oa.Provider,{value:s,children:e})})]})};function Kn(e,a=300,n={leading:!1,trailing:!0}){let s,o=null;return function(...i){const r=Date.now(),c=n.leading&&!o;clearTimeout(s),c&&e(...i),o=r,s=setTimeout(()=>{n.trailing&&(!n.leading||r-o>=a)&&(e(...i),o=null)},a)}}function Gn(e){return e!=null&&e.length?e.map(a=>({id:a.id,label:a.name,value:a.id})):[]}function Vn({field:e}){const{updateFilters:a,initialFilters:n}=De(),s=u.useMemo(()=>Gn(e.options),[e.options]),o=n==null?void 0:n[e.id],i=o??"";return t.jsx(x.Dropdown,{field:{label:e.label,placeholder:"Selecciona una opción",size:"xs"},items:{options:s,idName:"id"},values:{value:i},menuSearch:{searchable:!0,searchPlaceholder:"Buscar…"},popover:{fullWidth:!0,absolute:!1,closeOnClickOutside:!0,dropdownId:`filter-layout-${e.id}`,popoverZIndex:1300},events:{onValueChange:r=>{a({name:e.id,value:String(r)})}}})}const Wn=()=>{const{fields:e,updateFilters:a,cleanFilters:n,applyFilters:s,initialFilters:o}=De(),i=Un();return t.jsxs("div",{className:"tm-flex tm-min-w-[280px] tm-max-w-[400px] tm-flex-col tm-gap-8 tm-p-8",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-justify-between tm-gap-2",children:[t.jsx("p",{className:"tm-m-0 tm-text-heading-h6 tm-font-heading-h6 tm-leading-heading-h6 tm-tracking-heading-h6 tm-text-primary",children:"Filtros"}),t.jsx(x.Button,{color:"secondary",size:"xxs",icon:ne.faXmark,type:"button",onClick:()=>{n(),i==null||i()},children:"Limpiar"})]}),t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-3",children:e==null?void 0:e.map((r,c)=>t.jsx("div",{className:"tm-relative",style:{zIndex:10-c},children:(r==null?void 0:r.type)==="select"?t.jsx("div",{className:"tm-relative tm-z-[10] tm-w-full",children:t.jsx(Vn,{field:r})}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"z-[1] tm-text-xl",children:r.label}),t.jsx("input",{className:"tm-h-[30px] tm-w-full tm-rounded-lg tm-p-s tm-shadow-input",type:r.type,value:o==null?void 0:o[r==null?void 0:r.id],name:r.label.toLowerCase().replace(/ /g,"_"),onChange:Kn(m=>{var l,d;return a({name:(l=m==null?void 0:m.target)==null?void 0:l.name,value:(d=m==null?void 0:m.target)==null?void 0:d.value})},1e3)})]})},c))}),t.jsx(x.Button,{color:"primary",size:"xs",type:"button",fullWidth:!0,onClick:()=>{s(),i==null||i()},children:"Filtrar"})]})},Mt=e=>new Intl.DateTimeFormat("es-MX",{month:"long"}).format(e);function Qn(e){const a=["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],n=new Date(e).getDay();return a[n]}const ra=e=>{let a=e||new Date,n=a.getDate(),s=Mt(a.getMonth()).slice(0,3),o=a.getFullYear().toString().slice(-2),i=Qn(a).slice(0,3);return`${i.charAt(0).toUpperCase()+i.slice(1)} ${n} ${s.charAt(0).toUpperCase()+s.slice(1)} ${o}`},kt=(e,a)=>({...e,image:e.image?`${a}${e.image}`:""}),at=e=>{var a,n;return e?(a=e.responsable)!=null&&a.nombre?e.responsable.nombre:(n=e.equipo)!=null&&n.nombre?e.equipo.nombre:null:null};class Xn{static toCampaignTasks(a){var i,r,c,m,l,d,p,h,f,g,y,w,j,b,_;const n=at(a==null?void 0:a.id_t_requerida),s=at(a==null?void 0:a.tarea_padre);let o=[];return a!=null&&a.responsable&&o.push({id:a.responsable.id,name:a.responsable.nombre,image:(l=(m=(c=(r=(i=a.responsable)==null?void 0:i.userOBP)==null?void 0:r.imagen)==null?void 0:c.formats)==null?void 0:m.thumbnail)==null?void 0:l.url,role:((d=a.responsable.userOBP)==null?void 0:d.role)||{id:0,name:""}}),(p=a==null?void 0:a.equipo)!=null&&p.miembros&&a.equipo.miembros.forEach(M=>{var F,R,N,D,v;o!=null&&o.find(U=>U.id===M.idUser.id)||M.idUser&&o.push({id:M.idUser.id,name:M.idUser.nombre,image:(D=(N=(R=(F=M==null?void 0:M.userOBP)==null?void 0:F.imagen)==null?void 0:R.formats)==null?void 0:N.thumbnail)==null?void 0:D.url,role:((v=M.userOBP)==null?void 0:v.role)||{id:0,name:""}})}),{paused:a==null?void 0:a.pausada,isPrincipalTask:(a==null?void 0:a.tarea_principal)??!1,orden:(a==null?void 0:a.orden)??null,id:(a==null?void 0:a.id)??null,task:(a==null?void 0:a.texto_corto)??null,status:(a==null?void 0:a.estatus)??null,difficulty:(a==null?void 0:a.nivel_dificultad)??null,priority:(a==null?void 0:a.prioridad)??0,endDate:new Date((a==null?void 0:a.ffin)??null),startDate:new Date((a==null?void 0:a.finicio)??null),users:o,repeatsToDo:(a==null?void 0:a.repeticiones)??null,repeats:(a==null?void 0:a.repeticiones_realizadas)??null,comments:((h=a==null?void 0:a.comentarios)==null?void 0:h.length)??null,willBePaused:a==null?void 0:a.es_pausable,nameProject:((f=a==null?void 0:a.proyecto)==null?void 0:f.nombre)??null,idProject:((g=a==null?void 0:a.proyecto)==null?void 0:g.id)??null,medioName:(a==null?void 0:a.nombre_medio)??null,statusRequiredTask:((y=a==null?void 0:a.id_t_requerida)==null?void 0:y.estatus)??null,nameRequiredTask:((w=a==null?void 0:a.id_t_requerida)==null?void 0:w.texto_corto)??null,nameRequiredTaskResponsible:n,name_father_required_task:((j=a==null?void 0:a.tarea_padre)==null?void 0:j.texto_corto)??null,name_father_required_task_responsible:s,responsible:((b=a==null?void 0:a.responsable)==null?void 0:b.id)??null,tasks:((_=a==null?void 0:a.tareas)==null?void 0:_.map(M=>({id:M.id,name:M.texto_corto,status:M.estatus})))??null,atraso:(a==null?void 0:a.atraso)??null,categoria:(a==null?void 0:a.categoria)??null,...(a==null?void 0:a.cambio_arte)&&{cambio_arte:a==null?void 0:a.cambio_arte}}}}const Yn=async({filters:e,tasks_api:a,project:n})=>{try{const s=await a.get("/api/listado_tareas_flujo",{params:{...e,project:{id:n},includeAllTasks:!0,populate:"*",cancelada:!1}}),o=be(s.data.tareas),i=Array.isArray(o)?o:[o],r=new Set;if(i.forEach(c=>{var m;(m=c==null?void 0:c.id_t_requerida)!=null&&m.id&&r.add(c.id_t_requerida.id)}),r.size>0){const c=Array.from(r),m=Pe.stringify({filters:{id:{$in:c}},populate:{responsable:{fields:["id","nombre"]},equipo:{fields:["id","nombre"]}}},{encodeValuesOnly:!0});try{const l=await a.get(`/api/tareas?${m}`),d=be(l.data.data||l.data),p=Array.isArray(d)?d:[d],h=new Map(p.map(f=>[f.id,f]));i.forEach(f=>{var g;if((g=f==null?void 0:f.id_t_requerida)!=null&&g.id){const y=h.get(f.id_t_requerida.id);y&&(f.id_t_requerida={...f.id_t_requerida,responsable:y.responsable||null,equipo:y.equipo||null})}})}catch{}}return i.map(Xn.toCampaignTasks)}catch(s){console.log(s)}},La=u.createContext({}),Jn=({children:e,project:a})=>{var j;const[n,s]=u.useState([]),[o,i]=u.useState(!1),[r,c]=u.useState([]),{tasks_api:m}=he(),{filters:l}=De(),{user:d}=we(),[p,h]=u.useState({owner:{user:d.id,config:((j=l==null?void 0:l.owner)==null?void 0:j.config)??"yo_y_mis_equipos"},project:{id:a}});u.useEffect(()=>{var b;if(Object.keys(l).length>0){const _={...l,owner:{user:d.id,config:((b=l==null?void 0:l.owner)==null?void 0:b.config)??"yo_y_mis_equipos"},project:{id:a}};h(_)}},[l,d.id,a]);const f=me.useQuery({queryKey:["tasksProject",p,a],queryFn:()=>{const b={...p,taskName:l==null?void 0:l.taskName,owner:{...p.owner,config:p.owner.config||"yo_y_mis_equipos"}};return Yn({filters:b,project:a,tasks_api:m})},refetchOnWindowFocus:!1}),g=b=>{s(_=>[..._,b])},y=b=>{c(_=>_.includes(b)?_.filter(M=>M!==b):[..._,b])},w=a??null;return t.jsx(La.Provider,{value:{tasksProject:f,selectedTasks:n,projectID:w,openTasks:r,selectTask:g,filtersToSend:p,openTask:y,isRefetching:o,project:a,filters:l,setIsRefetching:i},children:e})},Je=()=>u.useContext(La),Ba=u.createContext(void 0),ia=()=>({selectedTaskIds:[],baseColumn:null,isFullColumnSelected:!1});function Ra({children:e,invalidateAfterBulkSuccess:a}){const[n,s]=u.useState(ia),[o,i]=u.useState(null),[r,c]=u.useState(!1),{selectedTaskIds:m,baseColumn:l,isFullColumnSelected:d}=n,p=m.length>0,h=l!==null,f=u.useCallback(()=>{s(ia()),i(null),c(!1)},[]),g=u.useCallback(()=>{s(b=>({...b,selectedTaskIds:[],isFullColumnSelected:!1}))},[]),y=u.useCallback((b,_)=>{_!=="Completadas"&&s(M=>{if(M.baseColumn&&M.baseColumn!==_)return M;const F=new Set(M.selectedTaskIds);return F.has(b)?(F.delete(b),{selectedTaskIds:[...F],baseColumn:M.baseColumn,isFullColumnSelected:!1}):(F.add(b),{selectedTaskIds:[...F],baseColumn:M.baseColumn??_,isFullColumnSelected:!1})})},[]),w=u.useCallback(async(b,_)=>{if(b!=="Completadas"){c(!0);try{const M=await _(),F=[...new Set(M)];s(R=>R.baseColumn&&R.baseColumn!==b?R:{selectedTaskIds:F,baseColumn:R.baseColumn??b,isFullColumnSelected:F.length>0})}finally{c(!1)}}},[]);u.useEffect(()=>{m.length===0&&l!==null&&f()},[m.length,l,f]);const j=u.useMemo(()=>({selectedTaskIds:m,baseColumn:l,isMultiSelectActive:p,isBulkSessionActive:h,isFullColumnSelected:d,pendingTargetStatus:o,isBulkLoading:r,invalidateAfterBulkSuccess:a,toggleTaskSelection:y,deselectAllSelectedTasks:g,exitBulkSelectionMode:f,selectEntireColumn:w,setPendingTargetStatus:i,setIsBulkLoading:c}),[m,l,p,h,d,o,r,a,y,g,f,w,i,c]);return t.jsx(Ba.Provider,{value:j,children:e})}function Ot(){return u.useContext(Ba)}const Zn=()=>t.jsxs("div",{className:"tm-flex tm-h-[150px] tm-w-full tm-animate-pulse tm-flex-col tm-gap-[50px] tm-rounded-md tm-bg-gray-200 tm-p-4",children:[t.jsxs("div",{className:"tm-flex tm-h-[30px] tm-gap-3",children:[t.jsx("div",{className:"tm-h-full tm-w-[30px] tm-min-w-[30px] tm-rounded-full tm-bg-gray-300"}),t.jsx("div",{className:"tm-h-full tm-w-full tm-bg-gray-300"}),t.jsx("div",{className:"tm-h-full tm-w-[30px] tm-min-w-[30px] tm-rounded-full tm-bg-gray-300"})]}),t.jsxs("div",{className:"tm-flex tm-h-[30px] tm-w-full tm-justify-between tm-gap-[50px]",children:[t.jsx("div",{className:"tm-h-[30px] tm-w-full tm-bg-gray-300"}),t.jsx("div",{className:"tm-h-[30px] tm-w-full tm-bg-gray-300"})]})]});function Ie({trigger:e,children:a,enabled:n=!0,position:s="top",offset:o=8,closeOnClick:i=!1,popoverArrow:r="auto",className:c="tm-inline-flex tm-max-w-full",triggerWrapperClassName:m="tm-inline-flex tm-max-w-full"}){const l=u.useRef(null);return n?t.jsxs("span",{className:c,children:[t.jsx("span",{ref:l,className:m,children:e}),t.jsx(x.Popover,{triggerRef:l,openOnHover:!0,position:s,offset:o,closeOnClick:i,popoverArrow:r,children:a})]}):t.jsx(t.Fragment,{children:e})}const ge={texts:{DEFAULT:"#252525",subtext:"#4f4f4f",placeholder:"#929292"},primary:{regular:"#425CAC"},success:{dark:"#368156",regular:"#43B071"},danger:{dark:"#8C352C",regular:"#C34335"},warning:{dark:"#B4782F",regular:"#D38A31"}},qa=u.createContext(null),eo=({children:e})=>{const[a,n]=u.useState({message:"",type:"success"}),s=(o,i)=>{n({message:o,type:i}),setTimeout(()=>n({message:"",type:"success"}),3e3)};return t.jsx(qa.Provider,{value:{toast:a,showSuccess:o=>s(o,"success"),showError:o=>s(o,"error")},children:e})},Lt=()=>u.useContext(qa);class za{static toAtrasoReasons(a){return{id:a.id,motivo_imj:a.motivo_imj,categoria:a.categoria??null}}}const to=async({tasks_api:e})=>{try{const a=await e.get("/api/motivos",{params:{populate:{categoria:{fields:["id","nombre","tipo"]}},filters:{tipo:{$eq:"atraso"}}}});return be(a.data).map(za.toAtrasoReasons)}catch(a){throw console.log("Error al obtener los motivos de atraso",a),`Error al obtener los motivos de atraso: ${a}`}},$a=({enabled:e=!1}={})=>{const{tasks_api:a}=he(),{user:n}=we(),s=me.useQueryClient(),{showSuccess:o,showError:i}=Lt(),{filters:r,path:c}=De(),{data:m,isLoading:l}=me.useQuery({queryKey:["atraso_reasons"],queryFn:()=>to({tasks_api:a}),staleTime:1e3*60*60*24,enabled:e}),d=async()=>{const M=await a.get("/api/motivos",{params:{filters:{tipo:{$eq:"atraso"}}}});return be(M.data).map(za.toAtrasoReasons)},p=async({taskId:M,motivoId:F,projectID:R})=>{try{return(await a.post("/api/atrasos",{data:{inicio:new Date,fin:null,motivo:F,proyecto:R,tarea:M,creada_por:n==null?void 0:n.id}})).data}catch(N){console.log("error",N)}},h=async M=>{try{return(await a.delete(`/api/atrasos/${M}`)).data}catch(F){console.log("error",F)}},f=async M=>{try{return(await a.put(`/api/atrasos/${M}`,{data:{fin:new Date}})).data}catch(F){console.log("error",F)}},g=async({taskId:M,projectID:F,motivo:R})=>{await j({taskId:M,motivoId:R,projectID:F})},y=async M=>{await b(M)},w=async M=>{await _(M)},{mutateAsync:j}=me.useMutation({mutationFn:p,onSuccess:()=>{o("Atraso registrado correctamente"),c==="kanban-general"&&(s.invalidateQueries({queryKey:["to_do_tasks",r]}),s.invalidateQueries({queryKey:["working_tasks",r]})),c==="kanban-campania"&&s.invalidateQueries({queryKey:["tasksProject"]})},onError:()=>{i("Error al registrar el atraso")}}),{mutateAsync:b}=me.useMutation({mutationFn:h,onSuccess:()=>{o("Atraso eliminado correctamente"),c==="kanban-general"&&(s.invalidateQueries({queryKey:["to_do_tasks"]}),s.invalidateQueries({queryKey:["working_tasks"]}),s.invalidateQueries({queryKey:["done_tasks"]})),c==="kanban-campania"&&s.invalidateQueries({queryKey:["tasksProject"]})},onError:()=>{i("Error al eliminar el atraso")}}),{mutateAsync:_}=me.useMutation({mutationFn:f,onSuccess:()=>{o("Atraso finalizado correctamente")},onError:()=>{i("Error al finalizar el atraso")}});return{atrasoReasons:m,isLoading:l,createAtraso:g,getAtrasoReasons:d,deleteAtraso:y,finalizarAtraso:w}},He=()=>{const{tasks_api:e}=he(),{user:a}=we(),{filters:n,path:s}=De(),o=me.useQueryClient(),{projectID:i}=Je(),{showSuccess:r,showError:c}=Lt(),{finalizarAtraso:m}=$a({enabled:!1}),l=async({id:O})=>(await e.put(`/api/tareas/${O}`,{data:{estatus:1,responsable:a==null?void 0:a.id,updated_by:a==null?void 0:a.id}})).data,d=async({id:O})=>(await e.put(`/api/tareas/${O}`,{data:{estatus:0,responsable:a==null?void 0:a.id,updated_by:a==null?void 0:a.id}})).data,p=async({id:O,idAtraso:S})=>{const B=await e.post("/api/terminarTarea",{id_task:O,ended_at:new Date().toISOString(),id_user:a==null?void 0:a.id});return await m(S),B.data},h=async({id:O,repeats:S})=>(await e.put(`/api/tareas/${O}`,{data:{repeticiones_realizadas:S,updated_by:a==null?void 0:a.id}})).data,f=async({id:O,motiveId:S})=>{try{const B=await e.post("/api/pausarTarea",{taskId:O,userId:a==null?void 0:a.id,motivoId:S});return r("Tarea pausada correctamente"),B.data}catch(B){c("Error al pausar la tarea: "+B)}},g=async({id:O})=>{try{const S=await e.post("/api/reanudarTarea",{taskId:O});return r("Tarea reanudada correctamente"),S.data}catch(S){c("Error al reanudar la tarea: "+S)}},y=async({id:O,idNewResponsible:S,typeOfSelect:B})=>{let k={updated_by:a==null?void 0:a.id};return B==="responsible"&&(k={...k,responsable:S}),B==="team"&&(k={...k,responsable:null,equipo:S}),(await e.put(`/api/tareas/${O}`,{data:k})).data},w=async({id:O,data:S,user:B})=>{try{return(await e.put(`/api/tareas/${O}`,{data:{...S,updated_by:B==null?void 0:B.id}})).data}catch(k){console.error("Error updating the element:",k)}},j=async({id:O})=>{await M({id:O})},b=async({id:O,data:S,user:B})=>{await _({id:O,data:S,user:B})},{mutateAsync:_}=me.useMutation({mutationFn:w,onSuccess:()=>{r("Tarea actualizada correctamente");const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]})}}),{mutateAsync:M}=me.useMutation({mutationFn:l,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error updating the element:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:F}=me.useMutation({mutationFn:p,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{o.setQueryData([O[s],n],S=>{console.log({oldData:S})}),s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["done_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:R}=me.useMutation({mutationFn:h,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["done_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:N}=me.useMutation({mutationFn:y,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["done_tasks",n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error invalidating queries:",S)}},onError:O=>{console.error("Failed to reassign the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["done_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}}),{mutateAsync:D}=me.useMutation({mutationFn:d,onSuccess:()=>{const O={"kanban-general":"to_do_tasks","kanban-campania":"tasksProject"};try{s==="kanban-general"&&(o.invalidateQueries({queryKey:[O[s],n]}),o.invalidateQueries({queryKey:["working_tasks",n]})),s==="kanban-campania"&&(o.invalidateQueries({queryKey:["tasksProject"]}),o.invalidateQueries({queryKey:["tasksProject",n,i]}))}catch(S){console.error("Error updating the element:",S)}},onError:O=>{console.error("Failed to update the task.",O)},onMutate:async()=>{await o.cancelQueries({queryKey:["working_tasks"]}),await o.cancelQueries({queryKey:["to_do_tasks"]})}});return{updatingTask:b,updateTask:w,startTask:async({id:O})=>{await D({id:O})},startWorking:j,completeTask:async({id:O,idAtraso:S})=>{await F({id:O,idAtraso:S})},reasignResponsible:async({id:O,idNewResponsible:S,typeOfSelect:B})=>{await N({id:O,idNewResponsible:S,typeOfSelect:B})},updateUnitys:async({repeats:O,id:S})=>{await R({repeats:O,id:S})},pauseTask:async({id:O,motiveId:S})=>{console.log({taksId:O,motivoId:S,user:a==null?void 0:a.id})},postPauseTask:f,postReanudeTask:g}};function ao(e,a){const n=a??0;return(e??"")!==""&&n===2&&n===2||!(e??"")}function so(e){const a=e.repeatsToDo;return a==null||a<=0?!1:(e.repeats??0)!==a}function Bt(e){return e.status===2||so(e)?!1:ao(e.nameRequiredTask,e.statusRequiredTask)}const Ae=({imageUrl:e="https://www.uv.unach.mx/assets/img/prueba/directorio/userM.png",alt:a="avatar",size:n="s"})=>{const s={xs:"tm-w-[24px] tm-h-[24px] tm-min-w-[24px] tm-min-h-[24px]",s:"tm-w-[28px] tm-h-[28px] tm-min-w-[28px] tm-min-h-[28px]",m:"tm-w-[32px] tm-h-[32px] tm-min-w-[32px] tm-min-h-[32px]",l:"tm-w-[36px] tm-h-[36px] tm-min-w-[36px] tm-min-h-[36px]",xl:"tm-w-[40px] tm-h-[40px] tm-min-w-[40px] tm-min-h-[40px]",xxl:"tm-w-[44px] tm-h-[44px] tm-min-w-[44px] tm-min-h-[44px]"}[n];return t.jsx("img",{src:e===""?"https://www.uv.unach.mx/assets/img/prueba/directorio/userM.png":e,alt:a??"avatar",className:`${s} tm-bg-containers tm-rounded-full tm-border-2 tm-border-white`})},la=({trigger:e,user:a,showUser:n=!0})=>t.jsx(Ie,{trigger:e,enabled:n,children:t.jsxs("div",{className:"tm-flex tm-h-fit tm-w-fit tm-items-center tm-gap-2 tm-bg-bg-card tm-p-2",children:[t.jsx(Ae,{imageUrl:a.image??"",alt:a.name}),t.jsx("p",{className:"tm-text-sm tm-font-bold tm-text-texts-subtext",children:a.name})]})}),no=({options:e,onselect:a})=>{const[n,s]=u.useState(""),o=[...e].filter(i=>i.name.toLowerCase().includes(n.toLowerCase()));return t.jsxs("div",{className:"tm-h-fit tm-w-full tm-min-w-max",children:[t.jsx(x.Input,{size:"sm",fullWidth:!0,leftSlot:ne.faSearch,placeholder:"Buscar",value:n,onValueChange:s}),t.jsx("div",{className:"tm-border-cards tm-flex tm-max-h-[120px] tm-min-w-max tm-flex-col tm-gap-s tm-overflow-y-auto tm-rounded-lg tm-bg-bg-card tm-p-2 tm-mt-2",children:o.map(i=>t.jsxs("button",{type:"button",onClick:()=>{a(i)},className:"tm-flex tm-min-w-full tm-max-w-[200px] tm-cursor-pointer tm-items-center tm-gap-s hover:tm-bg-primary-light",children:[i.image&&t.jsx(Ae,{imageUrl:i.image,alt:i.name}),t.jsx("p",{className:"tm-min-w-0 tm-text-left tm-text-[14px] tm-truncate tm-py-m tm-font-normal tm-text-texts-subtext",children:i.name})]},i.id??i.name))})]})};class oo{static toDomain(a){return{id:a.id,name:a.nombre,color:a.color}}}const ro=()=>{const{tasks_api:e}=he();return{teams:me.useQuery({queryKey:["teams","all"],queryFn:async()=>{const n=await e.get("/api/equipos");return be(n.data).map(oo.toDomain)},refetchOnWindowFocus:!1})}};class Rt{static toUsers(a){var n,s,o;return{id:a.id,name:a.nombre,image:(o=(s=(n=a.imagen)==null?void 0:n.formats)==null?void 0:s.thumbnail)==null?void 0:o.url,tasksUser:{email:a.tasksUser.email,id:a.tasksUser.id,nombre:a.tasksUser.nombre},role:a.role}}static toUsersV2(a){var n,s,o;return{id:a.id,name:a.nombre,image:(o=(s=(n=a.imagen)==null?void 0:n.formats)==null?void 0:s.thumbnail)==null?void 0:o.url,role:a.role}}static toUsersWithIndex(a){var s,o,i;const n={};for(const r of a)n[r.email]={...r,image:(i=(o=(s=r.imagen)==null?void 0:s.formats)==null?void 0:o.thumbnail)==null?void 0:i.url};return n}}const io=async({tasks_api:e})=>{try{const a=await e.get("/api/getAllOBPusersMembers");return be(a.data).map(Rt.toUsers)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},lo=async({tasks_api:e})=>{try{const a={filters:{$and:[{role:{name:{$in:["Project Manager","Operation Manager","Administrador"]}}},{blocked:{$eq:!1}}]}},n=Pe.stringify(a,{encodeValuesOnly:!0}),s=await e.get(`/api/users?${n}`),i=be(s.data).map(m=>m.email),r=await e.get(`/api/getAllOBPusers?filters[name][$in]=${i}`);return be(r.data).map(Rt.toUsersV2)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},co=async({users:e})=>{try{const a=be(e);return Rt.toUsersWithIndex(a)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},mo=()=>{const{tasks_api:e}=he();return{users:me.useQuery({queryKey:["users"],queryFn:()=>io({tasks_api:e}),staleTime:1e3*60*60*24})}},uo=()=>{const{tasks_api:e}=he();return{users:me.useQuery({queryKey:["allUsers"],queryFn:()=>lo({tasks_api:e}),staleTime:1e3*60*60*24})}},ca="Project Manager",Ua=({users:e,onClick:a,responsible:n,role:s,status:o})=>{const{getOBPUrlApi:i}=he(),r=u.useRef(null),c=u.useRef(null),m=u.useId(),[l,d]=u.useState("team"),{teams:p}=ro(),{users:h}=mo(),f=s===ca||o===0&&s!==ca,g=()=>n?null:e.length>3&&t.jsx(Ie,{position:"top",popoverArrow:!1,triggerWrapperClassName:"tm-inline-flex tm-items-center",trigger:t.jsx("div",{className:"tm-ml-[-8px] tm-flex tm-h-[30px] tm-w-[30px] tm-items-center tm-justify-center tm-rounded-full tm-border-2 tm-border-white tm-bg-[var(--ui-color-bg-fill-brand-default)]",children:t.jsx("p",{className:"tm-text-sm tm-font-bold tm-text-white ",children:`+${e.length-3}`})}),children:t.jsx("div",{className:"tm-border-containers tm-h-fit tm-w-fit tm-rounded-lg tm-bg-bg-card tm-p-2",children:e==null?void 0:e.slice(3).map((b,_)=>t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2 ",children:[t.jsx(Ae,{imageUrl:b.image??"",alt:b.name},_),t.jsx("p",{className:"tm-text-sm tm-font-bold tm-text-texts-subtext",children:b.name})]},_))})}),y=()=>{if(n){const b=e.find(_=>_.id===n);return t.jsx("div",{children:f?t.jsx(x.Tooltip,{label:(b==null?void 0:b.name)??"",position:"top",children:t.jsx(Ae,{imageUrl:b==null?void 0:b.image,alt:b==null?void 0:b.name},n)}):t.jsx(la,{trigger:t.jsx(Ae,{imageUrl:b==null?void 0:b.image,alt:b==null?void 0:b.name},n),user:b,showUser:!0})})}return(e==null?void 0:e.length)>0&&e.slice(0,3).map((b,_)=>t.jsx("div",{className:`${_===0?"":"tm-ml-[-8px]"}`,children:f?t.jsx(x.Tooltip,{label:b.name,position:"top",children:t.jsx(Ae,{imageUrl:b.image,alt:b.name})}):t.jsx(la,{trigger:t.jsx(Ae,{imageUrl:b.image,alt:b.name}),user:b,showUser:!0})},b.id||_))},w=()=>{const b=[{id:"team",label:"Equipo"},{id:"responsible",label:"Responsable"}];return t.jsx("div",{className:"tm-flex tm-w-full tm-justify-center tm-gap-l tm-font-bold tm-text-texts-placeholder",children:b.map((_,M)=>t.jsx("button",{type:"button",className:`tm-w-full tm-border-texts-placeholder tm-text-center tm-text-[10px] ${l===_.id?"tm-text-primary-pastel":""} ${M===b.length-1?"tm-border-r-0":" tm-border-r-2"}`,onClick:()=>d(_.id),children:_.label},_.id))})},j=()=>t.jsxs("div",{className:"tm-border-cards tm-flex tm-max-h-[200px] tm-flex-col tm-gap-m tm-overflow-y-hidden tm-rounded-lg tm-bg-bg-card tm-p-2",style:{boxShadow:"0px 2px 16px 0px rgba(0, 0, 0, 0.25)"},children:[w(),t.jsx(no,{options:l==="team"?((p==null?void 0:p.data)??[]).map(b=>({id:b.id,name:b.name,image:""})):((h==null?void 0:h.data)??[]).map(b=>kt(b,i())),onselect:b=>{var _,M;(_=c.current)==null||_.close(),a((M=b.tasksUser)==null?void 0:M.id,l)}})]});return e.length===0?f?t.jsxs(t.Fragment,{children:[t.jsx("span",{ref:r,className:"tm-inline-flex tm-cursor-pointer tm-items-center",children:t.jsx(x.Icon,{name:ne.faUser,size:"xs",color:"current"})}),t.jsx(x.Popover,{ref:c,triggerRef:r,position:"bottom-left",offset:8,closeOnClick:!1,closeOnClickOutside:!0,closeOnEscape:!0,popoverArrow:!1,popupId:`assign-users-${m}`,children:j()})]}):t.jsx("span",{className:"tm-inline-flex tm-items-center",children:t.jsx(x.Icon,{name:ne.faUser,size:"xs",color:"current"})}):t.jsxs(t.Fragment,{children:[t.jsxs("span",{ref:r,className:"tm-flex tm-cursor-pointer tm-items-center",children:[y(),g()]}),f&&t.jsx(x.Popover,{ref:c,triggerRef:r,position:"bottom-left",offset:8,closeOnClick:!1,closeOnClickOutside:!0,closeOnEscape:!0,popoverArrow:!1,popupId:`assign-users-avatars-${m}`,children:j()})]})},Ha=({priority:e,id:a,withLabel:n=!1})=>{const{updatingTask:s}=He(),o=u.useId().replace(/:/g,""),[i,r]=u.useState(null),{user:c}=we(),[m,l]=u.useState(e);u.useEffect(()=>{l(e)},[e]);const d={0:{title:"Normal",color:ge.primary.regular},1:{title:"Baja",color:ge.success.regular},2:{title:"Media",color:ge.warning.regular},3:{title:"Alta",color:ge.danger.regular}},p={title:"Sin prioridad",color:ge.texts.subtext},f=(()=>{const j=m;if(typeof j!="number"||!Number.isFinite(j))return p;const b=Math.trunc(j);return b<0||b>3?p:d[b]??p})(),g=f.title??"Sin prioridad",y=()=>{if(!i)return null;const j=({priorityTask:b,text:_})=>{var M,F;return t.jsxs("button",{onClick:async()=>{r(null),await s({id:a,data:{prioridad:b},user:c==null?void 0:c.id}),l(b)},className:"tm-flex tm-items-center tm-gap-m tm-px-l tm-py-s hover:tm-bg-primary-light",children:[t.jsx(x.Icon,{name:ne.faFlag,size:"xs",style:{color:(M=d[b??0])==null?void 0:M.color},color:"current"}),t.jsx("p",{className:"tm-text-sm",style:{color:(F=d[b??0])==null?void 0:F.color},children:_})]})};return Na.createPortal(t.jsx("div",{onBlur:()=>{r(null)},id:`${o}-options`,style:{top:`${i.y+5}px`,left:`${i.x+5}px`,zIndex:50},className:`tm-absolute tm-flex tm-h-fit tm-w-max tm-flex-col tm-gap-2 tm-rounded-xl tm-bg-bg-card tm-p-m
|
|
2
|
+
tm-shadow-lg`,"data-portal-host":!0,children:Object.values(d).map((b,_)=>t.jsx(j,{priorityTask:_,text:b.title},_))}),document.body)},w=j=>{j.stopPropagation()};return t.jsxs("div",{className:"tm-relative",onClick:w,onPointerDown:w,children:[t.jsxs("label",{onBlur:()=>{r(null)},htmlFor:o,className:"tm-flex tm-cursor-pointer tm-items-center tm-gap-2 active:tm-opacity-50",children:[t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faFlag,size:"sm",style:{color:f.color},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-p-5 tm-text-sm",style:{color:f.color},children:`Prioridad: ${g}`})}),n&&t.jsx("span",{style:{color:f.color},className:"tm-text-lg tm-font-normal",children:g})]}),t.jsx("button",{id:o,onClick:j=>{j.stopPropagation(),r(i?null:{x:j.clientX,y:j.clientY})},className:"tm-hidden"}),t.jsx(y,{})]})};function po(e,a){return((e==null?void 0:e.map(s=>{var o;return{id:s.id,nombre:s.motivo_imj??"",categoria:(o=s.categoria)==null?void 0:o.nombre}}).filter(s=>s.categoria===a))??[]).filter(s=>typeof s.id=="number"&&!Number.isNaN(s.id)&&s.nombre.length>0).map(s=>({id:s.id,nombre:s.nombre}))}function fo(e){return e.map(a=>({id:a.id,label:a.nombre}))}const Re={TO_SECOND:"task-move-first-to-second",TO_THIRD:"task-move-first-to-third",TO_FOURTH:"task-move-first-to-fourth"};function go(e,a){const n=[];return e===0&&n.push({id:Re.TO_SECOND,label:"Mover a trabajando",icon:Ce.faArrowRight}),e===1&&n.push({id:Re.TO_SECOND,label:"Mover a completada",icon:Ce.faArrowRight},{id:Re.TO_FOURTH,label:"Mover por hacer",icon:Ce.faArrowLeft}),a?n.push({id:Re.TO_THIRD,label:"Eliminar atraso"}):n.push({id:Re.TO_THIRD,label:"Agregar atraso"}),n}function ho(e){return e===0?{title:"Mover a trabajando"}:{title:"Mover a completada"}}function xo(){return{title:"Mover a por hacer"}}function da({copy:e,onMove:a}){return t.jsxs("div",{className:"tm-flex tm-h-fit tm-w-max tm-max-w-[280px] tm-translate-x-0 tm-flex-col tm-gap-3 tm-rounded-lg tm-bg-bg-card tm-p-l tm-shadow-lg tm-transition-all tm-duration-200 tm-ease-in-out",children:[t.jsx("p",{className:"tm-text-left tm-text-[14px] tm-font-semibold tm-text-ink-black_medium",children:e.title}),t.jsx(x.Button,{type:"button",fullWidth:!0,size:"xs",color:"primary",onClick:a,children:"Mover"})]})}const Ka=({status:e,nameRequiredTask:a,statusRequiredTask:n,id:s,statusLateTask:o=null,projectID:i,atrasoId:r,categoria:c,disabled:m=!1})=>{const l=u.useRef(null),d=u.useRef(null),p=u.useRef(null),{startWorking:h,completeTask:f,startTask:g}=He(),y=u.useRef(!1),[w,j]=u.useState(!1),[b,_]=u.useState(null),[M,F]=u.useState("first"),R=a!==""&&n===2,[N,D]=u.useState(null),{atrasoReasons:v,isLoading:U,createAtraso:K,deleteAtraso:J}=$a({enabled:!0}),[H,O]=u.useState(null),S=u.useCallback(()=>{var E;(E=l.current)==null||E.close()},[]);u.useEffect(()=>{o&&F("third")},[o]),u.useEffect(()=>{if(!w)return;const E=()=>{S()};return window.addEventListener("scroll",E,!0),document.addEventListener("scroll",E,!0),()=>{window.removeEventListener("scroll",E,!0),document.removeEventListener("scroll",E,!0)}},[w,S]);const B=E=>{F(E),E==="second"?_(e===0?"Trabajando":"Completadas"):E==="fourth"&&_("Por hacer")},k=()=>{if(y!=null&&y.current)return t.jsx("div",{className:"tm-hover:bg-primary-light tm-flex tm-h-fit tm-w-max tm-translate-x-0 tm-items-center tm-gap-2 tm-rounded-lg tm-bg-bg-card tm-p-l tm-shadow-lg tm-transition-all tm-duration-200 tm-ease-in-out",children:t.jsx("p",{className:"tm-font-regular tm-text-sm tm-font-normal tm-text-primary-pastel",children:"Moviendo..."})});const E=go(e,r);return t.jsx("div",{className:"tm-flex tm-h-fit tm-w-max tm-translate-x-0 tm-flex-col tm-gap-3 tm-rounded-lg tm-bg-bg-card tm-p-l tm-shadow-lg tm-transition-all tm-duration-200 tm-ease-in-out",children:t.jsx(x.ListBase,{variant:"default",list:{items:E},events:{onItemClick:z=>{switch(z.id){case Re.TO_SECOND:B("second");break;case Re.TO_THIRD:B("third");break;case Re.TO_FOURTH:B("fourth");break}}}})})},q=()=>t.jsx(da,{copy:ho(e),onMove:()=>{y.current=!0,b==="Trabajando"?h({id:s}):b==="Por hacer"?g({id:s}):f({id:s,idAtraso:r}),S()}}),ee=()=>{if(U)return t.jsx("div",{children:"Cargando motivos..."});const E=po(v,c==null?void 0:c.nombre),z=fo(E);return E.length>0?t.jsxs("div",{className:"tm-flex tm-h-fit tm-w-[288px] tm-translate-x-0 tm-flex-col tm-gap-3 tm-rounded-lg tm-bg-bg-card tm-p-l tm-shadow-lg tm-transition-all tm-duration-200 tm-ease-in-out",children:[!N&&!r?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"tm-mb-[11px] tm-text-left tm-text-[14px] tm-font-semibold tm-text-ink-black_regular",children:"Atraso de tarea"}),t.jsx(x.Dropdown,{field:{placeholder:"Seleccione una opción"},items:{options:z,idName:"id"},values:{value:(H==null?void 0:H.id)??""},menuSearch:{searchable:!0,searchPlaceholder:"Buscar"},popover:{absolute:!1,closeOnClickOutside:!0,dropdownId:`task-atraso-motivo-${s}`,popoverZIndex:1200},events:{onValueChange:Q=>{const I=Number(Q);if(Number.isNaN(I))return;const A=E.find(G=>G.id===I);O({id:I,nombre:(A==null?void 0:A.nombre)??""})},onOptionSelect:Q=>{const I=Q.id;I==null||Number.isNaN(Number(I))||O({id:Number(I),nombre:String(Q.label??"")})}}})]}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"tm-text-left tm-text-[14px] tm-font-semibold tm-text-ink-black_medium",children:"¿Estas seguro?"}),t.jsx("p",{className:"tm-text-left tm-text-[14px] tm-font-semibold tm-text-ink-black_medium",children:r?"Estás eliminando el atraso de la tarea seleccionada":`Esta tarea está atrasada debido a ${(N==null?void 0:N.nombre)??""}`})]}),t.jsxs("div",{className:"tm-my-[11px] tm-flex tm-justify-end tm-gap-3",children:[t.jsx(x.Button,{type:"button",size:"xs",color:"secondary",onClick:()=>{N?D(null):S()},children:N?"Regresar":"Cancelar"}),t.jsx(x.Button,{type:"button",size:"xs",color:"primary",onClick:()=>{D(H),r&&!N?J(r):N&&Z()},children:"Aceptar"})]})]}):t.jsx("div",{className:"tm-flex tm-h-fit tm-w-[288px] tm-translate-x-0 tm-flex-col tm-gap-3 tm-rounded-lg tm-bg-bg-card tm-p-l tm-shadow-lg tm-transition-all tm-duration-200 tm-ease-in-out",children:"No hay motivos de atraso para ésta tarea"})},W=()=>t.jsx(da,{copy:xo(),onMove:()=>{y.current=!0,g({id:s}),S()}}),re=()=>{if(M==="first")return k();if(M==="second")return q();if(M==="third")return ee();if(M==="fourth")return W()},Z=async()=>{if(H)try{await K({taskId:s,projectID:i,motivo:(H==null?void 0:H.id)??null}),S()}catch(E){console.error("Error al crear atraso:",E)}};return t.jsx(t.Fragment,{children:(R&&n===2||!a)&&t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{ref:d,type:"button","aria-label":"Más opciones para mover la tarea",color:"secondary",pill:"pill",size:"xxs",icon:Ce.faEllipsis,disabled:m}),t.jsx(x.Popup,{ref:l,triggerRef:d,popupId:`task-move-menu-${s}`,position:"bottom-right",offset:1,closeOnClick:!1,closeOnClickOutside:!1,popoverArrow:!1,onOpen:()=>{j(!0),F("first")},onClose:()=>j(!1),children:t.jsx("div",{ref:p,className:`
|
|
3
|
+
tm-ease tm-transition-all tm-duration-300
|
|
4
|
+
${M==="second"?"":"tm-translate-x-0"}
|
|
5
|
+
`,children:re()})})]})})},bo=({id:e,idAtraso:a})=>{const[n,s]=u.useState(!1),{completeTask:o}=He();return{checked:n,checkTask:()=>{s(!n),o({id:e,idAtraso:a})}}},ma={checked:"tm-mx-[2px] tm-flex tm-h-[20px] tm-w-[20px] tm-items-center tm-justify-center tm-rounded-full tm-bg-success-regular tm-transition-all",unchecked:"tm-transition-colors"},yo="tm-mx-[2px] tm-flex tm-items-center tm-justify-center tm-rounded-full tm-bg-success-regular tm-transition-all",ua="tm-text-sm tm-flex tm-w-fit tm-max-w-[400px] tm-flex-col tm-gap-m tm-rounded-lg tm-border-l-[5px] tm-border-warning-regular tm-bg-warning-light tm-p-l tm-text-warning-dark tm-shadow-xl",Ga=({id:e,nameRequiredTask:a,statusRequiredTask:n,status:s,idAtraso:o,nameRequiredTaskResponsible:i,name_father_required_task:r,name_father_required_task_responsible:c,repeatsAreCompleted:m=!1})=>{const l=u.useId(),d=`checkbox-${e}-${l}`,{checked:p,checkTask:h}=bo({id:e,idAtraso:o}),g=!!(a&&a!==""&&n===2)||!a,y=!!r,w=s===1&&m,j=()=>t.jsx("label",{htmlFor:d,className:p?ma.checked:ma.unchecked,children:p?t.jsx(x.Icon,{name:ne.faCheck,size:"xs",style:{color:"white"},color:"current"}):t.jsx(x.Icon,{name:ne.faCircle,size:"sm",style:{color:ge.texts.placeholder},color:"current"})});return s===2?t.jsx("div",{className:yo,children:t.jsx(x.Icon,{name:de.faCircleCheck,size:"xs",style:{color:"white"},color:"current"})}):y?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"tm-flex tm-w-fit tm-shrink-0 tm-flex-row tm-flex-nowrap tm-items-center tm-gap-1",children:[t.jsx(Ie,{position:"bottom",popoverArrow:!1,triggerWrapperClassName:"tm-inline-flex tm-items-center",trigger:t.jsx("span",{className:"tm-cursor-help tm-inline-flex","aria-hidden":!0,children:t.jsx(x.Icon,{name:ne.faCircleInfo,size:"sm",style:{color:ge.warning.regular},color:"current"})}),children:t.jsxs("div",{className:ua,children:[t.jsx("p",{className:"tm-w-[210px] tm-font-bold",children:"Tarea padre:"}),t.jsx("p",{children:r}),c&&t.jsxs("p",{className:"tm-font-bold",children:["Responsable:"," ",t.jsx("span",{className:"tm-font-normal",children:c})]}),t.jsx("span",{className:"tm-font-normal tm-italic tm-text-[#919191]",children:"Esta tarea completa automáticamente la tarea padre."})]})}),w&&j()]}),t.jsx("input",{id:d,checked:p,onChange:h,type:"checkbox",className:"tm-hidden","aria-hidden":!0})]}):g?t.jsxs(t.Fragment,{children:[s===1&&j(),t.jsx("input",{id:d,checked:p,onChange:h,type:"checkbox",className:"tm-hidden","aria-hidden":!0})]}):t.jsxs(t.Fragment,{children:[t.jsx(Ie,{position:"bottom",popoverArrow:!1,triggerWrapperClassName:"tm-inline-flex tm-items-center",trigger:t.jsx("span",{className:"tm-cursor-help tm-inline-flex","aria-hidden":!0,children:t.jsx(x.Icon,{name:ne.faCircleInfo,size:"sm",style:{color:ge.warning.regular},color:"current"})}),children:t.jsxs("div",{className:ua,children:[t.jsx("p",{className:"tm-w-[210px] tm-font-bold",children:"Requiere completar su tarea:"}),t.jsx("p",{children:a}),i&&t.jsxs("p",{className:"tm-font-bold",children:["Responsable: ",t.jsx("span",{className:"tm-font-normal",children:i})]})]})}),t.jsx("input",{id:d,checked:p,onChange:h,type:"checkbox",className:"tm-hidden","aria-hidden":!0})]})};function jo({items:e}){var s;const[a,n]=u.useState(1);return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tm-mb-2 tm-mt-4 tm-flex tm-flex-row tm-border-b tm-border-black-light tm-bg-white",children:e.map((o,i)=>t.jsx("div",{className:"tm-border-r tm-border-black-light",children:t.jsx(x.Button,{color:"tertiary",pill:"none",size:"xs",active:a===o.id,onClick:()=>n(o.id),children:o.label},o.id)},o.id))}),t.jsx("div",{className:"tm-flex-1 tm-overflow-y-auto tm-bg-white tm-pt-4",children:(s=e.find(o=>o.id===a))==null?void 0:s.component})]})}function wo({comment:e}){var o,i,r,c,m;const{getImageOBP:a}=he(),n=(c=(r=(i=(o=e==null?void 0:e.autor)==null?void 0:o.imagen)==null?void 0:i.formats)==null?void 0:r.thumbnail)==null?void 0:c.url;function s(l){const d=ct.parseISO(l);return ct.formatDistanceToNow(d,{locale:Pt.es,addSuffix:!0})}return t.jsx("div",{children:t.jsxs("div",{className:"tm-flex tm-flex-row tm-items-start tm-gap-3",children:[t.jsx(Ae,{size:"xxl",imageUrl:n?a(n):"",alt:"@shadcn"}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-4",children:[t.jsxs("div",{className:"tm-flex tm-flex-row tm-items-center tm-gap-4",children:[t.jsx(x.Text,{type:"title",size:"sm",weight:"medium",color:"secondary",children:(m=e==null?void 0:e.autor)==null?void 0:m.nombre}),t.jsx(x.Text,{children:s(e==null?void 0:e.createdAt)})]}),t.jsx(x.Text,{children:e==null?void 0:e.comentario})]})]})})}function vo({currentUser:e,data:a,taskId:n,onNewComment:s}){var f,g,y;const{tasks_api:o,getImageOBP:i}=he(),{control:r,handleSubmit:c,reset:m}=Se.useForm({defaultValues:{comment:""}}),[l,d]=u.useState([]),p=(y=(g=(f=e==null?void 0:e.imagen)==null?void 0:f.formats)==null?void 0:g.thumbnail)==null?void 0:y.url;u.useEffect(()=>{if(a!=null&&a.comentarios){const w=[...a.comentarios].sort((j,b)=>new Date(b.createdAt).getTime()-new Date(j.createdAt).getTime());d(w)}},[a]);const h=async w=>{try{const j={id:Date.now(),autor:{id:e==null?void 0:e.id,email:e==null?void 0:e.email,nombre:e==null?void 0:e.nombre,imagen:e==null?void 0:e.imagen},comentario:w.comment,createdAt:new Date().toISOString(),updatedAt:null};await o.post("/api/comentarios",{data:{autor:e==null?void 0:e.id,comentario:w.comment,tarea:n}}),s(!0),d(b=>[j,...b]),m()}catch(j){console.error("Error al agregar comentario:",j)}};return t.jsxs("div",{className:"tm-flex tm-h-full tm-flex-col tm-gap-4",children:[t.jsxs("form",{onSubmit:c(h),className:"tm-flex tm-flex-row tm-items-center tm-gap-3",children:[t.jsx(Ae,{size:"xxl",imageUrl:p?i(p):"",alt:"@shadcn"}),t.jsx("div",{className:"tm-min-w-0 tm-flex-1",children:t.jsx(Se.Controller,{name:"comment",control:r,rules:{required:"Escribe un comentario"},render:({field:w,fieldState:{error:j}})=>t.jsx(x.Input,{fullWidth:!0,placeholder:"Escribe un comentario",autoComplete:"off",size:"xs",error:j==null?void 0:j.message,...w,value:w.value??""})})})]}),l&&l.map((w,j)=>t.jsx(wo,{comment:w},j))]})}function _o({data:e}){const a={0:{color:"tm-bg-gray-400",label:"Sin estado"},1:{color:"tm-bg-primary-regular",label:"En curso"},2:{color:"tm-bg-success-regular",label:"Finalizada"},3:{color:"tm-bg-success-regular",label:"Finalizada"}},n=s=>s?ct.format(new Date(s),"d MMM",{locale:Pt.es}):"";return t.jsxs("div",{children:[t.jsxs("div",{className:"tm-flex tm-flex-row tm-items-center tm-gap-4",children:[t.jsx(x.Text,{children:"Tareas dependientes"}),t.jsx(x.Text,{className:"tm-flex tm-h-24 tm-w-24 tm-items-center tm-justify-center tm-rounded-full tm-bg-[#E1EBF9] tm-text-xs tm-font-normal tm-text-primary",children:e==null?void 0:e.length})]}),t.jsx("div",{className:"tm-mt-3 tm-flex tm-flex-col tm-gap-2 tm-rounded-lg tm-border tm-border-light-gray-100",children:e==null?void 0:e.map(s=>{var o,i,r,c,m;return t.jsxs("div",{className:"tm-flex tm-w-full tm-flex-row tm-items-center tm-justify-between tm-gap-s tm-px-2 tm-py-1",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2",children:[t.jsx(Ae,{imageUrl:(c=(r=(i=(o=s.responsable)==null?void 0:o.image)==null?void 0:i.formats)==null?void 0:r.thumbnail)==null?void 0:c.url}),t.jsx(x.Text,{children:s==null?void 0:s.texto_corto})]}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-1",children:[t.jsx(x.Text,{children:n(s==null?void 0:s.createdAt)}),t.jsx("div",{className:`tm-block tm-h-4 tm-w-4 tm-rounded-full tm-bg-gray-400 ${((m=a[s==null?void 0:s.estatus])==null?void 0:m.color)??"tm-bg-gray-400"}`})]})]},s.id)})})]})}function To({id:e,texto_largo:a,user_id:n}){const[s,o]=u.useState(a),{updatingTask:i}=He(),r=async()=>{await i({id:e,data:{texto_largo:s},user:n})};return u.useEffect(()=>{o(a)},[a]),t.jsx("div",{className:"tm-mt-16 tm-flex tm-w-full tm-flex-col tm-gap-3",children:t.jsx(x.Input,{fullWidth:!0,label:"Descripción",size:"md",value:s,onChange:c=>o(c.target.value),onBlur:r,autoComplete:"off",placeholder:"Agregar descripción"})})}function Va({isOpen:e,setIsOpen:a,taskId:n}){var j,b,_,M,F,R,N,D,v;const[s,o]=u.useState(null),[i,r]=u.useState(!1),[c,m]=u.useState(!1),[l,d]=u.useState(null),p=(M=(_=(b=(j=s==null?void 0:s.responsable)==null?void 0:j.imagen)==null?void 0:b.formats)==null?void 0:_.thumbnail)==null?void 0:M.url,{tasks_api:h,getImageOBP:f}=he(),{user:g}=we();u.useEffect(()=>{if(e&&n||i){const U=async()=>{const J=await h.get(`/api/detalleTarea/${n}`);o(J==null?void 0:J.data)},K=async()=>{const J=await h.get(`/api/users/${g.id}`);d(J==null?void 0:J.data)};U(),K()}},[e,n,i,g.id,h]);const y=U=>U?ct.format(U,"d MMM yyyy, h:mmaaa",{locale:Pt.es}):"Fecha no disponible",w=[{id:1,label:"Todo",component:t.jsx(vo,{taskId:n,currentUser:l,data:s,onNewComment:r})},{id:2,label:"Dependencias",component:t.jsx(_o,{data:s==null?void 0:s.ids_t_dependientes})}];return e&&Na.createPortal(t.jsxs(t.Fragment,{children:[t.jsx("div",{className:`tm-fixed tm-inset-0 tm-z-20 tm-flex tm-items-center tm-justify-center tm-bg-transparent tm-bg-opacity-50 ${e?"tm-pointer-events-auto tm-block":"tm-pointer-events-none tm-hidden"}`,onClick:()=>a(!1)}),t.jsx("section",{className:`tm-fixed tm-bottom-0 tm-top-0 tm-z-50 tm-flex tm-h-screen tm-w-[550px] tm-items-center tm-justify-center tm-overflow-hidden tm-bg-white tm-bg-opacity-50 tm-shadow-2xl tm-transition-all tm-duration-500 tm-ease-in-out ${e?"tm-pointer-events-auto tm-right-0 tm-block":"tm-pointer-events-none tm-right-[-100%] tm-hidden"}`,children:t.jsxs("div",{className:"tm-flex tm-h-full tm-w-full tm-flex-col tm-overflow-y-scroll tm-border-none tm-bg-white tm-p-16 tm-shadow-xl",children:[t.jsxs("div",{className:"tm-flex tm-w-full tm-flex-row tm-items-center tm-justify-between tm-gap-10 tm-border-none tm-pb-4",children:[t.jsxs("div",{className:"tm-relative tm-flex tm-flex-row tm-items-start tm-gap-8",children:[((F=s==null?void 0:s.id_t_requerida)==null?void 0:F.id)&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tm-cursor-help",onMouseOver:()=>m(!0),onMouseLeave:()=>m(!1),children:t.jsx(x.Icon,{name:ne.faCircleInfo,size:"sm",style:{color:ge.warning.regular},color:"current"})}),c&&(()=>{var K;const U=at(s==null?void 0:s.id_t_requerida);return t.jsxs("div",{style:{top:"25px"},className:"tm-absolute tm-flex tm-w-fit tm-max-w-[400px] tm-flex-col tm-gap-m tm-rounded-lg tm-border-l-[5px] tm-border-warning-regular tm-bg-warning-light tm-p-l tm-text-xs tm-text-warning-dark",children:[t.jsx("p",{className:"tm-font-bold",children:"Requiere completar su tarea:"}),t.jsx("p",{className:"tm-text-2xl tm-font-normal tm-text-neutral-600",children:(K=s==null?void 0:s.id_t_requerida)==null?void 0:K.texto_corto}),U&&t.jsxs("p",{className:"tm-font-bold",children:["Responsable: ",t.jsx("span",{className:"tm-font-normal",children:U})]})]})})()]}),t.jsx("div",{className:"tm-flex tm-flex-row tm-items-center tm-gap-8",children:t.jsxs("h3",{className:"tm-text-base tm-font-semibold tm-text-neutral-900",children:[s==null?void 0:s.texto_corto,(s==null?void 0:s.atraso)&&t.jsx(x.Tooltip,{label:(R=s==null?void 0:s.atraso)==null?void 0:R.motivo,position:"bottom",children:t.jsx("button",{className:"tm-ml-2 tm-inline-block tm-h-fit tm-align-middle",children:t.jsx(x.Icon,{name:ne.faTriangleExclamation,size:"md",style:{color:ge.warning.dark},color:"current"})})})]})})]}),t.jsx(x.Button,{color:"secondary",pill:"pill",size:"xs",onClick:()=>a(!1),icon:ne.faXmark})]}),t.jsx("div",{className:"tm-mt-6 tm-flex tm-w-full tm-flex-row tm-justify-between",children:t.jsxs("span",{className:"tm-text-xs tm-text-light-gray-700",children:[s==null?void 0:s.campania," / ",s==null?void 0:s.nombre_medio]})}),t.jsx(To,{id:n,texto_largo:s==null?void 0:s.texto_largo,user_id:g.id}),t.jsx(x.Accordion,{id:`details-task-detalles-${n}`,title:"Detalles",defaultOpen:!0,className:"tm-mt-6 tm-w-full",headerClassName:"tm-border-b tm-border-black-light tm-pb-4",children:t.jsxs("div",{className:"tm-gap-xy-details tm-grid tm-w-full tm-grid-cols-3 tm-p-4",children:[t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Responsable"}),(N=s==null?void 0:s.responsable)!=null&&N.nombre?t.jsxs("div",{className:"tm-flex tm-flex-row tm-items-center tm-gap-8",children:[t.jsx(Ae,{size:"xxl",imageUrl:p?f(p):"",alt:"@shadcn"}),t.jsx(x.Text,{children:(D=s==null?void 0:s.responsable)==null?void 0:D.nombre})]}):t.jsx(x.Text,{children:"Sin responsable"})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Equipo asignado"}),t.jsx("div",{className:"tm-flex tm-flex-row tm-gap-8",children:t.jsx(x.Text,{children:((v=s==null?void 0:s.equipo)==null?void 0:v.nombre)??"Sin equipo"})})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Prioridad"}),t.jsx(Ha,{priority:parseInt(s==null?void 0:s.prioridad)||0,id:n,withLabel:!0})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Lista"}),t.jsx("div",{className:"tm-flex tm-flex-row tm-gap-8",children:t.jsx(x.Text,{children:(s==null?void 0:s.lista)??"Sin lista"})})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Fecha estimada de inicio"}),t.jsx(x.Text,{children:y(s==null?void 0:s.f_inicio_estimada)})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Fecha estimada de fin"}),t.jsx(x.Text,{children:y(s==null?void 0:s.f_fin_estimada)})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Fecha de fin"}),t.jsx(x.Text,{children:y(s==null?void 0:s.ffin)})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Creado"}),t.jsx(x.Text,{children:y(s==null?void 0:s.createdAt)})]}),t.jsxs("div",{className:"tm-flex tm-w-auto tm-flex-col tm-gap-8",children:[t.jsx("span",{className:" tm-text-sm tm-font-semibold tm-leading-[100%] tm-tracking-normal",children:"Última modificación"}),t.jsx(x.Text,{children:y(s==null?void 0:s.updatedAt)})]})]})}),t.jsx(jo,{items:w})]})})]}),document.body)}class Co{static toPauseReasons(a){return{id:a.id,motivo_imj:a.motivo_imj}}}const No=async({tasks_api:e})=>{try{const a=await e.get("/api/motivos");return be(a.data).map(Co.toPauseReasons)}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},So=()=>{const{tasks_api:e}=he();return{pauseReasons:me.useQuery({queryKey:["pause_task_reasons"],queryFn:()=>No({tasks_api:e}),staleTime:1e3*60*60*24})}};class Eo{static toKanbanTasks(a){var i,r,c,m,l,d,p,h,f,g,y,w,j;const n=at(a==null?void 0:a.id_t_requerida),s=at(a==null?void 0:a.tarea_padre);let o=[];return a!=null&&a.responsable&&o.push({id:a.responsable.id,name:a.responsable.nombre,image:(l=(m=(c=(r=(i=a.responsable)==null?void 0:i.userOBP)==null?void 0:r.imagen)==null?void 0:c.formats)==null?void 0:m.thumbnail)==null?void 0:l.url,role:((d=a.responsable.userOBP)==null?void 0:d.role)||{id:0,name:""}}),(p=a==null?void 0:a.equipo)!=null&&p.miembros&&a.equipo.miembros.forEach(b=>{var _,M,F,R,N;o!=null&&o.find(D=>D.id===b.idUser.id)||b.idUser&&o.push({id:b.idUser.id,name:b.idUser.nombre,image:(R=(F=(M=(_=b==null?void 0:b.userOBP)==null?void 0:_.imagen)==null?void 0:M.formats)==null?void 0:F.thumbnail)==null?void 0:R.url,role:((N=b.userOBP)==null?void 0:N.role)||{id:0,name:""}})}),{paused:a==null?void 0:a.pausada,repeats:a==null?void 0:a.repeticiones_realizadas,repeatsToDo:a==null?void 0:a.repeticiones,comments:0,nameProject:(h=a==null?void 0:a.proyecto)==null?void 0:h.nombre,idProject:(f=a==null?void 0:a.proyecto)==null?void 0:f.id,willBePaused:a.es_pausable,difficulty:a.nivel_dificultad,endDate:new Date(a.ffin),id:a.id,priority:a.prioridad??0,status:a.estatus,task:a.texto_corto,users:o,responsible:((g=a==null?void 0:a.responsable)==null?void 0:g.id)??null,name_father_required_task:((y=a==null?void 0:a.tarea_padre)==null?void 0:y.texto_corto)??null,name_father_required_task_responsible:s,statusRequiredTask:((w=a.id_t_requerida)==null?void 0:w.estatus)??null,nameRequiredTask:((j=a.id_t_requerida)==null?void 0:j.texto_corto)??null,nameRequiredTaskResponsible:n,medioName:(a==null?void 0:a.nombre_medio)??null,atraso:(a==null?void 0:a.atraso)??null,categoria:(a==null?void 0:a.categoria)??null,...(a==null?void 0:a.cambio_arte)&&{cambio_arte:a==null?void 0:a.cambio_arte}}}}const dt=async({filters:e,tasks_api:a})=>{try{const s=(await a.get("/api/listado_tareas?populate=*",{params:{...e,cancelada:!1}})).data.tareas.map(be),o=new Set;if(s.forEach(i=>{var r;(r=i==null?void 0:i.id_t_requerida)!=null&&r.id&&o.add(i.id_t_requerida.id)}),o.size>0){const i=Array.from(o),r=Pe.stringify({filters:{id:{$in:i}},populate:{responsable:{fields:["id","nombre"]},equipo:{fields:["id","nombre"]}}},{encodeValuesOnly:!0});try{const c=await a.get(`/api/tareas?${r}`),m=be(c.data.data||c.data),l=Array.isArray(m)?m:[m],d=new Map(l.map(p=>[p.id,p]));s.forEach(p=>{var h;if((h=p==null?void 0:p.id_t_requerida)!=null&&h.id){const f=d.get(p.id_t_requerida.id);f&&(p.id_t_requerida={...p.id_t_requerida,responsable:f.responsable||null,equipo:f.equipo||null})}})}catch{}}return s.map(Eo.toKanbanTasks)}catch(n){throw console.log({error:n}),`Error al obtener las tareas: ${n}`}},qt=30,zt=e=>{var a;if(e!=null&&e.hasNextPage){const n=(a=e==null?void 0:e.data)==null?void 0:a.pages[e.data.pages.length-1];(n==null?void 0:n.length)===qt&&(e==null||e.fetchNextPage())}},$e=e=>({pagination:{page:e,pageSize:qt,withCount:!0}}),Wa=()=>{var l;const e=me.useQueryClient(),{tasks_api:a}=he(),{user:n}=we(),{filters:s}=De(),[o,i]=u.useState(0),[r,c]=u.useState({owner:{user:n.id,config:((l=s==null?void 0:s.owner)==null?void 0:l.config)??"yo_y_mis_equipos",role:n.role},status:"por_hacer"}),m=me.useInfiniteQuery({initialPageParam:1,queryKey:["to_do_tasks",r],queryFn:({pageParam:d})=>dt({filters:{...r,status:"por_hacer",...$e(d)},tasks_api:a}),staleTime:1e3*60*60*24,getNextPageParam:(d,p)=>p.length+1});return u.useEffect(()=>{var d;Object.keys(s).length>0&&c({...s,owner:{user:n.id,config:((d=s==null?void 0:s.owner)==null?void 0:d.config)??"yo_y_mis_equipos",role:n.role},status:"por_hacer"})},[s]),u.useEffect(()=>{e.invalidateQueries({queryKey:["to_do_tasks",r]})},[r]),u.useEffect(()=>{(async()=>{const p=await a.get("/api/listado_tareas",{params:{...r,status:"por_hacer",cancelada:!1,...$e(1),tasks_api:a,justCount:!0}});i(p.data.total)})()},[r,m==null?void 0:m.data]),{toDoTasks:m,total:o,filtersToSend:r}};function Po(e){return(e??[]).map(a=>({id:a.id,label:a.motivo_imj}))}const Ao=({idTask:e,setOpen:a,paused:n})=>{const s=me.useQueryClient(),{toDoTasks:o,filtersToSend:i}=Wa(),[r,c]=u.useState(!1),[m,l]=u.useState(null),{tasksProject:d}=Je(),{postPauseTask:p,postReanudeTask:h}=He(),{pauseReasons:f}=So(),g=Po(f==null?void 0:f.data),y=async()=>{try{if(m==null)return;if(a(!1),await p({id:e,motiveId:m}),await s.invalidateQueries({queryKey:["to_do_tasks",i]}),await s.invalidateQueries({queryKey:["tasksProject"]}),o&&typeof o.refetch=="function"||d&&typeof d.refetch=="function"){const j=await o.refetch(),b=await d.refetch();return[j,b]}}catch(j){console.error("Error al pausar la tarea:",j)}},w=async()=>{try{if(a(!1),await h({id:e}),await s.invalidateQueries({queryKey:["to_do_tasks",i]}),await s.invalidateQueries({queryKey:["tasksProject"]}),o&&typeof o.refetch=="function"||d&&typeof d.refetch=="function"){const j=await o.refetch(),b=await d.refetch();return[j,b]}}catch(j){console.error("Error al reanudar la tarea:",j)}};return t.jsx("div",{className:"tm-flex tm-w-[300px] tm-max-w-[300px] tm-items-center !tm-p-4",children:t.jsxs("div",{className:"tm-flex tm-w-full tm-flex-col tm-gap-s ",children:[t.jsx("h6",{className:"tm-font-regular tm-text-texts-subtext tm-truncate tm-text-xl",children:"Pausar tarea:"}),r?t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-s",children:[t.jsx("p",{className:"tm-text-xl tm-font-medium tm-text-neutral-600",children:"Esta acción detendrá la campaña en curso."}),t.jsx("p",{className:"tm-text-xl tm-font-medium tm-text-neutral-600",children:"¿Estás seguro de continuar?"})]}):n?t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-s",children:[t.jsx("p",{className:"tm-text-xl tm-font-medium tm-text-neutral-600",children:"Esta acción reanudará la campaña en curso."}),t.jsx("p",{className:"tm-text-xl tm-font-medium tm-text-neutral-600",children:"¿Estás seguro de continuar?"})]}):t.jsx(x.Dropdown,{field:{placeholder:"Selecciona una razón"},items:{options:g,idName:"id"},values:{value:m??""},menuSearch:{searchable:!0,searchPlaceholder:"Buscar"},popover:{absolute:!1,closeOnClickOutside:!0,dropdownId:`task-pause-motivo-${e}`,popoverZIndex:1200},events:{onValueChange:j=>{const b=Number(j);Number.isNaN(b)||l(b)},onOptionSelect:j=>{const b=Number(j.id);Number.isNaN(b)||l(b)}}}),t.jsxs("div",{className:"tm-mt-5 tm-flex tm-w-full tm-justify-end tm-gap-m",children:[t.jsx(x.Button,{type:"button",onClick:()=>a(!1),size:"xs",color:"secondary",children:"Cancelar"}),n?t.jsx(x.Button,{type:"button",onClick:()=>w(),size:"xs",color:"primary",children:"Si, reanudar"}):t.jsx(x.Button,{type:"button",disabled:!m,onClick:()=>r?y():c(!0),size:"xs",color:"primary",children:"Aceptar"})]})]})})},Qa=({idTask:e,paused:a,popupId:n,children:s})=>{const o=u.useRef(null),i=u.useRef(null),[r,c]=u.useState(!1),[m,l]=u.useState(0),d=`task-pause-motivo-${e}`,p=u.useCallback(()=>{var h;(h=o.current)==null||h.close()},[]);return u.useEffect(()=>{if(!r)return;const h=f=>{const g=f.target;g instanceof Element&&(g.closest(`[data-popup-id="${n}"]`)||g.closest(`[data-dropdown-id="${d}"]`))||p()};return window.addEventListener("scroll",h,!0),document.addEventListener("scroll",h,!0),()=>{window.removeEventListener("scroll",h,!0),document.removeEventListener("scroll",h,!0)}},[r,p,n,d]),t.jsxs(t.Fragment,{children:[s(i),t.jsx(x.Popup,{ref:o,triggerRef:i,popupId:n,position:"bottom-left",offset:5,closeOnClick:!1,closeOnClickOutside:!1,popoverArrow:!1,onOpen:()=>{c(!0),l(h=>h+1)},onClose:()=>c(!1),children:t.jsx(Ao,{idTask:e,paused:a,setOpen:h=>{h||p()}},m)})]})},Io=({id:e,task:a,endDate:n,users:s,willBePaused:o,nameProject:i,comments:r,priority:c,difficulty:m,responsible:l,nameRequiredTask:d,nameRequiredTaskResponsible:p,statusRequiredTask:h,status:f,repeatsToDo:g,repeats:y,medioName:w,paused:j,idProject:b,atraso:_,categoria:M,cambio_arte:F,name_father_required_task:R,name_father_required_task_responsible:N,boardColumnTitle:D,isBulkColumnLocked:v=!1})=>{const[U,K]=u.useState(!1),J=u.useId(),{reasignResponsible:H,updateUnitys:O}=He(),{getOBPUrlApi:S}=he(),[B,k]=u.useState(y??0),q=!!(g&&y===g),ee=!g||g===1,W=f===0,{user:re}=we(),Z=Ot(),E=!!(Z!=null&&Z.selectedTaskIds.includes(e)),z=Bt({status:f,nameRequiredTask:d,statusRequiredTask:h,repeatsToDo:g,repeats:y}),Q=!!Z&&!!D&&D!=="Completadas"&&!v,I=Q&&z,A=Q&&!z&&!!(Z!=null&&Z.isBulkSessionActive),G=!!(Z!=null&&Z.isMultiSelectActive&&I),P=!I||!!(Z!=null&&Z.isBulkLoading),C=ie=>{!Z||!D||P||Z.toggleTaskSelection(e,D)},$=()=>t.jsxs("div",{className:"tm-relative tm-flex tm-h-fit tm-w-full tm-items-center tm-justify-between",children:[t.jsxs("div",{className:"tm-flex tm-min-w-0 tm-flex-1 tm-flex-row tm-items-start tm-gap-[8px]",children:[f<2&&(R||q||ee||W)&&t.jsx("span",{"data-prevent-bulk-select":!0,children:t.jsx(Ga,{id:e,nameRequiredTask:d??"",statusRequiredTask:h??0,status:f,idAtraso:_==null?void 0:_.atrasoId,nameRequiredTaskResponsible:p,name_father_required_task:R,name_father_required_task_responsible:N,repeatsAreCompleted:q})}),t.jsx("p",{className:"tm-w-full tm-overflow-hidden tm-text-ellipsis tm-text-nowrap tm-text-base tm-text-neutral-900","data-prevent-bulk-select":!0,onClick:ie=>{ie.stopPropagation(),K(!0)},children:a})]}),z&&t.jsxs("div",{className:"tm-flex tm-shrink-0 tm-items-center tm-gap-2","data-prevent-bulk-select":!0,children:[Z?t.jsx("div",{className:"tm-flex tm-items-center tm-pt-0.5 tm-pr-2",children:t.jsx(x.Checkbox,{id:`kanban-bulk-select-${e}-${J}`,size:"sm",checked:E,disabled:P,onChange:C})}):null,t.jsx(Ka,{id:e,nameRequiredTask:d,status:f,statusRequiredTask:h,projectID:b,atrasoId:_==null?void 0:_.atrasoId,categoria:M,disabled:G})]})]}),L={0:{title:"Muy fácil",color:ge.primary.regular},1:{title:"Fácil",color:ge.success.regular},2:{title:"Media",color:ge.warning.regular},3:{title:"Difícil",color:ge.danger.regular},4:{title:"Muy difícil",color:ge.danger.dark}},T={title:"Sin dato",color:ge.texts.subtext},Y=(()=>{const ie=m;if(typeof ie!="number"||!Number.isFinite(ie))return T;const te=Math.trunc(ie);return te<0||te>4?T:L[te]??T})(),ae=ie=>{k(te=>ie==="minus"?Math.max(0,te-1):Math.min(g,te+1))},le=ie=>{var te;return((te=ie==null?void 0:ie.charAt(0))==null?void 0:te.toUpperCase())??""},X=ie=>ie==="Venta"?"accent":"danger",se=v||!!(Z!=null&&Z.isBulkLoading),ce=A?"tm-cursor-not-allowed tm-opacity-60 hover:tm-border-cards hover:tm-bg-white":"tm-cursor-pointer hover:tm-border-light-gray-100 hover:tm-border-primary-regular hover:tm-bg-primary-light";return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:`tm-relative tm-h-fit tm-max-w-[350px] tm-rounded-lg tm-border tm-p-[12px_12px] tm-transition-all tm-duration-300 ${ce} ${E?"tm-border-blue-500 tm-bg-primary-light":"tm-border-transparent tm-bg-white"} ${se?"tm-pointer-events-none":""}`,children:[t.jsx($,{}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-[4px] tm-py-2",children:[t.jsx("p",{className:"tm-font-regular tm-max-w-[250px] tm-truncate tm-text-xs tm-text-texts-subtext",children:i}),w&&t.jsx("p",{className:"tm-text-xl",children:w})]}),F&&t.jsx(x.Badge,{label:F.nombre,color:"gray",icon:ne.faImage,size:"md",theme:"solid"}),t.jsxs("div",{"data-prevent-bulk-select":!0,className:"tm-relative tm-flex tm-h-fit tm-w-full tm-items-center tm-justify-between tm-pb-1 tm-pt-5",children:[t.jsxs("div",{className:"tm-relative tm-flex tm-items-center",children:[t.jsx(Ua,{responsible:l,role:re==null?void 0:re.role,status:f,users:s.filter(ie=>l?ie.id===l:!0).map(ie=>kt(ie,S())),onClick:async(ie,te)=>{await H({idNewResponsible:ie,id:e,typeOfSelect:te})}}),o&&t.jsx(Qa,{idTask:e,paused:j,popupId:`task-pause-menu-${e}`,children:ie=>t.jsx("button",{ref:ie,type:"button",className:"tm-font-regular tm-flex !tm-h-[32px] !tm-w-[32px] tm-items-center tm-justify-center tm-gap-2 tm-text-sm tm-text-gray-400",children:t.jsx(x.Icon,{name:j?ne.faPlay:ne.faPause,size:"xs",color:"current"})})})]}),t.jsxs("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-gap-m",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2",children:[t.jsx(x.Badge,{label:le((M==null?void 0:M.tipo)??"P"),color:X((M==null?void 0:M.tipo)??"Preventa"),size:"sm",theme:"solid"}),_&&t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faTriangleExclamation,size:"sm",style:{color:"#C62E1F"},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-p-5 tm-text-sm",style:{color:"#C62E1F"},children:`Tarea atrasada debido a: ${_==null?void 0:_.motivo}`})}),t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faRhombus,size:"sm",style:{color:Y.color},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-p-5 tm-text-sm",style:{color:Y.color},children:`Dificultad ${Y.title}`})}),t.jsx(Ha,{priority:c,id:e}),!g||g&&f===0&&t.jsxs(t.Fragment,{children:[t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:ge.texts.subtext},color:"current"}),t.jsx("p",{className:"tm-font-regular tm-text-sm tm-text-texts-subtext",children:`${n.getDate()} ${Mt(n.getMonth()).slice(0,3)}`})]})]}),f===1&&g&&g>0&&t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-m",children:[t.jsx("p",{className:"tm-pr-[5px] tm-text-[10px] tm-text-texts-placeholder",children:"unidades"}),t.jsx("button",{onClick:()=>ae("minus"),className:"tm-mr-[4px] tm-flex tm-w-[0] tm-items-center tm-justify-center tm-rounded-full tm-bg-gray-200 hover:tm-bg-gray-400",children:t.jsx(x.Icon,{name:ne.faCircleMinus,size:"xs",style:{color:ge.texts.placeholder},color:"current"})}),t.jsx("p",{className:"tm-text-[10px] tm-text-texts-placeholder",children:`${B??0} / ${g??0}`}),t.jsx("button",{onClick:()=>ae("plus"),className:"tm-ml-[4px] tm-flex tm-w-[0] tm-items-center tm-justify-center tm-rounded-full tm-bg-gray-200 hover:tm-bg-gray-400",children:t.jsx(x.Icon,{name:ne.faCirclePlus,size:"xs",style:{color:ge.texts.placeholder},color:"current"})}),t.jsx("button",{className:"tm-ml-[4px] tm-rounded-md tm-bg-primary-medium tm-px-m tm-py-s tm-text-xs tm-text-brand",onClick:()=>{O({repeats:B,id:e})},children:"Agregar Unidad"})]})]})]}),r>0&&t.jsx("div",{className:"tm-mt-4 tm-border-t tm-border-light-gray-100 tm-pt-2",children:t.jsxs("button",{type:"button","data-prevent-bulk-select":!0,onClick:ie=>{ie.stopPropagation(),K(!0)},className:"tm-flex tm-items-center tm-gap-2",children:[t.jsx(x.Icon,{name:ne.faComment,size:"xs",color:"current"}),t.jsx("span",{className:"tm-font-regular tm-text-xl tm-text-gray-400",children:r})]})})]}),t.jsx(Va,{taskId:e,isOpen:U,setIsOpen:K})]})},mt=({title:e,tasks:a,loadNextPage:n,isFetching:s,total:o,bulkSelectAllIds:i})=>{const r=u.useRef(null),c=u.useRef(null),m=u.useRef(!1);u.useEffect(()=>{var w;r!=null&&r.current&&(c!=null&&c.current)&&(c.current.style.minHeight=`${((w=r==null?void 0:r.current)==null?void 0:w.clientHeight)-300}px`)},[r==null?void 0:r.current]);const l=w=>{if(m.current)return;const{scrollTop:j,clientHeight:b,scrollHeight:_}=w==null?void 0:w.target,M=j/(_-b)*100;M<=95||M>=95&&(m.current=!0,n&&n(),setTimeout(()=>{m.current=!1},200))},d={"Por hacer":"tm-border-texts-placeholder",Trabajando:"tm-border-primary-regular",Completadas:"tm-border-success-regular"},p=Ot(),h=e,f=!!(p!=null&&p.baseColumn&&p.baseColumn!==e),g=!!p&&e!=="Completadas"&&(p==null?void 0:p.isBulkSessionActive)&&p.baseColumn===e&&typeof i=="function",y=()=>{if(!(!p||!i)){if(p.isFullColumnSelected){p.deselectAllSelectedTasks();return}p.selectEntireColumn(h,i)}};return t.jsxs("div",{ref:r,className:`tm-relative tm-flex tm-h-full tm-min-h-[100%] tm-w-fit tm-min-w-[400px] tm-max-w-[400px] tm-flex-col tm-overflow-hidden tm-rounded-lg tm-border-t-4 tm-bg-light-gray-50 tm-p-[16px] ${d[e]} ${f?"tm-opacity-40":""}`,children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-justify-between",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-justify-between tm-w-full",children:[t.jsx("p",{className:"tm-text-sm",children:e}),g&&t.jsx("button",{type:"button",className:"tm-text-base tm-text-brand disabled:tm-cursor-not-allowed disabled:tm-opacity-50 tm-mx-3",disabled:p==null?void 0:p.isBulkLoading,onClick:y,children:p!=null&&p.isBulkLoading?"Cargando…":p!=null&&p.isFullColumnSelected?"Quitar Selección":"Seleccionar todas"})]}),t.jsx("div",{className:"tm-flex tm-items-center tm-gap-[8px]",children:t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-[4px]",children:[t.jsx(x.Icon,{name:ne.faFiles,size:"sm",color:"secondary"}),t.jsx("p",{className:"tm-text-base tm-text-texts-placeholder",children:o??0})]})})]}),t.jsxs("div",{ref:c,className:"tm-flex tm-h-full tm-max-w-[350px] tm-flex-col tm-gap-[12px] tm-overflow-y-auto tm-pb-[200px] tm-pt-4 tm-scrollbar-none hover:tm-border-light-gray-100 hover:tm-bg-light-gray-50 focus:tm-border-light-gray-100 focus:tm-bg-light-gray-50 focus:tm-outline-none",onScroll:l,children:[a==null?void 0:a.map(w=>t.jsx(Io,{...w,boardColumnTitle:p?h:void 0,isBulkColumnLocked:!!(p&&f)},w.id)),s?t.jsx(Zn,{}):t.jsx("p",{className:"tm-text-center tm-text-sm tm-text-light-gray-900",children:"No hay más tareas por mostrar..."})]})]})},pa=[{label:"Tipo de dependencia 2",type:"select",id:"dependency",options:[{id:"con",name:"Con dependencia"},{id:"sin",name:"Sin dependencia"},{id:"ambas",name:"Ambas"}]},{label:"Por responsable",type:"select",id:"owner.config",options:[{id:"yo",name:"Mis tareas"},{id:"yo_y_mis_equipos",name:"Tareas mías y de mis equipos"},{id:"mis_equipos",name:"Tareas de mis equipos"}]},{label:"Por dificultad",type:"select",id:"difficulty",options:[{id:1,name:"Muy facil"},{id:2,name:"Facil"},{id:3,name:"Media"},{id:4,name:"Dificil"},{id:5,name:"Muy dificil"}]}],Do=()=>{const{user:e}=we(),[a,n]=u.useState([...pa]),s=[{roles:["Project Manager","Manager","Operation Manager"],id:"owner.config",filters:[{id:"todas",name:"Todas las tareas"}]}];return u.useEffect(()=>{const o=[...pa];s.forEach(c=>{if(c.roles.includes(e.role)){const m=o.find(l=>l.id===c.id);m&&(m.options.some(d=>d.id==="todas")||(m.options=[{id:"todas",name:"Todas las tareas"},...m.options]))}});const i=JSON.stringify(a),r=JSON.stringify(o);i!==r&&n(o)},[e.role]),{filters:a}},Fo="/api/tareas/bulk-update-status";async function Mo(e,a){const{data:n}=await e.post(Fo,a);return n}function ko(e){var a,n,s,o;if(Ye.isAxiosError(e)){const i=(a=e.response)==null?void 0:a.status,r=(n=e.response)==null?void 0:n.data;if(i===400){if(typeof r=="string"&&r.trim().length>0)return r.trim();if(r&&typeof r=="object"){const c=r.message;if(typeof c=="string"&&c.trim())return c.trim();const m=(s=r.details)==null?void 0:s.errors,l=(o=m==null?void 0:m[0])==null?void 0:o.message;if(typeof l=="string"&&l.trim())return l.trim()}return"Los datos enviados no son válidos. Revisa la selección e inténtalo de nuevo."}return typeof r=="string"&&r.trim().length>0?r.trim():e.message||"No se pudo actualizar las tareas."}return e instanceof Error?e.message:"No se pudo actualizar las tareas."}function Oo(){const{tasks_api:e}=he(),{user:a}=we();return me.useMutation({mutationKey:["tareas","bulk-update-status"],mutationFn:async n=>{const s=n.user_id??(a==null?void 0:a.id);if(s==null||s<1)throw new Error("No hay usuario válido para la actualización masiva.");try{return await Mo(e,{...n,user_id:s})}catch(o){throw new Error(ko(o))}}})}const xt={MOVE_TO_TRABAJANDO:"kanban-bulk-move-trabajando",MOVE_TO_POR_HACER:"kanban-bulk-move-por-hacer",MOVE_TO_COMPLETADAS:"kanban-bulk-move-completadas"};function Lo(e){const{isBulkLoading:a}=e;return[{type:"button",label:"Cancelar",icon:ne.faXmark,color:"secondary",pill:"pill",disabled:a,onClick:()=>{a||(e.setPendingTargetStatus(null),e.setActiveButtonId(null))}},{type:"button",label:"Confirmar",icon:ne.faCheck,color:"secondary",pill:"pill",disabled:a,onClick:()=>{a||e.onConfirmBulkMove()}}]}const bt="secondary";function Bo(e){const a=Lo({setActiveButtonId:e.setActiveButtonId,setPendingTargetStatus:e.setPendingTargetStatus,onConfirmBulkMove:e.onConfirmBulkMove,isBulkLoading:e.isBulkLoading});return e.baseColumn==="Por hacer"?[{id:xt.MOVE_TO_TRABAJANDO,label:"Mover a trabajando",icon:ne.faArrowRight,color:bt,disabled:e.isBulkLoading,onClick:()=>{e.isBulkLoading||e.setPendingTargetStatus(1)},addons:a}]:e.baseColumn==="Trabajando"?[{id:xt.MOVE_TO_POR_HACER,label:"Mover a por hacer",icon:ne.faArrowLeft,color:bt,disabled:e.isBulkLoading,onClick:()=>{e.isBulkLoading||e.setPendingTargetStatus(0)},addons:a},{id:xt.MOVE_TO_COMPLETADAS,label:"Mover a completadas",icon:ne.faArrowRight,color:bt,disabled:e.isBulkLoading,onClick:()=>{e.isBulkLoading||e.setPendingTargetStatus(2)},addons:a}]:[]}const Ro="Seleccionados";function Xa(){const e=Ot(),[a,n]=u.useState(null),s=a!==null,o=me.useQueryClient(),{mutate:i}=Oo(),r=(e==null?void 0:e.selectedTaskIds.length)??0;u.useEffect(()=>{r===0&&n(null)},[r]);const c=u.useCallback(()=>{e!=null&&e.isBulkLoading||e==null||e.setPendingTargetStatus(null)},[e]),m=u.useCallback(()=>{n(null),e==null||e.exitBulkSelectionMode()},[e]),l=u.useCallback(()=>{if(!e)return;const p=e.pendingTargetStatus,h=e.selectedTaskIds;if(p==null||h.length===0)return;const f={tasks_ids:[...h],estatus:p,...p===2?{ended_at:new Date().toISOString()}:{}};e.setIsBulkLoading(!0),i(f,{onSettled:()=>{e.setIsBulkLoading(!1)},onSuccess:async()=>{await e.invalidateAfterBulkSuccess(o),n(null),e.exitBulkSelectionMode()},onError:()=>{n(null),e.setPendingTargetStatus(null)}})},[e,i,o]),d=u.useMemo(()=>e?Bo({baseColumn:e.baseColumn,setPendingTargetStatus:e.setPendingTargetStatus,setActiveButtonId:n,onConfirmBulkMove:l,isBulkLoading:e.isBulkLoading}):[],[e,l]);return!e||r===0||e.baseColumn!=="Por hacer"&&e.baseColumn!=="Trabajando"?null:t.jsx(x.Toolbar,{visible:!0,count:r,text:Ro,activeButtonId:a,onActiveButtonIdChange:n,onBackClick:c,buttons:d,onClose:m,showCounterInButtonsView:!s,showBackButton:!s,showCloseButton:!s})}const Ya=["to_do_tasks","working_tasks","done_tasks"],qo="tasksProject";function zo(e){return Promise.all(Ya.map(a=>e.invalidateQueries({queryKey:[a]}))).then(()=>{})}function $o(e){return Promise.all(Ya.flatMap(a=>[e.invalidateQueries({queryKey:[a]}),e.refetchQueries({queryKey:[a]})])).then(()=>{})}function Uo(e){return e.invalidateQueries({queryKey:[qo]}).then(()=>{})}const Ho=["Por hacer","Trabajando","Completadas"],Ko=()=>{const{defineFields:e}=De(),{tasksProject:a}=Je(),{filters:n}=Do();u.useEffect(()=>{(async()=>{let i=[...n];e(i)})()},[]);const s=u.useMemo(()=>{var o;return(o=a==null?void 0:a.data)==null?void 0:o.filter(i=>{var r;return((r=i==null?void 0:i.tasks)==null?void 0:r.length)===0}).reduce((i,r)=>(i[r.status]=i[r.status]||[],i[r.status].push(r),i),{})},[a==null?void 0:a.data]);return t.jsxs(Ra,{invalidateAfterBulkSuccess:Uo,children:[t.jsx(Xa,{}),t.jsx("div",{className:"tm-relative tm-flex tm-h-full tm-min-h-[100%] tm-w-full tm-gap-4",children:Ho.map((o,i)=>{const r=(s==null?void 0:s[i])??[];return t.jsx(mt,{total:r.length,title:o,tasks:r,isFetching:a==null?void 0:a.isFetching,isLoadingData:a==null?void 0:a.isLoading,bulkSelectAllIds:()=>Promise.resolve(r.filter(c=>Bt({status:c.status,nameRequiredTask:c.nameRequiredTask,statusRequiredTask:c.statusRequiredTask,repeatsToDo:c.repeatsToDo,repeats:c.repeats})).map(c=>c.id))},o)})})]})};async function Ja(e){const a=[];let n=1;for(;;){const s=await dt({filters:{...e.filters,status:e.status,...$e(n)},tasks_api:e.tasks_api});for(const o of s)Bt({status:o.status,nameRequiredTask:o.nameRequiredTask,statusRequiredTask:o.statusRequiredTask,repeatsToDo:o.repeatsToDo,repeats:o.repeats})&&a.push(o.id);if(s.length<qt)break;n+=1}return a}const Go=()=>{var i,r;const{tasks_api:e}=he(),{toDoTasks:a,total:n,filtersToSend:s}=Wa(),o=[...((r=(i=a==null?void 0:a.data)==null?void 0:i.pages)==null?void 0:r.flat())??[]];return t.jsx(mt,{total:n,title:"Por hacer",tasks:o,loadNextPage:()=>zt(a),isFetching:a==null?void 0:a.isFetching,isLoadingData:a==null?void 0:a.isLoading,bulkSelectAllIds:()=>Ja({tasks_api:e,filters:s,status:"por_hacer"})})},Vo=()=>{var l;const e=me.useQueryClient(),{tasks_api:a}=he(),{user:n}=we(),{filters:s}=De(),[o,i]=u.useState(0),[r,c]=u.useState({owner:{user:n.id,config:((l=s==null?void 0:s.owner)==null?void 0:l.config)??"yo_y_mis_equipos",role:n.role},status:"trabajando"}),m=me.useInfiniteQuery({initialPageParam:1,queryKey:["working_tasks",r],queryFn:({pageParam:d})=>dt({filters:{...r,status:"trabajando",...$e(d)},tasks_api:a}),staleTime:1e3*60*60*24,getNextPageParam:(d,p)=>p.length+1});return u.useEffect(()=>{var d;Object.keys(s).length>0&&c({...s,owner:{user:n.id,config:((d=s==null?void 0:s.owner)==null?void 0:d.config)??"yo_y_mis_equipos",role:n.role},status:"trabajando"})},[s]),u.useEffect(()=>{e.invalidateQueries({queryKey:["working_tasks",r]})},[r]),u.useEffect(()=>{(async()=>{const p=await a.get("/api/listado_tareas",{params:{...r,status:"trabajando",cancelada:!1,...$e(1),tasks_api:a,justCount:!0}});i(p.data.total)})()},[r,m==null?void 0:m.data]),{workingTasks:m,total:o,filtersToSend:r}},Wo=()=>{var i,r;const{tasks_api:e}=he(),{workingTasks:a,total:n,filtersToSend:s}=Vo(),o=[...((r=(i=a==null?void 0:a.data)==null?void 0:i.pages)==null?void 0:r.flat())??[]];return t.jsx(mt,{total:n,title:"Trabajando",tasks:o,loadNextPage:()=>zt(a),isFetching:a==null?void 0:a.isFetching,bulkSelectAllIds:()=>Ja({tasks_api:e,filters:s,status:"trabajando"})})},Qo=()=>{var l;const e=me.useQueryClient(),{user:a}=we(),{tasks_api:n}=he(),{filters:s}=De(),[o,i]=u.useState(0),[r,c]=u.useState({owner:{user:a.id,config:((l=s==null?void 0:s.owner)==null?void 0:l.config)??"yo_y_mis_equipos",role:a.role},status:"completadas"}),m=me.useInfiniteQuery({initialPageParam:1,queryKey:["done_tasks",r],queryFn:({pageParam:d})=>dt({filters:{...r,status:"completadas",...$e(d)},tasks_api:n}),staleTime:1e3*60*60*24,getNextPageParam:(d,p)=>p.length+1});return u.useEffect(()=>{var d;Object.keys(s).length>0&&c({...s,owner:{user:a.id,config:((d=s==null?void 0:s.owner)==null?void 0:d.config)??"yo_y_mis_equipos",role:a.role},status:"completadas"})},[s]),u.useEffect(()=>{e.invalidateQueries({queryKey:["done_tasks",r]})},[r]),u.useEffect(()=>{(async()=>{const p=await n.get("/api/listado_tareas",{params:{...r,status:"completadas",cancelada:!1,...$e(1),justCount:!0,tasks_api:n}});i(p.data.total)})()},[m==null?void 0:m.data,r]),{doneTasks:m,total:o,filtersToSend:r}},Xo=()=>{var s,o;const{doneTasks:e,total:a}=Qo(),n=[...((o=(s=e==null?void 0:e.data)==null?void 0:s.pages)==null?void 0:o.flat())??[]];return t.jsx(mt,{title:"Completadas",tasks:n,loadNextPage:()=>zt(e),isFetching:e==null?void 0:e.isFetching,total:a})};class lt{static toSalesmanUsers(a){return{id:a.id,name:a.nombre}}}const Yo=()=>{const{tasks_api:e}=he(),{filters:a}=De(),{user:n}=we(),s=async()=>(await e.get("/api/obtener-comerciales")).data.map(lt.toSalesmanUsers),o=async()=>{var c;return(await e.get("/api/listado_tareas",{params:{...Qt(a),owner:{user:n.id,config:((c=a==null?void 0:a.owner)==null?void 0:c.config)??"yo_y_mis_equipos",role:n.role},justProjects:!0,cancelada:!1}})).data.map(lt.toSalesmanUsers)};return{getSalesmanAndProjects:u.useCallback(async(r={})=>{var f;const c={...a,...r},m=(r==null?void 0:r["owner.config"])??((f=a==null?void 0:a.owner)==null?void 0:f.config)??"yo_y_mis_equipos",l={...c};delete l["owner.config"];const d=Qt(l),[p,h]=await Promise.all([e.get("/api/obtener-comerciales"),e.get("/api/listado_tareas",{params:{...d,owner:{user:n==null?void 0:n.id,config:m,role:n.role},justProjects:!0,cancelada:!1}})]);return{salesmanUsers:p.data.map(lt.toSalesmanUsers),projects:h.data.map(lt.toSalesmanUsers)}},[e,a,n==null?void 0:n.id,n==null?void 0:n.role]),getProjects:o,getSalesmans:s}},Jo=()=>{const{user:e}=we(),[a,n]=u.useState([...Yt]),s=[{roles:["Project Manager","Manager","Operation Manager"],id:"owner.config",filters:[{id:"todas",name:"Todas las tareas"}]}];return u.useEffect(()=>{const o=[...Yt];s.forEach(c=>{if(c.roles.includes(e.role)){const m=o.find(l=>l.id===c.id);m&&(m.options.some(d=>d.id==="todas")||(m.options=[{id:"todas",name:"Todas las tareas"},...m.options]))}});const i=JSON.stringify(a),r=JSON.stringify(o);i!==r&&n(o)},[e.role]),{filters:a}},Zo=()=>{const{defineFields:e,initialFilters:a}=De(),{getSalesmanAndProjects:n}=Yo(),{filters:s}=Jo(),o=(a==null?void 0:a["owner.config"])??"yo_y_mis_equipos";return u.useEffect(()=>{let i=!1;return(async()=>{const{salesmanUsers:c,projects:m}=await n({"owner.config":o});i||e(s.map(l=>l.id==="project.id"?{...l,options:m}:l.id==="salesman.id"?{...l,options:c}:l))})(),()=>{i=!0}},[e,s,n,o]),t.jsxs(Ra,{invalidateAfterBulkSuccess:zo,children:[t.jsx(Xa,{}),t.jsxs("div",{className:"tm-relative tm-flex tm-h-full tm-min-h-[100%] tm-w-full tm-gap-4",children:[t.jsx(Go,{}),t.jsx(Wo,{}),t.jsx(Xo,{})]})]})},Za=u.createContext({}),er=({children:e})=>{const[a,n]=u.useState([]),s=o=>{n(i=>i.includes(o)?i.filter(r=>r!==o):[...i,o])};return t.jsx(Za.Provider,{value:{selectedTasks:a,selectTask:s},children:e})},tr=()=>u.useContext(Za),ar=()=>{const e=()=>t.jsxs("div",{className:"tm-flex tm-w-full tm-gap-m",children:[t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-full tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-w-[30%] tm-animate-pulse tm-rounded-md tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-lg tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-lg tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-lg tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-w-[10%] tm-animate-pulse tm-rounded-md tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-lg tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-w-[10%] tm-animate-pulse tm-rounded-md tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-lg tm-bg-gray-200"}),t.jsx("div",{className:"tm-h-[30px] tm-min-h-[30px] tm-w-[30px] tm-min-w-[30px] tm-animate-pulse tm-rounded-lg tm-bg-gray-200"})]});return t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-m",children:[t.jsx(e,{}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-m tm-pl-5",children:[t.jsx(e,{}),t.jsx("div",{className:"tm-pl-5",children:t.jsx(e,{})})]}),t.jsx(e,{}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-m tm-pl-5",children:[t.jsx(e,{}),t.jsx("div",{className:"tm-pl-5",children:t.jsx(e,{})})]})]})},es=({startDate:e,endDate:a})=>t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"tm-flex tm-h-[30px] tm-w-fit tm-items-center tm-justify-center tm-gap-s tm-rounded-md tm-bg-light-gray-50 tm-px-xl",children:[t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:ge.texts.subtext},color:"current"}),t.jsxs(x.Text,{children:[" ",ra(e)]})]}),t.jsx(x.Icon,{name:ne.faArrowRight,size:"xs",style:{color:ge.texts.DEFAULT},color:"current"}),t.jsxs("div",{className:"tm-flex tm-h-[30px] tm-w-fit tm-items-center tm-justify-center tm-gap-s tm-rounded-md tm-bg-light-gray-50 tm-px-xxxl",children:[t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:ge.texts.subtext},color:"current"}),t.jsxs(x.Text,{children:[" ",ra(a)]})]})]}),ts=({id:e,priority:a,difficulty:n,endDate:s,atraso:o})=>{const[i,r]=u.useState({priority:!1,difficulty:!1,atraso:!1}),c={0:{title:"N/A",color:ge.success.regular,bg:"tm-bg-texts-placeholder tm-border-texts-placeholder",border:"tm-border-success-medium",borderHover:"hover:tm-border-success-dark"},1:{title:"Baja",color:ge.success.regular,bg:"tm-bg-success-medium tm-border-success-pastel",border:"tm-border-success-pastel",borderHover:"hover:tm-border-success-dark"},2:{title:"Media",color:ge.warning.regular,bg:"tm-bg-warning-light tm-border-warning-regular",border:"tm-border-warning-regular",borderHover:"hover:tm-border-warning-dark"},3:{title:"Alta",color:ge.danger.regular,bg:"tm-bg-danger-light tm-border-danger-regular",border:"tm-border-danger-regular",borderHover:"hover:tm-border-danger-dark"}},m={1:{title:"Muy fácil",color:ge.success.dark,bg:"tm-bg-success-medium tm-border-success-regular",border:"tm-border-success-medium",borderHover:"hover:tm-border-success-dark"},2:{title:"Fácil",color:ge.success.regular,bg:"tm-bg-success-medium tm-border-success-pastel",border:"tm-border-success-medium",borderHover:"hover:tm-border-success-dark"},3:{title:"Media",color:ge.warning.regular,bg:"tm-bg-warning-light tm-border-warning-regular",border:"tm-border-warning-medium",borderHover:"hover:tm-border-warning-dark"},4:{title:"Difícil",color:ge.danger.regular,bg:"tm-bg-danger-light tm-border-danger-regular",border:"tm-border-danger-medium",borderHover:"hover:tm-border-danger-dark"},5:{title:"Muy difícil",color:ge.danger.dark,bg:"tm-bg-danger-light tm-border-danger-regular",border:"tm-border-danger-medium",borderHover:"hover:tm-border-danger-dark"}},l=()=>{if(n==null||Number.isNaN(Number(n)))return 1;const g=Math.trunc(Number(n));return g===0?1:g>=1&&g<=5?g:1},d=()=>{if(a==null||Number.isNaN(Number(a)))return 0;const g=Math.trunc(Number(a));return g>=0&&g<=3?g:0},p=m[l()]??m[1],h=c[d()]??c[0],f=s instanceof Date&&!Number.isNaN(s.getTime())?`${s.getDate()} ${Mt(s.getMonth()).slice(0,3)}`:"—";return t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:"tm-flex tm-h-[30px] tm-w-[30px] tm-items-center tm-justify-center tm-gap-8 tm-rounded-[8px] tm-bg-light-gray-50 hover:tm-bg-gray-200",children:t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faAlignCenter,size:"xs",style:{color:ge.texts.subtext},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-px-4 tm-py-2 tm-text-2xl",style:{color:"gray"},children:"Espéralo muy pronto..."})})}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-8",children:[t.jsx("div",{onMouseEnter:()=>r({...i,difficulty:!0}),onMouseLeave:()=>r({...i,difficulty:!1}),className:`tm-gap-s ${p.border} ${p.borderHover} transition-all duration-300 tm-flex tm-h-[30px] tm-w-[30px] tm-items-center tm-justify-center
|
|
6
|
+
tm-rounded-[8px] tm-border tm-shadow-[0px_0px_2px_0px_rgba(37,37,37,0.10)]`,children:t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faRhombus,size:"sm",style:{color:i.difficulty?p.color:ge.texts.subtext},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-p-5 tm-text-sm",style:{color:p.color},children:p.title})})}),t.jsx("div",{onMouseEnter:()=>r({...i,priority:!0}),onMouseLeave:()=>r({...i,priority:!1}),className:`tm-gap-s ${h.bg.replace(/\bbg-|border-/g,"tm-$&")??"tm-bg-light-gray-50"} transition-all duration-300 tm-flex tm-h-[30px] tm-w-[30px] tm-items-center tm-justify-center tm-rounded-[8px]
|
|
7
|
+
tm-border tm-border-success-medium tm-shadow-[0px_0px_2px_0px_rgba(37,37,37,0.10)] hover:tm-border-success-dark`,children:t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faFlag,size:"sm",style:{color:i.priority?h.color:ge.texts.subtext},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-p-5 tm-text-sm",style:{color:h.color},children:h.title})})}),(o==null?void 0:o.activa)&&t.jsx("div",{onMouseEnter:()=>r({...i,atraso:!0}),onMouseLeave:()=>r({...i,atraso:!1}),className:`transition-all duration-300 tm-flex tm-h-[30px] tm-w-[30px] tm-items-center tm-justify-center tm-gap-s tm-rounded-[8px]
|
|
8
|
+
tm-border tm-border-danger-medium tm-shadow-[0px_0px_2px_0px_rgba(37,37,37,0.10)] hover:tm-border-danger-dark`,children:t.jsx(Ie,{trigger:t.jsx(x.Icon,{name:ne.faTriangleExclamation,size:"xs",style:{color:i.atraso?ge.danger.dark:ge.danger.regular},color:"current"}),children:t.jsx("p",{className:"tm-font-regular tm-rounded-lg tm-bg-bg-card tm-p-5 tm-text-sm",style:{color:ge.danger.dark},children:o==null?void 0:o.motivo})})}),t.jsx(x.Icon,{name:ne.faCalendar,size:"xs",style:{color:ge.texts.subtext},color:"current"}),t.jsx("p",{className:"tm-font-regular tm-text-xs tm-text-texts-subtext",children:f})]})]})},sr=({id:e})=>{const{selectedTasks:a,selectTask:n}=tr();return t.jsxs(t.Fragment,{children:[t.jsx("label",{className:"tm-flex tm-h-[20px] tm-w-[20px] tm-cursor-pointer tm-items-center tm-justify-center tm-rounded-md tm-border-2 tm-border-light-gray-100",htmlFor:e.toString(),children:t.jsx("span",{className:`${a.includes(e)?"tm-opacity-100":"tm-opacity-0"} tm-transition-opacity tm-duration-500`,children:t.jsx(x.Icon,{name:ne.faCheck,size:"xs",style:{color:ge.primary.regular},color:"current"})})}),t.jsx("input",{className:"tm-hidden",id:e.toString(),type:"checkbox",onChange:()=>n(e)})]})},as=({task:e})=>t.jsx(Ie,{trigger:t.jsx(x.Text,{children:e}),children:t.jsx("div",{className:"tm-py-2 tm-px-4",children:t.jsx(x.Text,{children:e})})}),nr=({id:e})=>{var d,p,h,f,g;const[a,n]=u.useState(!1),{tasksProject:s}=Je(),{reasignResponsible:o}=He(),{getOBPUrlApi:i}=he(),r=(d=s==null?void 0:s.data)==null?void 0:d.find(y=>y.id===e),[c,m]=u.useState(null),{user:l}=we();return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tm-border-b tm-border-light-gray-100 tm-pb-3",children:t.jsxs("div",{className:"tm-mb-3 tm-ml-[30px] tm-mt-1 tm-flex tm-flex-wrap tm-items-center tm-gap-xl tm-rounded-md tm-p-2 hover:tm-bg-light-gray-50",onMouseEnter:()=>{m(e)},onMouseLeave:()=>m(null),onClick:()=>n(!0),children:[!(r!=null&&r.nameRequiredTask)||(r==null?void 0:r.nameRequiredTask)!==""&&(r==null?void 0:r.statusRequiredTask)===2&&t.jsx(sr,{id:e}),t.jsx(Ga,{id:e,idAtraso:(p=r==null?void 0:r.atraso)==null?void 0:p.atrasoId,nameRequiredTask:(r==null?void 0:r.nameRequiredTask)??"",status:r==null?void 0:r.status,statusRequiredTask:(r==null?void 0:r.statusRequiredTask)??0,nameRequiredTaskResponsible:r==null?void 0:r.nameRequiredTaskResponsible},e),(r==null?void 0:r.willBePaused)&&t.jsx(Qa,{idTask:r.id,paused:r.paused,popupId:`child-task-pause-menu-${r.id}`,children:y=>t.jsx(x.Button,{ref:y,color:"tertiary",icon:r!=null&&r.paused?ne.faPause:ne.faPlay,className:"tm-font-regular tm-flex tm-items-center tm-gap-2 tm-text-sm tm-text-gray-400",size:"xs"})}),t.jsx(Ua,{role:l==null?void 0:l.role,status:r==null?void 0:r.status,onClick:async(y,w)=>{await o({idNewResponsible:y,id:e,typeOfSelect:w})},responsible:r==null?void 0:r.responsible,users:((h=r==null?void 0:r.users)==null?void 0:h.map(y=>kt(y,i())))??[]}),t.jsx(as,{task:(r==null?void 0:r.task)??""}),t.jsx(ts,{id:e,priority:r==null?void 0:r.priority,difficulty:r.difficulty,endDate:r==null?void 0:r.endDate,atraso:r==null?void 0:r.atraso}),t.jsx(es,{startDate:r==null?void 0:r.startDate,endDate:r==null?void 0:r.endDate}),c===e&&t.jsx("div",{className:"tm-flex tm-h-[30px] tm-items-center tm-justify-center tm-gap-2 tm-rounded-[12px] tm-rounded-md tm-bg-silver-silver_dark tm-p-[4px]",children:(r==null?void 0:r.status)!==2&&t.jsx("div",{onClick:y=>{y.stopPropagation()},children:t.jsx(Ka,{id:e,nameRequiredTask:r.nameRequiredTask,status:r.status,statusRequiredTask:r.statusRequiredTask,projectID:(f=s==null?void 0:s.data)==null?void 0:f.id,atrasoId:(g=r==null?void 0:r.atraso)==null?void 0:g.atrasoId,categoria:r==null?void 0:r.categoria})})})]})}),t.jsx(Va,{taskId:e,isOpen:a,setIsOpen:n})]})},ss=({id:e})=>{var c,m,l,d,p,h;const{tasksProject:a,openTasks:n,openTask:s}=Je(),o=(c=a==null?void 0:a.data)==null?void 0:c.find(f=>f.id===e),r=(()=>{var y;const f=a==null?void 0:a.data,g=[];return(y=o==null?void 0:o.tasks)==null||y.forEach(w=>{const j=f.find(b=>b.id===(w==null?void 0:w.id));j&&g.push(j)}),g})();return o?t.jsxs("div",{className:"tm-mb-2 tm-flex tm-flex-col tm-gap-m tm-overflow-y-auto",children:[t.jsxs("div",{className:"tm-flex tm-cursor-pointer tm-flex-wrap tm-items-center tm-gap-16 tm-rounded-md tm-p-2 hover:tm-bg-silver-silver_light",onClick:()=>s(e),children:[t.jsx("button",{type:"button",className:`${n.includes(e)?"":"tm--rotate-90"} tm-transition-all tm-duration-300`,children:t.jsx(x.Icon,{name:ne.faChevronDown,size:"sm",style:{color:ge.texts.subtext},color:"current"})}),t.jsx("div",{className:"tm-mx-1 tm-flex tm-h-[28px] tm-min-h-[28px] tm-w-fit tm-min-w-[28px] tm-items-center tm-justify-center tm-rounded-full tm-bg-slate-100",children:t.jsx("p",{className:"tm-text-primary tm-text-md",children:((m=o==null?void 0:o.tasks)==null?void 0:m.length)===0?1:r.length})}),t.jsx(as,{task:(o==null?void 0:o.task)??""}),t.jsx(ts,{id:e,priority:o==null?void 0:o.priority,difficulty:o==null?void 0:o.difficulty,endDate:o==null?void 0:o.endDate,atraso:o==null?void 0:o.atraso}),t.jsx(es,{startDate:o==null?void 0:o.startDate,endDate:o==null?void 0:o.endDate}),t.jsxs("button",{type:"button",className:"tm-flex tm-h-[30px] tm-w-fit tm-items-center tm-justify-center tm-gap-s tm-rounded-md tm-bg-light-gray-50 tm-px-m hover:tm-bg-gray-200",children:[t.jsx(x.Icon,{name:ne.faDiagramSubtask,size:"sm",style:{color:ge.texts.subtext},color:"current"}),t.jsx(x.Text,{children:((l=o==null?void 0:o.tasks)==null?void 0:l.length)===0?1:(d=o==null?void 0:o.tasks)==null?void 0:d.length})]})]}),n.includes(e)&&t.jsx("div",{className:"tm-ml-[30px]",children:((p=o==null?void 0:o.tasks)==null?void 0:p.length)>0?(h=o==null?void 0:o.tasks)==null?void 0:h.map(f=>t.jsx(ss,{id:f==null?void 0:f.id})):t.jsx(nr,{id:o==null?void 0:o.id})})]}):null},or=()=>{var s;const{tasksProject:e,projectID:a}=Je();if(e!=null&&e.isFetching||e!=null&&e.isLoading)return t.jsx(ar,{});let n=[...(s=e==null?void 0:e.data)==null?void 0:s.filter(o=>o.isPrincipalTask)];return t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-m",children:t.jsx(er,{project:a,children:n==null?void 0:n.sort((o,i)=>o.orden-i.orden).map(o=>t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-m tm-border-b tm-border-light-gray-100 tm-pb-m ",children:t.jsx(ss,{id:o.id})}))})})};function rr({title:e,color:a,icon:n}){return t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-8",children:[t.jsx(x.Icon,{name:n,size:"md",colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotoneSecondary:.5}),t.jsx("p",{className:"tm-text-base tm-py-0.5 tm-font-body-sm-bold tm-text-body-sm-bold tm-leading-none tm-text-primary",children:e})]})}function ir({value:e,onChange:a}){return t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-4",children:[t.jsx("label",{className:"tm-text-body-sm-bold tm-text-primary",children:"Nombre del equipo"}),t.jsx(x.Input,{size:"xs",placeholder:"Creative",value:e,onChange:n=>a(n.target.value)})]})}const ns=({title:e})=>t.jsxs("div",{className:"flex-1 tm-flex tm-items-center tm-gap-x-8",children:[t.jsx(x.Icon,{background:!0,name:ne.faFilePen,color:"blue",size:"lg"}),t.jsx(x.Text,{size:"xl",weight:"bold",children:e})]}),Ge={search:"",debouncedSearch:"",filters:[]},lr={"kanban-general":{...Ge},"lista-campanias":{...Ge},"kanban-campania":{...Ge},"teams-container":{...Ge},"templates-container":{...Ge}},ut=Ue.create((e,a)=>({viewFilters:lr,currentPath:null,debounceTimeouts:{},setCurrentPath:n=>{const s=a().currentPath;e({currentPath:n}),s&&s!==n&&a().resetPathData(s)},setSearch:(n,s)=>{const o=s||a().currentPath;if(!o)return;const i=`search_${o}`,r=a().debounceTimeouts[i];r&&clearTimeout(r),e(m=>({viewFilters:{...m.viewFilters,[o]:{...m.viewFilters[o],search:n}}}));const c=setTimeout(()=>{e(m=>({viewFilters:{...m.viewFilters,[o]:{...m.viewFilters[o],debouncedSearch:n}},debounceTimeouts:{...m.debounceTimeouts,[i]:void 0}}))},500);e(m=>({debounceTimeouts:{...m.debounceTimeouts,[i]:c}}))},setFilters:(n,s)=>{const o=s||a().currentPath;o&&e(i=>({viewFilters:{...i.viewFilters,[o]:{...i.viewFilters[o],filters:n}}}))},getSearch:n=>{var o;const s=n||a().currentPath;return s&&((o=a().viewFilters[s])==null?void 0:o.search)||""},getDebouncedSearch:n=>{var o;const s=n||a().currentPath;return s&&((o=a().viewFilters[s])==null?void 0:o.debouncedSearch)||""},getFilters:n=>{var o;const s=n||a().currentPath;return s?((o=a().viewFilters[s])==null?void 0:o.filters)||[]:[]},resetPathData:n=>{const s=`search_${n}`,o=a().debounceTimeouts[s];o&&clearTimeout(o),e(i=>({viewFilters:{...i.viewFilters,[n]:{...Ge}},debounceTimeouts:{...i.debounceTimeouts,[s]:void 0}}))}}));function os({path:e}){const{getSearch:a,setSearch:n}=ut(),s=a(e);return t.jsx(x.Input,{leftSlot:ne.faSearch,placeholder:"Buscar...",size:"xs",value:s,onChange:o=>n(o.target.value,e)})}const fa={fase_plantilla:"",tipo_plantilla:"",modo_configuracion:"",categoria:"",formato_salida:"",tipo_medio:"",medio_especifico:"",responsable_impresion:"",pertenencia_medio:"",ubicacion_medio:""},cr={fase_plantilla:null,tipo_plantilla:null,modo_configuracion:null,categoria:null,formato_salida:null,tipo_medio:null,medio_especifico:null,responsable_impresion:null,pertenencia_medio:null,ubicacion_medio:null},dr={fase_plantilla:"",tipo_plantilla:"",categoria:"",tipo_medio:"",medio_especifico:"",modo_configuracion:"",responsable_impresion:"",pertenencia_medio:"",ubicacion_medio:""},ga={tipo_plantilla:!0,modo_configuracion:!0,categoria:!0,formato_salida:!0,tipo_medio:!0,medio_especifico:!0,responsable_impresion:!0,pertenencia_medio:!0,ubicacion_medio:!0},Fe=Ue.create(e=>({path:"",viewMode:"grid",isOpenModalLimit:!1,template:null,clave:"XX-XXX-XX-XXX-XX-X-X",templateFormData:fa,disabledFields:ga,claveParams:dr,paramsTipo:cr,isEditTemplate:!1,openModalCreateTemplate:!1,currentTemplateForEdit:null,refetch:null,openModalUnsavedChanges:!1,isDuplicateTemplate:!1,hasFormChanges:!1,openModalPublishTemplate:!1,currentTemplateId:null,openModalDeleteTemplate:!1,setPath:a=>e({path:a}),setViewMode:a=>e({viewMode:a}),setIsOpenModalLimit:a=>e({isOpenModalLimit:a}),setTemplate:a=>e({template:a}),setClave:a=>e({clave:a}),setTemplateFormData:a=>{e(n=>({templateFormData:{...n.templateFormData,...a}}))},resetTemplateFormData:()=>e({templateFormData:fa}),setDisableField:({fields:a,value:n})=>{for(const s of a)e(o=>({disabledFields:{...o.disabledFields,[s]:n}}))},resetDisabledFields:()=>e({disabledFields:ga}),setClaveParams:({field:a,value:n})=>{e(s=>({claveParams:{...s.claveParams,[a]:n}}))},resetClave:()=>e(a=>({clave:"XX-XXX-XX-XXX-XX-X-X"})),setParamTipo:a=>e(n=>({paramsTipo:{...n.paramsTipo,...a}})),setIsEditTemplate:a=>e({isEditTemplate:a}),setOpenModalCreateTemplate:a=>e({openModalCreateTemplate:a}),setCurrentTemplateForEdit:a=>e({currentTemplateForEdit:a}),setRefetch:a=>e({refetch:a}),setOpenModalUnsavedChanges:a=>e({openModalUnsavedChanges:a}),setIsDuplicateTemplate:a=>e({isDuplicateTemplate:a}),setHasFormChanges:a=>e({hasFormChanges:a}),setOpenModalPublishTemplate:a=>e({openModalPublishTemplate:a}),setCurrentTemplateId:a=>e({currentTemplateId:a}),setOpenModalDeleteTemplate:a=>e({openModalDeleteTemplate:a})})),rs=e=>{const{getSearch:a,getDebouncedSearch:n,setSearch:s,getFilters:o,setFilters:i,resetPathData:r}=ut();return{search:a(e),debouncedSearch:n(e),filters:o(e),setSearch:c=>s(c,e),setFilters:c=>i(c,e),resetData:()=>r(e)}},mr=()=>t.jsx(ns,{title:"Flujos de trabajo"}),Le=Ue.create(e=>({activeTemplate:null,setActiveTemplate:a=>e({activeTemplate:a}),clearActiveTemplate:()=>e({activeTemplate:null})})),Te=Ue.create((e,a)=>({mode:"grid",id:null,setMode:(n,s)=>{const o=a();if(n==="grid"||o.id!==null&&o.id!==s){const{clearAllGroupData:r}=a();r()}e({mode:n,id:s??null})},setId:n=>e({id:n}),reset:()=>{const{clearAllGroupData:n}=a();n(),e({mode:"grid",id:null})},addNode:null,addBranch:null,addNodeFromHandle:null,addNodeWithType:null,savePositions:null,loadPositions:null,clearPositions:null,activePlusNode:null,templateViewModes:{},setViewMode:(n,s)=>{const{templateViewModes:o}=a();e({templateViewModes:{...o,[n]:s}})},getViewMode:n=>{const{templateViewModes:s}=a();return s[n]??"readonly"},clearViewMode:n=>{const{templateViewModes:s}=a(),o={...s};delete o[n],e({templateViewModes:o})},expandedGroups:new Set,groupTemplateData:{},toggleGroupExpansion:n=>{const{expandedGroups:s}=a(),o=new Set(s);o.has(n)?o.delete(n):o.add(n),e({expandedGroups:o})},setGroupTemplateData:(n,s)=>{const{groupTemplateData:o}=a();e({groupTemplateData:{...o,[n]:s}})},clearGroupTemplateData:n=>{const{groupTemplateData:s}=a(),o={...s};delete o[n],e({groupTemplateData:o})},clearAllGroupData:()=>{e({expandedGroups:new Set,groupTemplateData:{}})},copiedNodes:[],setCopiedNodes:n=>e({copiedNodes:n}),clearCopiedNodes:()=>e({copiedNodes:[]}),expandGroup:null,collapseGroup:null})),is=()=>{const{tasks_api:e}=he();return{getTemplateWithTasks:async n=>{var s;try{const o=Pe.stringify({filters:{plantilla:{id:n}}},{encodeValuesOnly:!0}),i=await e.get(`/api/plantillas/plantilla-tareas-grafico?${o}`);if(i.data&&i.data.data)return i.data.data;throw new Error(`No se encontraron datos para la plantilla con ID ${n}`)}catch(o){throw console.error("Error en getTemplateWithTasks:",{error:o.message,status:(s=o.response)==null?void 0:s.status}),o}}}},ve={DIRTY:"dirty",IDLE:"idle",NEW:"new"},Ee={DRAFT:"draft",PUBLISHED:"published",DELETED:"deleted"},Ve="templates",We="templates_states";function ur(e,a){return Ue.create((n,s)=>{let o=null;const i=p=>n({isLoading:p}),r=p=>n({error:p}),c=p=>n({data:p}),m=()=>new Promise((p,h)=>{const f=indexedDB.open(e.name,e.version);f.onerror=()=>{r("Error al abrir la base de datos"),h(new Error("Error al abrir la base de datos"))},f.onsuccess=()=>{o=f.result,n({isConnected:!0,error:null}),p(o)},f.onupgradeneeded=g=>{const y=g.target.result;e.stores.forEach(w=>{var j;if(!y.objectStoreNames.contains(w.name)){const b=y.createObjectStore(w.name,{keyPath:w.keyPath,autoIncrement:w.autoIncrement??!1});(j=w.indexes)==null||j.forEach(_=>{b.createIndex(_.name,_.keyPath,_.options)})}})}}),l=(p="readonly")=>{if(!o)throw new Error("Base de datos no conectada");return o.transaction(a,p)},d=(p="readonly")=>l(p).objectStore(a);return{data:[],isLoading:!1,error:null,isConnected:!1,connect:async()=>{try{i(!0),r(null),await m(),await s().getAll()}catch(p){r(p instanceof Error?p.message:"Error desconocido")}finally{i(!1)}},disconnect:()=>{o&&(o.close(),o=null,n({isConnected:!1,data:[]}))},add:async p=>{try{i(!0),r(null);const h=d("readwrite");return new Promise((f,g)=>{const y=h.add(p);y.onsuccess=async()=>{await s().getAll(),f()},y.onerror=()=>{r("Error al agregar elemento"),g(new Error("Error al agregar elemento"))}})}finally{i(!1)}},addMany:async p=>{try{i(!0),r(null);const h=d("readwrite");return new Promise((f,g)=>{let y=0,w=!1;p.forEach(j=>{const b=h.add(j);b.onsuccess=()=>{y++,y===p.length&&!w&&s().getAll().then(()=>f())},b.onerror=()=>{w||(w=!0,r("Error al agregar elementos"),g(new Error("Error al agregar elementos")))}})})}finally{i(!1)}},get:async p=>{try{r(null);const h=d();return new Promise((f,g)=>{const y=h.get(p);y.onsuccess=()=>{f(y.result)},y.onerror=()=>{r("Error al obtener elemento"),g(new Error("Error al obtener elemento"))}})}catch(h){r(h instanceof Error?h.message:"Error desconocido");return}},getAll:async()=>{try{r(null);const p=d();return new Promise((h,f)=>{const g=p.getAll();g.onsuccess=()=>{const y=g.result;c(y),h(y)},g.onerror=()=>{r("Error al obtener elementos"),f(new Error("Error al obtener elementos"))}})}catch(p){return r(p instanceof Error?p.message:"Error desconocido"),[]}},update:async(p,h)=>{try{i(!0),r(null);const f=d("readwrite");return new Promise((g,y)=>{const w=f.get(p);w.onsuccess=()=>{const j=w.result;if(!j){r("Elemento no encontrado"),y(new Error("Elemento no encontrado"));return}const b={...j,...h},_=f.put(b);_.onsuccess=async()=>{await s().getAll(),g()},_.onerror=()=>{r("Error al actualizar elemento"),y(new Error("Error al actualizar elemento"))}},w.onerror=()=>{r("Error al obtener elemento para actualizar"),y(new Error("Error al obtener elemento para actualizar"))}})}finally{i(!1)}},delete:async p=>{try{i(!0),r(null);const h=d("readwrite");return new Promise((f,g)=>{const y=h.delete(p);y.onsuccess=async()=>{await s().getAll(),f()},y.onerror=()=>{r("Error al eliminar elemento"),g(new Error("Error al eliminar elemento"))}})}finally{i(!1)}},clear:async()=>{try{i(!0),r(null);const p=d("readwrite");return new Promise((h,f)=>{const g=p.clear();g.onsuccess=()=>{c([]),h()},g.onerror=()=>{r("Error al limpiar store"),f(new Error("Error al limpiar store"))}})}finally{i(!1)}},query:async(p,h)=>{try{r(null);const g=d().index(p);return new Promise((y,w)=>{const j=g.getAll(h);j.onsuccess=()=>{y(j.result)},j.onerror=()=>{r("Error en consulta"),w(new Error("Error en consulta"))}})}catch(f){return r(f instanceof Error?f.message:"Error desconocido"),[]}},queryRange:async(p,h,f)=>{try{r(null);const y=d().index(p);return new Promise((w,j)=>{const b=IDBKeyRange.bound(h,f),_=y.getAll(b);_.onsuccess=()=>{w(_.result)},_.onerror=()=>{r("Error en consulta por rango"),j(new Error("Error en consulta por rango"))}})}catch(g){return r(g instanceof Error?g.message:"Error desconocido"),[]}}}})}const yt=new Map;function ha(e,a,n=!0){const s=u.useMemo(()=>{const _=`${e.name}-${a}`;if(!yt.has(_)){const M=ur(e,a);yt.set(_,M)}return yt.get(_)},[e.name,a]);u.useEffect(()=>{n&&!s.getState().isConnected&&s.getState().connect()},[n,s]);const o=s(_=>_.data),i=s(_=>_.isLoading),r=s(_=>_.error),c=s(_=>_.isConnected),m=u.useCallback(()=>s.getState().connect(),[s]),l=u.useCallback(()=>s.getState().disconnect(),[s]),d=u.useCallback(_=>s.getState().add(_),[s]),p=u.useCallback(_=>s.getState().addMany(_),[s]),h=u.useCallback(_=>s.getState().get(_),[s]),f=u.useCallback(()=>s.getState().getAll(),[s]),g=u.useCallback((_,M)=>s.getState().update(_,M),[s]),y=u.useCallback(_=>s.getState().delete(_),[s]),w=u.useCallback(()=>s.getState().clear(),[s]),j=u.useCallback((_,M)=>s.getState().query(_,M),[s]),b=u.useCallback((_,M,F)=>s.getState().queryRange(_,M,F),[s]);return{data:o,isLoading:i,error:r,isConnected:c,connect:m,disconnect:l,add:d,addMany:p,get:h,getAll:f,update:g,delete:y,clear:w,query:j,queryRange:b}}const ls=u.createContext(void 0);function pr({children:e}){const[a,n]=u.useState(!1),[s,o]=u.useState(!0),[i,r]=u.useState(null),c={name:"template_tabs_v1",version:2,stores:[{name:Ve,keyPath:"id",autoIncrement:!1,indexes:[{name:"id",keyPath:"id",options:{unique:!0}}]},{name:We,keyPath:"id",autoIncrement:!1,indexes:[{name:"id",keyPath:"id",options:{unique:!0}}]}]},m=ha(c,Ve,!0),l=ha(c,We,!0),d=u.useRef(new Map);d.current.has(Ve)||d.current.set(Ve,m),d.current.has(We)||d.current.set(We,l);const p=m.isConnected,h=m.error;u.useEffect(()=>{d.current.set(Ve,m),d.current.set(We,l)},[m,l]);const f=u.useCallback(y=>{const w=d.current.get(y);if(!w)throw new Error(`Store ${y} no encontrado. Asegúrate de que esté configurada en indexedDBConfig.`);return{data:w.data,isLoading:w.isLoading,add:w.add,addMany:w.addMany,get:w.get,getAll:w.getAll,update:w.update,delete:w.delete,clear:w.clear,query:w.query,queryRange:w.queryRange,error:w.error}},[]);u.useEffect(()=>{(async()=>{try{if(o(!0),r(null),await m.connect(),p)n(!0);else throw new Error("No se pudo establecer la conexión con IndexedDB")}catch(w){r(w instanceof Error?w.message:"Error desconocido")}finally{o(!1)}})()},[m.connect,p]),u.useEffect(()=>{h&&r(h)},[h]);const g={isInitialized:a,isInitializing:s,error:i,isConnected:p,getStore:f};return t.jsx(ls.Provider,{value:g,children:e})}function cs(){const e=u.useContext(ls);if(e===void 0)throw new Error("useIndexedDBContext debe usarse dentro de IndexedDBProvider");return e}function $t(){const{getStore:e}=cs();return e(Ve)}function ds(){const{add:e}=$t(),a=async r=>{try{await e(r)}catch(c){console.error("Error al guardar plantilla a indexDB:",c)}},n=async r=>{const c={},m=l=>{l.id&&(c[l.id]=l),l.tareas&&Array.isArray(l.tareas)&&l.tareas.forEach(d=>{m(d)}),l.ids_t_dependientes&&Array.isArray(l.ids_t_dependientes)&&l.ids_t_dependientes.forEach(d=>{typeof d=="object"&&d.id&&m(d)}),l.plantilla_dependents&&Array.isArray(l.plantilla_dependents)&&l.plantilla_dependents.forEach(d=>{d.tarea_plantillas&&Array.isArray(d.tarea_plantillas)&&d.tarea_plantillas.forEach(p=>{m(p)})})};return r.tarea_plantillas.forEach(l=>{m(l)}),c},s=(r,c)=>{const m=c[r];if(!m)return[];const l=[m];return m.tareas&&Array.isArray(m.tareas)&&m.tareas.forEach(d=>{d.id&&l.push(...s(d.id,c))}),m.ids_t_dependientes&&Array.isArray(m.ids_t_dependientes)&&m.ids_t_dependientes.forEach(d=>{typeof d=="object"&&d.id?l.push(...s(d.id,c)):typeof d=="number"&&c[d]&&l.push(...s(d,c))}),l},o=(r,c)=>{const m=c[r];if(!m)return[];const l=[m];return m.tarea_padre&&c[m.tarea_padre]&&l.unshift(...o(m.tarea_padre,c)),l};return{hydrateTasks:async r=>{var l,d;const c=await n(r);return(d=(l=r==null?void 0:r.graph_layout)==null?void 0:l.snapshot)==null?void 0:d.nodes.map(p=>{if(p.type==="group")return{...p,data:{...p.data,type:"template"},type:"group",selected:!1};const h=p.data.tareaId?c[p.data.tareaId]:r;return h!=null&&h.start?{...p,data:{...h.plantilla,id:h.id},selected:!1}:{...p,data:{...h,type:"task"},selected:!1}})},initializeTemplateStore:a,indexedTasks:n,getTaskHierarchy:s,getTaskPath:o}}function ms(){const{getStore:e}=cs();return e(We)}const nt=()=>{const{add:e,get:a,delete:n,update:s}=ms(),{get:o}=$t(),i={created:[],updated:[],deleted:[]},r=async({templateId:f})=>{const g=await a(f);return g||null};return{addTaskToState:async({task:f})=>{const g=await r({templateId:f.plantilla.id}),y=await o(f.plantilla.id);if(console.log("🔄 template:",y),!g)e({...i,id:f.plantilla.id,created:[...i.created,f]});else{const w=g.created.findIndex(j=>j.id===f.id);if(w!==-1){const j=g.created[w];g.created[w]={...j,...f},await s(f.plantilla.id,g)}else g.created.push(f),await s(f.plantilla.id,g)}},getTaskFromState:r,removeTemplateStates:async f=>{await n(f)},updateTaskInState:async({task:f})=>{const g=await r({templateId:f.plantilla.id}),w=(await o(f.plantilla.id)).graph_layout.snapshot.nodes;if(console.log("🔄 nodes:",w),g){const j=g.updated.findIndex(b=>b.id===f.id);if(j!==-1){const b=g.updated[j];console.log("🔄 currentTask:",b),g.updated[j]={...b,...f}}else g.updated.push(f);await s(f.plantilla.id,g)}else e({...i,id:f.plantilla.id,updated:[...i.updated,f]})},removeTaskFromState:async({templateId:f,id:g})=>{const y=await r({templateId:f});if(y){if(g>0){const j=y.deleted.findIndex(b=>b===g);if(j!==-1){y.deleted.splice(j,1),await s(f,y);return}}const w=y.created.findIndex(j=>j.id===g);if(w!==-1){y.created.splice(w,1),await s(f,y);return}}else if(g>0){e({...i,id:f,deleted:[...i.deleted,g]});return}},removeParentIdFromNodes:async({templateId:f,id:g})=>{const y=await r({templateId:f});if(y){const w=y.created.findIndex(b=>b.id===g);if(w!==-1){y.created[w].tarea_padre=null,y.created[w].id_t_requerida=null,await s(f,y);return}const j=y.updated.findIndex(b=>b.id===g);if(j!==-1){y.updated[j].tarea_padre=null,y.updated[j].id_t_requerida=null,await s(f,y);return}}},updateNodeWithNewEdge:async({templateId:f,edge:g,task:y})=>{console.log("🔵 updateNodeWithNewEdge - Inicio",{templateId:f,taskId:y.id,taskData:y});const w=await r({templateId:f});if(console.log("🔵 updateNodeWithNewEdge - Estado actual:",w),w){console.log("🔵 updateNodeWithNewEdge - Estado existe, buscando tarea...");const j=w.created.findIndex(_=>_.id===y.id);if(console.log("🔵 updateNodeWithNewEdge - Índice en created:",j),j!==-1){console.log("🔵 updateNodeWithNewEdge - Actualizando en created"),w.created[j]=y,await s(f,w),console.log("✅ updateNodeWithNewEdge - Actualizado en created");return}const b=w.updated.findIndex(_=>_.id===y.id);if(console.log("🔵 updateNodeWithNewEdge - Índice en updated:",b),b!==-1){console.log("🔵 updateNodeWithNewEdge - Actualizando en updated"),w.updated[b]=y,await s(f,w),console.log("✅ updateNodeWithNewEdge - Actualizado en updated");return}if(console.log("🔵 updateNodeWithNewEdge - Tarea no encontrada en arrays"),y.id&&y.id!==0){const _=y.id<0;_?(console.log("🔵 updateNodeWithNewEdge - Agregando a created (tarea nueva)"),w.created.push(y)):(console.log("🔵 updateNodeWithNewEdge - Agregando a updated (tarea existente)"),w.updated.push(y)),await s(f,w),console.log("✅ updateNodeWithNewEdge - Tarea agregada exitosamente a",_?"created":"updated")}else console.error("❌ updateNodeWithNewEdge - task.id no válido para agregar:",y.id)}else if(console.log("🔵 updateNodeWithNewEdge - Creando nuevo estado"),y.id&&y.id!==0){const j=y.id<0,b={...i,id:f,created:j?[y]:[],updated:j?[]:[y]};console.log("🔵 updateNodeWithNewEdge - Nuevo estado:",b,j?"(created)":"(updated)"),e(b),console.log("✅ updateNodeWithNewEdge - Estado creado exitosamente")}else console.error("❌ updateNodeWithNewEdge - task.id no válido:",y.id);console.log("🔵 updateNodeWithNewEdge - Fin")}}};function Be(){const{activeTemplate:e,setActiveTemplate:a}=Le(),{mode:n,setMode:s,setViewMode:o,clearViewMode:i}=Te(),{template:r,setIsOpenModalLimit:c,setOpenModalUnsavedChanges:m,setOpenModalPublishTemplate:l,setOpenModalDeleteTemplate:d}=Fe(),{hydrateTasks:p}=ds(),{addTaskToState:h,removeTemplateStates:f}=nt(),g=me.useQueryClient(),{data:y,add:w,update:j,get:b,getAll:_,delete:M,isLoading:F,error:R}=$t(),{get:N}=ms(),{getTemplateWithTasks:D}=is(),{tasks_api:v}=he(),[U,K]=u.useState(!1),[J,H]=u.useState(!1),[O,S]=u.useState(!1),B=u.useMemo(()=>y.sort((C,$)=>C.order-$.order),[y]);u.useEffect(()=>{B.length===0&&n!=="grid"&&s("grid")},[B,n,s]);const k=async(P,C=ve.IDLE)=>{var $;try{const L=await D(P.id),T=await p(L),V={id:crypto.randomUUID(),data:L,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},Y=T||[V],ae={...L,graph_layout:{...L==null?void 0:L.graph_layout,snapshot:{...($=L==null?void 0:L.graph_layout)==null?void 0:$.snapshot,nodes:Y}},estatus:C,estatusFromStrapi:L.estatus};await w(ae)}catch(L){console.warn("No se pudieron obtener los datos completos de la plantilla, creando versión básica:",L);const T=P,V={id:crypto.randomUUID(),data:T,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},Y={id:T.id,snapshot:{nodes:[V],edges:[],viewport:{x:0,y:0,zoom:1}},history:null,zoom:1,position:{x:0,y:0}},ae={...T,graph_layout:T.graph_layout||Y,estatus:C,tarea_plantillas:T.tarea_plantillas||[]};await w(ae)}},q=async({template:P,checkTemplateInIndexedDB:C=!1,statusTemplate:$=ve.IDLE})=>{const L=B;if(!L.find(V=>V.id===P.id)){if(L.length===5){c(!0);return}if(C&&await b(P.id))return;await k({...P,order:L.length+1},$)}await W(P.id),await ee(P),s("create-edit",P==null?void 0:P.id)},ee=async P=>{const C=await b(P.id);a(C)},W=async P=>{try{let C=await _();C.sort((L,T)=>(L.order||0)-(T.order||0));const $=C.findIndex(L=>L.id===P);if($!==-1){const[L]=C.splice($,1);C.unshift(L),C.forEach((V,Y)=>{V.order=Y+1});const T=C.map(V=>j(V.id,V));await Promise.all(T)}else return}catch{}},re=async P=>{try{await M(P),i(P);const C=await _();C.forEach((L,T)=>{L.order=T+1});const $=C.map(L=>j(L.id,L));await Promise.all($)}catch{}};return{screens:B,isLoading:F,error:R,add:w,data:y,addScreen:k,openTemplate:q,update:j,delete:re,get:b,activeTemplate:e,activateTemplate:ee,reorderingTemplates:W,replaceTemplate:async()=>{try{const P=[...B],C={...P[P.length-1]};await M(C.id);const $={...r,order:C.order};await k($);const T=(await _()).sort((Y,ae)=>Y.order-ae.order);if(T.some((Y,ae)=>(Y.order||0)!==ae+1)){const Y=T.map((ae,le)=>({...ae,order:le+1}));for(const ae of Y)try{await j(ae.id,ae)}catch{}}}catch{}finally{c(!1)}},addTaskUpdatingTemplate:async(P,C,$="hija")=>{var Y,ae,le,X;const L=await b(C);if(!L)return null;const T={id:P.id,uuid:crypto.randomUUID(),reference_graph:P.reference_graph,texto_corto:P.title,texto_largo:P.description||"",prioridad:P.priority||null,nivel_dificultad:P.difficulty||1,duracion:P.duration||null,start:!1,type:"task",equipo:{id:Number(P.team)||null},responsable:{id:Number(P.responsible)||null},plantilla:{id:L.id,clave:L.clave,categoria:L.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:[],id_t_requerida:$==="dependiente"?(ae=(Y=P.parent)==null?void 0:Y.data)==null?void 0:ae.id:null,ids_t_dependientes:[],tarea_padre:$==="hija"?(X=(le=P.parent)==null?void 0:le.data)==null?void 0:X.id:null,tareas:[]},V={...L,estatus:ve.DIRTY};return await j(C,V),e&&e.id===C&&a(V),await h({task:T}),T},addTemplateUpdatingTemplate:async(P,C,$,L="hija")=>{let T=null;if(e&&e.id===C?T=e:T=await b(C),!T)return null;const V=(ae,le,X,se)=>{for(let ce=0;ce<ae.length;ce++){const ie=ae[ce];if(ie.id===le||ie.uuid===le)return se==="dependiente"?(ie.plantilla_dependents||(ie.plantilla_dependents=[]),ie.plantilla_dependents.push(X)):se==="hija"&&(ie.plantilla_dependents||(ie.plantilla_dependents=[]),ie.plantilla_dependents.push(X)),!0;if(ie.tareas&&ie.tareas.length>0){const te=V(ie.tareas,le,X,se);if(te)return te}}return!1};if(V(T.tarea_plantillas,$,P,L)){const ae={...T,estatus:ve.DIRTY,updatedAt:new Date().toISOString()};return await j(C,ae),e&&e.id===C&&a(ae),!0}else return!1},updateGraphLayout:async(P,C)=>{var $;if(!P){console.warn("⚠️ updateGraphLayout - Template ID no válido");return}try{const L=await b(P);if(!L){console.warn("⚠️ updateGraphLayout - Template no encontrado");return}const T=(C.nodes||[]).filter(se=>{var ce;return!((ce=se.data)!=null&&ce.isInternal)&&!se.parentId}).map(se=>{const{style:ce,measured:ie,data:te,...ue}=se,{expandedDimensions:fe,isExpanded:xe,needsReExpansion:pe,...ye}=te||{},Me=ce?{...ce,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...ue,style:Me,data:ye,position:se.position}}),V=(C.edges||[]).filter(se=>{var ce;return!((ce=se.data)!=null&&ce.isInternal)}).map(se=>{var ce;if((ce=se.data)!=null&&ce.redirectedToInternal){const{redirectedToInternal:ie,originalTarget:te,...ue}=se.data;return{...se,target:te||se.target,data:ue}}return se}),Y={...C,nodes:T,edges:V},ae=($=L.graph_layout)==null?void 0:$.snapshot;if(!(!ae||JSON.stringify(ae)!==JSON.stringify(Y)))return;const X={...L,graph_layout:{...L.graph_layout,snapshot:Y},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await j(P,X),e&&e.id===P&&a(X)}catch(L){console.error("❌ updateGraphLayout - Error:",L)}},saveTemplateChanges:async(P=!0)=>{try{if(e.estatus===ve.DIRTY){H(!0);const{id:C}=e,$=await b(C),L=await N(C),T=$.graph_layout.snapshot.nodes||[],V=T.filter(X=>{var se;return!((se=X.data)!=null&&se.isInternal)&&!X.parentId}),Y=T.length-V.length;Y>0&&console.warn(`💾 [saveTemplateChanges] Se filtraron ${Y} nodos internos al guardar plantilla ${C}`);const ae={graph_layout:{...$.graph_layout,snapshot:{...$.graph_layout.snapshot,nodes:V.map(X=>{const{style:se,measured:ce,selected:ie,...te}=X,ue=se?{...se,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return X.type==="group"?{...te,style:ue,data:{tareaId:X.data.id&&X.data.id>0?X.data.id:null,clave:X.data.clave,estatus:X.data.estatus,updatedAt:X.data.updatedAt,id:X.data.id}}:{...te,style:ue,data:{tareaId:X.data.id&&X.data.id>0?X.data.id:null}}}),edges:($.graph_layout.snapshot.edges||[]).filter(X=>{var se;return!((se=X.data)!=null&&se.isInternal)})}},tasks:{created:(L==null?void 0:L.created)||[],updated:(L==null?void 0:L.updated)||[],deleted:(L==null?void 0:L.deleted)||[]}},le=await v.post("/api/tareas/save-tareas-grafico",{data:ae});if(le.data&&le.status===200){try{const X=await D(C),se=await p(X),ce={...X,graph_layout:{...X.graph_layout,snapshot:{...X.graph_layout.snapshot,nodes:se}},estatus:ve.IDLE};await j(C,ce),P||a(ce)}catch{const se=await b(C);if(se&&!P){const ce={...se,estatus:ve.IDLE};await j(C,ce),a(ce)}}await g.invalidateQueries({queryKey:["template",C]}),await g.invalidateQueries({queryKey:["template"]}),f(C),P&&(re(C),m(!1)),o(C,"readonly")}}}catch(C){console.log(C)}finally{H(!1)}},publishTemplate:async P=>{try{K(!0);const C={estatus:Ee.PUBLISHED,publication_date:new Date},$=await v.put(`/api/plantillas/plantilla-update-estatus/${P}`,{data:C});$.data&&$.status===200&&(a({...e,estatusFromStrapi:Ee.PUBLISHED}),l(!1),x.toast.info("Se publicó correctamente el proceso"))}catch(C){console.log(C),x.toast.error("Surgió un error al publicar el proceso")}finally{K(!1)}},deleteTemplate:async P=>{try{S(!0);const C={estatus:Ee.DELETED,sjdaksd:0},$=await v.put(`/api/plantillas/plantilla-update-estatus/${P}`,{data:C});$.data&&$.status===200&&(d(!1),x.toast.info("Se eliminó correctamente el proceso"))}catch(C){console.error(C),x.toast.error("Surgión un error al eliminar el proceso")}finally{S(!1)}},loadingPublishTemplate:U,loadingSaveChanges:J,loadingDeleteTemplate:O}}const fr=async({tasks_api:e})=>{try{return(await e.get("/api/getAllOBPusers")).data}catch(a){throw console.log("Error al obtener los usuarios de OBP",a),`Error al obtener los usuarios de OBP: ${a}`}},gr=()=>{const{tasks_api:e}=he();return{users:me.useQuery({queryKey:["usersOBP"],queryFn:()=>fr({tasks_api:e}),staleTime:1e3*60*60*24})}},Ze=()=>{const{users:e}=gr(),a=me.useQuery({queryKey:["users_index",e.data],queryFn:()=>co({users:e.data||[]}),staleTime:1e3*60*60*24,enabled:!!e.data});return{users:a.data,isLoading:a.isLoading||e.isLoading}},us=()=>{const{users:e,isLoading:a}=Ze(),{getImageOBP:n}=he();return{getImageByEmail:i=>{const r=e==null?void 0:e[i];return n(r==null?void 0:r.image)},getNameByEmail:i=>{const r=e==null?void 0:e[i];return(r==null?void 0:r.nombre)||""},isLoading:a}},ot=({isLoading:e})=>e?t.jsxs("div",{className:"tm-fixed tm-inset-0 tm-z-50 tm-flex tm-items-center tm-justify-center",children:[t.jsx("div",{className:"tm-absolute tm-inset-0",style:{backgroundColor:"rgba(255, 255, 255, 0.5)"}}),t.jsx("div",{className:"tm-relative tm-flex tm-flex-col tm-items-center tm-justify-center tm-gap-4",children:t.jsx(x.Spinner,{})})]}):null,xa=({template:e,openModalPublishTemplate:a,onHadleClickEditTemplateParams:n,onEditTasks:s,canDuplicateAndDeleteTemplates:o,onHandleClickDuplicateTemplate:i,openModalDeleteTemplate:r})=>t.jsx(x.Popup,{color:"secondary",pill:"pill",icon:de.faEllipsis,stopPropagationList:!0,children:t.jsxs(x.List,{className:"tm-p-6 tm-gap-4",children:[e.estatus!==Ee.PUBLISHED&&e.counts_tasks>2&&t.jsx(x.ListItem,{icon:de.faArrowUp,onClick:a,children:"Publicar"}),t.jsx(x.ListItem,{icon:de.faEdit,onClick:()=>{n(e)},children:"Editar parámetros"}),t.jsx(x.ListItem,{icon:de.faEdit,onClick:()=>{s&&s(e)},children:"Editar tareas"}),o&&t.jsx(x.ListItem,{icon:de.faClone,onClick:c=>{c.stopPropagation(),i(e)},children:"Duplicar"}),o&&t.jsx(x.ListItem,{color:"red",icon:de.faTrash,onClick:r,children:"Eliminar"})]})}),ps=({fullWidth:e,mode:a="grid",onClick:n,active:s,template:o,withOptions:i=!0})=>{const{openTemplate:r}=Be(),{getImageByEmail:c,getNameByEmail:m}=us(),{setIsEditTemplate:l,setOpenModalCreateTemplate:d,setCurrentTemplateForEdit:p,setIsDuplicateTemplate:h,setOpenModalPublishTemplate:f,setCurrentTemplateId:g,setOpenModalDeleteTemplate:y}=Fe(),w={0:{color:"accent",theme:"solid"},1:{color:"accent",theme:"soft"},2:{color:"warning",theme:"solid"},3:{color:"info",theme:"solid"},4:{color:"gray",theme:"solid"},5:{color:"warning",theme:"soft"},6:{color:"danger",theme:"solid"},7:{color:"info",theme:"soft"},8:{color:"success",theme:"solid"},9:{color:"danger",theme:"solid"}},[j,b]=u.useState(!1),_=async()=>{if(b(!0),a==="grid")try{b(!0),await r({template:o,checkTemplateInIndexedDB:!0})}catch(q){console.error(q)}finally{b(!1)}else b(!1);n==null||n(o==null?void 0:o.id)},M=async()=>{if(!(a!=="grid"||!o)){b(!0);try{await r({template:o,checkTemplateInIndexedDB:!0}),n==null||n(o==null?void 0:o.id)}catch(q){console.error(q)}finally{b(!1)}}},F=q=>{l(!0),d(!0),p(q)},R=q=>{h(!0),d(!0),p(q)},N=()=>{g(o==null?void 0:o.id),f(!0)},D=()=>{g(o==null?void 0:o.id),y(!0)},v=(o==null?void 0:o.dias_duracion)===1?"Día":"Días",U=(o==null?void 0:o.counts_tasks)===1?"Tarea":"Tareas",K=(o==null?void 0:o.estatus)===Ee.PUBLISHED?Tt(o==null?void 0:o.publication_date).format("DD/MM/YYYY"):Tt(o==null?void 0:o.createdAt).format("DD/MM/YYYY"),J=(o==null?void 0:o.updated_by)||(o==null?void 0:o.created_by),H=c(J==null?void 0:J.email),O=m(J==null?void 0:J.email)||"",S=(o==null?void 0:o.estatus)===Ee.PUBLISHED?"Fecha de publicación":"Fecha de creación",B=(o==null?void 0:o.estatus)===Ee.DRAFT,k=q=>{const ee=q.split("-");return t.jsx(t.Fragment,{children:ee.map((W,re)=>t.jsxs("span",{children:[W,re<ee.length-1&&t.jsx("span",{className:"tm-text-neutral-200",children:"-"})]},re))})};return t.jsxs(x.Card,{active:s,fullWidth:e,onClick:_,className:`${e?"md:tm-flex-row":"tm-flex-col"}`,children:[t.jsx(ot,{isLoading:j}),t.jsx(x.Card.Header,{children:t.jsx("div",{className:"tm-flex tm-justify-between tm-items-start tm-gap-x-4",children:t.jsxs("div",{className:"tm-flex tm-justify-between tm-items-start tm-gap-4 tm-flex-1",children:[t.jsxs("div",{className:"tm-flex tm-place-items-start tm-gap-x-4",children:[t.jsx("div",{className:"tm-flex tm-items-center",children:t.jsx(x.Icon,{name:ze.faChartDiagram,colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotonePrimary:.5,size:"lg"})}),t.jsxs("div",{className:"tm-flex tm-gap-x-1 tm-flex-col tm-gap-y-4",children:[t.jsx("h1",{className:"tm-text-base tm-py-0.5 tm-font-body-sm-bold tm-text-body-sm-bold tm-leading-none tm-text-primary",children:k((o==null?void 0:o.clave)||(o==null?void 0:o.nombre_plantilla))}),t.jsxs("div",{className:"tm-flex tm-items-baseline tm-gap-x-1",children:[t.jsx(x.Badge,{size:"sm",theme:"soft",color:(o==null?void 0:o.estatus)===Ee.PUBLISHED?"success":"gray",label:(o==null?void 0:o.estatus)===Ee.PUBLISHED?"Publicado":"Borrador"}),!(typeof K=="string"&&K==="Invalid date")&&t.jsx(x.Tooltip,{label:S,children:t.jsx("p",{className:"tm-text-body-sm-regular tm-text-tertiary tm-font-body-sm-semibold",children:K})})]})]})]}),!e&&t.jsx(xa,{template:o,openModalPublishTemplate:N,onHadleClickEditTemplateParams:F,onEditTasks:M,canDuplicateAndDeleteTemplates:B,onHandleClickDuplicateTemplate:R,openModalDeleteTemplate:D})]})})}),t.jsx(x.Card.Separator,{vertical:e}),t.jsx(x.Card.Body,{className:"tm-flex tm-flex-wrap tm-gap-x-4 tm-gap-y-1 tm-w-full md:tm-w-auto tm-flex-wrap tm-flex-1 tm-items-center",children:o==null?void 0:o.params_plantillas.map((q,ee)=>{const W=w[q.params_tipo.order-1];return t.jsx(x.Badge,{color:W.color,theme:W.theme,label:q.name,size:"sm"},q.name)})}),!e&&t.jsx(x.Card.Separator,{vertical:e}),t.jsxs(x.Card.Footer,{className:"tm-flex tm-justify-between tm-w-full md:tm-w-auto tm-gap-x-4",children:[t.jsxs("div",{className:`tm-flex tm-flex-1 ${e?"tm-gap-x-2 md:tm-gap-20 lg:tm-gap-32 2xl:tm-gap-44":""}`,children:[t.jsx("div",{className:`tm-flex tm-gap-x-1 tm-justify-center tm-items-center tm-flex-1 ${e?"tm-flex-col":"tm-flex-row"}`,children:t.jsx(x.Tooltip,{label:"Tareas totales",children:t.jsxs("div",{className:`tm-flex tm-items-center tm-gap-2 ${e?"tm-flex-col":"tm-flex-row"}`,children:[t.jsx("p",{className:"tm-text-icon-all-colors-blue tm-text-xs tm-text-center tm-leading-none tm-font-semibold",children:(o==null?void 0:o.counts_tasks)||0}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:U})]})})}),t.jsx("div",{className:`tm-flex tm-gap-x-1 tm-justify-center tm-items-center tm-flex-1 ${e?"tm-flex-col":"tm-flex-row"}`,children:t.jsx(x.Tooltip,{label:"Tareas totales",children:t.jsxs("div",{className:`tm-flex tm-items-center tm-gap-2 ${e?"tm-flex-col":"tm-flex-row"}`,children:[t.jsx("p",{className:"tm-text-icon-all-colors-blue tm-text-xs tm-text-center tm-leading-none tm-font-semibold",children:(o==null?void 0:o.dias_duracion)||0}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:v})]})})}),t.jsxs("div",{className:`tm-flex tm-gap-x-1 tm-justify-center tm-items-center tm-flex-1 ${e?"tm-flex-col-reverse tm-gap-y-1":"tm-flex-row"}`,children:[t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:"Editor"}),t.jsx(x.Tooltip,{label:O,children:t.jsx(x.Avatar,{src:H,size:"xxs",type:"people"})})]})]}),e&&i&&t.jsx(x.Card.Separator,{vertical:e}),i&&t.jsx("div",{className:`tm-w-auto ${e?"tm-flex tm-items-center":""}`,children:e&&t.jsx(xa,{template:o,openModalPublishTemplate:N,onHadleClickEditTemplateParams:F,onEditTasks:M,canDuplicateAndDeleteTemplates:B,onHandleClickDuplicateTemplate:R,openModalDeleteTemplate:D})})]})]})},hr={1:"blue",2:"green",3:"red",4:"yellow"},xr=({difficulty:e})=>t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-justify-end tm-gap-2",children:[t.jsx(x.Icon,{name:de.faRhombus,size:"md",color:hr[e]}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:"Dificultad"})]}),br=({duration:e})=>t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-justify-end",children:[t.jsx("p",{className:"tm-text-icon-all-colors-blue tm-text-body-lg-regular tm-leading-none tm-font-semibold",children:e}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:"Duración"})]}),yr={1:"neutral",2:"blue",3:"yellow",4:"red"},jr=({priority:e})=>t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-justify-end tm-gap-2",children:[t.jsx(x.Icon,{name:de.faFlag,size:"md",color:yr[e]}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:"Prioridad"})]});class wr{static toUsers(a){return{id:a.id,name:a.nombre,image:a.image,email:a.email}}}const vr=async({tasks_api:e})=>{try{const a=Pe.stringify({filters:{blocked:!1}},{encodeValuesOnly:!0}),n=await e.get(`/api/users?${a}`);return be(n.data).map(wr.toUsers).sort((o,i)=>o.name.localeCompare(i.name))}catch(a){throw console.log("Error al obtener los usuarios comerciales",a),`Error al obtener los usuarios comerciales: ${a}`}},Ut=()=>{const{tasks_api:e}=he(),a=me.useQuery({queryKey:["users-mt"],queryFn:()=>vr({tasks_api:e}),staleTime:1e3*60*60*24});return{isLoading:a.isLoading,users:a.data}},_r=({responsible:e})=>{const{isLoading:a}=Ut(),{getImageByEmail:n,isLoading:s}=us();return a||s?null:t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-justify-end",children:[t.jsx(x.Avatar,{size:"xs",src:n(e==null?void 0:e.email),type:"people"}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:"Responsable"})]})},Tr=[{label:"Muy alta",value:4,icon:de.faFlag,iconColor:"red"},{label:"Alta",value:3,icon:de.faFlag,iconColor:"yellow"},{label:"Media",value:2,icon:de.faFlag,iconColor:"blue"},{label:"Baja",value:1,icon:de.faFlag,iconColor:"neutral"}],Cr=[{label:"Muy alta",value:4,icon:de.faRhombus,iconColor:"red"},{label:"Alta",value:3,icon:de.faRhombus,iconColor:"yellow"},{label:"Media",value:2,icon:de.faRhombus,iconColor:"blue"},{label:"Baja",value:1,icon:de.faRhombus,iconColor:"neutral"}],Nr=[{label:"1 día",value:1},{label:"2 días",value:2},{label:"3 días",value:3},{label:"4 días",value:4},{label:"5 días",value:5}],fs=({isOpen:e,onClose:a,onSuccess:n,nodeDataType:s,parentNodeInfo:o,editMode:i=!1,taskToEdit:r})=>{const{data:c}=Vs(),{users:m}=Ut(),{users:l}=Ze(),{getImageOBP:d}=he(),p=u.useMemo(()=>{try{return!m||!l?[]:m.map(N=>{const D=l[N.email],v=D!=null&&D.image?d(D.image):"";return{label:N.name,value:N.id.toString(),icon:v}})}catch(N){return console.error("Error mapeando usuarios:",N),[]}},[m,l]),h=()=>{if(i&&r){const N=K=>{if(K==null)return"";const J=Number(K);return isNaN(J)?"":J},D=K=>K?typeof K=="string"?Number(K)||"":K.id||"":"",v=K=>{var J;return K?typeof K=="string"?K:((J=K.id)==null?void 0:J.toString())||K.name||K.nombre||"":""};return{title:r.texto_corto||"",description:r.texto_largo||"",priority:N(r.prioridad),difficulty:N(r.nivel_dificultad),duration:N(r.duracion),team:D(r.equipo),responsible:v(r.responsable),type:"tarea"}}return{title:"",description:"",priority:"",difficulty:"",duration:"",team:"",responsible:"",type:"tarea"}},{control:f,handleSubmit:g,formState:{errors:y,isValid:w},reset:j,watch:b}=Se.useForm({mode:"onChange",defaultValues:h()});u.useEffect(()=>{e&&j(h())},[e,i,r,j]);const _=b(),M=w&&_.title&&_.description&&_.priority&&_.difficulty&&_.duration&&_.team&&Object.keys(y).length===0,F=async N=>{try{if(["title","description","priority","difficulty","duration","team"].filter(U=>!N[U]).length>0)return;n&&n({...N,parent:o}),j()}catch{}},R=()=>{j(),a()};return t.jsx(x.Drawer,{titleIcon:de.faPencil,isOpen:e,onClose:R,onSuccess:()=>{g(N=>{F(N)},N=>{const D=Object.entries(N).map(([v,U])=>`${v}: ${U.message}`).join(`
|
|
9
9
|
`);console.log(`📝 Por favor, completa los siguientes campos:
|
|
10
|
-
`+D)})()},title:i?"Editar tarea":"Nueva tarea",successButtonText:i?"Actualizar":"Crear",disabledSuccessButton:!M,children:t.jsxs("form",{className:"tw-flex tw-flex-col tw-gap-4",children:[t.jsx(Se.Controller,{control:f,name:"title",rules:{required:"El título es obligatorio",minLength:{value:3,message:"El título debe tener al menos 3 caracteres"}},render:({field:T})=>{var D;return t.jsx(x.Input,{fullWidth:!0,label:"Título",placeholder:"Ingresa el título de la tarea...",error:(D=b.title)==null?void 0:D.message,...T})}}),t.jsx(Se.Controller,{control:f,name:"description",rules:{required:"La descripción es obligatoria",minLength:{value:10,message:"La descripción debe tener al menos 10 caracteres"}},render:({field:T})=>{var D;return t.jsx(x.Textarea,{className:"ui-w-full tw-w-full",placeholder:"Describe la tarea a realizar...",label:"Descripción",error:(D=b.description)==null?void 0:D.message,...T})}}),t.jsx(x.Separator,{}),t.jsx(Se.Controller,{control:f,name:"priority",rules:{required:"La prioridad es obligatoria"},render:({field:T,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Prioridad",placeholder:"Selecciona la prioridad...",options:vr,error:D==null?void 0:D.message,value:T.value,onValueChange:v=>{T.onChange(v)}})}),t.jsx(Se.Controller,{control:f,name:"difficulty",rules:{required:"La dificultad es obligatoria"},render:({field:T,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Dificultad",placeholder:"Selecciona la dificultad...",options:_r,error:D==null?void 0:D.message,value:T.value,onValueChange:v=>{T.onChange(v)}})}),t.jsx(Se.Controller,{control:f,name:"duration",rules:{required:"La duración es obligatoria"},render:({field:T,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Duración",placeholder:"Selecciona la duración...",options:Nr,error:D==null?void 0:D.message,value:T.value,onValueChange:v=>{T.onChange(v)}})}),t.jsx(x.Separator,{}),t.jsx(Se.Controller,{control:f,name:"team",rules:{required:"El equipo es obligatorio"},render:({field:T,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Equipo",placeholder:"Selecciona el equipo...",options:c,error:D==null?void 0:D.message,value:T.value,onValueChange:v=>{T.onChange(v)}})}),t.jsx(Se.Controller,{control:f,name:"responsible",render:({field:T,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,absolute:!0,label:"Responsable",placeholder:"Selecciona el responsable...",options:m,error:D==null?void 0:D.message,value:T.value,onValueChange:v=>{T.onChange(v)}})})]})})},Cr=()=>{const{get:e}=Be(),a=Le(i=>i.activeTemplate),{updateTaskInState:n,addTaskToState:s}=st();return{updateTaskInTemplate:async(i,r)=>{if(!a)return console.error("No hay plantilla activa"),!1;try{const c=await e(a.id);if(!c)return console.error("Flujo de trabajo no encontrado"),!1;const u={id:i,uuid:r.uuid||crypto.randomUUID(),reference_graph:r.reference_graph||null,texto_corto:r.texto_corto||"",texto_largo:r.texto_largo||"",prioridad:r.prioridad||null,nivel_dificultad:r.nivel_dificultad||1,duracion:r.duracion||null,start:r.start||!1,equipo:r.equipo||null,responsable:r.responsable||null,plantilla:{id:c.id,clave:c.clave,categoria:c.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:r.plantilla_dependents||[],id_t_requerida:r.id_t_requerida||null,ids_t_dependientes:r.ids_t_dependientes||[],tarea_padre:r.tarea_padre||null,tareas:r.tareas||[]};i>0?await n({task:u}):await s({task:u})}catch(c){return console.error("❌ Error al actualizar tarea en plantilla:",c),!1}}}},ve={DEFAULT_CHILD_WIDTH:260,DEFAULT_CHILD_HEIGHT:80,MAGNETIC_CONNECTION_DISTANCE:800,GRAPH_LAYOUT_UPDATE_DELAY:100,START_NODE_ID:"start",DEFAULT_SOURCE_HANDLE:"bottom-source",DEFAULT_TARGET_HANDLE:"top-target"},ga={dependiente:{stroke:"#3B82F6",strokeDasharray:"5,5",strokeWidth:2},normal:{stroke:"#6B7280",strokeWidth:2}},bt=e=>{const a=e.map(n=>({...n}));return a.filter(n=>n.type==="group").forEach(n=>{const s=a.filter(d=>d.parentId===n.id);if(s.length===0)return;const o=Math.min(...s.map(d=>d.position.x)),r=Math.max(...s.map(d=>{var m;return d.position.x+(typeof((m=d.style)==null?void 0:m.width)=="number"?d.style.width:ve.DEFAULT_CHILD_WIDTH)}))-o,c=Math.min(...s.map(d=>d.position.y)),l=Math.max(...s.map(d=>{var m;return d.position.y+(typeof((m=d.style)==null?void 0:m.height)=="number"?d.style.height:ve.DEFAULT_CHILD_HEIGHT)}))-c;n.style={...n.style??{},width:r,height:l}}),a},yt=e=>e.source===ve.START_NODE_ID||e.target===ve.START_NODE_ID,Qe=e=>e===ve.START_NODE_ID,Tr=e=>e==="dependiente"?ga.dependiente:ga.normal,Sr=(e,a,n)=>({id:e,type:"main",position:a,selected:!1,deletable:!0,data:n}),jt=(e,a,n,s,o,i=!1,r=null,c=null)=>{const u=Tr(s),l=i?ve.DEFAULT_SOURCE_HANDLE:n;return{id:`edge-${e}-${a}`,source:e,sourceHandle:l,target:a,targetHandle:ve.DEFAULT_TARGET_HANDLE,type:"smoothstep",deletable:!0,style:u,markerEnd:{type:"arrowclosed",width:12,height:12,color:u.stroke,strokeWidth:1},data:{connectionType:s,nodeType:o,isFromStartNode:i,parentId:r,childId:c}}},Er=(e,a)=>!(!e||!a||e===a),Pr=e=>{const{clientX:a,clientY:n}="changedTouches"in e?e.changedTouches[0]:e;return{x:a,y:n}},Ar=e=>e.filter(a=>a.type==="position"&&a.dragging===!1),ms=e=>e.map(a=>a.id),fs=({nodes:e,edges:a,setNodes:n,setEdges:s,newNodePopup:o,connectionPopup:i,closeNewNodePopup:r,closeConnectionPopup:c,setIsConnectingExistingNodes:u})=>{const{screenToFlowPosition:l,getNode:d,setViewport:m,fitView:g}=oe.useReactFlow(),{get:f,update:w,addTaskUpdatingTemplate:b,addTemplateUpdatingTemplate:j}=Be(),y=Le(H=>H.activeTemplate),h=ue.useQueryClient(),_=Le(H=>H.setActiveTemplate),{removeTaskFromState:M,updateNodeWithNewEdge:F,updateTaskInState:q}=st(),T=p.useCallback(async H=>{const O=e.find(B=>B.id===H);if(!(O!=null&&O.data))return null;if(O.id===ve.START_NODE_ID){if(!y)return null;try{const B=await f(y.id),k=B.tarea_plantillas.find(R=>R.start===!0);return k!=null&&k.id?k.id:B.tarea_plantillas.length>0?B.tarea_plantillas[0].id:null}catch{return null}}const S=O.data.id;if(!S&&S!==0)return null;if(typeof S=="string"){if(S.includes("-"))return S;{const B=parseInt(S,10);return isNaN(B)?null:B}}else if(typeof S=="number")return S;return null},[e,y,f]),D=p.useCallback(async(H=e,O=a)=>{var S,B,k,R,ee,W,re;if(!y){x.toast.warning("No hay template activo para actualizar layout");return}try{const Z=await f(y.id);if(!Z){x.toast.warning("Template no encontrado en IndexedDB");return}const E=(S=Z.graph_layout)==null?void 0:S.snapshot;if(!(!E||JSON.stringify(E.nodes)!==JSON.stringify(H)||JSON.stringify(E.edges)!==JSON.stringify(O))){console.log("🔄 No hay cambios en el layout, omitiendo actualización");return}const Q=H.filter(G=>{var P;return!((P=G.data)!=null&&P.isInternal)&&!G.parentId}).map(G=>{const{style:P,measured:C,data:$,selected:L,...N}=G,{expandedDimensions:V,isExpanded:Y,needsReExpansion:ae,...le}=$||{},X=P?{...P,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...N,style:X,data:le}}),I=O.filter(G=>{var P;return!((P=G.data)!=null&&P.isInternal)}),A={...Z,graph_layout:{id:((B=Z.graph_layout)==null?void 0:B.id)||0,snapshot:{nodes:Q,edges:I,viewport:((R=(k=Z.graph_layout)==null?void 0:k.snapshot)==null?void 0:R.viewport)||{x:0,y:0,zoom:1}},history:((ee=Z.graph_layout)==null?void 0:ee.history)||[],zoom:((W=Z.graph_layout)==null?void 0:W.zoom)||1,position:((re=Z.graph_layout)==null?void 0:re.position)||{x:0,y:0}},estatus:je.DIRTY,updatedAt:new Date().toISOString()};await w(y.id,A),console.log("🗑️ [useFlowActions] Invalidando caché de la plantilla:",y.id),await h.invalidateQueries({queryKey:["template",y.id]}),await h.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlowActions] Caché invalidado exitosamente"),_(A)}catch(Z){console.error("❌ Error al actualizar template layout:",Z)}},[y,f,w,e,a,_]),v=p.useCallback(async(H=[],O=[],S,B)=>{var R,ee,W,re,Z,E,z,Q,I,A,G,P;const k=S||(y==null?void 0:y.id);if(!k){x.toast.warning("No hay template ID disponible para actualizar");return}try{const C=await f(k);if(!C)return;const $=(W=(ee=(R=C.graph_layout)==null?void 0:R.snapshot)==null?void 0:ee.nodes)==null?void 0:W.filter(V=>{var Y;return!H.includes(V.id)&&!((Y=V.data)!=null&&Y.isInternal)&&!V.parentId}).map(V=>{const{style:Y,measured:ae,data:le,...X}=V,{expandedDimensions:se,...ce}=le||{},ie=Y?{...Y,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...X,style:ie,data:ce}}),L=((E=(Z=(re=C.graph_layout)==null?void 0:re.snapshot)==null?void 0:Z.edges)==null?void 0:E.filter(V=>{var Y;return!H.includes(V.source)&&!H.includes(V.target)&&!((Y=V.data)!=null&&Y.isInternal)}))||[],N={...C,graph_layout:{id:((z=C.graph_layout)==null?void 0:z.id)||0,snapshot:{nodes:$,edges:L,viewport:((I=(Q=C.graph_layout)==null?void 0:Q.snapshot)==null?void 0:I.viewport)||{x:0,y:0,zoom:1}},history:((A=C.graph_layout)==null?void 0:A.history)||[],zoom:((G=C.graph_layout)==null?void 0:G.zoom)||1,position:((P=C.graph_layout)==null?void 0:P.position)||{x:0,y:0}},estatus:je.DIRTY,updatedAt:new Date().toISOString()};await M({templateId:k,id:B||0}),await w(k,N),await h.invalidateQueries({queryKey:["template",k]}),await h.invalidateQueries({queryKey:["template"]}),k===(y==null?void 0:y.id)&&_(N)}catch(C){console.error("❌ updateAfterDeleted - Error al actualizar template layout:",C)}},[y,f,w,a,e,M,_]),U=p.useCallback(async(H,O,S)=>{if(!o||!y)return;const{nodeId:B,sourceNodeId:k,sourceHandleId:R}=o;if(k)try{const ee=await T(k);if(!ee)return;if(H==="plantilla"){const W=S;if(!(W!=null&&W.templateId))return;if(!await j(W.templateId,y.id,ee,O)){x.toast.error("No se pudo agregar la plantilla. Intenta nuevamente."),r();return}try{const G=await f(y.id);if(G){const P=($,L)=>{for(const N of $){if(N.id===L||N.uuid===L)return N;if(N.tareas&&N.tareas.length>0){const V=P(N.tareas,L);if(V)return V}}return null},C=P(G.tarea_plantillas,ee);if(C&&C.id){const $=(C.plantilla_dependents||[]).map(N=>typeof N=="object"&&N.id?{id:N.id}:typeof N=="number"?{id:N}:N),L={...C,plantilla_dependents:$,plantilla:{id:y.id,clave:G.clave,categoria:G.categoria||{id:0,nombre:"Sin categoría"}}};await q({task:L}),console.log("✅ Tarea padre agregada a templates_states.updated con plantilla_dependents:",C.id,L.plantilla_dependents)}}}catch(G){console.error("❌ Error al actualizar tarea padre en templates_states:",G)}const Z=l({x:o.position.x,y:o.position.y}),E=W.templateData||{id:W.templateId,nombre_plantilla:`Flujo de trabajo ${W.templateId}`,clave:`TPL-${W.templateId}`,estatus:"activo",categoria:null,counts_tasks:0,dias_duracion:0},z={id:B,type:"group",position:Z,selected:!1,deletable:!0,data:{id:W.templateId,templateId:W.templateId,type:"template",nombre_plantilla:E.nombre_plantilla||`Flujo de trabajo ${W.templateId}`,clave:E.clave||`TPL-${W.templateId}`,estatus:E.estatus||"activo",categoria:E.categoria||null,counts_tasks:E.counts_tasks||0,dias_duracion:E.dias_duracion||0,tarea_plantillas:E.tarea_plantillas||[],params_plantillas:E.params_plantillas||[],createdAt:E.createdAt||new Date().toISOString(),updatedAt:E.updatedAt||new Date().toISOString(),created_by:E.created_by||null,updated_by:E.updated_by||null}};n(G=>[...G,z]);const Q=R||ve.DEFAULT_SOURCE_HANDLE,I=Qe(k),A=jt(k,B,Q,O,"plantilla",I,ee);s(G=>[...G,A]);try{const G=[...e,z],P=[...a,A];await D(G,P)}catch(G){console.error("❌ Error al actualizar layout después de agregar plantilla:",G)}}else if(H==="tarea"){const W=S;if(!W)return;const re=l({x:o.position.x,y:o.position.y}),Z=-new Date().getTime(),E={id:Z,reference_graph:B,title:W.title,description:W.description,priority:W.priority,difficulty:W.difficulty,duration:W.duration,team:W.team,responsible:W.responsible,parent:{data:{id:ee}}},z=await b(E,y.id,O),Q=Sr(B,re,z);n(P=>[...P,Q]);const I=R||ve.DEFAULT_SOURCE_HANDLE,A=Qe(k),G=jt(k,B,I,O,H,A,ee,Z);s(P=>[...P,G]);try{const P=[...e,Q],C=[...a,G];await D(P,C)}catch(P){console.error("❌ Error al actualizar layout después de agregar tarea:",P)}setTimeout(()=>{try{const P=d(B);if(P){const C=window.innerWidth,$=window.innerHeight,L=C/2,N=$/2;m({x:L-P.position.x-130,y:N-P.position.y-40,zoom:1},{duration:800})}else g({padding:.1,duration:800})}catch{try{g({padding:.1,duration:800})}catch{}}},200)}r()}catch(ee){console.error("❌ Error en createNodeFromPopup:",ee)}},[o,y,b,j,T,l,n,s,r,D,e,a]),K=p.useCallback(async(H,O)=>{var R,ee;if(console.log("🟢 createConnectionFromPopup - INICIO",{nodeType:H,connectionType:O}),!i){console.warn("⚠️ createConnectionFromPopup - No hay connectionPopup");return}const{sourceNodeId:S,sourceHandleId:B,targetNodeId:k}=i;console.log("🟢 createConnectionFromPopup - Datos de conexión:",{sourceNodeId:S,targetNodeId:k,sourceHandleId:B});try{if(!(window.validConnectionTypes||{dependiente:!0,hija:!0})[O]){console.warn("⚠️ createConnectionFromPopup - Tipo de conexión no válido:",O),x.toast.warning("Tipo de conexión no válido"),u(!1),c();return}const re=e.find(L=>L.id===S),Z=e.find(L=>L.id===k);console.log("🟢 createConnectionFromPopup - Nodos encontrados:",{sourceNode:re==null?void 0:re.id,targetNode:Z==null?void 0:Z.id,sourceData:re==null?void 0:re.data,targetData:Z==null?void 0:Z.data});const E=Z==null?void 0:Z.data,z=((R=re==null?void 0:re.data)==null?void 0:R.id)||S,Q=((ee=Z==null?void 0:Z.data)==null?void 0:ee.id)||k;console.log("🟢 createConnectionFromPopup - IDs extraídos:",{parentId:z,childId:Q});const I=jt(S,k,B||ve.DEFAULT_SOURCE_HANDLE,O,H,Qe(S),z,Q);console.log("🟢 createConnectionFromPopup - Nuevo edge creado:",I),s(L=>[...L,I]);const A=[...a,I],G=E.id||-Date.now(),P=E.reference_graph||k,C={id:G,uuid:E.uuid||crypto.randomUUID(),reference_graph:P,texto_corto:E.texto_corto||"",texto_largo:E.texto_largo||"",prioridad:E.prioridad||null,nivel_dificultad:E.nivel_dificultad||1,duracion:E.duracion||null,start:E.start||!1,equipo:E.equipo||null,responsable:E.responsable||null,plantilla:{id:E.plantilla.id,clave:E.plantilla.clave,categoria:E.plantilla.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:E.plantilla_dependents||[],ids_t_dependientes:E.ids_t_dependientes||[],tarea_padre:O==="hija"?{id:I.data.parentId}:null,id_t_requerida:O==="dependiente"?{id:I.data.parentId}:null,tareas:E.tareas||[],type:"task"};console.log("🟢 createConnectionFromPopup - taskForState creado:",C),console.log("🟢 createConnectionFromPopup - currentTemplate.id:",y.id);const $=e.map(L=>L.id===k?{...L,data:C}:L);console.log("🟢 createConnectionFromPopup - Actualizando nodos en React Flow..."),n($),console.log("✅ createConnectionFromPopup - Nodos actualizados en React Flow"),console.log("🟢 createConnectionFromPopup - Actualizando template layout..."),await D($,A),console.log("✅ createConnectionFromPopup - Template layout actualizado"),console.log("🟢 createConnectionFromPopup - Llamando a updateNodeWithNewEdge..."),await F({templateId:y.id,edge:I,task:C}),console.log("✅ createConnectionFromPopup - updateNodeWithNewEdge completado")}catch(W){console.error("❌ createConnectionFromPopup - Error al crear conexión:",W),console.error("❌ createConnectionFromPopup - Stack:",W.stack)}finally{console.log("🟢 createConnectionFromPopup - Limpiando estado..."),u(!1),c(),console.log("🟢 createConnectionFromPopup - FIN")}},[i,s,u,c,a,e,D]),J=p.useCallback(async H=>{if(!o||!y){x.toast.warning("No hay newNodePopup o template activo para actualizar el nodo");return}const{nodeId:O}=o;if(!O){x.toast.warning("No se encontró nodeId en newNodePopup");return}try{const S=e.find(k=>k.id===O);if(!S){x.toast.warning(`No se encontró el nodo con ID: ${O}`);return}const B={...S,data:{...S.data,...H,id:S.data.id||S.id,type:S.data.type||S.data.type,updatedAt:new Date().toISOString()}};n(k=>k.map(R=>R.id===O?B:R));try{const k=e.map(R=>R.id===O?B:R);await D(k,a)}catch(k){x.toast.error("Error al actualizar layout después de actualizar nodo:",k)}r()}catch(S){x.toast.error("Error al actualizar el nodo:",S)}},[o,y,e,n,a,D,r]);return{createNodeFromPopup:U,createConnectionFromPopup:K,updateNodeFromPopup:J,updateAfterDeleted:v}},Ir=({data:e,id:a,isConnectable:n,selected:s})=>{const o=_e(v=>v.getViewMode),[i,r]=p.useState(!1),[c,u]=p.useState(e),l=Le(v=>v.activeTemplate),d=Le(v=>v.setActiveTemplate),{get:m,update:g}=Be(),f=l!=null&&l.id?o(l.id):"readonly",{updateTaskInTemplate:w}=Cr(),{setNodes:b,setEdges:j,getNodes:y,getEdges:h}=oe.useReactFlow(),_=ue.useQueryClient(),{updateAfterDeleted:M}=fs({nodes:y(),edges:h(),setNodes:b,setEdges:j,newNodePopup:null,connectionPopup:null,closeNewNodePopup:()=>{},closeConnectionPopup:()=>{},setIsConnectingExistingNodes:()=>{}}),F=()=>{r(!0)},q=p.useCallback(async()=>{var O,S,B;const v=y().find(k=>k.id===a);if(!v){console.warn("⚠️ Nodo no encontrado para eliminar");return}const U=[v],K=ms(U),J=U.length>0?(S=(O=U[0])==null?void 0:O.data)==null?void 0:S.id:0;j(k=>k.filter(R=>!K.includes(R.source)&&!K.includes(R.target))),b(k=>k.filter(R=>R.id!==a));let H;for(const k of U)try{const R=k.data;if((B=R==null?void 0:R.plantilla)!=null&&B.id){H=R.plantilla.id;break}}catch{}try{j(k=>((async()=>{await M(K,k,H,J)})().catch(R=>{console.error("❌ Error en updateAfterDeleted:",R)}),k))}catch(k){console.error("❌ Error en handleDeleteNode:",k)}},[a,y,h,b,j,M]),T=p.useCallback(async v=>{var U,K,J,H,O,S,B,k,R,ee;if(!l){console.warn("⚠️ MainNode.updateTemplateLayout - No hay template activo");return}try{const W=await m(l.id);if(!W){console.warn("⚠️ MainNode.updateTemplateLayout - Template no encontrado en IndexedDB");return}const re=(U=W.graph_layout)==null?void 0:U.snapshot;if(!(!re||JSON.stringify(re.nodes)!==JSON.stringify(v))){console.log("🔄 MainNode.updateTemplateLayout - No hay cambios en nodos, omitiendo actualización");return}const E=v.filter(I=>{var A;return!((A=I.data)!=null&&A.isInternal)&&!I.parentId}).map(I=>{const{style:A,measured:G,data:P,selected:C,...$}=I,{expandedDimensions:L,isExpanded:N,needsReExpansion:V,...Y}=P||{},ae=A?{...A,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...$,style:ae,data:Y}}),z=(((J=(K=W.graph_layout)==null?void 0:K.snapshot)==null?void 0:J.edges)||[]).filter(I=>{var A;return!((A=I.data)!=null&&A.isInternal)}),Q={...W,graph_layout:{id:((H=W.graph_layout)==null?void 0:H.id)||0,snapshot:{...(O=W.graph_layout)==null?void 0:O.snapshot,nodes:E,edges:z,viewport:((B=(S=W.graph_layout)==null?void 0:S.snapshot)==null?void 0:B.viewport)||{x:0,y:0,zoom:1}},history:((k=W.graph_layout)==null?void 0:k.history)||[],zoom:((R=W.graph_layout)==null?void 0:R.zoom)||1,position:((ee=W.graph_layout)==null?void 0:ee.position)||{x:0,y:0}},estatus:je.DIRTY,updatedAt:new Date().toISOString()};await g(l.id,Q),await _.invalidateQueries({queryKey:["template",l.id]}),await _.invalidateQueries({queryKey:["template"]}),l&&l.id===Q.id&&d(Q)}catch(W){console.error("❌ MainNode.updateTemplateLayout - Error al actualizar template layout:",W)}},[l,m,g,d,_]),D=async v=>{if(r(!1),l){const U={...e,texto_corto:v.title,texto_largo:v.description,prioridad:v.priority?typeof v.priority=="number"?v.priority:parseInt(v.priority.toString()):null,nivel_dificultad:v.difficulty?typeof v.difficulty=="number"?v.difficulty:parseInt(v.difficulty.toString()):1,duracion:v.duration?typeof v.duration=="number"?v.duration:parseInt(v.duration.toString()):null,equipo:{id:Number(v.team)||null},responsable:{id:Number(v.responsible)||null}};await w(e.id,U),b(K=>{const J=K.map(H=>H.id===a?{...H,data:{...H.data,...U,tarea_padre:e.tarea_padre,id_t_requerida:e.id_t_requerida,updatedAt:new Date().toISOString()}}:H);return console.log("🔄 updatedNodes:",J),setTimeout(()=>T(J),0),J})}};return p.useEffect(()=>{u(e)},[e]),t.jsxs("div",{className:`tw-border-[1px] tw-bg-white tw-px-4 tw-py-2 tw-rounded-lg tw-transition-all tw-duration-200 tw-max-w-[423px] ${s?"tw-border-brand tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":e.main?"ui-border-success tw-shadow-sm":"ui-border-default tw-shadow-sm"}`,children:[t.jsx(oe.Handle,{isConnectable:n,id:"top-target",type:"target",position:oe.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white"}),t.jsx(oe.Handle,{isConnectable:n,id:"right-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Right}),t.jsx(oe.Handle,{isConnectable:n,id:"bottom-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Bottom}),t.jsx(oe.Handle,{isConnectable:n,id:"left-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Left}),t.jsxs("div",{className:"tw-flex tw-h-full tw-flex-col ui-gap-y-8 ui-p-12 ",children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-gap-x-4 ",children:[t.jsx("p",{className:"ui-text-primary ui-font-bold tw-leading-none ui-text-body-lg-regular tw-truncate",children:c.texto_corto}),!e.isInternal&&l.estatusFromStrapi!==Ee.PUBLISHED&&f!=="readonly"&&t.jsx("div",{children:e.type==="task"?t.jsx(x.Popup,{position:"right",absolute:!0,size:"xxs",pill:"pill",color:"secondary",icon:de.faEllipsis,containerClassName:"nopan nodrag",buttonClassName:"nopan nodrag",children:t.jsxs(x.List,{className:"ui-p-8 ui-gap-4",children:[t.jsx(x.ListItem,{icon:de.faEdit,onClick:F,children:"Editar"}),t.jsx(x.ListItem,{icon:de.faPlus,color:"red",onClick:q,children:"Eliminar"})]})}):t.jsx(x.Button,{size:"xxs",color:"secondary",pill:"pill",icon:de.faMaximize,className:"nopan"})})]}),t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-sm-normal ",children:c.texto_largo}),t.jsxs("div",{className:"tw-flex tw-gap-x-6 tw-justify-between",children:[t.jsx(gr,{duration:c.duracion}),t.jsx(wr,{difficulty:c.nivel_dificultad}),t.jsx(xr,{priority:c.prioridad}),t.jsx(jr,{responsible:c.responsable})]})]}),t.jsx(oe.Handle,{isConnectable:n,id:"top-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Top}),t.jsx(oe.Handle,{isConnectable:n,id:"right-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Right}),t.jsx(oe.Handle,{isConnectable:n,id:"bottom-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Bottom}),t.jsx(oe.Handle,{isConnectable:n,id:"left-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:oe.Position.Left}),e.type==="task"&&i&&t.jsx(ps,{isOpen:i,onClose:()=>r(!1),onSuccess:D,editMode:!0,taskToEdit:c})]})},Dr=async({tasks_api:e,page:a=1,pageSize:n=10,search:s="",filters:o={}})=>{const i={clave:{$notNull:!0},estatus:{$ne:Ee.DELETED},...s?{$or:[{nombre_plantilla:{$containsi:s}},{clave:{$containsi:s}}]}:{},...Object.keys(o).reduce((u,l)=>(Array.isArray(o[l])?u[l]={id:{$in:o[l]}}:u[l]=o[l],u),{})},r=Pe.stringify({filters:i,fields:["id","clave","estatus","dias_duracion","createdAt","publication_date"],count_tasks:!0,tarea_plantillas:!1,populate:{updated_by:{fields:["id","nombre","username","email"]},created_by:{fields:["id","nombre","username","email"]},params_plantillas:{fields:["id","name"],populate:{params_tipo:{fields:["id","key","label","order"]}}},tarea_plantillas:{fields:["id"],filters:{start:!0},populate:{tareas:{fields:["id"]},ids_t_dependientes:{fields:["id"]}}}},sort:{createdAt:"asc"},pagination:{page:a,pageSize:n}},{encodeValuesOnly:!0}),c=await e.get(`/api/plantillas/all-plantillas?${r}`);return c.data?{data:xe(c.data.data),meta:c.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:n,pageCount:0,total:0}}}},ws=({page:e=1,pageSize:a=10,search:n="",filters:s={}})=>{const{tasks_api:o}=ge();return ue.useQuery({queryKey:["templates",e,a,n,s],queryFn:()=>Dr({tasks_api:o,page:e,pageSize:a,search:n,filters:s}),staleTime:1e3*60*60*24,placeholderData:ue.keepPreviousData,select:i=>({data:(i==null?void 0:i.data)||[],meta:i==null?void 0:i.meta})})},gs=({isOpen:e,onClose:a,onSuccess:n,nodeDataType:s,parentNodeInfo:o})=>{var _,M,F,q;const i=_e(T=>T.addNodeWithType),[r,c]=p.useState(0),u=5,[l,d]=p.useState(1),[m,g]=p.useState("");p.useEffect(()=>{e&&(d(1),g(""),c(0))},[e]),p.useEffect(()=>{d(1)},[m]);const{data:f,isLoading:w}=ws({page:l,pageSize:u,search:m}),b=T=>{g(T.target.value)},j=()=>{var D;if(r===0)return;const T=(D=f==null?void 0:f.data)==null?void 0:D.find(v=>v.id===r);if(!T){console.error("No se encontró el flujo de trabajo seleccionado en los datos");return}n?n({templateId:r,templateData:T}):i&&i(s.id,s.type,s.connectionType)};if(w)return t.jsx("div",{children:"Cargando..."});if(!(f!=null&&f.data))return t.jsx("div",{children:"No hay datos disponibles"});const y=((M=(_=f.meta)==null?void 0:_.pagination)==null?void 0:M.total)||0,h=y===1?"flujo encontrado":"flujos encontrados";return t.jsx(x.Modal,{iconConfig:{icon:Ce.faPencil},isOpen:e,size:"lg",onSuccess:j,onClose:a,title:"Agregar flujo de trabajo",successButtonText:"Agregar",disableSuccessButton:r===0,closeAtSuccess:!0,children:t.jsxs(x.Modal.Body,{withPadding:!1,children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-gap-6 tw-px-12 tw-py-3",children:[t.jsxs("p",{className:"tw-flex-1 tw-text-[14px] tw-text-neutral-500",children:[y," ",h]}),t.jsx(x.Input,{className:"tw-flex-1",leftSlot:Ce.faSearch,fullWidth:!0,placeholder:"Buscar por nombre, parámetros o estado...",value:m,onChange:b})]}),t.jsx(x.Separator,{}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-6 tw-p-12",children:[f.data.map(T=>t.jsx(us,{mode:"modal",template:T,active:r===T.id,fullWidth:!0,onClick:c,withOptions:!1},T.id)),f.data.length===0&&t.jsx("div",{className:"tw-flex tw-items-center tw-justify-center tw-h-full",children:t.jsx("p",{className:"tw-text-[14px] tw-text-neutral-500",children:"No se encontraron flujos de trabajo con ese criterio de búsqueda"})})]}),t.jsx(x.Separator,{}),t.jsx("div",{className:"tw-mt-6",children:t.jsx(x.Pagination,{className:"tw-pt-0",pageSize:u,pageCount:((q=(F=f==null?void 0:f.meta)==null?void 0:F.pagination)==null?void 0:q.pageCount)||1,currentPage:l,onPageChange:T=>d(T)})})]})})},Fr=({data:e,id:a})=>{const n=_e(d=>d.addNodeWithType),[s,o]=p.useState(!1),[i,r]=p.useState(!1),[c,u]=p.useState({id:a,type:"tarea",connectionType:"dependiente"}),l=({type:d,connectionType:m})=>{n&&(u({id:a,type:d,connectionType:m}),d==="tarea"?o(!0):d==="plantilla"&&r(!0))};return console.log({data:e,id:a}),t.jsxs("div",{className:"tw-flex tw-items-center tw-justify-center",children:[c.type==="plantilla"&&t.jsx(gs,{isOpen:i,onClose:()=>r(!1),nodeDataType:c}),t.jsx(oe.Handle,{id:"top-target",type:"target",position:oe.Position.Top}),t.jsx(oe.Handle,{id:"right-target",type:"target",position:oe.Position.Right}),t.jsx(oe.Handle,{id:"bottom-target",type:"target",position:oe.Position.Bottom}),t.jsx(oe.Handle,{id:"left-target",type:"target",position:oe.Position.Left}),t.jsx(oe.Handle,{id:"top-source",type:"source",position:oe.Position.Top}),t.jsx(oe.Handle,{id:"right-source",type:"source",position:oe.Position.Right}),t.jsx(oe.Handle,{id:"bottom-source",type:"source",position:oe.Position.Bottom}),t.jsx(oe.Handle,{id:"left-source",type:"source",position:oe.Position.Left}),t.jsx(x.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:de.faPlus,containerClassName:"nopan",buttonClassName:"nopan",children:t.jsxs(x.List,{className:"nopan nodrag",children:[t.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Tarea"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>l({type:"tarea",connectionType:"dependiente"}),children:"Dependiente"}),t.jsx(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>l({type:"tarea",connectionType:"hija"}),children:"Hija"}),t.jsx(x.ListSeparator,{}),t.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>l({type:"plantilla",connectionType:"dependiente"}),children:"Dependiente"}),t.jsx(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>l({type:"plantilla",connectionType:"hija"}),children:"Hija"})]})})]})},Mr=({isOpen:e,position:a,onClose:n,createNodeFromPopup:s,parentNodeInfo:o})=>{const[i,r]=p.useState(!1),[c,u]=p.useState(!1),[l,d]=p.useState(null);if(!e)return null;const m=(j,y)=>{d({type:j,connectionType:y}),j==="tarea"?r(!0):j==="plantilla"&&u(!0)},g=()=>{r(!1),d(null),n()},f=()=>{u(!1),d(null),n()},w=j=>{l&&s(l.type,l.connectionType,j),g()},b=j=>{l&&j&&s(l.type,l.connectionType,j),f()};return t.jsxs(t.Fragment,{children:[!i&&!c&&t.jsx("div",{className:"tw-fixed tw-inset-0 tw-z-50",onClick:n}),!i&&!c&&t.jsx("div",{className:"tw-fixed tw-z-50 tw-bg-white tw-rounded-lg tw-shadow-lg tw-border tw-border-neutral-200 tw-min-w-[200px]",style:{left:a.x+50,top:a.y-100},children:t.jsx("div",{className:"tw-p-2",children:t.jsxs(x.List,{children:[t.jsx("p",{className:"ui-text-sm ui-p-4 ui-gap-4 tw-font-medium tw-text-neutral-300",children:"Tarea"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>m("tarea","dependiente"),children:"Dependiente"}),t.jsx(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>m("tarea","hija"),children:"Hija"}),t.jsx(x.ListSeparator,{}),t.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>m("plantilla","dependiente"),children:"Dependiente"})]})})}),i&&l&&t.jsx(ps,{isOpen:i,onClose:g,onSuccess:w,nodeDataType:{id:"",type:l.type,connectionType:l.connectionType},parentNodeInfo:o}),c&&l&&t.jsx(gs,{isOpen:c,onClose:f,onSuccess:b,nodeDataType:{id:"",type:l.type,connectionType:l.connectionType},parentNodeInfo:o})]})};function kr({reactFlowWrapper:e,nodes:a}){const{setViewport:n,getViewport:s}=oe.useReactFlow(),{zoom:o}=oe.useViewport(),i=Math.round(o*100),[r,c]=p.useState([]),[u,l]=p.useState(-1),[d,m]=p.useState(!1),[g,f]=p.useState(0);p.useLayoutEffect(()=>{const F=e==null?void 0:e.current;if(F){const q=F.getBoundingClientRect();f(q.width)}},[e]);const w=p.useMemo(()=>{var D;if(!a||a.length===0)return{x:0,y:0,zoom:1};const F=a.find(v=>{var U;return(U=v==null?void 0:v.data)==null?void 0:U.main})??a[0];return{x:(g||(typeof window<"u"?window.innerWidth:0))/2-(((D=F==null?void 0:F.position)==null?void 0:D.x)??0),y:20,zoom:1}},[a,g]),b=p.useCallback(F=>{if(!d){const q=[...r.slice(0,u+1),F];c(q),l(q.length-1)}},[r,u,d]),j=p.useCallback(()=>{if(d)return;const F=s(),q=Math.min(F.zoom*1.2,2);b(F),m(!0),n({x:F.x,y:F.y,zoom:q}),setTimeout(()=>m(!1),100)},[s,n,b,d]),y=p.useCallback(()=>{if(d)return;const F=s(),q=Math.max(F.zoom/1.2,.5);b(F),m(!0),n({x:F.x,y:F.y,zoom:q}),setTimeout(()=>m(!1),100)},[s,n,b,d]),h=p.useCallback(()=>{if(d)return;const F=s();Math.abs(F.zoom-1)>.01&&b(F),m(!0),n({x:F.x,y:F.y,zoom:1}),setTimeout(()=>m(!1),100)},[s,n,b,d]),_=p.useCallback(()=>{if(d||u<=0)return;const F=r[u-1];m(!0),n(F),l(u-1),setTimeout(()=>m(!1),100)},[u,r,n,d]);return p.useEffect(()=>{r.length===0&&(c([{zoom:1,x:0,y:0}]),l(0))},[r.length]),{isReady:g!==0&&Array.isArray(a)&&a.length>0,defaultViewport:w,zoomPercentage:i,handleZoomIn:j,handleZoomOut:y,handleZoomTo100:h,handleDoubleClick:_}}const Or=e=>{var i,r;const a=((i=e.data)==null?void 0:i.isInternal)||!1,n=(r=e.data)==null?void 0:r.originalGroupId,s=e.selected||!1,o=c=>{if(c.preventDefault(),c.stopPropagation(),n){const l=_e.getState().collapseGroup;l&&l(n)}};return t.jsxs("div",{className:`tw-flex tw-flex-col tw-border-[1px] tw-gap-y-2 tw-rounded-lg tw-bg-white tw-p-3 tw-transition-all tw-duration-200 ${s?"tw-border-blue-500 tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":"tw-border-neutral-100 tw-shadow-sm"}`,children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[t.jsx(x.Icon,{name:Re.faFlag,size:"sm",colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotonePrimary:.5,background:!0,padding:"md"}),t.jsx("p",{className:"ui-text-primary ui-font-body-sm-semibold tw-leading-none ui-text-body-sm-regular tw-truncate tw-tracking-wider",children:e.data.clave}),a&&t.jsx(x.Button,{size:"sm",color:"secondary",onClick:o,className:"tw-p-2 nopan nodrag",icon:de.faMinimize,pill:"pill"})]}),a&&t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[t.jsx(x.Tag,{color:e.data.estatus==="published"?"success":"warning",label:e.data.estatus==="published"?"Publicado":"Borrador"}),(e.data.updatedAt||e.data.updated_at)&&t.jsx("p",{className:"tw-text-sm tw-text-neutral-500 tw-font-medium",children:new Date(e.data.updatedAt||e.data.updated_at).toLocaleDateString("es-ES")})]}),t.jsx(oe.Handle,{id:"bottom-source",type:"source",position:oe.Position.Bottom,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"}),t.jsx(oe.Handle,{id:"top-target",type:"target",position:oe.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"})]})},Lr=()=>{const e=p.useCallback((o,i,r,c)=>{const u=(m,g)=>{const f=m.position.x,w=m.position.y,b=120,j=60,y=15;switch(g){case"top-source":case"top-target":return{x:f,y:w-j/2-y};case"bottom-source":case"bottom-target":return{x:f,y:w+j/2+y};case"left-source":case"left-target":return{x:f-b/2-y,y:w};case"right-source":case"right-target":return{x:f+b/2+y,y:w};default:return{x:f,y:w}}},l=u(o,r),d=u(i,c);return Math.sqrt(Math.pow(d.x-l.x,2)+Math.pow(d.y-l.y,2))},[]),a=p.useCallback((o,i)=>{if(o.includes("source")===i.includes("source"))return!1;const r=d=>d.includes("top")?"top":d.includes("bottom")?"bottom":d.includes("left")?"left":d.includes("right")?"right":null,c=r(o),u=r(i);return{top:"bottom",bottom:"top",left:"right",right:"left"}[c]===u},[]),n=p.useCallback((o,i)=>{const r=["top-source","bottom-source","left-source","right-source"],c=["top-target","bottom-target","left-target","right-target"];let u=1/0,l={handle1:r[0],handle2:c[0]};for(const d of r)for(const m of c){if(!a(d,m))continue;const g=e(o,i,d,m);g<u&&(u=g,l={handle1:d,handle2:m})}return l},[e,a]),s=p.useCallback((o,i,r=800)=>Math.sqrt(Math.pow(i.position.x-o.position.x,2)+Math.pow(i.position.y-o.position.y,2))<r,[]);return{findClosestHandles:n,calculateHandleDistance:e,areHandlesCompatible:a,shouldApplyMagneticConnection:s}},Br=e=>{const[a,n]=p.useState(null),[s,o]=p.useState(null),[i,r]=p.useState(!1),c=p.useCallback((g,f,w,b)=>{n({isOpen:!0,nodeId:g,position:f,sourceNodeId:w,sourceHandleId:b})},[]),u=p.useCallback(()=>{n(null)},[]),l=p.useCallback((g,f,w,b,j)=>{r(!0),o({isOpen:!0,sourceNodeId:g,sourceHandleId:w,targetNodeId:f,targetHandleId:b,position:j})},[]),d=p.useCallback(()=>{r(!1),o(null)},[]),m=p.useCallback(()=>{var f,w,b;if(!(a!=null&&a.sourceNodeId))return null;const g=e.find(j=>j.id===a.sourceNodeId);return g?{id:g.id,label:(f=g.data)==null?void 0:f.label,nodeType:(w=g.data)==null?void 0:w.nodeType,connectionType:(b=g.data)==null?void 0:b.connectionType,data:g.data}:null},[a,e]);return{newNodePopup:a,connectionPopup:s,isConnectingExistingNodes:i,openNewNodePopup:c,closeNewNodePopup:u,openConnectionPopup:l,closeConnectionPopup:d,getParentNodeInfo:m,setIsConnectingExistingNodes:r}},qr=({initialNodes:e,initialEdges:a})=>{const[n,s,o]=oe.useNodesState(bt(e)),[i,r,c]=oe.useEdgesState(a),[u,l]=p.useState(!1),d=p.useCallback(I=>{r(I)},[r]),{toObject:m}=oe.useReactFlow(),{findClosestHandles:g,shouldApplyMagneticConnection:f}=Lr(),{updateGraphLayout:w,get:b,update:j}=Be(),y=Le(I=>I.activeTemplate),h=Le(I=>I.setActiveTemplate),_=ue.useQueryClient(),{removeParentIdFromNodes:M}=st(),{newNodePopup:F,connectionPopup:q,isConnectingExistingNodes:T,openNewNodePopup:D,closeNewNodePopup:v,openConnectionPopup:U,closeConnectionPopup:K,getParentNodeInfo:J,setIsConnectingExistingNodes:H}=Br(n),{createNodeFromPopup:O,createConnectionFromPopup:S,updateNodeFromPopup:B,updateAfterDeleted:k}=fs({nodes:n,edges:i,setNodes:s,setEdges:d,newNodePopup:F,connectionPopup:q,closeNewNodePopup:v,closeConnectionPopup:K,setIsConnectingExistingNodes:H});p.useEffect(()=>{if(e&&e.length>0){if(!(e.some((L,N)=>{const V=n[N];return V?L.id!==V.id||JSON.stringify(L.position)!==JSON.stringify(V.position)||JSON.stringify(L.data)!==JSON.stringify(V.data):!0})||e.length!==n.filter(L=>{var N;return!((N=L.data)!=null&&N.isInternal)}).length)&&n.length>0)return;const{expandedGroups:A,groupTemplateData:G}=_e.getState(),P=bt(e),C=new Set(P.map(L=>L.id));let $=n.filter(L=>{var N,V;return((N=L.data)==null?void 0:N.isInternal)&&typeof((V=L.data)==null?void 0:V.originalGroupId)=="string"&&A.has(L.data.originalGroupId)&&C.has(L.data.originalGroupId)});if($.length>0){const L=P.map(N=>{var V;if(A.has(N.id)){const Y=n.find(le=>le.id===N.id),ae=(V=Y==null?void 0:Y.data)==null?void 0:V.expandedDimensions;if(ae)return{...N,style:{...N.style,width:ae.width,height:ae.height},data:{...N.data,isExpanded:!0,expandedDimensions:ae}}}return N});s([...L,...$])}else if(A.size>0){const L=P.map(N=>A.has(N.id)&&G[N.id]?{...N,data:{...N.data,isExpanded:!0,needsReExpansion:!0}}:N);s(L)}else s(P)}else s([])},[e,s]),p.useEffect(()=>{if(!u&&a&&a.length>0){const{expandedGroups:I}=_e.getState(),A=bt(e),G=new Set(A.map($=>$.id)),P=i.filter($=>{var L,N;return((L=$.data)==null?void 0:L.isInternal)&&typeof((N=$.data)==null?void 0:N.originalGroupId)=="string"&&I.has($.data.originalGroupId)&&G.has($.data.originalGroupId)}),C=i.filter($=>{var L,N;return((L=$.data)==null?void 0:L.redirectedToInternal)&&typeof((N=$.data)==null?void 0:N.originalTarget)=="string"&&I.has($.data.originalTarget)&&G.has($.data.originalTarget)});if(P.length>0||C.length>0){const $=a.filter(L=>!C.some(N=>{var V;return((V=N.data)==null?void 0:V.originalTarget)===L.target}));d([...$,...P,...C])}else d(a)}},[a,d,u]);const R=p.useCallback((I,A,G=!1)=>{const C=i.filter(N=>N.target===A).length>0;if(i.some(N=>N.source===I&&N.target===A||N.source===A&&N.target===I)&&!G)return x.toast.warning("La tarea destino ya tiene una conexión"),!1;const L=!C;return typeof window<"u"&&(window.validConnectionTypes={dependiente:L,hija:L}),L?!0:(x.toast.warning("La tarea destino ya tiene una conexión de entrada"),!1)},[i]),ee=p.useCallback(I=>{if(!Er(I.source,I.target))return;Qe(I.source)&&!I.sourceHandle&&(I.sourceHandle=ve.DEFAULT_SOURCE_HANDLE);const A=n.find(P=>P.id===I.source),G=n.find(P=>P.id===I.target);if(A&&G){if(!R(I.source,I.target))return;U(I.source,I.target,I.sourceHandle,I.targetHandle);return}return d(P=>oe.addEdge(I,P))},[n,U,d,R]),W=p.useCallback((I,A)=>{var G;if(!T&&!A.isValid&&A.fromNode){const P=n.find(ae=>ae.id===A.fromNode.id);if((P==null?void 0:P.type)==="group"){x.toast.warning("En una plantilla, no se puede crear una conexión");return}const C=Pr(I),$=document.elementFromPoint(C.x,C.y);if($!=null&&$.closest(".react-flow__node"))return;const L=crypto.randomUUID(),N=((G=A.fromHandle)==null?void 0:G.id)||ve.DEFAULT_SOURCE_HANDLE,Y=Qe(A.fromNode.id)?ve.DEFAULT_SOURCE_HANDLE:N;D(L,C,A.fromNode.id,Y)}},[T,D,n]),re=p.useCallback(async I=>{var C,$,L;const A=ms(I),G=I.length>0?($=(C=I[0])==null?void 0:C.data)==null?void 0:$.id:0;d(N=>N.filter(V=>!A.includes(V.source)&&!A.includes(V.target)));let P;for(const N of I)try{const V=N.data;if((L=V==null?void 0:V.plantilla)!=null&&L.id){P=V.plantilla.id;break}}catch{}try{d(N=>((async()=>{await k(A,N,P,G)})().catch(V=>{console.error("❌ Error en updateAfterDeleted:",V)}),N))}catch(N){console.error("❌ Error en onDeleteNode:",N)}},[d,k]),Z=p.useCallback(async I=>{var G,P,C,$,L,N,V,Y,ae,le,X,se,ce,ie;if(!I||I.length===0)return;let A;if(y!=null&&y.id)A=y.id;else for(const te of I){const pe=n.find(he=>he.id===te.source),fe=n.find(he=>he.id===te.target);if(pe!=null&&pe.data&&typeof pe.data=="object"&&"plantilla"in pe.data){const he=pe.data.plantilla;if(he!=null&&he.id){A=he.id;break}}if(fe!=null&&fe.data&&typeof fe.data=="object"&&"plantilla"in fe.data){const he=fe.data.plantilla;if(he!=null&&he.id){A=he.id;break}}}if(!A){console.warn("⚠️ onEdgesDelete - No se pudo obtener templateId");return}try{const te=await b(A);if(!te){console.warn("⚠️ onEdgesDelete - Template no encontrado en IndexedDB");return}const pe=I.map(ye=>ye.id),fe=((C=(P=(G=te.graph_layout)==null?void 0:G.snapshot)==null?void 0:P.edges)==null?void 0:C.filter(ye=>{var ke;return!pe.includes(ye.id)&&!((ke=ye.data)!=null&&ke.isInternal)}))||[],me=(((N=(L=($=te.graph_layout)==null?void 0:$.snapshot)==null?void 0:L.nodes)==null?void 0:N.filter(ye=>{var ke;return!((ke=ye.data)!=null&&ke.isInternal)&&!ye.parentId}))||[]).map(ye=>{const{style:ke,measured:pt,data:ot,...rt}=ye,{expandedDimensions:Ze,isExpanded:Kt,needsReExpansion:dl,...Gt}=ot||{},Ds=ke?{...ke,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0,Fs=ye.data.id===I[0].data.childId?{...Gt,tarea_padre:null,id_t_requerida:null}:Gt;return{...rt,style:Ds,data:Fs}}),be=((Y=(V=te.graph_layout)==null?void 0:V.snapshot)==null?void 0:Y.edges)||[];if(!(JSON.stringify(be)!==JSON.stringify(fe)))return;const Te={...te,graph_layout:{id:((ae=te.graph_layout)==null?void 0:ae.id)||0,snapshot:{nodes:me,edges:fe,viewport:((X=(le=te.graph_layout)==null?void 0:le.snapshot)==null?void 0:X.viewport)||{x:0,y:0,zoom:1}},history:((se=te.graph_layout)==null?void 0:se.history)||[],zoom:((ce=te.graph_layout)==null?void 0:ce.zoom)||1,position:((ie=te.graph_layout)==null?void 0:ie.position)||{x:0,y:0}},estatus:je.DIRTY,updatedAt:new Date().toISOString()};await M({templateId:A,id:I[0].data.childId}),await j(A,Te),console.log("🗑️ [useFlow] Invalidando caché de la plantilla:",A),await _.invalidateQueries({queryKey:["template",A]}),await _.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlow] Caché invalidado exitosamente"),A===(y==null?void 0:y.id)&&h(Te)}catch(te){console.error("❌ onEdgesDelete - Error al actualizar template layout:",te)}},[n,y,b,j,h,M]),E=p.useCallback(async I=>!I.nodes.some(G=>G.type==="start"||G.id===ve.START_NODE_ID),[]),z=p.useCallback((I,A,G)=>{var L,N,V;const P=n.find(Y=>Y.id===A.id);if(!P)return;if(P.type==="group"&&((L=P.data)!=null&&L.isExpanded)){d(Y=>Y.map(ae=>{if(ae.hidden&&ae.target===A.id){const{hidden:le,...X}=ae;return X}return ae}));return}let C;if(P.type==="group"?C=y==null?void 0:y.id:(V=(N=A==null?void 0:A.data)==null?void 0:N.plantilla)!=null&&V.id&&(C=A.data.plantilla.id),!C)return;const $=i.map(Y=>{var X,se,ce,ie,te;if(yt(Y))return Y;const ae=n.find(pe=>pe.id===Y.source),le=n.find(pe=>pe.id===Y.target);if(ae&&le){const pe=ae.type==="group"&&((X=ae.data)==null?void 0:X.isExpanded),fe=le.type==="group"&&((se=le.data)==null?void 0:se.isExpanded),he=(ce=ae.data)==null?void 0:ce.isInternal,me=(ie=le.data)==null?void 0:ie.isInternal,be=(te=Y.data)==null?void 0:te.redirectedToInternal;if(pe||fe||he||me||be)return Y;if(ae.id===A.id||le.id===A.id||f(ae,le,ve.MAGNETIC_CONNECTION_DISTANCE)){const Te=g(ae,le);if(Te!=null&&Te.handle1&&(Te!=null&&Te.handle2))return{...Y,sourceHandle:Te.handle1,targetHandle:Te.handle2}}}return Y});if(JSON.stringify(i)!==JSON.stringify($))d($),setTimeout(()=>{const Y=m();w(C,Y)},100);else{const Y=m();w(C,Y)}},[n,i,y,w,m,d,g,f]),Q=p.useCallback(I=>{o(I);const A=Ar(I);if(A.length>0){const G=A.filter(P=>{var $;const C=n.find(L=>L.id===P);return(C==null?void 0:C.type)==="group"&&(($=C==null?void 0:C.data)==null?void 0:$.isExpanded)});if(G.length>0){d(P=>P.map(C=>{var N;const $=G.includes(C.target),L=!((N=C.data)!=null&&N.redirectedToInternal);return $&&L?{...C,hidden:!0}:C}));return}l(!0),setTimeout(()=>{const P=i.map($=>{var V,Y,ae,le;if(yt($))return{...$};const L=n.find(X=>X.id===$.source),N=n.find(X=>X.id===$.target);if(L&&N){const X=L.type==="group"&&((V=L.data)==null?void 0:V.isExpanded),se=N.type==="group"&&((Y=N.data)==null?void 0:Y.isExpanded),ce=(ae=L.data)==null?void 0:ae.isInternal,ie=(le=N.data)==null?void 0:le.isInternal;if(X||se||ce||ie)return{...$};if(f(L,N,ve.MAGNETIC_CONNECTION_DISTANCE)){const te=g(L,N);if(te!=null&&te.handle1&&(te!=null&&te.handle2)&&($.sourceHandle!==te.handle1||$.targetHandle!==te.handle2))return{...$,sourceHandle:te.handle1,targetHandle:te.handle2}}}return{...$}});if(i.some(($,L)=>{const N=P[L];return $.sourceHandle!==N.sourceHandle||$.targetHandle!==N.targetHandle})){const $=P.map(L=>({...L,id:L.id}));d($)}setTimeout(()=>{l(!1)},200)},0)}},[o,i,n,d,g,f,l]);return{nodes:n,edges:i,newNodePopup:F,connectionPopup:q,setNodes:s,setEdges:d,onEdgesChange:c,onConnect:ee,onConnectEnd:W,onDeleteNode:re,onEdgesDelete:Z,onBeforeDelete:E,handleNodesChange:Q,onDragEnd:z,getParentNodeInfo:J,isProtectedConnection:yt,isStartNode:Qe,createNodeFromPopup:O,updateNodeFromPopup:B,closeNewNodePopup:v,createConnectionFromPopup:S,closeConnectionPopup:K}},Rr=({isOpen:e,onClose:a,createConnectionFromPopup:n,availableConnections:s})=>{if(!e)return null;const o=s||{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}},i=(r,c)=>{(r==="tarea"?o.tarea[c]:o.plantilla[c])&&n(r,c)};return t.jsx(t.Fragment,{children:t.jsxs("div",{className:"tw-fixed tw-inset-0 tw-z-50 tw-flex tw-items-center tw-justify-center",children:[t.jsx("div",{className:"tw-bg-black/20 tw-absolute tw-inset-0",onClick:a}),t.jsx("div",{className:"ui-shadow-lg ui-border-default ui-border-1 tw-relative tw-rounded-lg tw-bg-white tw-p-4",children:t.jsx("div",{children:t.jsxs(x.List,{children:[t.jsx("p",{className:"ui-text-sm tw-px-4 tw-font-medium tw-text-neutral-300",children:"Tarea"}),t.jsxs(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>i("tarea","dependiente"),children:["Dependiente ",!o.tarea.dependiente&&"(No disponible)"]}),t.jsxs(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>i("tarea","hija"),children:["Hija ",!o.tarea.hija&&"(No disponible)"]}),t.jsx(x.ListSeparator,{}),t.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),t.jsxs(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>i("plantilla","dependiente"),children:["Dependiente ",!o.plantilla.dependiente&&"(No disponible)"]})]})})})]})})},zr=({data:e,id:a,selected:n})=>{const{expandedGroups:s}=_e(),[o,i]=p.useState(!1),r=p.useRef(!1);p.useEffect(()=>{const m=(e==null?void 0:e.needsReExpansion)&&s.has(a),g=(e==null?void 0:e.templateId)||(e==null?void 0:e.id);if(m&&g&&!r.current){r.current=!0;const w=_e.getState().expandGroup;w&&w(a,g).catch(b=>{console.error("Error al re-expandir grupo:",b),r.current=!1})}s.has(a)||(r.current=!1)},[e,a,s]);const c=async m=>{m.preventDefault(),m.stopPropagation();const g=(e==null?void 0:e.templateId)||(e==null?void 0:e.id);if(g){i(!0);try{const f=_e.getState(),w=f.expandGroup,b=f.collapseGroup,j=s.has(a);j&&b?b(a):!j&&w&&await w(a,g)}catch{}finally{i(!1)}}},u=s.has(a),l=e==null?void 0:e.expandedDimensions,d=u&&l?{width:l.width,height:l.height,minWidth:l.width,minHeight:l.height}:{minWidth:268,minHeight:80};return t.jsxs("div",{className:`tw-rounded-lg tw-relative tw-transition-all tw-duration-200 ${n?"tw-bg-white tw-border-[1px] tw-border-blue-500 tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":u?"tw-bg-neutral-50 tw-border-2 tw-border-blue-300 tw-shadow-lg":"tw-bg-white tw-border-2 tw-border-neutral-100"}`,style:d,children:[t.jsx(nt,{isLoading:o}),t.jsx(oe.Handle,{id:"top-target",type:"target",position:oe.Position.Top,className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${u?"tw-opacity-0 tw-pointer-events-none":""}`,isConnectable:!u}),t.jsx(oe.Handle,{id:"right-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${u?"tw-opacity-0 tw-pointer-events-none":""}`,position:oe.Position.Right,isConnectable:!u}),t.jsx(oe.Handle,{id:"bottom-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${u?"tw-opacity-0 tw-pointer-events-none":""}`,position:oe.Position.Bottom,isConnectable:!u}),t.jsx(oe.Handle,{id:"left-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${u?"tw-opacity-0 tw-pointer-events-none":""}`,position:oe.Position.Left,isConnectable:!u}),!u&&t.jsxs("div",{className:"ui-flex ui-justify-between ui-gap-x-8 ui-p-16",children:[t.jsx(x.Icon,{name:de.faChartDiagram,color:"brand",size:"lg"}),t.jsxs("div",{className:"ui-flex ui-flex-col ui-gap-y-4",children:[t.jsx("p",{className:"ui-text-primary ui-font-bold tw-leading-none ui-text-body-lg-regular tw-truncate tw-tracking-wider",children:e.clave||e.nombre_plantilla||"N/A"}),t.jsxs("div",{className:"ui-flex ui-items-center ui-gap-x-4",children:[t.jsx(x.Badge,{size:"sm",theme:"soft",color:e.estatus==="published"?"success":"warning",label:e.estatus==="published"?"Publicado":"Borrador"}),e.updatedAt&&t.jsx("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-semibold",children:new Date(e.updatedAt).toLocaleDateString("es-ES")})]})]}),t.jsx("div",{children:t.jsx(x.Button,{size:"sm",color:"secondary",pill:"pill",onClick:c,disabled:o,className:`tw-p-2 ${o?"tw-opacity-50":""} nopan nodrag`,icon:u?Ce.faCompress:Ce.faExpand})})]})]})},$r=(e,a,n,s)=>{const o=p.useRef(e),i=p.useRef(a);p.useEffect(()=>{o.current=e},[e]),p.useEffect(()=>{i.current=a},[a]);const{expandedGroups:r,groupTemplateData:c,toggleGroupExpansion:u,setGroupTemplateData:l,clearGroupTemplateData:d}=_e(),m=ue.useQueryClient(),{getTemplateWithTasks:g}=os(),{hydrateTasks:f}=ls(),w=p.useCallback(async(h,_)=>{var M,F,q,T;try{await m.invalidateQueries({queryKey:["template",_]});const D=await g(_),v=(q=(F=(M=D==null?void 0:D.graph_layout)==null?void 0:M.snapshot)==null?void 0:F.nodes)==null?void 0:q.filter(N=>{var V,Y;return((V=N.data)==null?void 0:V.isInternal)||N.parentId||((Y=N.id)==null?void 0:Y.includes("-internal-"))});if(v&&v.length>0&&console.warn("⚠️ [expandGroup] Nodos sospechosos en API para plantilla",_,":",v),!((T=D==null?void 0:D.graph_layout)!=null&&T.snapshot))throw new Error(`No se encontraron datos de graph_layout en la plantilla: ${_}`);const U=D.graph_layout.snapshot.nodes||[],K=U.filter(N=>{var X,se;const V=(X=N.data)==null?void 0:X.isInternal,Y=!!N.parentId,ae=(se=N.id)==null?void 0:se.includes("-internal-"),le=V||Y||ae;return le&&console.warn("🗑️ [expandGroup] Filtrando nodo corrupto:",{id:N.id,type:N.type,esInterno:V,tieneParentId:Y,tieneInternalEnId:ae}),!le}),J={...D,graph_layout:{...D.graph_layout,snapshot:{...D.graph_layout.snapshot,nodes:K,edges:(D.graph_layout.snapshot.edges||[]).filter(N=>{var V,Y;return!((V=N.data)!=null&&V.isInternal)&&!((Y=N.id)!=null&&Y.includes("-internal-"))})}}},H=U.length-K.length;H>0?console.warn(`⚠️ [expandGroup] Se filtraron ${H} nodos internos corruptos de la BD para plantilla ${_}`):console.log(`✅ [expandGroup] No se encontraron nodos corruptos en plantilla ${_}`);const O=await f(J),S={...J,hydratedNodes:O,nodes:O||J.graph_layout.snapshot.nodes||[],edges:J.graph_layout.snapshot.edges||[]},B=S.nodes,k=S.edges;if(!B||!k){console.error("❌ No se encontraron nodos o edges en la plantilla:",_);return}l(h,{nodes:B,edges:k,viewport:S.graph_layout.snapshot.viewport||{x:0,y:0,zoom:1}});const R=o.current.find(N=>N.id===h);if(!R){console.error("❌ No se encontró el nodo grupo:",h);return}const ee=B.filter(N=>N.id!==h);let W=1/0,re=1/0,Z=-1/0,E=-1/0;ee.forEach(N=>{var te,pe,fe,he,me,be;const V=((te=N.position)==null?void 0:te.x)||0,Y=((pe=N.position)==null?void 0:pe.y)||0,ae=typeof((fe=N.style)==null?void 0:fe.width)=="number"?N.style.width:((he=N.measured)==null?void 0:he.width)||268,le=typeof((me=N.style)==null?void 0:me.height)=="number"?N.style.height:((be=N.measured)==null?void 0:be.height)||111,X=V-ae/2,se=V+ae/2,ce=Y,ie=Y+le;W=Math.min(W,X),re=Math.min(re,ce),Z=Math.max(Z,se),E=Math.max(E,ie)});const z=80,Q=60,I=Z-W,A=E-re,G=I+z*2,P=A+z*2+Q,C=B.map((N,V)=>{var te,pe;if(N.id===h)return null;const Y=((te=N.position)==null?void 0:te.x)||0,ae=((pe=N.position)==null?void 0:pe.y)||0,le=Y-W+z,X=ae-re+z+Q,se=N.type==="start"||N.id==="start",ce=se?{...N.data,estatus:R.data.estatus,updatedAt:R.data.updatedAt,createdAt:R.data.createdAt,isInternal:!0,originalGroupId:h,originalNodeId:N.id}:{...N.data,isInternal:!0,originalGroupId:h,originalNodeId:N.id};return{...N,id:`${h}-internal-${N.id}`,parentId:h,extent:"parent",type:N.type==="group"?"main":N.type,position:{x:le,y:X},style:{...N.style},data:ce,draggable:!1,selectable:se,selected:!1,deletable:!1,connectable:!1,focusable:se,zIndex:999}}).filter(Boolean),$=k.map(N=>{const V=C.some(le=>le&&le.id===`${h}-internal-${N.source}`),Y=C.some(le=>le&&le.id===`${h}-internal-${N.target}`);return!V||!Y?null:{...N,id:`${h}-internal-${N.id}`,source:`${h}-internal-${N.source}`,target:`${h}-internal-${N.target}`,style:{...N.style},data:{...N.data,isInternal:!0,originalGroupId:h}}}).filter(Boolean),L=C.find(N=>{var V;return N&&((V=N.data)==null?void 0:V.originalNodeId)==="start"});L&&s(N=>N.map(V=>V.target===h?{...V,target:L.id,targetHandle:"top-target",data:{...V.data,redirectedToInternal:!0,originalTarget:h,originalTargetHandle:V.targetHandle}}:V)),u(h),n(N=>[...N.map(Y=>{if(Y.id===h){const{needsReExpansion:ae,...le}=Y.data||{};return{...Y,style:{...Y.style,width:G,height:P},data:{...le,isExpanded:!0,expandedDimensions:{width:G,height:P}},zIndex:1e3}}return Y}),...C]),s(N=>[...N,...$])}catch(D){console.error("❌ Error al expandir el grupo:",D)}},[m,g,f,l,u,n,s]),b=p.useCallback(h=>{var v,U;const _=o.current,M=i.current,F=_.find(K=>K.id===h),q=((v=F==null?void 0:F.data)==null?void 0:v.templateId)||((U=F==null?void 0:F.data)==null?void 0:U.id),T=_.filter(K=>!K.id.startsWith(`${h}-internal-`)&&K.parentId!==h).map(K=>K.id===h?{...K,style:{...K.style,width:void 0,height:void 0},data:{...K.data,isExpanded:!1,expandedDimensions:void 0},zIndex:void 0}:K),D=M.filter(K=>!K.id.startsWith(`${h}-internal-`)).map(K=>{var J,H;if((J=K.data)!=null&&J.redirectedToInternal&&((H=K.data)==null?void 0:H.originalTarget)===h){const{redirectedToInternal:O,originalTarget:S,originalTargetHandle:B,...k}=K.data;return{...K,target:h,targetHandle:B||K.targetHandle,data:k}}return K});n(T),s(D),u(h),d(h),q&&m.invalidateQueries({queryKey:["template",q]})},[n,s,u,d,m]),j=p.useCallback(async(h,_)=>{r.has(h)?b(h):await w(h,_)},[r,w,b]),y=p.useCallback(h=>r.has(h),[r]);return{expandGroup:w,collapseGroup:b,toggleGroup:j,isGroupExpanded:y,groupTemplateData:c}},Ur=()=>{const{getNodes:e,setNodes:a,screenToFlowPosition:n,setCenter:s}=oe.useReactFlow(),{copiedNodes:o,setCopiedNodes:i,getViewMode:r}=_e(),{activeTemplate:c,setActiveTemplate:u}=Le(),{updateGraphLayout:l,get:d,update:m}=Be(),g=c!=null&&c.id?r(c.id):"readonly",f=p.useCallback(()=>`node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,[]),w=p.useCallback(()=>e().filter(T=>T.selected).filter(T=>!(T.type==="start"||T.id==="start"||T.type==="group")),[e]),b=p.useCallback(()=>{if(g==="readonly"){x.toast.error("No puedes copiar tareas en modo solo lectura");return}if(!c){x.toast.error("No hay una plantilla activa");return}const M=w();if(M.length===0){const q=e().filter(T=>T.selected);if(q.length>0){const T=q.some(v=>v.type==="group"),D=q.some(v=>v.type==="start"||v.id==="start");T?x.toast.error("Las plantillas conectadas no pueden ser copiadas"):D&&x.toast.error("El nodo de inicio no puede ser copiado")}else x.toast.error("No hay tareas seleccionadas para copiar");return}const F=M.map(q=>{const{selected:T,...D}=q;return{...D,data:{...D.data,_originalTemplateId:c.id}}});i(F),x.toast.success(`${M.length} ${M.length===1?"tarea copiada":"tareas copiadas"} con éxito`)},[g,c,w,e,i]),j=p.useCallback(async M=>{if(g==="readonly"){x.toast.error("No puedes pegar tareas en modo solo lectura");return}if(!c){x.toast.error("No hay una plantilla activa");return}if(o.length===0){x.toast.error("No hay tareas copiadas para pegar");return}const F=e();let q={x:0,y:0};if(M)q=n({x:M.x,y:M.y});else if(F.length>0){const H=F.reduce((S,B)=>S+B.position.x,0)/F.length,O=F.reduce((S,B)=>S+B.position.y,0)/F.length;q={x:H+50,y:O+100}}const T=o[0],D=q.x-T.position.x,v=q.y-T.position.y,U=o.map((H,O)=>{const S=f(),B=-(Date.now()+O),k=H.data.plantilla&&typeof H.data.plantilla=="object"?{...H.data.plantilla,id:c.id}:{id:c.id},{id:R,...ee}=H.data,W={...ee,id:B,reference_graph:S,plantilla:k,parent:{data:{id:null}},_originalTemplateId:void 0};return{...H,id:S,position:{x:H.position.x+D,y:H.position.y+v},data:W,selected:!0}}),J=[...F.map(H=>({...H,selected:!1})),...U];if(a(J),c.id)try{const H=await d(c.id);if(!H)return;const O=U.filter(B=>B.type!=="start"&&B.type!=="group").map(B=>{const k=B.data;return{id:k.id,reference_graph:B.id,nombre:k.nombre||k.texto_corto||"Tarea sin nombre",texto_corto:k.texto_corto||"",texto_largo:k.texto_largo||"",prioridad:k.prioridad??0,nivel_dificultad:k.nivel_dificultad??0,dias_duracion:k.dias_duracion??0,plantilla:{id:c.id},parent:{data:{id:null}},tareas:[],plantilla_dependents:k.plantilla_dependents||[],start:k.start||!1,es_grupo:k.es_grupo||!1,optional:k.optional||!1,subtask_completadas:k.subtask_completadas||0,subtask_totales:k.subtask_totales||0}}),S={...H,tarea_plantillas:[...H.tarea_plantillas,...O],estatus:"dirty",updatedAt:new Date().toISOString()};await m(c.id,S),u(S),setTimeout(async()=>{await l(c.id,{nodes:J,edges:[]})},50)}catch(H){console.error("Error al actualizar template en IndexedDB:",H)}if(U.length>0){const H=U.reduce((S,B)=>S+B.position.x,0)/U.length,O=U.reduce((S,B)=>S+B.position.y,0)/U.length;s(H,O,{zoom:1,duration:800})}x.toast.success(`${U.length} ${U.length===1?"tarea pegada":"tareas pegadas"} con éxito`)},[g,c,o,e,a,n,s,f,l,d,m,u]),y=p.useCallback(()=>o.length>0,[o]),_=w().length>0;return{handleCopy:b,handlePaste:j,hasCopiedNodes:y,hasSelectableNodes:_,copiedNodesCount:o.length}},Hr={main:Ir,plus:Fr,start:Or,group:zr},Kr=[.5,0],Gr=({initialNodes:e,initialEdges:a,debugEvents:n=!1})=>{const s=p.useRef(null),{nodes:o,edges:i,onEdgesChange:r,onConnect:c,onConnectEnd:u,onBeforeDelete:l,onDeleteNode:d,onEdgesDelete:m,handleNodesChange:g,newNodePopup:f,getParentNodeInfo:w,createNodeFromPopup:b,closeNewNodePopup:j,connectionPopup:y,createConnectionFromPopup:h,closeConnectionPopup:_,onDragEnd:M,setNodes:F,setEdges:q}=qr({initialNodes:e,initialEdges:a}),{expandGroup:T,collapseGroup:D}=$r(o,i,F,q),{handleCopy:v,handlePaste:U,hasCopiedNodes:K,copiedNodesCount:J}=Ur();p.useEffect(()=>{if(!n)return;const te=me=>{console.log("🔍 [DEBUG] KeyDown:",{key:me.key,code:me.code,shiftKey:me.shiftKey,ctrlKey:me.ctrlKey,metaKey:me.metaKey,altKey:me.altKey,target:me.target,defaultPrevented:me.defaultPrevented,bubbles:me.bubbles,timestamp:new Date().toISOString()})},pe=me=>{console.log("🔍 [DEBUG] KeyUp:",{key:me.key,code:me.code,shiftKey:me.shiftKey,timestamp:new Date().toISOString()})},fe=me=>{var be,Me;console.log("🔍 [DEBUG] Click:",{button:me.button,shiftKey:me.shiftKey,ctrlKey:me.ctrlKey,metaKey:me.metaKey,altKey:me.altKey,target:(be=me.target)==null?void 0:be.tagName,targetClass:(Me=me.target)==null?void 0:Me.className,defaultPrevented:me.defaultPrevented,bubbles:me.bubbles,timestamp:new Date().toISOString()})},he=me=>{console.log("🔍 [DEBUG] MouseDown:",{button:me.button,shiftKey:me.shiftKey,ctrlKey:me.ctrlKey,metaKey:me.metaKey,defaultPrevented:me.defaultPrevented,timestamp:new Date().toISOString()})};return document.addEventListener("keydown",te,!0),document.addEventListener("keyup",pe,!0),document.addEventListener("click",fe,!0),document.addEventListener("mousedown",he,!0),console.log("🔍 [DEBUG] Event listeners activados. Presiona Shift + Click en un nodo para ver los eventos."),()=>{document.removeEventListener("keydown",te,!0),document.removeEventListener("keyup",pe,!0),document.removeEventListener("click",fe,!0),document.removeEventListener("mousedown",he,!0),console.log("🔍 [DEBUG] Event listeners desactivados.")}},[n]);const O=o.filter(te=>!(!te.selected||te.type==="start"||te.id==="start"||te.type==="group")).length,S=O>0,B=p.useRef(T),k=p.useRef(D);p.useEffect(()=>{B.current=T,k.current=D},[T,D]),p.useEffect(()=>{const te=async(fe,he)=>{B.current&&await B.current(fe,he)},pe=fe=>{k.current&&k.current(fe)};_e.setState({expandGroup:te,collapseGroup:pe})},[]);const{zoomPercentage:R,handleZoomIn:ee,handleZoomOut:W,handleZoomTo100:re,handleDoubleClick:Z}=kr({reactFlowWrapper:s,nodes:o}),{getViewMode:E}=_e(),{activeTemplate:z}=Le(),I=(z!=null&&z.id?E(z.id):"readonly")==="readonly";p.useEffect(()=>{if(I)return;const te=pe=>{const fe=pe.target;fe.tagName==="INPUT"||fe.tagName==="TEXTAREA"||fe.isContentEditable||((pe.ctrlKey||pe.metaKey)&&pe.key==="c"&&(pe.preventDefault(),v()),(pe.ctrlKey||pe.metaKey)&&pe.key==="v"&&(pe.preventDefault(),U()))};return document.addEventListener("keydown",te),()=>{document.removeEventListener("keydown",te)}},[v,U,I]);const A=p.useCallback((te,pe)=>{const fe=te.target;fe.tagName==="BUTTON"||fe.closest("button")||fe.closest('[role="button"]')||fe.classList.contains("nopan")||fe.classList.contains("nodrag")},[]),G=p.useCallback(te=>{const pe=te.filter(fe=>{var he,me;if(fe.type==="position"&&fe.dragging===!1){const be=o.find(Me=>Me.id===fe.id);if(be&&fe.position){const Me=Math.abs((fe.position.x||0)-(((he=be.position)==null?void 0:he.x)||0)),Te=Math.abs((fe.position.y||0)-(((me=be.position)==null?void 0:me.y)||0));if(Me<3&&Te<3)return!1}}return!0});pe.length>0&&g(pe)},[g,o]),P=I?void 0:r,C=I?void 0:G,$=I?void 0:c,L=I?void 0:u,N=I?void 0:l,V=I?void 0:M,Y=I?void 0:d,ae=I?void 0:m,le=I?null:["Backspace","Delete"],ce=I?{nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,nodesFocusable:!1,draggable:!1,connectOnClick:!1}:{nodesDraggable:!0,nodesConnectable:!0,elementsSelectable:!0,edgesFocusable:!0,nodesFocusable:!0,draggable:!1,connectOnClick:!0,elevateNodesOnSelect:!0},ie=()=>{if(y)return{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}}};return t.jsxs("div",{className:"wrapper",ref:s,style:{width:"100%",height:"100vh"},children:[t.jsxs(oe.ReactFlow,{nodes:o,edges:i,nodeTypes:Hr,onEdgesChange:P,onNodesChange:C,onConnect:$,onConnectEnd:L,onBeforeDelete:N,onNodeDragStop:V,onNodesDelete:Y,onEdgesDelete:ae,onNodeClick:A,...ce,fitView:!0,fitViewOptions:{padding:2},nodeOrigin:Kr,defaultEdgeOptions:{type:"smoothstep"},connectionLineType:oe.ConnectionLineType.SmoothStep,deleteKeyCode:le,multiSelectionKeyCode:I?null:"Shift",selectionOnDrag:!1,panOnDrag:I?!0:[0],nodeClickDistance:15,selectNodesOnDrag:!1,nodeDragThreshold:10,autoPanOnNodeDrag:!1,autoPanOnConnect:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",children:[t.jsx(oe.Background,{}),!I&&t.jsx(oe.Panel,{position:"bottom-left",className:"tw-m-0",children:t.jsxs("div",{className:"tw-bg-white tw-border tw-border-neutral-100 tw-rounded-lg tw-p-3 tw-shadow-sm tw-text-sm tw-text-neutral-500",children:[t.jsx("div",{className:"tw-font-semibold tw-text-neutral-900 tw-mb-2",children:"Atajos de teclado"}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-1",children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Shift"}),t.jsx("span",{children:"+ clic para seleccionar múltiples tareas"})]}),t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Ctrl"}),t.jsx("span",{children:"+"}),t.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"C"}),t.jsx("span",{children:"Copiar"})]}),t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[t.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Ctrl"}),t.jsx("span",{children:"+"}),t.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"V"}),t.jsx("span",{children:"Ppegar"})]})]})]})}),t.jsx(oe.Panel,{position:"top-left",className:"tw-m-0",children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-2",children:[t.jsxs("div",{children:[z.estatusFromStrapi===Ee.PUBLISHED&&t.jsx(x.Tag,{color:"success",label:"Publicado"}),z.estatusFromStrapi===Ee.DRAFT&&t.jsx(x.Tag,{color:"warning",label:"Borrador"})]}),!I&&O>0&&t.jsxs("p",{className:"tw-text-blue-dark-500 ui-text-xs tw-font-medium",children:[O," ",O===1?"tarea seleccionada":"tareas seleccionadas"]})]})}),t.jsx(oe.Panel,{position:"top-right",className:"tw-m-0",children:t.jsxs("div",{className:"tw-flex tw-gap-4",children:[!I&&t.jsxs(x.ButtonGroup,{children:[t.jsxs(x.Button,{leftSlot:de.faCopy,onClick:v,disabled:!S,size:"xxs",color:S?"primary":"secondary",title:S?`Copiar ${O} ${O===1?"tarea":"tareas"} (Ctrl+C)`:"Selecciona tareas para copiar (mantén Shift y haz clic)",children:["Copiar ",O>0&&`(${O})`]}),t.jsxs(x.Button,{leftSlot:de.faFile,size:"xxs",onClick:()=>U(),disabled:!K(),color:K()?"primary":"secondary",title:K()?`Pegar ${J} ${J===1?"tarea":"tareas"} (Ctrl+V)`:"No hay tareas copiadas",children:["Pegar ",J>0&&`(${J})`]})]}),t.jsxs(x.ButtonGroup,{color:"secondary",size:"xxs",children:[t.jsx(x.Button,{icon:de.faMinus,onClick:W,color:"secondary"}),t.jsxs(x.Button,{onClick:re,onDoubleClick:Z,color:"secondary",children:[R,"%"]}),t.jsx(x.Button,{icon:de.faPlus,onClick:ee})]})]})})]}),f&&t.jsx(Mr,{isOpen:f.isOpen,position:f.position,onClose:j,createNodeFromPopup:b,parentNodeInfo:w()}),y&&t.jsx(Rr,{isOpen:y.isOpen,onClose:_,createConnectionFromPopup:h,availableConnections:ie()})]})},Vr=({initialNodes:e,initialEdges:a,debugEvents:n})=>t.jsx(oe.ReactFlowProvider,{children:t.jsx(Gr,{initialNodes:e,initialEdges:a,debugEvents:n})}),at=$e.create(e=>({step:1,setStep:a=>e({step:a}),reset:()=>e({step:1})})),Wr=({limit:e})=>{const a=at(r=>r.step),n=at(r=>r.setStep),s=p.useCallback(()=>{a<e&&n(a+1)},[a,n,e]),o=p.useCallback(()=>{a>1&&a<=e&&n(a-1)},[a,n,e]),i=p.useCallback(r=>{r>0&&r<=e&&n(r)},[n,e]);return p.useMemo(()=>({step:a,nextStep:s,prevStep:o,onStepChange:i}),[a,s,o,i])},ha=["fase_plantilla","tipo_plantilla","categoria","tipo_medio","medio_especifico","pertenencia_medio","ubicacion_medio","responsable_impresion"],xa=["fase_plantilla","modo_configuracion","tipo_medio","formato_salida"],ba=["tipo_medio","formato_salida","medio_especifico"],ya={fase_plantilla:{Preventa:{fieldsToClear:["modo_configuracion","formato_salida","medio_especifico","tipo_plantilla","categoria"]},Venta:{fieldsToClear:["tipo_medio","medio_especifico","modo_configuracion"]}},modo_configuracion:{Default:{fieldsToClear:["formato_salida","medio_especifico","tipo_medio"]},Especifico:{fieldsToClear:["formato_salida","medio_especifico","tipo_medio"]}},tipo_medio:{"Sitios Fijos":{fieldsToClear:["medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"]},Indoors:{fieldsToClear:["medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"]},"Vallas Móviles":{fieldsToClear:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},Camiones:{fieldsToClear:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},"Brand Riders":{fieldsToClear:["responsable_impresion","pertenencia_medio","ubicacion_medio"]}},formato_salida:{Digital:{fieldsToClear:["pertenencia_medio","ubicacion_medio"]},Impreso:{fieldsToClear:["pertenencia_medio","ubicacion_medio"]}}},ja={fase_plantilla:{Venta:{fieldsToEnableDisable:["tipo_plantilla","modo_configuracion","categoria","pertenencia_medio","ubicacion_medio"]},Preventa:{fieldsToEnableDisable:["modo_configuracion"]}},modo_configuracion:{Preventa:{Default:{fieldsToEnableDisable:["tipo_medio"]},Especifico:{fieldsToEnableDisable:["tipo_medio"]}},Venta:{Default:{fieldsToEnableDisable:["tipo_medio","formato_salida"]},Especifico:{fieldsToEnableDisable:["tipo_medio"]}}},tipo_plantilla:{General:{fieldsToEnableDisable:["medio_especifico"]},Individual:{fieldsToEnableDisable:[]}},formato_salida:{Digital:{fieldsToEnableDisable:["responsable_impresion"]},Impreso:{fieldsToEnableDisable:["responsable_impresion"]}}};function Ut(e){const[a,n]=p.useState([]),[s,o]=p.useState({}),{setClaveParams:i,templateFormData:r,setTemplateFormData:c,resetTemplateFormData:u,setDisableField:l,setClave:d,claveParams:m,setParamTipo:g}=Fe(),{tasks_api:f}=ge(),w=at(E=>E.step),{data:b,error:j,isSuccess:y,isError:h}=ue.useQuery({queryKey:["paramsTipoPlantilla"],queryFn:async()=>{const E=Pe.stringify({populate:{params_plantillas:{fields:["id","abbreviation","name","active","tipomedio_nombre","reference_id"]}},sort:["order:asc"],fields:["id","step","key","label","order"]},{encodeValuesOnly:!0}),z=await f.get(`/api/params-tipos?${E}`);return z.data?{paramsTiposPlantilla:xe(z.data.data)}:{paramsTiposPlantilla:[]}},refetchOnWindowFocus:!1});p.useEffect(()=>{j&&h&&console.log(j)},[j,h]),p.useEffect(()=>{if(b&&y){const E=b.paramsTiposPlantilla;n(E)}},[b,y]);const _={fase_plantilla:(E,z)=>{c({fase_plantilla:E}),g({fase_plantilla:z})},tipo_plantilla:(E,z)=>{c({tipo_plantilla:E}),g({tipo_plantilla:z})},modo_configuracion:(E,z)=>{c({modo_configuracion:E}),g({modo_configuracion:z})},categoria:(E,z)=>{c({categoria:E}),g({categoria:z})},formato_salida:(E,z)=>{c({formato_salida:E}),g({formato_salida:z})},tipo_medio:(E,z)=>{c({tipo_medio:E}),g({tipo_medio:z})},medio_especifico:(E,z)=>{c({medio_especifico:E}),g({medio_especifico:z})},responsable_impresion:(E,z)=>{c({responsable_impresion:E}),g({responsable_impresion:z})},pertenencia_medio:(E,z)=>{c({pertenencia_medio:E}),g({pertenencia_medio:z})},ubicacion_medio:(E,z)=>{c({ubicacion_medio:E}),g({ubicacion_medio:z})}},M={fase_plantilla:(E,z)=>i({field:E,value:z}),tipo_plantilla:(E,z)=>i({field:E,value:z}),categoria:(E,z)=>i({field:E,value:z}),tipo_medio:(E,z)=>i({field:E,value:z}),medio_especifico:(E,z)=>i({field:E,value:z}),responsable_impresion:(E,z)=>i({field:E,value:z}),pertenencia_medio:(E,z)=>i({field:E,value:z}),ubicacion_medio:(E,z)=>i({field:E,value:z})},F={Digital:{execute:()=>{const E=a.filter(I=>I.step===3).find(I=>I.key==="responsable_impresion").params_plantillas.find(I=>I.name==="N/A").id,z="step3.responsable_impresion",Q=["responsable_impresion"];c({responsable_impresion:"N/A"}),e(z,E),l({fields:Q,value:!0}),i({field:"responsable_impresion",value:"NA"})}},Impreso:{execute:()=>{const E="step3.responsable_impresion",z=["responsable_impresion"];c({responsable_impresion:""}),e(E,""),l({fields:z,value:!1}),i({field:"responsable_impresion",value:""})}}},q={"Sitios Fijos":{execute:()=>J()},"Vallas Móviles":{execute:()=>H()},Indoors:{execute:()=>J()},Camiones:{execute:()=>O()},"Brand Riders":{execute:()=>O()}},T={"Sitios Fijos":{execute:()=>K()},"Vallas Móviles":{execute:()=>K()},Indoors:{execute:()=>K()},Camiones:{execute:()=>{U(),F.Impreso.execute()}},"Brand Riders":{execute:()=>{U(),F.Impreso.execute()}}},D={"Sitios Fijos":{execute:()=>v()},"Vallas Móviles":{execute:()=>U()},Indoors:{execute:()=>v()},Camiones:{execute:()=>U()},"Brand Riders":{execute:()=>U()}},v=()=>{const E=["medio_especifico"],z=r.modo_configuracion,Q=`step${w}.medio_especifico`,I=`step${w}.formato_salida`;l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0}),l(z==="Default"?{fields:E,value:!0}:{fields:E,value:!1}),c({medio_especifico:""}),c({formato_salida:""}),e(Q,""),e(I,""),i({field:"medio_especifico",value:""}),i({field:"formato_salida",value:""})},U=()=>{const E=a.filter(G=>G.step===w).find(G=>G.key==="formato_salida").params_plantillas.find(G=>G.name==="Impreso").id;l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0});const Q=`step${w}.formato_salida`,I=["formato_salida","medio_especifico"],A=`step${w}.medio_especifico`;c({medio_especifico:""}),c({formato_salida:"Impreso"}),e(Q,E),e(A,""),i({field:"medio_especifico",value:""}),i({field:"tipo_medio",value:r.tipo_medio}),l({fields:I,value:!0})},K=()=>{const E=["formato_salida"],z=`step${w}.formato_salida`,Q={};Q.formato_salida="",c(Q),e(z,""),l({fields:E,value:!1})},J=()=>{const E=["formato_salida","medio_especifico"],z=`step${w}.formato_salida`,Q={};Q.formato_salida="",c(Q),e(z,""),l({fields:E,value:!1})},H=()=>{const E=["formato_salida"],z=["medio_especifico"],Q=`step${w}.formato_salida`,I=`step${w}.medio_especifico`,A={};A.formato_salida="",A.medio_especifico="",c(A),e(Q,""),e(I,""),l({fields:E,value:!1}),l({fields:z,value:!0})},O=()=>{const E=a.filter(A=>A.step===w).find(A=>A.key==="formato_salida").params_plantillas.find(A=>A.name==="Impreso").id,z=`step${w}.formato_salida`,Q=`step${w}.medio_especifico`,I=["formato_salida","medio_especifico"];c({formato_salida:"Impreso"}),e(z,E),e(Q,""),l({fields:I,value:!0}),F.Impreso.execute()},S=(E,z)=>{Object.keys(ya).includes(E)&&ya[E][z].fieldsToClear.forEach(A=>{const G={};G[A]="",c(G),i({field:A,value:""}),e&&[...new Set(a.map(C=>C.step))].forEach(C=>{const $=`step${C}.${A}`;e($,"")})})},B=(E,z,Q)=>E==="modo_configuracion"&&Q?ja[E][Q][z].fieldsToEnableDisable:ja[E][z].fieldsToEnableDisable,k=E=>a.filter(z=>z.step===E),R=E=>{var z;return s[E]||((z=a.find(Q=>Q.key===E))==null?void 0:z.params_plantillas)},ee=(E,z)=>{var I,A,G,P;let Q=[];E==="Sitios Fijos"?z==="Preventa"?Q=(I=a.find(C=>C.key==="medio_especifico"))==null?void 0:I.params_plantillas.filter(C=>C.tipomedio_nombre==="OOH"&&C.name==="PANTALLA DIGITAL"):z==="Venta"&&(Q=(A=a.find(C=>C.key==="medio_especifico"))==null?void 0:A.params_plantillas.filter(C=>C.tipomedio_nombre==="OOH")):E==="Indoors"?Q=(G=a.find(C=>C.key==="medio_especifico"))==null?void 0:G.params_plantillas.filter(C=>C.tipomedio_nombre==="InDoor"):Q=(P=a.find(C=>C.key==="medio_especifico"))==null?void 0:P.params_plantillas,o(C=>({...C,medio_especifico:Q}))},W=(E,z)=>{const Q=E.key;if(ba.includes(Q)&&Q==="tipo_medio"){const I=z.label,A=r.fase_plantilla,G=r.modo_configuracion;if(A==="Preventa"){ee(I,A);return}else if(G==="Especifico"){ee(I,A);return}}},re=(E,z,Q)=>{const I=E.params_plantillas.find(A=>E.key==="categoria"?A.reference_id===z.value:A.id===z.value);if(I){const A=E.key,G=z.label;if(_[A](G,Q),xa.includes(A))if(S(A,G),A==="fase_plantilla"){const P=G,C=B(A,P);l({fields:["categoria","modo_configuracion","tipo_plantilla"],value:!0}),C.length>0&&l({fields:C,value:!1}),P==="Preventa"&&l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0})}else if(A==="modo_configuracion"){const P=G,C=r.fase_plantilla,$=B(A,P,C);l({fields:["medio_especifico","formato_salida"],value:!0}),$.length>0&&l({fields:$,value:!1}),C==="Preventa"&&l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0})}else if(A==="tipo_medio"){const P=G,C=r.modo_configuracion;r.fase_plantilla==="Venta"?C==="Especifico"?q[P].execute():T[P].execute():D[P].execute()}else if(A==="formato_salida")F[G].execute();else{const P=B(A,G);P.length>0&&l({fields:P,value:!1})}if(ha.includes(A)){let P="",C="";if(A==="formato_salida"){const $=r.modo_configuracion,L=G;C="tipo_medio",P=$==="Default"&&L==="Digital"?P="DDG":P="DRP"}else C=A,P=I.abbreviation;M[C](C,P)}ba.includes(A)&&W(E,z)}},Z=()=>{if(r){const E=r.fase_plantilla;if(E==="Preventa"){const z=r.modo_configuracion,Q=m.fase_plantilla||"XX";let I=null;if(z==="Default")I=m.tipo_medio||"XXX";else{const G=r.tipo_medio;["Vallas Móviles","Camiones","Brand Riders"].includes(G)?I=m.tipo_medio||"XXX":I=m.medio_especifico||"XXX"}const A=`${Q}-${I}`;d(A)}if(E==="Venta"){const z=m.fase_plantilla||"XX",Q=m.tipo_plantilla||"XXX",I=m.categoria||"XX",A=m.medio_especifico||m.tipo_medio||m.modo_configuracion||"XXX",G=m.responsable_impresion||"XX",P=m.pertenencia_medio||"X",C=m.ubicacion_medio||"X",$=`${z}-${Q}-${I}-${A}-${G}-${P}-${C}`;d($)}}};return p.useEffect(()=>{Z()},[m]),{templateFields:a,getFieldsByStep:k,dropdownFunctionsUpdateClave:M,fieldsForUpdateClave:ha,resetTemplateFormData:u,fieldsWithDisableTrigger:xa,getFieldsToDisable:B,handleOptionSelected:re,getFilteredOptions:R,dropdownFunctionsUpdateFormData:_}}const Ht=()=>{const{control:e,setValue:a}=Se.useFormContext(),n=at(l=>l.step),{getFieldsByStep:s,handleOptionSelected:o,getFilteredOptions:i}=Ut(a),{disabledFields:r}=Fe(),c=p.useMemo(()=>s(n),[n,s]),u=l=>`El campo ${l.charAt(0).toLocaleLowerCase()+l.slice(1)} es requerido`;return c.map(l=>{const d=`step${l.step}.${l.key}`,m=l.label,f=i(l.key).map(w=>({label:w.name,value:l.key==="categoria"?w.reference_id:w.id}));return t.jsx(Se.Controller,{name:d,control:e,rules:{required:{value:!r[l.key],message:u(m)},validate:w=>r[l.key]||w?!0:u(m)},render:({field:w,fieldState:{error:b}})=>t.jsx("div",{children:t.jsx(x.Dropdown,{label:m,value:w.value,onValueChange:j=>{w.onChange(j)},error:b==null?void 0:b.message,options:f,onOptionSelect:j=>{o(l,j,l.id)},disabled:r[l.key]||!1})})},l.id)})},Qr=()=>t.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:t.jsx(Ht,{})}),Xr=()=>t.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:t.jsx(Ht,{})}),Yr=()=>t.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:t.jsx(Ht,{})}),Jr=({step:e})=>t.jsxs("div",{className:"tw-flex tw-min-h-[27rem] tw-flex-col tw-gap-y-4",children:[e===1&&t.jsx(Qr,{}),e===2&&t.jsx(Xr,{}),e===3&&t.jsx(Yr,{})]}),Zr=e=>{const a={step1:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria"],step2:["tipo_medio","formato_salida","medio_especifico"],step3:["responsable_impresion","pertenencia_medio","ubicacion_medio"]};return e.reduce((n,s)=>{const o=`step${s.step}`,i=a[o];return i&&i.includes(s.key)&&(n[o]||(n[o]={}),n[o][s.key]=""),n},{})},ei=e=>{const a={step1:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria"],step2:["tipo_medio","formato_salida","medio_especifico"],step3:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},n={};return Object.keys(a).forEach(s=>{n[s]={},a[s].forEach(o=>{var r;const i=(r=e[s])==null?void 0:r[o];n[s][o]=i!==void 0?i:""})}),n},ti=e=>e&&e.status===400?{failureLevel:"strapi",errorMessage:"Error al procesar la solicitud",technicalDetails:e.message}:e&&e.status===401?{failureLevel:"authentication",errorMessage:"Error de autenticación",technicalDetails:`Token expirado o inválido: ${e.message}`}:e&&e.status===500?{failureLevel:"strapi",errorMessage:"Error de servidor",technicalDetails:`Error en el servidor de Strapi: ${e.message}`}:{failureLevel:"unknown",errorMessage:"Error inesperado al crear la plantilla",technicalDetails:`Error desconocido: ${e.message}`};function ai(e,a){const{clave:n,paramsTipo:s,currentTemplateForEdit:o,isEditTemplate:i,setDisableField:r,setClaveParams:c,isDuplicateTemplate:u,templateFormData:l}=Fe(),{tasks_api:d}=ge(),{getFieldsByStep:m,dropdownFunctionsUpdateFormData:g,templateFields:f}=Ut(),w=()=>{var q;try{const T={},D=e(),v=ei(D),{step1:U}=v,K=[];T.clave=n,U.categoria!=""&&(T.categoria=U.categoria);for(const[J,H]of Object.entries(v))for(const[O,S]of Object.entries(H)){const B={id:null,params_tipo:{id:null}};if(S!=""){const k=s[O];if(O==="categoria"){const R=f.find(W=>W.key==="categoria"),ee=(q=R==null?void 0:R.params_plantillas)==null?void 0:q.find(W=>W.reference_id===S);B.id=ee==null?void 0:ee.id}else B.id=S;B.params_tipo.id=k,K.push(B)}}return Object.keys(K).length>0&&(T.params_plantillas=K),T}catch(T){console.log(T)}},b=async q=>{var T;try{let D=null;return i?D=await d.put(`/api/plantillas/${o.id}`,{data:q}):D=await d.post("/api/plantillas",{data:q}),D.data?xe(D.data):null}catch(D){throw console.error("Error en saveTemplateToStrapi:",{error:D.message,status:(T=D.response)==null?void 0:T.status}),D}},j=async q=>{var T;try{const D=Pe.stringify({filters:{plantilla:{id:q}},populate:{graph_layout:!0}},{encodeValuesOnly:!0}),v=await d.get(`/api/plantillas/plantilla-tareas-grafico?${D}`);return v.data?xe(v.data.data):null}catch(D){throw console.error("Error en getTemplateWithTasks:",{error:D.message,status:(T=D.response)==null?void 0:T.status}),D}},y=async(q,T,D)=>{var v,U,K,J,H,O,S;try{const B=await j(q),k=await j(T);if(!B||!B.tarea_plantillas)return console.warn("No se encontraron tareas para duplicar en la plantilla original"),null;const R=new Map,ee=new Map;let W=1;B.tarea_plantillas.forEach(Q=>{let I=null;Q.start?I=D:I=-(Date.now()+W++),R.set(Q.id,I)}),(U=(v=B.graph_layout)==null?void 0:v.snapshot)!=null&&U.nodes&&B.graph_layout.snapshot.nodes.forEach(Q=>{const I=`node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;ee.set(Q.id,I)});const re=B.tarea_plantillas.filter(Q=>!Q.start).map(Q=>{var A,G,P,C;return{id:R.get(Q.id),uuid:crypto.randomUUID(),reference_graph:Q.reference_graph,texto_corto:Q.texto_corto,texto_largo:Q.texto_largo||null,prioridad:Q.prioridad,nivel_dificultad:Q.nivel_dificultad,duracion:Q.duracion,start:Q.start,type:Q.type||"task",equipo:((A=Q.equipo)==null?void 0:A.id)||null,responsable:((G=Q.responsable)==null?void 0:G.id)||null,plantilla:{id:T,clave:B.clave,categoria:B.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:[],id_t_requerida:R.get((P=Q.id_t_requerida)==null?void 0:P.id)||null,ids_t_dependientes:[],tarea_padre:R.get((C=Q.tarea_padre)==null?void 0:C.id)||null,tareas:[]}});let Z=null;if(B.graph_layout){const Q=k.tarea_plantillas.find(I=>I.start===!0);Z={...B.graph_layout,id:(K=k.graph_layout)==null?void 0:K.id,snapshot:{...B.graph_layout.snapshot,edges:B.graph_layout.snapshot.edges.map(I=>{if(I.source==="start")return{...I,data:{...I.data,childId:re.find(A=>A.reference_graph===I.target).id,parentId:Q.id}};{const A=re.find(G=>G.reference_graph===I.target);return{...I,data:{...I.data,childId:A==null?void 0:A.id,parentId:(A==null?void 0:A.id_t_requerida)||(A==null?void 0:A.tarea_padre)}}}}),nodes:((H=(J=B.graph_layout.snapshot)==null?void 0:J.nodes)==null?void 0:H.map(I=>{let A={};return I.type==="start"?A={...I,data:{...I.data,tareaId:Q.id}}:A={...I,data:{tareaId:null}},A}))||[]}}}if(!Z)throw console.error("Error: duplicatedGraphLayout es null, no se puede guardar"),new Error("No se pudo crear el graph_layout para la plantilla duplicada");const E={graph_layout:Z,tasks:{created:re,updated:[],deleted:[]}},z=await d.post("/api/tareas/save-tareas-grafico",{data:E});if(z.data&&z.status===200){const Q=await j(T),I=new Map;Q.tarea_plantillas.forEach(P=>I.set(P.reference_graph,P.id));let A=Q.graph_layout;return(!((O=A==null?void 0:A.snapshot)!=null&&O.nodes)||A.snapshot.nodes.length===0)&&(console.log("Graph layout vacío, reconstruyendo desde el original..."),A=Z),(S=A==null?void 0:A.snapshot)!=null&&S.nodes&&(A.snapshot.nodes=A.snapshot.nodes.map(P=>{var N;const C={...P,position:P.position||{x:0,y:0}},$=C.id,L=I.get($);if(L)return{...C,data:{...C.data,id:L,tareaId:L}};if((N=C.data)!=null&&N.tareaId){const V=Q.tarea_plantillas.find(Y=>Y.reference_graph===$);if(V)return{...C,data:{...C.data,id:V.id,tareaId:V.id}}}return C})),await d.put(`/api/plantillas/${T}`,{data:{graph_layout:A}}),await j(T)}return null}catch(B){throw console.error("Error al duplicar las tareas de la plantilla:",B),B}},h=async()=>{var q,T;try{let D=w();const v=await b(D);if(!v)return{success:!1,message:"No se pudo guardar el flujo de trabajo en Strapi",error:"templateData es null"};const U=Pe.stringify({filters:{id:{$eq:v.id}},populate:{tarea_plantillas:{filters:{start:{$eq:!0}}}}},{encodeValuesOnly:!0}),{data:K}=await d.get(`/api/plantillas?${U}`),H=xe(K.data)[0].tarea_plantillas[0].id;if(u&&(o!=null&&o.id))try{const S=await y(o.id,v.id,H);return S?{success:!0,message:"Flujo de trabajo duplicado completamente con todas sus tareas",data:S}:{success:!0,message:"Flujo de trabajo creado, pero no se pudieron duplicar las tareas",data:await j(v.id)}}catch(S){return console.error("Error al duplicar tareas:",S),{success:!0,message:"Flujo de trabajo creado, pero hubo un error al duplicar las tareas",data:await j(v.id)}}const O=await j(v.id);return O?{success:!0,message:"Flujo de trabajo creado y sincronizado completamente",data:O}:{success:!1,message:"No se pudieron obtener los datos completos del flujo de trabajo",error:"completeData es null"}}catch(D){const v=ti(((T=(q=D==null?void 0:D.response)==null?void 0:q.data)==null?void 0:T.error)||D);return console.error("Error al guardar el flujo de trabajo: ",{level:v.failureLevel,message:v.errorMessage,technicalDetails:v.technicalDetails}),{success:!1,message:v.errorMessage||"Error al guardar el flujo de trabajo",error:v.technicalDetails||D.message}}},_=()=>{const q=o==null?void 0:o.params_plantillas;if(!(q!=null&&q.length))return;let T={};[1,2,3].forEach(v=>{const U=`step${v}`;T[U]={},m(v).forEach(J=>{var O;const H=q.find(S=>S.params_tipo.key===J.key);if(H){let S=null;if(J.key==="categoria"){const B=(O=J.params_plantillas)==null?void 0:O.find(k=>k.id===H.id);S=(B==null?void 0:B.reference_id)||H.id}else S=H.id;T[U][J.key]=S}})}),a(T)},M=()=>{var T;const q=o==null?void 0:o.params_plantillas;if(q!=null&&q.length)for(const D of q){const{params_tipo:{id:v,key:U},name:K,id:J}=D,H=f.find(S=>S.key===U),O=(T=H==null?void 0:H.params_plantillas)==null?void 0:T.find(S=>S.id===J);g[U]&&g[U](K,v),O&&c({field:U,value:O.abbreviation})}},F=()=>{try{const{fase_plantilla:q,modo_configuracion:T,formato_salida:D,tipo_medio:v}=l;if(q==="Venta")r({fields:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria","tipo_medio"],value:!1}),T==="Default"?(r({fields:["tipo_medio","formato_salida"],value:!1}),r({fields:["medio_especifico"],value:!0}),["Sitios Fijos","Vallas Móviles","Indoors"].includes(v)||r({fields:["formato_salida","medio_especifico"],value:!0}),D==="Digital"?(r({fields:["responsable_impresion"],value:!0}),r({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):r({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1})):(["Sitios Fijos","Indoors"].includes(v)&&r({fields:["formato_salida","medio_especifico"],value:!1}),["Vallas Móviles"].includes(v)&&(r({fields:["formato_salida"],value:!1}),r({fields:["medio_especifico"],value:!0})),["Camiones","Brand Riders"].includes(v)&&r({fields:["formato_salida","medio_especifico"],value:!0}),D==="Digital"?(r({fields:["responsable_impresion"],value:!0}),r({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):r({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1}));else if(r({fields:["modo_configuracion"],value:!1}),r({fields:["tipo_plantilla","categoria"],value:!0}),T=="Default"){const U=["formato_salida","medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"];r({fields:["tipo_medio"],value:!1}),r({fields:U,value:!0})}else["Sitios Fijos","Indoors"].includes(v)?(r({fields:["formato_salida"],value:!0}),r({fields:["medio_especifico"],value:!1})):r({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!0})}catch(q){console.error("Error al aplicar reglas de habilitar y deshabilitar campos",q)}};return p.useEffect(()=>{(i||u)&&o&&(_(),M())},[i,u,o]),p.useEffect(()=>{(i||u)&&l&&F()},[i,l,u]),{savePlantilla:h,getTemplateWithTasks:j}}const si=()=>{const{watch:e,getValues:a}=Se.useFormContext(),{templateFormData:n,isDuplicateTemplate:s,currentTemplateForEdit:o}=Fe(),[i,r]=p.useState(!1),c=p.useRef(null),u=p.useRef(null),l=p.useRef(!1),d=e();return p.useEffect(()=>{if(!l.current&&s&&o){const g=setTimeout(()=>{c.current=a(),u.current={...n},l.current=!0,r(!1)},500);return()=>clearTimeout(g)}},[s,o,a,n]),p.useEffect(()=>{if(c.current&&u.current&&l.current){const g=a(),f=n,w=JSON.stringify(g)!==JSON.stringify(c.current),b=JSON.stringify(f)!==JSON.stringify(u.current);r(w||b)}},[d,n,a]),{hasChanges:i,resetChanges:()=>{c.current=null,u.current=null,l.current=!1,r(!1)}}},ni=({onReset:e})=>{const{hasChanges:a,resetChanges:n}=si(),{setHasFormChanges:s}=Fe();return p.useEffect(()=>{s(a)},[a,s]),p.useEffect(()=>{e(n)},[e,n]),null},oi=({isOpen:e,onClose:a})=>{const{step:n,nextStep:s,prevStep:o,onStepChange:i}=Wr({limit:3}),r=at(A=>A.reset),{templateFields:c,resetTemplateFormData:u}=Ut(),{clave:l,resetClave:d,resetDisabledFields:m,isEditTemplate:g,setIsEditTemplate:f,refetch:w,isDuplicateTemplate:b,hasFormChanges:j,setIsDuplicateTemplate:y,setCurrentTemplateForEdit:h}=Fe(),{openTemplate:_}=Be(),[M,F]=p.useState(!1),[q,T]=p.useState(""),[D,v]=p.useState(!1),U=p.useRef(null),K=A=>{U.current=A},J=p.useMemo(()=>Zr(c),[c]),H=n===1,O=n===3,S=H?"Cancelar":"Atrás",B=Se.useForm({mode:"onChange",defaultValues:J}),{trigger:k,reset:R,clearErrors:ee,getValues:W}=B,{savePlantilla:re}=ai(W,R),Z=p.useRef(!1);p.useEffect(()=>{e&&(r(),Z.current=!1)},[e,r]),p.useEffect(()=>{e&&!g&&!b&&!Z.current&&(R(J),u(),Z.current=!0)},[e,g,b,R,J,u]);const E=async()=>{if(await k()){if(n===3){if(!j&&b){T("Ya existe un proceso con éstos parámetros. Modifica al menos uno para poder duplicarlo."),v(!0);return}try{F(!0);const G=await re();if(G.success){const P=G.data;if(I(),Q(),v(!1),!g)try{await _({template:P,statusTemplate:je.NEW})}catch(C){console.warn("La plantilla se creó exitosamente pero hubo un problema al abrirla:",C)}w()}else{const{error:P}=G;T(P),v(!0)}}catch(G){console.error("Error inesperado al guardar la plantilla:",G);return}finally{F(!1)}}s()}},z=()=>{T(""),v(!1)},Q=()=>{ee(),R(J),u(),m(),d(),z(),f(!1),y(!1),h(null),U.current&&U.current()},I=()=>{Q(),Z.current=!1,a(),console.log("cerrar modal")};return M?t.jsx(nt,{isLoading:M}):t.jsxs(Se.FormProvider,{...B,children:[t.jsx(ni,{onReset:K}),t.jsx(x.Modal,{isOpen:e,closeAtCancel:!1,onSuccess:E,cancelButtonText:S,successButtonText:O?g?"Guardar":"Crear":"Continuar",onCancel:H?I:o,onClose:I,size:"sm",iconConfig:{icon:ne.faFilePen},title:g?"Editar flujo de trabajo":"Nuevo flujo de trabajo",children:t.jsxs(x.Modal.Body,{children:[t.jsx("div",{className:"tw-flex tw-w-full tw-overflow-x-auto tw-pb-16 tw-pt-12",children:t.jsx("div",{className:"tw-flex tw-w-full",style:{justifyContent:"center",minWidth:"fit-content"},children:t.jsx(x.Stepper,{currentStep:n-1,onStepChange:A=>i(A+1),steps:[{title:"Paso 1",description:"INFORMACIÓN"},{title:"Paso 2",description:"DETALLES"},{title:"Paso 3",description:"PRODUCCIÓN"}]})})}),t.jsx("div",{className:"tw-flex tw-w-full tw-justify-center",children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-gap-0",children:[t.jsx("div",{className:"tw-bg-[#F0F0F0] tw-rounded-[100px] tw-p-2",style:{width:"fit-content",minWidth:"fit-content"},children:t.jsx("div",{className:"tw-font-sans tw-font-bold tw-py-1 tw-p-[90px]",children:l})}),t.jsx("div",{className:"ui-bg-blue-500 tw-text-white tw-px-3 tw-py-1.5 tw-font-medium tw--mt-4",style:{borderRadius:"100px",fontSize:"10px"},children:"CLAVE"})]})}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-y-4 tw-p-16",children:[D&&t.jsx(x.Alert,{open:!0,color:"danger",message:q,className:"tw-mb-6",onClose:z}),t.jsx(Jr,{step:n})]})]})})]})},ri=({isOpen:e,onClose:a,replaceTemplate:n})=>t.jsx(t.Fragment,{children:t.jsx(x.Modal,{isOpen:e,closeAtCancel:!1,cancelButtonText:"Cancelar",successButtonText:"Abrir",onCancel:a,onClose:a,onSuccess:n,size:"sm",iconConfig:{icon:de.faExclamationTriangle},title:"Límite de flujos de trabajo",children:t.jsx(x.Modal.Body,{children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full ui-p-4 ui-gap-8",children:[t.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:t.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full ui-p-16",style:{backgroundColor:"#EBEEF9"},children:t.jsx(x.Icon,{name:de.faExclamationTriangle,size:"lg",color:"blue"})})}),t.jsx("div",{className:"tw-text-center tw-mt-6",children:t.jsx("h2",{className:"tw-text-[24px] tw-font-bold ui-text-brand tw-leading-tight",children:"¿Quieres continuar?"})}),t.jsx("div",{className:"tw-text-center tw-mt-2",children:t.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-text-[#6B6B6B]",children:"Ya tienes 5 flujos de trabajo abiertos, si abres uno nuevo, se cerrará automáticamente el que lleva más tiempo sin usarse."})})]})})})}),ii=$e.create(e=>({cachedTemplate:null,canCreateTemplate:!1,setCachedTemplate:a=>e({cachedTemplate:a}),clearCachedTemplate:()=>e({cachedTemplate:null}),setCanCreateTemplate:a=>{const n=!(a<5);e({canCreateTemplate:n})}})),li=({isOpen:e,onClose:a,discardChanges:n,saveAndExit:s})=>t.jsx("div",{children:t.jsx(x.Modal,{isOpen:e,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Guardar y salir",onCancel:a,onClose:a,onSuccess:s,size:"sm",iconConfig:{icon:de.faExclamationTriangle},title:"Cambios sin guardar",children:t.jsx(x.Modal.Body,{children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full ui-p-4 ui-gap-8",children:[t.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:t.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full ui-p-16",style:{backgroundColor:"#EBEEF9"},children:t.jsx(x.Icon,{name:de.faSave,size:"lg",color:"brand"})})}),t.jsx("div",{className:"tw-flex tw-flex-col tw-mx-6",children:t.jsx(x.Alert,{open:!0,variant:"outlined",color:"danger",showCloseButton:!1,message:"Tienes cambios sin guardar en este flujo de trabajo",title:"No has guardado",className:"tw-mt-8"})}),t.jsx("div",{className:"tw-text-center tw-mt-5",children:t.jsx("h2",{className:"tw-text-[24px] tw-font-bold ui-text-brand",children:"¿Qué deseas hacer antes de salir?"})}),t.jsx("div",{className:"tw-text-center tw-mt-1",children:t.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-text-[#6B6B6B]",children:"Si sales ahora sin guardar se perderán los cambios actuales."})}),t.jsx("div",{className:"tw-flex tw-justify-center tw-mt-4",children:t.jsx(x.Button,{size:"xs",color:"secondary",onClick:()=>{n(),a()},children:"Descartar cambios"})})]})})})}),hs=({isOpen:e,onClose:a,publishTemplate:n})=>t.jsx(x.Modal,{isOpen:e,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Confirmar",onCancel:a,onClose:a,onSuccess:n,size:"sm",iconConfig:{icon:de.faArrowUp},title:"Publicar",children:t.jsx(x.Modal.Body,{children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full tw-p-8 ui-gap-16",children:[t.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:t.jsx(x.Icon,{name:de.faArrowUp,size:"lg",color:"blue",background:!0,padding:"lg"})}),t.jsx("div",{className:"tw-text-center",children:t.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-text-[#3658C1] tw-leading-tight",children:"¿Estás seguro de que deseas publicar este proceso?"})}),t.jsx("div",{className:"tw-text-center",children:t.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-text-[#6B6B6B]",children:"Al publicar este proceso, estará disponible para su uso en los flujos correspondientes. Asegúrate de que toda la información sea correcta antes de continuar."})})]})})}),ci=()=>{const e="grid",a="create-edit",n=p.useRef(null),{isOpenModalLimit:s,setIsOpenModalLimit:o,setOpenModalCreateTemplate:i,openModalCreateTemplate:r,setOpenModalUnsavedChanges:c,openModalUnsavedChanges:u,openModalPublishTemplate:l,setOpenModalPublishTemplate:d,setCurrentTemplateForEdit:m,setIsDuplicateTemplate:g,setIsEditTemplate:f}=Fe(),{removeTemplateStates:w}=st(),{mode:b,setMode:j,setViewMode:y,getViewMode:h}=_e(),{setCanCreateTemplate:_,canCreateTemplate:M}=ii(),F=b===e,{screens:q,get:T,delete:D,activeTemplate:v,activateTemplate:U,reorderingTemplates:K,replaceTemplate:J,saveTemplateChanges:H,publishTemplate:O,loadingPublishTemplate:S,loadingSaveChanges:B}=Be(),k=178,[R,ee]=p.useState([]),[W,re]=p.useState([]),[Z,E]=p.useState(null),[z,Q]=p.useState(!1),I=v!=null&&v.id?h(v.id):"readonly";p.useEffect(()=>{const X=()=>{if(!n.current)return;const ce=n.current.offsetWidth;let ie=0;const te=[],pe=[],fe=10,he=n.current.querySelector("button:not([data-screen])"),me=n.current.querySelector(".tw-mx-1");let be=0;he&&(be+=he.getBoundingClientRect().width),me&&q.length>0&&(be+=me.getBoundingClientRect().width,be+=fe);const Me=(ye,ke)=>{const Ze=ke?54:0,Kt=(ye==null?void 0:ye.length)*8;return Math.max(80,Kt+40+Ze)},Te=ce-k-be;q.forEach((ye,ke)=>{const pt=!!(ye.isNew||ye.badgeLabel),ot=Me(ye.clave,pt),rt=ke>0?fe:0,Ze=ot+rt;ie+Ze<=Te?(te.push(ye),ie+=Ze):pe.push(ye)}),ee(te),re(pe)},se=()=>{const ce=q.length;_(ce)};return q.length>0&&(X(),se(),window.addEventListener("resize",X)),()=>{window.removeEventListener("resize",X)}},[q,b]);const A=X=>X.estatus===je.DIRTY||X.estatus===je.NEW,G=async X=>{A(X)?(E(X.id),c(!0)):await D(X.id)},P=()=>d(!0),C=async()=>{await D(Z),await w(Z)},$=async()=>{await H(!1)},L=async()=>{await H()},N=()=>{var se,ce;const X=(ce=(se=v==null?void 0:v.graph_layout)==null?void 0:se.snapshot)==null?void 0:ce.nodes.length;Q(()=>X-1>=1)};p.useEffect(()=>{N()},[v,I]);const V=()=>!((v==null?void 0:v.estatus)==je.IDLE&&z&&v.estatusFromStrapi!==Ee.PUBLISHED),Y=()=>{var se;const{nodes:X}=(se=v==null?void 0:v.graph_layout)==null?void 0:se.snapshot;return X==null?void 0:X.some(ce=>ce.type!=="start"&&(ce==null?void 0:ce.data.tarea_padre)===null&&(ce==null?void 0:ce.data.id_t_requerida)===null)},ae=()=>(v==null?void 0:v.estatus)===je.IDLE||Y()?!0:!z,le=async()=>{await O(v.id)};return B||S?t.jsx(nt,{isLoading:B||S}):t.jsxs("div",{className:"tw-flex tw-gap-4 tw-justify-between tw-items-center tw-flex-wrap",children:[r&&t.jsx(oi,{isOpen:r,onClose:()=>i(!1)}),s&&t.jsx(ri,{isOpen:s,onClose:()=>o(!1),replaceTemplate:J}),u&&t.jsx(li,{isOpen:u,onClose:()=>c(!1),discardChanges:C,saveAndExit:L}),l&&t.jsx(hs,{isOpen:l,onClose:()=>d(!1),publishTemplate:le}),t.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-items-center tw-justify-between tw-flex-1 tw-flex-wrap",ref:n,children:[t.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-items-center tw-justify-start tw-flex-1 tw-flex-wrap",children:[t.jsx(x.Button,{size:"xs",color:F?"primary":"secondary",onClick:()=>j(e),children:"Listado de flujos"}),q.length>0&&t.jsx(x.Separator,{vertical:!0,className:"tw-mx-1"}),q.filter(X=>R.some(se=>se.clave===X.clave)).map(X=>{const se=(v==null?void 0:v.clave)===X.clave&&b===a;return t.jsxs(x.Button,{"data-screen":X.clave,size:"xs",onClick:async()=>{await U(X),j(a,X.id)},color:se?"primary":"secondary",leftSlot:Ce.faFilePen,badgeColor:A(X)?"warning":void 0,onClickRightSlot:()=>G(X),rightSlot:Ce.faXmark,children:[X.clave," ",X.status]},X.id)})]}),W.length>0&&t.jsx(x.Popup,{absolute:!0,rightSlot:Ce.faAngleDown,label:`${W.length}+`,size:"xs",color:"secondary",children:t.jsx("div",{className:"ui-py-2 ui-gap-4",style:{minWidth:"280px"},children:t.jsx(x.List,{icon:Ce.faFilePen,items:W.map(X=>({id:X.id,label:X.clave})),className:"ui-p-8 ui-gap-4",onClick:async X=>{const se=await T(X.id);await K(se.id),await U(se),j("create-edit",se.id)}})})})]}),b===a?t.jsx("div",{className:"tw-flex tw-gap-4 tw-items-center tw-justify-end tw-flex-wrap",children:v.estatusFromStrapi!==Ee.PUBLISHED&&t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{color:"secondary",size:"xs",leftSlot:Ce.faArrowUp,disabled:V(),onClick:P,children:"Publicar"}),I=="readonly"&&t.jsx(x.Button,{size:"xs",color:"primary",leftSlot:Ce.faEdit,onClick:()=>(v==null?void 0:v.id)&&y(v.id,"edit"),children:"Editar"}),I==="edit"&&t.jsx(x.Button,{size:"xs",color:"primary",leftSlot:Ce.faSave,onClick:$,disabled:ae(),children:"Guardar"})]})}):t.jsx(x.Button,{disabled:M,tooltip:M?"Límite de 5 plantillas con cambios sin guardar. Guarda y cierra alguna para crear una nueva.":"",leftSlot:Ce.faPlus,size:"xs",color:"primary",onClick:()=>{m(null),g(!1),f(!1),i(!0)},children:"Nuevo flujo"})]})},di=({isOpen:e,onClose:a,deleteTemplate:n})=>t.jsx(x.AlertDialog,{title:"Eliminar Borrador",iconContent:de.faBan,heading:"¿Estás seguro?",subheading:"Si eliminas este borrador, también se borrarán todas sus tareas y conexiones con otros borradores.",icon:de.faBan,label:"Escribe 'Eliminar' para continuar",confirmationText:"Eliminar",isOpen:e,onClose:a,onConfirm:n,placeholder:""}),ui=()=>{const{viewMode:e,setRefetch:a,openModalPublishTemplate:n,setOpenModalPublishTemplate:s,currentTemplateId:o,setOpenModalDeleteTemplate:i,openModalDeleteTemplate:r}=Fe(),{publishTemplate:c,deleteTemplate:u}=Be(),{debouncedSearch:l,filters:d}=ns("templates-container"),m=e==="list",[g,f]=p.useState(1),w=9,{data:b,isLoading:j,isFetching:y,refetch:h}=ws({page:g,pageSize:w,search:l,filters:d});p.useEffect(()=>{a(h)},[]),p.useEffect(()=>{f(1)},[d,l]);const{users:_}=Je(),{getImageOBP:M}=ge(),F=v=>{if(!(v!=null&&v.email))return"";const U=_==null?void 0:_[v==null?void 0:v.email];return U!=null&&U.image?M(U==null?void 0:U.image):""},q=p.useMemo(()=>{try{return!b||!_?[]:b.data.map(v=>{const U=F((v==null?void 0:v.updated_by)||(v==null?void 0:v.created_by));return{...v,updated_by:{...v.updated_by,image:U}}})}catch(v){return console.error("Error al mapear las plantillas:",v),[]}},[b,_]),T=async()=>{await c(o),await h()},D=async()=>{await u(o),await h()};return j||y?t.jsx(nt,{isLoading:j||y}):t.jsxs("div",{className:"tw-flex tw-flex-col tw-justify-between tw-gap-y-4 tw-h-full",children:[t.jsx(hs,{isOpen:n,onClose:()=>s(!1),publishTemplate:T}),t.jsx(di,{isOpen:r,onClose:()=>i(!1),deleteTemplate:D}),t.jsx("div",{className:`tw-grid tw-gap-4 ${m?"tw-grid-cols-1":"tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3"}`,children:q.map(v=>t.jsx(us,{fullWidth:m,template:v},v.id))}),t.jsx("div",{children:t.jsx(x.Pagination,{pageSize:w,pageCount:b==null?void 0:b.meta.pagination.pageCount,currentPage:g,onPageChange:v=>f(v)})})]})},xs=()=>{var r,c,u,l;const e="grid",a="create-edit",{mode:n}=_e(),s=n===e,o=n===a,i=Le(d=>d.activeTemplate);return t.jsxs("div",{className:"tw-h-full tw-flex tw-flex-col tw-gap-y-6",children:[t.jsx(ci,{}),s&&t.jsx(ui,{}),o&&t.jsx(Vr,{initialNodes:((c=(r=i==null?void 0:i.graph_layout)==null?void 0:r.snapshot)==null?void 0:c.nodes)||[],initialEdges:((l=(u=i==null?void 0:i.graph_layout)==null?void 0:u.snapshot)==null?void 0:l.edges)||[]})]})},pi=()=>({header:t.jsx(cr,{}),body:t.jsx(xs,{})});function mi(e){const{users:a}=co(),{tasks_api:n,getImageOBP:s}=ge(),o=p.useMemo(()=>a.data?a.data.map(c=>{const{image:u,id:l,name:d}=c,m=s(u);return{value:l,label:d,icon:m}}):[],[a.data]),i=async c=>{const u=Pe.stringify({populate:{params_plantillas:{fields:["id","abbreviation","name","active","tipomedio_nombre","reference_id"]}},sort:["order:asc"],fields:["id","step","key","label","order"]},{encodeValuesOnly:!0}),{data:l}=await c.get(`/api/params-tipos?${u}`);return xe(l.data).flatMap((m,g)=>{const f={id:`group-${g+1}`,label:m.label,value:`group-${g+1}`,isGroupTitle:!0},w=m.params_plantillas.map(b=>({id:b.id,label:b.name,value:b.id,checked:!1,icon:"CheckCircleOutlined",iconColor:"blue"}));return[f,...w]})},r=ue.useQuery({queryKey:["paramsPlantilla"],queryFn:()=>i(n),enabled:e==="templates-container",staleTime:1e3*60*30});return{userOptions:o,paramsPlantillasOptions:r.data||[]}}const fi={estatus:{label:"Estatus del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[{value:"draft",label:"Borrador"},{value:"published",label:"Publicada"}],keyName:"estatus"},publication_date:{label:"Fecha de publicación",placeholder:"Ingresa una fecha...",type:"date",keyName:"publication_date"},propietario:{label:"Encargado del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"propietario"},created_by:{label:"Creador del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"created_by"},updated_by:{label:"Editor del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"updated_by"},params_plantillas:{label:"Parámetro del flujo",type:"group",placeholder:"Selecciona uno o varios...",options:[],keyName:"params_plantillas"}},wi={createdAt:{label:"Fecha de creación",placeholder:"Selecciona una fecha...",type:"date",keyName:"createdAt"},integrantes_min:{label:"Mínimo de integrantes",type:"input",placeholder:"Ej: 1",keyName:"integrantes_min"},integrantes_max:{label:"Máximo de integrantes",type:"input",placeholder:"Ej: 10",keyName:"integrantes_max"}},gi={"templates-container":fi,"teams-container":wi,"kanban-general":null,"lista-campanias":null,"kanban-campania":null},hi=e=>({inputFilters:gi[e]||null}),xi=e=>{const{inputFilters:a}=hi(e),{userOptions:n,paramsPlantillasOptions:s}=mi(e);return{inputFilters:p.useMemo(()=>{if(a&&n.length>0&&s.length>0){const i=a;return[{...i.estatus},{...i.publication_date},{...i.propietario,options:n},{...i.created_by,options:n},{...i.updated_by,options:n},{...i.params_plantillas,options:s}]}return null},[e,a,n,s])}};function bi(){const{setFilters:e}=ut(),{refetch:a}=Fe();return{handleApplyFilters:s=>{let o={...s};o=Object.fromEntries(Object.entries(o).filter(([i,r])=>!(r===""||r===null||Array.isArray(r)&&r.length===0))),"publication_date"in o&&o.publication_date!==""&&(o={...o,publication_date:_t(o.publication_date).format("YYYY-MM-DD")}),e(o,"templates-container"),a&&a()}}}const va="templates-container";function yi(){const{mode:e}=_e(),{inputFilters:a}=xi(va),{handleApplyFilters:n}=bi(),{viewMode:s,setViewMode:o}=Fe();return e!=="grid"?null:t.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-justify-between tw-gap-2.5 md:tw-flex-nowrap",children:[t.jsx(ss,{path:va}),t.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-gap-x-2.5 md:tw-flex-nowrap",children:[a&&t.jsx(x.Filters,{filters:a,onApply:n}),t.jsx(x.Button,{size:"xs",color:"secondary",colorIcon:"neutral",icon:s==="list"?ne.faGrid2:ne.faList,className:"tw-min-w-fit",onClick:()=>o(s==="list"?"grid":"list")})]})]})}const Nt={id:null,uid:0,esEncargado:!1,idUser:{id:0,username:"",email:"",provider:"",confirmed:!1,blocked:!1,createdAt:"",updatedAt:"",nombre:""},miembros:[],miembro_padre:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},bs="Project Manager",ys=({open:e,handleChange:a,children:n,title:s="¿Estás seguro?",onConfirm:o,contentLabel:i="",confirmLabel:r="Aceptar",cancelLabel:c="Regresar",isLoading:u=!1})=>t.jsx(x.Modal,{isOpen:e,onClose:()=>a(!1),onCancel:()=>a(!1),onSuccess:o,size:"xs",title:s,disableEscapeClose:!0,disableOutsideClick:!0,disableOutsideTab:!0,children:t.jsxs(x.Modal.Body,{children:[t.jsx("h1",{className:"tw-text-lg tw-font-semibold tw-text-black-black_medium",children:i}),n&&n]})}),ji=({member:e,level:a,isUpdate:n=!1,addHandler:s,updateHandler:o,removeHandler:i,updateMemberHandler:r})=>{var J,H,O;const{users:c,isLoading:u}=$t(),{users:l,isLoading:d}=Je(),{getImageOBP:m}=ge(),[g,f]=p.useState(!1),[w,b]=p.useState(n?e:{...Nt,miembro_padre:a>1?e:null}),[j,y]=p.useState(null),[h,_]=p.useState({id:0,nombre:"",email:""}),[M,F]=p.useState(!1);p.useEffect(()=>{var S;y(l==null?void 0:l[(S=w==null?void 0:w.idUser)==null?void 0:S.email])},[w,l]),p.useEffect(()=>{e&&b({...e,miembro_padre:a>1?e.miembro_padre:null})},[e,a]);const q=p.useMemo(()=>(c||[]).map(S=>{var R,ee;const B=l==null?void 0:l[S.email??""],k=B!=null&&B.image?m(B.image):"";return{...S,label:S.name,value:S.id,subtitle:S.email??"",avatar:((ee=(R=S.name)==null?void 0:R.slice(0,2))==null?void 0:ee.toUpperCase())??"",avatarUrl:k}}),[c,l,m]),T=()=>{f(!1),_({id:0,nombre:"",email:""})},D=({id:S,name:B,email:k})=>{const R={...w,idUser:{...w.idUser,id:S,nombre:B,email:k}};b(R),o(R),_({id:S,nombre:B,email:k})},v=async()=>{if(!h.nombre&&!h.email){T();return}try{w.id&&r({user_id:h.id,miembro_id:e.id});const S={...w,idUser:{...w.idUser,id:h.id,nombre:h.nombre,email:h.email}};b(S),o(S),y(l==null?void 0:l[h.email]),T()}catch(S){x.toast.error(S instanceof Error?S.message:"Error al actualizar el colaborador")}},U=()=>{const S={...Nt,uid:new Date().getTime()+Math.floor(Math.random()*1e3),miembro_padre:e,miembros:[]};s(S)},K=()=>{i(e),F(!1)};return d||u?null:t.jsxs("div",{className:"tw-flex tw-items-baseline tw-justify-between",children:[M&&t.jsx(ys,{open:M,handleChange:F,onConfirm:K,contentLabel:"Estás eliminando el colaborador seleccionado"}),t.jsxs("div",{className:"tw-flex tw-flex-1 tw-justify-between ui-gap-y-4 ui-mb-2",children:[t.jsxs("div",{children:[t.jsx("div",{className:"tw-flex tw-items-center tw-gap-x-6 ui-mb-2",children:(J=w==null?void 0:w.idUser)!=null&&J.email&&!g?t.jsxs(t.Fragment,{children:[t.jsx(Ae,{size:"m",alt:((H=w==null?void 0:w.idUser)==null?void 0:H.nombre)??"Avatar",imageUrl:j!=null&&j.image?m(j.image):""}),t.jsx("p",{className:"ui-text-body-sm-regular ui-font-body-sm-regular ui-leading-body-sm-regular ui-tracking-body-sm",children:(O=w==null?void 0:w.idUser)==null?void 0:O.nombre})]}):t.jsx(x.Dropdown,{placeholder:"Seleccionar colaborador",options:q,valueName:"name",idName:"id",listVariant:"user",absolute:!0,closeOnClickOutside:!0,searchable:!0,searchPlaceholder:"Buscar colaborador...",onOptionSelect:S=>{D({id:S.id,name:S.name,email:S.email})}})}),t.jsx(x.Button,{onClick:U,leftSlot:ne.faPlus,size:"xxs",color:"tertiary",children:"Añadir colaborador"})]}),t.jsxs("div",{className:"ui-flex ui-gap-x-4",children:[g?t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{onClick:T,icon:ne.faXmark,size:"xs",color:"secondary",tooltip:"Cancelar"}),t.jsx(x.Button,{onClick:v,icon:Re.faCheck,size:"xs",color:"primary",tooltip:"Guardar"})]}):t.jsx(x.Button,{onClick:()=>f(!0),icon:ne.faPencil,size:"xs",color:"tertiary",tooltip:"Editar"}),t.jsx(x.Button,{onClick:()=>F(!0),icon:ne.faTrash,size:"xs",color:"destructive",tooltip:"Eliminar"})]})]})]})},js=({members:e,level:a=1,isUpdate:n=!1,setData:s})=>{const o=()=>{s(i=>({...i,miembros:[...i.miembros,{...Nt,uid:new Date().getTime()+Math.floor(Math.random()*1e3)}]}))};return t.jsxs("div",{children:[(e==null?void 0:e.length)===0&&a===1&&t.jsx("div",{className:"tw-flex tw-justify-end",children:t.jsx(x.Button,{size:"xxs",color:"tertiary",leftSlot:Re.faPlus,onClick:o,children:" Agregar miembro del equipo "})}),(e==null?void 0:e.length)>0&&(e==null?void 0:e.map(i=>t.jsx(vi,{isUpdate:n,member:i,level:a,setData:s},i.uid)))]})},vi=({member:e,level:a,isUpdate:n=!1,setData:s})=>{const o=l=>{s(d=>{if(!l.miembro_padre)return{...d,miembros:[...d.miembros,l]};const m=g=>g==null?void 0:g.map(f=>f.uid===l.miembro_padre.uid?{...f,miembros:[...f.miembros||[],l]}:f.miembros&&f.miembros.length>0?{...f,miembros:m(f.miembros)}:f);return{...d,miembros:m(d.miembros)}})},i=l=>{s(d=>{const m=g=>g.map(f=>f.uid===l.uid?(f.miembros&&f.miembros.length>0&&f.miembros.forEach(w=>{w.miembro_padre=l}),{...l,miembros:f.miembros||[]}):f.miembros&&f.miembros.length>0?{...f,miembros:m(f.miembros)}:f);return{...d,miembros:m(d.miembros)}})},r=l=>{var m;const d=[];return l.id&&d.push(l.id),(m=l.miembros)!=null&&m.length&&l.miembros.forEach(g=>{d.push(...r(g))}),d},c=l=>{s(d=>{const m=r(l),g=w=>w.filter(b=>b.uid!==l.uid).map(b=>({...b,miembros:b.miembros?g(b.miembros):[]})),f=d.miembros_actualizar.filter(w=>!m.includes(w.miembro_id));return{...d,miembros:g(d.miembros),miembros_eliminar:[...d.miembros_eliminar,...m],miembros_actualizar:f}})},u=l=>{s(d=>d.miembros_actualizar.some(g=>g.miembro_id===l.miembro_id)?d:{...d,miembros_actualizar:[...d.miembros_actualizar,l]})};return t.jsxs("div",{"data-id":e.uid,style:{paddingLeft:a===1?0:"30px",marginTop:a===1?"15px":"0px",paddingBottom:"5px"},children:[t.jsx(ji,{isUpdate:n,level:a,member:e,addHandler:o,updateHandler:i,removeHandler:c,updateMemberHandler:u}),Array.isArray(e.miembros)&&e.miembros.length>0&&t.jsx(js,{isUpdate:n,members:e.miembros,level:a+1,setData:s})]},e.uid)},_i=(e=7)=>{const a=(s,o)=>s>=o?{populate:"*"}:{miembro_padre:{fields:["id"]},idUser:{populate:"*"},miembros:{populate:a(s+1,o),filters:{idUser:{blocked:!1}}}};return{miembros:{populate:a(0,e),filters:{idUser:{blocked:!1}}}}},Ni=()=>"#"+Math.floor(Math.random()*16777215).toString(16),Ci=({search:e,filters:a})=>{const n={};return e!=null&&e.trim()&&(n.nombre={$containsi:e.trim()}),a!=null&&a.createdAt&&(n.createdAt={$eq:a.createdAt}),n},Ti=({items:e})=>{if(!e)return{members:[],allMembers:[]};const a={};for(const r of e)a[r.uid]=r;const n=[],s=new Set,o=r=>{const c={...r};if(c.id&&(c.uid=c.id),c.uid&&!s.has(c.uid)&&(n.push(c),s.add(c.uid)),!c.miembros)return c;const u=c.miembros.map(l=>{const d={...l};d.id&&(d.uid=d.id);const m=a[d.uid];return o(m||d)}).filter(Boolean);return{...c,miembros:u}};return{members:e.filter(r=>r.miembro_padre===null).map(o),allMembers:n}},Si=({items:e})=>e?e.map(a=>{const n=Ti({items:a.miembros});return{...a,integrantes:n.allMembers.length,miembros:n.members,miembros_planos:n.allMembers,miembros_eliminar:[],miembros_actualizar:[]}}):[],Ei=async({tasks_api:e,page:a=1,pageSize:n=10,search:s="",filters:o={}})=>{const i=Pe.stringify({filters:Ci({search:s,filters:o}),populate:_i(),sort:["createdAt:asc"],pagination:{page:a,pageSize:n}},{encodeValuesOnly:!0}),r=await e.get(`/api/equipos?${i}`);return r.data?{data:xe(r.data.data),meta:r.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:n,pageCount:0,total:0}}}},Pi=({page:e=1,pageSize:a=10,search:n="",filters:s={}})=>{const{tasks_api:o}=ge();return ue.useQuery({queryKey:["teams",e,a,n,s],queryFn:()=>Ei({tasks_api:o,page:e,pageSize:a,search:n,filters:s}),staleTime:1e3*60*60*24,placeholderData:ue.keepPreviousData,select:i=>({data:Si({items:(i==null?void 0:i.data)||[]}),meta:i==null?void 0:i.meta})})},Ct=e=>({...e,miembro_padre:e.miembro_padre?{id:e.miembro_padre.id,uid:e.miembro_padre.uid}:null,idUser:e.idUser?{id:e.idUser.id,nombre:e.idUser.nombre,email:e.idUser.email,image:e.idUser.image}:null,miembros:e.miembros?e.miembros.map(Ct):[]}),vs=()=>{const{tasks_api:e}=ge(),a=ue.useQueryClient(),n=async g=>{const f={...g,id:void 0,miembros:g.miembros.map(Ct)};return(await e.post("/api/registrar-equipo-miembros",{data:f})).data},s=async g=>(await e.delete(`/api/equipos/${g}`)).data,o=async(g,f)=>{const w={...f,id:void 0,miembros:f.miembros.map(Ct)};return(await e.patch(`/api/actualizar-equipo-miembros/${g}`,{data:w})).data},i=async(g,f,w)=>{const b=await e.put(`/api/miembros/${g}`,{data:{[f]:w}});if(!b.data)throw new Error("Error al actualizar el miembro");return b.data},{mutateAsync:r,isPending:c}=ue.useMutation({mutationFn:s,onSuccess:()=>{a.invalidateQueries({queryKey:["teams"]})},onError:g=>{throw console.error("Failed to delete the team.",g),g}}),{mutateAsync:u}=ue.useMutation({mutationFn:n,onSuccess:()=>{a.invalidateQueries({queryKey:["teams"]})},onError:g=>{throw console.error("Failed to update the team.",g),g},onMutate:async()=>{await a.cancelQueries({queryKey:["teams"]})}}),{mutateAsync:l}=ue.useMutation({mutationFn:g=>o(g.teamId,g.data),onSuccess:()=>{a.invalidateQueries({queryKey:["teams"]})},onError:g=>{throw console.error("Failed to update the team.",g),g},onMutate:async()=>{await a.cancelQueries({queryKey:["teams"]})}}),{mutateAsync:d}=ue.useMutation({mutationFn:g=>i(g.memberId,g.field,g.value),onError:g=>{throw console.error("Failed to update the member.",g),new Error("Error al actualizar el miembro")}});return{addTeamHandler:u,deleteTeamHandler:r,updateTeamHandler:l,updateMemberHandler:d,invalidateTeams:()=>{a.invalidateQueries({queryKey:["teams"]})},isLoadingDeleteTeam:c}},Ai=(e,a,n)=>{const s=p.useCallback(o=>{e.current&&!e.current.contains(o.target)&&a(!1)},[e,a]);p.useEffect(()=>(n&&document.addEventListener("mousedown",s),()=>{document.removeEventListener("mousedown",s)}),[s,n])},Ii=({color:e,onChange:a})=>t.jsxs(t.Fragment,{children:[t.jsx("style",{children:`
|
|
10
|
+
`+D)})()},title:i?"Editar tarea":"Nueva tarea",successButtonText:i?"Actualizar":"Crear",disabledSuccessButton:!M,children:t.jsxs("form",{className:"tm-flex tm-flex-col tm-gap-4",children:[t.jsx(Se.Controller,{control:f,name:"title",rules:{required:"El título es obligatorio",minLength:{value:3,message:"El título debe tener al menos 3 caracteres"}},render:({field:N})=>{var D;return t.jsx(x.Input,{fullWidth:!0,label:"Título",placeholder:"Ingresa el título de la tarea...",error:(D=y.title)==null?void 0:D.message,...N})}}),t.jsx(Se.Controller,{control:f,name:"description",rules:{required:"La descripción es obligatoria",minLength:{value:10,message:"La descripción debe tener al menos 10 caracteres"}},render:({field:N})=>{var D;return t.jsx(x.Textarea,{className:"tm-w-full tm-w-full",placeholder:"Describe la tarea a realizar...",label:"Descripción",error:(D=y.description)==null?void 0:D.message,...N})}}),t.jsx(x.Separator,{}),t.jsx(Se.Controller,{control:f,name:"priority",rules:{required:"La prioridad es obligatoria"},render:({field:N,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Prioridad",placeholder:"Selecciona la prioridad...",options:Tr,error:D==null?void 0:D.message,value:N.value,onValueChange:v=>{N.onChange(v)}})}),t.jsx(Se.Controller,{control:f,name:"difficulty",rules:{required:"La dificultad es obligatoria"},render:({field:N,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Dificultad",placeholder:"Selecciona la dificultad...",options:Cr,error:D==null?void 0:D.message,value:N.value,onValueChange:v=>{N.onChange(v)}})}),t.jsx(Se.Controller,{control:f,name:"duration",rules:{required:"La duración es obligatoria"},render:({field:N,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Duración",placeholder:"Selecciona la duración...",options:Nr,error:D==null?void 0:D.message,value:N.value,onValueChange:v=>{N.onChange(v)}})}),t.jsx(x.Separator,{}),t.jsx(Se.Controller,{control:f,name:"team",rules:{required:"El equipo es obligatorio"},render:({field:N,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,label:"Equipo",placeholder:"Selecciona el equipo...",options:c,error:D==null?void 0:D.message,value:N.value,onValueChange:v=>{N.onChange(v)}})}),t.jsx(Se.Controller,{control:f,name:"responsible",render:({field:N,fieldState:{error:D}})=>t.jsx(x.Dropdown,{fullWidth:!0,absolute:!0,label:"Responsable",placeholder:"Selecciona el responsable...",options:p,error:D==null?void 0:D.message,value:N.value,onValueChange:v=>{N.onChange(v)}})})]})})},Sr=()=>{const{get:e}=Be(),a=Le(i=>i.activeTemplate),{updateTaskInState:n,addTaskToState:s}=nt();return{updateTaskInTemplate:async(i,r)=>{if(!a)return console.error("No hay plantilla activa"),!1;try{const c=await e(a.id);if(!c)return console.error("Flujo de trabajo no encontrado"),!1;const m={id:i,uuid:r.uuid||crypto.randomUUID(),reference_graph:r.reference_graph||null,texto_corto:r.texto_corto||"",texto_largo:r.texto_largo||"",prioridad:r.prioridad||null,nivel_dificultad:r.nivel_dificultad||1,duracion:r.duracion||null,start:r.start||!1,equipo:r.equipo||null,responsable:r.responsable||null,plantilla:{id:c.id,clave:c.clave,categoria:c.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:r.plantilla_dependents||[],id_t_requerida:r.id_t_requerida||null,ids_t_dependientes:r.ids_t_dependientes||[],tarea_padre:r.tarea_padre||null,tareas:r.tareas||[]};i>0?await n({task:m}):await s({task:m})}catch(c){return console.error("❌ Error al actualizar tarea en plantilla:",c),!1}}}},_e={DEFAULT_CHILD_WIDTH:260,DEFAULT_CHILD_HEIGHT:80,MAGNETIC_CONNECTION_DISTANCE:800,GRAPH_LAYOUT_UPDATE_DELAY:100,START_NODE_ID:"start",DEFAULT_SOURCE_HANDLE:"bottom-source",DEFAULT_TARGET_HANDLE:"top-target"},ba={dependiente:{stroke:"#3B82F6",strokeDasharray:"5,5",strokeWidth:2},normal:{stroke:"#6B7280",strokeWidth:2}},jt=e=>{const a=e.map(n=>({...n}));return a.filter(n=>n.type==="group").forEach(n=>{const s=a.filter(d=>d.parentId===n.id);if(s.length===0)return;const o=Math.min(...s.map(d=>d.position.x)),r=Math.max(...s.map(d=>{var p;return d.position.x+(typeof((p=d.style)==null?void 0:p.width)=="number"?d.style.width:_e.DEFAULT_CHILD_WIDTH)}))-o,c=Math.min(...s.map(d=>d.position.y)),l=Math.max(...s.map(d=>{var p;return d.position.y+(typeof((p=d.style)==null?void 0:p.height)=="number"?d.style.height:_e.DEFAULT_CHILD_HEIGHT)}))-c;n.style={...n.style??{},width:r,height:l}}),a},wt=e=>e.source===_e.START_NODE_ID||e.target===_e.START_NODE_ID,Xe=e=>e===_e.START_NODE_ID,Er=e=>e==="dependiente"?ba.dependiente:ba.normal,Pr=(e,a,n)=>({id:e,type:"main",position:a,selected:!1,deletable:!0,data:n}),vt=(e,a,n,s,o,i=!1,r=null,c=null)=>{const m=Er(s),l=i?_e.DEFAULT_SOURCE_HANDLE:n;return{id:`edge-${e}-${a}`,source:e,sourceHandle:l,target:a,targetHandle:_e.DEFAULT_TARGET_HANDLE,type:"smoothstep",deletable:!0,style:m,markerEnd:{type:"arrowclosed",width:12,height:12,color:m.stroke,strokeWidth:1},data:{connectionType:s,nodeType:o,isFromStartNode:i,parentId:r,childId:c}}},Ar=(e,a)=>!(!e||!a||e===a),Ir=e=>{const{clientX:a,clientY:n}="changedTouches"in e?e.changedTouches[0]:e;return{x:a,y:n}},Dr=e=>e.filter(a=>a.type==="position"&&a.dragging===!1),gs=e=>e.map(a=>a.id),hs=({nodes:e,edges:a,setNodes:n,setEdges:s,newNodePopup:o,connectionPopup:i,closeNewNodePopup:r,closeConnectionPopup:c,setIsConnectingExistingNodes:m})=>{const{screenToFlowPosition:l,getNode:d,setViewport:p,fitView:h}=oe.useReactFlow(),{get:f,update:g,addTaskUpdatingTemplate:y,addTemplateUpdatingTemplate:w}=Be(),j=Le(H=>H.activeTemplate),b=me.useQueryClient(),_=Le(H=>H.setActiveTemplate),{removeTaskFromState:M,updateNodeWithNewEdge:F,updateTaskInState:R}=nt(),N=u.useCallback(async H=>{const O=e.find(B=>B.id===H);if(!(O!=null&&O.data))return null;if(O.id===_e.START_NODE_ID){if(!j)return null;try{const B=await f(j.id),k=B.tarea_plantillas.find(q=>q.start===!0);return k!=null&&k.id?k.id:B.tarea_plantillas.length>0?B.tarea_plantillas[0].id:null}catch{return null}}const S=O.data.id;if(!S&&S!==0)return null;if(typeof S=="string"){if(S.includes("-"))return S;{const B=parseInt(S,10);return isNaN(B)?null:B}}else if(typeof S=="number")return S;return null},[e,j,f]),D=u.useCallback(async(H=e,O=a)=>{var S,B,k,q,ee,W,re;if(!j){x.toast.warning("No hay template activo para actualizar layout");return}try{const Z=await f(j.id);if(!Z){x.toast.warning("Template no encontrado en IndexedDB");return}const E=(S=Z.graph_layout)==null?void 0:S.snapshot;if(!(!E||JSON.stringify(E.nodes)!==JSON.stringify(H)||JSON.stringify(E.edges)!==JSON.stringify(O))){console.log("🔄 No hay cambios en el layout, omitiendo actualización");return}const Q=H.filter(G=>{var P;return!((P=G.data)!=null&&P.isInternal)&&!G.parentId}).map(G=>{const{style:P,measured:C,data:$,selected:L,...T}=G,{expandedDimensions:V,isExpanded:Y,needsReExpansion:ae,...le}=$||{},X=P?{...P,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...T,style:X,data:le}}),I=O.filter(G=>{var P;return!((P=G.data)!=null&&P.isInternal)}),A={...Z,graph_layout:{id:((B=Z.graph_layout)==null?void 0:B.id)||0,snapshot:{nodes:Q,edges:I,viewport:((q=(k=Z.graph_layout)==null?void 0:k.snapshot)==null?void 0:q.viewport)||{x:0,y:0,zoom:1}},history:((ee=Z.graph_layout)==null?void 0:ee.history)||[],zoom:((W=Z.graph_layout)==null?void 0:W.zoom)||1,position:((re=Z.graph_layout)==null?void 0:re.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await g(j.id,A),console.log("🗑️ [useFlowActions] Invalidando caché de la plantilla:",j.id),await b.invalidateQueries({queryKey:["template",j.id]}),await b.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlowActions] Caché invalidado exitosamente"),_(A)}catch(Z){console.error("❌ Error al actualizar template layout:",Z)}},[j,f,g,e,a,_]),v=u.useCallback(async(H=[],O=[],S,B)=>{var q,ee,W,re,Z,E,z,Q,I,A,G,P;const k=S||(j==null?void 0:j.id);if(!k){x.toast.warning("No hay template ID disponible para actualizar");return}try{const C=await f(k);if(!C)return;const $=(W=(ee=(q=C.graph_layout)==null?void 0:q.snapshot)==null?void 0:ee.nodes)==null?void 0:W.filter(V=>{var Y;return!H.includes(V.id)&&!((Y=V.data)!=null&&Y.isInternal)&&!V.parentId}).map(V=>{const{style:Y,measured:ae,data:le,...X}=V,{expandedDimensions:se,...ce}=le||{},ie=Y?{...Y,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...X,style:ie,data:ce}}),L=((E=(Z=(re=C.graph_layout)==null?void 0:re.snapshot)==null?void 0:Z.edges)==null?void 0:E.filter(V=>{var Y;return!H.includes(V.source)&&!H.includes(V.target)&&!((Y=V.data)!=null&&Y.isInternal)}))||[],T={...C,graph_layout:{id:((z=C.graph_layout)==null?void 0:z.id)||0,snapshot:{nodes:$,edges:L,viewport:((I=(Q=C.graph_layout)==null?void 0:Q.snapshot)==null?void 0:I.viewport)||{x:0,y:0,zoom:1}},history:((A=C.graph_layout)==null?void 0:A.history)||[],zoom:((G=C.graph_layout)==null?void 0:G.zoom)||1,position:((P=C.graph_layout)==null?void 0:P.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await M({templateId:k,id:B||0}),await g(k,T),await b.invalidateQueries({queryKey:["template",k]}),await b.invalidateQueries({queryKey:["template"]}),k===(j==null?void 0:j.id)&&_(T)}catch(C){console.error("❌ updateAfterDeleted - Error al actualizar template layout:",C)}},[j,f,g,a,e,M,_]),U=u.useCallback(async(H,O,S)=>{if(!o||!j)return;const{nodeId:B,sourceNodeId:k,sourceHandleId:q}=o;if(k)try{const ee=await N(k);if(!ee)return;if(H==="plantilla"){const W=S;if(!(W!=null&&W.templateId))return;if(!await w(W.templateId,j.id,ee,O)){x.toast.error("No se pudo agregar la plantilla. Intenta nuevamente."),r();return}try{const G=await f(j.id);if(G){const P=($,L)=>{for(const T of $){if(T.id===L||T.uuid===L)return T;if(T.tareas&&T.tareas.length>0){const V=P(T.tareas,L);if(V)return V}}return null},C=P(G.tarea_plantillas,ee);if(C&&C.id){const $=(C.plantilla_dependents||[]).map(T=>typeof T=="object"&&T.id?{id:T.id}:typeof T=="number"?{id:T}:T),L={...C,plantilla_dependents:$,plantilla:{id:j.id,clave:G.clave,categoria:G.categoria||{id:0,nombre:"Sin categoría"}}};await R({task:L}),console.log("✅ Tarea padre agregada a templates_states.updated con plantilla_dependents:",C.id,L.plantilla_dependents)}}}catch(G){console.error("❌ Error al actualizar tarea padre en templates_states:",G)}const Z=l({x:o.position.x,y:o.position.y}),E=W.templateData||{id:W.templateId,nombre_plantilla:`Flujo de trabajo ${W.templateId}`,clave:`TPL-${W.templateId}`,estatus:"activo",categoria:null,counts_tasks:0,dias_duracion:0},z={id:B,type:"group",position:Z,selected:!1,deletable:!0,data:{id:W.templateId,templateId:W.templateId,type:"template",nombre_plantilla:E.nombre_plantilla||`Flujo de trabajo ${W.templateId}`,clave:E.clave||`TPL-${W.templateId}`,estatus:E.estatus||"activo",categoria:E.categoria||null,counts_tasks:E.counts_tasks||0,dias_duracion:E.dias_duracion||0,tarea_plantillas:E.tarea_plantillas||[],params_plantillas:E.params_plantillas||[],createdAt:E.createdAt||new Date().toISOString(),updatedAt:E.updatedAt||new Date().toISOString(),created_by:E.created_by||null,updated_by:E.updated_by||null}};n(G=>[...G,z]);const Q=q||_e.DEFAULT_SOURCE_HANDLE,I=Xe(k),A=vt(k,B,Q,O,"plantilla",I,ee);s(G=>[...G,A]);try{const G=[...e,z],P=[...a,A];await D(G,P)}catch(G){console.error("❌ Error al actualizar layout después de agregar plantilla:",G)}}else if(H==="tarea"){const W=S;if(!W)return;const re=l({x:o.position.x,y:o.position.y}),Z=-new Date().getTime(),E={id:Z,reference_graph:B,title:W.title,description:W.description,priority:W.priority,difficulty:W.difficulty,duration:W.duration,team:W.team,responsible:W.responsible,parent:{data:{id:ee}}},z=await y(E,j.id,O),Q=Pr(B,re,z);n(P=>[...P,Q]);const I=q||_e.DEFAULT_SOURCE_HANDLE,A=Xe(k),G=vt(k,B,I,O,H,A,ee,Z);s(P=>[...P,G]);try{const P=[...e,Q],C=[...a,G];await D(P,C)}catch(P){console.error("❌ Error al actualizar layout después de agregar tarea:",P)}setTimeout(()=>{try{const P=d(B);if(P){const C=window.innerWidth,$=window.innerHeight,L=C/2,T=$/2;p({x:L-P.position.x-130,y:T-P.position.y-40,zoom:1},{duration:800})}else h({padding:.1,duration:800})}catch{try{h({padding:.1,duration:800})}catch{}}},200)}r()}catch(ee){console.error("❌ Error en createNodeFromPopup:",ee)}},[o,j,y,w,N,l,n,s,r,D,e,a]),K=u.useCallback(async(H,O)=>{var q,ee;if(console.log("🟢 createConnectionFromPopup - INICIO",{nodeType:H,connectionType:O}),!i){console.warn("⚠️ createConnectionFromPopup - No hay connectionPopup");return}const{sourceNodeId:S,sourceHandleId:B,targetNodeId:k}=i;console.log("🟢 createConnectionFromPopup - Datos de conexión:",{sourceNodeId:S,targetNodeId:k,sourceHandleId:B});try{if(!(window.validConnectionTypes||{dependiente:!0,hija:!0})[O]){console.warn("⚠️ createConnectionFromPopup - Tipo de conexión no válido:",O),x.toast.warning("Tipo de conexión no válido"),m(!1),c();return}const re=e.find(L=>L.id===S),Z=e.find(L=>L.id===k);console.log("🟢 createConnectionFromPopup - Nodos encontrados:",{sourceNode:re==null?void 0:re.id,targetNode:Z==null?void 0:Z.id,sourceData:re==null?void 0:re.data,targetData:Z==null?void 0:Z.data});const E=Z==null?void 0:Z.data,z=((q=re==null?void 0:re.data)==null?void 0:q.id)||S,Q=((ee=Z==null?void 0:Z.data)==null?void 0:ee.id)||k;console.log("🟢 createConnectionFromPopup - IDs extraídos:",{parentId:z,childId:Q});const I=vt(S,k,B||_e.DEFAULT_SOURCE_HANDLE,O,H,Xe(S),z,Q);console.log("🟢 createConnectionFromPopup - Nuevo edge creado:",I),s(L=>[...L,I]);const A=[...a,I],G=E.id||-Date.now(),P=E.reference_graph||k,C={id:G,uuid:E.uuid||crypto.randomUUID(),reference_graph:P,texto_corto:E.texto_corto||"",texto_largo:E.texto_largo||"",prioridad:E.prioridad||null,nivel_dificultad:E.nivel_dificultad||1,duracion:E.duracion||null,start:E.start||!1,equipo:E.equipo||null,responsable:E.responsable||null,plantilla:{id:E.plantilla.id,clave:E.plantilla.clave,categoria:E.plantilla.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:E.plantilla_dependents||[],ids_t_dependientes:E.ids_t_dependientes||[],tarea_padre:O==="hija"?{id:I.data.parentId}:null,id_t_requerida:O==="dependiente"?{id:I.data.parentId}:null,tareas:E.tareas||[],type:"task"};console.log("🟢 createConnectionFromPopup - taskForState creado:",C),console.log("🟢 createConnectionFromPopup - currentTemplate.id:",j.id);const $=e.map(L=>L.id===k?{...L,data:C}:L);console.log("🟢 createConnectionFromPopup - Actualizando nodos en React Flow..."),n($),console.log("✅ createConnectionFromPopup - Nodos actualizados en React Flow"),console.log("🟢 createConnectionFromPopup - Actualizando template layout..."),await D($,A),console.log("✅ createConnectionFromPopup - Template layout actualizado"),console.log("🟢 createConnectionFromPopup - Llamando a updateNodeWithNewEdge..."),await F({templateId:j.id,edge:I,task:C}),console.log("✅ createConnectionFromPopup - updateNodeWithNewEdge completado")}catch(W){console.error("❌ createConnectionFromPopup - Error al crear conexión:",W),console.error("❌ createConnectionFromPopup - Stack:",W.stack)}finally{console.log("🟢 createConnectionFromPopup - Limpiando estado..."),m(!1),c(),console.log("🟢 createConnectionFromPopup - FIN")}},[i,s,m,c,a,e,D]),J=u.useCallback(async H=>{if(!o||!j){x.toast.warning("No hay newNodePopup o template activo para actualizar el nodo");return}const{nodeId:O}=o;if(!O){x.toast.warning("No se encontró nodeId en newNodePopup");return}try{const S=e.find(k=>k.id===O);if(!S){x.toast.warning(`No se encontró el nodo con ID: ${O}`);return}const B={...S,data:{...S.data,...H,id:S.data.id||S.id,type:S.data.type||S.data.type,updatedAt:new Date().toISOString()}};n(k=>k.map(q=>q.id===O?B:q));try{const k=e.map(q=>q.id===O?B:q);await D(k,a)}catch(k){x.toast.error("Error al actualizar layout después de actualizar nodo:",k)}r()}catch(S){x.toast.error("Error al actualizar el nodo:",S)}},[o,j,e,n,a,D,r]);return{createNodeFromPopup:U,createConnectionFromPopup:K,updateNodeFromPopup:J,updateAfterDeleted:v}},Fr=({data:e,id:a,isConnectable:n,selected:s})=>{const o=Te(v=>v.getViewMode),[i,r]=u.useState(!1),[c,m]=u.useState(e),l=Le(v=>v.activeTemplate),d=Le(v=>v.setActiveTemplate),{get:p,update:h}=Be(),f=l!=null&&l.id?o(l.id):"readonly",{updateTaskInTemplate:g}=Sr(),{setNodes:y,setEdges:w,getNodes:j,getEdges:b}=oe.useReactFlow(),_=me.useQueryClient(),{updateAfterDeleted:M}=hs({nodes:j(),edges:b(),setNodes:y,setEdges:w,newNodePopup:null,connectionPopup:null,closeNewNodePopup:()=>{},closeConnectionPopup:()=>{},setIsConnectingExistingNodes:()=>{}}),F=()=>{r(!0)},R=u.useCallback(async()=>{var O,S,B;const v=j().find(k=>k.id===a);if(!v){console.warn("⚠️ Nodo no encontrado para eliminar");return}const U=[v],K=gs(U),J=U.length>0?(S=(O=U[0])==null?void 0:O.data)==null?void 0:S.id:0;w(k=>k.filter(q=>!K.includes(q.source)&&!K.includes(q.target))),y(k=>k.filter(q=>q.id!==a));let H;for(const k of U)try{const q=k.data;if((B=q==null?void 0:q.plantilla)!=null&&B.id){H=q.plantilla.id;break}}catch{}try{w(k=>((async()=>{await M(K,k,H,J)})().catch(q=>{console.error("❌ Error en updateAfterDeleted:",q)}),k))}catch(k){console.error("❌ Error en handleDeleteNode:",k)}},[a,j,b,y,w,M]),N=u.useCallback(async v=>{var U,K,J,H,O,S,B,k,q,ee;if(!l){console.warn("⚠️ MainNode.updateTemplateLayout - No hay template activo");return}try{const W=await p(l.id);if(!W){console.warn("⚠️ MainNode.updateTemplateLayout - Template no encontrado en IndexedDB");return}const re=(U=W.graph_layout)==null?void 0:U.snapshot;if(!(!re||JSON.stringify(re.nodes)!==JSON.stringify(v))){console.log("🔄 MainNode.updateTemplateLayout - No hay cambios en nodos, omitiendo actualización");return}const E=v.filter(I=>{var A;return!((A=I.data)!=null&&A.isInternal)&&!I.parentId}).map(I=>{const{style:A,measured:G,data:P,selected:C,...$}=I,{expandedDimensions:L,isExpanded:T,needsReExpansion:V,...Y}=P||{},ae=A?{...A,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...$,style:ae,data:Y}}),z=(((J=(K=W.graph_layout)==null?void 0:K.snapshot)==null?void 0:J.edges)||[]).filter(I=>{var A;return!((A=I.data)!=null&&A.isInternal)}),Q={...W,graph_layout:{id:((H=W.graph_layout)==null?void 0:H.id)||0,snapshot:{...(O=W.graph_layout)==null?void 0:O.snapshot,nodes:E,edges:z,viewport:((B=(S=W.graph_layout)==null?void 0:S.snapshot)==null?void 0:B.viewport)||{x:0,y:0,zoom:1}},history:((k=W.graph_layout)==null?void 0:k.history)||[],zoom:((q=W.graph_layout)==null?void 0:q.zoom)||1,position:((ee=W.graph_layout)==null?void 0:ee.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await h(l.id,Q),await _.invalidateQueries({queryKey:["template",l.id]}),await _.invalidateQueries({queryKey:["template"]}),l&&l.id===Q.id&&d(Q)}catch(W){console.error("❌ MainNode.updateTemplateLayout - Error al actualizar template layout:",W)}},[l,p,h,d,_]),D=async v=>{if(r(!1),l){const U={...e,texto_corto:v.title,texto_largo:v.description,prioridad:v.priority?typeof v.priority=="number"?v.priority:parseInt(v.priority.toString()):null,nivel_dificultad:v.difficulty?typeof v.difficulty=="number"?v.difficulty:parseInt(v.difficulty.toString()):1,duracion:v.duration?typeof v.duration=="number"?v.duration:parseInt(v.duration.toString()):null,equipo:{id:Number(v.team)||null},responsable:{id:Number(v.responsible)||null}};await g(e.id,U),y(K=>{const J=K.map(H=>H.id===a?{...H,data:{...H.data,...U,tarea_padre:e.tarea_padre,id_t_requerida:e.id_t_requerida,updatedAt:new Date().toISOString()}}:H);return console.log("🔄 updatedNodes:",J),setTimeout(()=>N(J),0),J})}};return u.useEffect(()=>{m(e)},[e]),t.jsxs("div",{className:`tm-border-[1px] tm-bg-white tm-px-4 tm-py-2 tm-rounded-lg tm-transition-all tm-duration-200 tm-max-w-[423px] ${s?"tm-border-brand tm-shadow-lg tm-ring-2 tm-ring-blue-300 tm-ring-opacity-50":e.main?"tm-border-success tm-shadow-sm":"tm-border-default tm-shadow-sm"}`,children:[t.jsx(oe.Handle,{isConnectable:n,id:"top-target",type:"target",position:oe.Position.Top,className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white"}),t.jsx(oe.Handle,{isConnectable:n,id:"right-target",type:"target",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Right}),t.jsx(oe.Handle,{isConnectable:n,id:"bottom-target",type:"target",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Bottom}),t.jsx(oe.Handle,{isConnectable:n,id:"left-target",type:"target",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Left}),t.jsxs("div",{className:"tm-flex tm-h-full tm-flex-col tm-gap-y-8 tm-p-12 ",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-justify-between tm-gap-x-4 ",children:[t.jsx("p",{className:"tm-text-primary tm-font-bold tm-leading-none tm-text-body-lg-regular tm-truncate",children:c.texto_corto}),!e.isInternal&&l.estatusFromStrapi!==Ee.PUBLISHED&&f!=="readonly"&&t.jsx("div",{children:e.type==="task"?t.jsx(x.Popup,{position:"right",absolute:!0,size:"xxs",pill:"pill",color:"secondary",icon:de.faEllipsis,containerClassName:"nopan nodrag",buttonClassName:"nopan nodrag",children:t.jsxs(x.List,{className:"tm-p-8 tm-gap-4",children:[t.jsx(x.ListItem,{icon:de.faEdit,onClick:F,children:"Editar"}),t.jsx(x.ListItem,{icon:de.faPlus,color:"red",onClick:R,children:"Eliminar"})]})}):t.jsx(x.Button,{size:"xxs",color:"secondary",pill:"pill",icon:de.faMaximize,className:"nopan"})})]}),t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-sm-normal ",children:c.texto_largo}),t.jsxs("div",{className:"tm-flex tm-gap-x-6 tm-justify-between",children:[t.jsx(br,{duration:c.duracion}),t.jsx(xr,{difficulty:c.nivel_dificultad}),t.jsx(jr,{priority:c.prioridad}),t.jsx(_r,{responsible:c.responsable})]})]}),t.jsx(oe.Handle,{isConnectable:n,id:"top-source",type:"source",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Top}),t.jsx(oe.Handle,{isConnectable:n,id:"right-source",type:"source",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Right}),t.jsx(oe.Handle,{isConnectable:n,id:"bottom-source",type:"source",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Bottom}),t.jsx(oe.Handle,{isConnectable:n,id:"left-source",type:"source",className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white",position:oe.Position.Left}),e.type==="task"&&i&&t.jsx(fs,{isOpen:i,onClose:()=>r(!1),onSuccess:D,editMode:!0,taskToEdit:c})]})},Mr=async({tasks_api:e,page:a=1,pageSize:n=10,search:s="",filters:o={}})=>{const i={clave:{$notNull:!0},estatus:{$ne:Ee.DELETED},...s?{$or:[{nombre_plantilla:{$containsi:s}},{clave:{$containsi:s}}]}:{},...Object.keys(o).reduce((m,l)=>(Array.isArray(o[l])?m[l]={id:{$in:o[l]}}:m[l]=o[l],m),{})},r=Pe.stringify({filters:i,fields:["id","clave","estatus","dias_duracion","createdAt","publication_date"],count_tasks:!0,tarea_plantillas:!1,populate:{updated_by:{fields:["id","nombre","username","email"]},created_by:{fields:["id","nombre","username","email"]},params_plantillas:{fields:["id","name"],populate:{params_tipo:{fields:["id","key","label","order"]}}},tarea_plantillas:{fields:["id"],filters:{start:!0},populate:{tareas:{fields:["id"]},ids_t_dependientes:{fields:["id"]}}}},sort:{createdAt:"asc"},pagination:{page:a,pageSize:n}},{encodeValuesOnly:!0}),c=await e.get(`/api/plantillas/all-plantillas?${r}`);return c.data?{data:be(c.data.data),meta:c.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:n,pageCount:0,total:0}}}},xs=({page:e=1,pageSize:a=10,search:n="",filters:s={}})=>{const{tasks_api:o}=he();return me.useQuery({queryKey:["templates",e,a,n,s],queryFn:()=>Mr({tasks_api:o,page:e,pageSize:a,search:n,filters:s}),staleTime:1e3*60*60*24,placeholderData:me.keepPreviousData,select:i=>({data:(i==null?void 0:i.data)||[],meta:i==null?void 0:i.meta})})},bs=({isOpen:e,onClose:a,onSuccess:n,nodeDataType:s,parentNodeInfo:o})=>{var _,M,F,R;const i=Te(N=>N.addNodeWithType),[r,c]=u.useState(0),m=5,[l,d]=u.useState(1),[p,h]=u.useState("");u.useEffect(()=>{e&&(d(1),h(""),c(0))},[e]),u.useEffect(()=>{d(1)},[p]);const{data:f,isLoading:g}=xs({page:l,pageSize:m,search:p}),y=N=>{h(N.target.value)},w=()=>{var D;if(r===0)return;const N=(D=f==null?void 0:f.data)==null?void 0:D.find(v=>v.id===r);if(!N){console.error("No se encontró el flujo de trabajo seleccionado en los datos");return}n?n({templateId:r,templateData:N}):i&&i(s.id,s.type,s.connectionType)};if(g)return t.jsx("div",{children:"Cargando..."});if(!(f!=null&&f.data))return t.jsx("div",{children:"No hay datos disponibles"});const j=((M=(_=f.meta)==null?void 0:_.pagination)==null?void 0:M.total)||0,b=j===1?"flujo encontrado":"flujos encontrados";return t.jsx(x.Modal,{iconConfig:{icon:Ce.faPencil},isOpen:e,size:"lg",onSuccess:w,onClose:a,title:"Agregar flujo de trabajo",successButtonText:"Agregar",disableSuccessButton:r===0,closeAtSuccess:!0,children:t.jsxs(x.Modal.Body,{withPadding:!1,children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-justify-between tm-gap-6 tm-px-12 tm-py-3",children:[t.jsxs("p",{className:"tm-flex-1 tm-text-[14px] tm-text-neutral-500",children:[j," ",b]}),t.jsx(x.Input,{className:"tm-flex-1",leftSlot:Ce.faSearch,fullWidth:!0,placeholder:"Buscar por nombre, parámetros o estado...",value:p,onChange:y})]}),t.jsx(x.Separator,{}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-6 tm-p-12",children:[f.data.map(N=>t.jsx(ps,{mode:"modal",template:N,active:r===N.id,fullWidth:!0,onClick:c,withOptions:!1},N.id)),f.data.length===0&&t.jsx("div",{className:"tm-flex tm-items-center tm-justify-center tm-h-full",children:t.jsx("p",{className:"tm-text-[14px] tm-text-neutral-500",children:"No se encontraron flujos de trabajo con ese criterio de búsqueda"})})]}),t.jsx(x.Separator,{}),t.jsx("div",{className:"tm-mt-6",children:t.jsx(x.Pagination,{className:"tm-pt-0",pageSize:m,pageCount:((R=(F=f==null?void 0:f.meta)==null?void 0:F.pagination)==null?void 0:R.pageCount)||1,currentPage:l,onPageChange:N=>d(N)})})]})})},kr=({data:e,id:a})=>{const n=Te(d=>d.addNodeWithType),[s,o]=u.useState(!1),[i,r]=u.useState(!1),[c,m]=u.useState({id:a,type:"tarea",connectionType:"dependiente"}),l=({type:d,connectionType:p})=>{n&&(m({id:a,type:d,connectionType:p}),d==="tarea"?o(!0):d==="plantilla"&&r(!0))};return console.log({data:e,id:a}),t.jsxs("div",{className:"tm-flex tm-items-center tm-justify-center",children:[c.type==="plantilla"&&t.jsx(bs,{isOpen:i,onClose:()=>r(!1),nodeDataType:c}),t.jsx(oe.Handle,{id:"top-target",type:"target",position:oe.Position.Top}),t.jsx(oe.Handle,{id:"right-target",type:"target",position:oe.Position.Right}),t.jsx(oe.Handle,{id:"bottom-target",type:"target",position:oe.Position.Bottom}),t.jsx(oe.Handle,{id:"left-target",type:"target",position:oe.Position.Left}),t.jsx(oe.Handle,{id:"top-source",type:"source",position:oe.Position.Top}),t.jsx(oe.Handle,{id:"right-source",type:"source",position:oe.Position.Right}),t.jsx(oe.Handle,{id:"bottom-source",type:"source",position:oe.Position.Bottom}),t.jsx(oe.Handle,{id:"left-source",type:"source",position:oe.Position.Left}),t.jsx(x.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:de.faPlus,containerClassName:"nopan",buttonClassName:"nopan",children:t.jsxs(x.List,{className:"nopan nodrag",children:[t.jsx("p",{className:"tm-text-sm tm-px-4 tm-py-2 tm-font-medium tm-text-neutral-300",children:"Tarea"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>l({type:"tarea",connectionType:"dependiente"}),children:"Dependiente"}),t.jsx(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>l({type:"tarea",connectionType:"hija"}),children:"Hija"}),t.jsx(x.ListSeparator,{}),t.jsx("p",{className:"tm-text-sm tm-px-4 tm-py-2 tm-font-medium tm-text-neutral-300",children:"Flujo de trabajo"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>l({type:"plantilla",connectionType:"dependiente"}),children:"Dependiente"}),t.jsx(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>l({type:"plantilla",connectionType:"hija"}),children:"Hija"})]})})]})},Or=({isOpen:e,position:a,onClose:n,createNodeFromPopup:s,parentNodeInfo:o})=>{const[i,r]=u.useState(!1),[c,m]=u.useState(!1),[l,d]=u.useState(null);if(!e)return null;const p=(w,j)=>{d({type:w,connectionType:j}),w==="tarea"?r(!0):w==="plantilla"&&m(!0)},h=()=>{r(!1),d(null),n()},f=()=>{m(!1),d(null),n()},g=w=>{l&&s(l.type,l.connectionType,w),h()},y=w=>{l&&w&&s(l.type,l.connectionType,w),f()};return t.jsxs(t.Fragment,{children:[!i&&!c&&t.jsx("div",{className:"tm-fixed tm-inset-0 tm-z-50",onClick:n}),!i&&!c&&t.jsx("div",{className:"tm-fixed tm-z-50 tm-bg-white tm-rounded-lg tm-shadow-lg tm-border tm-border-black-light tm-min-w-[200px]",style:{left:a.x+50,top:a.y-100},children:t.jsx("div",{className:"tm-p-2",children:t.jsxs(x.List,{children:[t.jsx("p",{className:"tm-text-sm tm-p-4 tm-gap-4 tm-font-medium tm-text-neutral-300",children:"Tarea"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>p("tarea","dependiente"),children:"Dependiente"}),t.jsx(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>p("tarea","hija"),children:"Hija"}),t.jsx(x.ListSeparator,{}),t.jsx("p",{className:"tm-text-sm tm-px-4 tm-py-2 tm-font-medium tm-text-neutral-300",children:"Flujo de trabajo"}),t.jsx(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>p("plantilla","dependiente"),children:"Dependiente"})]})})}),i&&l&&t.jsx(fs,{isOpen:i,onClose:h,onSuccess:g,nodeDataType:{id:"",type:l.type,connectionType:l.connectionType},parentNodeInfo:o}),c&&l&&t.jsx(bs,{isOpen:c,onClose:f,onSuccess:y,nodeDataType:{id:"",type:l.type,connectionType:l.connectionType},parentNodeInfo:o})]})};function Lr({reactFlowWrapper:e,nodes:a}){const{setViewport:n,getViewport:s}=oe.useReactFlow(),{zoom:o}=oe.useViewport(),i=Math.round(o*100),[r,c]=u.useState([]),[m,l]=u.useState(-1),[d,p]=u.useState(!1),[h,f]=u.useState(0);u.useLayoutEffect(()=>{const F=e==null?void 0:e.current;if(F){const R=F.getBoundingClientRect();f(R.width)}},[e]);const g=u.useMemo(()=>{var D;if(!a||a.length===0)return{x:0,y:0,zoom:1};const F=a.find(v=>{var U;return(U=v==null?void 0:v.data)==null?void 0:U.main})??a[0];return{x:(h||(typeof window<"u"?window.innerWidth:0))/2-(((D=F==null?void 0:F.position)==null?void 0:D.x)??0),y:20,zoom:1}},[a,h]),y=u.useCallback(F=>{if(!d){const R=[...r.slice(0,m+1),F];c(R),l(R.length-1)}},[r,m,d]),w=u.useCallback(()=>{if(d)return;const F=s(),R=Math.min(F.zoom*1.2,2);y(F),p(!0),n({x:F.x,y:F.y,zoom:R}),setTimeout(()=>p(!1),100)},[s,n,y,d]),j=u.useCallback(()=>{if(d)return;const F=s(),R=Math.max(F.zoom/1.2,.5);y(F),p(!0),n({x:F.x,y:F.y,zoom:R}),setTimeout(()=>p(!1),100)},[s,n,y,d]),b=u.useCallback(()=>{if(d)return;const F=s();Math.abs(F.zoom-1)>.01&&y(F),p(!0),n({x:F.x,y:F.y,zoom:1}),setTimeout(()=>p(!1),100)},[s,n,y,d]),_=u.useCallback(()=>{if(d||m<=0)return;const F=r[m-1];p(!0),n(F),l(m-1),setTimeout(()=>p(!1),100)},[m,r,n,d]);return u.useEffect(()=>{r.length===0&&(c([{zoom:1,x:0,y:0}]),l(0))},[r.length]),{isReady:h!==0&&Array.isArray(a)&&a.length>0,defaultViewport:g,zoomPercentage:i,handleZoomIn:w,handleZoomOut:j,handleZoomTo100:b,handleDoubleClick:_}}const Br=e=>{var i,r;const a=((i=e.data)==null?void 0:i.isInternal)||!1,n=(r=e.data)==null?void 0:r.originalGroupId,s=e.selected||!1,o=c=>{if(c.preventDefault(),c.stopPropagation(),n){const l=Te.getState().collapseGroup;l&&l(n)}};return t.jsxs("div",{className:`tm-flex tm-flex-col tm-border-[1px] tm-gap-y-2 tm-rounded-lg tm-bg-white tm-p-3 tm-transition-all tm-duration-200 ${s?"tm-border-blue-500 tm-shadow-lg tm-ring-2 tm-ring-blue-300 tm-ring-opacity-50":"tm-border-black-light tm-shadow-sm"}`,children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-2",children:[t.jsx(x.Icon,{name:ze.faFlag,size:"sm",colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotonePrimary:.5,background:!0,padding:"md"}),t.jsx("p",{className:"tm-text-primary tm-font-body-sm-semibold tm-leading-none tm-text-body-sm-regular tm-truncate tm-tracking-wider",children:e.data.clave}),a&&t.jsx(x.Button,{size:"sm",color:"secondary",onClick:o,className:"tm-p-2 nopan nodrag",icon:de.faMinimize,pill:"pill"})]}),a&&t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-2",children:[t.jsx(x.Tag,{color:e.data.estatus==="published"?"success":"warning",label:e.data.estatus==="published"?"Publicado":"Borrador"}),(e.data.updatedAt||e.data.updated_at)&&t.jsx("p",{className:"tm-text-sm tm-text-neutral-500 tm-font-medium",children:new Date(e.data.updatedAt||e.data.updated_at).toLocaleDateString("es-ES")})]}),t.jsx(oe.Handle,{id:"bottom-source",type:"source",position:oe.Position.Bottom,className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white tm-cursor-crosshair"}),t.jsx(oe.Handle,{id:"top-target",type:"target",position:oe.Position.Top,className:"tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white tm-cursor-crosshair"})]})},Rr=()=>{const e=u.useCallback((o,i,r,c)=>{const m=(p,h)=>{const f=p.position.x,g=p.position.y,y=120,w=60,j=15;switch(h){case"top-source":case"top-target":return{x:f,y:g-w/2-j};case"bottom-source":case"bottom-target":return{x:f,y:g+w/2+j};case"left-source":case"left-target":return{x:f-y/2-j,y:g};case"right-source":case"right-target":return{x:f+y/2+j,y:g};default:return{x:f,y:g}}},l=m(o,r),d=m(i,c);return Math.sqrt(Math.pow(d.x-l.x,2)+Math.pow(d.y-l.y,2))},[]),a=u.useCallback((o,i)=>{if(o.includes("source")===i.includes("source"))return!1;const r=d=>d.includes("top")?"top":d.includes("bottom")?"bottom":d.includes("left")?"left":d.includes("right")?"right":null,c=r(o),m=r(i);return{top:"bottom",bottom:"top",left:"right",right:"left"}[c]===m},[]),n=u.useCallback((o,i)=>{const r=["top-source","bottom-source","left-source","right-source"],c=["top-target","bottom-target","left-target","right-target"];let m=1/0,l={handle1:r[0],handle2:c[0]};for(const d of r)for(const p of c){if(!a(d,p))continue;const h=e(o,i,d,p);h<m&&(m=h,l={handle1:d,handle2:p})}return l},[e,a]),s=u.useCallback((o,i,r=800)=>Math.sqrt(Math.pow(i.position.x-o.position.x,2)+Math.pow(i.position.y-o.position.y,2))<r,[]);return{findClosestHandles:n,calculateHandleDistance:e,areHandlesCompatible:a,shouldApplyMagneticConnection:s}},qr=e=>{const[a,n]=u.useState(null),[s,o]=u.useState(null),[i,r]=u.useState(!1),c=u.useCallback((h,f,g,y)=>{n({isOpen:!0,nodeId:h,position:f,sourceNodeId:g,sourceHandleId:y})},[]),m=u.useCallback(()=>{n(null)},[]),l=u.useCallback((h,f,g,y,w)=>{r(!0),o({isOpen:!0,sourceNodeId:h,sourceHandleId:g,targetNodeId:f,targetHandleId:y,position:w})},[]),d=u.useCallback(()=>{r(!1),o(null)},[]),p=u.useCallback(()=>{var f,g,y;if(!(a!=null&&a.sourceNodeId))return null;const h=e.find(w=>w.id===a.sourceNodeId);return h?{id:h.id,label:(f=h.data)==null?void 0:f.label,nodeType:(g=h.data)==null?void 0:g.nodeType,connectionType:(y=h.data)==null?void 0:y.connectionType,data:h.data}:null},[a,e]);return{newNodePopup:a,connectionPopup:s,isConnectingExistingNodes:i,openNewNodePopup:c,closeNewNodePopup:m,openConnectionPopup:l,closeConnectionPopup:d,getParentNodeInfo:p,setIsConnectingExistingNodes:r}},zr=({initialNodes:e,initialEdges:a})=>{const[n,s,o]=oe.useNodesState(jt(e)),[i,r,c]=oe.useEdgesState(a),[m,l]=u.useState(!1),d=u.useCallback(I=>{r(I)},[r]),{toObject:p}=oe.useReactFlow(),{findClosestHandles:h,shouldApplyMagneticConnection:f}=Rr(),{updateGraphLayout:g,get:y,update:w}=Be(),j=Le(I=>I.activeTemplate),b=Le(I=>I.setActiveTemplate),_=me.useQueryClient(),{removeParentIdFromNodes:M}=nt(),{newNodePopup:F,connectionPopup:R,isConnectingExistingNodes:N,openNewNodePopup:D,closeNewNodePopup:v,openConnectionPopup:U,closeConnectionPopup:K,getParentNodeInfo:J,setIsConnectingExistingNodes:H}=qr(n),{createNodeFromPopup:O,createConnectionFromPopup:S,updateNodeFromPopup:B,updateAfterDeleted:k}=hs({nodes:n,edges:i,setNodes:s,setEdges:d,newNodePopup:F,connectionPopup:R,closeNewNodePopup:v,closeConnectionPopup:K,setIsConnectingExistingNodes:H});u.useEffect(()=>{if(e&&e.length>0){if(!(e.some((L,T)=>{const V=n[T];return V?L.id!==V.id||JSON.stringify(L.position)!==JSON.stringify(V.position)||JSON.stringify(L.data)!==JSON.stringify(V.data):!0})||e.length!==n.filter(L=>{var T;return!((T=L.data)!=null&&T.isInternal)}).length)&&n.length>0)return;const{expandedGroups:A,groupTemplateData:G}=Te.getState(),P=jt(e),C=new Set(P.map(L=>L.id));let $=n.filter(L=>{var T,V;return((T=L.data)==null?void 0:T.isInternal)&&typeof((V=L.data)==null?void 0:V.originalGroupId)=="string"&&A.has(L.data.originalGroupId)&&C.has(L.data.originalGroupId)});if($.length>0){const L=P.map(T=>{var V;if(A.has(T.id)){const Y=n.find(le=>le.id===T.id),ae=(V=Y==null?void 0:Y.data)==null?void 0:V.expandedDimensions;if(ae)return{...T,style:{...T.style,width:ae.width,height:ae.height},data:{...T.data,isExpanded:!0,expandedDimensions:ae}}}return T});s([...L,...$])}else if(A.size>0){const L=P.map(T=>A.has(T.id)&&G[T.id]?{...T,data:{...T.data,isExpanded:!0,needsReExpansion:!0}}:T);s(L)}else s(P)}else s([])},[e,s]),u.useEffect(()=>{if(!m&&a&&a.length>0){const{expandedGroups:I}=Te.getState(),A=jt(e),G=new Set(A.map($=>$.id)),P=i.filter($=>{var L,T;return((L=$.data)==null?void 0:L.isInternal)&&typeof((T=$.data)==null?void 0:T.originalGroupId)=="string"&&I.has($.data.originalGroupId)&&G.has($.data.originalGroupId)}),C=i.filter($=>{var L,T;return((L=$.data)==null?void 0:L.redirectedToInternal)&&typeof((T=$.data)==null?void 0:T.originalTarget)=="string"&&I.has($.data.originalTarget)&&G.has($.data.originalTarget)});if(P.length>0||C.length>0){const $=a.filter(L=>!C.some(T=>{var V;return((V=T.data)==null?void 0:V.originalTarget)===L.target}));d([...$,...P,...C])}else d(a)}},[a,d,m]);const q=u.useCallback((I,A,G=!1)=>{const C=i.filter(T=>T.target===A).length>0;if(i.some(T=>T.source===I&&T.target===A||T.source===A&&T.target===I)&&!G)return x.toast.warning("La tarea destino ya tiene una conexión"),!1;const L=!C;return typeof window<"u"&&(window.validConnectionTypes={dependiente:L,hija:L}),L?!0:(x.toast.warning("La tarea destino ya tiene una conexión de entrada"),!1)},[i]),ee=u.useCallback(I=>{if(!Ar(I.source,I.target))return;Xe(I.source)&&!I.sourceHandle&&(I.sourceHandle=_e.DEFAULT_SOURCE_HANDLE);const A=n.find(P=>P.id===I.source),G=n.find(P=>P.id===I.target);if(A&&G){if(!q(I.source,I.target))return;U(I.source,I.target,I.sourceHandle,I.targetHandle);return}return d(P=>oe.addEdge(I,P))},[n,U,d,q]),W=u.useCallback((I,A)=>{var G;if(!N&&!A.isValid&&A.fromNode){const P=n.find(ae=>ae.id===A.fromNode.id);if((P==null?void 0:P.type)==="group"){x.toast.warning("En una plantilla, no se puede crear una conexión");return}const C=Ir(I),$=document.elementFromPoint(C.x,C.y);if($!=null&&$.closest(".react-flow__node"))return;const L=crypto.randomUUID(),T=((G=A.fromHandle)==null?void 0:G.id)||_e.DEFAULT_SOURCE_HANDLE,Y=Xe(A.fromNode.id)?_e.DEFAULT_SOURCE_HANDLE:T;D(L,C,A.fromNode.id,Y)}},[N,D,n]),re=u.useCallback(async I=>{var C,$,L;const A=gs(I),G=I.length>0?($=(C=I[0])==null?void 0:C.data)==null?void 0:$.id:0;d(T=>T.filter(V=>!A.includes(V.source)&&!A.includes(V.target)));let P;for(const T of I)try{const V=T.data;if((L=V==null?void 0:V.plantilla)!=null&&L.id){P=V.plantilla.id;break}}catch{}try{d(T=>((async()=>{await k(A,T,P,G)})().catch(V=>{console.error("❌ Error en updateAfterDeleted:",V)}),T))}catch(T){console.error("❌ Error en onDeleteNode:",T)}},[d,k]),Z=u.useCallback(async I=>{var G,P,C,$,L,T,V,Y,ae,le,X,se,ce,ie;if(!I||I.length===0)return;let A;if(j!=null&&j.id)A=j.id;else for(const te of I){const ue=n.find(xe=>xe.id===te.source),fe=n.find(xe=>xe.id===te.target);if(ue!=null&&ue.data&&typeof ue.data=="object"&&"plantilla"in ue.data){const xe=ue.data.plantilla;if(xe!=null&&xe.id){A=xe.id;break}}if(fe!=null&&fe.data&&typeof fe.data=="object"&&"plantilla"in fe.data){const xe=fe.data.plantilla;if(xe!=null&&xe.id){A=xe.id;break}}}if(!A){console.warn("⚠️ onEdgesDelete - No se pudo obtener templateId");return}try{const te=await y(A);if(!te){console.warn("⚠️ onEdgesDelete - Template no encontrado en IndexedDB");return}const ue=I.map(je=>je.id),fe=((C=(P=(G=te.graph_layout)==null?void 0:G.snapshot)==null?void 0:P.edges)==null?void 0:C.filter(je=>{var ke;return!ue.includes(je.id)&&!((ke=je.data)!=null&&ke.isInternal)}))||[],pe=(((T=(L=($=te.graph_layout)==null?void 0:$.snapshot)==null?void 0:L.nodes)==null?void 0:T.filter(je=>{var ke;return!((ke=je.data)!=null&&ke.isInternal)&&!je.parentId}))||[]).map(je=>{const{style:ke,measured:pt,data:rt,...it}=je,{expandedDimensions:et,isExpanded:Vt,needsReExpansion:pl,...Wt}=rt||{},Ms=ke?{...ke,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0,ks=je.data.id===I[0].data.childId?{...Wt,tarea_padre:null,id_t_requerida:null}:Wt;return{...it,style:Ms,data:ks}}),ye=((Y=(V=te.graph_layout)==null?void 0:V.snapshot)==null?void 0:Y.edges)||[];if(!(JSON.stringify(ye)!==JSON.stringify(fe)))return;const Ne={...te,graph_layout:{id:((ae=te.graph_layout)==null?void 0:ae.id)||0,snapshot:{nodes:pe,edges:fe,viewport:((X=(le=te.graph_layout)==null?void 0:le.snapshot)==null?void 0:X.viewport)||{x:0,y:0,zoom:1}},history:((se=te.graph_layout)==null?void 0:se.history)||[],zoom:((ce=te.graph_layout)==null?void 0:ce.zoom)||1,position:((ie=te.graph_layout)==null?void 0:ie.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await M({templateId:A,id:I[0].data.childId}),await w(A,Ne),console.log("🗑️ [useFlow] Invalidando caché de la plantilla:",A),await _.invalidateQueries({queryKey:["template",A]}),await _.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlow] Caché invalidado exitosamente"),A===(j==null?void 0:j.id)&&b(Ne)}catch(te){console.error("❌ onEdgesDelete - Error al actualizar template layout:",te)}},[n,j,y,w,b,M]),E=u.useCallback(async I=>!I.nodes.some(G=>G.type==="start"||G.id===_e.START_NODE_ID),[]),z=u.useCallback((I,A,G)=>{var L,T,V;const P=n.find(Y=>Y.id===A.id);if(!P)return;if(P.type==="group"&&((L=P.data)!=null&&L.isExpanded)){d(Y=>Y.map(ae=>{if(ae.hidden&&ae.target===A.id){const{hidden:le,...X}=ae;return X}return ae}));return}let C;if(P.type==="group"?C=j==null?void 0:j.id:(V=(T=A==null?void 0:A.data)==null?void 0:T.plantilla)!=null&&V.id&&(C=A.data.plantilla.id),!C)return;const $=i.map(Y=>{var X,se,ce,ie,te;if(wt(Y))return Y;const ae=n.find(ue=>ue.id===Y.source),le=n.find(ue=>ue.id===Y.target);if(ae&&le){const ue=ae.type==="group"&&((X=ae.data)==null?void 0:X.isExpanded),fe=le.type==="group"&&((se=le.data)==null?void 0:se.isExpanded),xe=(ce=ae.data)==null?void 0:ce.isInternal,pe=(ie=le.data)==null?void 0:ie.isInternal,ye=(te=Y.data)==null?void 0:te.redirectedToInternal;if(ue||fe||xe||pe||ye)return Y;if(ae.id===A.id||le.id===A.id||f(ae,le,_e.MAGNETIC_CONNECTION_DISTANCE)){const Ne=h(ae,le);if(Ne!=null&&Ne.handle1&&(Ne!=null&&Ne.handle2))return{...Y,sourceHandle:Ne.handle1,targetHandle:Ne.handle2}}}return Y});if(JSON.stringify(i)!==JSON.stringify($))d($),setTimeout(()=>{const Y=p();g(C,Y)},100);else{const Y=p();g(C,Y)}},[n,i,j,g,p,d,h,f]),Q=u.useCallback(I=>{o(I);const A=Dr(I);if(A.length>0){const G=A.filter(P=>{var $;const C=n.find(L=>L.id===P);return(C==null?void 0:C.type)==="group"&&(($=C==null?void 0:C.data)==null?void 0:$.isExpanded)});if(G.length>0){d(P=>P.map(C=>{var T;const $=G.includes(C.target),L=!((T=C.data)!=null&&T.redirectedToInternal);return $&&L?{...C,hidden:!0}:C}));return}l(!0),setTimeout(()=>{const P=i.map($=>{var V,Y,ae,le;if(wt($))return{...$};const L=n.find(X=>X.id===$.source),T=n.find(X=>X.id===$.target);if(L&&T){const X=L.type==="group"&&((V=L.data)==null?void 0:V.isExpanded),se=T.type==="group"&&((Y=T.data)==null?void 0:Y.isExpanded),ce=(ae=L.data)==null?void 0:ae.isInternal,ie=(le=T.data)==null?void 0:le.isInternal;if(X||se||ce||ie)return{...$};if(f(L,T,_e.MAGNETIC_CONNECTION_DISTANCE)){const te=h(L,T);if(te!=null&&te.handle1&&(te!=null&&te.handle2)&&($.sourceHandle!==te.handle1||$.targetHandle!==te.handle2))return{...$,sourceHandle:te.handle1,targetHandle:te.handle2}}}return{...$}});if(i.some(($,L)=>{const T=P[L];return $.sourceHandle!==T.sourceHandle||$.targetHandle!==T.targetHandle})){const $=P.map(L=>({...L,id:L.id}));d($)}setTimeout(()=>{l(!1)},200)},0)}},[o,i,n,d,h,f,l]);return{nodes:n,edges:i,newNodePopup:F,connectionPopup:R,setNodes:s,setEdges:d,onEdgesChange:c,onConnect:ee,onConnectEnd:W,onDeleteNode:re,onEdgesDelete:Z,onBeforeDelete:E,handleNodesChange:Q,onDragEnd:z,getParentNodeInfo:J,isProtectedConnection:wt,isStartNode:Xe,createNodeFromPopup:O,updateNodeFromPopup:B,closeNewNodePopup:v,createConnectionFromPopup:S,closeConnectionPopup:K}},$r=({isOpen:e,onClose:a,createConnectionFromPopup:n,availableConnections:s})=>{if(!e)return null;const o=s||{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}},i=(r,c)=>{(r==="tarea"?o.tarea[c]:o.plantilla[c])&&n(r,c)};return t.jsx(t.Fragment,{children:t.jsxs("div",{className:"tm-fixed tm-inset-0 tm-z-50 tm-flex tm-items-center tm-justify-center",children:[t.jsx("div",{className:"tm-bg-black/20 tm-absolute tm-inset-0",onClick:a}),t.jsx("div",{className:"tm-shadow-lg tm-border-default tm-border-1 tm-relative tm-rounded-lg tm-bg-white tm-p-4",children:t.jsx("div",{children:t.jsxs(x.List,{children:[t.jsx("p",{className:"tm-text-sm tm-px-4 tm-font-medium tm-text-neutral-300",children:"Tarea"}),t.jsxs(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>i("tarea","dependiente"),children:["Dependiente ",!o.tarea.dependiente&&"(No disponible)"]}),t.jsxs(x.ListItem,{icon:de.faArrowDownRight,iconColor:"neutral",onClick:()=>i("tarea","hija"),children:["Hija ",!o.tarea.hija&&"(No disponible)"]}),t.jsx(x.ListSeparator,{}),t.jsx("p",{className:"tm-text-sm tm-px-4 tm-py-2 tm-font-medium tm-text-neutral-300",children:"Flujo de trabajo"}),t.jsxs(x.ListItem,{icon:de.faArrowUpLeft,iconColor:"neutral",onClick:()=>i("plantilla","dependiente"),children:["Dependiente ",!o.plantilla.dependiente&&"(No disponible)"]})]})})})]})})},Ur=({data:e,id:a,selected:n})=>{const{expandedGroups:s}=Te(),[o,i]=u.useState(!1),r=u.useRef(!1);u.useEffect(()=>{const p=(e==null?void 0:e.needsReExpansion)&&s.has(a),h=(e==null?void 0:e.templateId)||(e==null?void 0:e.id);if(p&&h&&!r.current){r.current=!0;const g=Te.getState().expandGroup;g&&g(a,h).catch(y=>{console.error("Error al re-expandir grupo:",y),r.current=!1})}s.has(a)||(r.current=!1)},[e,a,s]);const c=async p=>{p.preventDefault(),p.stopPropagation();const h=(e==null?void 0:e.templateId)||(e==null?void 0:e.id);if(h){i(!0);try{const f=Te.getState(),g=f.expandGroup,y=f.collapseGroup,w=s.has(a);w&&y?y(a):!w&&g&&await g(a,h)}catch{}finally{i(!1)}}},m=s.has(a),l=e==null?void 0:e.expandedDimensions,d=m&&l?{width:l.width,height:l.height,minWidth:l.width,minHeight:l.height}:{minWidth:268,minHeight:80};return t.jsxs("div",{className:`tm-rounded-lg tm-relative tm-transition-all tm-duration-200 ${n?"tm-bg-white tm-border-[1px] tm-border-blue-500 tm-shadow-lg tm-ring-2 tm-ring-blue-300 tm-ring-opacity-50":m?"tm-bg-neutral-50 tm-border-2 tm-border-blue-300 tm-shadow-lg":"tm-bg-white tm-border-2 tm-border-black-light"}`,style:d,children:[t.jsx(ot,{isLoading:o}),t.jsx(oe.Handle,{id:"top-target",type:"target",position:oe.Position.Top,className:`tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white ${m?"tm-opacity-0 tm-pointer-events-none":""}`,isConnectable:!m}),t.jsx(oe.Handle,{id:"right-target",type:"target",className:`tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white ${m?"tm-opacity-0 tm-pointer-events-none":""}`,position:oe.Position.Right,isConnectable:!m}),t.jsx(oe.Handle,{id:"bottom-target",type:"target",className:`tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white ${m?"tm-opacity-0 tm-pointer-events-none":""}`,position:oe.Position.Bottom,isConnectable:!m}),t.jsx(oe.Handle,{id:"left-target",type:"target",className:`tm-h-[16px] tm-w-[16px] tm-border-black-light !tm-bg-white ${m?"tm-opacity-0 tm-pointer-events-none":""}`,position:oe.Position.Left,isConnectable:!m}),!m&&t.jsxs("div",{className:"tm-flex tm-justify-between tm-gap-x-8 tm-p-16",children:[t.jsx(x.Icon,{name:de.faChartDiagram,color:"brand",size:"lg"}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-y-4",children:[t.jsx("p",{className:"tm-text-primary tm-font-bold tm-leading-none tm-text-body-lg-regular tm-truncate tm-tracking-wider",children:e.clave||e.nombre_plantilla||"N/A"}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-4",children:[t.jsx(x.Badge,{size:"sm",theme:"soft",color:e.estatus==="published"?"success":"warning",label:e.estatus==="published"?"Publicado":"Borrador"}),e.updatedAt&&t.jsx("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-semibold",children:new Date(e.updatedAt).toLocaleDateString("es-ES")})]})]}),t.jsx("div",{children:t.jsx(x.Button,{size:"sm",color:"secondary",pill:"pill",onClick:c,disabled:o,className:`tm-p-2 ${o?"tm-opacity-50":""} nopan nodrag`,icon:m?Ce.faCompress:Ce.faExpand})})]})]})},Hr=(e,a,n,s)=>{const o=u.useRef(e),i=u.useRef(a);u.useEffect(()=>{o.current=e},[e]),u.useEffect(()=>{i.current=a},[a]);const{expandedGroups:r,groupTemplateData:c,toggleGroupExpansion:m,setGroupTemplateData:l,clearGroupTemplateData:d}=Te(),p=me.useQueryClient(),{getTemplateWithTasks:h}=is(),{hydrateTasks:f}=ds(),g=u.useCallback(async(b,_)=>{var M,F,R,N;try{await p.invalidateQueries({queryKey:["template",_]});const D=await h(_),v=(R=(F=(M=D==null?void 0:D.graph_layout)==null?void 0:M.snapshot)==null?void 0:F.nodes)==null?void 0:R.filter(T=>{var V,Y;return((V=T.data)==null?void 0:V.isInternal)||T.parentId||((Y=T.id)==null?void 0:Y.includes("-internal-"))});if(v&&v.length>0&&console.warn("⚠️ [expandGroup] Nodos sospechosos en API para plantilla",_,":",v),!((N=D==null?void 0:D.graph_layout)!=null&&N.snapshot))throw new Error(`No se encontraron datos de graph_layout en la plantilla: ${_}`);const U=D.graph_layout.snapshot.nodes||[],K=U.filter(T=>{var X,se;const V=(X=T.data)==null?void 0:X.isInternal,Y=!!T.parentId,ae=(se=T.id)==null?void 0:se.includes("-internal-"),le=V||Y||ae;return le&&console.warn("🗑️ [expandGroup] Filtrando nodo corrupto:",{id:T.id,type:T.type,esInterno:V,tieneParentId:Y,tieneInternalEnId:ae}),!le}),J={...D,graph_layout:{...D.graph_layout,snapshot:{...D.graph_layout.snapshot,nodes:K,edges:(D.graph_layout.snapshot.edges||[]).filter(T=>{var V,Y;return!((V=T.data)!=null&&V.isInternal)&&!((Y=T.id)!=null&&Y.includes("-internal-"))})}}},H=U.length-K.length;H>0?console.warn(`⚠️ [expandGroup] Se filtraron ${H} nodos internos corruptos de la BD para plantilla ${_}`):console.log(`✅ [expandGroup] No se encontraron nodos corruptos en plantilla ${_}`);const O=await f(J),S={...J,hydratedNodes:O,nodes:O||J.graph_layout.snapshot.nodes||[],edges:J.graph_layout.snapshot.edges||[]},B=S.nodes,k=S.edges;if(!B||!k){console.error("❌ No se encontraron nodos o edges en la plantilla:",_);return}l(b,{nodes:B,edges:k,viewport:S.graph_layout.snapshot.viewport||{x:0,y:0,zoom:1}});const q=o.current.find(T=>T.id===b);if(!q){console.error("❌ No se encontró el nodo grupo:",b);return}const ee=B.filter(T=>T.id!==b);let W=1/0,re=1/0,Z=-1/0,E=-1/0;ee.forEach(T=>{var te,ue,fe,xe,pe,ye;const V=((te=T.position)==null?void 0:te.x)||0,Y=((ue=T.position)==null?void 0:ue.y)||0,ae=typeof((fe=T.style)==null?void 0:fe.width)=="number"?T.style.width:((xe=T.measured)==null?void 0:xe.width)||268,le=typeof((pe=T.style)==null?void 0:pe.height)=="number"?T.style.height:((ye=T.measured)==null?void 0:ye.height)||111,X=V-ae/2,se=V+ae/2,ce=Y,ie=Y+le;W=Math.min(W,X),re=Math.min(re,ce),Z=Math.max(Z,se),E=Math.max(E,ie)});const z=80,Q=60,I=Z-W,A=E-re,G=I+z*2,P=A+z*2+Q,C=B.map((T,V)=>{var te,ue;if(T.id===b)return null;const Y=((te=T.position)==null?void 0:te.x)||0,ae=((ue=T.position)==null?void 0:ue.y)||0,le=Y-W+z,X=ae-re+z+Q,se=T.type==="start"||T.id==="start",ce=se?{...T.data,estatus:q.data.estatus,updatedAt:q.data.updatedAt,createdAt:q.data.createdAt,isInternal:!0,originalGroupId:b,originalNodeId:T.id}:{...T.data,isInternal:!0,originalGroupId:b,originalNodeId:T.id};return{...T,id:`${b}-internal-${T.id}`,parentId:b,extent:"parent",type:T.type==="group"?"main":T.type,position:{x:le,y:X},style:{...T.style},data:ce,draggable:!1,selectable:se,selected:!1,deletable:!1,connectable:!1,focusable:se,zIndex:999}}).filter(Boolean),$=k.map(T=>{const V=C.some(le=>le&&le.id===`${b}-internal-${T.source}`),Y=C.some(le=>le&&le.id===`${b}-internal-${T.target}`);return!V||!Y?null:{...T,id:`${b}-internal-${T.id}`,source:`${b}-internal-${T.source}`,target:`${b}-internal-${T.target}`,style:{...T.style},data:{...T.data,isInternal:!0,originalGroupId:b}}}).filter(Boolean),L=C.find(T=>{var V;return T&&((V=T.data)==null?void 0:V.originalNodeId)==="start"});L&&s(T=>T.map(V=>V.target===b?{...V,target:L.id,targetHandle:"top-target",data:{...V.data,redirectedToInternal:!0,originalTarget:b,originalTargetHandle:V.targetHandle}}:V)),m(b),n(T=>[...T.map(Y=>{if(Y.id===b){const{needsReExpansion:ae,...le}=Y.data||{};return{...Y,style:{...Y.style,width:G,height:P},data:{...le,isExpanded:!0,expandedDimensions:{width:G,height:P}},zIndex:1e3}}return Y}),...C]),s(T=>[...T,...$])}catch(D){console.error("❌ Error al expandir el grupo:",D)}},[p,h,f,l,m,n,s]),y=u.useCallback(b=>{var v,U;const _=o.current,M=i.current,F=_.find(K=>K.id===b),R=((v=F==null?void 0:F.data)==null?void 0:v.templateId)||((U=F==null?void 0:F.data)==null?void 0:U.id),N=_.filter(K=>!K.id.startsWith(`${b}-internal-`)&&K.parentId!==b).map(K=>K.id===b?{...K,style:{...K.style,width:void 0,height:void 0},data:{...K.data,isExpanded:!1,expandedDimensions:void 0},zIndex:void 0}:K),D=M.filter(K=>!K.id.startsWith(`${b}-internal-`)).map(K=>{var J,H;if((J=K.data)!=null&&J.redirectedToInternal&&((H=K.data)==null?void 0:H.originalTarget)===b){const{redirectedToInternal:O,originalTarget:S,originalTargetHandle:B,...k}=K.data;return{...K,target:b,targetHandle:B||K.targetHandle,data:k}}return K});n(N),s(D),m(b),d(b),R&&p.invalidateQueries({queryKey:["template",R]})},[n,s,m,d,p]),w=u.useCallback(async(b,_)=>{r.has(b)?y(b):await g(b,_)},[r,g,y]),j=u.useCallback(b=>r.has(b),[r]);return{expandGroup:g,collapseGroup:y,toggleGroup:w,isGroupExpanded:j,groupTemplateData:c}},Kr=()=>{const{getNodes:e,setNodes:a,screenToFlowPosition:n,setCenter:s}=oe.useReactFlow(),{copiedNodes:o,setCopiedNodes:i,getViewMode:r}=Te(),{activeTemplate:c,setActiveTemplate:m}=Le(),{updateGraphLayout:l,get:d,update:p}=Be(),h=c!=null&&c.id?r(c.id):"readonly",f=u.useCallback(()=>`node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,[]),g=u.useCallback(()=>e().filter(N=>N.selected).filter(N=>!(N.type==="start"||N.id==="start"||N.type==="group")),[e]),y=u.useCallback(()=>{if(h==="readonly"){x.toast.error("No puedes copiar tareas en modo solo lectura");return}if(!c){x.toast.error("No hay una plantilla activa");return}const M=g();if(M.length===0){const R=e().filter(N=>N.selected);if(R.length>0){const N=R.some(v=>v.type==="group"),D=R.some(v=>v.type==="start"||v.id==="start");N?x.toast.error("Las plantillas conectadas no pueden ser copiadas"):D&&x.toast.error("El nodo de inicio no puede ser copiado")}else x.toast.error("No hay tareas seleccionadas para copiar");return}const F=M.map(R=>{const{selected:N,...D}=R;return{...D,data:{...D.data,_originalTemplateId:c.id}}});i(F),x.toast.success(`${M.length} ${M.length===1?"tarea copiada":"tareas copiadas"} con éxito`)},[h,c,g,e,i]),w=u.useCallback(async M=>{if(h==="readonly"){x.toast.error("No puedes pegar tareas en modo solo lectura");return}if(!c){x.toast.error("No hay una plantilla activa");return}if(o.length===0){x.toast.error("No hay tareas copiadas para pegar");return}const F=e();let R={x:0,y:0};if(M)R=n({x:M.x,y:M.y});else if(F.length>0){const H=F.reduce((S,B)=>S+B.position.x,0)/F.length,O=F.reduce((S,B)=>S+B.position.y,0)/F.length;R={x:H+50,y:O+100}}const N=o[0],D=R.x-N.position.x,v=R.y-N.position.y,U=o.map((H,O)=>{const S=f(),B=-(Date.now()+O),k=H.data.plantilla&&typeof H.data.plantilla=="object"?{...H.data.plantilla,id:c.id}:{id:c.id},{id:q,...ee}=H.data,W={...ee,id:B,reference_graph:S,plantilla:k,parent:{data:{id:null}},_originalTemplateId:void 0};return{...H,id:S,position:{x:H.position.x+D,y:H.position.y+v},data:W,selected:!0}}),J=[...F.map(H=>({...H,selected:!1})),...U];if(a(J),c.id)try{const H=await d(c.id);if(!H)return;const O=U.filter(B=>B.type!=="start"&&B.type!=="group").map(B=>{const k=B.data;return{id:k.id,reference_graph:B.id,nombre:k.nombre||k.texto_corto||"Tarea sin nombre",texto_corto:k.texto_corto||"",texto_largo:k.texto_largo||"",prioridad:k.prioridad??0,nivel_dificultad:k.nivel_dificultad??0,dias_duracion:k.dias_duracion??0,plantilla:{id:c.id},parent:{data:{id:null}},tareas:[],plantilla_dependents:k.plantilla_dependents||[],start:k.start||!1,es_grupo:k.es_grupo||!1,optional:k.optional||!1,subtask_completadas:k.subtask_completadas||0,subtask_totales:k.subtask_totales||0}}),S={...H,tarea_plantillas:[...H.tarea_plantillas,...O],estatus:"dirty",updatedAt:new Date().toISOString()};await p(c.id,S),m(S),setTimeout(async()=>{await l(c.id,{nodes:J,edges:[]})},50)}catch(H){console.error("Error al actualizar template en IndexedDB:",H)}if(U.length>0){const H=U.reduce((S,B)=>S+B.position.x,0)/U.length,O=U.reduce((S,B)=>S+B.position.y,0)/U.length;s(H,O,{zoom:1,duration:800})}x.toast.success(`${U.length} ${U.length===1?"tarea pegada":"tareas pegadas"} con éxito`)},[h,c,o,e,a,n,s,f,l,d,p,m]),j=u.useCallback(()=>o.length>0,[o]),_=g().length>0;return{handleCopy:y,handlePaste:w,hasCopiedNodes:j,hasSelectableNodes:_,copiedNodesCount:o.length}},Gr={main:Fr,plus:kr,start:Br,group:Ur},Vr=[.5,0],Wr=({initialNodes:e,initialEdges:a,debugEvents:n=!1})=>{const s=u.useRef(null),{nodes:o,edges:i,onEdgesChange:r,onConnect:c,onConnectEnd:m,onBeforeDelete:l,onDeleteNode:d,onEdgesDelete:p,handleNodesChange:h,newNodePopup:f,getParentNodeInfo:g,createNodeFromPopup:y,closeNewNodePopup:w,connectionPopup:j,createConnectionFromPopup:b,closeConnectionPopup:_,onDragEnd:M,setNodes:F,setEdges:R}=zr({initialNodes:e,initialEdges:a}),{expandGroup:N,collapseGroup:D}=Hr(o,i,F,R),{handleCopy:v,handlePaste:U,hasCopiedNodes:K,copiedNodesCount:J}=Kr();u.useEffect(()=>{if(!n)return;const te=pe=>{console.log("🔍 [DEBUG] KeyDown:",{key:pe.key,code:pe.code,shiftKey:pe.shiftKey,ctrlKey:pe.ctrlKey,metaKey:pe.metaKey,altKey:pe.altKey,target:pe.target,defaultPrevented:pe.defaultPrevented,bubbles:pe.bubbles,timestamp:new Date().toISOString()})},ue=pe=>{console.log("🔍 [DEBUG] KeyUp:",{key:pe.key,code:pe.code,shiftKey:pe.shiftKey,timestamp:new Date().toISOString()})},fe=pe=>{var ye,Me;console.log("🔍 [DEBUG] Click:",{button:pe.button,shiftKey:pe.shiftKey,ctrlKey:pe.ctrlKey,metaKey:pe.metaKey,altKey:pe.altKey,target:(ye=pe.target)==null?void 0:ye.tagName,targetClass:(Me=pe.target)==null?void 0:Me.className,defaultPrevented:pe.defaultPrevented,bubbles:pe.bubbles,timestamp:new Date().toISOString()})},xe=pe=>{console.log("🔍 [DEBUG] MouseDown:",{button:pe.button,shiftKey:pe.shiftKey,ctrlKey:pe.ctrlKey,metaKey:pe.metaKey,defaultPrevented:pe.defaultPrevented,timestamp:new Date().toISOString()})};return document.addEventListener("keydown",te,!0),document.addEventListener("keyup",ue,!0),document.addEventListener("click",fe,!0),document.addEventListener("mousedown",xe,!0),console.log("🔍 [DEBUG] Event listeners activados. Presiona Shift + Click en un nodo para ver los eventos."),()=>{document.removeEventListener("keydown",te,!0),document.removeEventListener("keyup",ue,!0),document.removeEventListener("click",fe,!0),document.removeEventListener("mousedown",xe,!0),console.log("🔍 [DEBUG] Event listeners desactivados.")}},[n]);const O=o.filter(te=>!(!te.selected||te.type==="start"||te.id==="start"||te.type==="group")).length,S=O>0,B=u.useRef(N),k=u.useRef(D);u.useEffect(()=>{B.current=N,k.current=D},[N,D]),u.useEffect(()=>{const te=async(fe,xe)=>{B.current&&await B.current(fe,xe)},ue=fe=>{k.current&&k.current(fe)};Te.setState({expandGroup:te,collapseGroup:ue})},[]);const{zoomPercentage:q,handleZoomIn:ee,handleZoomOut:W,handleZoomTo100:re,handleDoubleClick:Z}=Lr({reactFlowWrapper:s,nodes:o}),{getViewMode:E}=Te(),{activeTemplate:z}=Le(),I=(z!=null&&z.id?E(z.id):"readonly")==="readonly";u.useEffect(()=>{if(I)return;const te=ue=>{const fe=ue.target;fe.tagName==="INPUT"||fe.tagName==="TEXTAREA"||fe.isContentEditable||((ue.ctrlKey||ue.metaKey)&&ue.key==="c"&&(ue.preventDefault(),v()),(ue.ctrlKey||ue.metaKey)&&ue.key==="v"&&(ue.preventDefault(),U()))};return document.addEventListener("keydown",te),()=>{document.removeEventListener("keydown",te)}},[v,U,I]);const A=u.useCallback((te,ue)=>{const fe=te.target;fe.tagName==="BUTTON"||fe.closest("button")||fe.closest('[role="button"]')||fe.classList.contains("nopan")||fe.classList.contains("nodrag")},[]),G=u.useCallback(te=>{const ue=te.filter(fe=>{var xe,pe;if(fe.type==="position"&&fe.dragging===!1){const ye=o.find(Me=>Me.id===fe.id);if(ye&&fe.position){const Me=Math.abs((fe.position.x||0)-(((xe=ye.position)==null?void 0:xe.x)||0)),Ne=Math.abs((fe.position.y||0)-(((pe=ye.position)==null?void 0:pe.y)||0));if(Me<3&&Ne<3)return!1}}return!0});ue.length>0&&h(ue)},[h,o]),P=I?void 0:r,C=I?void 0:G,$=I?void 0:c,L=I?void 0:m,T=I?void 0:l,V=I?void 0:M,Y=I?void 0:d,ae=I?void 0:p,le=I?null:["Backspace","Delete"],ce=I?{nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,nodesFocusable:!1,draggable:!1,connectOnClick:!1}:{nodesDraggable:!0,nodesConnectable:!0,elementsSelectable:!0,edgesFocusable:!0,nodesFocusable:!0,draggable:!1,connectOnClick:!0,elevateNodesOnSelect:!0},ie=()=>{if(j)return{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}}};return t.jsxs("div",{className:"wrapper",ref:s,style:{width:"100%",height:"100vh"},children:[t.jsxs(oe.ReactFlow,{nodes:o,edges:i,nodeTypes:Gr,onEdgesChange:P,onNodesChange:C,onConnect:$,onConnectEnd:L,onBeforeDelete:T,onNodeDragStop:V,onNodesDelete:Y,onEdgesDelete:ae,onNodeClick:A,...ce,fitView:!0,fitViewOptions:{padding:2},nodeOrigin:Vr,defaultEdgeOptions:{type:"smoothstep"},connectionLineType:oe.ConnectionLineType.SmoothStep,deleteKeyCode:le,multiSelectionKeyCode:I?null:"Shift",selectionOnDrag:!1,panOnDrag:I?!0:[0],nodeClickDistance:15,selectNodesOnDrag:!1,nodeDragThreshold:10,autoPanOnNodeDrag:!1,autoPanOnConnect:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",children:[t.jsx(oe.Background,{}),!I&&t.jsx(oe.Panel,{position:"bottom-left",className:"tm-m-0",children:t.jsxs("div",{className:"tm-bg-white tm-border tm-border-black-light tm-rounded-lg tm-p-3 tm-shadow-sm tm-text-sm tm-text-neutral-500",children:[t.jsx("div",{className:"tm-font-semibold tm-text-neutral-900 tm-mb-2",children:"Atajos de teclado"}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-1",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2",children:[t.jsx("kbd",{className:"tm-px-2 tm-pt-0.5 tm-bg-neutral-100 tm-rounded tm-text-sm",children:"Shift"}),t.jsx("span",{children:"+ clic para seleccionar múltiples tareas"})]}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2",children:[t.jsx("kbd",{className:"tm-px-2 tm-pt-0.5 tm-bg-neutral-100 tm-rounded tm-text-sm",children:"Ctrl"}),t.jsx("span",{children:"+"}),t.jsx("kbd",{className:"tm-px-2 tm-pt-0.5 tm-bg-neutral-100 tm-rounded tm-text-sm",children:"C"}),t.jsx("span",{children:"Copiar"})]}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2",children:[t.jsx("kbd",{className:"tm-px-2 tm-pt-0.5 tm-bg-neutral-100 tm-rounded tm-text-sm",children:"Ctrl"}),t.jsx("span",{children:"+"}),t.jsx("kbd",{className:"tm-px-2 tm-pt-0.5 tm-bg-neutral-100 tm-rounded tm-text-sm",children:"V"}),t.jsx("span",{children:"Ppegar"})]})]})]})}),t.jsx(oe.Panel,{position:"top-left",className:"tm-m-0",children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-2",children:[t.jsxs("div",{children:[z.estatusFromStrapi===Ee.PUBLISHED&&t.jsx(x.Tag,{color:"success",label:"Publicado"}),z.estatusFromStrapi===Ee.DRAFT&&t.jsx(x.Tag,{color:"warning",label:"Borrador"})]}),!I&&O>0&&t.jsxs("p",{className:"tm-text-blue-dark-500 tm-text-xs tm-font-medium",children:[O," ",O===1?"tarea seleccionada":"tareas seleccionadas"]})]})}),t.jsx(oe.Panel,{position:"top-right",className:"tm-m-0",children:t.jsxs("div",{className:"tm-flex tm-gap-4",children:[!I&&t.jsxs(x.ButtonGroup,{children:[t.jsxs(x.Button,{leftSlot:de.faCopy,onClick:v,disabled:!S,size:"xxs",color:S?"primary":"secondary",title:S?`Copiar ${O} ${O===1?"tarea":"tareas"} (Ctrl+C)`:"Selecciona tareas para copiar (mantén Shift y haz clic)",children:["Copiar ",O>0&&`(${O})`]}),t.jsxs(x.Button,{leftSlot:de.faFile,size:"xxs",onClick:()=>U(),disabled:!K(),color:K()?"primary":"secondary",title:K()?`Pegar ${J} ${J===1?"tarea":"tareas"} (Ctrl+V)`:"No hay tareas copiadas",children:["Pegar ",J>0&&`(${J})`]})]}),t.jsxs(x.ButtonGroup,{color:"secondary",size:"xxs",children:[t.jsx(x.Button,{icon:de.faMinus,onClick:W,color:"secondary"}),t.jsxs(x.Button,{onClick:re,onDoubleClick:Z,color:"secondary",children:[q,"%"]}),t.jsx(x.Button,{icon:de.faPlus,onClick:ee})]})]})})]}),f&&t.jsx(Or,{isOpen:f.isOpen,position:f.position,onClose:w,createNodeFromPopup:y,parentNodeInfo:g()}),j&&t.jsx($r,{isOpen:j.isOpen,onClose:_,createConnectionFromPopup:b,availableConnections:ie()})]})},Qr=({initialNodes:e,initialEdges:a,debugEvents:n})=>t.jsx(oe.ReactFlowProvider,{children:t.jsx(Wr,{initialNodes:e,initialEdges:a,debugEvents:n})}),st=Ue.create(e=>({step:1,setStep:a=>e({step:a}),reset:()=>e({step:1})})),Xr=({limit:e})=>{const a=st(r=>r.step),n=st(r=>r.setStep),s=u.useCallback(()=>{a<e&&n(a+1)},[a,n,e]),o=u.useCallback(()=>{a>1&&a<=e&&n(a-1)},[a,n,e]),i=u.useCallback(r=>{r>0&&r<=e&&n(r)},[n,e]);return u.useMemo(()=>({step:a,nextStep:s,prevStep:o,onStepChange:i}),[a,s,o,i])},ya=["fase_plantilla","tipo_plantilla","categoria","tipo_medio","medio_especifico","pertenencia_medio","ubicacion_medio","responsable_impresion"],ja=["fase_plantilla","modo_configuracion","tipo_medio","formato_salida"],wa=["tipo_medio","formato_salida","medio_especifico"],va={fase_plantilla:{Preventa:{fieldsToClear:["modo_configuracion","formato_salida","medio_especifico","tipo_plantilla","categoria"]},Venta:{fieldsToClear:["tipo_medio","medio_especifico","modo_configuracion"]}},modo_configuracion:{Default:{fieldsToClear:["formato_salida","medio_especifico","tipo_medio"]},Especifico:{fieldsToClear:["formato_salida","medio_especifico","tipo_medio"]}},tipo_medio:{"Sitios Fijos":{fieldsToClear:["medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"]},Indoors:{fieldsToClear:["medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"]},"Vallas Móviles":{fieldsToClear:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},Camiones:{fieldsToClear:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},"Brand Riders":{fieldsToClear:["responsable_impresion","pertenencia_medio","ubicacion_medio"]}},formato_salida:{Digital:{fieldsToClear:["pertenencia_medio","ubicacion_medio"]},Impreso:{fieldsToClear:["pertenencia_medio","ubicacion_medio"]}}},_a={fase_plantilla:{Venta:{fieldsToEnableDisable:["tipo_plantilla","modo_configuracion","categoria","pertenencia_medio","ubicacion_medio"]},Preventa:{fieldsToEnableDisable:["modo_configuracion"]}},modo_configuracion:{Preventa:{Default:{fieldsToEnableDisable:["tipo_medio"]},Especifico:{fieldsToEnableDisable:["tipo_medio"]}},Venta:{Default:{fieldsToEnableDisable:["tipo_medio","formato_salida"]},Especifico:{fieldsToEnableDisable:["tipo_medio"]}}},tipo_plantilla:{General:{fieldsToEnableDisable:["medio_especifico"]},Individual:{fieldsToEnableDisable:[]}},formato_salida:{Digital:{fieldsToEnableDisable:["responsable_impresion"]},Impreso:{fieldsToEnableDisable:["responsable_impresion"]}}};function Ht(e){const[a,n]=u.useState([]),[s,o]=u.useState({}),{setClaveParams:i,templateFormData:r,setTemplateFormData:c,resetTemplateFormData:m,setDisableField:l,setClave:d,claveParams:p,setParamTipo:h}=Fe(),{tasks_api:f}=he(),g=st(E=>E.step),{data:y,error:w,isSuccess:j,isError:b}=me.useQuery({queryKey:["paramsTipoPlantilla"],queryFn:async()=>{const E=Pe.stringify({populate:{params_plantillas:{fields:["id","abbreviation","name","active","tipomedio_nombre","reference_id"]}},sort:["order:asc"],fields:["id","step","key","label","order"]},{encodeValuesOnly:!0}),z=await f.get(`/api/params-tipos?${E}`);return z.data?{paramsTiposPlantilla:be(z.data.data)}:{paramsTiposPlantilla:[]}},refetchOnWindowFocus:!1});u.useEffect(()=>{w&&b&&console.log(w)},[w,b]),u.useEffect(()=>{if(y&&j){const E=y.paramsTiposPlantilla;n(E)}},[y,j]);const _={fase_plantilla:(E,z)=>{c({fase_plantilla:E}),h({fase_plantilla:z})},tipo_plantilla:(E,z)=>{c({tipo_plantilla:E}),h({tipo_plantilla:z})},modo_configuracion:(E,z)=>{c({modo_configuracion:E}),h({modo_configuracion:z})},categoria:(E,z)=>{c({categoria:E}),h({categoria:z})},formato_salida:(E,z)=>{c({formato_salida:E}),h({formato_salida:z})},tipo_medio:(E,z)=>{c({tipo_medio:E}),h({tipo_medio:z})},medio_especifico:(E,z)=>{c({medio_especifico:E}),h({medio_especifico:z})},responsable_impresion:(E,z)=>{c({responsable_impresion:E}),h({responsable_impresion:z})},pertenencia_medio:(E,z)=>{c({pertenencia_medio:E}),h({pertenencia_medio:z})},ubicacion_medio:(E,z)=>{c({ubicacion_medio:E}),h({ubicacion_medio:z})}},M={fase_plantilla:(E,z)=>i({field:E,value:z}),tipo_plantilla:(E,z)=>i({field:E,value:z}),categoria:(E,z)=>i({field:E,value:z}),tipo_medio:(E,z)=>i({field:E,value:z}),medio_especifico:(E,z)=>i({field:E,value:z}),responsable_impresion:(E,z)=>i({field:E,value:z}),pertenencia_medio:(E,z)=>i({field:E,value:z}),ubicacion_medio:(E,z)=>i({field:E,value:z})},F={Digital:{execute:()=>{const E=a.filter(I=>I.step===3).find(I=>I.key==="responsable_impresion").params_plantillas.find(I=>I.name==="N/A").id,z="step3.responsable_impresion",Q=["responsable_impresion"];c({responsable_impresion:"N/A"}),e(z,E),l({fields:Q,value:!0}),i({field:"responsable_impresion",value:"NA"})}},Impreso:{execute:()=>{const E="step3.responsable_impresion",z=["responsable_impresion"];c({responsable_impresion:""}),e(E,""),l({fields:z,value:!1}),i({field:"responsable_impresion",value:""})}}},R={"Sitios Fijos":{execute:()=>J()},"Vallas Móviles":{execute:()=>H()},Indoors:{execute:()=>J()},Camiones:{execute:()=>O()},"Brand Riders":{execute:()=>O()}},N={"Sitios Fijos":{execute:()=>K()},"Vallas Móviles":{execute:()=>K()},Indoors:{execute:()=>K()},Camiones:{execute:()=>{U(),F.Impreso.execute()}},"Brand Riders":{execute:()=>{U(),F.Impreso.execute()}}},D={"Sitios Fijos":{execute:()=>v()},"Vallas Móviles":{execute:()=>U()},Indoors:{execute:()=>v()},Camiones:{execute:()=>U()},"Brand Riders":{execute:()=>U()}},v=()=>{const E=["medio_especifico"],z=r.modo_configuracion,Q=`step${g}.medio_especifico`,I=`step${g}.formato_salida`;l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0}),l(z==="Default"?{fields:E,value:!0}:{fields:E,value:!1}),c({medio_especifico:""}),c({formato_salida:""}),e(Q,""),e(I,""),i({field:"medio_especifico",value:""}),i({field:"formato_salida",value:""})},U=()=>{const E=a.filter(G=>G.step===g).find(G=>G.key==="formato_salida").params_plantillas.find(G=>G.name==="Impreso").id;l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0});const Q=`step${g}.formato_salida`,I=["formato_salida","medio_especifico"],A=`step${g}.medio_especifico`;c({medio_especifico:""}),c({formato_salida:"Impreso"}),e(Q,E),e(A,""),i({field:"medio_especifico",value:""}),i({field:"tipo_medio",value:r.tipo_medio}),l({fields:I,value:!0})},K=()=>{const E=["formato_salida"],z=`step${g}.formato_salida`,Q={};Q.formato_salida="",c(Q),e(z,""),l({fields:E,value:!1})},J=()=>{const E=["formato_salida","medio_especifico"],z=`step${g}.formato_salida`,Q={};Q.formato_salida="",c(Q),e(z,""),l({fields:E,value:!1})},H=()=>{const E=["formato_salida"],z=["medio_especifico"],Q=`step${g}.formato_salida`,I=`step${g}.medio_especifico`,A={};A.formato_salida="",A.medio_especifico="",c(A),e(Q,""),e(I,""),l({fields:E,value:!1}),l({fields:z,value:!0})},O=()=>{const E=a.filter(A=>A.step===g).find(A=>A.key==="formato_salida").params_plantillas.find(A=>A.name==="Impreso").id,z=`step${g}.formato_salida`,Q=`step${g}.medio_especifico`,I=["formato_salida","medio_especifico"];c({formato_salida:"Impreso"}),e(z,E),e(Q,""),l({fields:I,value:!0}),F.Impreso.execute()},S=(E,z)=>{Object.keys(va).includes(E)&&va[E][z].fieldsToClear.forEach(A=>{const G={};G[A]="",c(G),i({field:A,value:""}),e&&[...new Set(a.map(C=>C.step))].forEach(C=>{const $=`step${C}.${A}`;e($,"")})})},B=(E,z,Q)=>E==="modo_configuracion"&&Q?_a[E][Q][z].fieldsToEnableDisable:_a[E][z].fieldsToEnableDisable,k=E=>a.filter(z=>z.step===E),q=E=>{var z;return s[E]||((z=a.find(Q=>Q.key===E))==null?void 0:z.params_plantillas)},ee=(E,z)=>{var I,A,G,P;let Q=[];E==="Sitios Fijos"?z==="Preventa"?Q=(I=a.find(C=>C.key==="medio_especifico"))==null?void 0:I.params_plantillas.filter(C=>C.tipomedio_nombre==="OOH"&&C.name==="PANTALLA DIGITAL"):z==="Venta"&&(Q=(A=a.find(C=>C.key==="medio_especifico"))==null?void 0:A.params_plantillas.filter(C=>C.tipomedio_nombre==="OOH")):E==="Indoors"?Q=(G=a.find(C=>C.key==="medio_especifico"))==null?void 0:G.params_plantillas.filter(C=>C.tipomedio_nombre==="InDoor"):Q=(P=a.find(C=>C.key==="medio_especifico"))==null?void 0:P.params_plantillas,o(C=>({...C,medio_especifico:Q}))},W=(E,z)=>{const Q=E.key;if(wa.includes(Q)&&Q==="tipo_medio"){const I=z.label,A=r.fase_plantilla,G=r.modo_configuracion;if(A==="Preventa"){ee(I,A);return}else if(G==="Especifico"){ee(I,A);return}}},re=(E,z,Q)=>{const I=E.params_plantillas.find(A=>E.key==="categoria"?A.reference_id===z.value:A.id===z.value);if(I){const A=E.key,G=z.label;if(_[A](G,Q),ja.includes(A))if(S(A,G),A==="fase_plantilla"){const P=G,C=B(A,P);l({fields:["categoria","modo_configuracion","tipo_plantilla"],value:!0}),C.length>0&&l({fields:C,value:!1}),P==="Preventa"&&l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0})}else if(A==="modo_configuracion"){const P=G,C=r.fase_plantilla,$=B(A,P,C);l({fields:["medio_especifico","formato_salida"],value:!0}),$.length>0&&l({fields:$,value:!1}),C==="Preventa"&&l({fields:["pertenencia_medio","ubicacion_medio","responsable_impresion"],value:!0})}else if(A==="tipo_medio"){const P=G,C=r.modo_configuracion;r.fase_plantilla==="Venta"?C==="Especifico"?R[P].execute():N[P].execute():D[P].execute()}else if(A==="formato_salida")F[G].execute();else{const P=B(A,G);P.length>0&&l({fields:P,value:!1})}if(ya.includes(A)){let P="",C="";if(A==="formato_salida"){const $=r.modo_configuracion,L=G;C="tipo_medio",P=$==="Default"&&L==="Digital"?P="DDG":P="DRP"}else C=A,P=I.abbreviation;M[C](C,P)}wa.includes(A)&&W(E,z)}},Z=()=>{if(r){const E=r.fase_plantilla;if(E==="Preventa"){const z=r.modo_configuracion,Q=p.fase_plantilla||"XX";let I=null;if(z==="Default")I=p.tipo_medio||"XXX";else{const G=r.tipo_medio;["Vallas Móviles","Camiones","Brand Riders"].includes(G)?I=p.tipo_medio||"XXX":I=p.medio_especifico||"XXX"}const A=`${Q}-${I}`;d(A)}if(E==="Venta"){const z=p.fase_plantilla||"XX",Q=p.tipo_plantilla||"XXX",I=p.categoria||"XX",A=p.medio_especifico||p.tipo_medio||p.modo_configuracion||"XXX",G=p.responsable_impresion||"XX",P=p.pertenencia_medio||"X",C=p.ubicacion_medio||"X",$=`${z}-${Q}-${I}-${A}-${G}-${P}-${C}`;d($)}}};return u.useEffect(()=>{Z()},[p]),{templateFields:a,getFieldsByStep:k,dropdownFunctionsUpdateClave:M,fieldsForUpdateClave:ya,resetTemplateFormData:m,fieldsWithDisableTrigger:ja,getFieldsToDisable:B,handleOptionSelected:re,getFilteredOptions:q,dropdownFunctionsUpdateFormData:_}}const Kt=()=>{const{control:e,setValue:a}=Se.useFormContext(),n=st(l=>l.step),{getFieldsByStep:s,handleOptionSelected:o,getFilteredOptions:i}=Ht(a),{disabledFields:r}=Fe(),c=u.useMemo(()=>s(n),[n,s]),m=l=>`El campo ${l.charAt(0).toLocaleLowerCase()+l.slice(1)} es requerido`;return c.map(l=>{const d=`step${l.step}.${l.key}`,p=l.label,f=i(l.key).map(g=>({label:g.name,value:l.key==="categoria"?g.reference_id:g.id}));return t.jsx(Se.Controller,{name:d,control:e,rules:{required:{value:!r[l.key],message:m(p)},validate:g=>r[l.key]||g?!0:m(p)},render:({field:g,fieldState:{error:y}})=>t.jsx("div",{children:t.jsx(x.Dropdown,{label:p,value:g.value,onValueChange:w=>{g.onChange(w)},error:y==null?void 0:y.message,options:f,onOptionSelect:w=>{o(l,w,l.id)},disabled:r[l.key]||!1})})},l.id)})},Yr=()=>t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-y-4",children:t.jsx(Kt,{})}),Jr=()=>t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-y-4",children:t.jsx(Kt,{})}),Zr=()=>t.jsx("div",{className:"tm-flex tm-flex-col tm-gap-y-4",children:t.jsx(Kt,{})}),ei=({step:e})=>t.jsxs("div",{className:"tm-flex tm-min-h-[270px] tm-flex-col tm-gap-y-4",children:[e===1&&t.jsx(Yr,{}),e===2&&t.jsx(Jr,{}),e===3&&t.jsx(Zr,{})]}),ti=e=>{const a={step1:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria"],step2:["tipo_medio","formato_salida","medio_especifico"],step3:["responsable_impresion","pertenencia_medio","ubicacion_medio"]};return e.reduce((n,s)=>{const o=`step${s.step}`,i=a[o];return i&&i.includes(s.key)&&(n[o]||(n[o]={}),n[o][s.key]=""),n},{})},ai=e=>{const a={step1:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria"],step2:["tipo_medio","formato_salida","medio_especifico"],step3:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},n={};return Object.keys(a).forEach(s=>{n[s]={},a[s].forEach(o=>{var r;const i=(r=e[s])==null?void 0:r[o];n[s][o]=i!==void 0?i:""})}),n},si=e=>e&&e.status===400?{failureLevel:"strapi",errorMessage:"Error al procesar la solicitud",technicalDetails:e.message}:e&&e.status===401?{failureLevel:"authentication",errorMessage:"Error de autenticación",technicalDetails:`Token expirado o inválido: ${e.message}`}:e&&e.status===500?{failureLevel:"strapi",errorMessage:"Error de servidor",technicalDetails:`Error en el servidor de Strapi: ${e.message}`}:{failureLevel:"unknown",errorMessage:"Error inesperado al crear la plantilla",technicalDetails:`Error desconocido: ${e.message}`};function ni(e,a){const{clave:n,paramsTipo:s,currentTemplateForEdit:o,isEditTemplate:i,setDisableField:r,setClaveParams:c,isDuplicateTemplate:m,templateFormData:l}=Fe(),{tasks_api:d}=he(),{getFieldsByStep:p,dropdownFunctionsUpdateFormData:h,templateFields:f}=Ht(),g=()=>{var R;try{const N={},D=e(),v=ai(D),{step1:U}=v,K=[];N.clave=n,U.categoria!=""&&(N.categoria=U.categoria);for(const[J,H]of Object.entries(v))for(const[O,S]of Object.entries(H)){const B={id:null,params_tipo:{id:null}};if(S!=""){const k=s[O];if(O==="categoria"){const q=f.find(W=>W.key==="categoria"),ee=(R=q==null?void 0:q.params_plantillas)==null?void 0:R.find(W=>W.reference_id===S);B.id=ee==null?void 0:ee.id}else B.id=S;B.params_tipo.id=k,K.push(B)}}return Object.keys(K).length>0&&(N.params_plantillas=K),N}catch(N){console.log(N)}},y=async R=>{var N;try{let D=null;return i?D=await d.put(`/api/plantillas/${o.id}`,{data:R}):D=await d.post("/api/plantillas",{data:R}),D.data?be(D.data):null}catch(D){throw console.error("Error en saveTemplateToStrapi:",{error:D.message,status:(N=D.response)==null?void 0:N.status}),D}},w=async R=>{var N;try{const D=Pe.stringify({filters:{plantilla:{id:R}},populate:{graph_layout:!0}},{encodeValuesOnly:!0}),v=await d.get(`/api/plantillas/plantilla-tareas-grafico?${D}`);return v.data?be(v.data.data):null}catch(D){throw console.error("Error en getTemplateWithTasks:",{error:D.message,status:(N=D.response)==null?void 0:N.status}),D}},j=async(R,N,D)=>{var v,U,K,J,H,O,S;try{const B=await w(R),k=await w(N);if(!B||!B.tarea_plantillas)return console.warn("No se encontraron tareas para duplicar en la plantilla original"),null;const q=new Map,ee=new Map;let W=1;B.tarea_plantillas.forEach(Q=>{let I=null;Q.start?I=D:I=-(Date.now()+W++),q.set(Q.id,I)}),(U=(v=B.graph_layout)==null?void 0:v.snapshot)!=null&&U.nodes&&B.graph_layout.snapshot.nodes.forEach(Q=>{const I=`node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;ee.set(Q.id,I)});const re=B.tarea_plantillas.filter(Q=>!Q.start).map(Q=>{var A,G,P,C;return{id:q.get(Q.id),uuid:crypto.randomUUID(),reference_graph:Q.reference_graph,texto_corto:Q.texto_corto,texto_largo:Q.texto_largo||null,prioridad:Q.prioridad,nivel_dificultad:Q.nivel_dificultad,duracion:Q.duracion,start:Q.start,type:Q.type||"task",equipo:((A=Q.equipo)==null?void 0:A.id)||null,responsable:((G=Q.responsable)==null?void 0:G.id)||null,plantilla:{id:N,clave:B.clave,categoria:B.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:[],id_t_requerida:q.get((P=Q.id_t_requerida)==null?void 0:P.id)||null,ids_t_dependientes:[],tarea_padre:q.get((C=Q.tarea_padre)==null?void 0:C.id)||null,tareas:[]}});let Z=null;if(B.graph_layout){const Q=k.tarea_plantillas.find(I=>I.start===!0);Z={...B.graph_layout,id:(K=k.graph_layout)==null?void 0:K.id,snapshot:{...B.graph_layout.snapshot,edges:B.graph_layout.snapshot.edges.map(I=>{if(I.source==="start")return{...I,data:{...I.data,childId:re.find(A=>A.reference_graph===I.target).id,parentId:Q.id}};{const A=re.find(G=>G.reference_graph===I.target);return{...I,data:{...I.data,childId:A==null?void 0:A.id,parentId:(A==null?void 0:A.id_t_requerida)||(A==null?void 0:A.tarea_padre)}}}}),nodes:((H=(J=B.graph_layout.snapshot)==null?void 0:J.nodes)==null?void 0:H.map(I=>{let A={};return I.type==="start"?A={...I,data:{...I.data,tareaId:Q.id}}:A={...I,data:{tareaId:null}},A}))||[]}}}if(!Z)throw console.error("Error: duplicatedGraphLayout es null, no se puede guardar"),new Error("No se pudo crear el graph_layout para la plantilla duplicada");const E={graph_layout:Z,tasks:{created:re,updated:[],deleted:[]}},z=await d.post("/api/tareas/save-tareas-grafico",{data:E});if(z.data&&z.status===200){const Q=await w(N),I=new Map;Q.tarea_plantillas.forEach(P=>I.set(P.reference_graph,P.id));let A=Q.graph_layout;return(!((O=A==null?void 0:A.snapshot)!=null&&O.nodes)||A.snapshot.nodes.length===0)&&(console.log("Graph layout vacío, reconstruyendo desde el original..."),A=Z),(S=A==null?void 0:A.snapshot)!=null&&S.nodes&&(A.snapshot.nodes=A.snapshot.nodes.map(P=>{var T;const C={...P,position:P.position||{x:0,y:0}},$=C.id,L=I.get($);if(L)return{...C,data:{...C.data,id:L,tareaId:L}};if((T=C.data)!=null&&T.tareaId){const V=Q.tarea_plantillas.find(Y=>Y.reference_graph===$);if(V)return{...C,data:{...C.data,id:V.id,tareaId:V.id}}}return C})),await d.put(`/api/plantillas/${N}`,{data:{graph_layout:A}}),await w(N)}return null}catch(B){throw console.error("Error al duplicar las tareas de la plantilla:",B),B}},b=async()=>{var R,N;try{let D=g();const v=await y(D);if(!v)return{success:!1,message:"No se pudo guardar el flujo de trabajo en Strapi",error:"templateData es null"};const U=Pe.stringify({filters:{id:{$eq:v.id}},populate:{tarea_plantillas:{filters:{start:{$eq:!0}}}}},{encodeValuesOnly:!0}),{data:K}=await d.get(`/api/plantillas?${U}`),H=be(K.data)[0].tarea_plantillas[0].id;if(m&&(o!=null&&o.id))try{const S=await j(o.id,v.id,H);return S?{success:!0,message:"Flujo de trabajo duplicado completamente con todas sus tareas",data:S}:{success:!0,message:"Flujo de trabajo creado, pero no se pudieron duplicar las tareas",data:await w(v.id)}}catch(S){return console.error("Error al duplicar tareas:",S),{success:!0,message:"Flujo de trabajo creado, pero hubo un error al duplicar las tareas",data:await w(v.id)}}const O=await w(v.id);return O?{success:!0,message:"Flujo de trabajo creado y sincronizado completamente",data:O}:{success:!1,message:"No se pudieron obtener los datos completos del flujo de trabajo",error:"completeData es null"}}catch(D){const v=si(((N=(R=D==null?void 0:D.response)==null?void 0:R.data)==null?void 0:N.error)||D);return console.error("Error al guardar el flujo de trabajo: ",{level:v.failureLevel,message:v.errorMessage,technicalDetails:v.technicalDetails}),{success:!1,message:v.errorMessage||"Error al guardar el flujo de trabajo",error:v.technicalDetails||D.message}}},_=()=>{const R=o==null?void 0:o.params_plantillas;if(!(R!=null&&R.length))return;let N={};[1,2,3].forEach(v=>{const U=`step${v}`;N[U]={},p(v).forEach(J=>{var O;const H=R.find(S=>S.params_tipo.key===J.key);if(H){let S=null;if(J.key==="categoria"){const B=(O=J.params_plantillas)==null?void 0:O.find(k=>k.id===H.id);S=(B==null?void 0:B.reference_id)||H.id}else S=H.id;N[U][J.key]=S}})}),a(N)},M=()=>{var N;const R=o==null?void 0:o.params_plantillas;if(R!=null&&R.length)for(const D of R){const{params_tipo:{id:v,key:U},name:K,id:J}=D,H=f.find(S=>S.key===U),O=(N=H==null?void 0:H.params_plantillas)==null?void 0:N.find(S=>S.id===J);h[U]&&h[U](K,v),O&&c({field:U,value:O.abbreviation})}},F=()=>{try{const{fase_plantilla:R,modo_configuracion:N,formato_salida:D,tipo_medio:v}=l;if(R==="Venta")r({fields:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria","tipo_medio"],value:!1}),N==="Default"?(r({fields:["tipo_medio","formato_salida"],value:!1}),r({fields:["medio_especifico"],value:!0}),["Sitios Fijos","Vallas Móviles","Indoors"].includes(v)||r({fields:["formato_salida","medio_especifico"],value:!0}),D==="Digital"?(r({fields:["responsable_impresion"],value:!0}),r({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):r({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1})):(["Sitios Fijos","Indoors"].includes(v)&&r({fields:["formato_salida","medio_especifico"],value:!1}),["Vallas Móviles"].includes(v)&&(r({fields:["formato_salida"],value:!1}),r({fields:["medio_especifico"],value:!0})),["Camiones","Brand Riders"].includes(v)&&r({fields:["formato_salida","medio_especifico"],value:!0}),D==="Digital"?(r({fields:["responsable_impresion"],value:!0}),r({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):r({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1}));else if(r({fields:["modo_configuracion"],value:!1}),r({fields:["tipo_plantilla","categoria"],value:!0}),N=="Default"){const U=["formato_salida","medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"];r({fields:["tipo_medio"],value:!1}),r({fields:U,value:!0})}else["Sitios Fijos","Indoors"].includes(v)?(r({fields:["formato_salida"],value:!0}),r({fields:["medio_especifico"],value:!1})):r({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!0})}catch(R){console.error("Error al aplicar reglas de habilitar y deshabilitar campos",R)}};return u.useEffect(()=>{(i||m)&&o&&(_(),M())},[i,m,o]),u.useEffect(()=>{(i||m)&&l&&F()},[i,l,m]),{savePlantilla:b,getTemplateWithTasks:w}}const oi=()=>{const{watch:e,getValues:a}=Se.useFormContext(),{templateFormData:n,isDuplicateTemplate:s,currentTemplateForEdit:o}=Fe(),[i,r]=u.useState(!1),c=u.useRef(null),m=u.useRef(null),l=u.useRef(!1),d=e();return u.useEffect(()=>{if(!l.current&&s&&o){const h=setTimeout(()=>{c.current=a(),m.current={...n},l.current=!0,r(!1)},500);return()=>clearTimeout(h)}},[s,o,a,n]),u.useEffect(()=>{if(c.current&&m.current&&l.current){const h=a(),f=n,g=JSON.stringify(h)!==JSON.stringify(c.current),y=JSON.stringify(f)!==JSON.stringify(m.current);r(g||y)}},[d,n,a]),{hasChanges:i,resetChanges:()=>{c.current=null,m.current=null,l.current=!1,r(!1)}}},ri=({onReset:e})=>{const{hasChanges:a,resetChanges:n}=oi(),{setHasFormChanges:s}=Fe();return u.useEffect(()=>{s(a)},[a,s]),u.useEffect(()=>{e(n)},[e,n]),null},ii=({isOpen:e,onClose:a})=>{const{step:n,nextStep:s,prevStep:o,onStepChange:i}=Xr({limit:3}),r=st(A=>A.reset),{templateFields:c,resetTemplateFormData:m}=Ht(),{clave:l,resetClave:d,resetDisabledFields:p,isEditTemplate:h,setIsEditTemplate:f,refetch:g,isDuplicateTemplate:y,hasFormChanges:w,setIsDuplicateTemplate:j,setCurrentTemplateForEdit:b}=Fe(),{openTemplate:_}=Be(),[M,F]=u.useState(!1),[R,N]=u.useState(""),[D,v]=u.useState(!1),U=u.useRef(null),K=A=>{U.current=A},J=u.useMemo(()=>ti(c),[c]),H=n===1,O=n===3,S=H?"Cancelar":"Atrás",B=Se.useForm({mode:"onChange",defaultValues:J}),{trigger:k,reset:q,clearErrors:ee,getValues:W}=B,{savePlantilla:re}=ni(W,q),Z=u.useRef(!1);u.useEffect(()=>{e&&(r(),Z.current=!1)},[e,r]),u.useEffect(()=>{e&&!h&&!y&&!Z.current&&(q(J),m(),Z.current=!0)},[e,h,y,q,J,m]);const E=async()=>{if(await k()){if(n===3){if(!w&&y){N("Ya existe un proceso con éstos parámetros. Modifica al menos uno para poder duplicarlo."),v(!0);return}try{F(!0);const G=await re();if(G.success){const P=G.data;if(I(),Q(),v(!1),!h)try{await _({template:P,statusTemplate:ve.NEW})}catch(C){console.warn("La plantilla se creó exitosamente pero hubo un problema al abrirla:",C)}g()}else{const{error:P}=G;N(P),v(!0)}}catch(G){console.error("Error inesperado al guardar la plantilla:",G);return}finally{F(!1)}}s()}},z=()=>{N(""),v(!1)},Q=()=>{ee(),q(J),m(),p(),d(),z(),f(!1),j(!1),b(null),U.current&&U.current()},I=()=>{Q(),Z.current=!1,a(),console.log("cerrar modal")};return M?t.jsx(ot,{isLoading:M}):t.jsxs(Se.FormProvider,{...B,children:[t.jsx(ri,{onReset:K}),t.jsx(x.Modal,{isOpen:e,closeAtCancel:!1,onSuccess:E,cancelButtonText:S,successButtonText:O?h?"Guardar":"Crear":"Continuar",onCancel:H?I:o,onClose:I,size:"sm",iconConfig:{icon:ne.faFilePen},title:h?"Editar flujo de trabajo":"Nuevo flujo de trabajo",children:t.jsxs(x.Modal.Body,{children:[t.jsx("div",{className:"tm-flex tm-w-full tm-overflow-x-auto tm-pb-16 tm-pt-12",children:t.jsx("div",{className:"tm-flex tm-w-full",style:{justifyContent:"center",minWidth:"fit-content"},children:t.jsx(x.Stepper,{currentStep:n-1,onStepChange:A=>i(A+1),steps:[{title:"Paso 1",description:"INFORMACIÓN"},{title:"Paso 2",description:"DETALLES"},{title:"Paso 3",description:"PRODUCCIÓN"}]})})}),t.jsx("div",{className:"tm-flex tm-w-full tm-justify-center",children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-gap-0",children:[t.jsx("div",{className:"tm-bg-[#F0F0F0] tm-rounded-[100px] tm-p-2",style:{width:"fit-content",minWidth:"fit-content"},children:t.jsx("div",{className:"tm-font-bold tm-py-1 tm-p-[90px]",children:l})}),t.jsx("div",{className:"tm-bg-blue-500 tm-text-white tm-px-3 tm-py-1.5 tm-font-medium tm--mt-4",style:{borderRadius:"100px",fontSize:"10px"},children:"CLAVE"})]})}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-y-4 tm-p-16",children:[D&&t.jsx(x.Alert,{open:!0,color:"danger",message:R,className:"tm-mb-6",onClose:z}),t.jsx(ei,{step:n})]})]})})]})},li=({isOpen:e,onClose:a,replaceTemplate:n})=>t.jsx(t.Fragment,{children:t.jsx(x.Modal,{isOpen:e,closeAtCancel:!1,cancelButtonText:"Cancelar",successButtonText:"Abrir",onCancel:a,onClose:a,onSuccess:n,size:"sm",iconConfig:{icon:de.faExclamationTriangle},title:"Límite de flujos de trabajo",children:t.jsx(x.Modal.Body,{children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-overflow-auto tm-w-full tm-p-4 tm-gap-8",children:[t.jsx("div",{className:"tm-flex tm-justify-center tm-w-full",style:{minWidth:"fit-content"},children:t.jsx("div",{className:"tm-flex tm-justify-center tm-items-center tm-gap-[10px] tm-rounded-full tm-p-16",style:{backgroundColor:"#EBEEF9"},children:t.jsx(x.Icon,{name:de.faExclamationTriangle,size:"lg",color:"blue"})})}),t.jsx("div",{className:"tm-text-center tm-mt-6",children:t.jsx("h2",{className:"tm-text-[24px] tm-font-bold tm-text-brand tm-leading-tight",children:"¿Quieres continuar?"})}),t.jsx("div",{className:"tm-text-center tm-mt-2",children:t.jsx("div",{className:"tm-text-[12px] tm-font-normal tm-text-[#6B6B6B]",children:"Ya tienes 5 flujos de trabajo abiertos, si abres uno nuevo, se cerrará automáticamente el que lleva más tiempo sin usarse."})})]})})})}),ci=Ue.create(e=>({cachedTemplate:null,canCreateTemplate:!1,setCachedTemplate:a=>e({cachedTemplate:a}),clearCachedTemplate:()=>e({cachedTemplate:null}),setCanCreateTemplate:a=>{const n=!(a<5);e({canCreateTemplate:n})}})),di=({isOpen:e,onClose:a,discardChanges:n,saveAndExit:s})=>t.jsx("div",{children:t.jsx(x.Modal,{isOpen:e,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Guardar y salir",onCancel:a,onClose:a,onSuccess:s,size:"sm",iconConfig:{icon:de.faExclamationTriangle},title:"Cambios sin guardar",children:t.jsx(x.Modal.Body,{children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-overflow-auto tm-w-full tm-p-4 tm-gap-8",children:[t.jsx("div",{className:"tm-flex tm-justify-center tm-w-full",style:{minWidth:"fit-content"},children:t.jsx("div",{className:"tm-flex tm-justify-center tm-items-center tm-gap-[10px] tm-rounded-full tm-p-16",style:{backgroundColor:"#EBEEF9"},children:t.jsx(x.Icon,{name:de.faSave,size:"lg",color:"brand"})})}),t.jsx("div",{className:"tm-flex tm-flex-col tm-mx-6",children:t.jsx(x.Alert,{open:!0,variant:"outlined",color:"danger",showCloseButton:!1,message:"Tienes cambios sin guardar en este flujo de trabajo",title:"No has guardado",className:"tm-mt-8"})}),t.jsx("div",{className:"tm-text-center tm-mt-5",children:t.jsx("h2",{className:"tm-text-[24px] tm-font-bold tm-text-brand",children:"¿Qué deseas hacer antes de salir?"})}),t.jsx("div",{className:"tm-text-center tm-mt-1",children:t.jsx("div",{className:"tm-text-[12px] tm-font-normal tm-text-[#6B6B6B]",children:"Si sales ahora sin guardar se perderán los cambios actuales."})}),t.jsx("div",{className:"tm-flex tm-justify-center tm-mt-4",children:t.jsx(x.Button,{size:"xs",color:"secondary",onClick:()=>{n(),a()},children:"Descartar cambios"})})]})})})}),ys=({isOpen:e,onClose:a,publishTemplate:n})=>t.jsx(x.Modal,{isOpen:e,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Confirmar",onCancel:a,onClose:a,onSuccess:n,size:"sm",iconConfig:{icon:de.faArrowUp},title:"Publicar",children:t.jsx(x.Modal.Body,{children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-overflow-auto tm-w-full tm-p-8 tm-gap-16",children:[t.jsx("div",{className:"tm-flex tm-justify-center tm-w-full",style:{minWidth:"fit-content"},children:t.jsx(x.Icon,{name:de.faArrowUp,size:"lg",color:"blue",background:!0,padding:"lg"})}),t.jsx("div",{className:"tm-text-center",children:t.jsx("h2",{className:"tm-text-[24px] tm-font-bold tm-text-[#3658C1] tm-leading-tight",children:"¿Estás seguro de que deseas publicar este proceso?"})}),t.jsx("div",{className:"tm-text-center",children:t.jsx("div",{className:"tm-text-[12px] tm-font-normal tm-text-[#6B6B6B]",children:"Al publicar este proceso, estará disponible para su uso en los flujos correspondientes. Asegúrate de que toda la información sea correcta antes de continuar."})})]})})}),mi=()=>{const e="grid",a="create-edit",n=u.useRef(null),{isOpenModalLimit:s,setIsOpenModalLimit:o,setOpenModalCreateTemplate:i,openModalCreateTemplate:r,setOpenModalUnsavedChanges:c,openModalUnsavedChanges:m,openModalPublishTemplate:l,setOpenModalPublishTemplate:d,setCurrentTemplateForEdit:p,setIsDuplicateTemplate:h,setIsEditTemplate:f}=Fe(),{removeTemplateStates:g}=nt(),{mode:y,setMode:w,setViewMode:j,getViewMode:b}=Te(),{setCanCreateTemplate:_,canCreateTemplate:M}=ci(),F=y===e,{screens:R,get:N,delete:D,activeTemplate:v,activateTemplate:U,reorderingTemplates:K,replaceTemplate:J,saveTemplateChanges:H,publishTemplate:O,loadingPublishTemplate:S,loadingSaveChanges:B}=Be(),k=178,[q,ee]=u.useState([]),[W,re]=u.useState([]),[Z,E]=u.useState(null),[z,Q]=u.useState(!1),I=v!=null&&v.id?b(v.id):"readonly";u.useEffect(()=>{const X=()=>{if(!n.current)return;const ce=n.current.offsetWidth;let ie=0;const te=[],ue=[],fe=10,xe=n.current.querySelector("button:not([data-screen])"),pe=n.current.querySelector(".tm-mx-1");let ye=0;xe&&(ye+=xe.getBoundingClientRect().width),pe&&R.length>0&&(ye+=pe.getBoundingClientRect().width,ye+=fe);const Me=(je,ke)=>{const et=ke?54:0,Vt=(je==null?void 0:je.length)*8;return Math.max(80,Vt+40+et)},Ne=ce-k-ye;R.forEach((je,ke)=>{const pt=!!(je.isNew||je.badgeLabel),rt=Me(je.clave,pt),it=ke>0?fe:0,et=rt+it;ie+et<=Ne?(te.push(je),ie+=et):ue.push(je)}),ee(te),re(ue)},se=()=>{const ce=R.length;_(ce)};return R.length>0&&(X(),se(),window.addEventListener("resize",X)),()=>{window.removeEventListener("resize",X)}},[R,y]);const A=X=>X.estatus===ve.DIRTY||X.estatus===ve.NEW,G=async X=>{A(X)?(E(X.id),c(!0)):await D(X.id)},P=()=>d(!0),C=async()=>{await D(Z),await g(Z)},$=async()=>{await H(!1)},L=async()=>{await H()},T=()=>{var se,ce;const X=(ce=(se=v==null?void 0:v.graph_layout)==null?void 0:se.snapshot)==null?void 0:ce.nodes.length;Q(()=>X-1>=1)};u.useEffect(()=>{T()},[v,I]);const V=()=>!((v==null?void 0:v.estatus)==ve.IDLE&&z&&v.estatusFromStrapi!==Ee.PUBLISHED),Y=()=>{var se;const{nodes:X}=(se=v==null?void 0:v.graph_layout)==null?void 0:se.snapshot;return X==null?void 0:X.some(ce=>ce.type!=="start"&&(ce==null?void 0:ce.data.tarea_padre)===null&&(ce==null?void 0:ce.data.id_t_requerida)===null)},ae=()=>(v==null?void 0:v.estatus)===ve.IDLE||Y()?!0:!z,le=async()=>{await O(v.id)};return B||S?t.jsx(ot,{isLoading:B||S}):t.jsxs("div",{className:"tm-flex tm-gap-4 tm-justify-between tm-items-center tm-flex-wrap",children:[r&&t.jsx(ii,{isOpen:r,onClose:()=>i(!1)}),s&&t.jsx(li,{isOpen:s,onClose:()=>o(!1),replaceTemplate:J}),m&&t.jsx(di,{isOpen:m,onClose:()=>c(!1),discardChanges:C,saveAndExit:L}),l&&t.jsx(ys,{isOpen:l,onClose:()=>d(!1),publishTemplate:le}),t.jsxs("div",{className:"tm-flex tm-gap-2.5 tm-items-center tm-justify-between tm-flex-1 tm-flex-wrap",ref:n,children:[t.jsxs("div",{className:"tm-flex tm-gap-2.5 tm-items-center tm-justify-start tm-flex-1 tm-flex-wrap",children:[t.jsx(x.Button,{size:"xs",color:F?"primary":"secondary",onClick:()=>w(e),children:"Listado de flujos"}),R.length>0&&t.jsx(x.Separator,{vertical:!0,className:"tm-mx-1"}),R.filter(X=>q.some(se=>se.clave===X.clave)).map(X=>{const se=(v==null?void 0:v.clave)===X.clave&&y===a;return t.jsxs(x.Button,{"data-screen":X.clave,size:"xs",onClick:async()=>{await U(X),w(a,X.id)},color:se?"primary":"secondary",leftSlot:Ce.faFilePen,badgeColor:A(X)?"warning":void 0,onClickRightSlot:()=>G(X),rightSlot:Ce.faXmark,children:[X.clave," ",X.status]},X.id)})]}),W.length>0&&t.jsx(x.Popup,{absolute:!0,rightSlot:Ce.faAngleDown,label:`${W.length}+`,size:"xs",color:"secondary",children:t.jsx("div",{className:"tm-py-2 tm-gap-4",style:{minWidth:"280px"},children:t.jsx(x.List,{icon:Ce.faFilePen,items:W.map(X=>({id:X.id,label:X.clave})),className:"tm-p-8 tm-gap-4",onClick:async X=>{const se=await N(X.id);await K(se.id),await U(se),w("create-edit",se.id)}})})})]}),y===a?t.jsx("div",{className:"tm-flex tm-gap-4 tm-items-center tm-justify-end tm-flex-wrap",children:v.estatusFromStrapi!==Ee.PUBLISHED&&t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{color:"secondary",size:"xs",leftSlot:Ce.faArrowUp,disabled:V(),onClick:P,children:"Publicar"}),I=="readonly"&&t.jsx(x.Button,{size:"xs",color:"primary",leftSlot:Ce.faEdit,onClick:()=>(v==null?void 0:v.id)&&j(v.id,"edit"),children:"Editar"}),I==="edit"&&t.jsx(x.Button,{size:"xs",color:"primary",leftSlot:Ce.faSave,onClick:$,disabled:ae(),children:"Guardar"})]})}):t.jsx(x.Button,{disabled:M,tooltip:M?"Límite de 5 plantillas con cambios sin guardar. Guarda y cierra alguna para crear una nueva.":"",leftSlot:Ce.faPlus,size:"xs",color:"primary",onClick:()=>{p(null),h(!1),f(!1),i(!0)},children:"Nuevo flujo"})]})},ui=({isOpen:e,onClose:a,deleteTemplate:n})=>t.jsx(x.AlertDialog,{title:"Eliminar Borrador",iconContent:de.faBan,heading:"¿Estás seguro?",subheading:"Si eliminas este borrador, también se borrarán todas sus tareas y conexiones con otros borradores.",icon:de.faBan,label:"Escribe 'Eliminar' para continuar",confirmationText:"Eliminar",isOpen:e,onClose:a,onConfirm:n,placeholder:""}),pi=()=>{const{viewMode:e,setRefetch:a,openModalPublishTemplate:n,setOpenModalPublishTemplate:s,currentTemplateId:o,setOpenModalDeleteTemplate:i,openModalDeleteTemplate:r}=Fe(),{publishTemplate:c,deleteTemplate:m}=Be(),{debouncedSearch:l,filters:d}=rs("templates-container"),p=e==="list",[h,f]=u.useState(1),g=9,{data:y,isLoading:w,isFetching:j,refetch:b}=xs({page:h,pageSize:g,search:l,filters:d});u.useEffect(()=>{a(b)},[]),u.useEffect(()=>{f(1)},[d,l]);const{users:_}=Ze(),{getImageOBP:M}=he(),F=v=>{if(!(v!=null&&v.email))return"";const U=_==null?void 0:_[v==null?void 0:v.email];return U!=null&&U.image?M(U==null?void 0:U.image):""},R=u.useMemo(()=>{try{return!y||!_?[]:y.data.map(v=>{const U=F((v==null?void 0:v.updated_by)||(v==null?void 0:v.created_by));return{...v,updated_by:{...v.updated_by,image:U}}})}catch(v){return console.error("Error al mapear las plantillas:",v),[]}},[y,_]),N=async()=>{await c(o),await b()},D=async()=>{await m(o),await b()};return w||j?t.jsx(ot,{isLoading:w||j}):t.jsxs("div",{className:"tm-flex tm-flex-col tm-justify-between tm-gap-y-4 tm-h-full",children:[t.jsx(ys,{isOpen:n,onClose:()=>s(!1),publishTemplate:N}),t.jsx(ui,{isOpen:r,onClose:()=>i(!1),deleteTemplate:D}),t.jsx("div",{className:`tm-grid tm-gap-4 ${p?"tm-grid-cols-1":"tm-grid-cols-1 md:tm-grid-cols-2 lg:tm-grid-cols-3"}`,children:R.map(v=>t.jsx(ps,{fullWidth:p,template:v},v.id))}),t.jsx("div",{children:t.jsx(x.Pagination,{pageSize:g,pageCount:y==null?void 0:y.meta.pagination.pageCount,currentPage:h,onPageChange:v=>f(v)})})]})},js=()=>{var r,c,m,l;const e="grid",a="create-edit",{mode:n}=Te(),s=n===e,o=n===a,i=Le(d=>d.activeTemplate);return t.jsxs("div",{className:"tm-h-full tm-flex tm-flex-col tm-gap-y-6",children:[t.jsx(mi,{}),s&&t.jsx(pi,{}),o&&t.jsx(Qr,{initialNodes:((c=(r=i==null?void 0:i.graph_layout)==null?void 0:r.snapshot)==null?void 0:c.nodes)||[],initialEdges:((l=(m=i==null?void 0:i.graph_layout)==null?void 0:m.snapshot)==null?void 0:l.edges)||[]})]})},fi=()=>({header:t.jsx(mr,{}),body:t.jsx(js,{})});function gi(e){const{users:a}=uo(),{tasks_api:n,getImageOBP:s}=he(),o=u.useMemo(()=>a.data?a.data.map(c=>{const{image:m,id:l,name:d}=c,p=s(m);return{value:l,label:d,icon:p}}):[],[a.data]),i=async c=>{const m=Pe.stringify({populate:{params_plantillas:{fields:["id","abbreviation","name","active","tipomedio_nombre","reference_id"]}},sort:["order:asc"],fields:["id","step","key","label","order"]},{encodeValuesOnly:!0}),{data:l}=await c.get(`/api/params-tipos?${m}`);return be(l.data).flatMap((p,h)=>{const f={id:`group-${h+1}`,label:p.label,value:`group-${h+1}`,isGroupTitle:!0},g=p.params_plantillas.map(y=>({id:y.id,label:y.name,value:y.id,checked:!1,icon:"CheckCircleOutlined",iconColor:"blue"}));return[f,...g]})},r=me.useQuery({queryKey:["paramsPlantilla"],queryFn:()=>i(n),enabled:e==="templates-container",staleTime:1e3*60*30});return{userOptions:o,paramsPlantillasOptions:r.data||[]}}const hi={estatus:{label:"Estatus del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[{value:"draft",label:"Borrador"},{value:"published",label:"Publicada"}],keyName:"estatus"},publication_date:{label:"Fecha de publicación",placeholder:"Ingresa una fecha...",type:"date",keyName:"publication_date"},propietario:{label:"Encargado del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"propietario"},created_by:{label:"Creador del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"created_by"},updated_by:{label:"Editor del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"updated_by"},params_plantillas:{label:"Parámetro del flujo",type:"group",placeholder:"Selecciona uno o varios...",options:[],keyName:"params_plantillas"}},xi={createdAt:{label:"Fecha de creación",placeholder:"Selecciona una fecha...",type:"date",keyName:"createdAt"},integrantes_min:{label:"Mínimo de integrantes",type:"input",placeholder:"Ej: 1",keyName:"integrantes_min"},integrantes_max:{label:"Máximo de integrantes",type:"input",placeholder:"Ej: 10",keyName:"integrantes_max"}},bi={"templates-container":hi,"teams-container":xi,"kanban-general":null,"lista-campanias":null,"kanban-campania":null},yi=e=>({inputFilters:bi[e]||null}),ji=e=>{const{inputFilters:a}=yi(e),{userOptions:n,paramsPlantillasOptions:s}=gi(e);return{inputFilters:u.useMemo(()=>{if(a&&n.length>0&&s.length>0){const i=a;return[{...i.estatus},{...i.publication_date},{...i.propietario,options:n},{...i.created_by,options:n},{...i.updated_by,options:n},{...i.params_plantillas,options:s}]}return null},[e,a,n,s])}};function wi(){const{setFilters:e}=ut(),{refetch:a}=Fe();return{handleApplyFilters:s=>{let o={...s};o=Object.fromEntries(Object.entries(o).filter(([i,r])=>!(r===""||r===null||Array.isArray(r)&&r.length===0))),"publication_date"in o&&o.publication_date!==""&&(o={...o,publication_date:Tt(o.publication_date).format("YYYY-MM-DD")}),e(o,"templates-container"),a&&a()}}}const Ta="templates-container";function vi(){const{mode:e}=Te(),{inputFilters:a}=ji(Ta),{handleApplyFilters:n}=wi(),{viewMode:s,setViewMode:o}=Fe();return e!=="grid"?null:t.jsxs("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-justify-between tm-gap-2.5 md:tm-flex-nowrap",children:[t.jsx(os,{path:Ta}),t.jsxs("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-gap-x-2.5 md:tm-flex-nowrap",children:[a&&t.jsx(x.Filters,{filters:a,onApply:n}),t.jsx(x.Button,{size:"xs",color:"secondary",colorIcon:"neutral",icon:s==="list"?ne.faGrid2:ne.faList,className:"tm-min-w-fit",onClick:()=>o(s==="list"?"grid":"list")})]})]})}const Ct={id:null,uid:0,esEncargado:!1,idUser:{id:0,username:"",email:"",provider:"",confirmed:!1,blocked:!1,createdAt:"",updatedAt:"",nombre:""},miembros:[],miembro_padre:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},Gt="Project Manager",ws=({open:e,handleChange:a,children:n,title:s="¿Estás seguro?",onConfirm:o,contentLabel:i="",confirmLabel:r="Aceptar",cancelLabel:c="Regresar",isLoading:m=!1})=>t.jsx(x.Modal,{isOpen:e,onClose:()=>a(!1),onCancel:()=>a(!1),onSuccess:o,size:"xs",title:s,disableEscapeClose:!0,disableOutsideClick:!0,disableOutsideTab:!0,children:t.jsxs(x.Modal.Body,{children:[t.jsx(x.Text,{children:i}),n&&n]})}),_i=({member:e,level:a,isUpdate:n=!1,addHandler:s,updateHandler:o,removeHandler:i,updateMemberHandler:r})=>{var J,H,O;const{users:c,isLoading:m}=Ut(),{users:l,isLoading:d}=Ze(),{getImageOBP:p}=he(),[h,f]=u.useState(!1),[g,y]=u.useState(n?e:{...Ct,miembro_padre:a>1?e:null}),[w,j]=u.useState(null),[b,_]=u.useState({id:0,nombre:"",email:""}),[M,F]=u.useState(!1);u.useEffect(()=>{var S;j(l==null?void 0:l[(S=g==null?void 0:g.idUser)==null?void 0:S.email])},[g,l]),u.useEffect(()=>{e&&y({...e,miembro_padre:a>1?e.miembro_padre:null})},[e,a]);const R=u.useMemo(()=>(c||[]).map(S=>{var q,ee;const B=l==null?void 0:l[S.email??""],k=B!=null&&B.image?p(B.image):"";return{...S,label:S.name,value:S.id,subtitle:S.email??"",avatar:((ee=(q=S.name)==null?void 0:q.slice(0,2))==null?void 0:ee.toUpperCase())??"",avatarUrl:k}}),[c,l,p]),N=()=>{f(!1),_({id:0,nombre:"",email:""})},D=({id:S,name:B,email:k})=>{const q={...g,idUser:{...g.idUser,id:S,nombre:B,email:k}};y(q),o(q),_({id:S,nombre:B,email:k})},v=async()=>{if(!b.nombre&&!b.email){N();return}try{g.id&&r({user_id:b.id,miembro_id:e.id});const S={...g,idUser:{...g.idUser,id:b.id,nombre:b.nombre,email:b.email}};y(S),o(S),j(l==null?void 0:l[b.email]),N()}catch(S){x.toast.error(S instanceof Error?S.message:"Error al actualizar el colaborador")}},U=()=>{const S={...Ct,uid:new Date().getTime()+Math.floor(Math.random()*1e3),miembro_padre:e,miembros:[]};s(S)},K=()=>{i(e),F(!1)};return d||m?null:t.jsxs("div",{className:"tm-flex tm-items-baseline tm-justify-between",children:[M&&t.jsx(ws,{open:M,handleChange:F,onConfirm:K,contentLabel:"Estás eliminando el colaborador seleccionado"}),t.jsxs("div",{className:"tm-flex tm-flex-1 tm-justify-between tm-gap-y-4 tm-mb-2",children:[t.jsxs("div",{children:[t.jsx("div",{className:"tm-flex tm-items-center tm-gap-x-6 tm-mb-2",children:(J=g==null?void 0:g.idUser)!=null&&J.email&&!h?t.jsxs(t.Fragment,{children:[t.jsx(Ae,{size:"m",alt:((H=g==null?void 0:g.idUser)==null?void 0:H.nombre)??"Avatar",imageUrl:w!=null&&w.image?p(w.image):""}),t.jsx("p",{className:"tm-text-body-sm-regular tm-font-body-sm-regular tm-leading-body-sm-regular tm-tracking-body-sm",children:(O=g==null?void 0:g.idUser)==null?void 0:O.nombre})]}):t.jsx(x.Dropdown,{placeholder:"Seleccionar colaborador",options:R,valueName:"name",idName:"id",listVariant:"user",absolute:!0,closeOnClickOutside:!0,searchable:!0,searchPlaceholder:"Buscar colaborador...",onOptionSelect:S=>{D({id:S.id,name:S.name,email:S.email})}})}),t.jsx(x.Button,{onClick:U,leftSlot:ne.faPlus,size:"xxs",color:"tertiary",children:"Añadir colaborador"})]}),t.jsxs("div",{className:"tm-flex tm-gap-x-4",children:[h?t.jsxs(t.Fragment,{children:[t.jsx(x.Button,{onClick:N,icon:ne.faXmark,size:"xs",color:"secondary",tooltip:"Cancelar"}),t.jsx(x.Button,{onClick:v,icon:ze.faCheck,size:"xs",color:"primary",tooltip:"Guardar"})]}):t.jsx(x.Button,{onClick:()=>f(!0),icon:ne.faPencil,size:"xs",color:"tertiary",tooltip:"Editar"}),t.jsx(x.Button,{onClick:()=>F(!0),icon:ne.faTrash,size:"xs",color:"destructive",tooltip:"Eliminar"})]})]})]})},vs=({members:e,level:a=1,isUpdate:n=!1,setData:s})=>{const o=()=>{s(i=>({...i,miembros:[...i.miembros,{...Ct,uid:new Date().getTime()+Math.floor(Math.random()*1e3)}]}))};return t.jsxs("div",{children:[(e==null?void 0:e.length)===0&&a===1&&t.jsx("div",{className:"tm-flex tm-justify-end",children:t.jsx(x.Button,{size:"xxs",color:"tertiary",leftSlot:ze.faPlus,onClick:o,children:" Agregar miembro del equipo "})}),(e==null?void 0:e.length)>0&&(e==null?void 0:e.map(i=>t.jsx(Ti,{isUpdate:n,member:i,level:a,setData:s},i.uid)))]})},Ti=({member:e,level:a,isUpdate:n=!1,setData:s})=>{const o=l=>{s(d=>{if(!l.miembro_padre)return{...d,miembros:[...d.miembros,l]};const p=h=>h==null?void 0:h.map(f=>f.uid===l.miembro_padre.uid?{...f,miembros:[...f.miembros||[],l]}:f.miembros&&f.miembros.length>0?{...f,miembros:p(f.miembros)}:f);return{...d,miembros:p(d.miembros)}})},i=l=>{s(d=>{const p=h=>h.map(f=>f.uid===l.uid?(f.miembros&&f.miembros.length>0&&f.miembros.forEach(g=>{g.miembro_padre=l}),{...l,miembros:f.miembros||[]}):f.miembros&&f.miembros.length>0?{...f,miembros:p(f.miembros)}:f);return{...d,miembros:p(d.miembros)}})},r=l=>{var p;const d=[];return l.id&&d.push(l.id),(p=l.miembros)!=null&&p.length&&l.miembros.forEach(h=>{d.push(...r(h))}),d},c=l=>{s(d=>{const p=r(l),h=g=>g.filter(y=>y.uid!==l.uid).map(y=>({...y,miembros:y.miembros?h(y.miembros):[]})),f=d.miembros_actualizar.filter(g=>!p.includes(g.miembro_id));return{...d,miembros:h(d.miembros),miembros_eliminar:[...d.miembros_eliminar,...p],miembros_actualizar:f}})},m=l=>{s(d=>d.miembros_actualizar.some(h=>h.miembro_id===l.miembro_id)?d:{...d,miembros_actualizar:[...d.miembros_actualizar,l]})};return t.jsxs("div",{"data-id":e.uid,style:{paddingLeft:a===1?0:"30px",marginTop:a===1?"15px":"0px",paddingBottom:"5px"},children:[t.jsx(_i,{isUpdate:n,level:a,member:e,addHandler:o,updateHandler:i,removeHandler:c,updateMemberHandler:m}),Array.isArray(e.miembros)&&e.miembros.length>0&&t.jsx(vs,{isUpdate:n,members:e.miembros,level:a+1,setData:s})]},e.uid)},Ci=(e=7)=>{const a=(s,o)=>s>=o?{populate:"*"}:{miembro_padre:{fields:["id"]},idUser:{populate:"*"},miembros:{populate:a(s+1,o),filters:{idUser:{blocked:!1}}}};return{miembros:{populate:a(0,e),filters:{idUser:{blocked:!1}}}}},Ni=()=>"#"+Math.floor(Math.random()*16777215).toString(16),Si=({search:e,filters:a})=>{const n={};return e!=null&&e.trim()&&(n.nombre={$containsi:e.trim()}),a!=null&&a.createdAt&&(n.createdAt={$eq:a.createdAt}),n},Ei=({items:e})=>{if(!e)return{members:[],allMembers:[]};const a={};for(const r of e)a[r.uid]=r;const n=[],s=new Set,o=r=>{const c={...r};if(c.id&&(c.uid=c.id),c.uid&&!s.has(c.uid)&&(n.push(c),s.add(c.uid)),!c.miembros)return c;const m=c.miembros.map(l=>{const d={...l};d.id&&(d.uid=d.id);const p=a[d.uid];return o(p||d)}).filter(Boolean);return{...c,miembros:m}};return{members:e.filter(r=>r.miembro_padre===null).map(o),allMembers:n}},Pi=({items:e})=>e?e.map(a=>{const n=Ei({items:a.miembros});return{...a,integrantes:n.allMembers.length,miembros:n.members,miembros_planos:n.allMembers,miembros_eliminar:[],miembros_actualizar:[]}}):[],Ai=async({tasks_api:e,page:a=1,pageSize:n=10,search:s="",filters:o={}})=>{const i=Pe.stringify({filters:Si({search:s,filters:o}),populate:Ci(),sort:["createdAt:asc"],pagination:{page:a,pageSize:n}},{encodeValuesOnly:!0}),r=await e.get(`/api/equipos?${i}`);return r.data?{data:be(r.data.data),meta:r.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:n,pageCount:0,total:0}}}},Ii=({page:e=1,pageSize:a=10,search:n="",filters:s={}})=>{const{tasks_api:o}=he();return me.useQuery({queryKey:["teams",e,a,n,s],queryFn:()=>Ai({tasks_api:o,page:e,pageSize:a,search:n,filters:s}),staleTime:1e3*60*60*24,placeholderData:me.keepPreviousData,select:i=>({data:Pi({items:(i==null?void 0:i.data)||[]}),meta:i==null?void 0:i.meta})})},Nt=e=>({...e,miembro_padre:e.miembro_padre?{id:e.miembro_padre.id,uid:e.miembro_padre.uid}:null,idUser:e.idUser?{id:e.idUser.id,nombre:e.idUser.nombre,email:e.idUser.email,image:e.idUser.image}:null,miembros:e.miembros?e.miembros.map(Nt):[]}),_s=()=>{const{tasks_api:e}=he(),a=me.useQueryClient(),n=async h=>{const f={...h,id:void 0,miembros:h.miembros.map(Nt)};return(await e.post("/api/registrar-equipo-miembros",{data:f})).data},s=async h=>(await e.delete(`/api/equipos/${h}`)).data,o=async(h,f)=>{const g={...f,id:void 0,miembros:f.miembros.map(Nt)};return(await e.patch(`/api/actualizar-equipo-miembros/${h}`,{data:g})).data},i=async(h,f,g)=>{const y=await e.put(`/api/miembros/${h}`,{data:{[f]:g}});if(!y.data)throw new Error("Error al actualizar el miembro");return y.data},{mutateAsync:r,isPending:c}=me.useMutation({mutationFn:s,onSuccess:()=>{a.invalidateQueries({queryKey:["teams"]})},onError:h=>{throw console.error("Failed to delete the team.",h),h}}),{mutateAsync:m}=me.useMutation({mutationFn:n,onSuccess:()=>{a.invalidateQueries({queryKey:["teams"]})},onError:h=>{throw console.error("Failed to update the team.",h),h},onMutate:async()=>{await a.cancelQueries({queryKey:["teams"]})}}),{mutateAsync:l}=me.useMutation({mutationFn:h=>o(h.teamId,h.data),onSuccess:()=>{a.invalidateQueries({queryKey:["teams"]})},onError:h=>{throw console.error("Failed to update the team.",h),h},onMutate:async()=>{await a.cancelQueries({queryKey:["teams"]})}}),{mutateAsync:d}=me.useMutation({mutationFn:h=>i(h.memberId,h.field,h.value),onError:h=>{throw console.error("Failed to update the member.",h),new Error("Error al actualizar el miembro")}});return{addTeamHandler:m,deleteTeamHandler:r,updateTeamHandler:l,updateMemberHandler:d,invalidateTeams:()=>{a.invalidateQueries({queryKey:["teams"]})},isLoadingDeleteTeam:c}},Di=(e,a,n)=>{const s=u.useCallback(o=>{e.current&&!e.current.contains(o.target)&&a(!1)},[e,a]);u.useEffect(()=>(n&&document.addEventListener("mousedown",s),()=>{document.removeEventListener("mousedown",s)}),[s,n])},Fi=({color:e,onChange:a})=>t.jsxs(t.Fragment,{children:[t.jsx("style",{children:`
|
|
11
11
|
.react-pick-color div button {
|
|
12
12
|
border-radius: 50% !important;
|
|
13
13
|
width: 20px;
|
|
@@ -24,4 +24,4 @@
|
|
|
24
24
|
.react-pick-color div label > span {
|
|
25
25
|
display: none !important;
|
|
26
26
|
}
|
|
27
|
-
`}),t.jsx("div",{className:"react-pick-color tw-overflow-hidden tw-rounded-lg tw-shadow-lg",children:t.jsx(ks.ColorPicker,{color:e,theme:{inputBackground:"#FFF"},combinations:["monochromatic"],onChange:n=>a(n)})})]});function Di({color:e,setColor:a,label:n="Elige el color",className:s=""}){const[o,i]=p.useState(!1),r=p.useRef(null);return Ai(r,i,o),t.jsxs("div",{className:"tw-relative tw-w-full",children:[t.jsx("button",{onClick:c=>{c.stopPropagation(),i(!o)},style:{backgroundColor:e},className:`ui-h-control-xs ui-w-full ui-rounded-control-sm ui-border-[1px] ui-border-default ui-px-8 ui-text-body-sm-bold ui-text-primary ui-text-left ui-text-white ${s}`,children:n}),o&&t.jsx("div",{ref:r,className:"tw-absolute tw-z-50 tw-mt-2",children:t.jsx(Ii,{color:e,onChange:c=>a(c.hex)})})]})}const vt="Ha ocurrido un error inesperado. Por favor, intente nuevamente.",Fi={"This field is required":"El campo {field} es requerido","must be defined":"El campo {field} es requerido","This attribute must be unique":"El campo {field} debe ser único","must be a string":"El campo {field} debe ser texto","must be a number":"El campo {field} debe ser un número","must be a boolean":"El campo {field} debe ser verdadero o falso","must be an array":"El campo {field} debe ser una lista","must be a valid email":"El campo {field} debe ser un correo electrónico válido","must be a valid date":"El campo {field} debe ser una fecha válida","must be a valid URL":"El campo {field} debe ser una URL válida","must be at least X characters long":"El campo {field} debe tener al menos {min} caracteres","must be less than or equal to X characters long":"El campo {field} debe tener máximo {max} caracteres","This value is too long":"El campo {field} excede el máximo de caracteres","This value is too short":"El campo {field} no cumple con el mínimo de caracteres","must be greater than or equal to X":"El campo {field} debe ser mayor o igual a {min}","must be less than or equal to X":"El campo {field} debe ser menor o igual a {max}","must be greater than X":"El campo {field} debe ser mayor a {min}","must be less than X":"El campo {field} debe ser menor a {max}","must be between X and Y":"El campo {field} debe estar entre {min} y {max}","must be an existing record":"El registro relacionado en {field} no existe","User not found":"El usuario no fue encontrado","Member not found":"El miembro no fue encontrado"},_s=()=>({handleApiError:a=>{var n,s,o,i,r;if(a instanceof Xe.AxiosError&&((n=a.response)==null?void 0:n.status)===400){const c=a.response.data;if(((o=(s=c.details)==null?void 0:s.errors)==null?void 0:o.length)>0){const u=c.details.errors[0];let l=Fi[u.message]||vt;return l=l.replace("{field}",u.path.join(".")),((i=u.params)==null?void 0:i.min)!==void 0&&(l=l.replace("{min}",u.params.min.toString())),((r=u.params)==null?void 0:r.max)!==void 0&&(l=l.replace("{max}",u.params.max.toString())),l}return c.message||vt}return vt}});function Ns({open:e,handleChange:a,team:n}){const{addTeamHandler:s,updateTeamHandler:o}=vs(),{handleApiError:i}=_s(),[r,c]=p.useState(""),[u,l]=p.useState(n||{id:0,nombre:"",color:Ni(),miembros:[],miembros_planos:[],integrantes:0,miembros_eliminar:[],miembros_actualizar:[]}),d=u.id>0,m=async()=>{if(u.nombre.length===0){c("El nombre del equipo es requerido");return}if(u.miembros.length===0){c("El equipo debe tener al menos un miembro");return}const g=async()=>d?await o({data:u,teamId:u.id}):await s(u);try{await g(),c(""),a(!1);const f=d?"Equipo actualizado correctamente":"Equipo creado correctamente";x.toast.success(f)}catch(f){c(i(f))}};return t.jsx(x.Modal,{onCancel:()=>a(!1),onSuccess:m,title:"Información del equipo",icon:Re.faUser,showCloseButton:!0,showCancelButton:!0,showSuccessButton:!0,closeAtSuccess:!0,closeAtCancel:!0,isOpen:e,onClose:()=>a(!1),size:"lg",children:t.jsxs(x.Modal.Body,{children:[t.jsxs("div",{className:"ui-flex ui-flex-col ui-gap-y-8",children:[t.jsxs("div",{className:"ui-flex ui-w-full ui-items-center ui-gap-8 tw-flex-wrap",children:[t.jsx(or,{value:u.nombre,onChange:g=>l({...u,nombre:g})}),t.jsxs("div",{className:"ui-flex ui-flex-1 ui-items-center ui-gap-x-8",children:[t.jsx("label",{className:"ui-text-body-sm-bold ui-text-primary ui-flex-1 ui-min-w-fit",children:"Color del equipo"}),t.jsx(Di,{color:u.color,setColor:g=>l({...u,color:g})})]})]}),r&&t.jsx("p",{className:"tw-mt-4 tw-text-sm tw-text-danger-pastel",children:r})]}),t.jsxs("div",{className:"ui-mt-8",children:[t.jsx(nr,{title:"Miembros del equipo",icon:Re.faUsers}),t.jsx(js,{members:u.miembros,setData:l,isUpdate:d})]})]})})}const Oe=384,Mi=80,ki=180,Tt=20,Oi=2,Cs=4,St=.8;function Li({data:e}){const{getImageOBP:a}=ge();return t.jsxs("div",{className:"tw-w-96 tw-rounded-md tw-border-[0.5px] tw-border-silver-silver_regular tw-bg-white tw-px-4 tw-py-2 tw-shadow-xl",children:[t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-4",children:[t.jsx("div",{className:"tw-flex tw-items-center tw-justify-center tw-rounded-full tw-bg-gray-100",children:t.jsx(Ae,{size:"xxl",alt:"@shadcn",imageUrl:e!=null&&e.image?a(e==null?void 0:e.image):void 0})}),t.jsxs("div",{className:"tw-text-black-black_dark",children:[t.jsx("div",{className:"tw-text-lg tw-font-bold",children:e.name}),t.jsx("div",{className:"",children:e.job||"Puesto no asignado"})]})]}),t.jsx(oe.Handle,{type:"target",position:oe.Position.Top,className:"tw-bg-transparent",isConnectable:!1}),t.jsx(oe.Handle,{type:"source",position:oe.Position.Bottom,className:"tw-w-16 tw-border-none tw-bg-transparent",isConnectable:!1})]})}const Bi={custom:Li},qi={style:{stroke:"#6366f1",strokeWidth:2}},Ts=(e,a=0)=>e?e.map(n=>{const s=n.miembros?Ts(n.miembros,a+1):[];return{width:Oe,height:Mi,children:s,x:0,y:a*ki,totalWidth:0,depth:a}}):[],Ss=e=>{if(e.children.length===0)return e.totalWidth=Oe,Oe;const a=e.children.reduce((o,i)=>o+Ss(i),0),n=e.children.length>Cs?St:1,s=(e.children.length-1)*Tt*n;return e.totalWidth=Math.max(Oe,a+s),e.totalWidth},Es=(e,a=0)=>{let n=a;return e.forEach(s=>{s.totalWidth===0&&Ss(s);const o=s.children.length>Oi,i=s.children.length>Cs;if(s.children.length>0){if(Es(s.children,n),i){const m=(s.totalWidth-Oe)/(s.children.length-1)*St;s.children.forEach((g,f)=>{g.x=n+f*m})}else if(o){const m=(s.totalWidth-Oe)/(s.children.length-1);s.children.forEach((g,f)=>{g.x=n+f*m})}const c=s.children[0].x,u=s.children[s.children.length-1].x+Oe,l=i?Oe*.1:0;s.x=(c+u-Oe)/2+l}else s.x=n;const r=i?St:1;n=Math.max(n+Oe+Tt*r,s.x+Oe+Tt*r)}),n},Ps=(e,a,n,s)=>{const o=[],i=[];return e.forEach((r,c)=>{var d,m,g,f,w,b;const u=a[c],l=u.id.toString();if(o.push({id:l,type:"custom",data:{name:(d=u.idUser)==null?void 0:d.nombre,image:(g=n==null?void 0:n[(m=u.idUser)==null?void 0:m.email])==null?void 0:g.image,job:((b=(w=n==null?void 0:n[(f=u.idUser)==null?void 0:f.email])==null?void 0:w.role)==null?void 0:b.name)||""},position:{x:r.x,y:r.y}}),s&&i.push({id:`e-${s}-${l}`,source:s,target:l,style:{stroke:"#6366f1",strokeWidth:2}}),u.miembros&&u.miembros.length>0){const j=Ps(r.children,u.miembros,n,l);o.push(...j.nodes),i.push(...j.edges)}}),{nodes:o,edges:i}};function Ri({members:e}){const[a,n]=p.useState([]),[s,o]=p.useState([]),{users:i,isLoading:r}=Je();return p.useEffect(()=>{if(e&&!r){const c=Ts(e);Es(c);const{nodes:u,edges:l}=Ps(c,e,i);n(u),o(l)}},[e,i,r]),r?null:t.jsx(oe.ReactFlow,{nodeTypes:Bi,nodes:a,edges:s,draggable:!1,fitView:!0,defaultViewport:{x:0,y:0,zoom:1},minZoom:.5,maxZoom:2,defaultEdgeOptions:qi})}function zi({open:e,handleChange:a,members:n}){return t.jsx(x.Modal,{showCancelButton:!1,showSuccessButton:!1,hideFooter:!0,isOpen:e,onClose:()=>a(!1),size:"xl",title:"Organigrama de equipo",children:t.jsx("div",{className:"tw-mx-auto tw-bg-white",style:{width:"100%",height:"600px"},children:t.jsx(oe.ReactFlowProvider,{children:t.jsx(Ri,{members:n})})})})}function As(){return t.jsx("div",{className:"tw-flex tw-animate-pulse tw-items-center tw-gap-x-2",children:Array.from({length:3},(e,a)=>t.jsx("div",{className:"tw-h-8 tw-w-8 tw-rounded-full tw-bg-gray-200"},a))})}function $i(){return t.jsx("div",{className:"tw-h-52 tw-w-full tw-animate-pulse tw-place-self-center tw-rounded-md tw-border tw-border-gray-100 tw-shadow-lg",children:t.jsxs("div",{className:"flex tw-h-full tw-w-full",children:[t.jsx("div",{className:"tw-h-full tw-rounded-bl-xl tw-rounded-tl-xl tw-border-l-[.6rem] tw-bg-gray-200"}),t.jsxs("div",{className:"flex flex-1 tw-p-6",children:[t.jsxs("div",{className:"flex-1 flex flex-col tw-h-full tw-justify-between",children:[t.jsx("div",{className:"tw-h-6 tw-w-32 tw-rounded tw-bg-gray-200"}),t.jsxs("div",{className:"flex tw-items-center tw-gap-x-6",children:[t.jsx("div",{className:"tw-h-5 tw-w-24 tw-rounded tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-5 tw-w-8 tw-rounded tw-bg-gray-200"})]}),t.jsx(As,{})]}),t.jsxs("div",{className:"tw-flex tw-flex-col tw-justify-between",children:[t.jsx("div",{className:"tw-h-6 tw-w-6 tw-rounded tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-6 tw-w-6 tw-rounded tw-bg-gray-200"}),t.jsx("div",{className:"tw-h-6 tw-w-6 tw-rounded tw-bg-gray-200"})]})]})]})})}function Ui({length:e}){const n=e?e>12?12:e:12;return t.jsx("div",{className:"tw-grid tw-h-full tw-w-full tw-grid-cols-1 tw-grid-rows-4 tw-items-baseline tw-gap-x-8 tw-gap-y-8 tw-overflow-y-auto md:tw-grid-cols-2 lg:tw-grid-cols-3 lg:tw-gap-x-32 xl:tw-grid-cols-4",children:Array.from({length:n},(s,o)=>t.jsx($i,{},o))})}function Hi({members:e}){const{getImageOBP:a}=ge(),{users:n,isLoading:s}=Je();if(s)return t.jsx(As,{});const o=e.filter(i=>{var r,c;return(c=n[(r=i.idUser)==null?void 0:r.email])==null?void 0:c.image}).slice(0,3);return t.jsx("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:t.jsx(x.Avatar,{maxVisible:2,stroke:!0,stack:o.map(i=>{var c;const r=n[(c=i.idUser)==null?void 0:c.email];return{src:a(r.image),name:r.name}}),size:"sm"})})}function Ki({team:e}){const[a,n]=p.useState(!1),[s,o]=p.useState(!1),{user:i}=Ne(),[r,c]=p.useState(!1),{handleApiError:u}=_s(),{deleteTeamHandler:l,isLoadingDeleteTeam:d}=vs(),m=async()=>{try{await l(e.id),x.toast.success("Equipo eliminado correctamente")}catch(g){x.toast.error(u(g))}};return t.jsxs(x.Card,{children:[a&&t.jsx(Ns,{handleChange:n,open:a,team:e}),r&&t.jsx(ys,{isLoading:d,open:r,handleChange:c,onConfirm:m,contentLabel:"Estás eliminando el equipo seleccionado"}),s&&t.jsx(zi,{handleChange:o,open:s,members:e.miembros}),t.jsxs(x.Card.Header,{className:"ui-flex ui-items-center justify-between",children:[t.jsx("div",{className:"ui-flex ui-flex-col ui-justify-start ui-items-start ui-gap-y-2",children:t.jsxs("div",{className:"ui-flex ui-items-center ui-gap-x-8",children:[t.jsx(x.Badge,{size:"dot",customColor:e.color,theme:"solid"}),t.jsx(x.Icon,{name:Re.faPeopleGroup,colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotonePrimary:.5,size:"md"}),t.jsx("h1",{className:"ui-text-base ui-py-0.5 ui-font-body-sm-bold ui-text-body-sm-bold ui-leading-none ui-text-primary",children:e.nombre})]})}),t.jsx("div",{children:(i==null?void 0:i.role)==bs&&t.jsx(x.Popup,{size:"xs",color:"secondary",pill:"pill",icon:ne.faEllipsis,stopPropagationList:!0,children:t.jsxs(x.List,{className:"ui-gap-4",padding:"sm",children:[t.jsx(x.ListItem,{icon:ne.faPencil,onClick:()=>n(!0),children:"Editar"}),t.jsx(x.ListItem,{icon:ne.faEye,onClick:()=>o(!0),children:"Ver organigrama"}),t.jsx(x.ListItem,{color:"red",icon:ne.faTrash,onClick:()=>c(!0),children:"Eliminar"})]})})})]}),t.jsx(x.Card.Separator,{}),t.jsxs(x.Card.Body,{children:[t.jsx(Hi,{members:e.miembros_planos}),t.jsxs("div",{className:"ui-flex ui-items-center ui-gap-4 ui-mt-2",children:[t.jsx("p",{className:"ui-text-icon-all-colors-blue ui-text-xs tw-text-center tw-leading-none tw-font-semibold",children:e.integrantes||0}),t.jsxs("p",{className:"ui-text-body-xs-regular ui-text-tertiary ui-font-body-xs-normal",children:["Integrante",e.integrantes>1?"s":""]})]})]})]})}function Gi({teams:e}){return t.jsx("div",{className:"tw-grid tw-w-full tw-grid-cols-1 tw-items-baseline tw-gap-x-8 tw-gap-y-8 md:tw-grid-cols-2 lg:tw-grid-cols-3 lg:tw-gap-x-8 xl:tw-grid-cols-4",children:e==null?void 0:e.map(a=>t.jsx(Ki,{team:a},a.id))})}const Vi="teams-container";function Wi(){return t.jsx("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-justify-between tw-gap-2.5 md:tw-flex-nowrap",children:t.jsx(ss,{path:Vi})})}function Is(){var h,_,M,F,q;const[e,a]=p.useState(!1),[n,s]=p.useState(1),[o,i]=p.useState(10),{user:r}=Ne(),{debouncedSearch:c,filters:u}=ns("teams-container"),l=Array.isArray(u)?u:[];p.useEffect(()=>{s(1)},[c,u]);const{data:d,isLoading:m}=Pi({page:n,pageSize:o,search:c,filters:{nombre:"",createdAt:(h=l.find(T=>T.keyName==="createdAt"))==null?void 0:h.value,integrantes_min:(_=l.find(T=>T.keyName==="integrantes_min"))==null?void 0:_.value,integrantes_max:(M=l.find(T=>T.keyName==="integrantes_max"))==null?void 0:M.value}}),g=(d==null?void 0:d.data)||[],f=d==null?void 0:d.meta,w=((F=f==null?void 0:f.pagination)==null?void 0:F.pageCount)||0,b=((q=f==null?void 0:f.pagination)==null?void 0:q.total)||0,j=T=>{s(T)},y=T=>{i(T),s(1)};return t.jsxs("div",{className:"tw-grid tw-h-full tw-grid-rows-[auto,1fr] tw-gap-y-8",children:[e&&t.jsx(Ns,{handleChange:a,open:e}),(r==null?void 0:r.role)===bs&&t.jsx("div",{className:"tw-flex tw-items-center tw-justify-end",children:t.jsx(x.Button,{size:"xs",color:"primary",leftSlot:ne.faPlus,onClick:()=>a(!0),children:" Nuevo equipo "})}),t.jsx("div",{className:"custom-scrollbar",style:{scrollbarGutter:"stable",paddingRight:"4px"},children:g.length===0&&!m?t.jsx("div",{className:"flex tw-h-full tw-items-center tw-justify-center",children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-center tw-gap-y-6",children:[t.jsx("p",{className:"tw-text-3xl tw-font-bold",children:c?"No se encontraron equipos con ese nombre":"¡Parece que aún no has creado un equipo!"}),!c&&t.jsx(x.Button,{color:"primary",onClick:()=>a(!0),children:"¡Empieza ahora!"})]})}):m?t.jsx(Ui,{}):t.jsx("div",{className:`tw-pb-16 ${m?"tw-opacity-0 tw-transition tw-duration-300":"tw-opacity-100 tw-transition tw-duration-300"}`,children:t.jsx(Gi,{teams:g})})}),w>0&&t.jsx(x.Pagination,{currentPage:n,pageCount:w,pageSize:o,total:b,onPageChange:j,handlePageSize:y,showVisiblePages:!0,showPagesSelector:!0})]})}const Qi=()=>({header:t.jsx(el,{}),body:t.jsx(Is,{})}),Xi={"templates-container":yi,"teams-container":Wi};function Yi({path:e}){const a=e?Xi[e]:null;return a?t.jsx(a,{}):null}function Ji({path:e}){return e==="templates-container"?pi():e==="teams-container"?Qi():{header:null,body:null}}const Zi=({startPath:e})=>{const{path:a,setPath:n}=Fe(),{setCurrentPath:s}=ut();p.useEffect(()=>{n(e),s(e)},[e,n,s]);const{header:o,body:i}=Ji({path:a});return t.jsxs(x.Card,{fullWidth:!0,className:"tw-h-full",children:[t.jsxs(x.Card.Header,{className:"tw-flex tw-flex-wrap tw-items-center tw-gap-4",children:[o,t.jsx(Yi,{path:a})]}),t.jsx(x.Card.Separator,{}),t.jsx(x.Card.Body,{fullHeight:!0,className:"tw-flex tw-flex-1 tw-flex-col tw-gap-y-4",children:i})]})},el=()=>t.jsx(as,{title:"Equipos"}),tl=({path:e,tab:a,setPath:n,project:s,setProject:o})=>{const i={"kanban-general":{kanban:t.jsx(Yo,{})},"teams-container":{teams:t.jsx(Is,{})},"lista-campanias":{lista:t.jsx(Rn,{setPath:n,setProject:o}),gantt:t.jsx("div",{children:"gantt-campanias"})},"kanban-campania":{kanban:t.jsx(Uo,{}),lista:t.jsx(sr,{}),gantt:t.jsx("div",{children:"kanban-campania-gantt"})},"templates-container":{templates:t.jsx(xs,{})}};return e==="kanban-campania"?t.jsx(Xn,{project:s==null?void 0:s.id,children:i[e][a]}):i[e][a]},al=({label:e,active:a,onClick:n,disabled:s})=>s?t.jsx(Ie,{position:"bottom",trigger:t.jsx("button",{type:"button",className:"tw-cursor-help tw-text-xl tw-font-semibold tw-text-texts-placeholder",children:e}),children:t.jsx("div",{className:"tw-px-4 tw-py-2",children:t.jsx("p",{className:"tw-text-lg tw-font-semibold tw-text-texts-placeholder",children:"Espéralo muy pronto..."})})}):t.jsx("button",{type:"button",disabled:s,onClick:n,className:`${a?"tw-border-b-2 tw-border-texts-enfasis tw-text-blue-600 tw-text-texts-enfasis":""} tw-text-xl tw-font-semibold ${s?"tw-cursor-not-allowed tw-text-lg tw-text-texts-placeholder":"tw-text-texts-subtext"}`,children:e}),sl=({tabs:e,renderItem:a,initialTab:n})=>{const[s,o]=p.useState(n??e[0].toLowerCase());p.useEffect(()=>{n&&o(n)},[n]);const i=r=>{o(r),a(r)};return t.jsx("div",{className:"tw-flex",children:e.map((r,c)=>t.jsx("div",{className:`${c===0?"tw-border-l-2":""} tw-border-r-2 tw-border-gray-200 tw-px-m`,children:t.jsx(al,{onClick:()=>i(r.toLowerCase()),label:r,active:r.toLowerCase()===s,disabled:["gantt"].includes(r.toLowerCase())},c)}))})};function nl(){const{toast:e}=Ot();if(!e.message)return null;const a=e.type==="success";return t.jsx("div",{className:`tw-bg-black tw-fixed tw-right-10 tw-top-[10%] tw-z-[200] tw-h-[30px] tw-w-[300px] tw-rounded-md tw-text-lg tw-shadow-md ${a?"tw-bg-success-medium":"tw-bg-danger-medium"} tw-flex tw-items-center`,children:t.jsxs("div",{className:"relative tw-flex tw-h-full tw-w-full tw-items-center",children:[t.jsx("div",{className:`tw-h-full tw-w-[5px] ${a?"tw-bg-success-dark":"tw-bg-danger-regular"} tw-absolute tw-left-0 tw-rounded-full`}),t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2 tw-pl-4",children:[t.jsx(x.Icon,{name:a?de.faCircleCheck:de.faCircleXmark,size:"sm",style:{color:a?"#368156":"#DC2626"},color:"current"}),t.jsx("p",{className:`${a?"tw-text-success-dark":"tw-text-danger-dark"} tw-text-xl tw-font-semibold`,children:e.message})]})]})})}const _a="tasksProject",ol=({path:e})=>{const a=()=>{const n=ue.useQueryClient(),{selectPath:s,updateFilters:o,applyFilters:i,filters:r,fields:c}=De(),[u,l]=p.useState("kanban"),[d,m]=p.useState(e),[g,f]=p.useState({id:1704,project:"Kanban de Campania"}),[w,b]=p.useState([{path:"lista-campanias",search:(r==null?void 0:r.search)??""},{path:"kanban-campania",search:(r==null?void 0:r.taskName)??""},{path:"kanban-general",search:(r==null?void 0:r.taskName)??""},{path:"teams-container",search:(r==null?void 0:r.taskName)??""},{path:"templates-container",search:(r==null?void 0:r.taskName)??""}]),[j,y]=p.useState();p.useEffect(()=>{var v;l(d==="lista-campanias"?"lista":d==="kanban-campania"?"kanban":d==="teams-container"?"teams":d==="templates-container"?"templates":"kanban"),s(d),y(((v=w.find(U=>U.path===d))==null?void 0:v.search)??"")},[e,d]),p.useEffect(()=>{var v;((v=q())==null?void 0:v.trim())===""&&o({name:d==="lista-campanias"||d==="teams-container"||d==="templates-container"?"search":"taskName",value:null}),i()},[w]);const h=v=>({"kanban-general":"Kanban General","lista-campanias":"Campanias","teams-container":"Equipos","kanban-campania":`Kanban de ${g.project}`,"templates-container":"Flujos de trabajo"})[v],_=v=>{m(v)},M=["lista-campanias","kanban-campania"],F={"lista-campanias":["lista","gantt"],"kanban-campania":["kanban","lista","gantt"],"teams-container":["teams"],"templates-container":["templates"]},q=()=>{var v;return((v=w.find(U=>U.path===d))==null?void 0:v.search)??""},T=()=>{d==="kanban-general"?Ro(n):d==="kanban-campania"&&(n.invalidateQueries({queryKey:[_a]}),n.refetchQueries({queryKey:[_a]}))},D=v=>{b(U=>U.map(K=>K.path===d?{...K,search:v}:K))};return p.useEffect(()=>{const v=setTimeout(()=>{o({name:d==="lista-campanias"||d==="teams-container"||d==="templates-container"?"search":"taskName",value:j==null?void 0:j.trim()}),D(j)},500);return()=>{clearTimeout(v)}},[j]),t.jsxs("div",{className:"tw-relative tw-flex tw-h-full tw-min-h-[100%] tw-w-full tw-flex-col tw-gap-m tw-overflow-hidden tw-rounded-lg tw-border tw-border-gray-200 tw-bg-bg-card tw-p-m",children:[t.jsxs("div",{className:"tw-flex tw-w-full tw-flex-wrap tw-items-end tw-justify-between tw-gap-l tw-border-b tw-border-gray-200 tw-pb-m",children:[t.jsxs("div",{className:"tw-flex tw-gap-xl",children:[d==="kanban-campania"&&t.jsx("button",{onClick:()=>_("lista-campanias"),className:"tw-text-primary hover:tw-text-primary/80 tw-flex tw-items-center tw-transition-colors",children:t.jsx(x.Icon,{name:ne.faArrowLeft,size:"xs",style:{color:"#4464C3"},color:"current",className:"tw-shrink-0"})}),t.jsx("h2",{className:"tw-font-sans tw-text-[1.6rem] tw-font-semibold tw-text-texts ",children:h(d)}),M.includes(d)&&t.jsx(sl,{tabs:F[d],renderItem:v=>{l(v)},initialTab:u})]}),t.jsxs("div",{className:"tw-flex tw-items-center tw-gap-s !tw-text-[16px]",children:[t.jsx(x.Input,{leftSlot:de.faSearch,onChange:v=>{y(v.target.value)},placeholder:`Buscar por ${d==="lista-campanias"?"campaña":"campaña / tarea"}`,value:j,fullWidth:!0,className:"tw-min-w-[280px]"}),c.length>0&&t.jsx($n,{children:t.jsx(Gn,{})}),(d==="kanban-general"||d==="kanban-campania")&&t.jsx(x.Button,{icon:ne.faRotate,onClick:T,color:"secondary",pill:"pill",size:"xs"})]})]}),t.jsx("div",{className:"tw-h-full tw-max-h-[100%] tw-overflow-y-auto tw-scrollbar-none",children:t.jsx(tl,{path:d,tab:u,setPath:_,project:g,setProject:f})})]})};return t.jsx(Os,{children:t.jsxs(Jn,{children:[t.jsx(a,{}),t.jsx(nl,{})]})})},rl=({path:e})=>["templates-container","teams-container"].includes(e)?t.jsx(Zi,{startPath:e}):t.jsx(ol,{path:e}),il=()=>t.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:t.jsx("div",{className:"tw-flex tw-h-full tw-items-center tw-justify-center",children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-text-2xl tw-font-bold",children:[t.jsx("div",{className:"tw-h-10 tw-w-10 tw-animate-pulse tw-rounded-full tw-bg-primary-regular"}),t.jsx("p",{className:"tw-text-l tw-text-texts-enfasis",children:"No encontramos tu acceso"}),t.jsx("p",{className:"tw-text-sm tw-text-texts-placeholder",children:"por favor, contacta al administrador"})]})})}),ll=()=>t.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:t.jsx("div",{className:"tw-flex tw-h-full tw-items-center tw-justify-center",children:t.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-text-2xl tw-font-bold",children:[t.jsx("div",{className:"tw-h-10 tw-w-10 tw-animate-pulse tw-rounded-full tw-bg-primary-regular"}),t.jsx("p",{className:"tw-text-l tw-text-texts-enfasis",children:"un momento..."}),t.jsx("p",{className:"tw-text-sm tw-text-texts-placeholder",children:"estamos buscando tu usuario"})]})})}),cl=({path:e,user:a,url:n,mode:s})=>{const o=new ue.QueryClient;if(!a)return t.jsx(ll,{});if(!a.accessToken)return t.jsx(il,{});let i={user:a,url:n,mode:s};return t.jsxs(ur,{children:[t.jsx(x.Toaster,{}),t.jsx(Bs,{...i,children:t.jsx(Ls,{...i,children:t.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:t.jsxs(ue.QueryClientProvider,{client:o,children:[t.jsx(rl,{path:e})," "]})})})})]})};exports.AppTasks=cl;
|
|
27
|
+
`}),t.jsx("div",{className:"react-pick-color tm-overflow-hidden tm-rounded-lg tm-shadow-lg",children:t.jsx(Ls.ColorPicker,{color:e,theme:{inputBackground:"#FFF"},combinations:["monochromatic"],onChange:n=>a(n)})})]});function Mi({color:e,setColor:a,label:n="Elige el color",className:s=""}){const[o,i]=u.useState(!1),r=u.useRef(null);return Di(r,i,o),t.jsxs("div",{className:"tm-relative tm-w-full",children:[t.jsx("button",{onClick:c=>{c.stopPropagation(),i(!o)},style:{backgroundColor:e},className:`tm-h-control-xs tm-w-full tm-rounded-control-sm tm-border-[1px] tm-border-default tm-px-8 tm-text-body-sm-bold tm-text-primary tm-text-left tm-text-white ${s}`,children:n}),o&&t.jsx("div",{ref:r,className:"tm-absolute tm-z-50 tm-mt-2",children:t.jsx(Fi,{color:e,onChange:c=>a(c.hex)})})]})}const _t="Ha ocurrido un error inesperado. Por favor, intente nuevamente.",ki={"This field is required":"El campo {field} es requerido","must be defined":"El campo {field} es requerido","This attribute must be unique":"El campo {field} debe ser único","must be a string":"El campo {field} debe ser texto","must be a number":"El campo {field} debe ser un número","must be a boolean":"El campo {field} debe ser verdadero o falso","must be an array":"El campo {field} debe ser una lista","must be a valid email":"El campo {field} debe ser un correo electrónico válido","must be a valid date":"El campo {field} debe ser una fecha válida","must be a valid URL":"El campo {field} debe ser una URL válida","must be at least X characters long":"El campo {field} debe tener al menos {min} caracteres","must be less than or equal to X characters long":"El campo {field} debe tener máximo {max} caracteres","This value is too long":"El campo {field} excede el máximo de caracteres","This value is too short":"El campo {field} no cumple con el mínimo de caracteres","must be greater than or equal to X":"El campo {field} debe ser mayor o igual a {min}","must be less than or equal to X":"El campo {field} debe ser menor o igual a {max}","must be greater than X":"El campo {field} debe ser mayor a {min}","must be less than X":"El campo {field} debe ser menor a {max}","must be between X and Y":"El campo {field} debe estar entre {min} y {max}","must be an existing record":"El registro relacionado en {field} no existe","User not found":"El usuario no fue encontrado","Member not found":"El miembro no fue encontrado"},Ts=()=>({handleApiError:a=>{var n,s,o,i,r;if(a instanceof Ye.AxiosError&&((n=a.response)==null?void 0:n.status)===400){const c=a.response.data;if(((o=(s=c.details)==null?void 0:s.errors)==null?void 0:o.length)>0){const m=c.details.errors[0];let l=ki[m.message]||_t;return l=l.replace("{field}",m.path.join(".")),((i=m.params)==null?void 0:i.min)!==void 0&&(l=l.replace("{min}",m.params.min.toString())),((r=m.params)==null?void 0:r.max)!==void 0&&(l=l.replace("{max}",m.params.max.toString())),l}return c.message||_t}return _t}});function Cs({open:e,handleChange:a,team:n}){const{addTeamHandler:s,updateTeamHandler:o}=_s(),{handleApiError:i}=Ts(),[r,c]=u.useState(""),[m,l]=u.useState(n||{id:0,nombre:"",color:Ni(),miembros:[],miembros_planos:[],integrantes:0,miembros_eliminar:[],miembros_actualizar:[]}),d=m.id>0,p=async()=>{if(m.nombre.length===0){c("El nombre del equipo es requerido");return}if(m.miembros.length===0){c("El equipo debe tener al menos un miembro");return}const h=async()=>d?await o({data:m,teamId:m.id}):await s(m);try{await h(),c(""),a(!1);const f=d?"Equipo actualizado correctamente":"Equipo creado correctamente";x.toast.success(f)}catch(f){c(i(f))}};return t.jsx(x.Modal,{onCancel:()=>a(!1),onSuccess:p,title:"Información del equipo",icon:ze.faUser,showCloseButton:!0,showCancelButton:!0,showSuccessButton:!0,closeAtSuccess:!0,closeAtCancel:!0,isOpen:e,onClose:()=>a(!1),size:"lg",children:t.jsxs(x.Modal.Body,{children:[t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-y-8",children:[t.jsxs("div",{className:"tm-flex tm-w-full tm-items-center tm-gap-8 tm-flex-wrap",children:[t.jsx(ir,{value:m.nombre,onChange:h=>l({...m,nombre:h})}),t.jsxs("div",{className:"tm-flex tm-flex-1 tm-items-center tm-gap-x-8",children:[t.jsx("label",{className:"tm-text-body-sm-bold tm-text-primary tm-flex-1 tm-min-w-fit",children:"Color del equipo"}),t.jsx(Mi,{color:m.color,setColor:h=>l({...m,color:h})})]})]}),r&&t.jsx("p",{className:"tm-mt-4 tm-text-sm tm-text-danger-pastel",children:r})]}),t.jsxs("div",{className:"tm-mt-8",children:[t.jsx(rr,{title:"Miembros del equipo",icon:ze.faUsers}),t.jsx(vs,{members:m.miembros,setData:l,isUpdate:d})]})]})})}const Oe=384,Oi=80,Li=180,St=20,Bi=2,Ns=4,Et=.8;function Ri({data:e}){const{getImageOBP:a}=he();return t.jsxs("div",{className:"tm-w-[290px] tm-rounded-md tm-border-[0.5px] tm-border-silver-silver_regular tm-bg-white tm-px-4 tm-py-2 tm-shadow-xl",children:[t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-4",children:[t.jsx("div",{className:"tm-flex tm-items-center tm-justify-center tm-rounded-full tm-bg-light-gray-50",children:t.jsx(Ae,{size:"xxl",alt:"@shadcn",imageUrl:e!=null&&e.image?a(e==null?void 0:e.image):void 0})}),t.jsxs("div",{className:"tm-flex tm-flex-col tm-gap-y-2",children:[t.jsx(x.Text,{size:"xs",weight:"bold",children:e.name}),t.jsx(x.Text,{children:e.job||"Puesto no asignado"})]})]}),t.jsx(oe.Handle,{type:"target",position:oe.Position.Top,className:"tm-bg-transparent",isConnectable:!1}),t.jsx(oe.Handle,{type:"source",position:oe.Position.Bottom,className:"tm-w-16 tm-border-none tm-bg-transparent",isConnectable:!1})]})}const qi={custom:Ri},zi={style:{stroke:"#6366f1",strokeWidth:2}},Ss=(e,a=0)=>e?e.map(n=>{const s=n.miembros?Ss(n.miembros,a+1):[];return{width:Oe,height:Oi,children:s,x:0,y:a*Li,totalWidth:0,depth:a}}):[],Es=e=>{if(e.children.length===0)return e.totalWidth=Oe,Oe;const a=e.children.reduce((o,i)=>o+Es(i),0),n=e.children.length>Ns?Et:1,s=(e.children.length-1)*St*n;return e.totalWidth=Math.max(Oe,a+s),e.totalWidth},Ps=(e,a=0)=>{let n=a;return e.forEach(s=>{s.totalWidth===0&&Es(s);const o=s.children.length>Bi,i=s.children.length>Ns;if(s.children.length>0){if(Ps(s.children,n),i){const p=(s.totalWidth-Oe)/(s.children.length-1)*Et;s.children.forEach((h,f)=>{h.x=n+f*p})}else if(o){const p=(s.totalWidth-Oe)/(s.children.length-1);s.children.forEach((h,f)=>{h.x=n+f*p})}const c=s.children[0].x,m=s.children[s.children.length-1].x+Oe,l=i?Oe*.1:0;s.x=(c+m-Oe)/2+l}else s.x=n;const r=i?Et:1;n=Math.max(n+Oe+St*r,s.x+Oe+St*r)}),n},As=(e,a,n,s)=>{const o=[],i=[];return e.forEach((r,c)=>{var d,p,h,f,g,y;const m=a[c],l=m.id.toString();if(o.push({id:l,type:"custom",data:{name:(d=m.idUser)==null?void 0:d.nombre,image:(h=n==null?void 0:n[(p=m.idUser)==null?void 0:p.email])==null?void 0:h.image,job:((y=(g=n==null?void 0:n[(f=m.idUser)==null?void 0:f.email])==null?void 0:g.role)==null?void 0:y.name)||""},position:{x:r.x,y:r.y}}),s&&i.push({id:`e-${s}-${l}`,source:s,target:l,style:{stroke:"#6366f1",strokeWidth:2}}),m.miembros&&m.miembros.length>0){const w=As(r.children,m.miembros,n,l);o.push(...w.nodes),i.push(...w.edges)}}),{nodes:o,edges:i}};function $i({members:e}){const[a,n]=u.useState([]),[s,o]=u.useState([]),{users:i,isLoading:r}=Ze();return u.useEffect(()=>{if(e&&!r){const c=Ss(e);Ps(c);const{nodes:m,edges:l}=As(c,e,i);n(m),o(l)}},[e,i,r]),r?null:t.jsx(oe.ReactFlow,{nodeTypes:qi,nodes:a,edges:s,draggable:!1,fitView:!0,defaultViewport:{x:0,y:0,zoom:1},minZoom:.5,maxZoom:2,defaultEdgeOptions:zi})}function Ui({open:e,handleChange:a,members:n}){return t.jsx(x.Modal,{showCancelButton:!1,showSuccessButton:!1,hideFooter:!0,isOpen:e,onClose:()=>a(!1),size:"xl",title:"Organigrama de equipo",children:t.jsx("div",{className:"tm-mx-auto tm-bg-white",style:{width:"100%",height:"600px"},children:t.jsx(oe.ReactFlowProvider,{children:t.jsx($i,{members:n})})})})}const Is="tm-grid tm-w-full tm-grid-cols-1 tm-items-baseline tm-gap-x-8 tm-gap-y-8 md:tm-grid-cols-2 lg:tm-grid-cols-3 lg:tm-gap-x-8 xl:tm-grid-cols-4",Hi="tm-relative tm-block tm-overflow-hidden tm-rounded-md tm-bg-gray-200 tm-bg-gradient-to-r tm-from-gray-200 tm-via-gray-50 tm-to-gray-200 tm-bg-[length:200%_100%] tm-animate-skeleton-shimmer";function qe({className:e="",rounded:a="md"}){const n=a==="full"?"tm-rounded-full":"tm-rounded-md";return t.jsx("span",{className:`${Hi} ${n} ${e}`.trim(),"aria-hidden":!0})}function Ds(){return t.jsx("div",{className:"tm-flex tm-items-center tm-gap-x-2",children:Array.from({length:2},(e,a)=>t.jsx(qe,{className:"tm-h-8 tm-w-8 tm-shrink-0",rounded:"full"},a))})}function Ki(){const{user:e}=we(),a=(e==null?void 0:e.role)===Gt;return t.jsxs(x.Card,{className:"tm-w-full",children:[t.jsxs(x.Card.Header,{className:"tm-flex tm-items-center justify-between",children:[t.jsx("div",{className:"tm-flex tm-flex-col tm-justify-start tm-items-start tm-gap-y-2",children:t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-8",children:[t.jsx(qe,{className:"tm-h-2.5 tm-w-2.5 tm-shrink-0",rounded:"full"}),t.jsx(qe,{className:"tm-h-8 tm-w-8 tm-shrink-0"}),t.jsx(qe,{className:"tm-h-5 tm-min-h-[1.25rem] tm-w-40 tm-max-w-[min(100%,10rem)]"})]})}),t.jsx("div",{children:a?t.jsx(qe,{className:"tm-h-8 tm-w-8 tm-shrink-0",rounded:"full"}):null})]}),t.jsx(x.Card.Separator,{}),t.jsxs(x.Card.Body,{scrollable:!1,children:[t.jsx(Ds,{}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-4 tm-mt-2",children:[t.jsx(qe,{className:"tm-h-4 tm-w-6"}),t.jsx(qe,{className:"tm-h-4 tm-w-28"})]})]})]})}function Gi({length:e}){const n=e??10;return t.jsx("div",{"aria-busy":"true","aria-live":"polite",className:Is,children:Array.from({length:n},(s,o)=>t.jsx(Ki,{},o))})}function Vi({members:e}){const{getImageOBP:a}=he(),{users:n,isLoading:s}=Ze();if(s)return t.jsx(Ds,{});const o=e.filter(i=>{var r,c;return(c=n[(r=i.idUser)==null?void 0:r.email])==null?void 0:c.image}).slice(0,3);return t.jsx("div",{className:"tm-flex tm-items-center tm-gap-x-2",children:t.jsx(x.Avatar,{maxVisible:2,stroke:!0,stack:o.map(i=>{var c;const r=n[(c=i.idUser)==null?void 0:c.email];return{src:a(r.image),name:r.name}}),size:"sm"})})}function Wi({team:e}){const[a,n]=u.useState(!1),[s,o]=u.useState(!1),{user:i}=we(),[r,c]=u.useState(!1),{handleApiError:m}=Ts(),{deleteTeamHandler:l,isLoadingDeleteTeam:d}=_s(),p=async()=>{try{await l(e.id),x.toast.success("Equipo eliminado correctamente")}catch(h){x.toast.error(m(h))}};return t.jsxs(x.Card,{children:[a&&t.jsx(Cs,{handleChange:n,open:a,team:e}),r&&t.jsx(ws,{isLoading:d,open:r,handleChange:c,onConfirm:p,contentLabel:"Estás eliminando el equipo seleccionado"}),s&&t.jsx(Ui,{handleChange:o,open:s,members:e.miembros}),t.jsxs(x.Card.Header,{className:"tm-flex tm-items-center tm-justify-between tm-w-full",children:[t.jsx("div",{className:"tm-flex tm-flex-col tm-justify-start tm-items-start tm-gap-y-2",children:t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-x-8 tm-justify-between tm-w-full",children:[t.jsx(x.Badge,{size:"dot",customColor:e.color,theme:"solid"}),t.jsx(x.Icon,{name:ze.faPeopleGroup,colorDuotonePrimary:"blue",colorDuotoneSecondary:"blue",opacityDuotonePrimary:.5,size:"md"}),t.jsx("h1",{className:"tm-py-0.5 tm-font-body-sm-bold tm-text-body-sm-bold tm-leading-none tm-text-primary",children:e.nombre})]})}),t.jsx("div",{children:(i==null?void 0:i.role)==Gt&&t.jsx(x.Popup,{size:"xs",color:"secondary",pill:"pill",icon:ne.faEllipsis,stopPropagationList:!0,children:t.jsxs(x.List,{className:"tm-gap-4",padding:"sm",children:[t.jsx(x.ListItem,{icon:ne.faPencil,onClick:()=>n(!0),children:"Editar"}),t.jsx(x.ListItem,{icon:ne.faEye,onClick:()=>o(!0),children:"Ver organigrama"}),t.jsx(x.ListItem,{color:"red",icon:ne.faTrash,onClick:()=>c(!0),children:"Eliminar"})]})})})]}),t.jsx(x.Card.Separator,{}),t.jsxs(x.Card.Body,{children:[t.jsx(Vi,{members:e.miembros_planos}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-4 tm-mt-2",children:[t.jsx("p",{className:"tm-text-icon-all-colors-blue tm-text-xs tm-text-center tm-leading-none tm-font-semibold",children:e.integrantes||0}),t.jsxs("p",{className:"tm-text-body-xs-regular tm-text-tertiary tm-font-body-xs-normal",children:["Integrante",e.integrantes>1?"s":""]})]})]})]})}function Qi({teams:e}){return t.jsx("div",{className:Is,children:e==null?void 0:e.map(a=>t.jsx(Wi,{team:a},a.id))})}const Xi="teams-container";function Yi(){return t.jsx("div",{className:"tm-flex tm-flex-wrap tm-items-center tm-justify-between tm-gap-2.5 md:tm-flex-nowrap",children:t.jsx(os,{path:Xi})})}function Fs(){var b,_,M,F,R;const[e,a]=u.useState(!1),[n,s]=u.useState(1),[o,i]=u.useState(10),{user:r}=we(),{debouncedSearch:c,filters:m}=rs("teams-container"),l=Array.isArray(m)?m:[];u.useEffect(()=>{s(1)},[c,m]);const{data:d,isLoading:p}=Ii({page:n,pageSize:o,search:c,filters:{nombre:"",createdAt:(b=l.find(N=>N.keyName==="createdAt"))==null?void 0:b.value,integrantes_min:(_=l.find(N=>N.keyName==="integrantes_min"))==null?void 0:_.value,integrantes_max:(M=l.find(N=>N.keyName==="integrantes_max"))==null?void 0:M.value}}),h=(d==null?void 0:d.data)||[],f=d==null?void 0:d.meta,g=((F=f==null?void 0:f.pagination)==null?void 0:F.pageCount)||0,y=((R=f==null?void 0:f.pagination)==null?void 0:R.total)||0,w=N=>{s(N)},j=N=>{i(N),s(1)};return t.jsxs("div",{className:"tm-grid tm-h-full tm-grid-rows-[auto,1fr] tm-gap-y-8",children:[e&&t.jsx(Cs,{handleChange:a,open:e}),(r==null?void 0:r.role)===Gt&&t.jsx("div",{className:"tm-flex tm-items-center tm-justify-end",children:t.jsx(x.Button,{size:"xs",color:"primary",leftSlot:ne.faPlus,onClick:()=>a(!0),children:" Nuevo equipo "})}),t.jsx("div",{className:"custom-scrollbar",style:{scrollbarGutter:"stable",paddingRight:"4px"},children:h.length===0&&!p?t.jsx("div",{className:"flex tm-h-full tm-items-center tm-justify-center",children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-justify-center tm-gap-y-6",children:[t.jsx("p",{className:"tm-text-3xl tm-font-bold",children:c?"No se encontraron equipos con ese nombre":"¡Parece que aún no has creado un equipo!"}),!c&&t.jsx(x.Button,{color:"primary",onClick:()=>a(!0),children:"¡Empieza ahora!"})]})}):p?t.jsx("div",{className:"tm-pb-16 tm-opacity-100 tm-transition tm-duration-300",children:t.jsx(Gi,{length:o})}):t.jsx("div",{className:`tm-pb-16 ${p?"tm-opacity-0 tm-transition tm-duration-300":"tm-opacity-100 tm-transition tm-duration-300"}`,children:t.jsx(Qi,{teams:h})})}),g>0&&t.jsx(x.Pagination,{currentPage:n,pageCount:g,pageSize:o,total:y,onPageChange:w,handlePageSize:j,showVisiblePages:!0,showPagesSelector:!0})]})}const Ji=()=>({header:t.jsx(sl,{}),body:t.jsx(Fs,{})}),Zi={"templates-container":vi,"teams-container":Yi};function el({path:e}){const a=e?Zi[e]:null;return a?t.jsx(a,{}):null}function tl({path:e}){return e==="templates-container"?fi():e==="teams-container"?Ji():{header:null,body:null}}const al=({startPath:e})=>{const{path:a,setPath:n}=Fe(),{setCurrentPath:s}=ut();u.useEffect(()=>{n(e),s(e)},[e,n,s]);const{header:o,body:i}=tl({path:a});return t.jsxs(x.Card,{fullWidth:!0,className:"tm-h-full",children:[t.jsxs(x.Card.Header,{className:"tm-flex tm-flex-wrap tm-items-center tm-gap-16 tm-justify-between",children:[o,t.jsx(el,{path:a})]}),t.jsx(x.Card.Separator,{}),t.jsx(x.Card.Body,{fullHeight:!0,className:"tm-flex tm-flex-1 tm-flex-col tm-gap-y-4",children:i})]})},sl=()=>t.jsx(ns,{title:"Equipos"}),nl=({path:e,tab:a,setPath:n,project:s,setProject:o})=>{const i={"kanban-general":{kanban:t.jsx(Zo,{})},"teams-container":{teams:t.jsx(Fs,{})},"lista-campanias":{lista:t.jsx($n,{setPath:n,setProject:o}),gantt:t.jsx("div",{children:"gantt-campanias"})},"kanban-campania":{kanban:t.jsx(Ko,{}),lista:t.jsx(or,{}),gantt:t.jsx("div",{children:"kanban-campania-gantt"})},"templates-container":{templates:t.jsx(js,{})}};return e==="kanban-campania"?t.jsx(Jn,{project:s==null?void 0:s.id,children:i[e][a]}):i[e][a]},ol=({label:e,active:a,onClick:n,disabled:s})=>s?t.jsx(Ie,{position:"bottom",trigger:t.jsx("button",{type:"button",className:"tm-cursor-help tm-text-xs tm-font-semibold tm-text-texts-placeholder",children:e}),children:t.jsx("div",{className:"tm-px-4 tm-py-2",children:t.jsx(x.Text,{children:"Espéralo muy pronto..."})})}):t.jsx("button",{type:"button",disabled:s,onClick:n,className:`${a?" tm-text-black-regular":""} tm-text-xs ${s?"tm-cursor-not-allowed tm-text-lg tm-text-black-regular":"tm-text-black-regular"}`,children:e}),rl=({tabs:e,renderItem:a,initialTab:n})=>{const[s,o]=u.useState(n??e[0].toLowerCase());u.useEffect(()=>{n&&o(n)},[n]);const i=r=>{o(r),a(r)};return t.jsx("div",{className:"tm-flex",children:e.map((r,c)=>t.jsx("div",{className:`${c===0?"tm-border-l-2":""} tm-border-r-2 tm-border-light-gray-100 tm-px-m`,children:t.jsx(ol,{onClick:()=>i(r.toLowerCase()),label:r,active:r.toLowerCase()===s,disabled:["gantt"].includes(r.toLowerCase())},c)}))})};function il(){const{toast:e}=Lt();if(!e.message)return null;const a=e.type==="success";return t.jsx("div",{className:`tm-bg-black tm-fixed tm-right-10 tm-top-[10%] tm-z-[200] tm-h-[30px] tm-w-[300px] tm-rounded-md tm-text-lg tm-shadow-md ${a?"tm-bg-success-medium":"tm-bg-danger-medium"} tm-flex tm-items-center`,children:t.jsxs("div",{className:"relative tm-flex tm-h-full tm-w-full tm-items-center",children:[t.jsx("div",{className:`tm-h-full tm-w-[5px] ${a?"tm-bg-success-dark":"tm-bg-danger-regular"} tm-absolute tm-left-0 tm-rounded-full`}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-2 tm-pl-4",children:[t.jsx(x.Icon,{name:a?de.faCircleCheck:de.faCircleXmark,size:"sm",style:{color:a?"#368156":"#DC2626"},color:"current"}),t.jsx("p",{className:`${a?"tm-text-success-dark":"tm-text-danger-dark"} tm-text-xl tm-font-semibold`,children:e.message})]})]})})}const Ca="tasksProject",ll=({path:e})=>{const a=()=>{const n=me.useQueryClient(),{selectPath:s,updateFilters:o,applyFilters:i,filters:r,fields:c}=De(),[m,l]=u.useState("kanban"),[d,p]=u.useState(e),[h,f]=u.useState({id:1704,project:"Kanban de Campania"}),[g,y]=u.useState([{path:"lista-campanias",search:(r==null?void 0:r.search)??""},{path:"kanban-campania",search:(r==null?void 0:r.taskName)??""},{path:"kanban-general",search:(r==null?void 0:r.taskName)??""},{path:"teams-container",search:(r==null?void 0:r.taskName)??""},{path:"templates-container",search:(r==null?void 0:r.taskName)??""}]),[w,j]=u.useState();u.useEffect(()=>{var v;l(d==="lista-campanias"?"lista":d==="kanban-campania"?"kanban":d==="teams-container"?"teams":d==="templates-container"?"templates":"kanban"),s(d),j(((v=g.find(U=>U.path===d))==null?void 0:v.search)??"")},[e,d]),u.useEffect(()=>{var v;((v=R())==null?void 0:v.trim())===""&&o({name:d==="lista-campanias"||d==="teams-container"||d==="templates-container"?"search":"taskName",value:null}),i()},[g]);const b=v=>({"kanban-general":"Kanban General","lista-campanias":"Campanias","teams-container":"Equipos","kanban-campania":`Kanban de ${h.project}`,"templates-container":"Flujos de trabajo"})[v],_=v=>{p(v)},M=["lista-campanias","kanban-campania"],F={"lista-campanias":["lista","gantt"],"kanban-campania":["kanban","lista","gantt"],"teams-container":["teams"],"templates-container":["templates"]},R=()=>{var v;return((v=g.find(U=>U.path===d))==null?void 0:v.search)??""},N=()=>{d==="kanban-general"?$o(n):d==="kanban-campania"&&(n.invalidateQueries({queryKey:[Ca]}),n.refetchQueries({queryKey:[Ca]}))},D=v=>{y(U=>U.map(K=>K.path===d?{...K,search:v}:K))};return u.useEffect(()=>{const v=setTimeout(()=>{o({name:d==="lista-campanias"||d==="teams-container"||d==="templates-container"?"search":"taskName",value:w==null?void 0:w.trim()}),D(w)},500);return()=>{clearTimeout(v)}},[w]),t.jsxs("div",{className:"tm-relative tm-flex tm-h-full tm-min-h-[100%] tm-w-full tm-flex-col tm-gap-m tm-overflow-hidden tm-rounded-lg tm-border tm-border-light-gray-100 tm-bg-bg-card tm-p-m",children:[t.jsxs("div",{className:"tm-flex tm-w-full tm-flex-wrap tm-items-end tm-justify-between tm-gap-l tm-border-b tm-border-light-gray-100 tm-pb-m",children:[t.jsxs("div",{className:"tm-flex tm-gap-xl",children:[d==="kanban-campania"&&t.jsx("button",{onClick:()=>_("lista-campanias"),className:"tm-text-primary hover:tm-text-primary/80 tm-flex tm-items-center tm-transition-colors",children:t.jsx(x.Icon,{name:ne.faArrowLeft,size:"xs",style:{color:"#4464C3"},color:"current",className:"tm-shrink-0"})}),t.jsx("h2",{className:"tm-text-base tm-font-medium tm-text-texts ",children:b(d)}),M.includes(d)&&t.jsx(rl,{tabs:F[d],renderItem:v=>{l(v)},initialTab:m})]}),t.jsxs("div",{className:"tm-flex tm-items-center tm-gap-s !tm-text-[16px]",children:[t.jsx(x.Input,{leftSlot:de.faSearch,onChange:v=>{j(v.target.value)},placeholder:`Buscar por ${d==="lista-campanias"?"campaña":"campaña / tarea"}`,value:w,fullWidth:!0,className:"tm-min-w-[280px]"}),c.length>0&&t.jsx(Hn,{children:t.jsx(Wn,{})}),(d==="kanban-general"||d==="kanban-campania")&&t.jsx(x.Button,{icon:ne.faRotate,onClick:N,color:"secondary",pill:"pill",size:"xs"})]})]}),t.jsx("div",{className:"tm-h-full tm-max-h-[100%] tm-overflow-y-auto tm-scrollbar-none",children:t.jsx(nl,{path:d,tab:m,setPath:_,project:h,setProject:f})})]})};return t.jsx(Bs,{children:t.jsxs(eo,{children:[t.jsx(a,{}),t.jsx(il,{})]})})},cl=({path:e})=>["templates-container","teams-container"].includes(e)?t.jsx(al,{startPath:e}):t.jsx(ll,{path:e}),dl=()=>t.jsx("div",{className:"tm-relative tm-h-full tm-min-h-[100%] tm-w-full",children:t.jsx("div",{className:"tm-flex tm-h-full tm-items-center tm-justify-center",children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-text-2xl tm-font-bold",children:[t.jsx("div",{className:"tm-h-10 tm-w-10 tm-animate-pulse tm-rounded-full tm-bg-primary-regular"}),t.jsx("p",{className:"tm-text-l tm-text-texts-enfasis",children:"No encontramos tu acceso"}),t.jsx("p",{className:"tm-text-sm tm-text-texts-placeholder",children:"por favor, contacta al administrador"})]})})}),ml=()=>t.jsx("div",{className:"tm-relative tm-h-full tm-min-h-[100%] tm-w-full",children:t.jsx("div",{className:"tm-flex tm-h-full tm-items-center tm-justify-center",children:t.jsxs("div",{className:"tm-flex tm-flex-col tm-items-center tm-text-2xl tm-font-bold",children:[t.jsx("div",{className:"tm-h-10 tm-w-10 tm-animate-pulse tm-rounded-full tm-bg-primary-regular"}),t.jsx("p",{className:"tm-text-l tm-text-texts-enfasis",children:"un momento..."}),t.jsx("p",{className:"tm-text-sm tm-text-texts-placeholder",children:"estamos buscando tu usuario"})]})})}),ul=({path:e,user:a,url:n,mode:s})=>{const o=new me.QueryClient;if(!a)return t.jsx(ml,{});if(!a.accessToken)return t.jsx(dl,{});let i={user:a,url:n,mode:s};return t.jsxs(pr,{children:[t.jsx(x.Toaster,{}),t.jsx(qs,{...i,children:t.jsx(Rs,{...i,children:t.jsx("div",{className:"tm-relative tm-h-full tm-min-h-[100%] tm-w-full",children:t.jsxs(me.QueryClientProvider,{client:o,children:[t.jsx(cl,{path:e})," "]})})})})]})};exports.AppTasks=ul;
|