@imj_media/tareas 1.5.21 → 1.5.22

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/dist/tareas.cjs CHANGED
@@ -100,4 +100,4 @@
100
100
  }
101
101
  `}),e.jsx("div",{className:"react-pick-color tw-overflow-hidden tw-rounded-lg tw-shadow-lg",children:e.jsx(Wa.ColorPicker,{color:t,theme:{inputBackground:"#FFF"},combinations:["monochromatic"],onChange:s=>a(s)})})]});function pn({color:t,setColor:a,label:s="Elige el color",className:n=""}){const[r,i]=p.useState(!1),o=p.useRef(null);return un(o,i,r),e.jsxs("div",{className:"tw-relative tw-w-full",children:[e.jsx("button",{onClick:d=>{d.stopPropagation(),i(!r)},style:{backgroundColor:t},className:`tw-h-10 tw-w-full tw-rounded-md tw-border-2 tw-border-blue-blue_medium tw-px-4 tw-text-left tw-text-white ${n}`,children:s}),r&&e.jsx("div",{ref:o,className:"tw-absolute tw-z-50 tw-mt-2",children:e.jsx(wn,{color:t,onChange:d=>a(d.hex)})})]})}const mn=()=>"#"+Math.floor(Math.random()*16777215).toString(16),st="Ha ocurrido un error inesperado. Por favor, intente nuevamente.",fn={"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"},ba=()=>({handleApiError:a=>{var s,n,r,i,o;if(a instanceof wt.AxiosError&&((s=a.response)==null?void 0:s.status)===400){const d=a.response.data;if(((r=(n=d.details)==null?void 0:n.errors)==null?void 0:r.length)>0){const l=d.details.errors[0];let c=fn[l.message]||st;return c=c.replace("{field}",l.path.join(".")),((i=l.params)==null?void 0:i.min)!==void 0&&(c=c.replace("{min}",l.params.min.toString())),((o=l.params)==null?void 0:o.max)!==void 0&&(c=c.replace("{max}",l.params.max.toString())),c}return d.message||st}return st}});function ya({open:t,handleChange:a,team:s}){const{addTeamHandler:n,updateTeamHandler:r}=ha(),{showSuccess:i}=Ge(),{handleApiError:o}=ba(),[d,l]=p.useState(!1),[c,u]=p.useState(""),[f,h]=p.useState(s||{id:0,nombre:"",color:mn(),miembros:[],miembros_planos:[],integrantes:0,miembros_eliminar:[],miembros_actualizar:[]}),w=f.id>0,m=async()=>{if(f.nombre.length===0){u("El nombre del equipo es requerido");return}if(f.miembros.length===0){u("El equipo debe tener al menos un miembro");return}l(!0);const g=async()=>w?await r({data:f,teamId:f.id}):await n(f);try{await g(),u(""),a(!1),i(w?"Equipo actualizado correctamente":"Equipo creado correctamente")}catch(x){u(o(x))}finally{l(!1)}};return e.jsx(bt,{open:t,handleChange:a,closeIcon:"circle",size:"lg",children:e.jsxs("section",{className:"tw-relative tw-flex tw-h-full tw-flex-1 tw-flex-col tw-gap-y-6 tw-px-5 tw-pb-16",children:[e.jsxs("div",{children:[e.jsx(Ft,{title:"Información del equipo",icon:"user"}),e.jsxs("div",{className:"tw-mt-6 tw-flex tw-w-full tw-items-center tw-gap-4",children:[e.jsx(Qs,{value:f.nombre,onChange:g=>h({...f,nombre:g})}),e.jsxs("div",{className:"flex tw-flex-1 tw-items-center tw-gap-x-2",children:[e.jsx("label",{className:"tw-w-44 tw-text-base tw-text-black-black_regular",children:"Color del equipo"}),e.jsx(pn,{className:"tw-w-64",color:f.color,setColor:g=>h({...f,color:g})})]})]}),c&&e.jsx("p",{className:"tw-mt-4 tw-text-sm tw-text-danger-pastel",children:c})]}),e.jsxs("div",{children:[e.jsx(Ft,{title:"Miembros del equipo",icon:"users"}),e.jsx(ga,{members:f.miembros,setData:h,isUpdate:w})]}),e.jsx(Ks,{onCancel:()=>a(!1),onSave:m,isLoading:d})]})})}const De=384,xn=80,gn=180,dt=20,hn=2,ja=4,ut=.8;function bn({data:t}){const{getImageOBP:a}=we();return e.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:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-4",children:[e.jsx("div",{className:"tw-flex tw-items-center tw-justify-center tw-rounded-full tw-bg-gray-100",children:e.jsx(Te,{size:"xxl",alt:"@shadcn",imageUrl:t!=null&&t.image?a(t==null?void 0:t.image):void 0})}),e.jsxs("div",{className:"tw-text-black-black_dark",children:[e.jsx("div",{className:"tw-text-lg tw-font-bold",children:t.name}),e.jsx("div",{className:"",children:t.job||"Puesto no asignado"})]})]}),e.jsx(re.Handle,{type:"target",position:re.Position.Top,className:"tw-bg-transparent",isConnectable:!1}),e.jsx(re.Handle,{type:"source",position:re.Position.Bottom,className:"tw-w-16 tw-border-none tw-bg-transparent",isConnectable:!1})]})}const yn={custom:bn},jn={style:{stroke:"#6366f1",strokeWidth:2}},va=(t,a=0)=>t?t.map(s=>{const n=s.miembros?va(s.miembros,a+1):[];return{width:De,height:xn,children:n,x:0,y:a*gn,totalWidth:0,depth:a}}):[],_a=t=>{if(t.children.length===0)return t.totalWidth=De,De;const a=t.children.reduce((r,i)=>r+_a(i),0),s=t.children.length>ja?ut:1,n=(t.children.length-1)*dt*s;return t.totalWidth=Math.max(De,a+n),t.totalWidth},Na=(t,a=0)=>{let s=a;return t.forEach(n=>{n.totalWidth===0&&_a(n);const r=n.children.length>hn,i=n.children.length>ja;if(n.children.length>0){if(Na(n.children,s),i){const f=(n.totalWidth-De)/(n.children.length-1)*ut;n.children.forEach((h,w)=>{h.x=s+w*f})}else if(r){const f=(n.totalWidth-De)/(n.children.length-1);n.children.forEach((h,w)=>{h.x=s+w*f})}const d=n.children[0].x,l=n.children[n.children.length-1].x+De,c=i?De*.1:0;n.x=(d+l-De)/2+c}else n.x=s;const o=i?ut:1;s=Math.max(s+De+dt*o,n.x+De+dt*o)}),s},Ta=(t,a,s,n)=>{const r=[],i=[];return t.forEach((o,d)=>{var u,f,h,w,m,g;const l=a[d],c=l.id.toString();if(r.push({id:c,type:"custom",data:{name:(u=l.idUser)==null?void 0:u.nombre,image:(h=s==null?void 0:s[(f=l.idUser)==null?void 0:f.email])==null?void 0:h.image,job:((g=(m=s==null?void 0:s[(w=l.idUser)==null?void 0:w.email])==null?void 0:m.role)==null?void 0:g.name)||""},position:{x:o.x,y:o.y}}),n&&i.push({id:`e-${n}-${c}`,source:n,target:c,style:{stroke:"#6366f1",strokeWidth:2}}),l.miembros&&l.miembros.length>0){const x=Ta(o.children,l.miembros,s,c);r.push(...x.nodes),i.push(...x.edges)}}),{nodes:r,edges:i}};function vn({members:t}){const[a,s]=p.useState([]),[n,r]=p.useState([]),{users:i,isLoading:o}=Ke();return p.useEffect(()=>{if(t&&!o){const d=va(t);Na(d);const{nodes:l,edges:c}=Ta(d,t,i);s(l),r(c)}},[t,i,o]),o?null:e.jsx(re.ReactFlow,{nodeTypes:yn,nodes:a,edges:n,draggable:!1,fitView:!0,defaultViewport:{x:0,y:0,zoom:1},minZoom:.5,maxZoom:2,defaultEdgeOptions:jn})}function _n({open:t,handleChange:a,members:s}){return e.jsx(bt,{open:t,handleChange:a,size:"xl",children:e.jsx("div",{className:"tw-mx-auto tw-bg-white",style:{width:"100%",height:"600px"},children:e.jsx(re.ReactFlowProvider,{children:e.jsx(vn,{members:s})})})})}const Nn=[5,10,25,50,100],Tn=({currentPage:t,pageCount:a,pageSize:s,total:n,pageSizeText:r="Filas por página:",elementsOfText:i="elementos de",optionsSize:o=Nn,onPageChange:d,handlePageSize:l=()=>{},className:c="",maxVisiblePages:u=5})=>{p.useEffect(()=>{t>a&&a>0&&d(a)},[t,a,d]);const f=x=>{x>=1&&x<=a&&d(x)},h=Math.min(t*s,n)||0,m=(()=>{const x=Math.min(Math.max(t,1),Math.max(a-u+1,1)),b=Math.min(x+u-1,a);return Array.from({length:b-x+1},(j,v)=>x+v)})(),g=x=>{l(x),f(1)};return e.jsx("div",{className:`mt-8 tw-absolute tw-bottom-0 tw-left-0 tw-right-0 tw-bg-silver-silver_white tw-px-8 tw-py-4 ${c}`,children:e.jsxs("div",{className:"tw-grid tw-w-full tw-grid-cols-[1fr] tw-grid-rows-3 tw-items-center tw-justify-center tw-gap-x-2 tw-gap-y-2 md:tw-grid-cols-[1fr,auto,1fr] md:tw-grid-rows-1 md:tw-justify-between",children:[a>1?e.jsxs("p",{className:"tw-text-center tw-text-xl tw-tracking-wider tw-text-black-black_light md:tw-text-left",children:[h," ",i," ",n]}):e.jsx("div",{}),a>1?e.jsxs("div",{className:"tw-flex tw-justify-center md:tw-justify-start",children:[e.jsx("button",{onClick:()=>f(1),className:"tw-relative tw-flex tw-items-center disabled:tw-opacity-40",disabled:t===1,children:e.jsx(ee.Icons,{icon:"double_angle",size:"xs",strokeWidth:4,classNameDiv:"tw-rotate-180"})}),e.jsx("button",{className:"tw-rounded tw-px-3 tw-py-1 disabled:tw-opacity-40",onClick:()=>f(t-1),disabled:t===1,children:e.jsx(ee.Icons,{icon:"angle_left_outline",size:"xs",strokeWidth:4})}),m.map(x=>e.jsx("button",{className:`tw-min-w-14 tw-px-3 tw-py-1 tw-text-xl tw-font-light ${t===x?"tw-text-blue-blue_dark":"tw-text-gray-gray_dark"}`,onClick:()=>f(x),children:x},x)),e.jsx("button",{className:"tw-rounded tw-px-3 tw-py-1 disabled:tw-opacity-40",onClick:()=>f(t+1),disabled:t===a,children:e.jsx(ee.Icons,{icon:"angle_right_outline",size:"xs",strokeWidth:4})}),e.jsx("button",{className:" tw-flex tw-items-center disabled:tw-opacity-40",onClick:()=>f(a),disabled:t===a,children:e.jsx(ee.Icons,{icon:"double_angle",size:"xs",strokeWidth:4})})]}):e.jsx("div",{}),e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-center tw-gap-x-4 md:tw-justify-end",children:[e.jsx("p",{className:"tw-text-xl tw-tracking-wider tw-text-[#696E79]",children:r}),e.jsx("select",{id:"page-size",value:s,onChange:x=>g(Number(x.target.value)),className:"tw-rounded tw-border tw-border-gray-gray_regular tw-px-4 tw-py-2 tw-text-xl tw-text-[#696E79]",children:o.map(x=>e.jsx("option",{value:x,children:x},x))})]})]})})};function Cn({children:t,queryHook:a,pageSize:s=5,Loading:n=null,loadingText:r="Cargando...",searchTerm:i="",filters:o={}}){const[d,l]=p.useState(1),[c,u]=p.useState(s),f=p.useCallback(x=>{l(x)},[]),h=p.useCallback(x=>{u(x)},[]),{status:w,data:m,isFetching:g}=a({page:d,pageSize:c,search:i,filters:o});return e.jsxs("div",{className:"tw-grid tw-h-full tw-grid-rows-[1fr,auto] tw-gap-y-8",children:[w==="pending"?n||e.jsx("div",{className:"tw-flex tw-items-center tw-justify-center",children:r}):e.jsx("div",{children:t((m==null?void 0:m.data)||[],g)}),e.jsx("div",{className:"tw-flex tw-justify-between",children:e.jsx(Tn,{currentPage:d,onPageChange:f,pageCount:m==null?void 0:m.meta.pagination.pageCount,pageSize:m==null?void 0:m.meta.pagination.pageSize,total:m==null?void 0:m.meta.pagination.total,handlePageSize:h})})]})}const En=p.memo(Cn);function Sn(){const[t,a]=p.useState(!1),{filters:s,defineFields:n}=ke(),[r,i]=p.useState(""),{user:o}=_e();return p.useEffect(()=>{i((s==null?void 0:s.search)||"")},[s]),p.useEffect(()=>{n([])},[n]),e.jsxs("div",{className:"tw-grid tw-h-full tw-grid-rows-[auto,1fr] tw-gap-y-8",children:[t&&e.jsx(ya,{handleChange:a,open:t}),(o==null?void 0:o.role)===fa&&e.jsx("div",{className:"tw-flex tw-items-center tw-justify-end",children:e.jsxs("button",{onClick:()=>a(!0),className:"tw-flex tw-items-center tw-gap-x-4 tw-text-xl tw-text-primary-regular",children:[e.jsx(ee.Icons,{icon:"plus_outline",size:"xs",strokeWidth:4}),"Nuevo equipo"]})}),e.jsx(En,{queryHook:dn,Loading:e.jsx(Pt,{}),searchTerm:r,filters:{nombre:""},children:(d,l)=>e.jsx(e.Fragment,{children:d.length===0&&!l?e.jsx("div",{className:"flex tw-h-full tw-items-center tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-center tw-gap-y-6",children:[e.jsx("p",{className:"tw-text-3xl tw-font-bold",children:r?"No se encontraron equipos con ese nombre":"¡Parece que aún no has creado un equipo!"}),!r&&e.jsx("button",{className:"tw-rounded-md tw-bg-primary-regular tw-px-16 tw-py-4 tw-text-white",onClick:()=>a(!0),children:"¡Empieza ahora!"})]})}):l?e.jsx(Pt,{}):e.jsx("div",{className:`tw-pb-16 ${l?"tw-opacity-0 tw-transition tw-duration-300":"tw-opacity-100 tw-transition tw-duration-300"}`,children:e.jsx(Fn,{teams:d})})})})]})}function Ca(){return e.jsx("div",{className:"tw-flex tw-animate-pulse tw-items-center tw-gap-x-2",children:Array.from({length:3},(t,a)=>e.jsx("div",{className:"tw-h-8 tw-w-8 tw-rounded-full tw-bg-gray-200"},a))})}function kn(){return e.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:e.jsxs("div",{className:"flex tw-h-full tw-w-full",children:[e.jsx("div",{className:"tw-h-full tw-rounded-bl-xl tw-rounded-tl-xl tw-border-l-[.6rem] tw-bg-gray-200"}),e.jsxs("div",{className:"flex flex-1 tw-p-6",children:[e.jsxs("div",{className:"flex-1 flex flex-col tw-h-full tw-justify-between",children:[e.jsx("div",{className:"tw-h-6 tw-w-32 tw-rounded tw-bg-gray-200"}),e.jsxs("div",{className:"flex tw-items-center tw-gap-x-6",children:[e.jsx("div",{className:"tw-h-5 tw-w-24 tw-rounded tw-bg-gray-200"}),e.jsx("div",{className:"tw-h-5 tw-w-8 tw-rounded tw-bg-gray-200"})]}),e.jsx(Ca,{})]}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-justify-between",children:[e.jsx("div",{className:"tw-h-6 tw-w-6 tw-rounded tw-bg-gray-200"}),e.jsx("div",{className:"tw-h-6 tw-w-6 tw-rounded tw-bg-gray-200"}),e.jsx("div",{className:"tw-h-6 tw-w-6 tw-rounded tw-bg-gray-200"})]})]})]})})}function Pt({length:t}){const s=t?t>12?12:t:12;return e.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:s},(n,r)=>e.jsx(kn,{},r))})}function In({members:t}){const{getImageOBP:a}=we(),{users:s,isLoading:n}=Ke();if(n)return e.jsx(Ca,{});const r=t.filter(o=>{var d,l;return(l=s[(d=o.idUser)==null?void 0:d.email])==null?void 0:l.image}).slice(0,3),i=t.length-r.length;if(r.length===0&&t.length>0){const o=Math.min(t.length,3),d=t.length-o;return e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[Array.from({length:o},(l,c)=>e.jsx("div",{className:`${c>0?"tw-ml-[-10px]":""}`,children:e.jsx(Te,{size:"m"})},c)),d>0&&e.jsx("div",{className:"tw-ml-[-10px] tw-flex tw-h-[32px] tw-w-[32px] tw-items-center tw-justify-center tw-rounded-full tw-border-2 tw-border-white tw-bg-primary-dark",children:e.jsxs("p",{className:"tw-text-sm tw-font-semibold tw-text-white",children:["+",d]})})]})}return e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[r.map((o,d)=>{var c;const l=s[(c=o.idUser)==null?void 0:c.email];return e.jsx("div",{className:`${d>0?"tw-ml-[-10px]":""}`,children:e.jsx(Te,{size:"m",imageUrl:a(l.image),alt:l==null?void 0:l.name})},o.id)}),i>0&&e.jsx("div",{className:"tw-ml-[-10px] tw-flex tw-h-[32px] tw-w-[32px] tw-items-center tw-justify-center tw-rounded-full tw-border-2 tw-border-white tw-bg-primary-dark",children:e.jsxs("p",{className:"tw-text-sm tw-font-semibold tw-text-white",children:["+",i]})})]})}function Dn({team:t}){const[a,s]=p.useState(!1),[n,r]=p.useState(!1),{user:i}=_e(),[o,d]=p.useState(!1),{handleApiError:l}=ba(),{showSuccess:c,showError:u}=Ge(),{deleteTeamHandler:f,isLoadingDeleteTeam:h}=ha(),w=async()=>{try{await f(t.id),c("Equipo eliminado correctamente")}catch(m){u(l(m))}};return e.jsxs("div",{className:"tw-h-52 tw-w-full tw-place-self-center tw-rounded-md tw-border tw-border-gray-100 tw-shadow-lg",children:[a&&e.jsx(ya,{handleChange:s,open:a,team:t}),o&&e.jsx(xa,{isLoading:h,open:o,handleChange:d,onConfirm:w,contentLabel:"Estás eliminando el equipo seleccionado"}),n&&e.jsx(_n,{handleChange:r,open:n,members:t.miembros}),e.jsxs("div",{className:"flex tw-h-full tw-w-full",children:[e.jsx("div",{className:"tw-h-full tw-rounded-bl-xl tw-rounded-tl-xl tw-border-l-[.6rem]",style:{borderColor:t.color}}),e.jsxs("div",{className:"flex flex-1 tw-p-6",children:[e.jsxs("div",{className:"flex-1 flex flex-col tw-h-full tw-justify-between",children:[e.jsx("p",{className:"tw-text-xl tw-font-semibold",children:t.nombre}),e.jsxs("div",{className:"flex tw-items-center tw-gap-x-6",children:[e.jsx("p",{className:"tw-text-lg tw-text-black-black_medium",children:"Integrantes:"})," ",e.jsx("p",{children:t.integrantes||0}),e.jsx(ee.Icons,{icon:"user",size:"xs",strokeWidth:4})]}),e.jsx("div",{children:e.jsx(In,{members:t.miembros_planos})})]}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-justify-between",children:[e.jsx("button",{onClick:()=>r(!0),children:e.jsx(ee.Icons,{icon:"eye",size:"xs",strokeWidth:4})}),(i==null?void 0:i.role)===fa&&e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>s(!0),children:e.jsx(ee.Icons,{icon:"pencil",size:"xs",strokeWidth:4})}),e.jsx("button",{onClick:()=>d(!0),children:e.jsx(ee.Icons,{icon:"trash",size:"xs",strokeWidth:4})})]})]})]})]})]})}function Fn({teams:t}){return e.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:t==null?void 0:t.map(a=>e.jsx(Dn,{team:a},a.id))})}const Pn=({title:t})=>e.jsxs("div",{className:"flex-1 tw-flex tw-items-center tw-gap-x-4",children:[e.jsx(M.Icon,{background:!0,name:"PlantillaOutlined",color:"blue",size:"lg"}),e.jsx("h1",{className:"tw-text-[24px] tw-font-bold tw-leading-none",children:t})]}),Mt={fase_plantilla:"",tipo_plantilla:"",modo_configuracion:"",categoria:"",formato_salida:"",tipo_medio:"",medio_especifico:"",responsable_impresion:"",pertenencia_medio:"",ubicacion_medio:""},Mn={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},An={fase_plantilla:"",tipo_plantilla:"",categoria:"",tipo_medio:"",medio_especifico:"",modo_configuracion:"",responsable_impresion:"",pertenencia_medio:"",ubicacion_medio:""},At={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},Se=qe.create(t=>({path:"",viewMode:"grid",isOpenModalLimit:!1,template:null,clave:"XX-XXX-XX-XXX-XX-X-X",templateFormData:Mt,disabledFields:At,claveParams:An,paramsTipo:Mn,isEditTemplate:!1,openModalCreateTemplate:!1,currentTemplateForEdit:null,refetch:null,openModalUnsavedChanges:!1,isDuplicateTemplate:!1,hasFormChanges:!1,openModalPublishTemplate:!1,currentTemplateId:null,openModalDeleteTemplate:!1,setPath:a=>t({path:a}),setViewMode:a=>t({viewMode:a}),setIsOpenModalLimit:a=>t({isOpenModalLimit:a}),setTemplate:a=>t({template:a}),setClave:a=>t({clave:a}),setTemplateFormData:a=>{t(s=>({templateFormData:{...s.templateFormData,...a}}))},resetTemplateFormData:()=>t({templateFormData:Mt}),setDisableField:({fields:a,value:s})=>{for(const n of a)t(r=>({disabledFields:{...r.disabledFields,[n]:s}}))},resetDisabledFields:()=>t({disabledFields:At}),setClaveParams:({field:a,value:s})=>{t(n=>({claveParams:{...n.claveParams,[a]:s}}))},resetClave:()=>t(a=>({clave:"XX-XXX-XX-XXX-XX-X-X"})),setParamTipo:a=>t(s=>({paramsTipo:{...s.paramsTipo,...a}})),setIsEditTemplate:a=>t({isEditTemplate:a}),setOpenModalCreateTemplate:a=>t({openModalCreateTemplate:a}),setCurrentTemplateForEdit:a=>t({currentTemplateForEdit:a}),setRefetch:a=>t({refetch:a}),setOpenModalUnsavedChanges:a=>t({openModalUnsavedChanges:a}),setIsDuplicateTemplate:a=>t({isDuplicateTemplate:a}),setHasFormChanges:a=>t({hasFormChanges:a}),setOpenModalPublishTemplate:a=>t({openModalPublishTemplate:a}),setCurrentTemplateId:a=>t({currentTemplateId:a}),setOpenModalDeleteTemplate:a=>t({openModalDeleteTemplate:a})})),Re={search:"",debouncedSearch:"",filters:[]},On={"kanban-general":{...Re},"lista-campanias":{...Re},"kanban-campania":{...Re},"teams-container":{...Re},"templates-container":{...Re}},jt=qe.create((t,a)=>({viewFilters:On,currentPath:null,debounceTimeouts:{},setCurrentPath:s=>{const n=a().currentPath;t({currentPath:s}),n&&n!==s&&a().resetPathData(n)},setSearch:(s,n)=>{const r=n||a().currentPath;if(!r)return;const i=`search_${r}`,o=a().debounceTimeouts[i];o&&clearTimeout(o),t(l=>({viewFilters:{...l.viewFilters,[r]:{...l.viewFilters[r],search:s}}}));const d=setTimeout(()=>{t(l=>({viewFilters:{...l.viewFilters,[r]:{...l.viewFilters[r],debouncedSearch:s}},debounceTimeouts:{...l.debounceTimeouts,[i]:void 0}}))},500);t(l=>({debounceTimeouts:{...l.debounceTimeouts,[i]:d}}))},setFilters:(s,n)=>{const r=n||a().currentPath;r&&t(i=>({viewFilters:{...i.viewFilters,[r]:{...i.viewFilters[r],filters:s}}}))},getSearch:s=>{var r;const n=s||a().currentPath;return n&&((r=a().viewFilters[n])==null?void 0:r.search)||""},getDebouncedSearch:s=>{var r;const n=s||a().currentPath;return n&&((r=a().viewFilters[n])==null?void 0:r.debouncedSearch)||""},getFilters:s=>{var r;const n=s||a().currentPath;return n?((r=a().viewFilters[n])==null?void 0:r.filters)||[]:[]},resetPathData:s=>{const n=`search_${s}`,r=a().debounceTimeouts[n];r&&clearTimeout(r),t(i=>({viewFilters:{...i.viewFilters,[s]:{...Re}},debounceTimeouts:{...i.debounceTimeouts,[n]:void 0}}))}})),qn=t=>{const{getSearch:a,getDebouncedSearch:s,setSearch:n,getFilters:r,setFilters:i,resetPathData:o}=jt();return{search:a(t),debouncedSearch:s(t),filters:r(t),setSearch:d=>n(d,t),setFilters:d=>i(d,t),resetData:()=>o(t)}};function Ln(t){const{users:a}=ta(),{tasks_api:s,getImageOBP:n}=we(),r=p.useMemo(()=>a.data?a.data.map(d=>{const{tasksUser:l,image:c}=d,u=n(c);return{value:l.id,label:l.nombre,icon:u}}):[],[a.data]),i=async d=>{const l=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:c}=await d.get(`/api/params-tipos?${l}`);return ge(c.data).flatMap((f,h)=>{const w={id:`group-${h+1}`,label:f.label,value:`group-${h+1}`,isGroupTitle:!0},m=f.params_plantillas.map(g=>({id:g.id,label:g.name,value:g.id,checked:!1,icon:"CheckCircleOutlined",iconColor:"blue"}));return[w,...m]})},o=de.useQuery({queryKey:["paramsPlantilla"],queryFn:()=>i(s),enabled:t==="templates-container",staleTime:1e3*60*30});return{userOptions:r,paramsPlantillasOptions:o.data||[]}}const Rn={estatus:{label:"Estatus de plantilla",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 de plantilla",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"propietario"},created_by:{label:"Creador de plantilla",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"created_by"},updated_by:{label:"Editor de plantilla",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"updated_by"},params_plantillas:{label:"Parámetro de plantilla",type:"group",placeholder:"Selecciona uno o varios...",options:[],keyName:"params_plantillas"}},zn={"templates-container":Rn,"kanban-general":null,"lista-campanias":null,"kanban-campania":null},$n=t=>({inputFilters:zn[t]||null}),Bn=t=>{const{inputFilters:a}=$n(t),{userOptions:s,paramsPlantillasOptions:n}=Ln(t);return{inputFilters:p.useMemo(()=>s.length>0&&n.length>0?[{...a.estatus},{...a.publication_date},{...a.propietario,options:s},{...a.created_by,options:s},{...a.updated_by,options:s},{...a.params_plantillas,options:n}]:null,[s,n])}};function Hn(){const{setFilters:t}=jt(),{refetch:a}=Se();return{handleApplyFilters:n=>{let r={...n};r=Object.fromEntries(Object.entries(r).filter(([i,o])=>!(o===""||o===null||Array.isArray(o)&&o.length===0))),"publication_date"in r&&r.publication_date!==""&&(r={...r,publication_date:it(r.publication_date).format("YYYY-MM-DD")}),t(r,"templates-container"),a&&a()}}}const be=qe.create((t,a)=>({mode:"grid",id:null,setMode:(s,n)=>{const r=a();if(s==="grid"||r.id!==null&&r.id!==n){const{clearAllGroupData:o}=a();o()}t({mode:s,id:n??null})},setId:s=>t({id:s}),reset:()=>{const{clearAllGroupData:s}=a();s(),t({mode:"grid",id:null})},addNode:null,addBranch:null,addNodeFromHandle:null,addNodeWithType:null,savePositions:null,loadPositions:null,clearPositions:null,activePlusNode:null,templateViewModes:{},setViewMode:(s,n)=>{const{templateViewModes:r}=a();t({templateViewModes:{...r,[s]:n}})},getViewMode:s=>{const{templateViewModes:n}=a();return n[s]??"readonly"},clearViewMode:s=>{const{templateViewModes:n}=a(),r={...n};delete r[s],t({templateViewModes:r})},expandedGroups:new Set,groupTemplateData:{},toggleGroupExpansion:s=>{const{expandedGroups:n}=a(),r=new Set(n);r.has(s)?r.delete(s):r.add(s),t({expandedGroups:r})},setGroupTemplateData:(s,n)=>{const{groupTemplateData:r}=a();t({groupTemplateData:{...r,[s]:n}})},clearGroupTemplateData:s=>{const{groupTemplateData:n}=a(),r={...n};delete r[s],t({groupTemplateData:r})},clearAllGroupData:()=>{t({expandedGroups:new Set,groupTemplateData:{}})},copiedNodes:[],setCopiedNodes:s=>t({copiedNodes:s}),clearCopiedNodes:()=>t({copiedNodes:[]}),expandGroup:null,collapseGroup:null})),Un=({path:t})=>t==="templates-container"?Kr():{header:null,body:null},Wn=({startPath:t,children:a})=>{const{path:s,setPath:n}=Se(),{setCurrentPath:r,getSearch:i,setSearch:o}=jt(),{inputFilters:d}=Bn(t),{handleApplyFilters:l}=Hn();p.useEffect(()=>{n(t),r(t)},[t]);const{header:c,body:u}=Un({path:s}),{viewMode:f,setViewMode:h}=Se(),{mode:w}=be(),m=i();return e.jsxs(M.Card,{fullWidth:!0,className:"tw-h-full",children:[e.jsxs(M.Card.Header,{className:"tw-flex tw-flex-wrap tw-items-center tw-gap-4",children:[c,w==="grid"&&e.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-justify-between tw-gap-2.5 md:tw-flex-nowrap",children:[e.jsx(M.Input,{leftSlot:"SearchOutlined",placeholder:"Buscar...",size:"sm",value:m,onChange:g=>o(g.target.value)}),e.jsxs("div",{className:"tw-flex tw-flex-wrap tw-items-center tw-gap-x-2.5 md:tw-flex-nowrap",children:[d&&e.jsx(M.Filters,{filters:d,onApply:l}),e.jsx(M.Button,{variant:"outlined",color:"white",colorIcon:"neutral",icon:f==="list"?"GridOutlined":"ListOutlined",className:"tw-min-w-fit ",onClick:()=>h(f==="list"?"grid":"list")})]})]})]}),e.jsx(M.Card.Separator,{}),e.jsx(M.Card.Body,{fullHeight:!0,className:"tw-flex tw-flex-1 tw-flex-col tw-gap-y-4",children:u})]})},Gn=()=>e.jsx(Pn,{title:"Plantillas"}),Fe=qe.create(t=>({activeTemplate:null,setActiveTemplate:a=>t({activeTemplate:a}),clearActiveTemplate:()=>t({activeTemplate:null})})),Ea=()=>{const{tasks_api:t}=we();return{getTemplateWithTasks:async s=>{var n;try{const r=Pe.stringify({filters:{plantilla:{id:s}}},{encodeValuesOnly:!0}),i=await t.get(`/api/plantillas/plantilla-tareas-grafico?${r}`);if(i.data&&i.data.data)return i.data.data;throw new Error(`No se encontraron datos para la plantilla con ID ${s}`)}catch(r){throw console.error("Error en getTemplateWithTasks:",{error:r.message,status:(n=r.response)==null?void 0:n.status}),r}}}},ve={DIRTY:"dirty",IDLE:"idle",NEW:"new"},Ee={DRAFT:"draft",PUBLISHED:"published",DELETED:"deleted"},ze="templates",$e="templates_states";function Kn(t,a){return qe.create((s,n)=>{let r=null;const i=f=>s({isLoading:f}),o=f=>s({error:f}),d=f=>s({data:f}),l=()=>new Promise((f,h)=>{const w=indexedDB.open(t.name,t.version);w.onerror=()=>{o("Error al abrir la base de datos"),h(new Error("Error al abrir la base de datos"))},w.onsuccess=()=>{r=w.result,s({isConnected:!0,error:null}),f(r)},w.onupgradeneeded=m=>{const g=m.target.result;t.stores.forEach(x=>{var b;if(!g.objectStoreNames.contains(x.name)){const j=g.createObjectStore(x.name,{keyPath:x.keyPath,autoIncrement:x.autoIncrement??!1});(b=x.indexes)==null||b.forEach(v=>{j.createIndex(v.name,v.keyPath,v.options)})}})}}),c=(f="readonly")=>{if(!r)throw new Error("Base de datos no conectada");return r.transaction(a,f)},u=(f="readonly")=>c(f).objectStore(a);return{data:[],isLoading:!1,error:null,isConnected:!1,connect:async()=>{try{i(!0),o(null),await l(),await n().getAll()}catch(f){o(f instanceof Error?f.message:"Error desconocido")}finally{i(!1)}},disconnect:()=>{r&&(r.close(),r=null,s({isConnected:!1,data:[]}))},add:async f=>{try{i(!0),o(null);const h=u("readwrite");return new Promise((w,m)=>{const g=h.add(f);g.onsuccess=async()=>{await n().getAll(),w()},g.onerror=()=>{o("Error al agregar elemento"),m(new Error("Error al agregar elemento"))}})}finally{i(!1)}},addMany:async f=>{try{i(!0),o(null);const h=u("readwrite");return new Promise((w,m)=>{let g=0,x=!1;f.forEach(b=>{const j=h.add(b);j.onsuccess=()=>{g++,g===f.length&&!x&&n().getAll().then(()=>w())},j.onerror=()=>{x||(x=!0,o("Error al agregar elementos"),m(new Error("Error al agregar elementos")))}})})}finally{i(!1)}},get:async f=>{try{o(null);const h=u();return new Promise((w,m)=>{const g=h.get(f);g.onsuccess=()=>{w(g.result)},g.onerror=()=>{o("Error al obtener elemento"),m(new Error("Error al obtener elemento"))}})}catch(h){o(h instanceof Error?h.message:"Error desconocido");return}},getAll:async()=>{try{o(null);const f=u();return new Promise((h,w)=>{const m=f.getAll();m.onsuccess=()=>{const g=m.result;d(g),h(g)},m.onerror=()=>{o("Error al obtener elementos"),w(new Error("Error al obtener elementos"))}})}catch(f){return o(f instanceof Error?f.message:"Error desconocido"),[]}},update:async(f,h)=>{try{i(!0),o(null);const w=u("readwrite");return new Promise((m,g)=>{const x=w.get(f);x.onsuccess=()=>{const b=x.result;if(!b){o("Elemento no encontrado"),g(new Error("Elemento no encontrado"));return}const j={...b,...h},v=w.put(j);v.onsuccess=async()=>{await n().getAll(),m()},v.onerror=()=>{o("Error al actualizar elemento"),g(new Error("Error al actualizar elemento"))}},x.onerror=()=>{o("Error al obtener elemento para actualizar"),g(new Error("Error al obtener elemento para actualizar"))}})}finally{i(!1)}},delete:async f=>{try{i(!0),o(null);const h=u("readwrite");return new Promise((w,m)=>{const g=h.delete(f);g.onsuccess=async()=>{await n().getAll(),w()},g.onerror=()=>{o("Error al eliminar elemento"),m(new Error("Error al eliminar elemento"))}})}finally{i(!1)}},clear:async()=>{try{i(!0),o(null);const f=u("readwrite");return new Promise((h,w)=>{const m=f.clear();m.onsuccess=()=>{d([]),h()},m.onerror=()=>{o("Error al limpiar store"),w(new Error("Error al limpiar store"))}})}finally{i(!1)}},query:async(f,h)=>{try{o(null);const m=u().index(f);return new Promise((g,x)=>{const b=m.getAll(h);b.onsuccess=()=>{g(b.result)},b.onerror=()=>{o("Error en consulta"),x(new Error("Error en consulta"))}})}catch(w){return o(w instanceof Error?w.message:"Error desconocido"),[]}},queryRange:async(f,h,w)=>{try{o(null);const g=u().index(f);return new Promise((x,b)=>{const j=IDBKeyRange.bound(h,w),v=g.getAll(j);v.onsuccess=()=>{x(v.result)},v.onerror=()=>{o("Error en consulta por rango"),b(new Error("Error en consulta por rango"))}})}catch(m){return o(m instanceof Error?m.message:"Error desconocido"),[]}}}})}const nt=new Map;function Ot(t,a,s=!0){const n=p.useMemo(()=>{const v=`${t.name}-${a}`;if(!nt.has(v)){const L=Kn(t,a);nt.set(v,L)}return nt.get(v)},[t.name,a]);p.useEffect(()=>{s&&!n.getState().isConnected&&n.getState().connect()},[s,n]);const r=n(v=>v.data),i=n(v=>v.isLoading),o=n(v=>v.error),d=n(v=>v.isConnected),l=p.useCallback(()=>n.getState().connect(),[n]),c=p.useCallback(()=>n.getState().disconnect(),[n]),u=p.useCallback(v=>n.getState().add(v),[n]),f=p.useCallback(v=>n.getState().addMany(v),[n]),h=p.useCallback(v=>n.getState().get(v),[n]),w=p.useCallback(()=>n.getState().getAll(),[n]),m=p.useCallback((v,L)=>n.getState().update(v,L),[n]),g=p.useCallback(v=>n.getState().delete(v),[n]),x=p.useCallback(()=>n.getState().clear(),[n]),b=p.useCallback((v,L)=>n.getState().query(v,L),[n]),j=p.useCallback((v,L,S)=>n.getState().queryRange(v,L,S),[n]);return{data:r,isLoading:i,error:o,isConnected:d,connect:l,disconnect:c,add:u,addMany:f,get:h,getAll:w,update:m,delete:g,clear:x,query:b,queryRange:j}}const Sa=p.createContext(void 0);function Qn({children:t}){const[a,s]=p.useState(!1),[n,r]=p.useState(!0),[i,o]=p.useState(null),d={name:"template_tabs_v1",version:2,stores:[{name:ze,keyPath:"id",autoIncrement:!1,indexes:[{name:"id",keyPath:"id",options:{unique:!0}}]},{name:$e,keyPath:"id",autoIncrement:!1,indexes:[{name:"id",keyPath:"id",options:{unique:!0}}]}]},l=Ot(d,ze,!0),c=Ot(d,$e,!0),u=p.useRef(new Map);u.current.has(ze)||u.current.set(ze,l),u.current.has($e)||u.current.set($e,c);const f=l.isConnected,h=l.error;p.useEffect(()=>{u.current.set(ze,l),u.current.set($e,c)},[l,c]);const w=p.useCallback(g=>{const x=u.current.get(g);if(!x)throw new Error(`Store ${g} no encontrado. Asegúrate de que esté configurada en indexedDBConfig.`);return{data:x.data,isLoading:x.isLoading,add:x.add,addMany:x.addMany,get:x.get,getAll:x.getAll,update:x.update,delete:x.delete,clear:x.clear,query:x.query,queryRange:x.queryRange,error:x.error}},[]);p.useEffect(()=>{(async()=>{try{if(r(!0),o(null),await l.connect(),f)s(!0);else throw new Error("No se pudo establecer la conexión con IndexedDB")}catch(x){o(x instanceof Error?x.message:"Error desconocido")}finally{r(!1)}})()},[l.connect,f]),p.useEffect(()=>{h&&o(h)},[h]);const m={isInitialized:a,isInitializing:n,error:i,isConnected:f,getStore:w};return e.jsx(Sa.Provider,{value:m,children:t})}function ka(){const t=p.useContext(Sa);if(t===void 0)throw new Error("useIndexedDBContext debe usarse dentro de IndexedDBProvider");return t}function vt(){const{getStore:t}=ka();return t(ze)}function Ia(){const{add:t}=vt(),a=async o=>{try{await t(o)}catch(d){console.error("Error al guardar plantilla a indexDB:",d)}},s=async o=>{const d={},l=c=>{c.id&&(d[c.id]=c),c.tareas&&Array.isArray(c.tareas)&&c.tareas.forEach(u=>{l(u)}),c.ids_t_dependientes&&Array.isArray(c.ids_t_dependientes)&&c.ids_t_dependientes.forEach(u=>{typeof u=="object"&&u.id&&l(u)}),c.plantilla_dependents&&Array.isArray(c.plantilla_dependents)&&c.plantilla_dependents.forEach(u=>{u.tarea_plantillas&&Array.isArray(u.tarea_plantillas)&&u.tarea_plantillas.forEach(f=>{l(f)})})};return o.tarea_plantillas.forEach(c=>{l(c)}),d},n=(o,d)=>{const l=d[o];if(!l)return[];const c=[l];return l.tareas&&Array.isArray(l.tareas)&&l.tareas.forEach(u=>{u.id&&c.push(...n(u.id,d))}),l.ids_t_dependientes&&Array.isArray(l.ids_t_dependientes)&&l.ids_t_dependientes.forEach(u=>{typeof u=="object"&&u.id?c.push(...n(u.id,d)):typeof u=="number"&&d[u]&&c.push(...n(u,d))}),c},r=(o,d)=>{const l=d[o];if(!l)return[];const c=[l];return l.tarea_padre&&d[l.tarea_padre]&&c.unshift(...r(l.tarea_padre,d)),c};return{hydrateTasks:async o=>{var c,u;const d=await s(o);return(u=(c=o==null?void 0:o.graph_layout)==null?void 0:c.snapshot)==null?void 0:u.nodes.map(f=>{if(f.type==="group")return{...f,data:{...f.data,type:"template"},type:"group",selected:!1};const h=f.data.tareaId?d[f.data.tareaId]:o;return h!=null&&h.start?{...f,data:{...h.plantilla,id:h.id},selected:!1}:{...f,data:{...h,type:"task"},selected:!1}})},initializeTemplateStore:a,indexedTasks:s,getTaskHierarchy:n,getTaskPath:r}}function Da(){const{getStore:t}=ka();return t($e)}const Xe=()=>{const{add:t,get:a,delete:s,update:n}=Da(),{get:r}=vt(),i={created:[],updated:[],deleted:[]},o=async({templateId:w})=>{const m=await a(w);return m||null};return{addTaskToState:async({task:w})=>{const m=await o({templateId:w.plantilla.id}),g=await r(w.plantilla.id);if(console.log("🔄 template:",g),!m)t({...i,id:w.plantilla.id,created:[...i.created,w]});else{const x=m.created.findIndex(b=>b.id===w.id);if(x!==-1){const b=m.created[x];m.created[x]={...b,...w},await n(w.plantilla.id,m)}else m.created.push(w),await n(w.plantilla.id,m)}},getTaskFromState:o,removeTemplateStates:async w=>{await s(w)},updateTaskInState:async({task:w})=>{const m=await o({templateId:w.plantilla.id}),x=(await r(w.plantilla.id)).graph_layout.snapshot.nodes;if(console.log("🔄 nodes:",x),m){const b=m.updated.findIndex(j=>j.id===w.id);if(b!==-1){const j=m.updated[b];console.log("🔄 currentTask:",j),m.updated[b]={...j,...w}}else m.updated.push(w);await n(w.plantilla.id,m)}else t({...i,id:w.plantilla.id,updated:[...i.updated,w]})},removeTaskFromState:async({templateId:w,id:m})=>{const g=await o({templateId:w});if(g){if(m>0){const b=g.deleted.findIndex(j=>j===m);if(b!==-1){g.deleted.splice(b,1),await n(w,g);return}}const x=g.created.findIndex(b=>b.id===m);if(x!==-1){g.created.splice(x,1),await n(w,g);return}}else if(m>0){t({...i,id:w,deleted:[...i.deleted,m]});return}},removeParentIdFromNodes:async({templateId:w,id:m})=>{const g=await o({templateId:w});if(g){const x=g.created.findIndex(j=>j.id===m);if(x!==-1){g.created[x].tarea_padre=null,g.created[x].id_t_requerida=null,await n(w,g);return}const b=g.updated.findIndex(j=>j.id===m);if(b!==-1){g.updated[b].tarea_padre=null,g.updated[b].id_t_requerida=null,await n(w,g);return}}},updateNodeWithNewEdge:async({templateId:w,edge:m,task:g})=>{console.log("🔵 updateNodeWithNewEdge - Inicio",{templateId:w,taskId:g.id,taskData:g});const x=await o({templateId:w});if(console.log("🔵 updateNodeWithNewEdge - Estado actual:",x),x){console.log("🔵 updateNodeWithNewEdge - Estado existe, buscando tarea...");const b=x.created.findIndex(v=>v.id===g.id);if(console.log("🔵 updateNodeWithNewEdge - Índice en created:",b),b!==-1){console.log("🔵 updateNodeWithNewEdge - Actualizando en created"),x.created[b]=g,await n(w,x),console.log("✅ updateNodeWithNewEdge - Actualizado en created");return}const j=x.updated.findIndex(v=>v.id===g.id);if(console.log("🔵 updateNodeWithNewEdge - Índice en updated:",j),j!==-1){console.log("🔵 updateNodeWithNewEdge - Actualizando en updated"),x.updated[j]=g,await n(w,x),console.log("✅ updateNodeWithNewEdge - Actualizado en updated");return}if(console.log("🔵 updateNodeWithNewEdge - Tarea no encontrada en arrays"),g.id&&g.id!==0){const v=g.id<0;v?(console.log("🔵 updateNodeWithNewEdge - Agregando a created (tarea nueva)"),x.created.push(g)):(console.log("🔵 updateNodeWithNewEdge - Agregando a updated (tarea existente)"),x.updated.push(g)),await n(w,x),console.log("✅ updateNodeWithNewEdge - Tarea agregada exitosamente a",v?"created":"updated")}else console.error("❌ updateNodeWithNewEdge - task.id no válido para agregar:",g.id)}else if(console.log("🔵 updateNodeWithNewEdge - Creando nuevo estado"),g.id&&g.id!==0){const b=g.id<0,j={...i,id:w,created:b?[g]:[],updated:b?[]:[g]};console.log("🔵 updateNodeWithNewEdge - Nuevo estado:",j,b?"(created)":"(updated)"),t(j),console.log("✅ updateNodeWithNewEdge - Estado creado exitosamente")}else console.error("❌ updateNodeWithNewEdge - task.id no válido:",g.id);console.log("🔵 updateNodeWithNewEdge - Fin")}}};function Ae(){const{activeTemplate:t,setActiveTemplate:a}=Fe(),{mode:s,setMode:n,setViewMode:r,clearViewMode:i}=be(),{template:o,setIsOpenModalLimit:d,setOpenModalUnsavedChanges:l,setOpenModalPublishTemplate:c,setOpenModalDeleteTemplate:u}=Se(),{hydrateTasks:f}=Ia(),{addTaskToState:h,removeTemplateStates:w}=Xe(),m=de.useQueryClient(),{data:g,add:x,update:b,get:j,getAll:v,delete:L,isLoading:S,error:k}=vt(),{get:N}=Da(),{getTemplateWithTasks:_}=Ea(),{tasks_api:P}=we(),[F,y]=p.useState(!1),[X,B]=p.useState(!1),[I,O]=p.useState(!1),H=p.useMemo(()=>g.sort((E,z)=>E.order-z.order),[g]);p.useEffect(()=>{H.length===0&&s!=="grid"&&n("grid")},[H,s,n]);const U=async(D,E=ve.IDLE)=>{var z;try{const A=await _(D.id),C=await f(A),V={id:crypto.randomUUID(),data:A,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},$=C||[V],J={...A,graph_layout:{...A==null?void 0:A.graph_layout,snapshot:{...(z=A==null?void 0:A.graph_layout)==null?void 0:z.snapshot,nodes:$}},estatus:E,estatusFromStrapi:A.estatus};await x(J)}catch(A){console.warn("No se pudieron obtener los datos completos de la plantilla, creando versión básica:",A);const C=D,V={id:crypto.randomUUID(),data:C,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},$={id:C.id,snapshot:{nodes:[V],edges:[],viewport:{x:0,y:0,zoom:1}},history:null,zoom:1,position:{x:0,y:0}},J={...C,graph_layout:C.graph_layout||$,estatus:E,tarea_plantillas:C.tarea_plantillas||[]};await x(J)}},K=async({template:D,checkTemplateInIndexedDB:E=!1,statusTemplate:z=ve.IDLE})=>{const A=H;if(!A.find(V=>V.id===D.id)){if(A.length===5){d(!0);return}if(E&&await j(D.id))return;await U({...D,order:A.length+1},z)}await ae(D.id),await te(D),n("create-edit",D==null?void 0:D.id)},te=async D=>{const E=await j(D.id);a(E)},ae=async D=>{try{let E=await v();E.sort((A,C)=>(A.order||0)-(C.order||0));const z=E.findIndex(A=>A.id===D);if(z!==-1){const[A]=E.splice(z,1);E.unshift(A),E.forEach((V,$)=>{V.order=$+1});const C=E.map(V=>b(V.id,V));await Promise.all(C)}else return}catch{}},Z=async D=>{try{await L(D),i(D);const E=await v();E.forEach((A,C)=>{A.order=C+1});const z=E.map(A=>b(A.id,A));await Promise.all(z)}catch{}};return{screens:H,isLoading:S,error:k,add:x,data:g,addScreen:U,openTemplate:K,update:b,delete:Z,get:j,activeTemplate:t,activateTemplate:te,reorderingTemplates:ae,replaceTemplate:async()=>{try{const D=[...H],E={...D[D.length-1]};await L(E.id);const z={...o,order:E.order};await U(z);const C=(await v()).sort(($,J)=>$.order-J.order);if(C.some(($,J)=>($.order||0)!==J+1)){const $=C.map((J,ne)=>({...J,order:ne+1}));for(const J of $)try{await b(J.id,J)}catch{}}}catch{}finally{d(!1)}},addTaskUpdatingTemplate:async(D,E,z="hija")=>{var $,J,ne,oe;const A=await j(E);if(!A)return null;const C={id:D.id,uuid:crypto.randomUUID(),reference_graph:D.reference_graph,texto_corto:D.title,texto_largo:D.description||"",prioridad:D.priority||null,nivel_dificultad:D.difficulty||1,duracion:D.duration||null,start:!1,type:"task",equipo:{id:Number(D.team)||null},responsable:{id:Number(D.responsible)||null},plantilla:{id:A.id,clave:A.clave,categoria:A.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:[],id_t_requerida:z==="dependiente"?(J=($=D.parent)==null?void 0:$.data)==null?void 0:J.id:null,ids_t_dependientes:[],tarea_padre:z==="hija"?(oe=(ne=D.parent)==null?void 0:ne.data)==null?void 0:oe.id:null,tareas:[]},V={...A,estatus:ve.DIRTY};return await b(E,V),t&&t.id===E&&a(V),await h({task:C}),C},addTemplateUpdatingTemplate:async(D,E,z,A="hija")=>{let C=null;if(t&&t.id===E?C=t:C=await j(E),!C)return null;const V=(J,ne,oe,ie)=>{for(let ce=0;ce<J.length;ce++){const ue=J[ce];if(ue.id===ne||ue.uuid===ne)return ie==="dependiente"?(ue.plantilla_dependents||(ue.plantilla_dependents=[]),ue.plantilla_dependents.push(oe)):ie==="hija"&&(ue.plantilla_dependents||(ue.plantilla_dependents=[]),ue.plantilla_dependents.push(oe)),!0;if(ue.tareas&&ue.tareas.length>0){const le=V(ue.tareas,ne,oe,ie);if(le)return le}}return!1};if(V(C.tarea_plantillas,z,D,A)){const J={...C,estatus:ve.DIRTY,updatedAt:new Date().toISOString()};return await b(E,J),t&&t.id===E&&a(J),!0}else return!1},updateGraphLayout:async(D,E)=>{var z;if(!D){console.warn("⚠️ updateGraphLayout - Template ID no válido");return}try{const A=await j(D);if(!A){console.warn("⚠️ updateGraphLayout - Template no encontrado");return}const C=(E.nodes||[]).filter(ie=>{var ce;return!((ce=ie.data)!=null&&ce.isInternal)&&!ie.parentId}).map(ie=>{const{style:ce,measured:ue,data:le,...pe}=ie,{expandedDimensions:xe,isExpanded:fe,needsReExpansion:Me,...he}=le||{},Oe=ce?{...ce,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...pe,style:Oe,data:he,position:ie.position}}),V=(E.edges||[]).filter(ie=>{var ce;return!((ce=ie.data)!=null&&ce.isInternal)}).map(ie=>{var ce;if((ce=ie.data)!=null&&ce.redirectedToInternal){const{redirectedToInternal:ue,originalTarget:le,...pe}=ie.data;return{...ie,target:le||ie.target,data:pe}}return ie}),$={...E,nodes:C,edges:V},J=(z=A.graph_layout)==null?void 0:z.snapshot;if(!(!J||JSON.stringify(J)!==JSON.stringify($)))return;const oe={...A,graph_layout:{...A.graph_layout,snapshot:$},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await b(D,oe),t&&t.id===D&&a(oe)}catch(A){console.error("❌ updateGraphLayout - Error:",A)}},saveTemplateChanges:async(D=!0)=>{try{if(t.estatus===ve.DIRTY){B(!0);const{id:E}=t,z=await j(E),A=await N(E),C=z.graph_layout.snapshot.nodes||[],V=C.filter(oe=>{var ie;return!((ie=oe.data)!=null&&ie.isInternal)&&!oe.parentId}),$=C.length-V.length;$>0&&console.warn(`💾 [saveTemplateChanges] Se filtraron ${$} nodos internos al guardar plantilla ${E}`);const J={graph_layout:{...z.graph_layout,snapshot:{...z.graph_layout.snapshot,nodes:V.map(oe=>{const{style:ie,measured:ce,selected:ue,...le}=oe,pe=ie?{...ie,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return oe.type==="group"?{...le,style:pe,data:{tareaId:oe.data.id&&oe.data.id>0?oe.data.id:null,clave:oe.data.clave,estatus:oe.data.estatus,updatedAt:oe.data.updatedAt,id:oe.data.id}}:{...le,style:pe,data:{tareaId:oe.data.id&&oe.data.id>0?oe.data.id:null}}}),edges:(z.graph_layout.snapshot.edges||[]).filter(oe=>{var ie;return!((ie=oe.data)!=null&&ie.isInternal)})}},tasks:{created:(A==null?void 0:A.created)||[],updated:(A==null?void 0:A.updated)||[],deleted:(A==null?void 0:A.deleted)||[]}},ne=await P.post("/api/tareas/save-tareas-grafico",{data:J});if(ne.data&&ne.status===200){if(console.log("🗑️ Invalidando caché de la plantilla:",E),await m.invalidateQueries({queryKey:["template",E]}),await m.invalidateQueries({queryKey:["template"]}),console.log("✅ Caché invalidado exitosamente"),w(E),D)Z(E),l(!1);else{const oe={...t,estatus:ve.IDLE};await b(E,oe),a(oe)}r(E,"readonly")}}}catch(E){console.log(E)}finally{B(!1)}},publishTemplate:async D=>{try{y(!0);const E={estatus:Ee.PUBLISHED,publication_date:new Date},z=await P.put(`/api/plantillas/plantilla-update-estatus/${D}`,{data:E});z.data&&z.status===200&&(a({...t,estatusFromStrapi:Ee.PUBLISHED}),c(!1),M.toast.info("Se publicó correctamente el proceso"))}catch(E){console.log(E),M.toast.error("Surgió un error al publicar el proceso")}finally{y(!1)}},deleteTemplate:async D=>{try{O(!0);const E={estatus:Ee.DELETED,sjdaksd:0},z=await P.put(`/api/plantillas/plantilla-update-estatus/${D}`,{data:E});z.data&&z.status===200&&(u(!1),M.toast.info("Se eliminó correctamente el proceso"))}catch(E){console.error(E),M.toast.error("Surgión un error al eliminar el proceso")}finally{O(!1)}},loadingPublishTemplate:F,loadingSaveChanges:X,loadingDeleteTemplate:I}}const Fa=()=>{const{users:t,isLoading:a}=Ke(),{getImageOBP:s}=we();return{getImageByEmail:i=>{const o=t==null?void 0:t[i];return s(o==null?void 0:o.image)},getNameByEmail:i=>{const o=t==null?void 0:t[i];return(o==null?void 0:o.nombre)||""},isLoading:a}},Ye=({isLoading:t})=>t?e.jsxs("div",{className:"fixed inset-0 flex items-center justify-center z-50",children:[e.jsx("div",{className:"absolute inset-0",style:{backgroundColor:"rgba(255, 255, 255, 0.5)"}}),e.jsx("div",{className:"relative flex flex-col items-center gap-4",children:e.jsx(M.Spinner,{})})]}):null,Pa=({fullWidth:t,mode:a="grid",onClick:s,active:n,template:r,withOptions:i=!0})=>{const{openTemplate:o}=Ae(),{getImageByEmail:d,getNameByEmail:l}=Fa(),{setIsEditTemplate:c,setOpenModalCreateTemplate:u,setCurrentTemplateForEdit:f,setIsDuplicateTemplate:h,setOpenModalPublishTemplate:w,setCurrentTemplateId:m,setOpenModalDeleteTemplate:g}=Se(),x=["blue","blue-dark","blue-light","orange","white","green","red"],[b,j]=p.useState(!1),v=async()=>{if(j(!0),a==="grid")try{j(!0),await o({template:r,checkTemplateInIndexedDB:!0})}catch(K){console.error(K)}finally{j(!1)}s==null||s(r==null?void 0:r.id)},L=K=>{c(!0),u(!0),f(K)},S=K=>{h(!0),u(!0),f(K)},k=()=>{m(r==null?void 0:r.id),w(!0)},N=()=>{m(r==null?void 0:r.id),g(!0)},_=(r==null?void 0:r.dias_duracion)===1?"Día":"Días",P=(r==null?void 0:r.counts_tasks)===1?"Tarea":"Tareas",F=(r==null?void 0:r.estatus)===Ee.PUBLISHED?it(r==null?void 0:r.publication_date).format("DD/MM/YYYY"):it(r==null?void 0:r.createdAt).format("DD/MM/YYYY"),y=(r==null?void 0:r.updated_by)||(r==null?void 0:r.created_by),X=d(y==null?void 0:y.email),B=l(y==null?void 0:y.email)||"",I=(B==null?void 0:B.charAt(0))||"",O=(r==null?void 0:r.estatus)===Ee.PUBLISHED?"Fecha de publicación":"Fecha de creación",H=(r==null?void 0:r.estatus)===Ee.DRAFT,U=K=>{const te=K.split("-");return e.jsx(e.Fragment,{children:te.map((ae,Z)=>e.jsxs("span",{children:[ae,Z<te.length-1&&e.jsx("span",{className:"tw-text-neutral-200",children:"-"})]},Z))})};return e.jsxs(M.Card,{active:n,fullWidth:t,onClick:v,className:`${t?"md:tw-flex-row":"tw-flex-col"}`,children:[e.jsx(Ye,{isLoading:b}),e.jsx(M.Card.Header,{children:e.jsx("div",{className:"ui-flex ui-justify-between ui-items-start ui-gap-x-2",children:e.jsxs("div",{className:"ui-flex ui-justify-between ui-items-start ui-gap-2 ui-flex-1",children:[e.jsxs("div",{className:"ui-flex ui-gap-y-0.5 ui-flex-col ui-place-items-start",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Icon,{name:"TaskOutlined",color:"blue_soft",size:"3xl",className:"ui-p-0.5"}),e.jsx("h1",{className:"ui-text-base ui-py-0.5 ui-font-bold tw-leading-normal tw-text-neutral-900",children:U((r==null?void 0:r.clave)||(r==null?void 0:r.nombre_plantilla))})]}),e.jsxs("div",{className:"ui-flex ui-items-center ui-gap-x-1",children:[e.jsx(M.Tag,{color:(r==null?void 0:r.estatus)==="published"?"green":"neutral",size:"xs",label:(r==null?void 0:r.estatus)==="published"?"Publicado":"Borrador",variant:"outlined",rounded:!0,borderable:!1}),!(typeof F=="string"&&F==="Invalid date")&&e.jsx(M.Tooltip,{label:O,children:e.jsx("p",{className:"ui-text-xxs ui-text-neutral-500 ui-font-semibold",children:F})})]})]}),!t&&e.jsx(M.Popup,{color:"white",size:"md",rounded:!0,variant:"outlined",icon:"ElipsisOutlined",stopPropagationList:!0,children:e.jsxs(M.List,{children:[r.estatus!==Ee.PUBLISHED&&r.counts_tasks>2&&e.jsx(M.ListItem,{icon:"ArrowUpOutlined",onClick:k,children:"Publicar"}),e.jsx(M.ListItem,{icon:"EditOutlined",onClick:()=>{L(r)},children:"Editar parámetros"}),e.jsx(M.ListItem,{icon:"EditOutlined",children:"Editar tareas"}),H&&e.jsx(M.ListItem,{icon:"CloneOutlined",onClick:K=>{K.stopPropagation(),S(r)},children:"Duplicar"}),H&&e.jsx(M.ListItem,{color:"red",icon:"TrashOutlined",onClick:N,children:"Eliminar"})]})})]})})}),e.jsx(M.Card.Separator,{vertical:t}),e.jsx(M.Card.Body,{className:"ui-flex ui-flex-wrap ui-gap-x-2 ui-gap-y-1 tw-w-full md:tw-w-auto tw-flex-wrap tw-flex-1",children:r==null?void 0:r.params_plantillas.map((K,te)=>{const ae=x[te%x.length];return e.jsx(M.Tag,{color:ae,size:"xs",borderable:ae==="white",label:K.name},K.name)})}),!t&&e.jsx(M.Card.Separator,{vertical:t}),e.jsxs(M.Card.Footer,{className:"ui-flex ui-justify-between tw-w-full md:tw-w-auto tw-gap-x-4",children:[e.jsxs("div",{className:`tw-flex tw-flex-1 ${t?"tw-gap-x-2 md:tw-gap-20 lg:tw-gap-32 2xl:tw-gap-44":""}`,children:[e.jsx("div",{className:`ui-flex ui-gap-x-1 ui-justify-center tw-items-center ui-flex-1 ${t?"tw-flex-col":"tw-flex-row"}`,children:e.jsx(M.Tooltip,{label:"Tareas totales",children:e.jsxs("div",{className:`tw-flex tw-items-center tw-gap-2 ${t?"tw-flex-col":"tw-flex-row"}`,children:[e.jsx("p",{className:"ui-text-blue-500 ui-text-xs tw-text-center tw-leading-none tw-font-semibold",children:(r==null?void 0:r.counts_tasks)||0}),e.jsx("p",{className:"ui-text-neutral-500 ui-text-xxs tw-leading-none",children:P})]})})}),e.jsx("div",{className:`ui-flex ui-gap-x-1 ui-justify-center tw-items-center ui-flex-1 ${t?"tw-flex-col":"tw-flex-row"}`,children:e.jsx(M.Tooltip,{label:"Tareas totales",children:e.jsxs("div",{className:`tw-flex tw-items-center tw-gap-2 ${t?"tw-flex-col":"tw-flex-row"}`,children:[e.jsx("p",{className:"ui-text-blue-500 ui-text-xs tw-text-center tw-leading-none tw-font-semibold",children:(r==null?void 0:r.dias_duracion)||0}),e.jsx("p",{className:"ui-text-neutral-500 ui-text-xxs tw-leading-none",children:_})]})})}),e.jsxs("div",{className:`ui-flex ui-gap-x-1 ui-justify-center tw-items-center ui-flex-1 ${t?"tw-flex-col-reverse tw-gap-y-1":"tw-flex-row"}`,children:[e.jsx("p",{className:"ui-text-neutral-500 ui-text-xxs",children:"Editor"}),e.jsx(M.Tooltip,{label:B,children:e.jsx(M.Visual,{slot:X,size:"md",fallback:I})})]})]}),t&&i&&e.jsx(M.Card.Separator,{vertical:t}),i&&e.jsx("div",{className:`tw-w-auto ${t?"tw-flex tw-items-center":""}`,children:t&&e.jsx(M.Button,{color:"white",size:"sm",variant:"outlined",rounded:!0,tooltipPosition:"top",tooltip:(r==null?void 0:r.estatus)==="published"?"No se puede editar una plantilla publicada":"",disabled:(r==null?void 0:r.estatus)==="published",icon:"ElipsisOutlined",onClick:v})})]})]})},Vn={1:"blue",2:"green",3:"red",4:"yellow"},Xn=({difficulty:t})=>e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end",children:[e.jsx(M.Icon,{name:"HardOutlined",size:"lg",color:Vn[t]}),e.jsx("p",{className:"tw-text-[10px] tw-text-neutral-500",children:"Dificultad"})]}),Yn=({duration:t})=>e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end",children:[e.jsx("p",{className:"tw-text-lg ui-text-blue-500",children:t}),e.jsx("p",{className:"tw-text-[10px] tw-text-neutral-500",children:"Duración"})]}),Jn={1:"neutral",2:"blue",3:"yellow",4:"red"},Zn=({priority:t})=>e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end",children:[e.jsx(M.Icon,{name:"FlagOutlined",size:"lg",color:Jn[t]}),e.jsx("p",{className:"tw-text-[10px] tw-text-neutral-500",children:"Prioridad"})]}),er=({responsible:t})=>{const{users:a,isLoading:s}=yt(),{getImageByEmail:n,isLoading:r}=Fa();if(s||r)return null;const i=a==null?void 0:a.find(o=>o.id===parseInt(t==null?void 0:t.id));return e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-justify-end",children:[e.jsx(M.Visual,{size:"md",slot:n(t==null?void 0:t.email),fallback:(i==null?void 0:i.name.charAt(0))||"D"}),e.jsx("p",{className:"tw-text-[10px] tw-text-neutral-500",children:"Responsable"})]})},tr=async t=>{const a=Pe.stringify({fields:["id","nombre"],sort:["nombre:asc"]},{encodeValuesOnly:!0}),s=await t.get(`/api/equipos?${a}`);return s.data?{data:ge(s.data.data)}:{data:[]}},ar=()=>{const{tasks_api:t}=we();return de.useQuery({queryKey:["teams"],queryFn:()=>tr(t),staleTime:1e3*60*60*24,select:s=>s.data.map(r=>({label:r.nombre,value:r.id}))})},sr=[{label:"Muy alta",value:4,icon:"FlagOutlined",iconColor:"red"},{label:"Alta",value:3,icon:"FlagOutlined",iconColor:"yellow"},{label:"Media",value:2,icon:"FlagOutlined",iconColor:"blue"},{label:"Baja",value:1,icon:"FlagOutlined",iconColor:"neutral"}],nr=[{label:"Muy alta",value:4,icon:"HardOutlined",iconColor:"red"},{label:"Alta",value:3,icon:"HardOutlined",iconColor:"yellow"},{label:"Media",value:2,icon:"HardOutlined",iconColor:"blue"},{label:"Baja",value:1,icon:"HardOutlined",iconColor:"neutral"}],rr=[{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}],Ma=({isOpen:t,onClose:a,onSuccess:s,nodeDataType:n,parentNodeInfo:r,editMode:i=!1,taskToEdit:o})=>{const{data:d}=ar(),{users:l}=yt(),{users:c}=Ke(),{getImageOBP:u}=we(),f=p.useMemo(()=>{try{return!l||!c?[]:l.map(N=>{const _=c[N.email],P=_!=null&&_.image?u(_.image):"";return{label:N.name,value:N.id.toString(),icon:P}})}catch(N){return console.error("Error mapeando usuarios:",N),[]}},[l,c]),h=()=>{if(i&&o){const N=y=>{if(y==null)return"";const X=Number(y);return isNaN(X)?"":X},_=y=>y?typeof y=="string"?Number(y)||"":y.id||"":"",P=y=>{var X;return y?typeof y=="string"?y:((X=y.id)==null?void 0:X.toString())||y.name||y.nombre||"":""};return{title:o.texto_corto||"",description:o.texto_largo||"",priority:N(o.prioridad),difficulty:N(o.nivel_dificultad),duration:N(o.duracion),team:_(o.equipo),responsible:P(o.responsable),type:"tarea"}}return{title:"",description:"",priority:"",difficulty:"",duration:"",team:"",responsible:"",type:"tarea"}},{control:w,handleSubmit:m,formState:{errors:g,isValid:x},reset:b,watch:j}=je.useForm({mode:"onChange",defaultValues:h()});p.useEffect(()=>{t&&b(h())},[t,i,o,b]);const v=j(),L=x&&v.title&&v.description&&v.priority&&v.difficulty&&v.duration&&v.team&&v.responsible&&Object.keys(g).length===0,S=async N=>{try{if(["title","description","priority","difficulty","duration","team","responsible"].filter(F=>!N[F]).length>0)return;s&&s({...N,parent:r}),b()}catch{}},k=()=>{b(),a()};return e.jsx(M.Drawer,{titleIcon:"TaskOutlined",isOpen:t,onClose:k,onSuccess:()=>{m(N=>{S(N)},N=>{const _=Object.entries(N).map(([P,F])=>`${P}: ${F.message}`).join(`
102
102
  `);console.log(`📝 Por favor, completa los siguientes campos:
103
- `+_)})()},title:i?"Editar tarea":"Nueva tarea",successButtonText:i?"Actualizar":"Crear",disabledSuccessButton:!L,children:e.jsxs("form",{className:"tw-flex tw-flex-col tw-gap-4",children:[e.jsx(je.Controller,{control:w,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 _;return e.jsx(M.Input,{fullWidth:!0,label:"Título",placeholder:"Ingresa el título de la tarea...",error:(_=g.title)==null?void 0:_.message,...N})}}),e.jsx(je.Controller,{control:w,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 _;return e.jsx(M.Input,{fullWidth:!0,label:"Descripción",placeholder:"Describe la tarea a realizar...",error:(_=g.description)==null?void 0:_.message,...N})}}),e.jsx(M.Separator,{}),e.jsx(je.Controller,{control:w,name:"priority",rules:{required:"La prioridad es obligatoria"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Prioridad",placeholder:"Selecciona la prioridad...",options:sr,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(je.Controller,{control:w,name:"difficulty",rules:{required:"La dificultad es obligatoria"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Dificultad",placeholder:"Selecciona la dificultad...",options:nr,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(je.Controller,{control:w,name:"duration",rules:{required:"La duración es obligatoria"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Duración",placeholder:"Selecciona la duración...",options:rr,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(M.Separator,{}),e.jsx(je.Controller,{control:w,name:"team",rules:{required:"El equipo es obligatorio"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Equipo",placeholder:"Selecciona el equipo...",options:d,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(je.Controller,{control:w,name:"responsible",rules:{required:"El responsable es obligatorio"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,absolute:!0,label:"Responsable",placeholder:"Selecciona el responsable...",options:f,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})})]})})},or=()=>{const{get:t}=Ae(),a=Fe(i=>i.activeTemplate),{updateTaskInState:s,addTaskToState:n}=Xe();return{updateTaskInTemplate:async(i,o)=>{if(!a)return console.error("No hay plantilla activa"),!1;try{const d=await t(a.id);if(!d)return console.error("Plantilla no encontrada"),!1;console.log("🔄 updatedTaskData:",o);const l={id:i,uuid:o.uuid||crypto.randomUUID(),reference_graph:o.reference_graph||null,texto_corto:o.texto_corto||"",texto_largo:o.texto_largo||"",prioridad:o.prioridad||null,nivel_dificultad:o.nivel_dificultad||1,duracion:o.duracion||null,start:o.start||!1,equipo:o.equipo||null,responsable:o.responsable||null,plantilla:{id:d.id,clave:d.clave,categoria:d.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:o.plantilla_dependents||[],id_t_requerida:o.id_t_requerida||null,ids_t_dependientes:o.ids_t_dependientes||[],tarea_padre:o.tarea_padre||null,tareas:o.tareas||[]};i>0?await s({task:l}):await n({task:l})}catch(d){return console.error("❌ Error al actualizar tarea en plantilla:",d),!1}}}},ye={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"},qt={dependiente:{stroke:"#3B82F6",strokeDasharray:"5,5",strokeWidth:2},normal:{stroke:"#6B7280",strokeWidth:2}},Lt=t=>{const a=t.map(s=>({...s}));return a.filter(s=>s.type==="group").forEach(s=>{const n=a.filter(u=>u.parentId===s.id);if(n.length===0)return;const r=Math.min(...n.map(u=>u.position.x)),o=Math.max(...n.map(u=>{var f;return u.position.x+(typeof((f=u.style)==null?void 0:f.width)=="number"?u.style.width:ye.DEFAULT_CHILD_WIDTH)}))-r,d=Math.min(...n.map(u=>u.position.y)),c=Math.max(...n.map(u=>{var f;return u.position.y+(typeof((f=u.style)==null?void 0:f.height)=="number"?u.style.height:ye.DEFAULT_CHILD_HEIGHT)}))-d;s.style={...s.style??{},width:o,height:c}}),a},rt=t=>t.source===ye.START_NODE_ID||t.target===ye.START_NODE_ID,Be=t=>t===ye.START_NODE_ID,ir=t=>t==="dependiente"?qt.dependiente:qt.normal,lr=(t,a,s)=>({id:t,type:"main",position:a,selected:!1,deletable:!0,data:s}),ot=(t,a,s,n,r,i=!1,o=null,d=null)=>{const l=ir(n),c=i?ye.DEFAULT_SOURCE_HANDLE:s;return{id:`edge-${t}-${a}`,source:t,sourceHandle:c,target:a,targetHandle:ye.DEFAULT_TARGET_HANDLE,type:"smoothstep",deletable:!0,style:l,markerEnd:{type:"arrowclosed",width:12,height:12,color:l.stroke,strokeWidth:1},data:{connectionType:n,nodeType:r,isFromStartNode:i,parentId:o,childId:d}}},cr=(t,a)=>!(!t||!a||t===a),dr=t=>{const{clientX:a,clientY:s}="changedTouches"in t?t.changedTouches[0]:t;return{x:a,y:s}},ur=t=>t.filter(a=>a.type==="position"&&a.dragging===!1),Aa=t=>t.map(a=>a.id),Oa=({nodes:t,edges:a,setNodes:s,setEdges:n,newNodePopup:r,connectionPopup:i,closeNewNodePopup:o,closeConnectionPopup:d,setIsConnectingExistingNodes:l})=>{const{screenToFlowPosition:c,getNode:u,setViewport:f,fitView:h}=re.useReactFlow(),{get:w,update:m,addTaskUpdatingTemplate:g,addTemplateUpdatingTemplate:x}=Ae(),b=Fe(B=>B.activeTemplate),j=de.useQueryClient(),v=Fe(B=>B.setActiveTemplate),{removeTaskFromState:L,updateNodeWithNewEdge:S,updateTaskInState:k}=Xe(),N=p.useCallback(async B=>{const I=t.find(H=>H.id===B);if(!(I!=null&&I.data))return null;if(I.id===ye.START_NODE_ID){if(!b)return null;try{const H=await w(b.id),U=H.tarea_plantillas.find(K=>K.start===!0);return U!=null&&U.id?U.id:H.tarea_plantillas.length>0?H.tarea_plantillas[0].id:null}catch{return null}}const O=I.data.id;if(!O&&O!==0)return null;if(typeof O=="string"){if(O.includes("-"))return O;{const H=parseInt(O,10);return isNaN(H)?null:H}}else if(typeof O=="number")return O;return null},[t,b,w]),_=p.useCallback(async(B=t,I=a)=>{var O,H,U,K,te,ae,Z;if(!b){M.toast.warning("No hay template activo para actualizar layout");return}try{const se=await w(b.id);if(!se){M.toast.warning("Template no encontrado en IndexedDB");return}const T=(O=se.graph_layout)==null?void 0:O.snapshot;if(!(!T||JSON.stringify(T.nodes)!==JSON.stringify(B)||JSON.stringify(T.edges)!==JSON.stringify(I))){console.log("🔄 No hay cambios en el layout, omitiendo actualización");return}const Y=B.filter(G=>{var D;return!((D=G.data)!=null&&D.isInternal)&&!G.parentId}).map(G=>{const{style:D,measured:E,data:z,selected:A,...C}=G,{expandedDimensions:V,isExpanded:$,needsReExpansion:J,...ne}=z||{},oe=D?{...D,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...C,style:oe,data:ne}}),W=I.filter(G=>{var D;return!((D=G.data)!=null&&D.isInternal)}),q={...se,graph_layout:{id:((H=se.graph_layout)==null?void 0:H.id)||0,snapshot:{nodes:Y,edges:W,viewport:((K=(U=se.graph_layout)==null?void 0:U.snapshot)==null?void 0:K.viewport)||{x:0,y:0,zoom:1}},history:((te=se.graph_layout)==null?void 0:te.history)||[],zoom:((ae=se.graph_layout)==null?void 0:ae.zoom)||1,position:((Z=se.graph_layout)==null?void 0:Z.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await m(b.id,q),console.log("🗑️ [useFlowActions] Invalidando caché de la plantilla:",b.id),await j.invalidateQueries({queryKey:["template",b.id]}),await j.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlowActions] Caché invalidado exitosamente"),v(q)}catch(se){console.error("❌ Error al actualizar template layout:",se)}},[b,w,m,t,a,v]),P=p.useCallback(async(B=[],I=[],O,H)=>{var K,te,ae,Z,se,T,R,Y,W,q,G,D;const U=O||(b==null?void 0:b.id);if(!U){M.toast.warning("No hay template ID disponible para actualizar");return}try{const E=await w(U);if(!E)return;const z=(ae=(te=(K=E.graph_layout)==null?void 0:K.snapshot)==null?void 0:te.nodes)==null?void 0:ae.filter(V=>{var $;return!B.includes(V.id)&&!(($=V.data)!=null&&$.isInternal)&&!V.parentId}).map(V=>{const{style:$,measured:J,data:ne,...oe}=V,{expandedDimensions:ie,...ce}=ne||{},ue=$?{...$,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...oe,style:ue,data:ce}}),A=((T=(se=(Z=E.graph_layout)==null?void 0:Z.snapshot)==null?void 0:se.edges)==null?void 0:T.filter(V=>{var $;return!B.includes(V.source)&&!B.includes(V.target)&&!(($=V.data)!=null&&$.isInternal)}))||[],C={...E,graph_layout:{id:((R=E.graph_layout)==null?void 0:R.id)||0,snapshot:{nodes:z,edges:A,viewport:((W=(Y=E.graph_layout)==null?void 0:Y.snapshot)==null?void 0:W.viewport)||{x:0,y:0,zoom:1}},history:((q=E.graph_layout)==null?void 0:q.history)||[],zoom:((G=E.graph_layout)==null?void 0:G.zoom)||1,position:((D=E.graph_layout)==null?void 0:D.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await L({templateId:U,id:H||0}),await m(U,C),console.log("🗑️ [useFlowActions:updateAfterDeleted] Invalidando caché de la plantilla:",U),await j.invalidateQueries({queryKey:["template",U]}),await j.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlowActions:updateAfterDeleted] Caché invalidado exitosamente"),U===(b==null?void 0:b.id)&&v(C)}catch(E){console.error("❌ updateAfterDeleted - Error al actualizar template layout:",E)}},[b,w,m,a,t,L,v]),F=p.useCallback(async(B,I,O)=>{if(!r||!b)return;const{nodeId:H,sourceNodeId:U,sourceHandleId:K}=r;if(U)try{const te=await N(U);if(!te)return;if(B==="plantilla"){const ae=O;if(!(ae!=null&&ae.templateId))return;if(!await x(ae.templateId,b.id,te,I)){M.toast.error("No se pudo agregar la plantilla. Intenta nuevamente."),o();return}try{const G=await w(b.id);if(G){const D=(z,A)=>{for(const C of z){if(C.id===A||C.uuid===A)return C;if(C.tareas&&C.tareas.length>0){const V=D(C.tareas,A);if(V)return V}}return null},E=D(G.tarea_plantillas,te);if(E&&E.id){const z=(E.plantilla_dependents||[]).map(C=>typeof C=="object"&&C.id?{id:C.id}:typeof C=="number"?{id:C}:C),A={...E,plantilla_dependents:z,plantilla:{id:b.id,clave:G.clave,categoria:G.categoria||{id:0,nombre:"Sin categoría"}}};await k({task:A}),console.log("✅ Tarea padre agregada a templates_states.updated con plantilla_dependents:",E.id,A.plantilla_dependents)}}}catch(G){console.error("❌ Error al actualizar tarea padre en templates_states:",G)}const se=c({x:r.position.x,y:r.position.y}),T=ae.templateData||{id:ae.templateId,nombre_plantilla:`Plantilla ${ae.templateId}`,clave:`TPL-${ae.templateId}`,estatus:"activo",categoria:null,counts_tasks:0,dias_duracion:0},R={id:H,type:"group",position:se,selected:!1,deletable:!0,data:{id:ae.templateId,templateId:ae.templateId,type:"template",nombre_plantilla:T.nombre_plantilla||`Plantilla ${ae.templateId}`,clave:T.clave||`TPL-${ae.templateId}`,estatus:T.estatus||"activo",categoria:T.categoria||null,counts_tasks:T.counts_tasks||0,dias_duracion:T.dias_duracion||0,tarea_plantillas:T.tarea_plantillas||[],params_plantillas:T.params_plantillas||[],createdAt:T.createdAt||new Date().toISOString(),updatedAt:T.updatedAt||new Date().toISOString(),created_by:T.created_by||null,updated_by:T.updated_by||null}};s(G=>[...G,R]);const Y=K||ye.DEFAULT_SOURCE_HANDLE,W=Be(U),q=ot(U,H,Y,I,"plantilla",W,te);n(G=>[...G,q]);try{const G=[...t,R],D=[...a,q];await _(G,D)}catch(G){console.error("❌ Error al actualizar layout después de agregar plantilla:",G)}}else if(B==="tarea"){const ae=O;if(!ae)return;const Z=c({x:r.position.x,y:r.position.y}),se=-new Date().getTime(),T={id:se,reference_graph:H,title:ae.title,description:ae.description,priority:ae.priority,difficulty:ae.difficulty,duration:ae.duration,team:ae.team,responsible:ae.responsible,parent:{data:{id:te}}},R=await g(T,b.id,I),Y=lr(H,Z,R);s(D=>[...D,Y]);const W=K||ye.DEFAULT_SOURCE_HANDLE,q=Be(U),G=ot(U,H,W,I,B,q,te,se);n(D=>[...D,G]);try{const D=[...t,Y],E=[...a,G];await _(D,E)}catch(D){console.error("❌ Error al actualizar layout después de agregar tarea:",D)}setTimeout(()=>{try{const D=u(H);if(D){const E=window.innerWidth,z=window.innerHeight,A=E/2,C=z/2;f({x:A-D.position.x-130,y:C-D.position.y-40,zoom:1},{duration:800})}else h({padding:.1,duration:800})}catch{try{h({padding:.1,duration:800})}catch{}}},200)}o()}catch(te){console.error("❌ Error en createNodeFromPopup:",te)}},[r,b,g,x,N,c,s,n,o,_,t,a]),y=p.useCallback(async(B,I)=>{var K,te;if(console.log("🟢 createConnectionFromPopup - INICIO",{nodeType:B,connectionType:I}),!i){console.warn("⚠️ createConnectionFromPopup - No hay connectionPopup");return}const{sourceNodeId:O,sourceHandleId:H,targetNodeId:U}=i;console.log("🟢 createConnectionFromPopup - Datos de conexión:",{sourceNodeId:O,targetNodeId:U,sourceHandleId:H});try{if(!(window.validConnectionTypes||{dependiente:!0,hija:!0})[I]){console.warn("⚠️ createConnectionFromPopup - Tipo de conexión no válido:",I),M.toast.warning("Tipo de conexión no válido"),l(!1),d();return}const Z=t.find(A=>A.id===O),se=t.find(A=>A.id===U);console.log("🟢 createConnectionFromPopup - Nodos encontrados:",{sourceNode:Z==null?void 0:Z.id,targetNode:se==null?void 0:se.id,sourceData:Z==null?void 0:Z.data,targetData:se==null?void 0:se.data});const T=se==null?void 0:se.data,R=((K=Z==null?void 0:Z.data)==null?void 0:K.id)||O,Y=((te=se==null?void 0:se.data)==null?void 0:te.id)||U;console.log("🟢 createConnectionFromPopup - IDs extraídos:",{parentId:R,childId:Y});const W=ot(O,U,H||ye.DEFAULT_SOURCE_HANDLE,I,B,Be(O),R,Y);console.log("🟢 createConnectionFromPopup - Nuevo edge creado:",W),n(A=>[...A,W]);const q=[...a,W],G=T.id||-Date.now(),D=T.reference_graph||U,E={id:G,uuid:T.uuid||crypto.randomUUID(),reference_graph:D,texto_corto:T.texto_corto||"",texto_largo:T.texto_largo||"",prioridad:T.prioridad||null,nivel_dificultad:T.nivel_dificultad||1,duracion:T.duracion||null,start:T.start||!1,equipo:T.equipo||null,responsable:T.responsable||null,plantilla:{id:T.plantilla.id,clave:T.plantilla.clave,categoria:T.plantilla.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:T.plantilla_dependents||[],ids_t_dependientes:T.ids_t_dependientes||[],tarea_padre:I==="hija"?{id:W.data.parentId}:null,id_t_requerida:I==="dependiente"?{id:W.data.parentId}:null,tareas:T.tareas||[],type:"task"};console.log("🟢 createConnectionFromPopup - taskForState creado:",E),console.log("🟢 createConnectionFromPopup - currentTemplate.id:",b.id);const z=t.map(A=>A.id===U?{...A,data:E}:A);console.log("🟢 createConnectionFromPopup - Actualizando nodos en React Flow..."),s(z),console.log("✅ createConnectionFromPopup - Nodos actualizados en React Flow"),console.log("🟢 createConnectionFromPopup - Actualizando template layout..."),await _(z,q),console.log("✅ createConnectionFromPopup - Template layout actualizado"),console.log("🟢 createConnectionFromPopup - Llamando a updateNodeWithNewEdge..."),await S({templateId:b.id,edge:W,task:E}),console.log("✅ createConnectionFromPopup - updateNodeWithNewEdge completado")}catch(ae){console.error("❌ createConnectionFromPopup - Error al crear conexión:",ae),console.error("❌ createConnectionFromPopup - Stack:",ae.stack)}finally{console.log("🟢 createConnectionFromPopup - Limpiando estado..."),l(!1),d(),console.log("🟢 createConnectionFromPopup - FIN")}},[i,n,l,d,a,t,_]),X=p.useCallback(async B=>{if(!r||!b){M.toast.warning("No hay newNodePopup o template activo para actualizar el nodo");return}const{nodeId:I}=r;if(!I){M.toast.warning("No se encontró nodeId en newNodePopup");return}try{const O=t.find(U=>U.id===I);if(!O){M.toast.warning(`No se encontró el nodo con ID: ${I}`);return}const H={...O,data:{...O.data,...B,id:O.data.id||O.id,type:O.data.type||O.data.type,updatedAt:new Date().toISOString()}};s(U=>U.map(K=>K.id===I?H:K));try{const U=t.map(K=>K.id===I?H:K);await _(U,a)}catch(U){M.toast.error("Error al actualizar layout después de actualizar nodo:",U)}o()}catch(O){M.toast.error("Error al actualizar el nodo:",O)}},[r,b,t,s,a,_,o]);return{createNodeFromPopup:F,createConnectionFromPopup:y,updateNodeFromPopup:X,updateAfterDeleted:P}},wr=({data:t,id:a,isConnectable:s,selected:n})=>{be(F=>F.addNodeFromHandle);const r=be(F=>F.getViewMode),[i,o]=p.useState(!1),[d,l]=p.useState(t),c=Fe(F=>F.activeTemplate),u=Fe(F=>F.setActiveTemplate),{get:f,update:h}=Ae(),w=c!=null&&c.id?r(c.id):"readonly",{updateTaskInTemplate:m}=or(),{setNodes:g,setEdges:x,getNodes:b,getEdges:j}=re.useReactFlow(),v=de.useQueryClient(),{updateAfterDeleted:L}=Oa({nodes:b(),edges:j(),setNodes:g,setEdges:x,newNodePopup:null,connectionPopup:null,closeNewNodePopup:()=>{},closeConnectionPopup:()=>{},setIsConnectingExistingNodes:()=>{}}),S=(F,y)=>{F.preventDefault(),F.stopPropagation()},k=()=>{o(!0)},N=p.useCallback(async()=>{var O,H,U;const F=b().find(K=>K.id===a);if(!F){console.warn("⚠️ Nodo no encontrado para eliminar");return}const y=[F],X=Aa(y),B=y.length>0?(H=(O=y[0])==null?void 0:O.data)==null?void 0:H.id:0;x(K=>K.filter(te=>!X.includes(te.source)&&!X.includes(te.target))),g(K=>K.filter(te=>te.id!==a));let I;for(const K of y)try{const te=K.data;if((U=te==null?void 0:te.plantilla)!=null&&U.id){I=te.plantilla.id;break}}catch{}try{x(K=>((async()=>{await L(X,K,I,B)})().catch(te=>{console.error("❌ Error en updateAfterDeleted:",te)}),K))}catch(K){console.error("❌ Error en handleDeleteNode:",K)}},[a,b,j,g,x,L]),_=p.useCallback(async F=>{var y,X,B,I,O,H,U,K,te,ae;if(!c){console.warn("⚠️ MainNode.updateTemplateLayout - No hay template activo");return}try{const Z=await f(c.id);if(!Z){console.warn("⚠️ MainNode.updateTemplateLayout - Template no encontrado en IndexedDB");return}const se=(y=Z.graph_layout)==null?void 0:y.snapshot;if(!(!se||JSON.stringify(se.nodes)!==JSON.stringify(F))){console.log("🔄 MainNode.updateTemplateLayout - No hay cambios en nodos, omitiendo actualización");return}const R=F.filter(q=>{var G;return!((G=q.data)!=null&&G.isInternal)&&!q.parentId}).map(q=>{const{style:G,measured:D,data:E,selected:z,...A}=q,{expandedDimensions:C,isExpanded:V,needsReExpansion:$,...J}=E||{},ne=G?{...G,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...A,style:ne,data:J}}),Y=(((B=(X=Z.graph_layout)==null?void 0:X.snapshot)==null?void 0:B.edges)||[]).filter(q=>{var G;return!((G=q.data)!=null&&G.isInternal)}),W={...Z,graph_layout:{id:((I=Z.graph_layout)==null?void 0:I.id)||0,snapshot:{...(O=Z.graph_layout)==null?void 0:O.snapshot,nodes:R,edges:Y,viewport:((U=(H=Z.graph_layout)==null?void 0:H.snapshot)==null?void 0:U.viewport)||{x:0,y:0,zoom:1}},history:((K=Z.graph_layout)==null?void 0:K.history)||[],zoom:((te=Z.graph_layout)==null?void 0:te.zoom)||1,position:((ae=Z.graph_layout)==null?void 0:ae.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await h(c.id,W),console.log("🗑️ [MainNode] Invalidando caché de la plantilla:",c.id),await v.invalidateQueries({queryKey:["template",c.id]}),await v.invalidateQueries({queryKey:["template"]}),console.log("✅ [MainNode] Caché invalidado exitosamente"),c&&c.id===W.id&&u(W)}catch(Z){console.error("❌ MainNode.updateTemplateLayout - Error al actualizar template layout:",Z)}},[c,f,h,u,v]),P=async F=>{if(o(!1),c){const y={...t,texto_corto:F.title,texto_largo:F.description,prioridad:F.priority?typeof F.priority=="number"?F.priority:parseInt(F.priority.toString()):null,nivel_dificultad:F.difficulty?typeof F.difficulty=="number"?F.difficulty:parseInt(F.difficulty.toString()):1,duracion:F.duration?typeof F.duration=="number"?F.duration:parseInt(F.duration.toString()):null,equipo:{id:Number(F.team)||null},responsable:{id:Number(F.responsible)||null}};await m(t.id,y),g(X=>{const B=X.map(I=>I.id===a?{...I,data:{...I.data,...y,tarea_padre:t.tarea_padre,id_t_requerida:t.id_t_requerida,updatedAt:new Date().toISOString()}}:I);return console.log("🔄 updatedNodes:",B),setTimeout(()=>_(B),0),B})}};return p.useEffect(()=>{l(t)},[t]),e.jsxs("div",{className:`tw-border-2 tw-bg-white tw-px-4 tw-py-2 tw-rounded-lg tw-transition-all tw-duration-200 ${n?"tw-border-blue-500 tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":t.main?"ui-border-green-500 tw-shadow-sm":"ui-border-neutral-100 tw-shadow-sm"}`,children:[e.jsx(re.Handle,{isConnectable:s,id:"top-target",type:"target",position:re.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"right-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Right,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"bottom-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Bottom,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"left-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Left,onClick:F=>S(F)}),e.jsxs("div",{className:"tw-flex tw-h-full tw-flex-col tw-gap-y-2 tw-p-2 ",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-gap-x-4 ",children:[e.jsx("p",{className:"tw-font-bold tw-leading-none tw-text-neutral-900",children:d.texto_corto}),!t.isInternal&&c.estatusFromStrapi!==Ee.PUBLISHED&&w!=="readonly"&&e.jsx("div",{children:t.type==="task"?e.jsx(M.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"ElipsisOutlined",containerClassName:"nopan nodrag",buttonClassName:"nopan nodrag",children:e.jsxs(M.List,{children:[e.jsx(M.ListItem,{icon:"EditOutlined",onClick:k,children:"Editar"}),e.jsx(M.ListSeparator,{}),e.jsx(M.ListItem,{icon:"Plus1Outlined",color:"red",onClick:N,children:"Eliminar"})]})}):e.jsx(M.Button,{size:"md",variant:"outlined",color:"white",icon:"MaximizeOutlined",rounded:!0,className:"nopan"})})]}),e.jsx("p",{className:"ui-text-xs tw-text-neutral-900 ",children:d.texto_largo}),e.jsxs("div",{className:"tw-flex tw-gap-x-6 tw-justify-between",children:[e.jsx(Yn,{duration:d.duracion}),e.jsx(Xn,{difficulty:d.nivel_dificultad}),e.jsx(Zn,{priority:d.prioridad}),e.jsx(er,{responsible:d.responsable})]})]}),e.jsx(re.Handle,{isConnectable:s,id:"top-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Top,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"right-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Right,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"bottom-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Bottom,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"left-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Left,onClick:F=>S(F)}),t.type==="task"&&i&&e.jsx(Ma,{isOpen:i,onClose:()=>o(!1),onSuccess:P,editMode:!0,taskToEdit:d})]})},pr=async({tasks_api:t,page:a=1,pageSize:s=10,search:n="",filters:r={}})=>{const i={clave:{$notNull:!0},estatus:{$ne:Ee.DELETED},...n?{$or:[{nombre_plantilla:{$containsi:n}},{clave:{$containsi:n}}]}:{},...Object.keys(r).reduce((l,c)=>(Array.isArray(r[c])?l[c]={id:{$in:r[c]}}:l[c]=r[c],l),{})},o=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"]}}},tarea_plantillas:{fields:["id"],filters:{start:!0},populate:{tareas:{fields:["id"]},ids_t_dependientes:{fields:["id"]}}}},sort:{createdAt:"asc"},pagination:{page:a,pageSize:s}},{encodeValuesOnly:!0}),d=await t.get(`/api/plantillas/all-plantillas?${o}`);return d.data?{data:ge(d.data.data),meta:d.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:s,pageCount:0,total:0}}}},qa=({page:t=1,pageSize:a=10,search:s="",filters:n={}})=>{const{tasks_api:r}=we();return de.useQuery({queryKey:["templates",t,a,s,n],queryFn:()=>pr({tasks_api:r,page:t,pageSize:a,search:s,filters:n}),staleTime:1e3*60*60*24,placeholderData:de.keepPreviousData,select:i=>({data:(i==null?void 0:i.data)||[],meta:i==null?void 0:i.meta})})},La=({isOpen:t,onClose:a,onSuccess:s,nodeDataType:n,parentNodeInfo:r})=>{var v,L,S,k;const i=be(N=>N.addNodeWithType),[o,d]=p.useState(0),l=5,[c,u]=p.useState(1),[f,h]=p.useState("");p.useEffect(()=>{t&&(u(1),h(""),d(0))},[t]),p.useEffect(()=>{u(1)},[f]);const{data:w,isLoading:m}=qa({page:c,pageSize:l,search:f}),g=N=>{h(N.target.value)},x=()=>{var _;if(o===0)return;const N=(_=w==null?void 0:w.data)==null?void 0:_.find(P=>P.id===o);if(!N){console.error("No se encontró la plantilla seleccionada en los datos");return}s?s({templateId:o,templateData:N}):i&&i(n.id,n.type,n.connectionType)};if(m)return e.jsx("div",{children:"Cargando..."});if(!(w!=null&&w.data))return e.jsx("div",{children:"No hay datos disponibles"});const b=((L=(v=w.meta)==null?void 0:v.pagination)==null?void 0:L.total)||0,j=b===1?"plantilla encontrada":"plantillas encontradas";return e.jsx(M.Modal,{icon:"TaskOutlined",isOpen:t,size:"lg",onSuccess:x,onClose:a,title:"Agregar plantilla",successButtonText:"Agregar",disableSuccessButton:o===0,closeAtSuccess:!0,children:e.jsxs(M.Modal.Body,{withPadding:!1,children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-gap-6 tw-px-12 tw-py-3",children:[e.jsxs("p",{className:"tw-flex-1 tw-text-[14px] tw-text-neutral-500",children:[b," ",j]}),e.jsx(M.Input,{className:"tw-flex-1",leftSlot:"SearchOutlined",fullWidth:!0,placeholder:"Buscar por nombre, parámetros o estado...",value:f,onChange:g})]}),e.jsx(M.Separator,{}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-6 tw-p-12",children:[JSON.stringify(w.data),w.data.map(N=>e.jsx(Pa,{mode:"modal",template:N,active:o===N.id,fullWidth:!0,onClick:d,withOptions:!1},N.id)),w.data.length===0&&e.jsx("div",{className:"tw-flex tw-items-center tw-justify-center tw-h-full",children:e.jsx("p",{className:"tw-text-[14px] tw-text-neutral-500",children:"No se encontraron plantillas con ese criterio de búsqueda"})})]}),e.jsx(M.Separator,{}),e.jsx("div",{className:"tw-mt-6",children:e.jsx(M.Pagination,{className:"tw-pt-0",pageSize:l,pageCount:((k=(S=w==null?void 0:w.meta)==null?void 0:S.pagination)==null?void 0:k.pageCount)||1,currentPage:c,onPageChange:N=>u(N)})})]})})},mr=({data:t,id:a})=>{const s=be(u=>u.addNodeWithType),[n,r]=p.useState(!1),[i,o]=p.useState(!1),[d,l]=p.useState({id:a,type:"tarea",connectionType:"dependiente"}),c=({type:u,connectionType:f})=>{s&&(l({id:a,type:u,connectionType:f}),u==="tarea"?r(!0):u==="plantilla"&&o(!0))};return console.log({data:t,id:a}),e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-center",children:[d.type==="plantilla"&&e.jsx(La,{isOpen:i,onClose:()=>o(!1),nodeDataType:d}),e.jsx(re.Handle,{id:"top-target",type:"target",position:re.Position.Top}),e.jsx(re.Handle,{id:"right-target",type:"target",position:re.Position.Right}),e.jsx(re.Handle,{id:"bottom-target",type:"target",position:re.Position.Bottom}),e.jsx(re.Handle,{id:"left-target",type:"target",position:re.Position.Left}),e.jsx(re.Handle,{id:"top-source",type:"source",position:re.Position.Top}),e.jsx(re.Handle,{id:"right-source",type:"source",position:re.Position.Right}),e.jsx(re.Handle,{id:"bottom-source",type:"source",position:re.Position.Bottom}),e.jsx(re.Handle,{id:"left-source",type:"source",position:re.Position.Left}),e.jsx(M.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"Plus1Outlined",containerClassName:"nopan",buttonClassName:"nopan",children:e.jsxs(M.List,{className:"nopan nodrag",children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsx(M.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>c({type:"tarea",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"tarea",connectionType:"hija"}),children:"Hija"}),e.jsx(M.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Plantilla"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"plantilla",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"plantilla",connectionType:"hija"}),children:"Hija"})]})})]})},fr=({isOpen:t,position:a,onClose:s,createNodeFromPopup:n,parentNodeInfo:r})=>{const[i,o]=p.useState(!1),[d,l]=p.useState(!1),[c,u]=p.useState(null);if(!t)return null;const f=(x,b)=>{u({type:x,connectionType:b}),x==="tarea"?o(!0):x==="plantilla"&&l(!0)},h=()=>{o(!1),u(null),s()},w=()=>{l(!1),u(null),s()},m=x=>{c&&n(c.type,c.connectionType,x),h()},g=x=>{c&&x&&n(c.type,c.connectionType,x),w()};return e.jsxs(e.Fragment,{children:[!i&&!d&&e.jsx("div",{className:"tw-fixed tw-inset-0 tw-z-50",onClick:s}),!i&&!d&&e.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:e.jsx("div",{className:"tw-p-2",children:e.jsxs(M.List,{children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsx(M.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>f("tarea","dependiente"),children:"Dependiente"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>f("tarea","hija"),children:"Hija"}),e.jsx(M.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Plantilla"}),e.jsx(M.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>f("plantilla","dependiente"),children:"Dependiente"})]})})}),i&&c&&e.jsx(Ma,{isOpen:i,onClose:h,onSuccess:m,nodeDataType:{id:"",type:c.type,connectionType:c.connectionType},parentNodeInfo:r}),d&&c&&e.jsx(La,{isOpen:d,onClose:w,onSuccess:g,nodeDataType:{id:"",type:c.type,connectionType:c.connectionType},parentNodeInfo:r})]})};function xr({reactFlowWrapper:t,nodes:a}){const{setViewport:s,getViewport:n}=re.useReactFlow(),{zoom:r}=re.useViewport(),i=Math.round(r*100),[o,d]=p.useState([]),[l,c]=p.useState(-1),[u,f]=p.useState(!1),[h,w]=p.useState(0);p.useLayoutEffect(()=>{const S=t==null?void 0:t.current;if(S){const k=S.getBoundingClientRect();w(k.width)}},[t]);const m=p.useMemo(()=>{var _;if(!a||a.length===0)return{x:0,y:0,zoom:1};const S=a.find(P=>{var F;return(F=P==null?void 0:P.data)==null?void 0:F.main})??a[0];return{x:(h||(typeof window<"u"?window.innerWidth:0))/2-(((_=S==null?void 0:S.position)==null?void 0:_.x)??0),y:20,zoom:1}},[a,h]),g=p.useCallback(S=>{if(!u){const k=[...o.slice(0,l+1),S];d(k),c(k.length-1)}},[o,l,u]),x=p.useCallback(()=>{if(u)return;const S=n(),k=Math.min(S.zoom*1.2,2);g(S),f(!0),s({x:S.x,y:S.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),b=p.useCallback(()=>{if(u)return;const S=n(),k=Math.max(S.zoom/1.2,.5);g(S),f(!0),s({x:S.x,y:S.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),j=p.useCallback(()=>{if(u)return;const S=n();Math.abs(S.zoom-1)>.01&&g(S),f(!0),s({x:S.x,y:S.y,zoom:1}),setTimeout(()=>f(!1),100)},[n,s,g,u]),v=p.useCallback(()=>{if(u||l<=0)return;const S=o[l-1];f(!0),s(S),c(l-1),setTimeout(()=>f(!1),100)},[l,o,s,u]);return p.useEffect(()=>{o.length===0&&(d([{zoom:1,x:0,y:0}]),c(0))},[o.length]),{isReady:h!==0&&Array.isArray(a)&&a.length>0,defaultViewport:m,zoomPercentage:i,handleZoomIn:x,handleZoomOut:b,handleZoomTo100:j,handleDoubleClick:v}}const gr=t=>{var i,o;const a=((i=t.data)==null?void 0:i.isInternal)||!1,s=(o=t.data)==null?void 0:o.originalGroupId,n=t.selected||!1,r=d=>{if(d.preventDefault(),d.stopPropagation(),s){const c=be.getState().collapseGroup;c&&c(s)}};return e.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 ${n?"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:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Icon,{name:"FlagOutlined",background:!0}),e.jsx("p",{className:"tw-leading-none tw-text-neutral-500 tw-font-bold",children:t.data.clave}),a&&e.jsx(M.Button,{size:"md",variant:"outlined",color:"white",onClick:r,className:"tw-p-2 nopan nodrag",icon:"MinimizeOutlined",rounded:!0})]}),a&&e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Tag,{color:t.data.estatus==="published"?"green":"yellow",size:"xs",rounded:!0,label:t.data.estatus==="published"?"Publicado":"Borrador",variant:"outlined",borderable:!1}),(t.data.updatedAt||t.data.updated_at)&&e.jsx("p",{className:"tw-text-sm tw-text-neutral-500 tw-font-medium",children:new Date(t.data.updatedAt||t.data.updated_at).toLocaleDateString("es-ES")})]}),e.jsx(re.Handle,{id:"bottom-source",type:"source",position:re.Position.Bottom,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"}),e.jsx(re.Handle,{id:"top-target",type:"target",position:re.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"})]})},hr=()=>{const t=p.useCallback((r,i,o,d)=>{const l=(f,h)=>{const w=f.position.x,m=f.position.y,g=120,x=60,b=15;switch(h){case"top-source":case"top-target":return{x:w,y:m-x/2-b};case"bottom-source":case"bottom-target":return{x:w,y:m+x/2+b};case"left-source":case"left-target":return{x:w-g/2-b,y:m};case"right-source":case"right-target":return{x:w+g/2+b,y:m};default:return{x:w,y:m}}},c=l(r,o),u=l(i,d);return Math.sqrt(Math.pow(u.x-c.x,2)+Math.pow(u.y-c.y,2))},[]),a=p.useCallback((r,i)=>{if(r.includes("source")===i.includes("source"))return!1;const o=u=>u.includes("top")?"top":u.includes("bottom")?"bottom":u.includes("left")?"left":u.includes("right")?"right":null,d=o(r),l=o(i);return{top:"bottom",bottom:"top",left:"right",right:"left"}[d]===l},[]),s=p.useCallback((r,i)=>{const o=["top-source","bottom-source","left-source","right-source"],d=["top-target","bottom-target","left-target","right-target"];let l=1/0,c={handle1:o[0],handle2:d[0]};for(const u of o)for(const f of d){if(!a(u,f))continue;const h=t(r,i,u,f);h<l&&(l=h,c={handle1:u,handle2:f})}return c},[t,a]),n=p.useCallback((r,i,o=800)=>Math.sqrt(Math.pow(i.position.x-r.position.x,2)+Math.pow(i.position.y-r.position.y,2))<o,[]);return{findClosestHandles:s,calculateHandleDistance:t,areHandlesCompatible:a,shouldApplyMagneticConnection:n}},br=t=>{const[a,s]=p.useState(null),[n,r]=p.useState(null),[i,o]=p.useState(!1),d=p.useCallback((h,w,m,g)=>{s({isOpen:!0,nodeId:h,position:w,sourceNodeId:m,sourceHandleId:g})},[]),l=p.useCallback(()=>{s(null)},[]),c=p.useCallback((h,w,m,g,x)=>{o(!0),r({isOpen:!0,sourceNodeId:h,sourceHandleId:m,targetNodeId:w,targetHandleId:g,position:x})},[]),u=p.useCallback(()=>{o(!1),r(null)},[]),f=p.useCallback(()=>{var w,m,g;if(!(a!=null&&a.sourceNodeId))return null;const h=t.find(x=>x.id===a.sourceNodeId);return h?{id:h.id,label:(w=h.data)==null?void 0:w.label,nodeType:(m=h.data)==null?void 0:m.nodeType,connectionType:(g=h.data)==null?void 0:g.connectionType,data:h.data}:null},[a,t]);return{newNodePopup:a,connectionPopup:n,isConnectingExistingNodes:i,openNewNodePopup:d,closeNewNodePopup:l,openConnectionPopup:c,closeConnectionPopup:u,getParentNodeInfo:f,setIsConnectingExistingNodes:o}},yr=({initialNodes:t,initialEdges:a})=>{const[s,n,r]=re.useNodesState(Lt(t)),[i,o,d]=re.useEdgesState(a),[l,c]=p.useState(!1),u=p.useCallback(W=>{o(W)},[o]),{toObject:f}=re.useReactFlow(),{findClosestHandles:h,shouldApplyMagneticConnection:w}=hr(),{updateGraphLayout:m,get:g,update:x}=Ae(),b=Fe(W=>W.activeTemplate),j=Fe(W=>W.setActiveTemplate),v=de.useQueryClient(),{removeParentIdFromNodes:L}=Xe(),{newNodePopup:S,connectionPopup:k,isConnectingExistingNodes:N,openNewNodePopup:_,closeNewNodePopup:P,openConnectionPopup:F,closeConnectionPopup:y,getParentNodeInfo:X,setIsConnectingExistingNodes:B}=br(s),{createNodeFromPopup:I,createConnectionFromPopup:O,updateNodeFromPopup:H,updateAfterDeleted:U}=Oa({nodes:s,edges:i,setNodes:n,setEdges:u,newNodePopup:S,connectionPopup:k,closeNewNodePopup:P,closeConnectionPopup:y,setIsConnectingExistingNodes:B});p.useEffect(()=>{if(t&&t.length>0){if(!(t.some((z,A)=>{const C=s[A];return C?z.id!==C.id||JSON.stringify(z.position)!==JSON.stringify(C.position)||JSON.stringify(z.data)!==JSON.stringify(C.data):!0})||t.length!==s.filter(z=>{var A;return!((A=z.data)!=null&&A.isInternal)}).length)&&s.length>0)return;const{expandedGroups:q,groupTemplateData:G}=be.getState();let D=s.filter(z=>{var A,C;return((A=z.data)==null?void 0:A.isInternal)&&typeof((C=z.data)==null?void 0:C.originalGroupId)=="string"&&q.has(z.data.originalGroupId)});const E=Lt(t);if(D.length>0){const z=E.map(A=>{var C;if(q.has(A.id)){const V=s.find(J=>J.id===A.id),$=(C=V==null?void 0:V.data)==null?void 0:C.expandedDimensions;if($)return{...A,style:{...A.style,width:$.width,height:$.height},data:{...A.data,isExpanded:!0,expandedDimensions:$}}}return A});n([...z,...D])}else if(q.size>0){const z=E.map(A=>q.has(A.id)&&G[A.id]?{...A,data:{...A.data,isExpanded:!0,needsReExpansion:!0}}:A);n(z)}else n(E)}else n([])},[t,n]),p.useEffect(()=>{if(!l&&a&&a.length>0){const{expandedGroups:W}=be.getState(),q=i.filter(D=>{var E,z;return((E=D.data)==null?void 0:E.isInternal)&&typeof((z=D.data)==null?void 0:z.originalGroupId)=="string"&&W.has(D.data.originalGroupId)}),G=i.filter(D=>{var E,z;return((E=D.data)==null?void 0:E.redirectedToInternal)&&typeof((z=D.data)==null?void 0:z.originalTarget)=="string"&&W.has(D.data.originalTarget)});if(q.length>0||G.length>0){const D=a.filter(E=>!G.some(z=>{var A;return((A=z.data)==null?void 0:A.originalTarget)===E.target}));u([...D,...q,...G])}else u(a)}},[a,u,l]);const K=p.useCallback((W,q,G=!1)=>{const E=i.filter(C=>C.target===q).length>0;if(i.some(C=>C.source===W&&C.target===q||C.source===q&&C.target===W)&&!G)return M.toast.warning("La tarea destino ya tiene una conexión"),!1;const A=!E;return typeof window<"u"&&(window.validConnectionTypes={dependiente:A,hija:A}),A?!0:(M.toast.warning("La tarea destino ya tiene una conexión de entrada"),!1)},[i]),te=p.useCallback(W=>{if(!cr(W.source,W.target))return;Be(W.source)&&!W.sourceHandle&&(W.sourceHandle=ye.DEFAULT_SOURCE_HANDLE);const q=s.find(D=>D.id===W.source),G=s.find(D=>D.id===W.target);if(q&&G){if(!K(W.source,W.target))return;F(W.source,W.target,W.sourceHandle,W.targetHandle);return}return u(D=>re.addEdge(W,D))},[s,F,u,K]),ae=p.useCallback((W,q)=>{var G;if(!N&&!q.isValid&&q.fromNode){const D=s.find(J=>J.id===q.fromNode.id);if((D==null?void 0:D.type)==="group"){M.toast.warning("En una plantilla, no se puede crear una conexión");return}const E=dr(W),z=document.elementFromPoint(E.x,E.y);if(z!=null&&z.closest(".react-flow__node"))return;const A=crypto.randomUUID(),C=((G=q.fromHandle)==null?void 0:G.id)||ye.DEFAULT_SOURCE_HANDLE,$=Be(q.fromNode.id)?ye.DEFAULT_SOURCE_HANDLE:C;_(A,E,q.fromNode.id,$)}},[N,_,s]),Z=p.useCallback(async W=>{var E,z,A;const q=Aa(W),G=W.length>0?(z=(E=W[0])==null?void 0:E.data)==null?void 0:z.id:0;u(C=>C.filter(V=>!q.includes(V.source)&&!q.includes(V.target)));let D;for(const C of W)try{const V=C.data;if((A=V==null?void 0:V.plantilla)!=null&&A.id){D=V.plantilla.id;break}}catch{}try{u(C=>((async()=>{await U(q,C,D,G)})().catch(V=>{console.error("❌ Error en updateAfterDeleted:",V)}),C))}catch(C){console.error("❌ Error en onDeleteNode:",C)}},[u,U]),se=p.useCallback(async W=>{var G,D,E,z,A,C,V,$,J,ne,oe,ie,ce,ue;if(!W||W.length===0)return;let q;if(b!=null&&b.id)q=b.id;else for(const le of W){const pe=s.find(fe=>fe.id===le.source),xe=s.find(fe=>fe.id===le.target);if(pe!=null&&pe.data&&typeof pe.data=="object"&&"plantilla"in pe.data){const fe=pe.data.plantilla;if(fe!=null&&fe.id){q=fe.id;break}}if(xe!=null&&xe.data&&typeof xe.data=="object"&&"plantilla"in xe.data){const fe=xe.data.plantilla;if(fe!=null&&fe.id){q=fe.id;break}}}if(!q){console.warn("⚠️ onEdgesDelete - No se pudo obtener templateId");return}try{const le=await g(q);if(!le){console.warn("⚠️ onEdgesDelete - Template no encontrado en IndexedDB");return}const pe=W.map(Ce=>Ce.id),xe=((E=(D=(G=le.graph_layout)==null?void 0:G.snapshot)==null?void 0:D.edges)==null?void 0:E.filter(Ce=>{var Ie;return!pe.includes(Ce.id)&&!((Ie=Ce.data)!=null&&Ie.isInternal)}))||[],Me=(((C=(A=(z=le.graph_layout)==null?void 0:z.snapshot)==null?void 0:A.nodes)==null?void 0:C.filter(Ce=>{var Ie;return!((Ie=Ce.data)!=null&&Ie.isInternal)&&!Ce.parentId}))||[]).map(Ce=>{const{style:Ie,measured:Qe,data:at,...$a}=Ce,{expandedDimensions:so,isExpanded:no,needsReExpansion:ro,...Tt}=at||{},Ba=Ie?{...Ie,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0,Ha=Ce.data.id===W[0].data.childId?{...Tt,tarea_padre:null,id_t_requerida:null}:Tt;return{...$a,style:Ba,data:Ha}}),he=(($=(V=le.graph_layout)==null?void 0:V.snapshot)==null?void 0:$.edges)||[];if(!(JSON.stringify(he)!==JSON.stringify(xe)))return;const Ne={...le,graph_layout:{id:((J=le.graph_layout)==null?void 0:J.id)||0,snapshot:{nodes:Me,edges:xe,viewport:((oe=(ne=le.graph_layout)==null?void 0:ne.snapshot)==null?void 0:oe.viewport)||{x:0,y:0,zoom:1}},history:((ie=le.graph_layout)==null?void 0:ie.history)||[],zoom:((ce=le.graph_layout)==null?void 0:ce.zoom)||1,position:((ue=le.graph_layout)==null?void 0:ue.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await L({templateId:q,id:W[0].data.childId}),await x(q,Ne),console.log("🗑️ [useFlow] Invalidando caché de la plantilla:",q),await v.invalidateQueries({queryKey:["template",q]}),await v.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlow] Caché invalidado exitosamente"),q===(b==null?void 0:b.id)&&j(Ne)}catch(le){console.error("❌ onEdgesDelete - Error al actualizar template layout:",le)}},[s,b,g,x,j,L]),T=p.useCallback(async W=>!W.nodes.some(G=>G.type==="start"||G.id===ye.START_NODE_ID),[]),R=p.useCallback((W,q,G)=>{var A,C,V;const D=s.find($=>$.id===q.id);if(!D)return;if(D.type==="group"&&((A=D.data)!=null&&A.isExpanded)){u($=>$.map(J=>{if(J.hidden&&J.target===q.id){const{hidden:ne,...oe}=J;return oe}return J}));return}let E;if(D.type==="group"?E=b==null?void 0:b.id:(V=(C=q==null?void 0:q.data)==null?void 0:C.plantilla)!=null&&V.id&&(E=q.data.plantilla.id),!E)return;const z=i.map($=>{var oe,ie,ce,ue,le;if(rt($))return $;const J=s.find(pe=>pe.id===$.source),ne=s.find(pe=>pe.id===$.target);if(J&&ne){const pe=J.type==="group"&&((oe=J.data)==null?void 0:oe.isExpanded),xe=ne.type==="group"&&((ie=ne.data)==null?void 0:ie.isExpanded),fe=(ce=J.data)==null?void 0:ce.isInternal,Me=(ue=ne.data)==null?void 0:ue.isInternal,he=(le=$.data)==null?void 0:le.redirectedToInternal;if(pe||xe||fe||Me||he)return $;if(J.id===q.id||ne.id===q.id||w(J,ne,ye.MAGNETIC_CONNECTION_DISTANCE)){const Ne=h(J,ne);if(Ne!=null&&Ne.handle1&&(Ne!=null&&Ne.handle2))return{...$,sourceHandle:Ne.handle1,targetHandle:Ne.handle2}}}return $});if(JSON.stringify(i)!==JSON.stringify(z))u(z),setTimeout(()=>{const $=f();m(E,$)},100);else{const $=f();m(E,$)}},[s,i,b,m,f,u,h,w]),Y=p.useCallback(W=>{r(W);const q=ur(W);if(q.length>0){const G=q.filter(D=>{var z;const E=s.find(A=>A.id===D);return(E==null?void 0:E.type)==="group"&&((z=E==null?void 0:E.data)==null?void 0:z.isExpanded)});if(G.length>0){u(D=>D.map(E=>{var C;const z=G.includes(E.target),A=!((C=E.data)!=null&&C.redirectedToInternal);return z&&A?{...E,hidden:!0}:E}));return}c(!0),setTimeout(()=>{const D=i.map(z=>{var V,$,J,ne;if(rt(z))return{...z};const A=s.find(oe=>oe.id===z.source),C=s.find(oe=>oe.id===z.target);if(A&&C){const oe=A.type==="group"&&((V=A.data)==null?void 0:V.isExpanded),ie=C.type==="group"&&(($=C.data)==null?void 0:$.isExpanded),ce=(J=A.data)==null?void 0:J.isInternal,ue=(ne=C.data)==null?void 0:ne.isInternal;if(oe||ie||ce||ue)return{...z};if(w(A,C,ye.MAGNETIC_CONNECTION_DISTANCE)){const le=h(A,C);if(le!=null&&le.handle1&&(le!=null&&le.handle2)&&(z.sourceHandle!==le.handle1||z.targetHandle!==le.handle2))return{...z,sourceHandle:le.handle1,targetHandle:le.handle2}}}return{...z}});if(i.some((z,A)=>{const C=D[A];return z.sourceHandle!==C.sourceHandle||z.targetHandle!==C.targetHandle})){const z=D.map(A=>({...A,id:A.id}));u(z)}setTimeout(()=>{c(!1)},200)},0)}},[r,i,s,u,h,w,c]);return{nodes:s,edges:i,newNodePopup:S,connectionPopup:k,setNodes:n,setEdges:u,onEdgesChange:d,onConnect:te,onConnectEnd:ae,onDeleteNode:Z,onEdgesDelete:se,onBeforeDelete:T,handleNodesChange:Y,onDragEnd:R,getParentNodeInfo:X,isProtectedConnection:rt,isStartNode:Be,createNodeFromPopup:I,updateNodeFromPopup:H,closeNewNodePopup:P,createConnectionFromPopup:O,closeConnectionPopup:y}},jr=({isOpen:t,onClose:a,createConnectionFromPopup:s,availableConnections:n})=>{if(!t)return null;const r=n||{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}},i=(o,d)=>{(o==="tarea"?r.tarea[d]:r.plantilla[d])&&s(o,d)};return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"tw-fixed tw-inset-0 tw-z-50 tw-flex tw-items-center tw-justify-center",children:[e.jsx("div",{className:"tw-bg-black/20 tw-absolute tw-inset-0",onClick:a}),e.jsx("div",{className:"ui-shadow-lg ui-border-neutral-100 ui-border-1 tw-relative tw-rounded-lg tw-bg-white tw-p-4",children:e.jsx("div",{children:e.jsxs(M.List,{children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsxs(M.ListItem,{icon:"ElipsisOutlined",iconColor:r.tarea.dependiente?"blue":"neutral",onClick:()=>i("tarea","dependiente"),children:["Dependiente222 ",!r.tarea.dependiente&&"(No disponible)"]}),e.jsxs(M.ListItem,{icon:"Plus1Outlined",iconColor:r.tarea.hija?"blue":"neutral",onClick:()=>i("tarea","hija"),children:["Hija ",!r.tarea.hija&&"(No disponible)"]}),e.jsx(M.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Plantilla"}),e.jsxs(M.ListItem,{icon:"ElipsisOutlined",iconColor:r.plantilla.dependiente?"blue":"neutral",onClick:()=>i("plantilla","dependiente"),children:["Dependiente ",!r.plantilla.dependiente&&"(No disponible)"]})]})})})]})})},vr=({data:t,id:a,selected:s})=>{const{expandedGroups:n}=be(),[r,i]=p.useState(!1),o=p.useRef(!1);p.useEffect(()=>{const f=(t==null?void 0:t.needsReExpansion)&&n.has(a),h=(t==null?void 0:t.templateId)||(t==null?void 0:t.id);if(f&&h&&!o.current){o.current=!0;const m=be.getState().expandGroup;m&&m(a,h).catch(g=>{console.error("Error al re-expandir grupo:",g),o.current=!1})}n.has(a)||(o.current=!1)},[t,a,n]);const d=async f=>{f.preventDefault(),f.stopPropagation();const h=(t==null?void 0:t.templateId)||(t==null?void 0:t.id);if(h){i(!0);try{const w=be.getState(),m=w.expandGroup,g=w.collapseGroup,x=n.has(a);x&&g?g(a):!x&&m&&await m(a,h)}catch{}finally{i(!1)}}},l=n.has(a),c=t==null?void 0:t.expandedDimensions,u=l&&c?{width:c.width,height:c.height,minWidth:c.width,minHeight:c.height}:{minWidth:268,minHeight:80};return e.jsxs("div",{className:`tw-rounded-lg tw-relative tw-transition-all tw-duration-200 ${s?"tw-bg-white tw-border-2 tw-border-blue-500 tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":l?"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:u,children:[e.jsx(Ye,{isLoading:r}),e.jsx(re.Handle,{id:"top-target",type:"target",position:re.Position.Top,className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,isConnectable:!l}),e.jsx(re.Handle,{id:"right-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,position:re.Position.Right,isConnectable:!l}),e.jsx(re.Handle,{id:"bottom-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,position:re.Position.Bottom,isConnectable:!l}),e.jsx(re.Handle,{id:"left-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,position:re.Position.Left,isConnectable:!l}),!l&&e.jsxs("div",{className:"tw-flex tw-flex-col",children:[e.jsxs("div",{className:`tw-flex tw-justify-between tw-items-center tw-gap-x-4 ${l?"tw-px-6 tw-pt-6":"tw-p-6 tw-pb-0"}`,children:[e.jsxs("div",{className:"tw-flex tw-flex-col",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Icon,{name:"TaskOutlined",color:"blue",size:"lg"}),e.jsx("p",{className:"tw-font-bold tw-leading-none tw-text-neutral-900",children:t.clave||t.nombre_plantilla||"N/A"})]}),t.nombre_plantilla&&t.clave&&e.jsx("p",{className:"tw-text-sm tw-text-neutral-600 tw-mt-1",children:t.nombre_plantilla})]}),e.jsx(M.Button,{size:"md",variant:"outlined",color:"white",onClick:d,disabled:r,rounded:!0,className:`tw-p-2 ${r?"tw-opacity-50":""} nopan nodrag`,icon:l?"MinimizeOutlined":"MaximizeOutlined"})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2 tw-px-6",children:[e.jsx(M.Tag,{color:t.estatus==="published"?"green":"yellow",size:"xs",rounded:!0,label:t.estatus==="published"?"Publicado":"Borrador",variant:"outlined",borderable:!1}),t.updatedAt&&e.jsx("p",{className:"tw-text-sm tw-text-neutral-500 tw-font-medium",children:new Date(t.updatedAt).toLocaleDateString("es-ES")})]})]})]})},_r=(t,a,s,n)=>{const r=p.useRef(t),i=p.useRef(a);p.useEffect(()=>{r.current=t},[t]),p.useEffect(()=>{i.current=a},[a]);const{expandedGroups:o,groupTemplateData:d,toggleGroupExpansion:l,setGroupTemplateData:c,clearGroupTemplateData:u}=be(),f=de.useQueryClient(),{getTemplateWithTasks:h}=Ea(),{hydrateTasks:w}=Ia(),m=p.useCallback(async(j,v)=>{var L,S,k,N;try{await f.invalidateQueries({queryKey:["template",v]});const _=await h(v),P=(k=(S=(L=_==null?void 0:_.graph_layout)==null?void 0:L.snapshot)==null?void 0:S.nodes)==null?void 0:k.filter(C=>{var V,$;return((V=C.data)==null?void 0:V.isInternal)||C.parentId||(($=C.id)==null?void 0:$.includes("-internal-"))});if(P&&P.length>0&&console.warn("⚠️ [expandGroup] Nodos sospechosos en API para plantilla",v,":",P),!((N=_==null?void 0:_.graph_layout)!=null&&N.snapshot))throw new Error(`No se encontraron datos de graph_layout en la plantilla: ${v}`);const F=_.graph_layout.snapshot.nodes||[],y=F.filter(C=>{var oe,ie;const V=(oe=C.data)==null?void 0:oe.isInternal,$=!!C.parentId,J=(ie=C.id)==null?void 0:ie.includes("-internal-"),ne=V||$||J;return ne&&console.warn("🗑️ [expandGroup] Filtrando nodo corrupto:",{id:C.id,type:C.type,esInterno:V,tieneParentId:$,tieneInternalEnId:J}),!ne}),X={..._,graph_layout:{..._.graph_layout,snapshot:{..._.graph_layout.snapshot,nodes:y,edges:(_.graph_layout.snapshot.edges||[]).filter(C=>{var V,$;return!((V=C.data)!=null&&V.isInternal)&&!(($=C.id)!=null&&$.includes("-internal-"))})}}},B=F.length-y.length;B>0?console.warn(`⚠️ [expandGroup] Se filtraron ${B} nodos internos corruptos de la BD para plantilla ${v}`):console.log(`✅ [expandGroup] No se encontraron nodos corruptos en plantilla ${v}`);const I=await w(X),O={...X,hydratedNodes:I,nodes:I||X.graph_layout.snapshot.nodes||[],edges:X.graph_layout.snapshot.edges||[]},H=O.nodes,U=O.edges;if(!H||!U){console.error("❌ No se encontraron nodos o edges en la plantilla:",v);return}c(j,{nodes:H,edges:U,viewport:O.graph_layout.snapshot.viewport||{x:0,y:0,zoom:1}});const K=r.current.find(C=>C.id===j);if(!K){console.error("❌ No se encontró el nodo grupo:",j);return}const te=H.filter(C=>C.id!==j);let ae=1/0,Z=1/0,se=-1/0,T=-1/0;te.forEach(C=>{var le,pe,xe,fe,Me,he;const V=((le=C.position)==null?void 0:le.x)||0,$=((pe=C.position)==null?void 0:pe.y)||0,J=typeof((xe=C.style)==null?void 0:xe.width)=="number"?C.style.width:((fe=C.measured)==null?void 0:fe.width)||268,ne=typeof((Me=C.style)==null?void 0:Me.height)=="number"?C.style.height:((he=C.measured)==null?void 0:he.height)||111,oe=V-J/2,ie=V+J/2,ce=$,ue=$+ne;ae=Math.min(ae,oe),Z=Math.min(Z,ce),se=Math.max(se,ie),T=Math.max(T,ue)});const R=80,Y=60,W=se-ae,q=T-Z,G=W+R*2,D=q+R*2+Y,E=H.map((C,V)=>{var le,pe;if(C.id===j)return null;const $=((le=C.position)==null?void 0:le.x)||0,J=((pe=C.position)==null?void 0:pe.y)||0,ne=$-ae+R,oe=J-Z+R+Y,ie=C.type==="start"||C.id==="start",ce=ie?{...C.data,estatus:K.data.estatus,updatedAt:K.data.updatedAt,createdAt:K.data.createdAt,isInternal:!0,originalGroupId:j,originalNodeId:C.id}:{...C.data,isInternal:!0,originalGroupId:j,originalNodeId:C.id};return{...C,id:`${j}-internal-${C.id}`,parentId:j,extent:"parent",type:C.type==="group"?"main":C.type,position:{x:ne,y:oe},style:{...C.style},data:ce,draggable:!1,selectable:ie,selected:!1,deletable:!1,connectable:!1,focusable:ie,zIndex:999}}).filter(Boolean),z=U.map(C=>{const V=E.some(ne=>ne&&ne.id===`${j}-internal-${C.source}`),$=E.some(ne=>ne&&ne.id===`${j}-internal-${C.target}`);return!V||!$?null:{...C,id:`${j}-internal-${C.id}`,source:`${j}-internal-${C.source}`,target:`${j}-internal-${C.target}`,style:{...C.style},data:{...C.data,isInternal:!0,originalGroupId:j}}}).filter(Boolean),A=E.find(C=>{var V;return C&&((V=C.data)==null?void 0:V.originalNodeId)==="start"});A&&n(C=>C.map(V=>V.target===j?{...V,target:A.id,targetHandle:"top-target",data:{...V.data,redirectedToInternal:!0,originalTarget:j,originalTargetHandle:V.targetHandle}}:V)),l(j),s(C=>[...C.map($=>{if($.id===j){const{needsReExpansion:J,...ne}=$.data||{};return{...$,style:{...$.style,width:G,height:D},data:{...ne,isExpanded:!0,expandedDimensions:{width:G,height:D}},zIndex:1e3}}return $}),...E]),n(C=>[...C,...z])}catch(_){console.error("❌ Error al expandir el grupo:",_)}},[f,h,w,c,l,s,n]),g=p.useCallback(j=>{var P,F;const v=r.current,L=i.current,S=v.find(y=>y.id===j),k=((P=S==null?void 0:S.data)==null?void 0:P.templateId)||((F=S==null?void 0:S.data)==null?void 0:F.id),N=v.filter(y=>!y.id.startsWith(`${j}-internal-`)&&y.parentId!==j).map(y=>y.id===j?{...y,style:{...y.style,width:void 0,height:void 0},data:{...y.data,isExpanded:!1,expandedDimensions:void 0},zIndex:void 0}:y),_=L.filter(y=>!y.id.startsWith(`${j}-internal-`)).map(y=>{var X,B;if((X=y.data)!=null&&X.redirectedToInternal&&((B=y.data)==null?void 0:B.originalTarget)===j){const{redirectedToInternal:I,originalTarget:O,originalTargetHandle:H,...U}=y.data;return{...y,target:j,targetHandle:H||y.targetHandle,data:U}}return y});s(N),n(_),l(j),u(j),k&&f.invalidateQueries({queryKey:["template",k]})},[s,n,l,u,f]),x=p.useCallback(async(j,v)=>{o.has(j)?g(j):await m(j,v)},[o,m,g]),b=p.useCallback(j=>o.has(j),[o]);return{expandGroup:m,collapseGroup:g,toggleGroup:x,isGroupExpanded:b,groupTemplateData:d}},Nr=()=>{const{getNodes:t,setNodes:a,screenToFlowPosition:s,setCenter:n}=re.useReactFlow(),{copiedNodes:r,setCopiedNodes:i,getViewMode:o}=be(),{activeTemplate:d,setActiveTemplate:l}=Fe(),{updateGraphLayout:c,get:u,update:f}=Ae(),h=d!=null&&d.id?o(d.id):"readonly",w=p.useCallback(()=>`node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,[]),m=p.useCallback(()=>t().filter(N=>N.selected).filter(N=>!(N.type==="start"||N.id==="start"||N.type==="group")),[t]),g=p.useCallback(()=>{if(h==="readonly"){M.toast.error("No puedes copiar tareas en modo solo lectura");return}if(!d){M.toast.error("No hay una plantilla activa");return}const L=m();if(L.length===0){const k=t().filter(N=>N.selected);if(k.length>0){const N=k.some(P=>P.type==="group"),_=k.some(P=>P.type==="start"||P.id==="start");N?M.toast.error("Las plantillas conectadas no pueden ser copiadas"):_&&M.toast.error("El nodo de inicio no puede ser copiado")}else M.toast.error("No hay tareas seleccionadas para copiar");return}const S=L.map(k=>{const{selected:N,..._}=k;return{..._,data:{..._.data,_originalTemplateId:d.id}}});i(S),M.toast.success(`${L.length} ${L.length===1?"tarea copiada":"tareas copiadas"} con éxito`)},[h,d,m,t,i]),x=p.useCallback(async L=>{if(h==="readonly"){M.toast.error("No puedes pegar tareas en modo solo lectura");return}if(!d){M.toast.error("No hay una plantilla activa");return}if(r.length===0){M.toast.error("No hay tareas copiadas para pegar");return}const S=t();let k={x:0,y:0};if(L)k=s({x:L.x,y:L.y});else if(S.length>0){const B=S.reduce((O,H)=>O+H.position.x,0)/S.length,I=S.reduce((O,H)=>O+H.position.y,0)/S.length;k={x:B+50,y:I+100}}const N=r[0],_=k.x-N.position.x,P=k.y-N.position.y,F=r.map((B,I)=>{const O=w(),H=-(Date.now()+I),U=B.data.plantilla&&typeof B.data.plantilla=="object"?{...B.data.plantilla,id:d.id}:{id:d.id},{id:K,...te}=B.data,ae={...te,id:H,reference_graph:O,plantilla:U,parent:{data:{id:null}},_originalTemplateId:void 0};return{...B,id:O,position:{x:B.position.x+_,y:B.position.y+P},data:ae,selected:!0}}),X=[...S.map(B=>({...B,selected:!1})),...F];if(a(X),d.id)try{const B=await u(d.id);if(!B)return;const I=F.filter(H=>H.type!=="start"&&H.type!=="group").map(H=>{const U=H.data;return{id:U.id,reference_graph:H.id,nombre:U.nombre||U.texto_corto||"Tarea sin nombre",texto_corto:U.texto_corto||"",texto_largo:U.texto_largo||"",prioridad:U.prioridad??0,nivel_dificultad:U.nivel_dificultad??0,dias_duracion:U.dias_duracion??0,plantilla:{id:d.id},parent:{data:{id:null}},tareas:[],plantilla_dependents:U.plantilla_dependents||[],start:U.start||!1,es_grupo:U.es_grupo||!1,optional:U.optional||!1,subtask_completadas:U.subtask_completadas||0,subtask_totales:U.subtask_totales||0}}),O={...B,tarea_plantillas:[...B.tarea_plantillas,...I],estatus:"dirty",updatedAt:new Date().toISOString()};await f(d.id,O),l(O),setTimeout(async()=>{await c(d.id,{nodes:X,edges:[]})},50)}catch(B){console.error("Error al actualizar template en IndexedDB:",B)}if(F.length>0){const B=F.reduce((O,H)=>O+H.position.x,0)/F.length,I=F.reduce((O,H)=>O+H.position.y,0)/F.length;n(B,I,{zoom:1,duration:800})}M.toast.success(`${F.length} ${F.length===1?"tarea pegada":"tareas pegadas"} con éxito`)},[h,d,r,t,a,s,n,w,c,u,f,l]),b=p.useCallback(()=>r.length>0,[r]),v=m().length>0;return{handleCopy:g,handlePaste:x,hasCopiedNodes:b,hasSelectableNodes:v,copiedNodesCount:r.length}},Tr={main:wr,plus:mr,start:gr,group:vr},Cr=[.5,0],Er=({initialNodes:t,initialEdges:a})=>{const s=p.useRef(null),{nodes:n,edges:r,onEdgesChange:i,onConnect:o,onConnectEnd:d,onBeforeDelete:l,onDeleteNode:c,onEdgesDelete:u,handleNodesChange:f,newNodePopup:h,getParentNodeInfo:w,createNodeFromPopup:m,closeNewNodePopup:g,connectionPopup:x,createConnectionFromPopup:b,closeConnectionPopup:j,onDragEnd:v,setNodes:L,setEdges:S}=yr({initialNodes:t,initialEdges:a}),{expandGroup:k,collapseGroup:N}=_r(n,r,L,S),{handleCopy:_,handlePaste:P,hasCopiedNodes:F,copiedNodesCount:y}=Nr(),B=n.filter(ie=>!(!ie.selected||ie.type==="start"||ie.id==="start"||ie.type==="group")).length,I=B>0;p.useEffect(()=>{const ie=ce=>{const ue=ce.target;ue.tagName==="INPUT"||ue.tagName==="TEXTAREA"||ue.isContentEditable||((ce.ctrlKey||ce.metaKey)&&ce.key==="c"&&(ce.preventDefault(),_()),(ce.ctrlKey||ce.metaKey)&&ce.key==="v"&&(ce.preventDefault(),P()))};return document.addEventListener("keydown",ie),()=>{document.removeEventListener("keydown",ie)}},[_,P]);const O=p.useRef(k),H=p.useRef(N);p.useEffect(()=>{O.current=k,H.current=N},[k,N]),p.useEffect(()=>{const ie=async(ue,le)=>{O.current&&await O.current(ue,le)},ce=ue=>{H.current&&H.current(ue)};be.setState({expandGroup:ie,collapseGroup:ce})},[]);const{zoomPercentage:U,handleZoomIn:K,handleZoomOut:te,handleZoomTo100:ae,handleDoubleClick:Z}=xr({reactFlowWrapper:s,nodes:n}),{getViewMode:se}=be(),{activeTemplate:T}=Fe(),Y=(T!=null&&T.id?se(T.id):"readonly")==="readonly",W=Y?void 0:i,q=Y?void 0:f,G=Y?void 0:o,D=Y?void 0:d,E=Y?void 0:l,z=Y?void 0:v,A=Y?void 0:c,C=Y?void 0:u,V=Y?null:["Backspace","Delete"],ne=Y?{nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,nodesFocusable:!1,draggable:!1,selectionOnDrag:!1,connectOnClick:!1}:{nodesDraggable:!0,nodesConnectable:!0,elementsSelectable:!0,edgesFocusable:!0,nodesFocusable:!0,draggable:!1,selectionOnDrag:!1,connectOnClick:!0},oe=()=>{if(x)return{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}}};return e.jsxs("div",{className:"wrapper",ref:s,style:{width:"100%",height:"100vh"},children:[e.jsxs(re.ReactFlow,{nodes:n,edges:r,nodeTypes:Tr,onEdgesChange:W,onNodesChange:q,onConnect:G,onConnectEnd:D,onBeforeDelete:E,onNodeDragStop:z,onNodesDelete:A,onEdgesDelete:C,...ne,fitView:!0,fitViewOptions:{padding:2},nodeOrigin:Cr,defaultEdgeOptions:{type:"smoothstep"},connectionLineType:re.ConnectionLineType.SmoothStep,deleteKeyCode:V,multiSelectionKeyCode:Y?null:"Shift",children:[e.jsx(re.Background,{}),!Y&&e.jsx(re.Panel,{position:"bottom-left",className:"tw-m-0",children:e.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:[e.jsx("div",{className:"tw-font-semibold tw-text-neutral-900 tw-mb-2",children:"Atajos de teclado"}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-1",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Shift"}),e.jsx("span",{children:"+ clic para seleccionar múltiples tareas"})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Ctrl"}),e.jsx("span",{children:"+"}),e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"C"}),e.jsx("span",{children:"Copiar"})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Ctrl"}),e.jsx("span",{children:"+"}),e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"V"}),e.jsx("span",{children:"Ppegar"})]})]})]})}),e.jsx(re.Panel,{position:"top-left",className:"tw-m-0",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-2",children:[e.jsxs("div",{children:[T.estatusFromStrapi===Ee.PUBLISHED&&e.jsx(M.Tag,{color:"green",variant:"outlined",borderable:!1,label:"Publicado",size:"lg",rounded:!0,badgeColor:"green"}),T.estatusFromStrapi===Ee.DRAFT&&e.jsx(M.Tag,{color:"neutral",variant:"outlined",borderable:!1,label:"Borrador",size:"lg",rounded:!0})]}),!Y&&B>0&&e.jsxs("p",{className:"tw-text-blue-dark-500 ui-text-xs tw-font-medium",children:[B," ",B===1?"tarea seleccionada":"tareas seleccionadas"]})]})}),e.jsx(re.Panel,{position:"top-right",className:"tw-m-0",children:e.jsxs("div",{className:"tw-flex tw-gap-2",children:[!Y&&e.jsxs(M.ButtonGroup,{children:[e.jsxs(M.Button,{icon:"CopyOutlined",onClick:_,disabled:!I,variant:I?"button":"outlined",color:I?"blue-dark":"neutral",title:I?`Copiar ${B} ${B===1?"tarea":"tareas"} (Ctrl+C)`:"Selecciona tareas para copiar (mantén Shift y haz clic)",children:["Copiar ",B>0&&`(${B})`]}),e.jsxs(M.Button,{icon:"DocumentOutlined",onClick:()=>P(),disabled:!F(),variant:"outlined",color:"neutral",title:F()?`Pegar ${y} ${y===1?"tarea":"tareas"} (Ctrl+V)`:"No hay tareas copiadas",children:["Pegar ",y>0&&`(${y})`]})]}),e.jsxs(M.ButtonGroup,{color:"white",variant:"outlined",children:[e.jsx(M.Button,{icon:"Minus2Outlined",onClick:te}),e.jsxs(M.Button,{onClick:ae,onDoubleClick:Z,children:[U,"%"]}),e.jsx(M.Button,{icon:"Plus1Outlined",onClick:K})]})]})})]}),h&&e.jsx(fr,{isOpen:h.isOpen,position:h.position,onClose:g,createNodeFromPopup:m,parentNodeInfo:w()}),x&&e.jsx(jr,{isOpen:x.isOpen,onClose:j,createConnectionFromPopup:b,availableConnections:oe()})]})},Sr=({initialNodes:t,initialEdges:a})=>e.jsx(re.ReactFlowProvider,{children:e.jsx(Er,{initialNodes:t,initialEdges:a})}),Ve=qe.create(t=>({step:1,setStep:a=>t({step:a}),reset:()=>t({step:1})})),kr=({limit:t})=>{const a=Ve(o=>o.step),s=Ve(o=>o.setStep),n=p.useCallback(()=>{a<t&&s(a+1)},[a,s,t]),r=p.useCallback(()=>{a>1&&a<=t&&s(a-1)},[a,s,t]),i=p.useCallback(o=>{o>0&&o<=t&&s(o)},[s,t]);return p.useMemo(()=>({step:a,nextStep:n,prevStep:r,onStepChange:i}),[a,n,r,i])},Rt=["fase_plantilla","tipo_plantilla","categoria","tipo_medio","medio_especifico","pertenencia_medio","ubicacion_medio","responsable_impresion"],zt=["fase_plantilla","modo_configuracion","tipo_medio","formato_salida"],$t=["tipo_medio","formato_salida","medio_especifico"],Bt={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"]}}},Ht={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 _t(t){const[a,s]=p.useState([]),[n,r]=p.useState({}),{setClaveParams:i,templateFormData:o,setTemplateFormData:d,resetTemplateFormData:l,setDisableField:c,setClave:u,claveParams:f,setParamTipo:h}=Se(),{tasks_api:w}=we(),m=Ve(T=>T.step),{data:g,error:x,isSuccess:b,isError:j}=de.useQuery({queryKey:["paramsTipoPlantilla"],queryFn:async()=>{const T=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}),R=await w.get(`/api/params-tipos?${T}`);return R.data?{paramsTiposPlantilla:ge(R.data.data)}:{paramsTiposPlantilla:[]}}});p.useEffect(()=>{x&&j&&console.log(x)},[x,j]),p.useEffect(()=>{if(g&&b){const T=g.paramsTiposPlantilla;s(T)}},[g,b]);const v={fase_plantilla:(T,R)=>{d({fase_plantilla:T}),h({fase_plantilla:R})},tipo_plantilla:(T,R)=>{d({tipo_plantilla:T}),h({tipo_plantilla:R})},modo_configuracion:(T,R)=>{d({modo_configuracion:T}),h({modo_configuracion:R})},categoria:(T,R)=>{d({categoria:T}),h({categoria:R})},formato_salida:(T,R)=>{d({formato_salida:T}),h({formato_salida:R})},tipo_medio:(T,R)=>{d({tipo_medio:T}),h({tipo_medio:R})},medio_especifico:(T,R)=>{d({medio_especifico:T}),h({medio_especifico:R})},responsable_impresion:(T,R)=>{d({responsable_impresion:T}),h({responsable_impresion:R})},pertenencia_medio:(T,R)=>{d({pertenencia_medio:T}),h({pertenencia_medio:R})},ubicacion_medio:(T,R)=>{d({ubicacion_medio:T}),h({ubicacion_medio:R})}},L={fase_plantilla:(T,R)=>i({field:T,value:R}),tipo_plantilla:(T,R)=>i({field:T,value:R}),categoria:(T,R)=>i({field:T,value:R}),tipo_medio:(T,R)=>i({field:T,value:R}),medio_especifico:(T,R)=>i({field:T,value:R}),responsable_impresion:(T,R)=>i({field:T,value:R}),pertenencia_medio:(T,R)=>i({field:T,value:R}),ubicacion_medio:(T,R)=>i({field:T,value:R})},S={Digital:{execute:()=>{const T=a.filter(W=>W.step===3).find(W=>W.key==="responsable_impresion").params_plantillas.find(W=>W.name==="N/A").id,R="step3.responsable_impresion",Y=["responsable_impresion"];d({responsable_impresion:"N/A"}),t(R,T),c({fields:Y,value:!0}),i({field:"responsable_impresion",value:"NA"})}},Impreso:{execute:()=>{const T="step3.responsable_impresion",R=["responsable_impresion"];d({responsable_impresion:""}),t(T,""),c({fields:R,value:!1}),i({field:"responsable_impresion",value:""})}}},k={"Sitios Fijos":{execute:()=>X()},"Vallas Móviles":{execute:()=>B()},Indoors:{execute:()=>X()},Camiones:{execute:()=>I()},"Brand Riders":{execute:()=>I()}},N={"Sitios Fijos":{execute:()=>y()},"Vallas Móviles":{execute:()=>y()},Indoors:{execute:()=>y()},Camiones:{execute:()=>{F(),S.Impreso.execute()}},"Brand Riders":{execute:()=>{F(),S.Impreso.execute()}}},_={"Sitios Fijos":{execute:()=>P()},"Vallas Móviles":{execute:()=>F()},Indoors:{execute:()=>P()},Camiones:{execute:()=>F()},"Brand Riders":{execute:()=>F()}},P=()=>{const T=["medio_especifico"],R=o.modo_configuracion,Y=`step${m}.medio_especifico`,W=`step${m}.formato_salida`;c(R==="Default"?{fields:T,value:!0}:{fields:T,value:!1}),d({medio_especifico:""}),d({formato_salida:""}),t(Y,""),t(W,""),i({field:"medio_especifico",value:""}),i({field:"formato_salida",value:""})},F=()=>{const T=a.filter(q=>q.step===m).find(q=>q.key==="formato_salida").params_plantillas.find(q=>q.name==="Impreso").id,R=`step${m}.formato_salida`,Y=["formato_salida","medio_especifico"],W=`step${m}.medio_especifico`;d({medio_especifico:""}),d({formato_salida:"Impreso"}),t(R,T),t(W,""),i({field:"medio_especifico",value:""}),i({field:"tipo_medio",value:o.tipo_medio}),c({fields:Y,value:!0})},y=()=>{const T=["formato_salida"],R=`step${m}.formato_salida`,Y={};Y.formato_salida="",d(Y),t(R,""),c({fields:T,value:!1})},X=()=>{const T=["formato_salida","medio_especifico"],R=`step${m}.formato_salida`,Y={};Y.formato_salida="",d(Y),t(R,""),c({fields:T,value:!1})},B=()=>{const T=["formato_salida"],R=["medio_especifico"],Y=`step${m}.formato_salida`,W=`step${m}.medio_especifico`,q={};q.formato_salida="",q.medio_especifico="",d(q),t(Y,""),t(W,""),c({fields:T,value:!1}),c({fields:R,value:!0})},I=()=>{const T=a.filter(q=>q.step===m).find(q=>q.key==="formato_salida").params_plantillas.find(q=>q.name==="Impreso").id,R=`step${m}.formato_salida`,Y=`step${m}.medio_especifico`,W=["formato_salida","medio_especifico"];d({formato_salida:"Impreso"}),t(R,T),t(Y,""),c({fields:W,value:!0}),S.Impreso.execute()},O=(T,R)=>{Object.keys(Bt).includes(T)&&Bt[T][R].fieldsToClear.forEach(q=>{const G={};G[q]="",d(G),i({field:q,value:""}),t&&[...new Set(a.map(E=>E.step))].forEach(E=>{const z=`step${E}.${q}`;t(z,"")})})},H=(T,R,Y)=>T==="modo_configuracion"&&Y?Ht[T][Y][R].fieldsToEnableDisable:Ht[T][R].fieldsToEnableDisable,U=T=>a.filter(R=>R.step===T),K=T=>{var R;return n[T]||((R=a.find(Y=>Y.key===T))==null?void 0:R.params_plantillas)},te=T=>{var Y,W,q;let R=[];T==="Sitios fijos"?R=(Y=a.find(G=>G.key==="medio_especifico"))==null?void 0:Y.params_plantillas.filter(G=>G.tipomedio_nombre==="OOH"):T==="Indoors"?R=(W=a.find(G=>G.key==="medio_especifico"))==null?void 0:W.params_plantillas.filter(G=>G.tipomedio_nombre==="InDoor"):R=(q=a.find(G=>G.key==="medio_especifico"))==null?void 0:q.params_plantillas,r(G=>({...G,medio_especifico:R}))},ae=(T,R)=>{const Y=T.key;if($t.includes(Y)&&Y==="tipo_medio"){const W=R.label,q=o.fase_plantilla,G=o.modo_configuracion;if(q==="Preventa"){te(W);return}else if(G==="Especifico"){te(W);return}}},Z=(T,R,Y)=>{const W=T.params_plantillas.find(q=>T.key==="categoria"?q.reference_id===R.value:q.id===R.value);if(W){const q=T.key,G=R.label;if(v[q](G,Y),zt.includes(q))if(O(q,G),q==="fase_plantilla"){const E=H(q,G);c({fields:["categoria","modo_configuracion","tipo_plantilla"],value:!0}),E.length>0&&c({fields:E,value:!1})}else if(q==="modo_configuracion"){const D=G,E=o.fase_plantilla,z=H(q,D,E);c({fields:["medio_especifico","formato_salida"],value:!0}),z.length>0&&c({fields:z,value:!1})}else if(q==="tipo_medio"){const D=G,E=o.modo_configuracion;o.fase_plantilla==="Venta"?E==="Especifico"?k[D].execute():N[D].execute():E==="Especifico"&&_[D].execute()}else if(q==="formato_salida")S[G].execute();else{const D=H(q,G);D.length>0&&c({fields:D,value:!1})}if(Rt.includes(q)){let D="",E="";if(q==="formato_salida"){const z=o.modo_configuracion,A=G;E="tipo_medio",D=z==="Default"&&A==="Digital"?D="DDG":D="DRP"}else E=q,D=W.abbreviation;L[E](E,D)}$t.includes(q)&&ae(T,R)}},se=()=>{if(o){const T=o.fase_plantilla;if(T==="Preventa"){const R=o.modo_configuracion,Y=f.fase_plantilla||"XX";let W=null;if(R==="Default")W=f.tipo_medio||"XXX";else{const G=o.tipo_medio;["Vallas Móviles","Camiones","Brand Riders"].includes(G)?W=f.tipo_medio||"XXX":W=f.medio_especifico||"XXX"}const q=`${Y}-${W}`;u(q)}if(T==="Venta"){const R=f.fase_plantilla||"XX",Y=f.tipo_plantilla||"XXX",W=f.categoria||"XX",q=f.medio_especifico||f.tipo_medio||f.modo_configuracion||"XXX",G=f.responsable_impresion||"XX",D=f.pertenencia_medio||"X",E=f.ubicacion_medio||"X",z=`${R}-${Y}-${W}-${q}-${G}-${D}-${E}`;u(z)}}};return p.useEffect(()=>{se()},[f]),{templateFields:a,getFieldsByStep:U,dropdownFunctionsUpdateClave:L,fieldsForUpdateClave:Rt,resetTemplateFormData:l,fieldsWithDisableTrigger:zt,getFieldsToDisable:H,handleOptionSelected:Z,getFilteredOptions:K,dropdownFunctionsUpdateFormData:v}}const Nt=()=>{const{control:t,setValue:a}=je.useFormContext(),s=Ve(c=>c.step),{getFieldsByStep:n,handleOptionSelected:r,getFilteredOptions:i}=_t(a),{disabledFields:o}=Se(),d=p.useMemo(()=>n(s),[s,n]),l=c=>`El campo ${c.charAt(0).toLocaleLowerCase()+c.slice(1)} es requerido`;return d.map(c=>{const u=`step${c.step}.${c.key}`,f=c.label,w=i(c.key).map(m=>({label:m.name,value:c.key==="categoria"?m.reference_id:m.id}));return e.jsx(je.Controller,{name:u,control:t,rules:{required:{value:!o[c.key],message:l(f)},validate:m=>o[c.key]||m?!0:l(f)},render:({field:m,fieldState:{error:g}})=>e.jsx("div",{children:e.jsx(M.Dropdown,{label:f,value:m.value,onValueChange:x=>{m.onChange(x)},error:g==null?void 0:g.message,options:w,onOptionSelect:x=>{r(c,x,c.id)},disabled:o[c.key]||!1})})},c.id)})},Ir=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Nt,{})}),Dr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Nt,{})}),Fr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Nt,{})}),Pr=({step:t})=>e.jsxs("div",{className:"tw-flex tw-min-h-[27rem] tw-flex-col tw-gap-y-4",children:[t===1&&e.jsx(Ir,{}),t===2&&e.jsx(Dr,{}),t===3&&e.jsx(Fr,{})]}),Mr=t=>{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 t.reduce((s,n)=>{const r=`step${n.step}`,i=a[r];return i&&i.includes(n.key)&&(s[r]||(s[r]={}),s[r][n.key]=""),s},{})},Ar=t=>{const a={step1:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria"],step2:["tipo_medio","formato_salida","medio_especifico"],step3:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},s={};return Object.keys(a).forEach(n=>{s[n]={},a[n].forEach(r=>{var o;const i=(o=t[n])==null?void 0:o[r];s[n][r]=i!==void 0?i:""})}),s},Or=t=>t&&t.status===400?{failureLevel:"strapi",errorMessage:"Error al procesar la solicitud",technicalDetails:t.message}:t&&t.status===401?{failureLevel:"authentication",errorMessage:"Error de autenticación",technicalDetails:`Token expirado o inválido: ${t.message}`}:t&&t.status===500?{failureLevel:"strapi",errorMessage:"Error de servidor",technicalDetails:`Error en el servidor de Strapi: ${t.message}`}:{failureLevel:"unknown",errorMessage:"Error inesperado al crear la plantilla",technicalDetails:`Error desconocido: ${t.message}`};function qr(t,a){const{clave:s,paramsTipo:n,currentTemplateForEdit:r,isEditTemplate:i,setDisableField:o,setClaveParams:d,isDuplicateTemplate:l,templateFormData:c}=Se(),{tasks_api:u}=we(),{getFieldsByStep:f,dropdownFunctionsUpdateFormData:h,templateFields:w}=_t(),m=()=>{var S;try{const k={},N=t(),_=Ar(N),{step1:P}=_,F=[];k.clave=s,P.categoria!=""&&(k.categoria=P.categoria);for(const[y,X]of Object.entries(_))for(const[B,I]of Object.entries(X)){const O={id:null,params_tipo:{id:null}};if(I!=""){const H=n[B];if(B==="categoria"){const U=w.find(te=>te.key==="categoria"),K=(S=U==null?void 0:U.params_plantillas)==null?void 0:S.find(te=>te.reference_id===I);O.id=K==null?void 0:K.id}else O.id=I;O.params_tipo.id=H,F.push(O)}}return Object.keys(F).length>0&&(k.params_plantillas=F),k}catch(k){console.log(k)}},g=async S=>{var k;try{let N=null;return i?N=await u.put(`/api/plantillas/${r.id}`,{data:S}):N=await u.post("/api/plantillas",{data:S}),N.data?ge(N.data):null}catch(N){throw console.error("Error en saveTemplateToStrapi:",{error:N.message,status:(k=N.response)==null?void 0:k.status}),N}},x=async S=>{var k;try{const N=Pe.stringify({filters:{plantilla:{id:S}}},{encodeValuesOnly:!0}),_=await u.get(`/api/plantillas/plantilla-tareas-grafico?${N}`);return _.data?ge(_.data.data):null}catch(N){throw console.error("Error en getTemplateWithTasks:",{error:N.message,status:(k=N.response)==null?void 0:k.status}),N}},b=async()=>{try{let S=m();const k=await g(S);if(!k)return{success:!1,message:"No se pudo guardar la plantilla en Strapi",error:"templateData es null"};const N=await x(k.id);return N?{success:!0,message:"Plantilla creada y sincronizada completamente",data:N}:{success:!1,message:"No se pudieron obtener los datos completos de la plantilla",error:"completeData es null"}}catch(S){const{response:{data:k}}=S,N=Or(k.error);return console.error("Error al guardar la plantilla: ",{level:N.failureLevel,message:N.errorMessage,technicalDetails:N.technicalDetails}),{success:!1,message:N.errorMessage,error:N.technicalDetails}}},j=()=>{const{params_plantillas:S}=r;let k={};[1,2,3].forEach(_=>{const P=`step${_}`;k[P]={},f(_).forEach(y=>{var B;const X=S.find(I=>I.params_tipo.key===y.key);if(X){let I=null;if(y.key==="categoria"){const O=(B=y.params_plantillas)==null?void 0:B.find(H=>H.id===X.id);I=(O==null?void 0:O.reference_id)||X.id}else I=X.id;k[P][y.key]=I}})}),a(k)},v=()=>{const{params_plantillas:S}=r;for(const k of S){const{params_tipo:{id:N,key:_},name:P,id:F}=k,y=w.find(X=>X.key===_).params_plantillas.find(X=>X.id===F);h[_](P,N),y&&d({field:_,value:y.abbreviation})}},L=()=>{try{const{fase_plantilla:S,modo_configuracion:k,formato_salida:N,tipo_medio:_}=c;if(S==="Venta")o({fields:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria","tipo_medio"],value:!1}),k==="Default"?(o({fields:["tipo_medio","formato_salida"],value:!1}),o({fields:["medio_especifico"],value:!0}),["Sitios Fijos","Vallas Móviles","Indoors"].includes(_)||o({fields:["formato_salida","medio_especifico"],value:!0}),N==="Digital"?(o({fields:["responsable_impresion"],value:!0}),o({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1})):(["Sitios Fijos","Indoors"].includes(_)&&o({fields:["formato_salida","medio_especifico"],value:!1}),["Vallas Móviles"].includes(_)&&(o({fields:["formato_salida"],value:!1}),o({fields:["medio_especifico"],value:!0})),["Camiones","Brand Riders"].includes(_)&&o({fields:["formato_salida","medio_especifico"],value:!0}),N==="Digital"?(o({fields:["responsable_impresion"],value:!0}),o({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1}));else if(o({fields:["modo_configuracion"],value:!1}),o({fields:["tipo_plantilla","categoria"],value:!0}),k=="Default"){const P=["formato_salida","medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"];o({fields:["tipo_medio"],value:!1}),o({fields:P,value:!0})}else["Sitios Fijos","Indoors"].includes(_)?(o({fields:["formato_salida"],value:!0}),o({fields:["medio_especifico"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!0})}catch(S){console.error("Error al aplicar reglas de habilitar y deshabilitar campos",S)}};return p.useEffect(()=>{(i||l)&&r&&(j(),v())},[i,l]),p.useEffect(()=>{(i||l)&&c&&L()},[i,c,l]),{savePlantilla:b,getTemplateWithTasks:x}}const Lr=()=>{const{watch:t,getValues:a}=je.useFormContext(),{templateFormData:s,isDuplicateTemplate:n,currentTemplateForEdit:r}=Se(),[i,o]=p.useState(!1),d=p.useRef(null),l=p.useRef(null),c=p.useRef(!1),u=t();return p.useEffect(()=>{if(!c.current&&n&&r){const h=setTimeout(()=>{d.current=a(),l.current={...s},c.current=!0,o(!1)},500);return()=>clearTimeout(h)}},[n,r,a,s]),p.useEffect(()=>{if(d.current&&l.current&&c.current){const h=a(),w=s,m=JSON.stringify(h)!==JSON.stringify(d.current),g=JSON.stringify(w)!==JSON.stringify(l.current);o(m||g)}},[u,s,a]),{hasChanges:i,resetChanges:()=>{d.current=null,l.current=null,c.current=!1,o(!1)}}},Rr=({onReset:t})=>{const{hasChanges:a,resetChanges:s}=Lr(),{setHasFormChanges:n}=Se();return p.useEffect(()=>{n(a)},[a,n]),p.useEffect(()=>{t(s)},[t,s]),null},zr=({isOpen:t,onClose:a})=>{const{step:s,nextStep:n,prevStep:r,onStepChange:i}=kr({limit:3}),o=Ve(Y=>Y.reset),{templateFields:d,resetTemplateFormData:l}=_t(),{clave:c,resetClave:u,resetDisabledFields:f,isEditTemplate:h,setIsEditTemplate:w,refetch:m,isDuplicateTemplate:g,hasFormChanges:x,setIsDuplicateTemplate:b}=Se(),{openTemplate:j}=Ae(),[v,L]=p.useState(!1),[S,k]=p.useState(""),[N,_]=p.useState(!1),P=p.useRef(null),F=Y=>{P.current=Y},y=Mr(d),X=s===1,B=s===3,I=X?"Cancelar":"Atrás";p.useEffect(()=>{t&&o()},[t,o]);const O=je.useForm({mode:"onChange",defaultValues:y}),{trigger:H,reset:U,clearErrors:K,getValues:te}=O,{savePlantilla:ae}=qr(te,U),Z=async()=>{if(await H()){if(s===3){if(!x&&g){k("Ya existe un proceso con éstos parámetros. Modifica al menos uno para poder duplicarlo."),_(!0);return}try{L(!0);const W=await ae();if(W.success){const q=W.data;if(R(),T(),_(!1),!h)try{await j({template:q,statusTemplate:ve.NEW})}catch(G){console.warn("La plantilla se creó exitosamente pero hubo un problema al abrirla:",G)}m()}else{const{error:q}=W;k(q),_(!0)}}catch(W){console.error("Error inesperado al guardar la plantilla:",W);return}finally{L(!1)}}n()}},se=()=>{k(""),_(!1)},T=()=>{K(),U(),l(),f(),u(),se(),h&&w(!1),g&&b(!1),P.current&&P.current()},R=()=>{T(),a()};return v?e.jsx(Ye,{isLoading:v}):e.jsxs(je.FormProvider,{...O,children:[e.jsx(Rr,{onReset:F}),e.jsx(M.Modal,{isOpen:t,closeAtCancel:!1,onSuccess:Z,cancelButtonText:I,successButtonText:B?h?"Guardar":"Crear":"Continuar",onCancel:X?R:r,onClose:R,size:"sm",icon:"PlantillaOutlined",title:h?"Editar plantilla":"Nueva plantilla",children:e.jsxs(M.Modal.Body,{children:[e.jsx("div",{className:"tw-flex tw-w-full tw-overflow-x-auto tw-pb-16 tw-pt-12",children:e.jsx("div",{className:"tw-flex tw-w-full",style:{justifyContent:"center",minWidth:"fit-content"},children:e.jsx(M.Stepper,{currentStep:s-1,onStepChange:Y=>i(Y+1),steps:[{title:"Paso 1",description:"INFORMACIÓN"},{title:"Paso 2",description:"DETALLES"},{title:"Paso 3",description:"PRODUCCIÓN"}]})})}),e.jsx("div",{className:"tw-flex tw-w-full tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-gap-0",children:[e.jsx("div",{className:"tw-bg-[#F0F0F0] tw-rounded-[100px] tw-p-2",style:{width:"fit-content",minWidth:"fit-content"},children:e.jsx("div",{className:"tw-font-sans tw-font-bold tw-py-1 tw-p-[90px]",children:c})}),e.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"})]})}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-y-4 tw-p-16",children:[N&&e.jsx(M.Alert,{open:!0,variant:"outlined",color:"red",message:S,className:"tw-mb-6",onClose:se}),e.jsx(Pr,{step:s})]})]})})]})},$r=({isOpen:t,onClose:a,replaceTemplate:s})=>e.jsx(e.Fragment,{children:e.jsx(M.Modal,{isOpen:t,closeAtCancel:!1,cancelButtonText:"Cancelar",successButtonText:"Abrir",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ExclamationTriangleOutlined",title:"Límite de plantillas",children:e.jsx(M.Modal.Body,{children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full ui-p-4",children:[e.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:e.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full tw-p-[35px]",style:{backgroundColor:"#EBEEF9"},children:e.jsx(M.Icon,{name:"ExclamationTriangleOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-text-center tw-mt-6",children:e.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-font-['Open_Sans'] tw-text-[#3658C1] tw-leading-tight",children:"¿Quieres continuar?"})}),e.jsx("div",{className:"tw-text-center tw-mt-2",children:e.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-font-['Open_Sans'] 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."})})]})})})}),Br=qe.create(t=>({cachedTemplate:null,canCreateTemplate:!1,setCachedTemplate:a=>t({cachedTemplate:a}),clearCachedTemplate:()=>t({cachedTemplate:null}),setCanCreateTemplate:a=>{const s=!(a<5);t({canCreateTemplate:s})}})),Hr=({isOpen:t,onClose:a,discardChanges:s,saveAndExit:n})=>e.jsx("div",{children:e.jsx(M.Modal,{isOpen:t,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Guardar y salir",onCancel:a,onClose:a,onSuccess:n,size:"sm",icon:"ExclamationTriangleOutlined",title:"Cambios sin guardar",children:e.jsx(M.Modal.Body,{children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full ui-p-4",children:[e.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:e.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full tw-p-[35px]",style:{backgroundColor:"#EBEEF9"},children:e.jsx(M.Icon,{name:"SaveOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-flex tw-flex-col tw-mx-6",children:e.jsx(M.Alert,{open:!0,variant:"outlined",color:"red",showCloseButton:!1,message:"Tienes cambios sin guardar en ésta plantilla",title:"No has guardado",className:"tw-mt-8"})}),e.jsx("div",{className:"tw-text-center tw-mt-5",children:e.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-font-['Open_Sans'] tw-text-[#3658C1]",children:"¿Qué deseas hacer antes de salir?"})}),e.jsx("div",{className:"tw-text-center tw-mt-1",children:e.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-font-['Open_Sans'] tw-text-[#6B6B6B]",children:"Si sales ahora sin guardar se perderán los cambios actuales."})}),e.jsx("div",{className:"tw-flex tw-justify-center tw-mt-4",children:e.jsx(M.Button,{variant:"outlined",color:"white",onClick:()=>{s(),a()},children:"Descartar cambios"})})]})})})}),Ra=({isOpen:t,onClose:a,publishTemplate:s})=>e.jsx(M.Modal,{isOpen:t,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Confirmar",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ArrowUpOutlined",title:"Publicar",children:e.jsx(M.Modal.Body,{children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full tw-p-8",children:[e.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:e.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full tw-p-[35px]",style:{backgroundColor:"#EBEEF9"},children:e.jsx(M.Icon,{name:"ArrowUpOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-text-center",children:e.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-font-['Open_Sans'] tw-text-[#3658C1] tw-leading-tight",children:"¿Estás seguro de que deseas publicar este proceso?"})}),e.jsx("div",{className:"tw-text-center",children:e.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-font-['Open_Sans'] 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."})})]})})}),Ur=()=>{const t="grid",a="create-edit",s=p.useRef(null),{isOpenModalLimit:n,setIsOpenModalLimit:r,setOpenModalCreateTemplate:i,openModalCreateTemplate:o,setOpenModalUnsavedChanges:d,openModalUnsavedChanges:l,openModalPublishTemplate:c,setOpenModalPublishTemplate:u}=Se(),{removeTemplateStates:f}=Xe(),{mode:h,setMode:w,setViewMode:m,getViewMode:g}=be(),{setCanCreateTemplate:x,canCreateTemplate:b}=Br(),j=h===t,{screens:v,get:L,delete:S,activeTemplate:k,activateTemplate:N,reorderingTemplates:_,replaceTemplate:P,saveTemplateChanges:F,publishTemplate:y,loadingPublishTemplate:X,loadingSaveChanges:B}=Ae(),I=178,[O,H]=p.useState([]),[U,K]=p.useState([]),[te,ae]=p.useState(null),[Z,se]=p.useState(!1),T=k!=null&&k.id?g(k.id):"readonly";p.useEffect(()=>{const $=()=>{if(!s.current)return;const ne=s.current.offsetWidth;let oe=0;const ie=[],ce=[],ue=10,le=s.current.querySelector("button:not([data-screen])"),pe=s.current.querySelector(".tw-mx-1");let xe=0;le&&(xe+=le.getBoundingClientRect().width),pe&&v.length>0&&(xe+=pe.getBoundingClientRect().width,xe+=ue);const fe=(he,Oe)=>{const Qe=Oe?54:0,at=(he==null?void 0:he.length)*8;return Math.max(80,at+40+Qe)},Me=ne-I-xe;v.forEach((he,Oe)=>{const Ne=!!(he.isNew||he.badgeLabel),Ce=fe(he.clave,Ne),Ie=Oe>0?ue:0,Qe=Ce+Ie;oe+Qe<=Me?(ie.push(he),oe+=Qe):ce.push(he)}),H(ie),K(ce)},J=()=>{const ne=v.length;x(ne)};return v.length>0&&($(),J(),window.addEventListener("resize",$)),()=>{window.removeEventListener("resize",$)}},[v,h]);const R=$=>$.estatus===ve.DIRTY||$.estatus===ve.NEW,Y=async $=>{R($)?(ae($.id),d(!0)):await S($.id)},W=()=>u(!0),q=async()=>{await S(te),await f(te)},G=async()=>{await F(!1)},D=async()=>{await F()},E=()=>{var J,ne;const $=(ne=(J=k==null?void 0:k.graph_layout)==null?void 0:J.snapshot)==null?void 0:ne.nodes.length;se(()=>$-1>=1)};p.useEffect(()=>{E()},[k,T]);const z=()=>!((k==null?void 0:k.estatus)==ve.IDLE&&Z&&k.estatusFromStrapi!==Ee.PUBLISHED),A=()=>{var J;const{nodes:$}=(J=k==null?void 0:k.graph_layout)==null?void 0:J.snapshot;return $==null?void 0:$.some(ne=>ne.type!=="start"&&(ne==null?void 0:ne.data.tarea_padre)===null&&(ne==null?void 0:ne.data.id_t_requerida)===null)},C=()=>(k==null?void 0:k.estatus)===ve.IDLE||A()?!0:!Z,V=async()=>{await y(k.id)};return B||X?e.jsx(Ye,{isLoading:B||X}):e.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-justify-between tw-items-center tw-flex-wrap",children:[e.jsx(zr,{isOpen:o,onClose:()=>i(!1)}),e.jsx($r,{isOpen:n,onClose:()=>r(!1),replaceTemplate:P}),e.jsx(Hr,{isOpen:l,onClose:()=>d(!1),discardChanges:q,saveAndExit:D}),e.jsx(Ra,{isOpen:c,onClose:()=>u(!1),publishTemplate:V}),e.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-items-center tw-justify-between tw-flex-1 tw-flex-wrap tw-py-4",ref:s,children:[e.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-items-center tw-justify-start tw-flex-1 tw-flex-wrap",children:[e.jsx(M.Button,{variant:j?"button":"outlined",color:j?"blue":"white",onClick:()=>w(t),children:"Listado de Plantillas"}),v.length>0&&e.jsx(M.Separator,{vertical:!0,className:"tw-mx-1"}),v.filter($=>O.some(J=>J.clave===$.clave)).map($=>{const J=(k==null?void 0:k.clave)===$.clave&&h===a;return e.jsxs(M.Button,{"data-screen":$.clave,variant:J?"button":"outlined",onClick:async()=>{await N($),w(a,$.id)},color:J?"blue":"white",slotLeft:"TaskOutlined",badgeColor:R($)?"orange":void 0,onClickRightSlot:()=>Y($),slotRight:"X2Outlined",children:[$.clave," ",$.status]},$.id)})]}),U.length>0&&e.jsx(M.Popup,{absolute:!0,slotRight:"AngleDownOutlined",label:`${U.length}+`,size:"lg",textColor:"blue",children:e.jsx("div",{className:"ui-py-2 ui-min-w-[250px]",children:e.jsx(M.List,{icon:"TaskOutlined",items:U.map($=>({id:$.id,label:$.clave})),onClick:async $=>{const J=await L($.id);await _(J.id),await N(J),w("create-edit",J.id)}})})})]}),h===a?e.jsx("div",{className:"tw-flex tw-gap-4 tw-items-center tw-justify-end tw-flex-wrap tw-py-4",children:k.estatusFromStrapi!==Ee.PUBLISHED&&e.jsxs(e.Fragment,{children:[e.jsx(M.Button,{color:"green",variant:"outlined",slotLeft:"ArrowUpOutlined",disabled:z(),onClick:W,children:"Publicar"}),T=="readonly"&&e.jsx(M.Button,{slotLeft:"EditOutlined",onClick:()=>(k==null?void 0:k.id)&&m(k.id,"edit"),children:"Editar"}),T==="edit"&&e.jsx(M.Button,{slotLeft:"SaveOutlined",onClick:G,disabled:C(),children:"Guardar"})]})}):e.jsx(M.Button,{disabled:b,tooltip:b?"Límite de 5 plantillas con cambios sin guardar. Guarda y cierra alguna para crear una nueva.":"",slotLeft:"Plus1Outlined",onClick:()=>{i(!0)},children:"Nueva plantilla"})]})},Wr=({isOpen:t,onClose:a,deleteTemplate:s})=>e.jsx(M.AlertDialog,{title:"Eliminar Borrador",iconContent:"BanOutlined",heading:"¿Estás seguro?",subheading:"Si eliminas este borrador, también se borrarán todas sus tareas y conexiones con otros borradores.",icon:"TrashOutlined",label:"Escribe 'Eliminar' para continuar",confirmationText:"Eliminar",isOpen:t,onClose:a,onConfirm:s,placeholder:""}),Gr=()=>{const{viewMode:t,setRefetch:a,openModalPublishTemplate:s,setOpenModalPublishTemplate:n,currentTemplateId:r,setOpenModalDeleteTemplate:i,openModalDeleteTemplate:o}=Se(),{publishTemplate:d,deleteTemplate:l}=Ae(),{debouncedSearch:c,filters:u}=qn("templates-container"),f=t==="list",[h,w]=p.useState(1),m=5,{data:g,isLoading:x,isFetching:b,refetch:j}=qa({page:h,pageSize:m,search:c,filters:u});p.useEffect(()=>{a(j)},[]),p.useEffect(()=>{w(1)},[u,c]);const{users:v}=Ke(),{getImageOBP:L}=we(),S=P=>{if(!(P!=null&&P.email))return"";const F=v==null?void 0:v[P==null?void 0:P.email];return F!=null&&F.image?L(F==null?void 0:F.image):""},k=p.useMemo(()=>{try{return!g||!v?[]:g.data.map(P=>{const F=S((P==null?void 0:P.updated_by)||(P==null?void 0:P.created_by));return{...P,updated_by:{...P.updated_by,image:F}}})}catch(P){return console.error("Error al mapear las plantillas:",P),[]}},[g,v]),N=async()=>{await d(r),await j()},_=async()=>{await l(r),await j()};return x||b?e.jsx(Ye,{isLoading:x||b}):e.jsxs("div",{className:"tw-flex tw-flex-col tw-justify-between tw-gap-y-4 tw-h-full",children:[e.jsx(Ra,{isOpen:s,onClose:()=>n(!1),publishTemplate:N}),e.jsx(Wr,{isOpen:o,onClose:()=>i(!1),deleteTemplate:_}),e.jsx("div",{className:`tw-grid tw-gap-4 ${f?"tw-grid-cols-1":"tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3"}`,children:k.map(P=>e.jsx(Pa,{fullWidth:f,template:P},P.id))}),e.jsx("div",{children:e.jsx(M.Pagination,{pageSize:m,pageCount:g==null?void 0:g.meta.pagination.pageCount,currentPage:h,onPageChange:P=>w(P)})})]})},za=()=>{var o,d,l,c;const t="grid",a="create-edit",{mode:s}=be(),n=s===t,r=s===a,i=Fe(u=>u.activeTemplate);return e.jsxs("div",{className:"tw-h-full tw-flex tw-flex-col tw-gap-y-6",children:[e.jsx(Ur,{}),n&&e.jsx(Gr,{}),r&&e.jsx(Sr,{initialNodes:((d=(o=i==null?void 0:i.graph_layout)==null?void 0:o.snapshot)==null?void 0:d.nodes)||[],initialEdges:((c=(l=i==null?void 0:i.graph_layout)==null?void 0:l.snapshot)==null?void 0:c.edges)||[]})]})},Kr=()=>({header:e.jsx(Gn,{}),body:e.jsx(za,{})}),Qr=({path:t,tab:a,setPath:s,project:n,setProject:r})=>{const i={"kanban-general":{kanban:e.jsx(As,{})},"teams-container":{teams:e.jsx(Sn,{})},"lista-campanias":{lista:e.jsx(as,{setPath:s,setProject:r}),gantt:e.jsx("div",{children:"gantt-campanias"})},"kanban-campania":{kanban:e.jsx(Es,{}),lista:e.jsx(zs,{}),gantt:e.jsx("div",{children:"kanban-campania-gantt"})},"templates-container":{templates:e.jsx(za,{})}};return t==="kanban-campania"?e.jsx(Ja,{project:n==null?void 0:n.id,children:i[t][a]}):i[t][a]},Vr=({label:t,active:a,onClick:s,disabled:n})=>n?e.jsx(ee.Tooltip,{dispatch:e.jsx("button",{className:"tw-cursor-help tw-text-xl tw-font-semibold tw-text-texts-placeholder",children:t}),children:e.jsx("div",{className:"tw-border-border-card tw-flex tw-items-center tw-justify-center tw-rounded-lg tw-border tw-bg-bg-card tw-px-3 tw-py-2",children:e.jsx("p",{className:"tw-text-lg tw-font-semibold tw-text-texts-placeholder",children:"Espéralo muy pronto..."})})}):e.jsx("button",{disabled:n,onClick:s,className:`${a?"tw-border-b-2 tw-border-texts-enfasis tw-text-blue-600 tw-text-texts-enfasis":""} tw-text-xl tw-font-semibold ${n?"tw-cursor-not-allowed tw-text-lg tw-text-texts-placeholder":"tw-text-texts-subtext"}`,children:t}),Xr=({tabs:t,renderItem:a,initialTab:s})=>{const[n,r]=p.useState(s??t[0].toLowerCase());p.useEffect(()=>{s&&r(s)},[s]);const i=o=>{r(o),a(o)};return e.jsx("div",{className:"tw-flex",children:t.map((o,d)=>e.jsx("div",{className:`${d===0?"tw-border-l-2":""} tw-border-r-2 tw-border-gray-200 tw-px-m`,children:e.jsx(Vr,{onClick:()=>i(o.toLowerCase()),label:o,active:o.toLowerCase()===n,disabled:["gantt"].includes(o.toLowerCase())},d)}))})};function Yr(){const{toast:t}=Ge();return t.message?e.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 ${t.type==="success"?"tw-bg-success-medium":"tw-bg-danger-medium"} tw-flex tw-items-center`,children:e.jsxs("div",{className:"relative tw-flex tw-h-full tw-w-full tw-items-center",children:[e.jsx("div",{className:`tw-h-full tw-w-[5px] ${t.type==="success"?"tw-bg-success-dark":"tw-bg-danger-regular"} tw-absolute tw-left-0 tw-rounded-full`}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2 tw-pl-4",children:[e.jsx(ee.Icons,{icon:t.type==="success"?"circle_checked":"circle_x",className:`tw-text-${t.type==="success"?"success-dark":"danger-dark"}`,color:t.type==="success"?"#368156":"#DC2626"}),e.jsx("p",{className:`${t.type==="success"?"tw-text-success-dark":"tw-text-danger-dark"} tw-text-xl tw-font-semibold`,children:t.message})]})]})}):null}const Jr=({path:t})=>{const a=()=>{const{selectPath:s,updateFilters:n,applyFilters:r,filters:i,fields:o}=ke(),[d,l]=p.useState("kanban"),[c,u]=p.useState(t),[f,h]=p.useState({id:1704,project:"Kanban de Campania"}),[w,m]=p.useState([{path:"lista-campanias",search:(i==null?void 0:i.search)??""},{path:"kanban-campania",search:(i==null?void 0:i.taskName)??""},{path:"kanban-general",search:(i==null?void 0:i.taskName)??""},{path:"teams-container",search:(i==null?void 0:i.taskName)??""},{path:"templates-container",search:(i==null?void 0:i.taskName)??""}]),[g,x]=p.useState(),b=p.useRef(null);p.useEffect(()=>{var _;l(c==="lista-campanias"?"lista":c==="kanban-campania"?"kanban":c==="teams-container"?"teams":c==="templates-container"?"templates":"kanban"),s(c),x(((_=w.find(P=>P.path===c))==null?void 0:_.search)??"")},[t,c]),p.useEffect(()=>{var _;((_=k())==null?void 0:_.trim())===""&&n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:null}),r()},[w]);const j=_=>({"kanban-general":"Kanban General","lista-campanias":"Campanias","teams-container":"Equipos","kanban-campania":`Kanban de ${f.project}`,"templates-container":"Plantillas"})[_],v=_=>{u(_)},L=["lista-campanias","kanban-campania"],S={"lista-campanias":["lista","gantt"],"kanban-campania":["kanban","lista","gantt"],"teams-container":["teams"],"templates-container":["templates"]},k=()=>{var _;return((_=w.find(P=>P.path===c))==null?void 0:_.search)??""},N=_=>{m(P=>P.map(F=>F.path===c?{...F,search:_}:F))};return p.useEffect(()=>{const _=setTimeout(()=>{n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:g==null?void 0:g.trim()}),N(g)},500);return()=>{clearTimeout(_)}},[g]),e.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:[e.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-px-l tw-pb-m",children:[e.jsxs("div",{className:"tw-flex tw-gap-xl",children:[c==="kanban-campania"&&e.jsx("button",{onClick:()=>v("lista-campanias"),className:"tw-text-primary hover:tw-text-primary/80 tw-flex tw-items-center tw-transition-colors",children:e.jsx(ee.Icons,{icon:"arrow_left",size:"xs",strokeWidth:5,color:"#4464C3",title:"Atrás"})}),e.jsx("h2",{className:"tw-font-sans tw-text-[1.6rem] tw-font-semibold tw-text-texts ",children:j(c)}),L.includes(c)&&e.jsx(Xr,{tabs:S[c],renderItem:_=>{l(_)},initialTab:d})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-s !tw-text-[16px]",children:[e.jsx(M.Input,{leftSlot:"SearchOutlined",onChange:_=>{x(_.target.value)},placeholder:"Buscar por tarea",value:g}),o.length>0&&e.jsx(ss,{filterChildren:b,children:e.jsx("div",{ref:b,className:"tw-h-fit tw-w-max tw-max-w-[400px] tw-rounded-lg tw-bg-bg-card tw-p-l tw-shadow-lg",children:e.jsx(is,{})})})]})]}),e.jsx("div",{className:"tw-h-full tw-max-h-[100%] tw-overflow-y-auto tw-scrollbar-none",children:e.jsx(Qr,{path:c,tab:d,setPath:v,project:f,setProject:h})})]})};return e.jsx(Ka,{children:e.jsxs(Za,{children:[e.jsx(a,{}),e.jsx(Yr,{})]})})},Zr=({path:t})=>["templates-container"].includes(t)?e.jsx(Wn,{startPath:t}):e.jsx(Jr,{path:t}),eo=()=>e.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:e.jsx("div",{className:"tw-flex tw-h-full tw-items-center tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-text-2xl tw-font-bold",children:[e.jsx("div",{className:"tw-h-10 tw-w-10 tw-animate-pulse tw-rounded-full tw-bg-primary-regular"}),e.jsx("p",{className:"tw-text-l tw-text-texts-enfasis",children:"un momento..."}),e.jsx("p",{className:"tw-text-sm tw-text-texts-placeholder",children:"estamos buscando tu usuario"})]})})}),to=()=>e.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:e.jsx("div",{className:"tw-flex tw-h-full tw-items-center tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-text-2xl tw-font-bold",children:[e.jsx("div",{className:"tw-h-10 tw-w-10 tw-animate-pulse tw-rounded-full tw-bg-primary-regular"}),e.jsx("p",{className:"tw-text-l tw-text-texts-enfasis",children:"No encontramos tu acceso"}),e.jsx("p",{className:"tw-text-sm tw-text-texts-placeholder",children:"por favor, contacta al administrador"})]})})}),ao=({path:t,user:a,url:s,mode:n})=>{const r=new de.QueryClient;if(!a)return e.jsx(eo,{});if(!a.accessToken)return e.jsx(to,{});let i={user:a,url:s,mode:n};return e.jsxs(Qn,{children:[e.jsx(M.Toaster,{}),e.jsx(Va,{...i,children:e.jsx(Qa,{...i,children:e.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:e.jsxs(de.QueryClientProvider,{client:r,children:[e.jsx(Zr,{path:t})," "]})})})})]})};exports.AppTasks=ao;
103
+ `+_)})()},title:i?"Editar tarea":"Nueva tarea",successButtonText:i?"Actualizar":"Crear",disabledSuccessButton:!L,children:e.jsxs("form",{className:"tw-flex tw-flex-col tw-gap-4",children:[e.jsx(je.Controller,{control:w,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 _;return e.jsx(M.Input,{fullWidth:!0,label:"Título",placeholder:"Ingresa el título de la tarea...",error:(_=g.title)==null?void 0:_.message,...N})}}),e.jsx(je.Controller,{control:w,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 _;return e.jsx(M.Input,{fullWidth:!0,label:"Descripción",placeholder:"Describe la tarea a realizar...",error:(_=g.description)==null?void 0:_.message,...N})}}),e.jsx(M.Separator,{}),e.jsx(je.Controller,{control:w,name:"priority",rules:{required:"La prioridad es obligatoria"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Prioridad",placeholder:"Selecciona la prioridad...",options:sr,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(je.Controller,{control:w,name:"difficulty",rules:{required:"La dificultad es obligatoria"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Dificultad",placeholder:"Selecciona la dificultad...",options:nr,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(je.Controller,{control:w,name:"duration",rules:{required:"La duración es obligatoria"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Duración",placeholder:"Selecciona la duración...",options:rr,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(M.Separator,{}),e.jsx(je.Controller,{control:w,name:"team",rules:{required:"El equipo es obligatorio"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,label:"Equipo",placeholder:"Selecciona el equipo...",options:d,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})}),e.jsx(je.Controller,{control:w,name:"responsible",rules:{required:"El responsable es obligatorio"},render:({field:N,fieldState:{error:_}})=>e.jsx(M.Dropdown,{fullWidth:!0,absolute:!0,label:"Responsable",placeholder:"Selecciona el responsable...",options:f,error:_==null?void 0:_.message,value:N.value,onValueChange:P=>{N.onChange(P)}})})]})})},or=()=>{const{get:t}=Ae(),a=Fe(i=>i.activeTemplate),{updateTaskInState:s,addTaskToState:n}=Xe();return{updateTaskInTemplate:async(i,o)=>{if(!a)return console.error("No hay plantilla activa"),!1;try{const d=await t(a.id);if(!d)return console.error("Plantilla no encontrada"),!1;console.log("🔄 updatedTaskData:",o);const l={id:i,uuid:o.uuid||crypto.randomUUID(),reference_graph:o.reference_graph||null,texto_corto:o.texto_corto||"",texto_largo:o.texto_largo||"",prioridad:o.prioridad||null,nivel_dificultad:o.nivel_dificultad||1,duracion:o.duracion||null,start:o.start||!1,equipo:o.equipo||null,responsable:o.responsable||null,plantilla:{id:d.id,clave:d.clave,categoria:d.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:o.plantilla_dependents||[],id_t_requerida:o.id_t_requerida||null,ids_t_dependientes:o.ids_t_dependientes||[],tarea_padre:o.tarea_padre||null,tareas:o.tareas||[]};i>0?await s({task:l}):await n({task:l})}catch(d){return console.error("❌ Error al actualizar tarea en plantilla:",d),!1}}}},ye={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"},qt={dependiente:{stroke:"#3B82F6",strokeDasharray:"5,5",strokeWidth:2},normal:{stroke:"#6B7280",strokeWidth:2}},Lt=t=>{const a=t.map(s=>({...s}));return a.filter(s=>s.type==="group").forEach(s=>{const n=a.filter(u=>u.parentId===s.id);if(n.length===0)return;const r=Math.min(...n.map(u=>u.position.x)),o=Math.max(...n.map(u=>{var f;return u.position.x+(typeof((f=u.style)==null?void 0:f.width)=="number"?u.style.width:ye.DEFAULT_CHILD_WIDTH)}))-r,d=Math.min(...n.map(u=>u.position.y)),c=Math.max(...n.map(u=>{var f;return u.position.y+(typeof((f=u.style)==null?void 0:f.height)=="number"?u.style.height:ye.DEFAULT_CHILD_HEIGHT)}))-d;s.style={...s.style??{},width:o,height:c}}),a},rt=t=>t.source===ye.START_NODE_ID||t.target===ye.START_NODE_ID,Be=t=>t===ye.START_NODE_ID,ir=t=>t==="dependiente"?qt.dependiente:qt.normal,lr=(t,a,s)=>({id:t,type:"main",position:a,selected:!1,deletable:!0,data:s}),ot=(t,a,s,n,r,i=!1,o=null,d=null)=>{const l=ir(n),c=i?ye.DEFAULT_SOURCE_HANDLE:s;return{id:`edge-${t}-${a}`,source:t,sourceHandle:c,target:a,targetHandle:ye.DEFAULT_TARGET_HANDLE,type:"smoothstep",deletable:!0,style:l,markerEnd:{type:"arrowclosed",width:12,height:12,color:l.stroke,strokeWidth:1},data:{connectionType:n,nodeType:r,isFromStartNode:i,parentId:o,childId:d}}},cr=(t,a)=>!(!t||!a||t===a),dr=t=>{const{clientX:a,clientY:s}="changedTouches"in t?t.changedTouches[0]:t;return{x:a,y:s}},ur=t=>t.filter(a=>a.type==="position"&&a.dragging===!1),Aa=t=>t.map(a=>a.id),Oa=({nodes:t,edges:a,setNodes:s,setEdges:n,newNodePopup:r,connectionPopup:i,closeNewNodePopup:o,closeConnectionPopup:d,setIsConnectingExistingNodes:l})=>{const{screenToFlowPosition:c,getNode:u,setViewport:f,fitView:h}=re.useReactFlow(),{get:w,update:m,addTaskUpdatingTemplate:g,addTemplateUpdatingTemplate:x}=Ae(),b=Fe(B=>B.activeTemplate),j=de.useQueryClient(),v=Fe(B=>B.setActiveTemplate),{removeTaskFromState:L,updateNodeWithNewEdge:S,updateTaskInState:k}=Xe(),N=p.useCallback(async B=>{const I=t.find(H=>H.id===B);if(!(I!=null&&I.data))return null;if(I.id===ye.START_NODE_ID){if(!b)return null;try{const H=await w(b.id),U=H.tarea_plantillas.find(K=>K.start===!0);return U!=null&&U.id?U.id:H.tarea_plantillas.length>0?H.tarea_plantillas[0].id:null}catch{return null}}const O=I.data.id;if(!O&&O!==0)return null;if(typeof O=="string"){if(O.includes("-"))return O;{const H=parseInt(O,10);return isNaN(H)?null:H}}else if(typeof O=="number")return O;return null},[t,b,w]),_=p.useCallback(async(B=t,I=a)=>{var O,H,U,K,te,ae,Z;if(!b){M.toast.warning("No hay template activo para actualizar layout");return}try{const se=await w(b.id);if(!se){M.toast.warning("Template no encontrado en IndexedDB");return}const T=(O=se.graph_layout)==null?void 0:O.snapshot;if(!(!T||JSON.stringify(T.nodes)!==JSON.stringify(B)||JSON.stringify(T.edges)!==JSON.stringify(I))){console.log("🔄 No hay cambios en el layout, omitiendo actualización");return}const Y=B.filter(G=>{var D;return!((D=G.data)!=null&&D.isInternal)&&!G.parentId}).map(G=>{const{style:D,measured:E,data:z,selected:A,...C}=G,{expandedDimensions:V,isExpanded:$,needsReExpansion:J,...ne}=z||{},oe=D?{...D,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...C,style:oe,data:ne}}),W=I.filter(G=>{var D;return!((D=G.data)!=null&&D.isInternal)}),q={...se,graph_layout:{id:((H=se.graph_layout)==null?void 0:H.id)||0,snapshot:{nodes:Y,edges:W,viewport:((K=(U=se.graph_layout)==null?void 0:U.snapshot)==null?void 0:K.viewport)||{x:0,y:0,zoom:1}},history:((te=se.graph_layout)==null?void 0:te.history)||[],zoom:((ae=se.graph_layout)==null?void 0:ae.zoom)||1,position:((Z=se.graph_layout)==null?void 0:Z.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await m(b.id,q),console.log("🗑️ [useFlowActions] Invalidando caché de la plantilla:",b.id),await j.invalidateQueries({queryKey:["template",b.id]}),await j.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlowActions] Caché invalidado exitosamente"),v(q)}catch(se){console.error("❌ Error al actualizar template layout:",se)}},[b,w,m,t,a,v]),P=p.useCallback(async(B=[],I=[],O,H)=>{var K,te,ae,Z,se,T,R,Y,W,q,G,D;const U=O||(b==null?void 0:b.id);if(!U){M.toast.warning("No hay template ID disponible para actualizar");return}try{const E=await w(U);if(!E)return;const z=(ae=(te=(K=E.graph_layout)==null?void 0:K.snapshot)==null?void 0:te.nodes)==null?void 0:ae.filter(V=>{var $;return!B.includes(V.id)&&!(($=V.data)!=null&&$.isInternal)&&!V.parentId}).map(V=>{const{style:$,measured:J,data:ne,...oe}=V,{expandedDimensions:ie,...ce}=ne||{},ue=$?{...$,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...oe,style:ue,data:ce}}),A=((T=(se=(Z=E.graph_layout)==null?void 0:Z.snapshot)==null?void 0:se.edges)==null?void 0:T.filter(V=>{var $;return!B.includes(V.source)&&!B.includes(V.target)&&!(($=V.data)!=null&&$.isInternal)}))||[],C={...E,graph_layout:{id:((R=E.graph_layout)==null?void 0:R.id)||0,snapshot:{nodes:z,edges:A,viewport:((W=(Y=E.graph_layout)==null?void 0:Y.snapshot)==null?void 0:W.viewport)||{x:0,y:0,zoom:1}},history:((q=E.graph_layout)==null?void 0:q.history)||[],zoom:((G=E.graph_layout)==null?void 0:G.zoom)||1,position:((D=E.graph_layout)==null?void 0:D.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await L({templateId:U,id:H||0}),await m(U,C),console.log("🗑️ [useFlowActions:updateAfterDeleted] Invalidando caché de la plantilla:",U),await j.invalidateQueries({queryKey:["template",U]}),await j.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlowActions:updateAfterDeleted] Caché invalidado exitosamente"),U===(b==null?void 0:b.id)&&v(C)}catch(E){console.error("❌ updateAfterDeleted - Error al actualizar template layout:",E)}},[b,w,m,a,t,L,v]),F=p.useCallback(async(B,I,O)=>{if(!r||!b)return;const{nodeId:H,sourceNodeId:U,sourceHandleId:K}=r;if(U)try{const te=await N(U);if(!te)return;if(B==="plantilla"){const ae=O;if(!(ae!=null&&ae.templateId))return;if(!await x(ae.templateId,b.id,te,I)){M.toast.error("No se pudo agregar la plantilla. Intenta nuevamente."),o();return}try{const G=await w(b.id);if(G){const D=(z,A)=>{for(const C of z){if(C.id===A||C.uuid===A)return C;if(C.tareas&&C.tareas.length>0){const V=D(C.tareas,A);if(V)return V}}return null},E=D(G.tarea_plantillas,te);if(E&&E.id){const z=(E.plantilla_dependents||[]).map(C=>typeof C=="object"&&C.id?{id:C.id}:typeof C=="number"?{id:C}:C),A={...E,plantilla_dependents:z,plantilla:{id:b.id,clave:G.clave,categoria:G.categoria||{id:0,nombre:"Sin categoría"}}};await k({task:A}),console.log("✅ Tarea padre agregada a templates_states.updated con plantilla_dependents:",E.id,A.plantilla_dependents)}}}catch(G){console.error("❌ Error al actualizar tarea padre en templates_states:",G)}const se=c({x:r.position.x,y:r.position.y}),T=ae.templateData||{id:ae.templateId,nombre_plantilla:`Plantilla ${ae.templateId}`,clave:`TPL-${ae.templateId}`,estatus:"activo",categoria:null,counts_tasks:0,dias_duracion:0},R={id:H,type:"group",position:se,selected:!1,deletable:!0,data:{id:ae.templateId,templateId:ae.templateId,type:"template",nombre_plantilla:T.nombre_plantilla||`Plantilla ${ae.templateId}`,clave:T.clave||`TPL-${ae.templateId}`,estatus:T.estatus||"activo",categoria:T.categoria||null,counts_tasks:T.counts_tasks||0,dias_duracion:T.dias_duracion||0,tarea_plantillas:T.tarea_plantillas||[],params_plantillas:T.params_plantillas||[],createdAt:T.createdAt||new Date().toISOString(),updatedAt:T.updatedAt||new Date().toISOString(),created_by:T.created_by||null,updated_by:T.updated_by||null}};s(G=>[...G,R]);const Y=K||ye.DEFAULT_SOURCE_HANDLE,W=Be(U),q=ot(U,H,Y,I,"plantilla",W,te);n(G=>[...G,q]);try{const G=[...t,R],D=[...a,q];await _(G,D)}catch(G){console.error("❌ Error al actualizar layout después de agregar plantilla:",G)}}else if(B==="tarea"){const ae=O;if(!ae)return;const Z=c({x:r.position.x,y:r.position.y}),se=-new Date().getTime(),T={id:se,reference_graph:H,title:ae.title,description:ae.description,priority:ae.priority,difficulty:ae.difficulty,duration:ae.duration,team:ae.team,responsible:ae.responsible,parent:{data:{id:te}}},R=await g(T,b.id,I),Y=lr(H,Z,R);s(D=>[...D,Y]);const W=K||ye.DEFAULT_SOURCE_HANDLE,q=Be(U),G=ot(U,H,W,I,B,q,te,se);n(D=>[...D,G]);try{const D=[...t,Y],E=[...a,G];await _(D,E)}catch(D){console.error("❌ Error al actualizar layout después de agregar tarea:",D)}setTimeout(()=>{try{const D=u(H);if(D){const E=window.innerWidth,z=window.innerHeight,A=E/2,C=z/2;f({x:A-D.position.x-130,y:C-D.position.y-40,zoom:1},{duration:800})}else h({padding:.1,duration:800})}catch{try{h({padding:.1,duration:800})}catch{}}},200)}o()}catch(te){console.error("❌ Error en createNodeFromPopup:",te)}},[r,b,g,x,N,c,s,n,o,_,t,a]),y=p.useCallback(async(B,I)=>{var K,te;if(console.log("🟢 createConnectionFromPopup - INICIO",{nodeType:B,connectionType:I}),!i){console.warn("⚠️ createConnectionFromPopup - No hay connectionPopup");return}const{sourceNodeId:O,sourceHandleId:H,targetNodeId:U}=i;console.log("🟢 createConnectionFromPopup - Datos de conexión:",{sourceNodeId:O,targetNodeId:U,sourceHandleId:H});try{if(!(window.validConnectionTypes||{dependiente:!0,hija:!0})[I]){console.warn("⚠️ createConnectionFromPopup - Tipo de conexión no válido:",I),M.toast.warning("Tipo de conexión no válido"),l(!1),d();return}const Z=t.find(A=>A.id===O),se=t.find(A=>A.id===U);console.log("🟢 createConnectionFromPopup - Nodos encontrados:",{sourceNode:Z==null?void 0:Z.id,targetNode:se==null?void 0:se.id,sourceData:Z==null?void 0:Z.data,targetData:se==null?void 0:se.data});const T=se==null?void 0:se.data,R=((K=Z==null?void 0:Z.data)==null?void 0:K.id)||O,Y=((te=se==null?void 0:se.data)==null?void 0:te.id)||U;console.log("🟢 createConnectionFromPopup - IDs extraídos:",{parentId:R,childId:Y});const W=ot(O,U,H||ye.DEFAULT_SOURCE_HANDLE,I,B,Be(O),R,Y);console.log("🟢 createConnectionFromPopup - Nuevo edge creado:",W),n(A=>[...A,W]);const q=[...a,W],G=T.id||-Date.now(),D=T.reference_graph||U,E={id:G,uuid:T.uuid||crypto.randomUUID(),reference_graph:D,texto_corto:T.texto_corto||"",texto_largo:T.texto_largo||"",prioridad:T.prioridad||null,nivel_dificultad:T.nivel_dificultad||1,duracion:T.duracion||null,start:T.start||!1,equipo:T.equipo||null,responsable:T.responsable||null,plantilla:{id:T.plantilla.id,clave:T.plantilla.clave,categoria:T.plantilla.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:T.plantilla_dependents||[],ids_t_dependientes:T.ids_t_dependientes||[],tarea_padre:I==="hija"?{id:W.data.parentId}:null,id_t_requerida:I==="dependiente"?{id:W.data.parentId}:null,tareas:T.tareas||[],type:"task"};console.log("🟢 createConnectionFromPopup - taskForState creado:",E),console.log("🟢 createConnectionFromPopup - currentTemplate.id:",b.id);const z=t.map(A=>A.id===U?{...A,data:E}:A);console.log("🟢 createConnectionFromPopup - Actualizando nodos en React Flow..."),s(z),console.log("✅ createConnectionFromPopup - Nodos actualizados en React Flow"),console.log("🟢 createConnectionFromPopup - Actualizando template layout..."),await _(z,q),console.log("✅ createConnectionFromPopup - Template layout actualizado"),console.log("🟢 createConnectionFromPopup - Llamando a updateNodeWithNewEdge..."),await S({templateId:b.id,edge:W,task:E}),console.log("✅ createConnectionFromPopup - updateNodeWithNewEdge completado")}catch(ae){console.error("❌ createConnectionFromPopup - Error al crear conexión:",ae),console.error("❌ createConnectionFromPopup - Stack:",ae.stack)}finally{console.log("🟢 createConnectionFromPopup - Limpiando estado..."),l(!1),d(),console.log("🟢 createConnectionFromPopup - FIN")}},[i,n,l,d,a,t,_]),X=p.useCallback(async B=>{if(!r||!b){M.toast.warning("No hay newNodePopup o template activo para actualizar el nodo");return}const{nodeId:I}=r;if(!I){M.toast.warning("No se encontró nodeId en newNodePopup");return}try{const O=t.find(U=>U.id===I);if(!O){M.toast.warning(`No se encontró el nodo con ID: ${I}`);return}const H={...O,data:{...O.data,...B,id:O.data.id||O.id,type:O.data.type||O.data.type,updatedAt:new Date().toISOString()}};s(U=>U.map(K=>K.id===I?H:K));try{const U=t.map(K=>K.id===I?H:K);await _(U,a)}catch(U){M.toast.error("Error al actualizar layout después de actualizar nodo:",U)}o()}catch(O){M.toast.error("Error al actualizar el nodo:",O)}},[r,b,t,s,a,_,o]);return{createNodeFromPopup:F,createConnectionFromPopup:y,updateNodeFromPopup:X,updateAfterDeleted:P}},wr=({data:t,id:a,isConnectable:s,selected:n})=>{be(F=>F.addNodeFromHandle);const r=be(F=>F.getViewMode),[i,o]=p.useState(!1),[d,l]=p.useState(t),c=Fe(F=>F.activeTemplate),u=Fe(F=>F.setActiveTemplate),{get:f,update:h}=Ae(),w=c!=null&&c.id?r(c.id):"readonly",{updateTaskInTemplate:m}=or(),{setNodes:g,setEdges:x,getNodes:b,getEdges:j}=re.useReactFlow(),v=de.useQueryClient(),{updateAfterDeleted:L}=Oa({nodes:b(),edges:j(),setNodes:g,setEdges:x,newNodePopup:null,connectionPopup:null,closeNewNodePopup:()=>{},closeConnectionPopup:()=>{},setIsConnectingExistingNodes:()=>{}}),S=(F,y)=>{F.preventDefault(),F.stopPropagation()},k=()=>{o(!0)},N=p.useCallback(async()=>{var O,H,U;const F=b().find(K=>K.id===a);if(!F){console.warn("⚠️ Nodo no encontrado para eliminar");return}const y=[F],X=Aa(y),B=y.length>0?(H=(O=y[0])==null?void 0:O.data)==null?void 0:H.id:0;x(K=>K.filter(te=>!X.includes(te.source)&&!X.includes(te.target))),g(K=>K.filter(te=>te.id!==a));let I;for(const K of y)try{const te=K.data;if((U=te==null?void 0:te.plantilla)!=null&&U.id){I=te.plantilla.id;break}}catch{}try{x(K=>((async()=>{await L(X,K,I,B)})().catch(te=>{console.error("❌ Error en updateAfterDeleted:",te)}),K))}catch(K){console.error("❌ Error en handleDeleteNode:",K)}},[a,b,j,g,x,L]),_=p.useCallback(async F=>{var y,X,B,I,O,H,U,K,te,ae;if(!c){console.warn("⚠️ MainNode.updateTemplateLayout - No hay template activo");return}try{const Z=await f(c.id);if(!Z){console.warn("⚠️ MainNode.updateTemplateLayout - Template no encontrado en IndexedDB");return}const se=(y=Z.graph_layout)==null?void 0:y.snapshot;if(!(!se||JSON.stringify(se.nodes)!==JSON.stringify(F))){console.log("🔄 MainNode.updateTemplateLayout - No hay cambios en nodos, omitiendo actualización");return}const R=F.filter(q=>{var G;return!((G=q.data)!=null&&G.isInternal)&&!q.parentId}).map(q=>{const{style:G,measured:D,data:E,selected:z,...A}=q,{expandedDimensions:C,isExpanded:V,needsReExpansion:$,...J}=E||{},ne=G?{...G,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...A,style:ne,data:J}}),Y=(((B=(X=Z.graph_layout)==null?void 0:X.snapshot)==null?void 0:B.edges)||[]).filter(q=>{var G;return!((G=q.data)!=null&&G.isInternal)}),W={...Z,graph_layout:{id:((I=Z.graph_layout)==null?void 0:I.id)||0,snapshot:{...(O=Z.graph_layout)==null?void 0:O.snapshot,nodes:R,edges:Y,viewport:((U=(H=Z.graph_layout)==null?void 0:H.snapshot)==null?void 0:U.viewport)||{x:0,y:0,zoom:1}},history:((K=Z.graph_layout)==null?void 0:K.history)||[],zoom:((te=Z.graph_layout)==null?void 0:te.zoom)||1,position:((ae=Z.graph_layout)==null?void 0:ae.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await h(c.id,W),console.log("🗑️ [MainNode] Invalidando caché de la plantilla:",c.id),await v.invalidateQueries({queryKey:["template",c.id]}),await v.invalidateQueries({queryKey:["template"]}),console.log("✅ [MainNode] Caché invalidado exitosamente"),c&&c.id===W.id&&u(W)}catch(Z){console.error("❌ MainNode.updateTemplateLayout - Error al actualizar template layout:",Z)}},[c,f,h,u,v]),P=async F=>{if(o(!1),c){const y={...t,texto_corto:F.title,texto_largo:F.description,prioridad:F.priority?typeof F.priority=="number"?F.priority:parseInt(F.priority.toString()):null,nivel_dificultad:F.difficulty?typeof F.difficulty=="number"?F.difficulty:parseInt(F.difficulty.toString()):1,duracion:F.duration?typeof F.duration=="number"?F.duration:parseInt(F.duration.toString()):null,equipo:{id:Number(F.team)||null},responsable:{id:Number(F.responsible)||null}};await m(t.id,y),g(X=>{const B=X.map(I=>I.id===a?{...I,data:{...I.data,...y,tarea_padre:t.tarea_padre,id_t_requerida:t.id_t_requerida,updatedAt:new Date().toISOString()}}:I);return console.log("🔄 updatedNodes:",B),setTimeout(()=>_(B),0),B})}};return p.useEffect(()=>{l(t)},[t]),e.jsxs("div",{className:`tw-border-2 tw-bg-white tw-px-4 tw-py-2 tw-rounded-lg tw-transition-all tw-duration-200 ${n?"tw-border-blue-500 tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":t.main?"ui-border-green-500 tw-shadow-sm":"ui-border-neutral-100 tw-shadow-sm"}`,children:[e.jsx(re.Handle,{isConnectable:s,id:"top-target",type:"target",position:re.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"right-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Right,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"bottom-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Bottom,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"left-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Left,onClick:F=>S(F)}),e.jsxs("div",{className:"tw-flex tw-h-full tw-flex-col tw-gap-y-2 tw-p-2 ",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-gap-x-4 ",children:[e.jsx("p",{className:"tw-font-bold tw-leading-none tw-text-neutral-900",children:d.texto_corto}),!t.isInternal&&c.estatusFromStrapi!==Ee.PUBLISHED&&w!=="readonly"&&e.jsx("div",{children:t.type==="task"?e.jsx(M.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"ElipsisOutlined",containerClassName:"nopan nodrag",buttonClassName:"nopan nodrag",children:e.jsxs(M.List,{children:[e.jsx(M.ListItem,{icon:"EditOutlined",onClick:k,children:"Editar"}),e.jsx(M.ListSeparator,{}),e.jsx(M.ListItem,{icon:"Plus1Outlined",color:"red",onClick:N,children:"Eliminar"})]})}):e.jsx(M.Button,{size:"md",variant:"outlined",color:"white",icon:"MaximizeOutlined",rounded:!0,className:"nopan"})})]}),e.jsx("p",{className:"ui-text-xs tw-text-neutral-900 ",children:d.texto_largo}),e.jsxs("div",{className:"tw-flex tw-gap-x-6 tw-justify-between",children:[e.jsx(Yn,{duration:d.duracion}),e.jsx(Xn,{difficulty:d.nivel_dificultad}),e.jsx(Zn,{priority:d.prioridad}),e.jsx(er,{responsible:d.responsable})]})]}),e.jsx(re.Handle,{isConnectable:s,id:"top-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Top,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"right-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Right,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"bottom-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Bottom,onClick:F=>S(F)}),e.jsx(re.Handle,{isConnectable:s,id:"left-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:re.Position.Left,onClick:F=>S(F)}),t.type==="task"&&i&&e.jsx(Ma,{isOpen:i,onClose:()=>o(!1),onSuccess:P,editMode:!0,taskToEdit:d})]})},pr=async({tasks_api:t,page:a=1,pageSize:s=10,search:n="",filters:r={}})=>{const i={clave:{$notNull:!0},estatus:{$ne:Ee.DELETED},...n?{$or:[{nombre_plantilla:{$containsi:n}},{clave:{$containsi:n}}]}:{},...Object.keys(r).reduce((l,c)=>(Array.isArray(r[c])?l[c]={id:{$in:r[c]}}:l[c]=r[c],l),{})},o=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"]}}},tarea_plantillas:{fields:["id"],filters:{start:!0},populate:{tareas:{fields:["id"]},ids_t_dependientes:{fields:["id"]}}}},sort:{createdAt:"asc"},pagination:{page:a,pageSize:s}},{encodeValuesOnly:!0}),d=await t.get(`/api/plantillas/all-plantillas?${o}`);return d.data?{data:ge(d.data.data),meta:d.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:s,pageCount:0,total:0}}}},qa=({page:t=1,pageSize:a=10,search:s="",filters:n={}})=>{const{tasks_api:r}=we();return de.useQuery({queryKey:["templates",t,a,s,n],queryFn:()=>pr({tasks_api:r,page:t,pageSize:a,search:s,filters:n}),staleTime:1e3*60*60*24,placeholderData:de.keepPreviousData,select:i=>({data:(i==null?void 0:i.data)||[],meta:i==null?void 0:i.meta})})},La=({isOpen:t,onClose:a,onSuccess:s,nodeDataType:n,parentNodeInfo:r})=>{var v,L,S,k;const i=be(N=>N.addNodeWithType),[o,d]=p.useState(0),l=5,[c,u]=p.useState(1),[f,h]=p.useState("");p.useEffect(()=>{t&&(u(1),h(""),d(0))},[t]),p.useEffect(()=>{u(1)},[f]);const{data:w,isLoading:m}=qa({page:c,pageSize:l,search:f}),g=N=>{h(N.target.value)},x=()=>{var _;if(o===0)return;const N=(_=w==null?void 0:w.data)==null?void 0:_.find(P=>P.id===o);if(!N){console.error("No se encontró la plantilla seleccionada en los datos");return}s?s({templateId:o,templateData:N}):i&&i(n.id,n.type,n.connectionType)};if(m)return e.jsx("div",{children:"Cargando..."});if(!(w!=null&&w.data))return e.jsx("div",{children:"No hay datos disponibles"});const b=((L=(v=w.meta)==null?void 0:v.pagination)==null?void 0:L.total)||0,j=b===1?"plantilla encontrada":"plantillas encontradas";return e.jsx(M.Modal,{icon:"TaskOutlined",isOpen:t,size:"lg",onSuccess:x,onClose:a,title:"Agregar plantilla",successButtonText:"Agregar",disableSuccessButton:o===0,closeAtSuccess:!0,children:e.jsxs(M.Modal.Body,{withPadding:!1,children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-gap-6 tw-px-12 tw-py-3",children:[e.jsxs("p",{className:"tw-flex-1 tw-text-[14px] tw-text-neutral-500",children:[b," ",j]}),e.jsx(M.Input,{className:"tw-flex-1",leftSlot:"SearchOutlined",fullWidth:!0,placeholder:"Buscar por nombre, parámetros o estado...",value:f,onChange:g})]}),e.jsx(M.Separator,{}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-6 tw-p-12",children:[w.data.map(N=>e.jsx(Pa,{mode:"modal",template:N,active:o===N.id,fullWidth:!0,onClick:d,withOptions:!1},N.id)),w.data.length===0&&e.jsx("div",{className:"tw-flex tw-items-center tw-justify-center tw-h-full",children:e.jsx("p",{className:"tw-text-[14px] tw-text-neutral-500",children:"No se encontraron plantillas con ese criterio de búsqueda"})})]}),e.jsx(M.Separator,{}),e.jsx("div",{className:"tw-mt-6",children:e.jsx(M.Pagination,{className:"tw-pt-0",pageSize:l,pageCount:((k=(S=w==null?void 0:w.meta)==null?void 0:S.pagination)==null?void 0:k.pageCount)||1,currentPage:c,onPageChange:N=>u(N)})})]})})},mr=({data:t,id:a})=>{const s=be(u=>u.addNodeWithType),[n,r]=p.useState(!1),[i,o]=p.useState(!1),[d,l]=p.useState({id:a,type:"tarea",connectionType:"dependiente"}),c=({type:u,connectionType:f})=>{s&&(l({id:a,type:u,connectionType:f}),u==="tarea"?r(!0):u==="plantilla"&&o(!0))};return console.log({data:t,id:a}),e.jsxs("div",{className:"tw-flex tw-items-center tw-justify-center",children:[d.type==="plantilla"&&e.jsx(La,{isOpen:i,onClose:()=>o(!1),nodeDataType:d}),e.jsx(re.Handle,{id:"top-target",type:"target",position:re.Position.Top}),e.jsx(re.Handle,{id:"right-target",type:"target",position:re.Position.Right}),e.jsx(re.Handle,{id:"bottom-target",type:"target",position:re.Position.Bottom}),e.jsx(re.Handle,{id:"left-target",type:"target",position:re.Position.Left}),e.jsx(re.Handle,{id:"top-source",type:"source",position:re.Position.Top}),e.jsx(re.Handle,{id:"right-source",type:"source",position:re.Position.Right}),e.jsx(re.Handle,{id:"bottom-source",type:"source",position:re.Position.Bottom}),e.jsx(re.Handle,{id:"left-source",type:"source",position:re.Position.Left}),e.jsx(M.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"Plus1Outlined",containerClassName:"nopan",buttonClassName:"nopan",children:e.jsxs(M.List,{className:"nopan nodrag",children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsx(M.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>c({type:"tarea",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"tarea",connectionType:"hija"}),children:"Hija"}),e.jsx(M.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Plantilla"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"plantilla",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"plantilla",connectionType:"hija"}),children:"Hija"})]})})]})},fr=({isOpen:t,position:a,onClose:s,createNodeFromPopup:n,parentNodeInfo:r})=>{const[i,o]=p.useState(!1),[d,l]=p.useState(!1),[c,u]=p.useState(null);if(!t)return null;const f=(x,b)=>{u({type:x,connectionType:b}),x==="tarea"?o(!0):x==="plantilla"&&l(!0)},h=()=>{o(!1),u(null),s()},w=()=>{l(!1),u(null),s()},m=x=>{c&&n(c.type,c.connectionType,x),h()},g=x=>{c&&x&&n(c.type,c.connectionType,x),w()};return e.jsxs(e.Fragment,{children:[!i&&!d&&e.jsx("div",{className:"tw-fixed tw-inset-0 tw-z-50",onClick:s}),!i&&!d&&e.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:e.jsx("div",{className:"tw-p-2",children:e.jsxs(M.List,{children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsx(M.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>f("tarea","dependiente"),children:"Dependiente"}),e.jsx(M.ListItem,{icon:"Plus1Outlined",onClick:()=>f("tarea","hija"),children:"Hija"}),e.jsx(M.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Plantilla"}),e.jsx(M.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>f("plantilla","dependiente"),children:"Dependiente"})]})})}),i&&c&&e.jsx(Ma,{isOpen:i,onClose:h,onSuccess:m,nodeDataType:{id:"",type:c.type,connectionType:c.connectionType},parentNodeInfo:r}),d&&c&&e.jsx(La,{isOpen:d,onClose:w,onSuccess:g,nodeDataType:{id:"",type:c.type,connectionType:c.connectionType},parentNodeInfo:r})]})};function xr({reactFlowWrapper:t,nodes:a}){const{setViewport:s,getViewport:n}=re.useReactFlow(),{zoom:r}=re.useViewport(),i=Math.round(r*100),[o,d]=p.useState([]),[l,c]=p.useState(-1),[u,f]=p.useState(!1),[h,w]=p.useState(0);p.useLayoutEffect(()=>{const S=t==null?void 0:t.current;if(S){const k=S.getBoundingClientRect();w(k.width)}},[t]);const m=p.useMemo(()=>{var _;if(!a||a.length===0)return{x:0,y:0,zoom:1};const S=a.find(P=>{var F;return(F=P==null?void 0:P.data)==null?void 0:F.main})??a[0];return{x:(h||(typeof window<"u"?window.innerWidth:0))/2-(((_=S==null?void 0:S.position)==null?void 0:_.x)??0),y:20,zoom:1}},[a,h]),g=p.useCallback(S=>{if(!u){const k=[...o.slice(0,l+1),S];d(k),c(k.length-1)}},[o,l,u]),x=p.useCallback(()=>{if(u)return;const S=n(),k=Math.min(S.zoom*1.2,2);g(S),f(!0),s({x:S.x,y:S.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),b=p.useCallback(()=>{if(u)return;const S=n(),k=Math.max(S.zoom/1.2,.5);g(S),f(!0),s({x:S.x,y:S.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),j=p.useCallback(()=>{if(u)return;const S=n();Math.abs(S.zoom-1)>.01&&g(S),f(!0),s({x:S.x,y:S.y,zoom:1}),setTimeout(()=>f(!1),100)},[n,s,g,u]),v=p.useCallback(()=>{if(u||l<=0)return;const S=o[l-1];f(!0),s(S),c(l-1),setTimeout(()=>f(!1),100)},[l,o,s,u]);return p.useEffect(()=>{o.length===0&&(d([{zoom:1,x:0,y:0}]),c(0))},[o.length]),{isReady:h!==0&&Array.isArray(a)&&a.length>0,defaultViewport:m,zoomPercentage:i,handleZoomIn:x,handleZoomOut:b,handleZoomTo100:j,handleDoubleClick:v}}const gr=t=>{var i,o;const a=((i=t.data)==null?void 0:i.isInternal)||!1,s=(o=t.data)==null?void 0:o.originalGroupId,n=t.selected||!1,r=d=>{if(d.preventDefault(),d.stopPropagation(),s){const c=be.getState().collapseGroup;c&&c(s)}};return e.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 ${n?"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:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Icon,{name:"FlagOutlined",background:!0}),e.jsx("p",{className:"tw-leading-none tw-text-neutral-500 tw-font-bold",children:t.data.clave}),a&&e.jsx(M.Button,{size:"md",variant:"outlined",color:"white",onClick:r,className:"tw-p-2 nopan nodrag",icon:"MinimizeOutlined",rounded:!0})]}),a&&e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Tag,{color:t.data.estatus==="published"?"green":"yellow",size:"xs",rounded:!0,label:t.data.estatus==="published"?"Publicado":"Borrador",variant:"outlined",borderable:!1}),(t.data.updatedAt||t.data.updated_at)&&e.jsx("p",{className:"tw-text-sm tw-text-neutral-500 tw-font-medium",children:new Date(t.data.updatedAt||t.data.updated_at).toLocaleDateString("es-ES")})]}),e.jsx(re.Handle,{id:"bottom-source",type:"source",position:re.Position.Bottom,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"}),e.jsx(re.Handle,{id:"top-target",type:"target",position:re.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"})]})},hr=()=>{const t=p.useCallback((r,i,o,d)=>{const l=(f,h)=>{const w=f.position.x,m=f.position.y,g=120,x=60,b=15;switch(h){case"top-source":case"top-target":return{x:w,y:m-x/2-b};case"bottom-source":case"bottom-target":return{x:w,y:m+x/2+b};case"left-source":case"left-target":return{x:w-g/2-b,y:m};case"right-source":case"right-target":return{x:w+g/2+b,y:m};default:return{x:w,y:m}}},c=l(r,o),u=l(i,d);return Math.sqrt(Math.pow(u.x-c.x,2)+Math.pow(u.y-c.y,2))},[]),a=p.useCallback((r,i)=>{if(r.includes("source")===i.includes("source"))return!1;const o=u=>u.includes("top")?"top":u.includes("bottom")?"bottom":u.includes("left")?"left":u.includes("right")?"right":null,d=o(r),l=o(i);return{top:"bottom",bottom:"top",left:"right",right:"left"}[d]===l},[]),s=p.useCallback((r,i)=>{const o=["top-source","bottom-source","left-source","right-source"],d=["top-target","bottom-target","left-target","right-target"];let l=1/0,c={handle1:o[0],handle2:d[0]};for(const u of o)for(const f of d){if(!a(u,f))continue;const h=t(r,i,u,f);h<l&&(l=h,c={handle1:u,handle2:f})}return c},[t,a]),n=p.useCallback((r,i,o=800)=>Math.sqrt(Math.pow(i.position.x-r.position.x,2)+Math.pow(i.position.y-r.position.y,2))<o,[]);return{findClosestHandles:s,calculateHandleDistance:t,areHandlesCompatible:a,shouldApplyMagneticConnection:n}},br=t=>{const[a,s]=p.useState(null),[n,r]=p.useState(null),[i,o]=p.useState(!1),d=p.useCallback((h,w,m,g)=>{s({isOpen:!0,nodeId:h,position:w,sourceNodeId:m,sourceHandleId:g})},[]),l=p.useCallback(()=>{s(null)},[]),c=p.useCallback((h,w,m,g,x)=>{o(!0),r({isOpen:!0,sourceNodeId:h,sourceHandleId:m,targetNodeId:w,targetHandleId:g,position:x})},[]),u=p.useCallback(()=>{o(!1),r(null)},[]),f=p.useCallback(()=>{var w,m,g;if(!(a!=null&&a.sourceNodeId))return null;const h=t.find(x=>x.id===a.sourceNodeId);return h?{id:h.id,label:(w=h.data)==null?void 0:w.label,nodeType:(m=h.data)==null?void 0:m.nodeType,connectionType:(g=h.data)==null?void 0:g.connectionType,data:h.data}:null},[a,t]);return{newNodePopup:a,connectionPopup:n,isConnectingExistingNodes:i,openNewNodePopup:d,closeNewNodePopup:l,openConnectionPopup:c,closeConnectionPopup:u,getParentNodeInfo:f,setIsConnectingExistingNodes:o}},yr=({initialNodes:t,initialEdges:a})=>{const[s,n,r]=re.useNodesState(Lt(t)),[i,o,d]=re.useEdgesState(a),[l,c]=p.useState(!1),u=p.useCallback(W=>{o(W)},[o]),{toObject:f}=re.useReactFlow(),{findClosestHandles:h,shouldApplyMagneticConnection:w}=hr(),{updateGraphLayout:m,get:g,update:x}=Ae(),b=Fe(W=>W.activeTemplate),j=Fe(W=>W.setActiveTemplate),v=de.useQueryClient(),{removeParentIdFromNodes:L}=Xe(),{newNodePopup:S,connectionPopup:k,isConnectingExistingNodes:N,openNewNodePopup:_,closeNewNodePopup:P,openConnectionPopup:F,closeConnectionPopup:y,getParentNodeInfo:X,setIsConnectingExistingNodes:B}=br(s),{createNodeFromPopup:I,createConnectionFromPopup:O,updateNodeFromPopup:H,updateAfterDeleted:U}=Oa({nodes:s,edges:i,setNodes:n,setEdges:u,newNodePopup:S,connectionPopup:k,closeNewNodePopup:P,closeConnectionPopup:y,setIsConnectingExistingNodes:B});p.useEffect(()=>{if(t&&t.length>0){if(!(t.some((z,A)=>{const C=s[A];return C?z.id!==C.id||JSON.stringify(z.position)!==JSON.stringify(C.position)||JSON.stringify(z.data)!==JSON.stringify(C.data):!0})||t.length!==s.filter(z=>{var A;return!((A=z.data)!=null&&A.isInternal)}).length)&&s.length>0)return;const{expandedGroups:q,groupTemplateData:G}=be.getState();let D=s.filter(z=>{var A,C;return((A=z.data)==null?void 0:A.isInternal)&&typeof((C=z.data)==null?void 0:C.originalGroupId)=="string"&&q.has(z.data.originalGroupId)});const E=Lt(t);if(D.length>0){const z=E.map(A=>{var C;if(q.has(A.id)){const V=s.find(J=>J.id===A.id),$=(C=V==null?void 0:V.data)==null?void 0:C.expandedDimensions;if($)return{...A,style:{...A.style,width:$.width,height:$.height},data:{...A.data,isExpanded:!0,expandedDimensions:$}}}return A});n([...z,...D])}else if(q.size>0){const z=E.map(A=>q.has(A.id)&&G[A.id]?{...A,data:{...A.data,isExpanded:!0,needsReExpansion:!0}}:A);n(z)}else n(E)}else n([])},[t,n]),p.useEffect(()=>{if(!l&&a&&a.length>0){const{expandedGroups:W}=be.getState(),q=i.filter(D=>{var E,z;return((E=D.data)==null?void 0:E.isInternal)&&typeof((z=D.data)==null?void 0:z.originalGroupId)=="string"&&W.has(D.data.originalGroupId)}),G=i.filter(D=>{var E,z;return((E=D.data)==null?void 0:E.redirectedToInternal)&&typeof((z=D.data)==null?void 0:z.originalTarget)=="string"&&W.has(D.data.originalTarget)});if(q.length>0||G.length>0){const D=a.filter(E=>!G.some(z=>{var A;return((A=z.data)==null?void 0:A.originalTarget)===E.target}));u([...D,...q,...G])}else u(a)}},[a,u,l]);const K=p.useCallback((W,q,G=!1)=>{const E=i.filter(C=>C.target===q).length>0;if(i.some(C=>C.source===W&&C.target===q||C.source===q&&C.target===W)&&!G)return M.toast.warning("La tarea destino ya tiene una conexión"),!1;const A=!E;return typeof window<"u"&&(window.validConnectionTypes={dependiente:A,hija:A}),A?!0:(M.toast.warning("La tarea destino ya tiene una conexión de entrada"),!1)},[i]),te=p.useCallback(W=>{if(!cr(W.source,W.target))return;Be(W.source)&&!W.sourceHandle&&(W.sourceHandle=ye.DEFAULT_SOURCE_HANDLE);const q=s.find(D=>D.id===W.source),G=s.find(D=>D.id===W.target);if(q&&G){if(!K(W.source,W.target))return;F(W.source,W.target,W.sourceHandle,W.targetHandle);return}return u(D=>re.addEdge(W,D))},[s,F,u,K]),ae=p.useCallback((W,q)=>{var G;if(!N&&!q.isValid&&q.fromNode){const D=s.find(J=>J.id===q.fromNode.id);if((D==null?void 0:D.type)==="group"){M.toast.warning("En una plantilla, no se puede crear una conexión");return}const E=dr(W),z=document.elementFromPoint(E.x,E.y);if(z!=null&&z.closest(".react-flow__node"))return;const A=crypto.randomUUID(),C=((G=q.fromHandle)==null?void 0:G.id)||ye.DEFAULT_SOURCE_HANDLE,$=Be(q.fromNode.id)?ye.DEFAULT_SOURCE_HANDLE:C;_(A,E,q.fromNode.id,$)}},[N,_,s]),Z=p.useCallback(async W=>{var E,z,A;const q=Aa(W),G=W.length>0?(z=(E=W[0])==null?void 0:E.data)==null?void 0:z.id:0;u(C=>C.filter(V=>!q.includes(V.source)&&!q.includes(V.target)));let D;for(const C of W)try{const V=C.data;if((A=V==null?void 0:V.plantilla)!=null&&A.id){D=V.plantilla.id;break}}catch{}try{u(C=>((async()=>{await U(q,C,D,G)})().catch(V=>{console.error("❌ Error en updateAfterDeleted:",V)}),C))}catch(C){console.error("❌ Error en onDeleteNode:",C)}},[u,U]),se=p.useCallback(async W=>{var G,D,E,z,A,C,V,$,J,ne,oe,ie,ce,ue;if(!W||W.length===0)return;let q;if(b!=null&&b.id)q=b.id;else for(const le of W){const pe=s.find(fe=>fe.id===le.source),xe=s.find(fe=>fe.id===le.target);if(pe!=null&&pe.data&&typeof pe.data=="object"&&"plantilla"in pe.data){const fe=pe.data.plantilla;if(fe!=null&&fe.id){q=fe.id;break}}if(xe!=null&&xe.data&&typeof xe.data=="object"&&"plantilla"in xe.data){const fe=xe.data.plantilla;if(fe!=null&&fe.id){q=fe.id;break}}}if(!q){console.warn("⚠️ onEdgesDelete - No se pudo obtener templateId");return}try{const le=await g(q);if(!le){console.warn("⚠️ onEdgesDelete - Template no encontrado en IndexedDB");return}const pe=W.map(Ce=>Ce.id),xe=((E=(D=(G=le.graph_layout)==null?void 0:G.snapshot)==null?void 0:D.edges)==null?void 0:E.filter(Ce=>{var Ie;return!pe.includes(Ce.id)&&!((Ie=Ce.data)!=null&&Ie.isInternal)}))||[],Me=(((C=(A=(z=le.graph_layout)==null?void 0:z.snapshot)==null?void 0:A.nodes)==null?void 0:C.filter(Ce=>{var Ie;return!((Ie=Ce.data)!=null&&Ie.isInternal)&&!Ce.parentId}))||[]).map(Ce=>{const{style:Ie,measured:Qe,data:at,...$a}=Ce,{expandedDimensions:so,isExpanded:no,needsReExpansion:ro,...Tt}=at||{},Ba=Ie?{...Ie,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0,Ha=Ce.data.id===W[0].data.childId?{...Tt,tarea_padre:null,id_t_requerida:null}:Tt;return{...$a,style:Ba,data:Ha}}),he=(($=(V=le.graph_layout)==null?void 0:V.snapshot)==null?void 0:$.edges)||[];if(!(JSON.stringify(he)!==JSON.stringify(xe)))return;const Ne={...le,graph_layout:{id:((J=le.graph_layout)==null?void 0:J.id)||0,snapshot:{nodes:Me,edges:xe,viewport:((oe=(ne=le.graph_layout)==null?void 0:ne.snapshot)==null?void 0:oe.viewport)||{x:0,y:0,zoom:1}},history:((ie=le.graph_layout)==null?void 0:ie.history)||[],zoom:((ce=le.graph_layout)==null?void 0:ce.zoom)||1,position:((ue=le.graph_layout)==null?void 0:ue.position)||{x:0,y:0}},estatus:ve.DIRTY,updatedAt:new Date().toISOString()};await L({templateId:q,id:W[0].data.childId}),await x(q,Ne),console.log("🗑️ [useFlow] Invalidando caché de la plantilla:",q),await v.invalidateQueries({queryKey:["template",q]}),await v.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlow] Caché invalidado exitosamente"),q===(b==null?void 0:b.id)&&j(Ne)}catch(le){console.error("❌ onEdgesDelete - Error al actualizar template layout:",le)}},[s,b,g,x,j,L]),T=p.useCallback(async W=>!W.nodes.some(G=>G.type==="start"||G.id===ye.START_NODE_ID),[]),R=p.useCallback((W,q,G)=>{var A,C,V;const D=s.find($=>$.id===q.id);if(!D)return;if(D.type==="group"&&((A=D.data)!=null&&A.isExpanded)){u($=>$.map(J=>{if(J.hidden&&J.target===q.id){const{hidden:ne,...oe}=J;return oe}return J}));return}let E;if(D.type==="group"?E=b==null?void 0:b.id:(V=(C=q==null?void 0:q.data)==null?void 0:C.plantilla)!=null&&V.id&&(E=q.data.plantilla.id),!E)return;const z=i.map($=>{var oe,ie,ce,ue,le;if(rt($))return $;const J=s.find(pe=>pe.id===$.source),ne=s.find(pe=>pe.id===$.target);if(J&&ne){const pe=J.type==="group"&&((oe=J.data)==null?void 0:oe.isExpanded),xe=ne.type==="group"&&((ie=ne.data)==null?void 0:ie.isExpanded),fe=(ce=J.data)==null?void 0:ce.isInternal,Me=(ue=ne.data)==null?void 0:ue.isInternal,he=(le=$.data)==null?void 0:le.redirectedToInternal;if(pe||xe||fe||Me||he)return $;if(J.id===q.id||ne.id===q.id||w(J,ne,ye.MAGNETIC_CONNECTION_DISTANCE)){const Ne=h(J,ne);if(Ne!=null&&Ne.handle1&&(Ne!=null&&Ne.handle2))return{...$,sourceHandle:Ne.handle1,targetHandle:Ne.handle2}}}return $});if(JSON.stringify(i)!==JSON.stringify(z))u(z),setTimeout(()=>{const $=f();m(E,$)},100);else{const $=f();m(E,$)}},[s,i,b,m,f,u,h,w]),Y=p.useCallback(W=>{r(W);const q=ur(W);if(q.length>0){const G=q.filter(D=>{var z;const E=s.find(A=>A.id===D);return(E==null?void 0:E.type)==="group"&&((z=E==null?void 0:E.data)==null?void 0:z.isExpanded)});if(G.length>0){u(D=>D.map(E=>{var C;const z=G.includes(E.target),A=!((C=E.data)!=null&&C.redirectedToInternal);return z&&A?{...E,hidden:!0}:E}));return}c(!0),setTimeout(()=>{const D=i.map(z=>{var V,$,J,ne;if(rt(z))return{...z};const A=s.find(oe=>oe.id===z.source),C=s.find(oe=>oe.id===z.target);if(A&&C){const oe=A.type==="group"&&((V=A.data)==null?void 0:V.isExpanded),ie=C.type==="group"&&(($=C.data)==null?void 0:$.isExpanded),ce=(J=A.data)==null?void 0:J.isInternal,ue=(ne=C.data)==null?void 0:ne.isInternal;if(oe||ie||ce||ue)return{...z};if(w(A,C,ye.MAGNETIC_CONNECTION_DISTANCE)){const le=h(A,C);if(le!=null&&le.handle1&&(le!=null&&le.handle2)&&(z.sourceHandle!==le.handle1||z.targetHandle!==le.handle2))return{...z,sourceHandle:le.handle1,targetHandle:le.handle2}}}return{...z}});if(i.some((z,A)=>{const C=D[A];return z.sourceHandle!==C.sourceHandle||z.targetHandle!==C.targetHandle})){const z=D.map(A=>({...A,id:A.id}));u(z)}setTimeout(()=>{c(!1)},200)},0)}},[r,i,s,u,h,w,c]);return{nodes:s,edges:i,newNodePopup:S,connectionPopup:k,setNodes:n,setEdges:u,onEdgesChange:d,onConnect:te,onConnectEnd:ae,onDeleteNode:Z,onEdgesDelete:se,onBeforeDelete:T,handleNodesChange:Y,onDragEnd:R,getParentNodeInfo:X,isProtectedConnection:rt,isStartNode:Be,createNodeFromPopup:I,updateNodeFromPopup:H,closeNewNodePopup:P,createConnectionFromPopup:O,closeConnectionPopup:y}},jr=({isOpen:t,onClose:a,createConnectionFromPopup:s,availableConnections:n})=>{if(!t)return null;const r=n||{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}},i=(o,d)=>{(o==="tarea"?r.tarea[d]:r.plantilla[d])&&s(o,d)};return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"tw-fixed tw-inset-0 tw-z-50 tw-flex tw-items-center tw-justify-center",children:[e.jsx("div",{className:"tw-bg-black/20 tw-absolute tw-inset-0",onClick:a}),e.jsx("div",{className:"ui-shadow-lg ui-border-neutral-100 ui-border-1 tw-relative tw-rounded-lg tw-bg-white tw-p-4",children:e.jsx("div",{children:e.jsxs(M.List,{children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsxs(M.ListItem,{icon:"ElipsisOutlined",iconColor:r.tarea.dependiente?"blue":"neutral",onClick:()=>i("tarea","dependiente"),children:["Dependiente222 ",!r.tarea.dependiente&&"(No disponible)"]}),e.jsxs(M.ListItem,{icon:"Plus1Outlined",iconColor:r.tarea.hija?"blue":"neutral",onClick:()=>i("tarea","hija"),children:["Hija ",!r.tarea.hija&&"(No disponible)"]}),e.jsx(M.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Plantilla"}),e.jsxs(M.ListItem,{icon:"ElipsisOutlined",iconColor:r.plantilla.dependiente?"blue":"neutral",onClick:()=>i("plantilla","dependiente"),children:["Dependiente ",!r.plantilla.dependiente&&"(No disponible)"]})]})})})]})})},vr=({data:t,id:a,selected:s})=>{const{expandedGroups:n}=be(),[r,i]=p.useState(!1),o=p.useRef(!1);p.useEffect(()=>{const f=(t==null?void 0:t.needsReExpansion)&&n.has(a),h=(t==null?void 0:t.templateId)||(t==null?void 0:t.id);if(f&&h&&!o.current){o.current=!0;const m=be.getState().expandGroup;m&&m(a,h).catch(g=>{console.error("Error al re-expandir grupo:",g),o.current=!1})}n.has(a)||(o.current=!1)},[t,a,n]);const d=async f=>{f.preventDefault(),f.stopPropagation();const h=(t==null?void 0:t.templateId)||(t==null?void 0:t.id);if(h){i(!0);try{const w=be.getState(),m=w.expandGroup,g=w.collapseGroup,x=n.has(a);x&&g?g(a):!x&&m&&await m(a,h)}catch{}finally{i(!1)}}},l=n.has(a),c=t==null?void 0:t.expandedDimensions,u=l&&c?{width:c.width,height:c.height,minWidth:c.width,minHeight:c.height}:{minWidth:268,minHeight:80};return e.jsxs("div",{className:`tw-rounded-lg tw-relative tw-transition-all tw-duration-200 ${s?"tw-bg-white tw-border-2 tw-border-blue-500 tw-shadow-lg tw-ring-2 tw-ring-blue-300 tw-ring-opacity-50":l?"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:u,children:[e.jsx(Ye,{isLoading:r}),e.jsx(re.Handle,{id:"top-target",type:"target",position:re.Position.Top,className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,isConnectable:!l}),e.jsx(re.Handle,{id:"right-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,position:re.Position.Right,isConnectable:!l}),e.jsx(re.Handle,{id:"bottom-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,position:re.Position.Bottom,isConnectable:!l}),e.jsx(re.Handle,{id:"left-target",type:"target",className:`tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white ${l?"tw-opacity-0 tw-pointer-events-none":""}`,position:re.Position.Left,isConnectable:!l}),!l&&e.jsxs("div",{className:"tw-flex tw-flex-col",children:[e.jsxs("div",{className:`tw-flex tw-justify-between tw-items-center tw-gap-x-4 ${l?"tw-px-6 tw-pt-6":"tw-p-6 tw-pb-0"}`,children:[e.jsxs("div",{className:"tw-flex tw-flex-col",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2",children:[e.jsx(M.Icon,{name:"TaskOutlined",color:"blue",size:"lg"}),e.jsx("p",{className:"tw-font-bold tw-leading-none tw-text-neutral-900",children:t.clave||t.nombre_plantilla||"N/A"})]}),t.nombre_plantilla&&t.clave&&e.jsx("p",{className:"tw-text-sm tw-text-neutral-600 tw-mt-1",children:t.nombre_plantilla})]}),e.jsx(M.Button,{size:"md",variant:"outlined",color:"white",onClick:d,disabled:r,rounded:!0,className:`tw-p-2 ${r?"tw-opacity-50":""} nopan nodrag`,icon:l?"MinimizeOutlined":"MaximizeOutlined"})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-x-2 tw-px-6",children:[e.jsx(M.Tag,{color:t.estatus==="published"?"green":"yellow",size:"xs",rounded:!0,label:t.estatus==="published"?"Publicado":"Borrador",variant:"outlined",borderable:!1}),t.updatedAt&&e.jsx("p",{className:"tw-text-sm tw-text-neutral-500 tw-font-medium",children:new Date(t.updatedAt).toLocaleDateString("es-ES")})]})]})]})},_r=(t,a,s,n)=>{const r=p.useRef(t),i=p.useRef(a);p.useEffect(()=>{r.current=t},[t]),p.useEffect(()=>{i.current=a},[a]);const{expandedGroups:o,groupTemplateData:d,toggleGroupExpansion:l,setGroupTemplateData:c,clearGroupTemplateData:u}=be(),f=de.useQueryClient(),{getTemplateWithTasks:h}=Ea(),{hydrateTasks:w}=Ia(),m=p.useCallback(async(j,v)=>{var L,S,k,N;try{await f.invalidateQueries({queryKey:["template",v]});const _=await h(v),P=(k=(S=(L=_==null?void 0:_.graph_layout)==null?void 0:L.snapshot)==null?void 0:S.nodes)==null?void 0:k.filter(C=>{var V,$;return((V=C.data)==null?void 0:V.isInternal)||C.parentId||(($=C.id)==null?void 0:$.includes("-internal-"))});if(P&&P.length>0&&console.warn("⚠️ [expandGroup] Nodos sospechosos en API para plantilla",v,":",P),!((N=_==null?void 0:_.graph_layout)!=null&&N.snapshot))throw new Error(`No se encontraron datos de graph_layout en la plantilla: ${v}`);const F=_.graph_layout.snapshot.nodes||[],y=F.filter(C=>{var oe,ie;const V=(oe=C.data)==null?void 0:oe.isInternal,$=!!C.parentId,J=(ie=C.id)==null?void 0:ie.includes("-internal-"),ne=V||$||J;return ne&&console.warn("🗑️ [expandGroup] Filtrando nodo corrupto:",{id:C.id,type:C.type,esInterno:V,tieneParentId:$,tieneInternalEnId:J}),!ne}),X={..._,graph_layout:{..._.graph_layout,snapshot:{..._.graph_layout.snapshot,nodes:y,edges:(_.graph_layout.snapshot.edges||[]).filter(C=>{var V,$;return!((V=C.data)!=null&&V.isInternal)&&!(($=C.id)!=null&&$.includes("-internal-"))})}}},B=F.length-y.length;B>0?console.warn(`⚠️ [expandGroup] Se filtraron ${B} nodos internos corruptos de la BD para plantilla ${v}`):console.log(`✅ [expandGroup] No se encontraron nodos corruptos en plantilla ${v}`);const I=await w(X),O={...X,hydratedNodes:I,nodes:I||X.graph_layout.snapshot.nodes||[],edges:X.graph_layout.snapshot.edges||[]},H=O.nodes,U=O.edges;if(!H||!U){console.error("❌ No se encontraron nodos o edges en la plantilla:",v);return}c(j,{nodes:H,edges:U,viewport:O.graph_layout.snapshot.viewport||{x:0,y:0,zoom:1}});const K=r.current.find(C=>C.id===j);if(!K){console.error("❌ No se encontró el nodo grupo:",j);return}const te=H.filter(C=>C.id!==j);let ae=1/0,Z=1/0,se=-1/0,T=-1/0;te.forEach(C=>{var le,pe,xe,fe,Me,he;const V=((le=C.position)==null?void 0:le.x)||0,$=((pe=C.position)==null?void 0:pe.y)||0,J=typeof((xe=C.style)==null?void 0:xe.width)=="number"?C.style.width:((fe=C.measured)==null?void 0:fe.width)||268,ne=typeof((Me=C.style)==null?void 0:Me.height)=="number"?C.style.height:((he=C.measured)==null?void 0:he.height)||111,oe=V-J/2,ie=V+J/2,ce=$,ue=$+ne;ae=Math.min(ae,oe),Z=Math.min(Z,ce),se=Math.max(se,ie),T=Math.max(T,ue)});const R=80,Y=60,W=se-ae,q=T-Z,G=W+R*2,D=q+R*2+Y,E=H.map((C,V)=>{var le,pe;if(C.id===j)return null;const $=((le=C.position)==null?void 0:le.x)||0,J=((pe=C.position)==null?void 0:pe.y)||0,ne=$-ae+R,oe=J-Z+R+Y,ie=C.type==="start"||C.id==="start",ce=ie?{...C.data,estatus:K.data.estatus,updatedAt:K.data.updatedAt,createdAt:K.data.createdAt,isInternal:!0,originalGroupId:j,originalNodeId:C.id}:{...C.data,isInternal:!0,originalGroupId:j,originalNodeId:C.id};return{...C,id:`${j}-internal-${C.id}`,parentId:j,extent:"parent",type:C.type==="group"?"main":C.type,position:{x:ne,y:oe},style:{...C.style},data:ce,draggable:!1,selectable:ie,selected:!1,deletable:!1,connectable:!1,focusable:ie,zIndex:999}}).filter(Boolean),z=U.map(C=>{const V=E.some(ne=>ne&&ne.id===`${j}-internal-${C.source}`),$=E.some(ne=>ne&&ne.id===`${j}-internal-${C.target}`);return!V||!$?null:{...C,id:`${j}-internal-${C.id}`,source:`${j}-internal-${C.source}`,target:`${j}-internal-${C.target}`,style:{...C.style},data:{...C.data,isInternal:!0,originalGroupId:j}}}).filter(Boolean),A=E.find(C=>{var V;return C&&((V=C.data)==null?void 0:V.originalNodeId)==="start"});A&&n(C=>C.map(V=>V.target===j?{...V,target:A.id,targetHandle:"top-target",data:{...V.data,redirectedToInternal:!0,originalTarget:j,originalTargetHandle:V.targetHandle}}:V)),l(j),s(C=>[...C.map($=>{if($.id===j){const{needsReExpansion:J,...ne}=$.data||{};return{...$,style:{...$.style,width:G,height:D},data:{...ne,isExpanded:!0,expandedDimensions:{width:G,height:D}},zIndex:1e3}}return $}),...E]),n(C=>[...C,...z])}catch(_){console.error("❌ Error al expandir el grupo:",_)}},[f,h,w,c,l,s,n]),g=p.useCallback(j=>{var P,F;const v=r.current,L=i.current,S=v.find(y=>y.id===j),k=((P=S==null?void 0:S.data)==null?void 0:P.templateId)||((F=S==null?void 0:S.data)==null?void 0:F.id),N=v.filter(y=>!y.id.startsWith(`${j}-internal-`)&&y.parentId!==j).map(y=>y.id===j?{...y,style:{...y.style,width:void 0,height:void 0},data:{...y.data,isExpanded:!1,expandedDimensions:void 0},zIndex:void 0}:y),_=L.filter(y=>!y.id.startsWith(`${j}-internal-`)).map(y=>{var X,B;if((X=y.data)!=null&&X.redirectedToInternal&&((B=y.data)==null?void 0:B.originalTarget)===j){const{redirectedToInternal:I,originalTarget:O,originalTargetHandle:H,...U}=y.data;return{...y,target:j,targetHandle:H||y.targetHandle,data:U}}return y});s(N),n(_),l(j),u(j),k&&f.invalidateQueries({queryKey:["template",k]})},[s,n,l,u,f]),x=p.useCallback(async(j,v)=>{o.has(j)?g(j):await m(j,v)},[o,m,g]),b=p.useCallback(j=>o.has(j),[o]);return{expandGroup:m,collapseGroup:g,toggleGroup:x,isGroupExpanded:b,groupTemplateData:d}},Nr=()=>{const{getNodes:t,setNodes:a,screenToFlowPosition:s,setCenter:n}=re.useReactFlow(),{copiedNodes:r,setCopiedNodes:i,getViewMode:o}=be(),{activeTemplate:d,setActiveTemplate:l}=Fe(),{updateGraphLayout:c,get:u,update:f}=Ae(),h=d!=null&&d.id?o(d.id):"readonly",w=p.useCallback(()=>`node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,[]),m=p.useCallback(()=>t().filter(N=>N.selected).filter(N=>!(N.type==="start"||N.id==="start"||N.type==="group")),[t]),g=p.useCallback(()=>{if(h==="readonly"){M.toast.error("No puedes copiar tareas en modo solo lectura");return}if(!d){M.toast.error("No hay una plantilla activa");return}const L=m();if(L.length===0){const k=t().filter(N=>N.selected);if(k.length>0){const N=k.some(P=>P.type==="group"),_=k.some(P=>P.type==="start"||P.id==="start");N?M.toast.error("Las plantillas conectadas no pueden ser copiadas"):_&&M.toast.error("El nodo de inicio no puede ser copiado")}else M.toast.error("No hay tareas seleccionadas para copiar");return}const S=L.map(k=>{const{selected:N,..._}=k;return{..._,data:{..._.data,_originalTemplateId:d.id}}});i(S),M.toast.success(`${L.length} ${L.length===1?"tarea copiada":"tareas copiadas"} con éxito`)},[h,d,m,t,i]),x=p.useCallback(async L=>{if(h==="readonly"){M.toast.error("No puedes pegar tareas en modo solo lectura");return}if(!d){M.toast.error("No hay una plantilla activa");return}if(r.length===0){M.toast.error("No hay tareas copiadas para pegar");return}const S=t();let k={x:0,y:0};if(L)k=s({x:L.x,y:L.y});else if(S.length>0){const B=S.reduce((O,H)=>O+H.position.x,0)/S.length,I=S.reduce((O,H)=>O+H.position.y,0)/S.length;k={x:B+50,y:I+100}}const N=r[0],_=k.x-N.position.x,P=k.y-N.position.y,F=r.map((B,I)=>{const O=w(),H=-(Date.now()+I),U=B.data.plantilla&&typeof B.data.plantilla=="object"?{...B.data.plantilla,id:d.id}:{id:d.id},{id:K,...te}=B.data,ae={...te,id:H,reference_graph:O,plantilla:U,parent:{data:{id:null}},_originalTemplateId:void 0};return{...B,id:O,position:{x:B.position.x+_,y:B.position.y+P},data:ae,selected:!0}}),X=[...S.map(B=>({...B,selected:!1})),...F];if(a(X),d.id)try{const B=await u(d.id);if(!B)return;const I=F.filter(H=>H.type!=="start"&&H.type!=="group").map(H=>{const U=H.data;return{id:U.id,reference_graph:H.id,nombre:U.nombre||U.texto_corto||"Tarea sin nombre",texto_corto:U.texto_corto||"",texto_largo:U.texto_largo||"",prioridad:U.prioridad??0,nivel_dificultad:U.nivel_dificultad??0,dias_duracion:U.dias_duracion??0,plantilla:{id:d.id},parent:{data:{id:null}},tareas:[],plantilla_dependents:U.plantilla_dependents||[],start:U.start||!1,es_grupo:U.es_grupo||!1,optional:U.optional||!1,subtask_completadas:U.subtask_completadas||0,subtask_totales:U.subtask_totales||0}}),O={...B,tarea_plantillas:[...B.tarea_plantillas,...I],estatus:"dirty",updatedAt:new Date().toISOString()};await f(d.id,O),l(O),setTimeout(async()=>{await c(d.id,{nodes:X,edges:[]})},50)}catch(B){console.error("Error al actualizar template en IndexedDB:",B)}if(F.length>0){const B=F.reduce((O,H)=>O+H.position.x,0)/F.length,I=F.reduce((O,H)=>O+H.position.y,0)/F.length;n(B,I,{zoom:1,duration:800})}M.toast.success(`${F.length} ${F.length===1?"tarea pegada":"tareas pegadas"} con éxito`)},[h,d,r,t,a,s,n,w,c,u,f,l]),b=p.useCallback(()=>r.length>0,[r]),v=m().length>0;return{handleCopy:g,handlePaste:x,hasCopiedNodes:b,hasSelectableNodes:v,copiedNodesCount:r.length}},Tr={main:wr,plus:mr,start:gr,group:vr},Cr=[.5,0],Er=({initialNodes:t,initialEdges:a})=>{const s=p.useRef(null),{nodes:n,edges:r,onEdgesChange:i,onConnect:o,onConnectEnd:d,onBeforeDelete:l,onDeleteNode:c,onEdgesDelete:u,handleNodesChange:f,newNodePopup:h,getParentNodeInfo:w,createNodeFromPopup:m,closeNewNodePopup:g,connectionPopup:x,createConnectionFromPopup:b,closeConnectionPopup:j,onDragEnd:v,setNodes:L,setEdges:S}=yr({initialNodes:t,initialEdges:a}),{expandGroup:k,collapseGroup:N}=_r(n,r,L,S),{handleCopy:_,handlePaste:P,hasCopiedNodes:F,copiedNodesCount:y}=Nr(),B=n.filter(ie=>!(!ie.selected||ie.type==="start"||ie.id==="start"||ie.type==="group")).length,I=B>0;p.useEffect(()=>{const ie=ce=>{const ue=ce.target;ue.tagName==="INPUT"||ue.tagName==="TEXTAREA"||ue.isContentEditable||((ce.ctrlKey||ce.metaKey)&&ce.key==="c"&&(ce.preventDefault(),_()),(ce.ctrlKey||ce.metaKey)&&ce.key==="v"&&(ce.preventDefault(),P()))};return document.addEventListener("keydown",ie),()=>{document.removeEventListener("keydown",ie)}},[_,P]);const O=p.useRef(k),H=p.useRef(N);p.useEffect(()=>{O.current=k,H.current=N},[k,N]),p.useEffect(()=>{const ie=async(ue,le)=>{O.current&&await O.current(ue,le)},ce=ue=>{H.current&&H.current(ue)};be.setState({expandGroup:ie,collapseGroup:ce})},[]);const{zoomPercentage:U,handleZoomIn:K,handleZoomOut:te,handleZoomTo100:ae,handleDoubleClick:Z}=xr({reactFlowWrapper:s,nodes:n}),{getViewMode:se}=be(),{activeTemplate:T}=Fe(),Y=(T!=null&&T.id?se(T.id):"readonly")==="readonly",W=Y?void 0:i,q=Y?void 0:f,G=Y?void 0:o,D=Y?void 0:d,E=Y?void 0:l,z=Y?void 0:v,A=Y?void 0:c,C=Y?void 0:u,V=Y?null:["Backspace","Delete"],ne=Y?{nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,nodesFocusable:!1,draggable:!1,selectionOnDrag:!1,connectOnClick:!1}:{nodesDraggable:!0,nodesConnectable:!0,elementsSelectable:!0,edgesFocusable:!0,nodesFocusable:!0,draggable:!1,selectionOnDrag:!1,connectOnClick:!0},oe=()=>{if(x)return{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}}};return e.jsxs("div",{className:"wrapper",ref:s,style:{width:"100%",height:"100vh"},children:[e.jsxs(re.ReactFlow,{nodes:n,edges:r,nodeTypes:Tr,onEdgesChange:W,onNodesChange:q,onConnect:G,onConnectEnd:D,onBeforeDelete:E,onNodeDragStop:z,onNodesDelete:A,onEdgesDelete:C,...ne,fitView:!0,fitViewOptions:{padding:2},nodeOrigin:Cr,defaultEdgeOptions:{type:"smoothstep"},connectionLineType:re.ConnectionLineType.SmoothStep,deleteKeyCode:V,multiSelectionKeyCode:Y?null:"Shift",children:[e.jsx(re.Background,{}),!Y&&e.jsx(re.Panel,{position:"bottom-left",className:"tw-m-0",children:e.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:[e.jsx("div",{className:"tw-font-semibold tw-text-neutral-900 tw-mb-2",children:"Atajos de teclado"}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-1",children:[e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Shift"}),e.jsx("span",{children:"+ clic para seleccionar múltiples tareas"})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Ctrl"}),e.jsx("span",{children:"+"}),e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"C"}),e.jsx("span",{children:"Copiar"})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2",children:[e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"Ctrl"}),e.jsx("span",{children:"+"}),e.jsx("kbd",{className:"tw-px-2 tw-pt-0.5 tw-bg-neutral-100 tw-rounded tw-text-sm",children:"V"}),e.jsx("span",{children:"Ppegar"})]})]})]})}),e.jsx(re.Panel,{position:"top-left",className:"tw-m-0",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-2",children:[e.jsxs("div",{children:[T.estatusFromStrapi===Ee.PUBLISHED&&e.jsx(M.Tag,{color:"green",variant:"outlined",borderable:!1,label:"Publicado",size:"lg",rounded:!0,badgeColor:"green"}),T.estatusFromStrapi===Ee.DRAFT&&e.jsx(M.Tag,{color:"neutral",variant:"outlined",borderable:!1,label:"Borrador",size:"lg",rounded:!0})]}),!Y&&B>0&&e.jsxs("p",{className:"tw-text-blue-dark-500 ui-text-xs tw-font-medium",children:[B," ",B===1?"tarea seleccionada":"tareas seleccionadas"]})]})}),e.jsx(re.Panel,{position:"top-right",className:"tw-m-0",children:e.jsxs("div",{className:"tw-flex tw-gap-2",children:[!Y&&e.jsxs(M.ButtonGroup,{children:[e.jsxs(M.Button,{icon:"CopyOutlined",onClick:_,disabled:!I,variant:I?"button":"outlined",color:I?"blue-dark":"neutral",title:I?`Copiar ${B} ${B===1?"tarea":"tareas"} (Ctrl+C)`:"Selecciona tareas para copiar (mantén Shift y haz clic)",children:["Copiar ",B>0&&`(${B})`]}),e.jsxs(M.Button,{icon:"DocumentOutlined",onClick:()=>P(),disabled:!F(),variant:"outlined",color:"neutral",title:F()?`Pegar ${y} ${y===1?"tarea":"tareas"} (Ctrl+V)`:"No hay tareas copiadas",children:["Pegar ",y>0&&`(${y})`]})]}),e.jsxs(M.ButtonGroup,{color:"white",variant:"outlined",children:[e.jsx(M.Button,{icon:"Minus2Outlined",onClick:te}),e.jsxs(M.Button,{onClick:ae,onDoubleClick:Z,children:[U,"%"]}),e.jsx(M.Button,{icon:"Plus1Outlined",onClick:K})]})]})})]}),h&&e.jsx(fr,{isOpen:h.isOpen,position:h.position,onClose:g,createNodeFromPopup:m,parentNodeInfo:w()}),x&&e.jsx(jr,{isOpen:x.isOpen,onClose:j,createConnectionFromPopup:b,availableConnections:oe()})]})},Sr=({initialNodes:t,initialEdges:a})=>e.jsx(re.ReactFlowProvider,{children:e.jsx(Er,{initialNodes:t,initialEdges:a})}),Ve=qe.create(t=>({step:1,setStep:a=>t({step:a}),reset:()=>t({step:1})})),kr=({limit:t})=>{const a=Ve(o=>o.step),s=Ve(o=>o.setStep),n=p.useCallback(()=>{a<t&&s(a+1)},[a,s,t]),r=p.useCallback(()=>{a>1&&a<=t&&s(a-1)},[a,s,t]),i=p.useCallback(o=>{o>0&&o<=t&&s(o)},[s,t]);return p.useMemo(()=>({step:a,nextStep:n,prevStep:r,onStepChange:i}),[a,n,r,i])},Rt=["fase_plantilla","tipo_plantilla","categoria","tipo_medio","medio_especifico","pertenencia_medio","ubicacion_medio","responsable_impresion"],zt=["fase_plantilla","modo_configuracion","tipo_medio","formato_salida"],$t=["tipo_medio","formato_salida","medio_especifico"],Bt={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"]}}},Ht={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 _t(t){const[a,s]=p.useState([]),[n,r]=p.useState({}),{setClaveParams:i,templateFormData:o,setTemplateFormData:d,resetTemplateFormData:l,setDisableField:c,setClave:u,claveParams:f,setParamTipo:h}=Se(),{tasks_api:w}=we(),m=Ve(T=>T.step),{data:g,error:x,isSuccess:b,isError:j}=de.useQuery({queryKey:["paramsTipoPlantilla"],queryFn:async()=>{const T=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}),R=await w.get(`/api/params-tipos?${T}`);return R.data?{paramsTiposPlantilla:ge(R.data.data)}:{paramsTiposPlantilla:[]}}});p.useEffect(()=>{x&&j&&console.log(x)},[x,j]),p.useEffect(()=>{if(g&&b){const T=g.paramsTiposPlantilla;s(T)}},[g,b]);const v={fase_plantilla:(T,R)=>{d({fase_plantilla:T}),h({fase_plantilla:R})},tipo_plantilla:(T,R)=>{d({tipo_plantilla:T}),h({tipo_plantilla:R})},modo_configuracion:(T,R)=>{d({modo_configuracion:T}),h({modo_configuracion:R})},categoria:(T,R)=>{d({categoria:T}),h({categoria:R})},formato_salida:(T,R)=>{d({formato_salida:T}),h({formato_salida:R})},tipo_medio:(T,R)=>{d({tipo_medio:T}),h({tipo_medio:R})},medio_especifico:(T,R)=>{d({medio_especifico:T}),h({medio_especifico:R})},responsable_impresion:(T,R)=>{d({responsable_impresion:T}),h({responsable_impresion:R})},pertenencia_medio:(T,R)=>{d({pertenencia_medio:T}),h({pertenencia_medio:R})},ubicacion_medio:(T,R)=>{d({ubicacion_medio:T}),h({ubicacion_medio:R})}},L={fase_plantilla:(T,R)=>i({field:T,value:R}),tipo_plantilla:(T,R)=>i({field:T,value:R}),categoria:(T,R)=>i({field:T,value:R}),tipo_medio:(T,R)=>i({field:T,value:R}),medio_especifico:(T,R)=>i({field:T,value:R}),responsable_impresion:(T,R)=>i({field:T,value:R}),pertenencia_medio:(T,R)=>i({field:T,value:R}),ubicacion_medio:(T,R)=>i({field:T,value:R})},S={Digital:{execute:()=>{const T=a.filter(W=>W.step===3).find(W=>W.key==="responsable_impresion").params_plantillas.find(W=>W.name==="N/A").id,R="step3.responsable_impresion",Y=["responsable_impresion"];d({responsable_impresion:"N/A"}),t(R,T),c({fields:Y,value:!0}),i({field:"responsable_impresion",value:"NA"})}},Impreso:{execute:()=>{const T="step3.responsable_impresion",R=["responsable_impresion"];d({responsable_impresion:""}),t(T,""),c({fields:R,value:!1}),i({field:"responsable_impresion",value:""})}}},k={"Sitios Fijos":{execute:()=>X()},"Vallas Móviles":{execute:()=>B()},Indoors:{execute:()=>X()},Camiones:{execute:()=>I()},"Brand Riders":{execute:()=>I()}},N={"Sitios Fijos":{execute:()=>y()},"Vallas Móviles":{execute:()=>y()},Indoors:{execute:()=>y()},Camiones:{execute:()=>{F(),S.Impreso.execute()}},"Brand Riders":{execute:()=>{F(),S.Impreso.execute()}}},_={"Sitios Fijos":{execute:()=>P()},"Vallas Móviles":{execute:()=>F()},Indoors:{execute:()=>P()},Camiones:{execute:()=>F()},"Brand Riders":{execute:()=>F()}},P=()=>{const T=["medio_especifico"],R=o.modo_configuracion,Y=`step${m}.medio_especifico`,W=`step${m}.formato_salida`;c(R==="Default"?{fields:T,value:!0}:{fields:T,value:!1}),d({medio_especifico:""}),d({formato_salida:""}),t(Y,""),t(W,""),i({field:"medio_especifico",value:""}),i({field:"formato_salida",value:""})},F=()=>{const T=a.filter(q=>q.step===m).find(q=>q.key==="formato_salida").params_plantillas.find(q=>q.name==="Impreso").id,R=`step${m}.formato_salida`,Y=["formato_salida","medio_especifico"],W=`step${m}.medio_especifico`;d({medio_especifico:""}),d({formato_salida:"Impreso"}),t(R,T),t(W,""),i({field:"medio_especifico",value:""}),i({field:"tipo_medio",value:o.tipo_medio}),c({fields:Y,value:!0})},y=()=>{const T=["formato_salida"],R=`step${m}.formato_salida`,Y={};Y.formato_salida="",d(Y),t(R,""),c({fields:T,value:!1})},X=()=>{const T=["formato_salida","medio_especifico"],R=`step${m}.formato_salida`,Y={};Y.formato_salida="",d(Y),t(R,""),c({fields:T,value:!1})},B=()=>{const T=["formato_salida"],R=["medio_especifico"],Y=`step${m}.formato_salida`,W=`step${m}.medio_especifico`,q={};q.formato_salida="",q.medio_especifico="",d(q),t(Y,""),t(W,""),c({fields:T,value:!1}),c({fields:R,value:!0})},I=()=>{const T=a.filter(q=>q.step===m).find(q=>q.key==="formato_salida").params_plantillas.find(q=>q.name==="Impreso").id,R=`step${m}.formato_salida`,Y=`step${m}.medio_especifico`,W=["formato_salida","medio_especifico"];d({formato_salida:"Impreso"}),t(R,T),t(Y,""),c({fields:W,value:!0}),S.Impreso.execute()},O=(T,R)=>{Object.keys(Bt).includes(T)&&Bt[T][R].fieldsToClear.forEach(q=>{const G={};G[q]="",d(G),i({field:q,value:""}),t&&[...new Set(a.map(E=>E.step))].forEach(E=>{const z=`step${E}.${q}`;t(z,"")})})},H=(T,R,Y)=>T==="modo_configuracion"&&Y?Ht[T][Y][R].fieldsToEnableDisable:Ht[T][R].fieldsToEnableDisable,U=T=>a.filter(R=>R.step===T),K=T=>{var R;return n[T]||((R=a.find(Y=>Y.key===T))==null?void 0:R.params_plantillas)},te=T=>{var Y,W,q;let R=[];T==="Sitios fijos"?R=(Y=a.find(G=>G.key==="medio_especifico"))==null?void 0:Y.params_plantillas.filter(G=>G.tipomedio_nombre==="OOH"):T==="Indoors"?R=(W=a.find(G=>G.key==="medio_especifico"))==null?void 0:W.params_plantillas.filter(G=>G.tipomedio_nombre==="InDoor"):R=(q=a.find(G=>G.key==="medio_especifico"))==null?void 0:q.params_plantillas,r(G=>({...G,medio_especifico:R}))},ae=(T,R)=>{const Y=T.key;if($t.includes(Y)&&Y==="tipo_medio"){const W=R.label,q=o.fase_plantilla,G=o.modo_configuracion;if(q==="Preventa"){te(W);return}else if(G==="Especifico"){te(W);return}}},Z=(T,R,Y)=>{const W=T.params_plantillas.find(q=>T.key==="categoria"?q.reference_id===R.value:q.id===R.value);if(W){const q=T.key,G=R.label;if(v[q](G,Y),zt.includes(q))if(O(q,G),q==="fase_plantilla"){const E=H(q,G);c({fields:["categoria","modo_configuracion","tipo_plantilla"],value:!0}),E.length>0&&c({fields:E,value:!1})}else if(q==="modo_configuracion"){const D=G,E=o.fase_plantilla,z=H(q,D,E);c({fields:["medio_especifico","formato_salida"],value:!0}),z.length>0&&c({fields:z,value:!1})}else if(q==="tipo_medio"){const D=G,E=o.modo_configuracion;o.fase_plantilla==="Venta"?E==="Especifico"?k[D].execute():N[D].execute():E==="Especifico"&&_[D].execute()}else if(q==="formato_salida")S[G].execute();else{const D=H(q,G);D.length>0&&c({fields:D,value:!1})}if(Rt.includes(q)){let D="",E="";if(q==="formato_salida"){const z=o.modo_configuracion,A=G;E="tipo_medio",D=z==="Default"&&A==="Digital"?D="DDG":D="DRP"}else E=q,D=W.abbreviation;L[E](E,D)}$t.includes(q)&&ae(T,R)}},se=()=>{if(o){const T=o.fase_plantilla;if(T==="Preventa"){const R=o.modo_configuracion,Y=f.fase_plantilla||"XX";let W=null;if(R==="Default")W=f.tipo_medio||"XXX";else{const G=o.tipo_medio;["Vallas Móviles","Camiones","Brand Riders"].includes(G)?W=f.tipo_medio||"XXX":W=f.medio_especifico||"XXX"}const q=`${Y}-${W}`;u(q)}if(T==="Venta"){const R=f.fase_plantilla||"XX",Y=f.tipo_plantilla||"XXX",W=f.categoria||"XX",q=f.medio_especifico||f.tipo_medio||f.modo_configuracion||"XXX",G=f.responsable_impresion||"XX",D=f.pertenencia_medio||"X",E=f.ubicacion_medio||"X",z=`${R}-${Y}-${W}-${q}-${G}-${D}-${E}`;u(z)}}};return p.useEffect(()=>{se()},[f]),{templateFields:a,getFieldsByStep:U,dropdownFunctionsUpdateClave:L,fieldsForUpdateClave:Rt,resetTemplateFormData:l,fieldsWithDisableTrigger:zt,getFieldsToDisable:H,handleOptionSelected:Z,getFilteredOptions:K,dropdownFunctionsUpdateFormData:v}}const Nt=()=>{const{control:t,setValue:a}=je.useFormContext(),s=Ve(c=>c.step),{getFieldsByStep:n,handleOptionSelected:r,getFilteredOptions:i}=_t(a),{disabledFields:o}=Se(),d=p.useMemo(()=>n(s),[s,n]),l=c=>`El campo ${c.charAt(0).toLocaleLowerCase()+c.slice(1)} es requerido`;return d.map(c=>{const u=`step${c.step}.${c.key}`,f=c.label,w=i(c.key).map(m=>({label:m.name,value:c.key==="categoria"?m.reference_id:m.id}));return e.jsx(je.Controller,{name:u,control:t,rules:{required:{value:!o[c.key],message:l(f)},validate:m=>o[c.key]||m?!0:l(f)},render:({field:m,fieldState:{error:g}})=>e.jsx("div",{children:e.jsx(M.Dropdown,{label:f,value:m.value,onValueChange:x=>{m.onChange(x)},error:g==null?void 0:g.message,options:w,onOptionSelect:x=>{r(c,x,c.id)},disabled:o[c.key]||!1})})},c.id)})},Ir=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Nt,{})}),Dr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Nt,{})}),Fr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Nt,{})}),Pr=({step:t})=>e.jsxs("div",{className:"tw-flex tw-min-h-[27rem] tw-flex-col tw-gap-y-4",children:[t===1&&e.jsx(Ir,{}),t===2&&e.jsx(Dr,{}),t===3&&e.jsx(Fr,{})]}),Mr=t=>{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 t.reduce((s,n)=>{const r=`step${n.step}`,i=a[r];return i&&i.includes(n.key)&&(s[r]||(s[r]={}),s[r][n.key]=""),s},{})},Ar=t=>{const a={step1:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria"],step2:["tipo_medio","formato_salida","medio_especifico"],step3:["responsable_impresion","pertenencia_medio","ubicacion_medio"]},s={};return Object.keys(a).forEach(n=>{s[n]={},a[n].forEach(r=>{var o;const i=(o=t[n])==null?void 0:o[r];s[n][r]=i!==void 0?i:""})}),s},Or=t=>t&&t.status===400?{failureLevel:"strapi",errorMessage:"Error al procesar la solicitud",technicalDetails:t.message}:t&&t.status===401?{failureLevel:"authentication",errorMessage:"Error de autenticación",technicalDetails:`Token expirado o inválido: ${t.message}`}:t&&t.status===500?{failureLevel:"strapi",errorMessage:"Error de servidor",technicalDetails:`Error en el servidor de Strapi: ${t.message}`}:{failureLevel:"unknown",errorMessage:"Error inesperado al crear la plantilla",technicalDetails:`Error desconocido: ${t.message}`};function qr(t,a){const{clave:s,paramsTipo:n,currentTemplateForEdit:r,isEditTemplate:i,setDisableField:o,setClaveParams:d,isDuplicateTemplate:l,templateFormData:c}=Se(),{tasks_api:u}=we(),{getFieldsByStep:f,dropdownFunctionsUpdateFormData:h,templateFields:w}=_t(),m=()=>{var S;try{const k={},N=t(),_=Ar(N),{step1:P}=_,F=[];k.clave=s,P.categoria!=""&&(k.categoria=P.categoria);for(const[y,X]of Object.entries(_))for(const[B,I]of Object.entries(X)){const O={id:null,params_tipo:{id:null}};if(I!=""){const H=n[B];if(B==="categoria"){const U=w.find(te=>te.key==="categoria"),K=(S=U==null?void 0:U.params_plantillas)==null?void 0:S.find(te=>te.reference_id===I);O.id=K==null?void 0:K.id}else O.id=I;O.params_tipo.id=H,F.push(O)}}return Object.keys(F).length>0&&(k.params_plantillas=F),k}catch(k){console.log(k)}},g=async S=>{var k;try{let N=null;return i?N=await u.put(`/api/plantillas/${r.id}`,{data:S}):N=await u.post("/api/plantillas",{data:S}),N.data?ge(N.data):null}catch(N){throw console.error("Error en saveTemplateToStrapi:",{error:N.message,status:(k=N.response)==null?void 0:k.status}),N}},x=async S=>{var k;try{const N=Pe.stringify({filters:{plantilla:{id:S}}},{encodeValuesOnly:!0}),_=await u.get(`/api/plantillas/plantilla-tareas-grafico?${N}`);return _.data?ge(_.data.data):null}catch(N){throw console.error("Error en getTemplateWithTasks:",{error:N.message,status:(k=N.response)==null?void 0:k.status}),N}},b=async()=>{try{let S=m();const k=await g(S);if(!k)return{success:!1,message:"No se pudo guardar la plantilla en Strapi",error:"templateData es null"};const N=await x(k.id);return N?{success:!0,message:"Plantilla creada y sincronizada completamente",data:N}:{success:!1,message:"No se pudieron obtener los datos completos de la plantilla",error:"completeData es null"}}catch(S){const{response:{data:k}}=S,N=Or(k.error);return console.error("Error al guardar la plantilla: ",{level:N.failureLevel,message:N.errorMessage,technicalDetails:N.technicalDetails}),{success:!1,message:N.errorMessage,error:N.technicalDetails}}},j=()=>{const{params_plantillas:S}=r;let k={};[1,2,3].forEach(_=>{const P=`step${_}`;k[P]={},f(_).forEach(y=>{var B;const X=S.find(I=>I.params_tipo.key===y.key);if(X){let I=null;if(y.key==="categoria"){const O=(B=y.params_plantillas)==null?void 0:B.find(H=>H.id===X.id);I=(O==null?void 0:O.reference_id)||X.id}else I=X.id;k[P][y.key]=I}})}),a(k)},v=()=>{const{params_plantillas:S}=r;for(const k of S){const{params_tipo:{id:N,key:_},name:P,id:F}=k,y=w.find(X=>X.key===_).params_plantillas.find(X=>X.id===F);h[_](P,N),y&&d({field:_,value:y.abbreviation})}},L=()=>{try{const{fase_plantilla:S,modo_configuracion:k,formato_salida:N,tipo_medio:_}=c;if(S==="Venta")o({fields:["fase_plantilla","tipo_plantilla","modo_configuracion","categoria","tipo_medio"],value:!1}),k==="Default"?(o({fields:["tipo_medio","formato_salida"],value:!1}),o({fields:["medio_especifico"],value:!0}),["Sitios Fijos","Vallas Móviles","Indoors"].includes(_)||o({fields:["formato_salida","medio_especifico"],value:!0}),N==="Digital"?(o({fields:["responsable_impresion"],value:!0}),o({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1})):(["Sitios Fijos","Indoors"].includes(_)&&o({fields:["formato_salida","medio_especifico"],value:!1}),["Vallas Móviles"].includes(_)&&(o({fields:["formato_salida"],value:!1}),o({fields:["medio_especifico"],value:!0})),["Camiones","Brand Riders"].includes(_)&&o({fields:["formato_salida","medio_especifico"],value:!0}),N==="Digital"?(o({fields:["responsable_impresion"],value:!0}),o({fields:["pertenencia_medio","ubicacion_medio"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!1}));else if(o({fields:["modo_configuracion"],value:!1}),o({fields:["tipo_plantilla","categoria"],value:!0}),k=="Default"){const P=["formato_salida","medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"];o({fields:["tipo_medio"],value:!1}),o({fields:P,value:!0})}else["Sitios Fijos","Indoors"].includes(_)?(o({fields:["formato_salida"],value:!0}),o({fields:["medio_especifico"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!0})}catch(S){console.error("Error al aplicar reglas de habilitar y deshabilitar campos",S)}};return p.useEffect(()=>{(i||l)&&r&&(j(),v())},[i,l]),p.useEffect(()=>{(i||l)&&c&&L()},[i,c,l]),{savePlantilla:b,getTemplateWithTasks:x}}const Lr=()=>{const{watch:t,getValues:a}=je.useFormContext(),{templateFormData:s,isDuplicateTemplate:n,currentTemplateForEdit:r}=Se(),[i,o]=p.useState(!1),d=p.useRef(null),l=p.useRef(null),c=p.useRef(!1),u=t();return p.useEffect(()=>{if(!c.current&&n&&r){const h=setTimeout(()=>{d.current=a(),l.current={...s},c.current=!0,o(!1)},500);return()=>clearTimeout(h)}},[n,r,a,s]),p.useEffect(()=>{if(d.current&&l.current&&c.current){const h=a(),w=s,m=JSON.stringify(h)!==JSON.stringify(d.current),g=JSON.stringify(w)!==JSON.stringify(l.current);o(m||g)}},[u,s,a]),{hasChanges:i,resetChanges:()=>{d.current=null,l.current=null,c.current=!1,o(!1)}}},Rr=({onReset:t})=>{const{hasChanges:a,resetChanges:s}=Lr(),{setHasFormChanges:n}=Se();return p.useEffect(()=>{n(a)},[a,n]),p.useEffect(()=>{t(s)},[t,s]),null},zr=({isOpen:t,onClose:a})=>{const{step:s,nextStep:n,prevStep:r,onStepChange:i}=kr({limit:3}),o=Ve(Y=>Y.reset),{templateFields:d,resetTemplateFormData:l}=_t(),{clave:c,resetClave:u,resetDisabledFields:f,isEditTemplate:h,setIsEditTemplate:w,refetch:m,isDuplicateTemplate:g,hasFormChanges:x,setIsDuplicateTemplate:b}=Se(),{openTemplate:j}=Ae(),[v,L]=p.useState(!1),[S,k]=p.useState(""),[N,_]=p.useState(!1),P=p.useRef(null),F=Y=>{P.current=Y},y=Mr(d),X=s===1,B=s===3,I=X?"Cancelar":"Atrás";p.useEffect(()=>{t&&o()},[t,o]);const O=je.useForm({mode:"onChange",defaultValues:y}),{trigger:H,reset:U,clearErrors:K,getValues:te}=O,{savePlantilla:ae}=qr(te,U),Z=async()=>{if(await H()){if(s===3){if(!x&&g){k("Ya existe un proceso con éstos parámetros. Modifica al menos uno para poder duplicarlo."),_(!0);return}try{L(!0);const W=await ae();if(W.success){const q=W.data;if(R(),T(),_(!1),!h)try{await j({template:q,statusTemplate:ve.NEW})}catch(G){console.warn("La plantilla se creó exitosamente pero hubo un problema al abrirla:",G)}m()}else{const{error:q}=W;k(q),_(!0)}}catch(W){console.error("Error inesperado al guardar la plantilla:",W);return}finally{L(!1)}}n()}},se=()=>{k(""),_(!1)},T=()=>{K(),U(),l(),f(),u(),se(),h&&w(!1),g&&b(!1),P.current&&P.current()},R=()=>{T(),a()};return v?e.jsx(Ye,{isLoading:v}):e.jsxs(je.FormProvider,{...O,children:[e.jsx(Rr,{onReset:F}),e.jsx(M.Modal,{isOpen:t,closeAtCancel:!1,onSuccess:Z,cancelButtonText:I,successButtonText:B?h?"Guardar":"Crear":"Continuar",onCancel:X?R:r,onClose:R,size:"sm",icon:"PlantillaOutlined",title:h?"Editar plantilla":"Nueva plantilla",children:e.jsxs(M.Modal.Body,{children:[e.jsx("div",{className:"tw-flex tw-w-full tw-overflow-x-auto tw-pb-16 tw-pt-12",children:e.jsx("div",{className:"tw-flex tw-w-full",style:{justifyContent:"center",minWidth:"fit-content"},children:e.jsx(M.Stepper,{currentStep:s-1,onStepChange:Y=>i(Y+1),steps:[{title:"Paso 1",description:"INFORMACIÓN"},{title:"Paso 2",description:"DETALLES"},{title:"Paso 3",description:"PRODUCCIÓN"}]})})}),e.jsx("div",{className:"tw-flex tw-w-full tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-gap-0",children:[e.jsx("div",{className:"tw-bg-[#F0F0F0] tw-rounded-[100px] tw-p-2",style:{width:"fit-content",minWidth:"fit-content"},children:e.jsx("div",{className:"tw-font-sans tw-font-bold tw-py-1 tw-p-[90px]",children:c})}),e.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"})]})}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-y-4 tw-p-16",children:[N&&e.jsx(M.Alert,{open:!0,variant:"outlined",color:"red",message:S,className:"tw-mb-6",onClose:se}),e.jsx(Pr,{step:s})]})]})})]})},$r=({isOpen:t,onClose:a,replaceTemplate:s})=>e.jsx(e.Fragment,{children:e.jsx(M.Modal,{isOpen:t,closeAtCancel:!1,cancelButtonText:"Cancelar",successButtonText:"Abrir",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ExclamationTriangleOutlined",title:"Límite de plantillas",children:e.jsx(M.Modal.Body,{children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full ui-p-4",children:[e.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:e.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full tw-p-[35px]",style:{backgroundColor:"#EBEEF9"},children:e.jsx(M.Icon,{name:"ExclamationTriangleOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-text-center tw-mt-6",children:e.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-font-['Open_Sans'] tw-text-[#3658C1] tw-leading-tight",children:"¿Quieres continuar?"})}),e.jsx("div",{className:"tw-text-center tw-mt-2",children:e.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-font-['Open_Sans'] 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."})})]})})})}),Br=qe.create(t=>({cachedTemplate:null,canCreateTemplate:!1,setCachedTemplate:a=>t({cachedTemplate:a}),clearCachedTemplate:()=>t({cachedTemplate:null}),setCanCreateTemplate:a=>{const s=!(a<5);t({canCreateTemplate:s})}})),Hr=({isOpen:t,onClose:a,discardChanges:s,saveAndExit:n})=>e.jsx("div",{children:e.jsx(M.Modal,{isOpen:t,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Guardar y salir",onCancel:a,onClose:a,onSuccess:n,size:"sm",icon:"ExclamationTriangleOutlined",title:"Cambios sin guardar",children:e.jsx(M.Modal.Body,{children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full ui-p-4",children:[e.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:e.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full tw-p-[35px]",style:{backgroundColor:"#EBEEF9"},children:e.jsx(M.Icon,{name:"SaveOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-flex tw-flex-col tw-mx-6",children:e.jsx(M.Alert,{open:!0,variant:"outlined",color:"red",showCloseButton:!1,message:"Tienes cambios sin guardar en ésta plantilla",title:"No has guardado",className:"tw-mt-8"})}),e.jsx("div",{className:"tw-text-center tw-mt-5",children:e.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-font-['Open_Sans'] tw-text-[#3658C1]",children:"¿Qué deseas hacer antes de salir?"})}),e.jsx("div",{className:"tw-text-center tw-mt-1",children:e.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-font-['Open_Sans'] tw-text-[#6B6B6B]",children:"Si sales ahora sin guardar se perderán los cambios actuales."})}),e.jsx("div",{className:"tw-flex tw-justify-center tw-mt-4",children:e.jsx(M.Button,{variant:"outlined",color:"white",onClick:()=>{s(),a()},children:"Descartar cambios"})})]})})})}),Ra=({isOpen:t,onClose:a,publishTemplate:s})=>e.jsx(M.Modal,{isOpen:t,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Confirmar",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ArrowUpOutlined",title:"Publicar",children:e.jsx(M.Modal.Body,{children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-overflow-auto tw-w-full tw-p-8",children:[e.jsx("div",{className:"tw-flex tw-justify-center tw-w-full",style:{minWidth:"fit-content"},children:e.jsx("div",{className:"tw-flex tw-justify-center tw-items-center tw-gap-[10px] tw-rounded-full tw-p-[35px]",style:{backgroundColor:"#EBEEF9"},children:e.jsx(M.Icon,{name:"ArrowUpOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-text-center",children:e.jsx("h2",{className:"tw-text-[24px] tw-font-bold tw-font-['Open_Sans'] tw-text-[#3658C1] tw-leading-tight",children:"¿Estás seguro de que deseas publicar este proceso?"})}),e.jsx("div",{className:"tw-text-center",children:e.jsx("div",{className:"tw-text-[12px] tw-font-normal tw-font-['Open_Sans'] 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."})})]})})}),Ur=()=>{const t="grid",a="create-edit",s=p.useRef(null),{isOpenModalLimit:n,setIsOpenModalLimit:r,setOpenModalCreateTemplate:i,openModalCreateTemplate:o,setOpenModalUnsavedChanges:d,openModalUnsavedChanges:l,openModalPublishTemplate:c,setOpenModalPublishTemplate:u}=Se(),{removeTemplateStates:f}=Xe(),{mode:h,setMode:w,setViewMode:m,getViewMode:g}=be(),{setCanCreateTemplate:x,canCreateTemplate:b}=Br(),j=h===t,{screens:v,get:L,delete:S,activeTemplate:k,activateTemplate:N,reorderingTemplates:_,replaceTemplate:P,saveTemplateChanges:F,publishTemplate:y,loadingPublishTemplate:X,loadingSaveChanges:B}=Ae(),I=178,[O,H]=p.useState([]),[U,K]=p.useState([]),[te,ae]=p.useState(null),[Z,se]=p.useState(!1),T=k!=null&&k.id?g(k.id):"readonly";p.useEffect(()=>{const $=()=>{if(!s.current)return;const ne=s.current.offsetWidth;let oe=0;const ie=[],ce=[],ue=10,le=s.current.querySelector("button:not([data-screen])"),pe=s.current.querySelector(".tw-mx-1");let xe=0;le&&(xe+=le.getBoundingClientRect().width),pe&&v.length>0&&(xe+=pe.getBoundingClientRect().width,xe+=ue);const fe=(he,Oe)=>{const Qe=Oe?54:0,at=(he==null?void 0:he.length)*8;return Math.max(80,at+40+Qe)},Me=ne-I-xe;v.forEach((he,Oe)=>{const Ne=!!(he.isNew||he.badgeLabel),Ce=fe(he.clave,Ne),Ie=Oe>0?ue:0,Qe=Ce+Ie;oe+Qe<=Me?(ie.push(he),oe+=Qe):ce.push(he)}),H(ie),K(ce)},J=()=>{const ne=v.length;x(ne)};return v.length>0&&($(),J(),window.addEventListener("resize",$)),()=>{window.removeEventListener("resize",$)}},[v,h]);const R=$=>$.estatus===ve.DIRTY||$.estatus===ve.NEW,Y=async $=>{R($)?(ae($.id),d(!0)):await S($.id)},W=()=>u(!0),q=async()=>{await S(te),await f(te)},G=async()=>{await F(!1)},D=async()=>{await F()},E=()=>{var J,ne;const $=(ne=(J=k==null?void 0:k.graph_layout)==null?void 0:J.snapshot)==null?void 0:ne.nodes.length;se(()=>$-1>=1)};p.useEffect(()=>{E()},[k,T]);const z=()=>!((k==null?void 0:k.estatus)==ve.IDLE&&Z&&k.estatusFromStrapi!==Ee.PUBLISHED),A=()=>{var J;const{nodes:$}=(J=k==null?void 0:k.graph_layout)==null?void 0:J.snapshot;return $==null?void 0:$.some(ne=>ne.type!=="start"&&(ne==null?void 0:ne.data.tarea_padre)===null&&(ne==null?void 0:ne.data.id_t_requerida)===null)},C=()=>(k==null?void 0:k.estatus)===ve.IDLE||A()?!0:!Z,V=async()=>{await y(k.id)};return B||X?e.jsx(Ye,{isLoading:B||X}):e.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-justify-between tw-items-center tw-flex-wrap",children:[e.jsx(zr,{isOpen:o,onClose:()=>i(!1)}),e.jsx($r,{isOpen:n,onClose:()=>r(!1),replaceTemplate:P}),e.jsx(Hr,{isOpen:l,onClose:()=>d(!1),discardChanges:q,saveAndExit:D}),e.jsx(Ra,{isOpen:c,onClose:()=>u(!1),publishTemplate:V}),e.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-items-center tw-justify-between tw-flex-1 tw-flex-wrap tw-py-4",ref:s,children:[e.jsxs("div",{className:"tw-flex tw-gap-2.5 tw-items-center tw-justify-start tw-flex-1 tw-flex-wrap",children:[e.jsx(M.Button,{variant:j?"button":"outlined",color:j?"blue":"white",onClick:()=>w(t),children:"Listado de Plantillas"}),v.length>0&&e.jsx(M.Separator,{vertical:!0,className:"tw-mx-1"}),v.filter($=>O.some(J=>J.clave===$.clave)).map($=>{const J=(k==null?void 0:k.clave)===$.clave&&h===a;return e.jsxs(M.Button,{"data-screen":$.clave,variant:J?"button":"outlined",onClick:async()=>{await N($),w(a,$.id)},color:J?"blue":"white",slotLeft:"TaskOutlined",badgeColor:R($)?"orange":void 0,onClickRightSlot:()=>Y($),slotRight:"X2Outlined",children:[$.clave," ",$.status]},$.id)})]}),U.length>0&&e.jsx(M.Popup,{absolute:!0,slotRight:"AngleDownOutlined",label:`${U.length}+`,size:"lg",textColor:"blue",children:e.jsx("div",{className:"ui-py-2 ui-min-w-[250px]",children:e.jsx(M.List,{icon:"TaskOutlined",items:U.map($=>({id:$.id,label:$.clave})),onClick:async $=>{const J=await L($.id);await _(J.id),await N(J),w("create-edit",J.id)}})})})]}),h===a?e.jsx("div",{className:"tw-flex tw-gap-4 tw-items-center tw-justify-end tw-flex-wrap tw-py-4",children:k.estatusFromStrapi!==Ee.PUBLISHED&&e.jsxs(e.Fragment,{children:[e.jsx(M.Button,{color:"green",variant:"outlined",slotLeft:"ArrowUpOutlined",disabled:z(),onClick:W,children:"Publicar"}),T=="readonly"&&e.jsx(M.Button,{slotLeft:"EditOutlined",onClick:()=>(k==null?void 0:k.id)&&m(k.id,"edit"),children:"Editar"}),T==="edit"&&e.jsx(M.Button,{slotLeft:"SaveOutlined",onClick:G,disabled:C(),children:"Guardar"})]})}):e.jsx(M.Button,{disabled:b,tooltip:b?"Límite de 5 plantillas con cambios sin guardar. Guarda y cierra alguna para crear una nueva.":"",slotLeft:"Plus1Outlined",onClick:()=>{i(!0)},children:"Nueva plantilla"})]})},Wr=({isOpen:t,onClose:a,deleteTemplate:s})=>e.jsx(M.AlertDialog,{title:"Eliminar Borrador",iconContent:"BanOutlined",heading:"¿Estás seguro?",subheading:"Si eliminas este borrador, también se borrarán todas sus tareas y conexiones con otros borradores.",icon:"TrashOutlined",label:"Escribe 'Eliminar' para continuar",confirmationText:"Eliminar",isOpen:t,onClose:a,onConfirm:s,placeholder:""}),Gr=()=>{const{viewMode:t,setRefetch:a,openModalPublishTemplate:s,setOpenModalPublishTemplate:n,currentTemplateId:r,setOpenModalDeleteTemplate:i,openModalDeleteTemplate:o}=Se(),{publishTemplate:d,deleteTemplate:l}=Ae(),{debouncedSearch:c,filters:u}=qn("templates-container"),f=t==="list",[h,w]=p.useState(1),m=5,{data:g,isLoading:x,isFetching:b,refetch:j}=qa({page:h,pageSize:m,search:c,filters:u});p.useEffect(()=>{a(j)},[]),p.useEffect(()=>{w(1)},[u,c]);const{users:v}=Ke(),{getImageOBP:L}=we(),S=P=>{if(!(P!=null&&P.email))return"";const F=v==null?void 0:v[P==null?void 0:P.email];return F!=null&&F.image?L(F==null?void 0:F.image):""},k=p.useMemo(()=>{try{return!g||!v?[]:g.data.map(P=>{const F=S((P==null?void 0:P.updated_by)||(P==null?void 0:P.created_by));return{...P,updated_by:{...P.updated_by,image:F}}})}catch(P){return console.error("Error al mapear las plantillas:",P),[]}},[g,v]),N=async()=>{await d(r),await j()},_=async()=>{await l(r),await j()};return x||b?e.jsx(Ye,{isLoading:x||b}):e.jsxs("div",{className:"tw-flex tw-flex-col tw-justify-between tw-gap-y-4 tw-h-full",children:[e.jsx(Ra,{isOpen:s,onClose:()=>n(!1),publishTemplate:N}),e.jsx(Wr,{isOpen:o,onClose:()=>i(!1),deleteTemplate:_}),e.jsx("div",{className:`tw-grid tw-gap-4 ${f?"tw-grid-cols-1":"tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3"}`,children:k.map(P=>e.jsx(Pa,{fullWidth:f,template:P},P.id))}),e.jsx("div",{children:e.jsx(M.Pagination,{pageSize:m,pageCount:g==null?void 0:g.meta.pagination.pageCount,currentPage:h,onPageChange:P=>w(P)})})]})},za=()=>{var o,d,l,c;const t="grid",a="create-edit",{mode:s}=be(),n=s===t,r=s===a,i=Fe(u=>u.activeTemplate);return e.jsxs("div",{className:"tw-h-full tw-flex tw-flex-col tw-gap-y-6",children:[e.jsx(Ur,{}),n&&e.jsx(Gr,{}),r&&e.jsx(Sr,{initialNodes:((d=(o=i==null?void 0:i.graph_layout)==null?void 0:o.snapshot)==null?void 0:d.nodes)||[],initialEdges:((c=(l=i==null?void 0:i.graph_layout)==null?void 0:l.snapshot)==null?void 0:c.edges)||[]})]})},Kr=()=>({header:e.jsx(Gn,{}),body:e.jsx(za,{})}),Qr=({path:t,tab:a,setPath:s,project:n,setProject:r})=>{const i={"kanban-general":{kanban:e.jsx(As,{})},"teams-container":{teams:e.jsx(Sn,{})},"lista-campanias":{lista:e.jsx(as,{setPath:s,setProject:r}),gantt:e.jsx("div",{children:"gantt-campanias"})},"kanban-campania":{kanban:e.jsx(Es,{}),lista:e.jsx(zs,{}),gantt:e.jsx("div",{children:"kanban-campania-gantt"})},"templates-container":{templates:e.jsx(za,{})}};return t==="kanban-campania"?e.jsx(Ja,{project:n==null?void 0:n.id,children:i[t][a]}):i[t][a]},Vr=({label:t,active:a,onClick:s,disabled:n})=>n?e.jsx(ee.Tooltip,{dispatch:e.jsx("button",{className:"tw-cursor-help tw-text-xl tw-font-semibold tw-text-texts-placeholder",children:t}),children:e.jsx("div",{className:"tw-border-border-card tw-flex tw-items-center tw-justify-center tw-rounded-lg tw-border tw-bg-bg-card tw-px-3 tw-py-2",children:e.jsx("p",{className:"tw-text-lg tw-font-semibold tw-text-texts-placeholder",children:"Espéralo muy pronto..."})})}):e.jsx("button",{disabled:n,onClick:s,className:`${a?"tw-border-b-2 tw-border-texts-enfasis tw-text-blue-600 tw-text-texts-enfasis":""} tw-text-xl tw-font-semibold ${n?"tw-cursor-not-allowed tw-text-lg tw-text-texts-placeholder":"tw-text-texts-subtext"}`,children:t}),Xr=({tabs:t,renderItem:a,initialTab:s})=>{const[n,r]=p.useState(s??t[0].toLowerCase());p.useEffect(()=>{s&&r(s)},[s]);const i=o=>{r(o),a(o)};return e.jsx("div",{className:"tw-flex",children:t.map((o,d)=>e.jsx("div",{className:`${d===0?"tw-border-l-2":""} tw-border-r-2 tw-border-gray-200 tw-px-m`,children:e.jsx(Vr,{onClick:()=>i(o.toLowerCase()),label:o,active:o.toLowerCase()===n,disabled:["gantt"].includes(o.toLowerCase())},d)}))})};function Yr(){const{toast:t}=Ge();return t.message?e.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 ${t.type==="success"?"tw-bg-success-medium":"tw-bg-danger-medium"} tw-flex tw-items-center`,children:e.jsxs("div",{className:"relative tw-flex tw-h-full tw-w-full tw-items-center",children:[e.jsx("div",{className:`tw-h-full tw-w-[5px] ${t.type==="success"?"tw-bg-success-dark":"tw-bg-danger-regular"} tw-absolute tw-left-0 tw-rounded-full`}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-2 tw-pl-4",children:[e.jsx(ee.Icons,{icon:t.type==="success"?"circle_checked":"circle_x",className:`tw-text-${t.type==="success"?"success-dark":"danger-dark"}`,color:t.type==="success"?"#368156":"#DC2626"}),e.jsx("p",{className:`${t.type==="success"?"tw-text-success-dark":"tw-text-danger-dark"} tw-text-xl tw-font-semibold`,children:t.message})]})]})}):null}const Jr=({path:t})=>{const a=()=>{const{selectPath:s,updateFilters:n,applyFilters:r,filters:i,fields:o}=ke(),[d,l]=p.useState("kanban"),[c,u]=p.useState(t),[f,h]=p.useState({id:1704,project:"Kanban de Campania"}),[w,m]=p.useState([{path:"lista-campanias",search:(i==null?void 0:i.search)??""},{path:"kanban-campania",search:(i==null?void 0:i.taskName)??""},{path:"kanban-general",search:(i==null?void 0:i.taskName)??""},{path:"teams-container",search:(i==null?void 0:i.taskName)??""},{path:"templates-container",search:(i==null?void 0:i.taskName)??""}]),[g,x]=p.useState(),b=p.useRef(null);p.useEffect(()=>{var _;l(c==="lista-campanias"?"lista":c==="kanban-campania"?"kanban":c==="teams-container"?"teams":c==="templates-container"?"templates":"kanban"),s(c),x(((_=w.find(P=>P.path===c))==null?void 0:_.search)??"")},[t,c]),p.useEffect(()=>{var _;((_=k())==null?void 0:_.trim())===""&&n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:null}),r()},[w]);const j=_=>({"kanban-general":"Kanban General","lista-campanias":"Campanias","teams-container":"Equipos","kanban-campania":`Kanban de ${f.project}`,"templates-container":"Plantillas"})[_],v=_=>{u(_)},L=["lista-campanias","kanban-campania"],S={"lista-campanias":["lista","gantt"],"kanban-campania":["kanban","lista","gantt"],"teams-container":["teams"],"templates-container":["templates"]},k=()=>{var _;return((_=w.find(P=>P.path===c))==null?void 0:_.search)??""},N=_=>{m(P=>P.map(F=>F.path===c?{...F,search:_}:F))};return p.useEffect(()=>{const _=setTimeout(()=>{n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:g==null?void 0:g.trim()}),N(g)},500);return()=>{clearTimeout(_)}},[g]),e.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:[e.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-px-l tw-pb-m",children:[e.jsxs("div",{className:"tw-flex tw-gap-xl",children:[c==="kanban-campania"&&e.jsx("button",{onClick:()=>v("lista-campanias"),className:"tw-text-primary hover:tw-text-primary/80 tw-flex tw-items-center tw-transition-colors",children:e.jsx(ee.Icons,{icon:"arrow_left",size:"xs",strokeWidth:5,color:"#4464C3",title:"Atrás"})}),e.jsx("h2",{className:"tw-font-sans tw-text-[1.6rem] tw-font-semibold tw-text-texts ",children:j(c)}),L.includes(c)&&e.jsx(Xr,{tabs:S[c],renderItem:_=>{l(_)},initialTab:d})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-s !tw-text-[16px]",children:[e.jsx(M.Input,{leftSlot:"SearchOutlined",onChange:_=>{x(_.target.value)},placeholder:"Buscar por tarea",value:g}),o.length>0&&e.jsx(ss,{filterChildren:b,children:e.jsx("div",{ref:b,className:"tw-h-fit tw-w-max tw-max-w-[400px] tw-rounded-lg tw-bg-bg-card tw-p-l tw-shadow-lg",children:e.jsx(is,{})})})]})]}),e.jsx("div",{className:"tw-h-full tw-max-h-[100%] tw-overflow-y-auto tw-scrollbar-none",children:e.jsx(Qr,{path:c,tab:d,setPath:v,project:f,setProject:h})})]})};return e.jsx(Ka,{children:e.jsxs(Za,{children:[e.jsx(a,{}),e.jsx(Yr,{})]})})},Zr=({path:t})=>["templates-container"].includes(t)?e.jsx(Wn,{startPath:t}):e.jsx(Jr,{path:t}),eo=()=>e.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:e.jsx("div",{className:"tw-flex tw-h-full tw-items-center tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-text-2xl tw-font-bold",children:[e.jsx("div",{className:"tw-h-10 tw-w-10 tw-animate-pulse tw-rounded-full tw-bg-primary-regular"}),e.jsx("p",{className:"tw-text-l tw-text-texts-enfasis",children:"un momento..."}),e.jsx("p",{className:"tw-text-sm tw-text-texts-placeholder",children:"estamos buscando tu usuario"})]})})}),to=()=>e.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:e.jsx("div",{className:"tw-flex tw-h-full tw-items-center tw-justify-center",children:e.jsxs("div",{className:"tw-flex tw-flex-col tw-items-center tw-text-2xl tw-font-bold",children:[e.jsx("div",{className:"tw-h-10 tw-w-10 tw-animate-pulse tw-rounded-full tw-bg-primary-regular"}),e.jsx("p",{className:"tw-text-l tw-text-texts-enfasis",children:"No encontramos tu acceso"}),e.jsx("p",{className:"tw-text-sm tw-text-texts-placeholder",children:"por favor, contacta al administrador"})]})})}),ao=({path:t,user:a,url:s,mode:n})=>{const r=new de.QueryClient;if(!a)return e.jsx(eo,{});if(!a.accessToken)return e.jsx(to,{});let i={user:a,url:s,mode:n};return e.jsxs(Qn,{children:[e.jsx(M.Toaster,{}),e.jsx(Va,{...i,children:e.jsx(Qa,{...i,children:e.jsx("div",{className:"tw-relative tw-h-full tw-min-h-[100%] tw-w-full",children:e.jsxs(de.QueryClientProvider,{client:r,children:[e.jsx(Zr,{path:t})," "]})})})})]})};exports.AppTasks=ao;
package/dist/tareas.es.js CHANGED
@@ -8864,7 +8864,6 @@ const xn = () => {
8864
8864
  ] }),
8865
8865
  /* @__PURE__ */ a(ft, {}),
8866
8866
  /* @__PURE__ */ p("div", { className: "tw-flex tw-flex-col tw-gap-6 tw-p-12", children: [
8867
- JSON.stringify(w.data),
8868
8867
  w.data.map((T) => /* @__PURE__ */ a(
8869
8868
  yn,
8870
8869
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@imj_media/tareas",
3
3
  "private": false,
4
- "version": "1.5.21",
4
+ "version": "1.5.22",
5
5
  "scripts": {
6
6
  "build": "tsc && vite build && npm run build:css",
7
7
  "build:css": "tailwindcss -m -i ./src/tailwind.css -o ./dist/tareas.css",