@imj_media/tareas 1.5.29 → 1.5.30
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 +1 -1
- package/dist/tareas.es.js +2 -3
- package/package.json +2 -2
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 pt.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}=Ke(),{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(yt,{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(Pt,{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(Pt,{title:"Miembros del equipo",icon:"users"}),e.jsx(ga,{members:f.miembros,setData:h,isUpdate:w})]}),e.jsx(Gs,{onCancel:()=>a(!1),onSave:m,isLoading:d})]})})}const Pe=384,xn=80,gn=180,ut=20,hn=2,ja=4,wt=.8;function bn({data:t}){const{getImageOBP:a}=me();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(Ee,{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(ne.Handle,{type:"target",position:ne.Position.Top,className:"tw-bg-transparent",isConnectable:!1}),e.jsx(ne.Handle,{type:"source",position:ne.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:Pe,height:xn,children:n,x:0,y:a*gn,totalWidth:0,depth:a}}):[],_a=t=>{if(t.children.length===0)return t.totalWidth=Pe,Pe;const a=t.children.reduce((r,i)=>r+_a(i),0),s=t.children.length>ja?wt:1,n=(t.children.length-1)*ut*s;return t.totalWidth=Math.max(Pe,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-Pe)/(n.children.length-1)*wt;n.children.forEach((h,w)=>{h.x=s+w*f})}else if(r){const f=(n.totalWidth-Pe)/(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+Pe,c=i?Pe*.1:0;n.x=(d+l-Pe)/2+c}else n.x=s;const o=i?wt:1;s=Math.max(s+Pe+ut*o,n.x+Pe+ut*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}=Ge();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(ne.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(yt,{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(ne.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,_)=>x+_)})(),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(Z.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(Z.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(Z.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(Z.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}=De(),[r,i]=p.useState(""),{user:o}=Te();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(Z.Icons,{icon:"plus_outline",size:"xs",strokeWidth:4}),"Nuevo equipo"]})}),e.jsx(En,{queryHook:dn,Loading:e.jsx(Mt,{}),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(Mt,{}):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 Mt({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}=me(),{users:s,isLoading:n}=Ge();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(Ee,{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(Ee,{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}=Te(),[o,d]=p.useState(!1),{handleApiError:l}=ba(),{showSuccess:c,showError:u}=Ke(),{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(Z.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(Z.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(Z.Icons,{icon:"pencil",size:"xs",strokeWidth:4})}),e.jsx("button",{onClick:()=>d(!0),children:e.jsx(Z.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(P.Icon,{background:!0,name:"PlantillaOutlined",color:"blue",size:"lg"}),e.jsx("h1",{className:"tw-text-[24px] tw-font-bold tw-leading-none",children:t})]}),At={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:""},Ot={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},Ie=Le.create(t=>({path:"",viewMode:"grid",isOpenModalLimit:!1,template:null,clave:"XX-XXX-XX-XXX-XX-X-X",templateFormData:At,disabledFields:Ot,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:At}),setDisableField:({fields:a,value:s})=>{for(const n of a)t(r=>({disabledFields:{...r.disabledFields,[n]:s}}))},resetDisabledFields:()=>t({disabledFields:Ot}),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}},vt=Le.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}}))}})),Ln=t=>{const{getSearch:a,getDebouncedSearch:s,setSearch:n,getFilters:r,setFilters:i,resetPathData:o}=vt();return{search:a(t),debouncedSearch:s(t),filters:r(t),setSearch:d=>n(d,t),setFilters:d=>i(d,t),resetData:()=>o(t)}};function qn(t){const{users:a}=ta(),{tasks_api:s,getImageOBP:n}=me(),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=Ae.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 be(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 del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[{value:"draft",label:"Borrador"},{value:"published",label:"Publicada"}],keyName:"estatus"},publication_date:{label:"Fecha de publicación",placeholder:"Ingresa una fecha...",type:"date",keyName:"publication_date"},propietario:{label:"Encargado del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"propietario"},created_by:{label:"Creador del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"created_by"},updated_by:{label:"Editor del flujo",type:"dropdown",placeholder:"Selecciona uno...",options:[],keyName:"updated_by"},params_plantillas:{label:"Parámetro del flujo",type:"group",placeholder:"Selecciona uno o varios...",options:[],keyName:"params_plantillas"}},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}=qn(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}=vt(),{refetch:a}=Ie();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:lt(r.publication_date).format("YYYY-MM-DD")}),t(r,"templates-container"),a&&a()}}}const ve=Le.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"?Gr():{header:null,body:null},Wn=({startPath:t,children:a})=>{const{path:s,setPath:n}=Ie(),{setCurrentPath:r,getSearch:i,setSearch:o}=vt(),{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}=Ie(),{mode:w}=ve(),m=i();return e.jsxs(P.Card,{fullWidth:!0,className:"tw-h-full",children:[e.jsxs(P.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(P.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(P.Filters,{filters:d,onApply:l}),e.jsx(P.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(P.Card.Separator,{}),e.jsx(P.Card.Body,{fullHeight:!0,className:"tw-flex tw-flex-1 tw-flex-col tw-gap-y-4",children:u})]})},Kn=()=>e.jsx(Pn,{title:"Flujos de trabajo"}),Me=Le.create(t=>({activeTemplate:null,setActiveTemplate:a=>t({activeTemplate:a}),clearActiveTemplate:()=>t({activeTemplate:null})})),Ea=()=>{const{tasks_api:t}=me();return{getTemplateWithTasks:async s=>{var n;try{const r=Ae.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}}}},ye={DIRTY:"dirty",IDLE:"idle",NEW:"new"},ke={DRAFT:"draft",PUBLISHED:"published",DELETED:"deleted"},ze="templates",$e="templates_states";function Gn(t,a){return Le.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(_=>{j.createIndex(_.name,_.keyPath,_.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},_=w.put(j);_.onsuccess=async()=>{await n().getAll(),m()},_.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),_=g.getAll(j);_.onsuccess=()=>{x(_.result)},_.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 Lt(t,a,s=!0){const n=p.useMemo(()=>{const _=`${t.name}-${a}`;if(!nt.has(_)){const z=Gn(t,a);nt.set(_,z)}return nt.get(_)},[t.name,a]);p.useEffect(()=>{s&&!n.getState().isConnected&&n.getState().connect()},[s,n]);const r=n(_=>_.data),i=n(_=>_.isLoading),o=n(_=>_.error),d=n(_=>_.isConnected),l=p.useCallback(()=>n.getState().connect(),[n]),c=p.useCallback(()=>n.getState().disconnect(),[n]),u=p.useCallback(_=>n.getState().add(_),[n]),f=p.useCallback(_=>n.getState().addMany(_),[n]),h=p.useCallback(_=>n.getState().get(_),[n]),w=p.useCallback(()=>n.getState().getAll(),[n]),m=p.useCallback((_,z)=>n.getState().update(_,z),[n]),g=p.useCallback(_=>n.getState().delete(_),[n]),x=p.useCallback(()=>n.getState().clear(),[n]),b=p.useCallback((_,z)=>n.getState().query(_,z),[n]),j=p.useCallback((_,z,D)=>n.getState().queryRange(_,z,D),[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=Lt(d,ze,!0),c=Lt(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 _t(){const{getStore:t}=ka();return t(ze)}function Ia(){const{add:t}=_t(),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}=_t(),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(_=>_.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(_=>_.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 _=g.id<0;_?(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",_?"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 Oe(){const{activeTemplate:t,setActiveTemplate:a}=Me(),{mode:s,setMode:n,setViewMode:r,clearViewMode:i}=ve(),{template:o,setIsOpenModalLimit:d,setOpenModalUnsavedChanges:l,setOpenModalPublishTemplate:c,setOpenModalDeleteTemplate:u}=Ie(),{hydrateTasks:f}=Ia(),{addTaskToState:h,removeTemplateStates:w}=Xe(),m=de.useQueryClient(),{data:g,add:x,update:b,get:j,getAll:_,delete:z,isLoading:D,error:k}=_t(),{get:T}=Da(),{getTemplateWithTasks:v}=Ea(),{tasks_api:C}=me(),[U,y]=p.useState(!1),[X,W]=p.useState(!1),[I,A]=p.useState(!1),H=p.useMemo(()=>g.sort((S,B)=>S.order-B.order),[g]);p.useEffect(()=>{H.length===0&&s!=="grid"&&n("grid")},[H,s,n]);const R=async(F,S=ye.IDLE)=>{var B;try{const M=await v(F.id),N=await f(M),K={id:crypto.randomUUID(),data:M,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},$=N||[K],Y={...M,graph_layout:{...M==null?void 0:M.graph_layout,snapshot:{...(B=M==null?void 0:M.graph_layout)==null?void 0:B.snapshot,nodes:$}},estatus:S,estatusFromStrapi:M.estatus};await x(Y)}catch(M){console.warn("No se pudieron obtener los datos completos de la plantilla, creando versión básica:",M);const N=F,K={id:crypto.randomUUID(),data:N,type:"start",dragging:!1,measured:{width:171,height:48},position:{x:91,y:-24.5},selected:!1,deletable:!1},$={id:N.id,snapshot:{nodes:[K],edges:[],viewport:{x:0,y:0,zoom:1}},history:null,zoom:1,position:{x:0,y:0}},Y={...N,graph_layout:N.graph_layout||$,estatus:S,tarea_plantillas:N.tarea_plantillas||[]};await x(Y)}},G=async({template:F,checkTemplateInIndexedDB:S=!1,statusTemplate:B=ye.IDLE})=>{const M=H;if(!M.find(K=>K.id===F.id)){if(M.length===5){d(!0);return}if(S&&await j(F.id))return;await R({...F,order:M.length+1},B)}await J(F.id),await ie(F),n("create-edit",F==null?void 0:F.id)},ie=async F=>{const S=await j(F.id);a(S)},J=async F=>{try{let S=await _();S.sort((M,N)=>(M.order||0)-(N.order||0));const B=S.findIndex(M=>M.id===F);if(B!==-1){const[M]=S.splice(B,1);S.unshift(M),S.forEach((K,$)=>{K.order=$+1});const N=S.map(K=>b(K.id,K));await Promise.all(N)}else return}catch{}},te=async F=>{try{await z(F),i(F);const S=await _();S.forEach((M,N)=>{M.order=N+1});const B=S.map(M=>b(M.id,M));await Promise.all(B)}catch{}};return{screens:H,isLoading:D,error:k,add:x,data:g,addScreen:R,openTemplate:G,update:b,delete:te,get:j,activeTemplate:t,activateTemplate:ie,reorderingTemplates:J,replaceTemplate:async()=>{try{const F=[...H],S={...F[F.length-1]};await z(S.id);const B={...o,order:S.order};await R(B);const N=(await _()).sort(($,Y)=>$.order-Y.order);if(N.some(($,Y)=>($.order||0)!==Y+1)){const $=N.map((Y,se)=>({...Y,order:se+1}));for(const Y of $)try{await b(Y.id,Y)}catch{}}}catch{}finally{d(!1)}},addTaskUpdatingTemplate:async(F,S,B="hija")=>{var $,Y,se,oe;const M=await j(S);if(!M)return null;const N={id:F.id,uuid:crypto.randomUUID(),reference_graph:F.reference_graph,texto_corto:F.title,texto_largo:F.description||"",prioridad:F.priority||null,nivel_dificultad:F.difficulty||1,duracion:F.duration||null,start:!1,type:"task",equipo:{id:Number(F.team)||null},responsable:{id:Number(F.responsible)||null},plantilla:{id:M.id,clave:M.clave,categoria:M.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:[],id_t_requerida:B==="dependiente"?(Y=($=F.parent)==null?void 0:$.data)==null?void 0:Y.id:null,ids_t_dependientes:[],tarea_padre:B==="hija"?(oe=(se=F.parent)==null?void 0:se.data)==null?void 0:oe.id:null,tareas:[]},K={...M,estatus:ye.DIRTY};return await b(S,K),t&&t.id===S&&a(K),await h({task:N}),N},addTemplateUpdatingTemplate:async(F,S,B,M="hija")=>{let N=null;if(t&&t.id===S?N=t:N=await j(S),!N)return null;const K=(Y,se,oe,le)=>{for(let pe=0;pe<Y.length;pe++){const fe=Y[pe];if(fe.id===se||fe.uuid===se)return le==="dependiente"?(fe.plantilla_dependents||(fe.plantilla_dependents=[]),fe.plantilla_dependents.push(oe)):le==="hija"&&(fe.plantilla_dependents||(fe.plantilla_dependents=[]),fe.plantilla_dependents.push(oe)),!0;if(fe.tareas&&fe.tareas.length>0){const re=K(fe.tareas,se,oe,le);if(re)return re}}return!1};if(K(N.tarea_plantillas,B,F,M)){const Y={...N,estatus:ye.DIRTY,updatedAt:new Date().toISOString()};return await b(S,Y),t&&t.id===S&&a(Y),!0}else return!1},updateGraphLayout:async(F,S)=>{var B;if(!F){console.warn("⚠️ updateGraphLayout - Template ID no válido");return}try{const M=await j(F);if(!M){console.warn("⚠️ updateGraphLayout - Template no encontrado");return}const N=(S.nodes||[]).filter(le=>{var pe;return!((pe=le.data)!=null&&pe.isInternal)&&!le.parentId}).map(le=>{const{style:pe,measured:fe,data:re,...ce}=le,{expandedDimensions:ue,isExpanded:xe,needsReExpansion:we,...he}=re||{},Ce=pe?{...pe,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...ce,style:Ce,data:he,position:le.position}}),K=(S.edges||[]).filter(le=>{var pe;return!((pe=le.data)!=null&&pe.isInternal)}).map(le=>{var pe;if((pe=le.data)!=null&&pe.redirectedToInternal){const{redirectedToInternal:fe,originalTarget:re,...ce}=le.data;return{...le,target:re||le.target,data:ce}}return le}),$={...S,nodes:N,edges:K},Y=(B=M.graph_layout)==null?void 0:B.snapshot;if(!(!Y||JSON.stringify(Y)!==JSON.stringify($)))return;const oe={...M,graph_layout:{...M.graph_layout,snapshot:$},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await b(F,oe),t&&t.id===F&&a(oe)}catch(M){console.error("❌ updateGraphLayout - Error:",M)}},saveTemplateChanges:async(F=!0)=>{try{if(t.estatus===ye.DIRTY){W(!0);const{id:S}=t,B=await j(S),M=await T(S),N=B.graph_layout.snapshot.nodes||[],K=N.filter(oe=>{var le;return!((le=oe.data)!=null&&le.isInternal)&&!oe.parentId}),$=N.length-K.length;$>0&&console.warn(`💾 [saveTemplateChanges] Se filtraron ${$} nodos internos al guardar plantilla ${S}`);const Y={graph_layout:{...B.graph_layout,snapshot:{...B.graph_layout.snapshot,nodes:K.map(oe=>{const{style:le,measured:pe,selected:fe,...re}=oe,ce=le?{...le,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return oe.type==="group"?{...re,style:ce,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}}:{...re,style:ce,data:{tareaId:oe.data.id&&oe.data.id>0?oe.data.id:null}}}),edges:(B.graph_layout.snapshot.edges||[]).filter(oe=>{var le;return!((le=oe.data)!=null&&le.isInternal)})}},tasks:{created:(M==null?void 0:M.created)||[],updated:(M==null?void 0:M.updated)||[],deleted:(M==null?void 0:M.deleted)||[]}},se=await C.post("/api/tareas/save-tareas-grafico",{data:Y});if(se.data&&se.status===200){try{const oe=await v(S),le=await f(oe),pe={...oe,graph_layout:{...oe.graph_layout,snapshot:{...oe.graph_layout.snapshot,nodes:le}},estatus:ye.IDLE};await b(S,pe),F||a(pe)}catch{const le=await j(S);if(le&&!F){const pe={...le,estatus:ye.IDLE};await b(S,pe),a(pe)}}await m.invalidateQueries({queryKey:["template",S]}),await m.invalidateQueries({queryKey:["template"]}),w(S),F&&(te(S),l(!1)),r(S,"readonly")}}}catch(S){console.log(S)}finally{W(!1)}},publishTemplate:async F=>{try{y(!0);const S={estatus:ke.PUBLISHED,publication_date:new Date},B=await C.put(`/api/plantillas/plantilla-update-estatus/${F}`,{data:S});B.data&&B.status===200&&(a({...t,estatusFromStrapi:ke.PUBLISHED}),c(!1),P.toast.info("Se publicó correctamente el proceso"))}catch(S){console.log(S),P.toast.error("Surgió un error al publicar el proceso")}finally{y(!1)}},deleteTemplate:async F=>{try{A(!0);const S={estatus:ke.DELETED,sjdaksd:0},B=await C.put(`/api/plantillas/plantilla-update-estatus/${F}`,{data:S});B.data&&B.status===200&&(u(!1),P.toast.info("Se eliminó correctamente el proceso"))}catch(S){console.error(S),P.toast.error("Surgión un error al eliminar el proceso")}finally{A(!1)}},loadingPublishTemplate:U,loadingSaveChanges:X,loadingDeleteTemplate:I}}const Fa=()=>{const{users:t,isLoading:a}=Ge(),{getImageOBP:s}=me();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(P.Spinner,{})})]}):null,Pa=({fullWidth:t,mode:a="grid",onClick:s,active:n,template:r,withOptions:i=!0})=>{const{openTemplate:o}=Oe(),{getImageByEmail:d,getNameByEmail:l}=Fa(),{setIsEditTemplate:c,setOpenModalCreateTemplate:u,setCurrentTemplateForEdit:f,setIsDuplicateTemplate:h,setOpenModalPublishTemplate:w,setCurrentTemplateId:m,setOpenModalDeleteTemplate:g}=Ie(),x=["blue","blue-dark","blue-light","orange","white","green","red"],[b,j]=p.useState(!1),_=async()=>{if(j(!0),a==="grid")try{j(!0),await o({template:r,checkTemplateInIndexedDB:!0})}catch(G){console.error(G)}finally{j(!1)}else j(!1);s==null||s(r==null?void 0:r.id)},z=G=>{c(!0),u(!0),f(G)},D=G=>{h(!0),u(!0),f(G)},k=()=>{m(r==null?void 0:r.id),w(!0)},T=()=>{m(r==null?void 0:r.id),g(!0)},v=(r==null?void 0:r.dias_duracion)===1?"Día":"Días",C=(r==null?void 0:r.counts_tasks)===1?"Tarea":"Tareas",U=(r==null?void 0:r.estatus)===ke.PUBLISHED?lt(r==null?void 0:r.publication_date).format("DD/MM/YYYY"):lt(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),W=l(y==null?void 0:y.email)||"",I=(W==null?void 0:W.charAt(0))||"",A=(r==null?void 0:r.estatus)===ke.PUBLISHED?"Fecha de publicación":"Fecha de creación",H=(r==null?void 0:r.estatus)===ke.DRAFT,R=G=>{const ie=G.split("-");return e.jsx(e.Fragment,{children:ie.map((J,te)=>e.jsxs("span",{children:[J,te<ie.length-1&&e.jsx("span",{className:"tw-text-neutral-200",children:"-"})]},te))})};return e.jsxs(P.Card,{active:n,fullWidth:t,onClick:_,className:`${t?"md:tw-flex-row":"tw-flex-col"}`,children:[e.jsx(Ye,{isLoading:b}),e.jsx(P.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(P.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:R((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(P.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 U=="string"&&U==="Invalid date")&&e.jsx(P.Tooltip,{label:A,children:e.jsx("p",{className:"ui-text-xxs ui-text-neutral-500 ui-font-semibold",children:U})})]})]}),!t&&e.jsx(P.Popup,{color:"white",size:"md",rounded:!0,variant:"outlined",icon:"ElipsisOutlined",stopPropagationList:!0,children:e.jsxs(P.List,{children:[r.estatus!==ke.PUBLISHED&&r.counts_tasks>2&&e.jsx(P.ListItem,{icon:"ArrowUpOutlined",onClick:k,children:"Publicar"}),e.jsx(P.ListItem,{icon:"EditOutlined",onClick:()=>{z(r)},children:"Editar parámetros"}),e.jsx(P.ListItem,{icon:"EditOutlined",children:"Editar tareas"}),H&&e.jsx(P.ListItem,{icon:"CloneOutlined",onClick:G=>{G.stopPropagation(),D(r)},children:"Duplicar"}),H&&e.jsx(P.ListItem,{color:"red",icon:"TrashOutlined",onClick:T,children:"Eliminar"})]})})]})})}),e.jsx(P.Card.Separator,{vertical:t}),e.jsx(P.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((G,ie)=>{const J=x[ie%x.length];return e.jsx(P.Tag,{color:J,size:"xs",borderable:J==="white",label:G.name},G.name)})}),!t&&e.jsx(P.Card.Separator,{vertical:t}),e.jsxs(P.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(P.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:C})]})})}),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(P.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:v})]})})}),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(P.Tooltip,{label:W,children:e.jsx(P.Visual,{slot:X,size:"md",fallback:I})})]})]}),t&&i&&e.jsx(P.Card.Separator,{vertical:t}),i&&e.jsx("div",{className:`tw-w-auto ${t?"tw-flex tw-items-center":""}`,children:t&&e.jsx(P.Button,{color:"white",size:"sm",variant:"outlined",rounded:!0,tooltipPosition:"top",tooltip:(r==null?void 0:r.estatus)==="published"?"No se puede editar un flujo de trabajo publicado":"",disabled:(r==null?void 0:r.estatus)==="published",icon:"ElipsisOutlined",onClick:_})})]})]})},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(P.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(P.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}=jt(),{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(P.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=Ae.stringify({fields:["id","nombre"],sort:["nombre:asc"]},{encodeValuesOnly:!0}),s=await t.get(`/api/equipos?${a}`);return s.data?{data:be(s.data.data)}:{data:[]}},ar=()=>{const{tasks_api:t}=me();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}=jt(),{users:c}=Ge(),{getImageOBP:u}=me(),f=p.useMemo(()=>{try{return!l||!c?[]:l.map(T=>{const v=c[T.email],C=v!=null&&v.image?u(v.image):"";return{label:T.name,value:T.id.toString(),icon:C}})}catch(T){return console.error("Error mapeando usuarios:",T),[]}},[l,c]),h=()=>{if(i&&o){const T=y=>{if(y==null)return"";const X=Number(y);return isNaN(X)?"":X},v=y=>y?typeof y=="string"?Number(y)||"":y.id||"":"",C=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:T(o.prioridad),difficulty:T(o.nivel_dificultad),duration:T(o.duracion),team:v(o.equipo),responsible:C(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}=Ne.useForm({mode:"onChange",defaultValues:h()});p.useEffect(()=>{t&&b(h())},[t,i,o,b]);const _=j(),z=x&&_.title&&_.description&&_.priority&&_.difficulty&&_.duration&&_.team&&Object.keys(g).length===0,D=async T=>{try{if(["title","description","priority","difficulty","duration","team"].filter(U=>!T[U]).length>0)return;s&&s({...T,parent:r}),b()}catch{}},k=()=>{b(),a()};return e.jsx(P.Drawer,{titleIcon:"TaskOutlined",isOpen:t,onClose:k,onSuccess:()=>{m(T=>{D(T)},T=>{const v=Object.entries(T).map(([C,U])=>`${C}: ${U.message}`).join(`
|
|
102
102
|
`);console.log(`📝 Por favor, completa los siguientes campos:
|
|
103
|
-
`+v)})()},title:i?"Editar tarea":"Nueva tarea",successButtonText:i?"Actualizar":"Crear",disabledSuccessButton:!z,children:e.jsxs("form",{className:"tw-flex tw-flex-col tw-gap-4",children:[e.jsx(Ne.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:T})=>{var v;return e.jsx(P.Input,{fullWidth:!0,label:"Título",placeholder:"Ingresa el título de la tarea...",error:(v=g.title)==null?void 0:v.message,...T})}}),e.jsx(Ne.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:T})=>{var v;return e.jsx(P.Textarea,{className:"ui-w-full tw-w-full",placeholder:"Describe la tarea a realizar...",label:"Descripción",error:(v=g.description)==null?void 0:v.message,...T})}}),e.jsx(P.Separator,{}),e.jsx(Ne.Controller,{control:w,name:"priority",rules:{required:"La prioridad es obligatoria"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Prioridad",placeholder:"Selecciona la prioridad...",options:sr,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(Ne.Controller,{control:w,name:"difficulty",rules:{required:"La dificultad es obligatoria"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Dificultad",placeholder:"Selecciona la dificultad...",options:nr,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(Ne.Controller,{control:w,name:"duration",rules:{required:"La duración es obligatoria"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Duración",placeholder:"Selecciona la duración...",options:rr,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(P.Separator,{}),e.jsx(Ne.Controller,{control:w,name:"team",rules:{required:"El equipo es obligatorio"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Equipo",placeholder:"Selecciona el equipo...",options:d,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(Ne.Controller,{control:w,name:"responsible",render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,absolute:!0,label:"Responsable",placeholder:"Selecciona el responsable...",options:f,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})})]})})},or=()=>{const{get:t}=Oe(),a=Me(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("Flujo de trabajo no encontrado"),!1;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}}}},je={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}},rt=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:je.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:je.DEFAULT_CHILD_HEIGHT)}))-d;s.style={...s.style??{},width:o,height:c}}),a},ot=t=>t.source===je.START_NODE_ID||t.target===je.START_NODE_ID,Be=t=>t===je.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}),it=(t,a,s,n,r,i=!1,o=null,d=null)=>{const l=ir(n),c=i?je.DEFAULT_SOURCE_HANDLE:s;return{id:`edge-${t}-${a}`,source:t,sourceHandle:c,target:a,targetHandle:je.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}=ne.useReactFlow(),{get:w,update:m,addTaskUpdatingTemplate:g,addTemplateUpdatingTemplate:x}=Oe(),b=Me(W=>W.activeTemplate),j=de.useQueryClient(),_=Me(W=>W.setActiveTemplate),{removeTaskFromState:z,updateNodeWithNewEdge:D,updateTaskInState:k}=Xe(),T=p.useCallback(async W=>{const I=t.find(H=>H.id===W);if(!(I!=null&&I.data))return null;if(I.id===je.START_NODE_ID){if(!b)return null;try{const H=await w(b.id),R=H.tarea_plantillas.find(G=>G.start===!0);return R!=null&&R.id?R.id:H.tarea_plantillas.length>0?H.tarea_plantillas[0].id:null}catch{return null}}const A=I.data.id;if(!A&&A!==0)return null;if(typeof A=="string"){if(A.includes("-"))return A;{const H=parseInt(A,10);return isNaN(H)?null:H}}else if(typeof A=="number")return A;return null},[t,b,w]),v=p.useCallback(async(W=t,I=a)=>{var A,H,R,G,ie,J,te;if(!b){P.toast.warning("No hay template activo para actualizar layout");return}try{const ae=await w(b.id);if(!ae){P.toast.warning("Template no encontrado en IndexedDB");return}const E=(A=ae.graph_layout)==null?void 0:A.snapshot;if(!(!E||JSON.stringify(E.nodes)!==JSON.stringify(W)||JSON.stringify(E.edges)!==JSON.stringify(I))){console.log("🔄 No hay cambios en el layout, omitiendo actualización");return}const ee=W.filter(Q=>{var F;return!((F=Q.data)!=null&&F.isInternal)&&!Q.parentId}).map(Q=>{const{style:F,measured:S,data:B,selected:M,...N}=Q,{expandedDimensions:K,isExpanded:$,needsReExpansion:Y,...se}=B||{},oe=F?{...F,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...N,style:oe,data:se}}),O=I.filter(Q=>{var F;return!((F=Q.data)!=null&&F.isInternal)}),L={...ae,graph_layout:{id:((H=ae.graph_layout)==null?void 0:H.id)||0,snapshot:{nodes:ee,edges:O,viewport:((G=(R=ae.graph_layout)==null?void 0:R.snapshot)==null?void 0:G.viewport)||{x:0,y:0,zoom:1}},history:((ie=ae.graph_layout)==null?void 0:ie.history)||[],zoom:((J=ae.graph_layout)==null?void 0:J.zoom)||1,position:((te=ae.graph_layout)==null?void 0:te.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await m(b.id,L),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"),_(L)}catch(ae){console.error("❌ Error al actualizar template layout:",ae)}},[b,w,m,t,a,_]),C=p.useCallback(async(W=[],I=[],A,H)=>{var G,ie,J,te,ae,E,q,ee,O,L,Q,F;const R=A||(b==null?void 0:b.id);if(!R){P.toast.warning("No hay template ID disponible para actualizar");return}try{const S=await w(R);if(!S)return;const B=(J=(ie=(G=S.graph_layout)==null?void 0:G.snapshot)==null?void 0:ie.nodes)==null?void 0:J.filter(K=>{var $;return!W.includes(K.id)&&!(($=K.data)!=null&&$.isInternal)&&!K.parentId}).map(K=>{const{style:$,measured:Y,data:se,...oe}=K,{expandedDimensions:le,...pe}=se||{},fe=$?{...$,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...oe,style:fe,data:pe}}),M=((E=(ae=(te=S.graph_layout)==null?void 0:te.snapshot)==null?void 0:ae.edges)==null?void 0:E.filter(K=>{var $;return!W.includes(K.source)&&!W.includes(K.target)&&!(($=K.data)!=null&&$.isInternal)}))||[],N={...S,graph_layout:{id:((q=S.graph_layout)==null?void 0:q.id)||0,snapshot:{nodes:B,edges:M,viewport:((O=(ee=S.graph_layout)==null?void 0:ee.snapshot)==null?void 0:O.viewport)||{x:0,y:0,zoom:1}},history:((L=S.graph_layout)==null?void 0:L.history)||[],zoom:((Q=S.graph_layout)==null?void 0:Q.zoom)||1,position:((F=S.graph_layout)==null?void 0:F.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await z({templateId:R,id:H||0}),await m(R,N),await j.invalidateQueries({queryKey:["template",R]}),await j.invalidateQueries({queryKey:["template"]}),R===(b==null?void 0:b.id)&&_(N)}catch(S){console.error("❌ updateAfterDeleted - Error al actualizar template layout:",S)}},[b,w,m,a,t,z,_]),U=p.useCallback(async(W,I,A)=>{if(!r||!b)return;const{nodeId:H,sourceNodeId:R,sourceHandleId:G}=r;if(R)try{const ie=await T(R);if(!ie)return;if(W==="plantilla"){const J=A;if(!(J!=null&&J.templateId))return;if(!await x(J.templateId,b.id,ie,I)){P.toast.error("No se pudo agregar la plantilla. Intenta nuevamente."),o();return}try{const Q=await w(b.id);if(Q){const F=(B,M)=>{for(const N of B){if(N.id===M||N.uuid===M)return N;if(N.tareas&&N.tareas.length>0){const K=F(N.tareas,M);if(K)return K}}return null},S=F(Q.tarea_plantillas,ie);if(S&&S.id){const B=(S.plantilla_dependents||[]).map(N=>typeof N=="object"&&N.id?{id:N.id}:typeof N=="number"?{id:N}:N),M={...S,plantilla_dependents:B,plantilla:{id:b.id,clave:Q.clave,categoria:Q.categoria||{id:0,nombre:"Sin categoría"}}};await k({task:M}),console.log("✅ Tarea padre agregada a templates_states.updated con plantilla_dependents:",S.id,M.plantilla_dependents)}}}catch(Q){console.error("❌ Error al actualizar tarea padre en templates_states:",Q)}const ae=c({x:r.position.x,y:r.position.y}),E=J.templateData||{id:J.templateId,nombre_plantilla:`Flujo de trabajo ${J.templateId}`,clave:`TPL-${J.templateId}`,estatus:"activo",categoria:null,counts_tasks:0,dias_duracion:0},q={id:H,type:"group",position:ae,selected:!1,deletable:!0,data:{id:J.templateId,templateId:J.templateId,type:"template",nombre_plantilla:E.nombre_plantilla||`Flujo de trabajo ${J.templateId}`,clave:E.clave||`TPL-${J.templateId}`,estatus:E.estatus||"activo",categoria:E.categoria||null,counts_tasks:E.counts_tasks||0,dias_duracion:E.dias_duracion||0,tarea_plantillas:E.tarea_plantillas||[],params_plantillas:E.params_plantillas||[],createdAt:E.createdAt||new Date().toISOString(),updatedAt:E.updatedAt||new Date().toISOString(),created_by:E.created_by||null,updated_by:E.updated_by||null}};s(Q=>[...Q,q]);const ee=G||je.DEFAULT_SOURCE_HANDLE,O=Be(R),L=it(R,H,ee,I,"plantilla",O,ie);n(Q=>[...Q,L]);try{const Q=[...t,q],F=[...a,L];await v(Q,F)}catch(Q){console.error("❌ Error al actualizar layout después de agregar plantilla:",Q)}}else if(W==="tarea"){const J=A;if(!J)return;const te=c({x:r.position.x,y:r.position.y}),ae=-new Date().getTime(),E={id:ae,reference_graph:H,title:J.title,description:J.description,priority:J.priority,difficulty:J.difficulty,duration:J.duration,team:J.team,responsible:J.responsible,parent:{data:{id:ie}}},q=await g(E,b.id,I),ee=lr(H,te,q);s(F=>[...F,ee]);const O=G||je.DEFAULT_SOURCE_HANDLE,L=Be(R),Q=it(R,H,O,I,W,L,ie,ae);n(F=>[...F,Q]);try{const F=[...t,ee],S=[...a,Q];await v(F,S)}catch(F){console.error("❌ Error al actualizar layout después de agregar tarea:",F)}setTimeout(()=>{try{const F=u(H);if(F){const S=window.innerWidth,B=window.innerHeight,M=S/2,N=B/2;f({x:M-F.position.x-130,y:N-F.position.y-40,zoom:1},{duration:800})}else h({padding:.1,duration:800})}catch{try{h({padding:.1,duration:800})}catch{}}},200)}o()}catch(ie){console.error("❌ Error en createNodeFromPopup:",ie)}},[r,b,g,x,T,c,s,n,o,v,t,a]),y=p.useCallback(async(W,I)=>{var G,ie;if(console.log("🟢 createConnectionFromPopup - INICIO",{nodeType:W,connectionType:I}),!i){console.warn("⚠️ createConnectionFromPopup - No hay connectionPopup");return}const{sourceNodeId:A,sourceHandleId:H,targetNodeId:R}=i;console.log("🟢 createConnectionFromPopup - Datos de conexión:",{sourceNodeId:A,targetNodeId:R,sourceHandleId:H});try{if(!(window.validConnectionTypes||{dependiente:!0,hija:!0})[I]){console.warn("⚠️ createConnectionFromPopup - Tipo de conexión no válido:",I),P.toast.warning("Tipo de conexión no válido"),l(!1),d();return}const te=t.find(M=>M.id===A),ae=t.find(M=>M.id===R);console.log("🟢 createConnectionFromPopup - Nodos encontrados:",{sourceNode:te==null?void 0:te.id,targetNode:ae==null?void 0:ae.id,sourceData:te==null?void 0:te.data,targetData:ae==null?void 0:ae.data});const E=ae==null?void 0:ae.data,q=((G=te==null?void 0:te.data)==null?void 0:G.id)||A,ee=((ie=ae==null?void 0:ae.data)==null?void 0:ie.id)||R;console.log("🟢 createConnectionFromPopup - IDs extraídos:",{parentId:q,childId:ee});const O=it(A,R,H||je.DEFAULT_SOURCE_HANDLE,I,W,Be(A),q,ee);console.log("🟢 createConnectionFromPopup - Nuevo edge creado:",O),n(M=>[...M,O]);const L=[...a,O],Q=E.id||-Date.now(),F=E.reference_graph||R,S={id:Q,uuid:E.uuid||crypto.randomUUID(),reference_graph:F,texto_corto:E.texto_corto||"",texto_largo:E.texto_largo||"",prioridad:E.prioridad||null,nivel_dificultad:E.nivel_dificultad||1,duracion:E.duracion||null,start:E.start||!1,equipo:E.equipo||null,responsable:E.responsable||null,plantilla:{id:E.plantilla.id,clave:E.plantilla.clave,categoria:E.plantilla.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:E.plantilla_dependents||[],ids_t_dependientes:E.ids_t_dependientes||[],tarea_padre:I==="hija"?{id:O.data.parentId}:null,id_t_requerida:I==="dependiente"?{id:O.data.parentId}:null,tareas:E.tareas||[],type:"task"};console.log("🟢 createConnectionFromPopup - taskForState creado:",S),console.log("🟢 createConnectionFromPopup - currentTemplate.id:",b.id);const B=t.map(M=>M.id===R?{...M,data:S}:M);console.log("🟢 createConnectionFromPopup - Actualizando nodos en React Flow..."),s(B),console.log("✅ createConnectionFromPopup - Nodos actualizados en React Flow"),console.log("🟢 createConnectionFromPopup - Actualizando template layout..."),await v(B,L),console.log("✅ createConnectionFromPopup - Template layout actualizado"),console.log("🟢 createConnectionFromPopup - Llamando a updateNodeWithNewEdge..."),await D({templateId:b.id,edge:O,task:S}),console.log("✅ createConnectionFromPopup - updateNodeWithNewEdge completado")}catch(J){console.error("❌ createConnectionFromPopup - Error al crear conexión:",J),console.error("❌ createConnectionFromPopup - Stack:",J.stack)}finally{console.log("🟢 createConnectionFromPopup - Limpiando estado..."),l(!1),d(),console.log("🟢 createConnectionFromPopup - FIN")}},[i,n,l,d,a,t,v]),X=p.useCallback(async W=>{if(!r||!b){P.toast.warning("No hay newNodePopup o template activo para actualizar el nodo");return}const{nodeId:I}=r;if(!I){P.toast.warning("No se encontró nodeId en newNodePopup");return}try{const A=t.find(R=>R.id===I);if(!A){P.toast.warning(`No se encontró el nodo con ID: ${I}`);return}const H={...A,data:{...A.data,...W,id:A.data.id||A.id,type:A.data.type||A.data.type,updatedAt:new Date().toISOString()}};s(R=>R.map(G=>G.id===I?H:G));try{const R=t.map(G=>G.id===I?H:G);await v(R,a)}catch(R){P.toast.error("Error al actualizar layout después de actualizar nodo:",R)}o()}catch(A){P.toast.error("Error al actualizar el nodo:",A)}},[r,b,t,s,a,v,o]);return{createNodeFromPopup:U,createConnectionFromPopup:y,updateNodeFromPopup:X,updateAfterDeleted:C}},wr=({data:t,id:a,isConnectable:s,selected:n})=>{const r=ve(C=>C.getViewMode),[i,o]=p.useState(!1),[d,l]=p.useState(t),c=Me(C=>C.activeTemplate),u=Me(C=>C.setActiveTemplate),{get:f,update:h}=Oe(),w=c!=null&&c.id?r(c.id):"readonly",{updateTaskInTemplate:m}=or(),{setNodes:g,setEdges:x,getNodes:b,getEdges:j}=ne.useReactFlow(),_=de.useQueryClient(),{updateAfterDeleted:z}=Oa({nodes:b(),edges:j(),setNodes:g,setEdges:x,newNodePopup:null,connectionPopup:null,closeNewNodePopup:()=>{},closeConnectionPopup:()=>{},setIsConnectingExistingNodes:()=>{}}),D=()=>{o(!0)},k=p.useCallback(async()=>{var I,A,H;const C=b().find(R=>R.id===a);if(!C){console.warn("⚠️ Nodo no encontrado para eliminar");return}const U=[C],y=Aa(U),X=U.length>0?(A=(I=U[0])==null?void 0:I.data)==null?void 0:A.id:0;x(R=>R.filter(G=>!y.includes(G.source)&&!y.includes(G.target))),g(R=>R.filter(G=>G.id!==a));let W;for(const R of U)try{const G=R.data;if((H=G==null?void 0:G.plantilla)!=null&&H.id){W=G.plantilla.id;break}}catch{}try{x(R=>((async()=>{await z(y,R,W,X)})().catch(G=>{console.error("❌ Error en updateAfterDeleted:",G)}),R))}catch(R){console.error("❌ Error en handleDeleteNode:",R)}},[a,b,j,g,x,z]),T=p.useCallback(async C=>{var U,y,X,W,I,A,H,R,G,ie;if(!c){console.warn("⚠️ MainNode.updateTemplateLayout - No hay template activo");return}try{const J=await f(c.id);if(!J){console.warn("⚠️ MainNode.updateTemplateLayout - Template no encontrado en IndexedDB");return}const te=(U=J.graph_layout)==null?void 0:U.snapshot;if(!(!te||JSON.stringify(te.nodes)!==JSON.stringify(C))){console.log("🔄 MainNode.updateTemplateLayout - No hay cambios en nodos, omitiendo actualización");return}const E=C.filter(O=>{var L;return!((L=O.data)!=null&&L.isInternal)&&!O.parentId}).map(O=>{const{style:L,measured:Q,data:F,selected:S,...B}=O,{expandedDimensions:M,isExpanded:N,needsReExpansion:K,...$}=F||{},Y=L?{...L,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...B,style:Y,data:$}}),q=(((X=(y=J.graph_layout)==null?void 0:y.snapshot)==null?void 0:X.edges)||[]).filter(O=>{var L;return!((L=O.data)!=null&&L.isInternal)}),ee={...J,graph_layout:{id:((W=J.graph_layout)==null?void 0:W.id)||0,snapshot:{...(I=J.graph_layout)==null?void 0:I.snapshot,nodes:E,edges:q,viewport:((H=(A=J.graph_layout)==null?void 0:A.snapshot)==null?void 0:H.viewport)||{x:0,y:0,zoom:1}},history:((R=J.graph_layout)==null?void 0:R.history)||[],zoom:((G=J.graph_layout)==null?void 0:G.zoom)||1,position:((ie=J.graph_layout)==null?void 0:ie.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await h(c.id,ee),await _.invalidateQueries({queryKey:["template",c.id]}),await _.invalidateQueries({queryKey:["template"]}),c&&c.id===ee.id&&u(ee)}catch(J){console.error("❌ MainNode.updateTemplateLayout - Error al actualizar template layout:",J)}},[c,f,h,u,_]),v=async C=>{if(o(!1),c){const U={...t,texto_corto:C.title,texto_largo:C.description,prioridad:C.priority?typeof C.priority=="number"?C.priority:parseInt(C.priority.toString()):null,nivel_dificultad:C.difficulty?typeof C.difficulty=="number"?C.difficulty:parseInt(C.difficulty.toString()):1,duracion:C.duration?typeof C.duration=="number"?C.duration:parseInt(C.duration.toString()):null,equipo:{id:Number(C.team)||null},responsable:{id:Number(C.responsible)||null}};await m(t.id,U),g(y=>{const X=y.map(W=>W.id===a?{...W,data:{...W.data,...U,tarea_padre:t.tarea_padre,id_t_requerida:t.id_t_requerida,updatedAt:new Date().toISOString()}}:W);return console.log("🔄 updatedNodes:",X),setTimeout(()=>T(X),0),X})}};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 tw-max-w-[423px] ${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(ne.Handle,{isConnectable:s,id:"top-target",type:"target",position:ne.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white"}),e.jsx(ne.Handle,{isConnectable:s,id:"right-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Right}),e.jsx(ne.Handle,{isConnectable:s,id:"bottom-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Bottom}),e.jsx(ne.Handle,{isConnectable:s,id:"left-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Left}),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 tw-truncate",children:d.texto_corto}),!t.isInternal&&c.estatusFromStrapi!==ke.PUBLISHED&&w!=="readonly"&&e.jsx("div",{children:t.type==="task"?e.jsx(P.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"ElipsisOutlined",containerClassName:"nopan nodrag",buttonClassName:"nopan nodrag",children:e.jsxs(P.List,{children:[e.jsx(P.ListItem,{icon:"EditOutlined",onClick:D,children:"Editar"}),e.jsx(P.ListSeparator,{}),e.jsx(P.ListItem,{icon:"Plus1Outlined",color:"red",onClick:k,children:"Eliminar"})]})}):e.jsx(P.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(ne.Handle,{isConnectable:s,id:"top-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Top}),e.jsx(ne.Handle,{isConnectable:s,id:"right-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Right}),e.jsx(ne.Handle,{isConnectable:s,id:"bottom-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Bottom}),e.jsx(ne.Handle,{isConnectable:s,id:"left-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Left}),t.type==="task"&&i&&e.jsx(Ma,{isOpen:i,onClose:()=>o(!1),onSuccess:v,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:ke.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=Ae.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:be(d.data.data),meta:d.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:s,pageCount:0,total:0}}}},La=({page:t=1,pageSize:a=10,search:s="",filters:n={}})=>{const{tasks_api:r}=me();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})})},qa=({isOpen:t,onClose:a,onSuccess:s,nodeDataType:n,parentNodeInfo:r})=>{var _,z,D,k;const i=ve(T=>T.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}=La({page:c,pageSize:l,search:f}),g=T=>{h(T.target.value)},x=()=>{var v;if(o===0)return;const T=(v=w==null?void 0:w.data)==null?void 0:v.find(C=>C.id===o);if(!T){console.error("No se encontró el flujo de trabajo seleccionado en los datos");return}s?s({templateId:o,templateData:T}):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=((z=(_=w.meta)==null?void 0:_.pagination)==null?void 0:z.total)||0,j=b===1?"flujo encontrado":"flujos encontrados";return e.jsx(P.Modal,{icon:"TaskOutlined",isOpen:t,size:"lg",onSuccess:x,onClose:a,title:"Agregar flujo de trabajo",successButtonText:"Agregar",disableSuccessButton:o===0,closeAtSuccess:!0,children:e.jsxs(P.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(P.Input,{className:"tw-flex-1",leftSlot:"SearchOutlined",fullWidth:!0,placeholder:"Buscar por nombre, parámetros o estado...",value:f,onChange:g})]}),e.jsx(P.Separator,{}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-6 tw-p-12",children:[w.data.map(T=>e.jsx(Pa,{mode:"modal",template:T,active:o===T.id,fullWidth:!0,onClick:d,withOptions:!1},T.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 flujos de trabajo con ese criterio de búsqueda"})})]}),e.jsx(P.Separator,{}),e.jsx("div",{className:"tw-mt-6",children:e.jsx(P.Pagination,{className:"tw-pt-0",pageSize:l,pageCount:((k=(D=w==null?void 0:w.meta)==null?void 0:D.pagination)==null?void 0:k.pageCount)||1,currentPage:c,onPageChange:T=>u(T)})})]})})},mr=({data:t,id:a})=>{const s=ve(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(qa,{isOpen:i,onClose:()=>o(!1),nodeDataType:d}),e.jsx(ne.Handle,{id:"top-target",type:"target",position:ne.Position.Top}),e.jsx(ne.Handle,{id:"right-target",type:"target",position:ne.Position.Right}),e.jsx(ne.Handle,{id:"bottom-target",type:"target",position:ne.Position.Bottom}),e.jsx(ne.Handle,{id:"left-target",type:"target",position:ne.Position.Left}),e.jsx(ne.Handle,{id:"top-source",type:"source",position:ne.Position.Top}),e.jsx(ne.Handle,{id:"right-source",type:"source",position:ne.Position.Right}),e.jsx(ne.Handle,{id:"bottom-source",type:"source",position:ne.Position.Bottom}),e.jsx(ne.Handle,{id:"left-source",type:"source",position:ne.Position.Left}),e.jsx(P.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"Plus1Outlined",containerClassName:"nopan",buttonClassName:"nopan",children:e.jsxs(P.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(P.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>c({type:"tarea",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(P.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"tarea",connectionType:"hija"}),children:"Hija"}),e.jsx(P.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),e.jsx(P.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"plantilla",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(P.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(P.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(P.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>f("tarea","dependiente"),children:"Dependiente"}),e.jsx(P.ListItem,{icon:"Plus1Outlined",onClick:()=>f("tarea","hija"),children:"Hija"}),e.jsx(P.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),e.jsx(P.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(qa,{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}=ne.useReactFlow(),{zoom:r}=ne.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 D=t==null?void 0:t.current;if(D){const k=D.getBoundingClientRect();w(k.width)}},[t]);const m=p.useMemo(()=>{var v;if(!a||a.length===0)return{x:0,y:0,zoom:1};const D=a.find(C=>{var U;return(U=C==null?void 0:C.data)==null?void 0:U.main})??a[0];return{x:(h||(typeof window<"u"?window.innerWidth:0))/2-(((v=D==null?void 0:D.position)==null?void 0:v.x)??0),y:20,zoom:1}},[a,h]),g=p.useCallback(D=>{if(!u){const k=[...o.slice(0,l+1),D];d(k),c(k.length-1)}},[o,l,u]),x=p.useCallback(()=>{if(u)return;const D=n(),k=Math.min(D.zoom*1.2,2);g(D),f(!0),s({x:D.x,y:D.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),b=p.useCallback(()=>{if(u)return;const D=n(),k=Math.max(D.zoom/1.2,.5);g(D),f(!0),s({x:D.x,y:D.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),j=p.useCallback(()=>{if(u)return;const D=n();Math.abs(D.zoom-1)>.01&&g(D),f(!0),s({x:D.x,y:D.y,zoom:1}),setTimeout(()=>f(!1),100)},[n,s,g,u]),_=p.useCallback(()=>{if(u||l<=0)return;const D=o[l-1];f(!0),s(D),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:_}}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=ve.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(P.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(P.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(P.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(ne.Handle,{id:"bottom-source",type:"source",position:ne.Position.Bottom,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"}),e.jsx(ne.Handle,{id:"top-target",type:"target",position:ne.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]=ne.useNodesState(rt(t)),[i,o,d]=ne.useEdgesState(a),[l,c]=p.useState(!1),u=p.useCallback(O=>{o(O)},[o]),{toObject:f}=ne.useReactFlow(),{findClosestHandles:h,shouldApplyMagneticConnection:w}=hr(),{updateGraphLayout:m,get:g,update:x}=Oe(),b=Me(O=>O.activeTemplate),j=Me(O=>O.setActiveTemplate),_=de.useQueryClient(),{removeParentIdFromNodes:z}=Xe(),{newNodePopup:D,connectionPopup:k,isConnectingExistingNodes:T,openNewNodePopup:v,closeNewNodePopup:C,openConnectionPopup:U,closeConnectionPopup:y,getParentNodeInfo:X,setIsConnectingExistingNodes:W}=br(s),{createNodeFromPopup:I,createConnectionFromPopup:A,updateNodeFromPopup:H,updateAfterDeleted:R}=Oa({nodes:s,edges:i,setNodes:n,setEdges:u,newNodePopup:D,connectionPopup:k,closeNewNodePopup:C,closeConnectionPopup:y,setIsConnectingExistingNodes:W});p.useEffect(()=>{if(t&&t.length>0){if(!(t.some((M,N)=>{const K=s[N];return K?M.id!==K.id||JSON.stringify(M.position)!==JSON.stringify(K.position)||JSON.stringify(M.data)!==JSON.stringify(K.data):!0})||t.length!==s.filter(M=>{var N;return!((N=M.data)!=null&&N.isInternal)}).length)&&s.length>0)return;const{expandedGroups:L,groupTemplateData:Q}=ve.getState(),F=rt(t),S=new Set(F.map(M=>M.id));let B=s.filter(M=>{var N,K;return((N=M.data)==null?void 0:N.isInternal)&&typeof((K=M.data)==null?void 0:K.originalGroupId)=="string"&&L.has(M.data.originalGroupId)&&S.has(M.data.originalGroupId)});if(B.length>0){const M=F.map(N=>{var K;if(L.has(N.id)){const $=s.find(se=>se.id===N.id),Y=(K=$==null?void 0:$.data)==null?void 0:K.expandedDimensions;if(Y)return{...N,style:{...N.style,width:Y.width,height:Y.height},data:{...N.data,isExpanded:!0,expandedDimensions:Y}}}return N});n([...M,...B])}else if(L.size>0){const M=F.map(N=>L.has(N.id)&&Q[N.id]?{...N,data:{...N.data,isExpanded:!0,needsReExpansion:!0}}:N);n(M)}else n(F)}else n([])},[t,n]),p.useEffect(()=>{if(!l&&a&&a.length>0){const{expandedGroups:O}=ve.getState(),L=rt(t),Q=new Set(L.map(B=>B.id)),F=i.filter(B=>{var M,N;return((M=B.data)==null?void 0:M.isInternal)&&typeof((N=B.data)==null?void 0:N.originalGroupId)=="string"&&O.has(B.data.originalGroupId)&&Q.has(B.data.originalGroupId)}),S=i.filter(B=>{var M,N;return((M=B.data)==null?void 0:M.redirectedToInternal)&&typeof((N=B.data)==null?void 0:N.originalTarget)=="string"&&O.has(B.data.originalTarget)&&Q.has(B.data.originalTarget)});if(F.length>0||S.length>0){const B=a.filter(M=>!S.some(N=>{var K;return((K=N.data)==null?void 0:K.originalTarget)===M.target}));u([...B,...F,...S])}else u(a)}},[a,u,l]);const G=p.useCallback((O,L,Q=!1)=>{const S=i.filter(N=>N.target===L).length>0;if(i.some(N=>N.source===O&&N.target===L||N.source===L&&N.target===O)&&!Q)return P.toast.warning("La tarea destino ya tiene una conexión"),!1;const M=!S;return typeof window<"u"&&(window.validConnectionTypes={dependiente:M,hija:M}),M?!0:(P.toast.warning("La tarea destino ya tiene una conexión de entrada"),!1)},[i]),ie=p.useCallback(O=>{if(!cr(O.source,O.target))return;Be(O.source)&&!O.sourceHandle&&(O.sourceHandle=je.DEFAULT_SOURCE_HANDLE);const L=s.find(F=>F.id===O.source),Q=s.find(F=>F.id===O.target);if(L&&Q){if(!G(O.source,O.target))return;U(O.source,O.target,O.sourceHandle,O.targetHandle);return}return u(F=>ne.addEdge(O,F))},[s,U,u,G]),J=p.useCallback((O,L)=>{var Q;if(!T&&!L.isValid&&L.fromNode){const F=s.find(Y=>Y.id===L.fromNode.id);if((F==null?void 0:F.type)==="group"){P.toast.warning("En una plantilla, no se puede crear una conexión");return}const S=dr(O),B=document.elementFromPoint(S.x,S.y);if(B!=null&&B.closest(".react-flow__node"))return;const M=crypto.randomUUID(),N=((Q=L.fromHandle)==null?void 0:Q.id)||je.DEFAULT_SOURCE_HANDLE,$=Be(L.fromNode.id)?je.DEFAULT_SOURCE_HANDLE:N;v(M,S,L.fromNode.id,$)}},[T,v,s]),te=p.useCallback(async O=>{var S,B,M;const L=Aa(O),Q=O.length>0?(B=(S=O[0])==null?void 0:S.data)==null?void 0:B.id:0;u(N=>N.filter(K=>!L.includes(K.source)&&!L.includes(K.target)));let F;for(const N of O)try{const K=N.data;if((M=K==null?void 0:K.plantilla)!=null&&M.id){F=K.plantilla.id;break}}catch{}try{u(N=>((async()=>{await R(L,N,F,Q)})().catch(K=>{console.error("❌ Error en updateAfterDeleted:",K)}),N))}catch(N){console.error("❌ Error en onDeleteNode:",N)}},[u,R]),ae=p.useCallback(async O=>{var Q,F,S,B,M,N,K,$,Y,se,oe,le,pe,fe;if(!O||O.length===0)return;let L;if(b!=null&&b.id)L=b.id;else for(const re of O){const ce=s.find(xe=>xe.id===re.source),ue=s.find(xe=>xe.id===re.target);if(ce!=null&&ce.data&&typeof ce.data=="object"&&"plantilla"in ce.data){const xe=ce.data.plantilla;if(xe!=null&&xe.id){L=xe.id;break}}if(ue!=null&&ue.data&&typeof ue.data=="object"&&"plantilla"in ue.data){const xe=ue.data.plantilla;if(xe!=null&&xe.id){L=xe.id;break}}}if(!L){console.warn("⚠️ onEdgesDelete - No se pudo obtener templateId");return}try{const re=await g(L);if(!re){console.warn("⚠️ onEdgesDelete - Template no encontrado en IndexedDB");return}const ce=O.map(Se=>Se.id),ue=((S=(F=(Q=re.graph_layout)==null?void 0:Q.snapshot)==null?void 0:F.edges)==null?void 0:S.filter(Se=>{var Fe;return!ce.includes(Se.id)&&!((Fe=Se.data)!=null&&Fe.isInternal)}))||[],we=(((N=(M=(B=re.graph_layout)==null?void 0:B.snapshot)==null?void 0:M.nodes)==null?void 0:N.filter(Se=>{var Fe;return!((Fe=Se.data)!=null&&Fe.isInternal)&&!Se.parentId}))||[]).map(Se=>{const{style:Fe,measured:Qe,data:at,...$a}=Se,{expandedDimensions:so,isExpanded:no,needsReExpansion:ro,...Ct}=at||{},Ba=Fe?{...Fe,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0,Ha=Se.data.id===O[0].data.childId?{...Ct,tarea_padre:null,id_t_requerida:null}:Ct;return{...$a,style:Ba,data:Ha}}),he=(($=(K=re.graph_layout)==null?void 0:K.snapshot)==null?void 0:$.edges)||[];if(!(JSON.stringify(he)!==JSON.stringify(ue)))return;const _e={...re,graph_layout:{id:((Y=re.graph_layout)==null?void 0:Y.id)||0,snapshot:{nodes:we,edges:ue,viewport:((oe=(se=re.graph_layout)==null?void 0:se.snapshot)==null?void 0:oe.viewport)||{x:0,y:0,zoom:1}},history:((le=re.graph_layout)==null?void 0:le.history)||[],zoom:((pe=re.graph_layout)==null?void 0:pe.zoom)||1,position:((fe=re.graph_layout)==null?void 0:fe.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await z({templateId:L,id:O[0].data.childId}),await x(L,_e),console.log("🗑️ [useFlow] Invalidando caché de la plantilla:",L),await _.invalidateQueries({queryKey:["template",L]}),await _.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlow] Caché invalidado exitosamente"),L===(b==null?void 0:b.id)&&j(_e)}catch(re){console.error("❌ onEdgesDelete - Error al actualizar template layout:",re)}},[s,b,g,x,j,z]),E=p.useCallback(async O=>!O.nodes.some(Q=>Q.type==="start"||Q.id===je.START_NODE_ID),[]),q=p.useCallback((O,L,Q)=>{var M,N,K;const F=s.find($=>$.id===L.id);if(!F)return;if(F.type==="group"&&((M=F.data)!=null&&M.isExpanded)){u($=>$.map(Y=>{if(Y.hidden&&Y.target===L.id){const{hidden:se,...oe}=Y;return oe}return Y}));return}let S;if(F.type==="group"?S=b==null?void 0:b.id:(K=(N=L==null?void 0:L.data)==null?void 0:N.plantilla)!=null&&K.id&&(S=L.data.plantilla.id),!S)return;const B=i.map($=>{var oe,le,pe,fe,re;if(ot($))return $;const Y=s.find(ce=>ce.id===$.source),se=s.find(ce=>ce.id===$.target);if(Y&&se){const ce=Y.type==="group"&&((oe=Y.data)==null?void 0:oe.isExpanded),ue=se.type==="group"&&((le=se.data)==null?void 0:le.isExpanded),xe=(pe=Y.data)==null?void 0:pe.isInternal,we=(fe=se.data)==null?void 0:fe.isInternal,he=(re=$.data)==null?void 0:re.redirectedToInternal;if(ce||ue||xe||we||he)return $;if(Y.id===L.id||se.id===L.id||w(Y,se,je.MAGNETIC_CONNECTION_DISTANCE)){const _e=h(Y,se);if(_e!=null&&_e.handle1&&(_e!=null&&_e.handle2))return{...$,sourceHandle:_e.handle1,targetHandle:_e.handle2}}}return $});if(JSON.stringify(i)!==JSON.stringify(B))u(B),setTimeout(()=>{const $=f();m(S,$)},100);else{const $=f();m(S,$)}},[s,i,b,m,f,u,h,w]),ee=p.useCallback(O=>{r(O);const L=ur(O);if(L.length>0){const Q=L.filter(F=>{var B;const S=s.find(M=>M.id===F);return(S==null?void 0:S.type)==="group"&&((B=S==null?void 0:S.data)==null?void 0:B.isExpanded)});if(Q.length>0){u(F=>F.map(S=>{var N;const B=Q.includes(S.target),M=!((N=S.data)!=null&&N.redirectedToInternal);return B&&M?{...S,hidden:!0}:S}));return}c(!0),setTimeout(()=>{const F=i.map(B=>{var K,$,Y,se;if(ot(B))return{...B};const M=s.find(oe=>oe.id===B.source),N=s.find(oe=>oe.id===B.target);if(M&&N){const oe=M.type==="group"&&((K=M.data)==null?void 0:K.isExpanded),le=N.type==="group"&&(($=N.data)==null?void 0:$.isExpanded),pe=(Y=M.data)==null?void 0:Y.isInternal,fe=(se=N.data)==null?void 0:se.isInternal;if(oe||le||pe||fe)return{...B};if(w(M,N,je.MAGNETIC_CONNECTION_DISTANCE)){const re=h(M,N);if(re!=null&&re.handle1&&(re!=null&&re.handle2)&&(B.sourceHandle!==re.handle1||B.targetHandle!==re.handle2))return{...B,sourceHandle:re.handle1,targetHandle:re.handle2}}}return{...B}});if(i.some((B,M)=>{const N=F[M];return B.sourceHandle!==N.sourceHandle||B.targetHandle!==N.targetHandle})){const B=F.map(M=>({...M,id:M.id}));u(B)}setTimeout(()=>{c(!1)},200)},0)}},[r,i,s,u,h,w,c]);return{nodes:s,edges:i,newNodePopup:D,connectionPopup:k,setNodes:n,setEdges:u,onEdgesChange:d,onConnect:ie,onConnectEnd:J,onDeleteNode:te,onEdgesDelete:ae,onBeforeDelete:E,handleNodesChange:ee,onDragEnd:q,getParentNodeInfo:X,isProtectedConnection:ot,isStartNode:Be,createNodeFromPopup:I,updateNodeFromPopup:H,closeNewNodePopup:C,createConnectionFromPopup:A,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(P.List,{children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsxs(P.ListItem,{icon:"ElipsisOutlined",iconColor:r.tarea.dependiente?"blue":"neutral",onClick:()=>i("tarea","dependiente"),children:["Dependiente ",!r.tarea.dependiente&&"(No disponible)"]}),e.jsxs(P.ListItem,{icon:"Plus1Outlined",iconColor:r.tarea.hija?"blue":"neutral",onClick:()=>i("tarea","hija"),children:["Hija ",!r.tarea.hija&&"(No disponible)"]}),e.jsx(P.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),e.jsxs(P.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}=ve(),[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=ve.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=ve.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(ne.Handle,{id:"top-target",type:"target",position:ne.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(ne.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:ne.Position.Right,isConnectable:!l}),e.jsx(ne.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:ne.Position.Bottom,isConnectable:!l}),e.jsx(ne.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:ne.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(P.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(P.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(P.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}=ve(),f=de.useQueryClient(),{getTemplateWithTasks:h}=Ea(),{hydrateTasks:w}=Ia(),m=p.useCallback(async(j,_)=>{var z,D,k,T;try{await f.invalidateQueries({queryKey:["template",_]});const v=await h(_),C=(k=(D=(z=v==null?void 0:v.graph_layout)==null?void 0:z.snapshot)==null?void 0:D.nodes)==null?void 0:k.filter(N=>{var K,$;return((K=N.data)==null?void 0:K.isInternal)||N.parentId||(($=N.id)==null?void 0:$.includes("-internal-"))});if(C&&C.length>0&&console.warn("⚠️ [expandGroup] Nodos sospechosos en API para plantilla",_,":",C),!((T=v==null?void 0:v.graph_layout)!=null&&T.snapshot))throw new Error(`No se encontraron datos de graph_layout en la plantilla: ${_}`);const U=v.graph_layout.snapshot.nodes||[],y=U.filter(N=>{var oe,le;const K=(oe=N.data)==null?void 0:oe.isInternal,$=!!N.parentId,Y=(le=N.id)==null?void 0:le.includes("-internal-"),se=K||$||Y;return se&&console.warn("🗑️ [expandGroup] Filtrando nodo corrupto:",{id:N.id,type:N.type,esInterno:K,tieneParentId:$,tieneInternalEnId:Y}),!se}),X={...v,graph_layout:{...v.graph_layout,snapshot:{...v.graph_layout.snapshot,nodes:y,edges:(v.graph_layout.snapshot.edges||[]).filter(N=>{var K,$;return!((K=N.data)!=null&&K.isInternal)&&!(($=N.id)!=null&&$.includes("-internal-"))})}}},W=U.length-y.length;W>0?console.warn(`⚠️ [expandGroup] Se filtraron ${W} nodos internos corruptos de la BD para plantilla ${_}`):console.log(`✅ [expandGroup] No se encontraron nodos corruptos en plantilla ${_}`);const I=await w(X),A={...X,hydratedNodes:I,nodes:I||X.graph_layout.snapshot.nodes||[],edges:X.graph_layout.snapshot.edges||[]},H=A.nodes,R=A.edges;if(!H||!R){console.error("❌ No se encontraron nodos o edges en la plantilla:",_);return}c(j,{nodes:H,edges:R,viewport:A.graph_layout.snapshot.viewport||{x:0,y:0,zoom:1}});const G=r.current.find(N=>N.id===j);if(!G){console.error("❌ No se encontró el nodo grupo:",j);return}const ie=H.filter(N=>N.id!==j);let J=1/0,te=1/0,ae=-1/0,E=-1/0;ie.forEach(N=>{var re,ce,ue,xe,we,he;const K=((re=N.position)==null?void 0:re.x)||0,$=((ce=N.position)==null?void 0:ce.y)||0,Y=typeof((ue=N.style)==null?void 0:ue.width)=="number"?N.style.width:((xe=N.measured)==null?void 0:xe.width)||268,se=typeof((we=N.style)==null?void 0:we.height)=="number"?N.style.height:((he=N.measured)==null?void 0:he.height)||111,oe=K-Y/2,le=K+Y/2,pe=$,fe=$+se;J=Math.min(J,oe),te=Math.min(te,pe),ae=Math.max(ae,le),E=Math.max(E,fe)});const q=80,ee=60,O=ae-J,L=E-te,Q=O+q*2,F=L+q*2+ee,S=H.map((N,K)=>{var re,ce;if(N.id===j)return null;const $=((re=N.position)==null?void 0:re.x)||0,Y=((ce=N.position)==null?void 0:ce.y)||0,se=$-J+q,oe=Y-te+q+ee,le=N.type==="start"||N.id==="start",pe=le?{...N.data,estatus:G.data.estatus,updatedAt:G.data.updatedAt,createdAt:G.data.createdAt,isInternal:!0,originalGroupId:j,originalNodeId:N.id}:{...N.data,isInternal:!0,originalGroupId:j,originalNodeId:N.id};return{...N,id:`${j}-internal-${N.id}`,parentId:j,extent:"parent",type:N.type==="group"?"main":N.type,position:{x:se,y:oe},style:{...N.style},data:pe,draggable:!1,selectable:le,selected:!1,deletable:!1,connectable:!1,focusable:le,zIndex:999}}).filter(Boolean),B=R.map(N=>{const K=S.some(se=>se&&se.id===`${j}-internal-${N.source}`),$=S.some(se=>se&&se.id===`${j}-internal-${N.target}`);return!K||!$?null:{...N,id:`${j}-internal-${N.id}`,source:`${j}-internal-${N.source}`,target:`${j}-internal-${N.target}`,style:{...N.style},data:{...N.data,isInternal:!0,originalGroupId:j}}}).filter(Boolean),M=S.find(N=>{var K;return N&&((K=N.data)==null?void 0:K.originalNodeId)==="start"});M&&n(N=>N.map(K=>K.target===j?{...K,target:M.id,targetHandle:"top-target",data:{...K.data,redirectedToInternal:!0,originalTarget:j,originalTargetHandle:K.targetHandle}}:K)),l(j),s(N=>[...N.map($=>{if($.id===j){const{needsReExpansion:Y,...se}=$.data||{};return{...$,style:{...$.style,width:Q,height:F},data:{...se,isExpanded:!0,expandedDimensions:{width:Q,height:F}},zIndex:1e3}}return $}),...S]),n(N=>[...N,...B])}catch(v){console.error("❌ Error al expandir el grupo:",v)}},[f,h,w,c,l,s,n]),g=p.useCallback(j=>{var C,U;const _=r.current,z=i.current,D=_.find(y=>y.id===j),k=((C=D==null?void 0:D.data)==null?void 0:C.templateId)||((U=D==null?void 0:D.data)==null?void 0:U.id),T=_.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),v=z.filter(y=>!y.id.startsWith(`${j}-internal-`)).map(y=>{var X,W;if((X=y.data)!=null&&X.redirectedToInternal&&((W=y.data)==null?void 0:W.originalTarget)===j){const{redirectedToInternal:I,originalTarget:A,originalTargetHandle:H,...R}=y.data;return{...y,target:j,targetHandle:H||y.targetHandle,data:R}}return y});s(T),n(v),l(j),u(j),k&&f.invalidateQueries({queryKey:["template",k]})},[s,n,l,u,f]),x=p.useCallback(async(j,_)=>{o.has(j)?g(j):await m(j,_)},[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}=ne.useReactFlow(),{copiedNodes:r,setCopiedNodes:i,getViewMode:o}=ve(),{activeTemplate:d,setActiveTemplate:l}=Me(),{updateGraphLayout:c,get:u,update:f}=Oe(),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(T=>T.selected).filter(T=>!(T.type==="start"||T.id==="start"||T.type==="group")),[t]),g=p.useCallback(()=>{if(h==="readonly"){P.toast.error("No puedes copiar tareas en modo solo lectura");return}if(!d){P.toast.error("No hay una plantilla activa");return}const z=m();if(z.length===0){const k=t().filter(T=>T.selected);if(k.length>0){const T=k.some(C=>C.type==="group"),v=k.some(C=>C.type==="start"||C.id==="start");T?P.toast.error("Las plantillas conectadas no pueden ser copiadas"):v&&P.toast.error("El nodo de inicio no puede ser copiado")}else P.toast.error("No hay tareas seleccionadas para copiar");return}const D=z.map(k=>{const{selected:T,...v}=k;return{...v,data:{...v.data,_originalTemplateId:d.id}}});i(D),P.toast.success(`${z.length} ${z.length===1?"tarea copiada":"tareas copiadas"} con éxito`)},[h,d,m,t,i]),x=p.useCallback(async z=>{if(h==="readonly"){P.toast.error("No puedes pegar tareas en modo solo lectura");return}if(!d){P.toast.error("No hay una plantilla activa");return}if(r.length===0){P.toast.error("No hay tareas copiadas para pegar");return}const D=t();let k={x:0,y:0};if(z)k=s({x:z.x,y:z.y});else if(D.length>0){const W=D.reduce((A,H)=>A+H.position.x,0)/D.length,I=D.reduce((A,H)=>A+H.position.y,0)/D.length;k={x:W+50,y:I+100}}const T=r[0],v=k.x-T.position.x,C=k.y-T.position.y,U=r.map((W,I)=>{const A=w(),H=-(Date.now()+I),R=W.data.plantilla&&typeof W.data.plantilla=="object"?{...W.data.plantilla,id:d.id}:{id:d.id},{id:G,...ie}=W.data,J={...ie,id:H,reference_graph:A,plantilla:R,parent:{data:{id:null}},_originalTemplateId:void 0};return{...W,id:A,position:{x:W.position.x+v,y:W.position.y+C},data:J,selected:!0}}),X=[...D.map(W=>({...W,selected:!1})),...U];if(a(X),d.id)try{const W=await u(d.id);if(!W)return;const I=U.filter(H=>H.type!=="start"&&H.type!=="group").map(H=>{const R=H.data;return{id:R.id,reference_graph:H.id,nombre:R.nombre||R.texto_corto||"Tarea sin nombre",texto_corto:R.texto_corto||"",texto_largo:R.texto_largo||"",prioridad:R.prioridad??0,nivel_dificultad:R.nivel_dificultad??0,dias_duracion:R.dias_duracion??0,plantilla:{id:d.id},parent:{data:{id:null}},tareas:[],plantilla_dependents:R.plantilla_dependents||[],start:R.start||!1,es_grupo:R.es_grupo||!1,optional:R.optional||!1,subtask_completadas:R.subtask_completadas||0,subtask_totales:R.subtask_totales||0}}),A={...W,tarea_plantillas:[...W.tarea_plantillas,...I],estatus:"dirty",updatedAt:new Date().toISOString()};await f(d.id,A),l(A),setTimeout(async()=>{await c(d.id,{nodes:X,edges:[]})},50)}catch(W){console.error("Error al actualizar template en IndexedDB:",W)}if(U.length>0){const W=U.reduce((A,H)=>A+H.position.x,0)/U.length,I=U.reduce((A,H)=>A+H.position.y,0)/U.length;n(W,I,{zoom:1,duration:800})}P.toast.success(`${U.length} ${U.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]),_=m().length>0;return{handleCopy:g,handlePaste:x,hasCopiedNodes:b,hasSelectableNodes:_,copiedNodesCount:r.length}},Tr={main:wr,plus:mr,start:gr,group:vr},Cr=[.5,0],Er=({initialNodes:t,initialEdges:a,debugEvents:s=!1})=>{const n=p.useRef(null),{nodes:r,edges:i,onEdgesChange:o,onConnect:d,onConnectEnd:l,onBeforeDelete:c,onDeleteNode:u,onEdgesDelete:f,handleNodesChange:h,newNodePopup:w,getParentNodeInfo:m,createNodeFromPopup:g,closeNewNodePopup:x,connectionPopup:b,createConnectionFromPopup:j,closeConnectionPopup:_,onDragEnd:z,setNodes:D,setEdges:k}=yr({initialNodes:t,initialEdges:a}),{expandGroup:T,collapseGroup:v}=_r(r,i,D,k),{handleCopy:C,handlePaste:U,hasCopiedNodes:y,copiedNodesCount:X}=Nr();p.useEffect(()=>{if(!s)return;const re=we=>{console.log("🔍 [DEBUG] KeyDown:",{key:we.key,code:we.code,shiftKey:we.shiftKey,ctrlKey:we.ctrlKey,metaKey:we.metaKey,altKey:we.altKey,target:we.target,defaultPrevented:we.defaultPrevented,bubbles:we.bubbles,timestamp:new Date().toISOString()})},ce=we=>{console.log("🔍 [DEBUG] KeyUp:",{key:we.key,code:we.code,shiftKey:we.shiftKey,timestamp:new Date().toISOString()})},ue=we=>{var he,Ce;console.log("🔍 [DEBUG] Click:",{button:we.button,shiftKey:we.shiftKey,ctrlKey:we.ctrlKey,metaKey:we.metaKey,altKey:we.altKey,target:(he=we.target)==null?void 0:he.tagName,targetClass:(Ce=we.target)==null?void 0:Ce.className,defaultPrevented:we.defaultPrevented,bubbles:we.bubbles,timestamp:new Date().toISOString()})},xe=we=>{console.log("🔍 [DEBUG] MouseDown:",{button:we.button,shiftKey:we.shiftKey,ctrlKey:we.ctrlKey,metaKey:we.metaKey,defaultPrevented:we.defaultPrevented,timestamp:new Date().toISOString()})};return document.addEventListener("keydown",re,!0),document.addEventListener("keyup",ce,!0),document.addEventListener("click",ue,!0),document.addEventListener("mousedown",xe,!0),console.log("🔍 [DEBUG] Event listeners activados. Presiona Shift + Click en un nodo para ver los eventos."),()=>{document.removeEventListener("keydown",re,!0),document.removeEventListener("keyup",ce,!0),document.removeEventListener("click",ue,!0),document.removeEventListener("mousedown",xe,!0),console.log("🔍 [DEBUG] Event listeners desactivados.")}},[s]);const I=r.filter(re=>!(!re.selected||re.type==="start"||re.id==="start"||re.type==="group")).length,A=I>0,H=p.useRef(T),R=p.useRef(v);p.useEffect(()=>{H.current=T,R.current=v},[T,v]),p.useEffect(()=>{const re=async(ue,xe)=>{H.current&&await H.current(ue,xe)},ce=ue=>{R.current&&R.current(ue)};ve.setState({expandGroup:re,collapseGroup:ce})},[]);const{zoomPercentage:G,handleZoomIn:ie,handleZoomOut:J,handleZoomTo100:te,handleDoubleClick:ae}=xr({reactFlowWrapper:n,nodes:r}),{getViewMode:E}=ve(),{activeTemplate:q}=Me(),O=(q!=null&&q.id?E(q.id):"readonly")==="readonly";p.useEffect(()=>{if(O)return;const re=ce=>{const ue=ce.target;ue.tagName==="INPUT"||ue.tagName==="TEXTAREA"||ue.isContentEditable||((ce.ctrlKey||ce.metaKey)&&ce.key==="c"&&(ce.preventDefault(),C()),(ce.ctrlKey||ce.metaKey)&&ce.key==="v"&&(ce.preventDefault(),U()))};return document.addEventListener("keydown",re),()=>{document.removeEventListener("keydown",re)}},[C,U,O]);const L=p.useCallback((re,ce)=>{const ue=re.target;ue.tagName==="BUTTON"||ue.closest("button")||ue.closest('[role="button"]')||ue.classList.contains("nopan")||ue.classList.contains("nodrag")},[]),Q=p.useCallback(re=>{const ce=re.filter(ue=>{var xe,we;if(ue.type==="position"&&ue.dragging===!1){const he=r.find(Ce=>Ce.id===ue.id);if(he&&ue.position){const Ce=Math.abs((ue.position.x||0)-(((xe=he.position)==null?void 0:xe.x)||0)),_e=Math.abs((ue.position.y||0)-(((we=he.position)==null?void 0:we.y)||0));if(Ce<3&&_e<3)return!1}}return!0});ce.length>0&&h(ce)},[h,r]),F=O?void 0:o,S=O?void 0:Q,B=O?void 0:d,M=O?void 0:l,N=O?void 0:c,K=O?void 0:z,$=O?void 0:u,Y=O?void 0:f,se=O?null:["Backspace","Delete"],pe=O?{nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,nodesFocusable:!1,draggable:!1,connectOnClick:!1,zoomOnPinch:!1}:{nodesDraggable:!0,nodesConnectable:!0,elementsSelectable:!0,edgesFocusable:!0,nodesFocusable:!0,draggable:!1,connectOnClick:!0,elevateNodesOnSelect:!0},fe=()=>{if(b)return{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}}};return e.jsxs("div",{className:"wrapper",ref:n,style:{width:"100%",height:"100vh"},children:[e.jsxs(ne.ReactFlow,{nodes:r,edges:i,nodeTypes:Tr,onEdgesChange:F,onNodesChange:S,onConnect:B,onConnectEnd:M,onBeforeDelete:N,onNodeDragStop:K,onNodesDelete:$,onEdgesDelete:Y,onNodeClick:L,...pe,fitView:!0,fitViewOptions:{padding:2},nodeOrigin:Cr,defaultEdgeOptions:{type:"smoothstep"},connectionLineType:ne.ConnectionLineType.SmoothStep,deleteKeyCode:se,multiSelectionKeyCode:O?null:"Shift",selectionOnDrag:!1,panOnDrag:O?!0:[2],nodeClickDistance:15,selectNodesOnDrag:!1,nodeDragThreshold:10,autoPanOnNodeDrag:!1,autoPanOnConnect:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",children:[e.jsx(ne.Background,{}),!O&&e.jsx(ne.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(ne.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:[q.estatusFromStrapi===ke.PUBLISHED&&e.jsx(P.Tag,{color:"green",variant:"outlined",borderable:!1,label:"Publicado",size:"lg",rounded:!0,badgeColor:"green"}),q.estatusFromStrapi===ke.DRAFT&&e.jsx(P.Tag,{color:"neutral",variant:"outlined",borderable:!1,label:"Borrador",size:"lg",rounded:!0})]}),!O&&I>0&&e.jsxs("p",{className:"tw-text-blue-dark-500 ui-text-xs tw-font-medium",children:[I," ",I===1?"tarea seleccionada":"tareas seleccionadas"]})]})}),e.jsx(ne.Panel,{position:"top-right",className:"tw-m-0",children:e.jsxs("div",{className:"tw-flex tw-gap-2",children:[!O&&e.jsxs(P.ButtonGroup,{children:[e.jsxs(P.Button,{icon:"CopyOutlined",onClick:C,disabled:!A,variant:A?"button":"outlined",color:A?"blue-dark":"neutral",title:A?`Copiar ${I} ${I===1?"tarea":"tareas"} (Ctrl+C)`:"Selecciona tareas para copiar (mantén Shift y haz clic)",children:["Copiar ",I>0&&`(${I})`]}),e.jsxs(P.Button,{icon:"DocumentOutlined",onClick:()=>U(),disabled:!y(),variant:"outlined",color:"neutral",title:y()?`Pegar ${X} ${X===1?"tarea":"tareas"} (Ctrl+V)`:"No hay tareas copiadas",children:["Pegar ",X>0&&`(${X})`]})]}),e.jsxs(P.ButtonGroup,{color:"white",variant:"outlined",children:[e.jsx(P.Button,{icon:"Minus2Outlined",onClick:J}),e.jsxs(P.Button,{onClick:te,onDoubleClick:ae,children:[G,"%"]}),e.jsx(P.Button,{icon:"Plus1Outlined",onClick:ie})]})]})})]}),w&&e.jsx(fr,{isOpen:w.isOpen,position:w.position,onClose:x,createNodeFromPopup:g,parentNodeInfo:m()}),b&&e.jsx(jr,{isOpen:b.isOpen,onClose:_,createConnectionFromPopup:j,availableConnections:fe()})]})},Sr=({initialNodes:t,initialEdges:a,debugEvents:s})=>e.jsx(ne.ReactFlowProvider,{children:e.jsx(Er,{initialNodes:t,initialEdges:a,debugEvents:s})}),Ve=Le.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 Nt(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}=Ie(),{tasks_api:w}=me(),m=Ve(E=>E.step),{data:g,error:x,isSuccess:b,isError:j}=de.useQuery({queryKey:["paramsTipoPlantilla"],queryFn:async()=>{const E=Ae.stringify({populate:{params_plantillas:{fields:["id","abbreviation","name","active","tipomedio_nombre","reference_id"]}},sort:["order:asc"],fields:["id","step","key","label","order"]},{encodeValuesOnly:!0}),q=await w.get(`/api/params-tipos?${E}`);return q.data?{paramsTiposPlantilla:be(q.data.data)}:{paramsTiposPlantilla:[]}}});p.useEffect(()=>{x&&j&&console.log(x)},[x,j]),p.useEffect(()=>{if(g&&b){const E=g.paramsTiposPlantilla;s(E)}},[g,b]);const _={fase_plantilla:(E,q)=>{d({fase_plantilla:E}),h({fase_plantilla:q})},tipo_plantilla:(E,q)=>{d({tipo_plantilla:E}),h({tipo_plantilla:q})},modo_configuracion:(E,q)=>{d({modo_configuracion:E}),h({modo_configuracion:q})},categoria:(E,q)=>{d({categoria:E}),h({categoria:q})},formato_salida:(E,q)=>{d({formato_salida:E}),h({formato_salida:q})},tipo_medio:(E,q)=>{d({tipo_medio:E}),h({tipo_medio:q})},medio_especifico:(E,q)=>{d({medio_especifico:E}),h({medio_especifico:q})},responsable_impresion:(E,q)=>{d({responsable_impresion:E}),h({responsable_impresion:q})},pertenencia_medio:(E,q)=>{d({pertenencia_medio:E}),h({pertenencia_medio:q})},ubicacion_medio:(E,q)=>{d({ubicacion_medio:E}),h({ubicacion_medio:q})}},z={fase_plantilla:(E,q)=>i({field:E,value:q}),tipo_plantilla:(E,q)=>i({field:E,value:q}),categoria:(E,q)=>i({field:E,value:q}),tipo_medio:(E,q)=>i({field:E,value:q}),medio_especifico:(E,q)=>i({field:E,value:q}),responsable_impresion:(E,q)=>i({field:E,value:q}),pertenencia_medio:(E,q)=>i({field:E,value:q}),ubicacion_medio:(E,q)=>i({field:E,value:q})},D={Digital:{execute:()=>{const E=a.filter(O=>O.step===3).find(O=>O.key==="responsable_impresion").params_plantillas.find(O=>O.name==="N/A").id,q="step3.responsable_impresion",ee=["responsable_impresion"];d({responsable_impresion:"N/A"}),t(q,E),c({fields:ee,value:!0}),i({field:"responsable_impresion",value:"NA"})}},Impreso:{execute:()=>{const E="step3.responsable_impresion",q=["responsable_impresion"];d({responsable_impresion:""}),t(E,""),c({fields:q,value:!1}),i({field:"responsable_impresion",value:""})}}},k={"Sitios Fijos":{execute:()=>X()},"Vallas Móviles":{execute:()=>W()},Indoors:{execute:()=>X()},Camiones:{execute:()=>I()},"Brand Riders":{execute:()=>I()}},T={"Sitios Fijos":{execute:()=>y()},"Vallas Móviles":{execute:()=>y()},Indoors:{execute:()=>y()},Camiones:{execute:()=>{U(),D.Impreso.execute()}},"Brand Riders":{execute:()=>{U(),D.Impreso.execute()}}},v={"Sitios Fijos":{execute:()=>C()},"Vallas Móviles":{execute:()=>U()},Indoors:{execute:()=>C()},Camiones:{execute:()=>U()},"Brand Riders":{execute:()=>U()}},C=()=>{const E=["medio_especifico"],q=o.modo_configuracion,ee=`step${m}.medio_especifico`,O=`step${m}.formato_salida`;c(q==="Default"?{fields:E,value:!0}:{fields:E,value:!1}),d({medio_especifico:""}),d({formato_salida:""}),t(ee,""),t(O,""),i({field:"medio_especifico",value:""}),i({field:"formato_salida",value:""})},U=()=>{const E=a.filter(L=>L.step===m).find(L=>L.key==="formato_salida").params_plantillas.find(L=>L.name==="Impreso").id,q=`step${m}.formato_salida`,ee=["formato_salida","medio_especifico"],O=`step${m}.medio_especifico`;d({medio_especifico:""}),d({formato_salida:"Impreso"}),t(q,E),t(O,""),i({field:"medio_especifico",value:""}),i({field:"tipo_medio",value:o.tipo_medio}),c({fields:ee,value:!0})},y=()=>{const E=["formato_salida"],q=`step${m}.formato_salida`,ee={};ee.formato_salida="",d(ee),t(q,""),c({fields:E,value:!1})},X=()=>{const E=["formato_salida","medio_especifico"],q=`step${m}.formato_salida`,ee={};ee.formato_salida="",d(ee),t(q,""),c({fields:E,value:!1})},W=()=>{const E=["formato_salida"],q=["medio_especifico"],ee=`step${m}.formato_salida`,O=`step${m}.medio_especifico`,L={};L.formato_salida="",L.medio_especifico="",d(L),t(ee,""),t(O,""),c({fields:E,value:!1}),c({fields:q,value:!0})},I=()=>{const E=a.filter(L=>L.step===m).find(L=>L.key==="formato_salida").params_plantillas.find(L=>L.name==="Impreso").id,q=`step${m}.formato_salida`,ee=`step${m}.medio_especifico`,O=["formato_salida","medio_especifico"];d({formato_salida:"Impreso"}),t(q,E),t(ee,""),c({fields:O,value:!0}),D.Impreso.execute()},A=(E,q)=>{Object.keys(Bt).includes(E)&&Bt[E][q].fieldsToClear.forEach(L=>{const Q={};Q[L]="",d(Q),i({field:L,value:""}),t&&[...new Set(a.map(S=>S.step))].forEach(S=>{const B=`step${S}.${L}`;t(B,"")})})},H=(E,q,ee)=>E==="modo_configuracion"&&ee?Ht[E][ee][q].fieldsToEnableDisable:Ht[E][q].fieldsToEnableDisable,R=E=>a.filter(q=>q.step===E),G=E=>{var q;return n[E]||((q=a.find(ee=>ee.key===E))==null?void 0:q.params_plantillas)},ie=E=>{var ee,O,L;let q=[];E==="Sitios fijos"?q=(ee=a.find(Q=>Q.key==="medio_especifico"))==null?void 0:ee.params_plantillas.filter(Q=>Q.tipomedio_nombre==="OOH"):E==="Indoors"?q=(O=a.find(Q=>Q.key==="medio_especifico"))==null?void 0:O.params_plantillas.filter(Q=>Q.tipomedio_nombre==="InDoor"):q=(L=a.find(Q=>Q.key==="medio_especifico"))==null?void 0:L.params_plantillas,r(Q=>({...Q,medio_especifico:q}))},J=(E,q)=>{const ee=E.key;if($t.includes(ee)&&ee==="tipo_medio"){const O=q.label,L=o.fase_plantilla,Q=o.modo_configuracion;if(L==="Preventa"){ie(O);return}else if(Q==="Especifico"){ie(O);return}}},te=(E,q,ee)=>{const O=E.params_plantillas.find(L=>E.key==="categoria"?L.reference_id===q.value:L.id===q.value);if(O){const L=E.key,Q=q.label;if(_[L](Q,ee),zt.includes(L))if(A(L,Q),L==="fase_plantilla"){const S=H(L,Q);c({fields:["categoria","modo_configuracion","tipo_plantilla"],value:!0}),S.length>0&&c({fields:S,value:!1})}else if(L==="modo_configuracion"){const F=Q,S=o.fase_plantilla,B=H(L,F,S);c({fields:["medio_especifico","formato_salida"],value:!0}),B.length>0&&c({fields:B,value:!1})}else if(L==="tipo_medio"){const F=Q,S=o.modo_configuracion;o.fase_plantilla==="Venta"?S==="Especifico"?k[F].execute():T[F].execute():S==="Especifico"&&v[F].execute()}else if(L==="formato_salida")D[Q].execute();else{const F=H(L,Q);F.length>0&&c({fields:F,value:!1})}if(Rt.includes(L)){let F="",S="";if(L==="formato_salida"){const B=o.modo_configuracion,M=Q;S="tipo_medio",F=B==="Default"&&M==="Digital"?F="DDG":F="DRP"}else S=L,F=O.abbreviation;z[S](S,F)}$t.includes(L)&&J(E,q)}},ae=()=>{if(o){const E=o.fase_plantilla;if(E==="Preventa"){const q=o.modo_configuracion,ee=f.fase_plantilla||"XX";let O=null;if(q==="Default")O=f.tipo_medio||"XXX";else{const Q=o.tipo_medio;["Vallas Móviles","Camiones","Brand Riders"].includes(Q)?O=f.tipo_medio||"XXX":O=f.medio_especifico||"XXX"}const L=`${ee}-${O}`;u(L)}if(E==="Venta"){const q=f.fase_plantilla||"XX",ee=f.tipo_plantilla||"XXX",O=f.categoria||"XX",L=f.medio_especifico||f.tipo_medio||f.modo_configuracion||"XXX",Q=f.responsable_impresion||"XX",F=f.pertenencia_medio||"X",S=f.ubicacion_medio||"X",B=`${q}-${ee}-${O}-${L}-${Q}-${F}-${S}`;u(B)}}};return p.useEffect(()=>{ae()},[f]),{templateFields:a,getFieldsByStep:R,dropdownFunctionsUpdateClave:z,fieldsForUpdateClave:Rt,resetTemplateFormData:l,fieldsWithDisableTrigger:zt,getFieldsToDisable:H,handleOptionSelected:te,getFilteredOptions:G,dropdownFunctionsUpdateFormData:_}}const Tt=()=>{const{control:t,setValue:a}=Ne.useFormContext(),s=Ve(c=>c.step),{getFieldsByStep:n,handleOptionSelected:r,getFilteredOptions:i}=Nt(a),{disabledFields:o}=Ie(),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(Ne.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(P.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(Tt,{})}),Dr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Tt,{})}),Fr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Tt,{})}),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 Lr(t,a){const{clave:s,paramsTipo:n,currentTemplateForEdit:r,isEditTemplate:i,setDisableField:o,setClaveParams:d,isDuplicateTemplate:l,templateFormData:c}=Ie(),{tasks_api:u}=me(),{getFieldsByStep:f,dropdownFunctionsUpdateFormData:h,templateFields:w}=Nt(),m=()=>{var D;try{const k={},T=t(),v=Ar(T),{step1:C}=v,U=[];k.clave=s,C.categoria!=""&&(k.categoria=C.categoria);for(const[y,X]of Object.entries(v))for(const[W,I]of Object.entries(X)){const A={id:null,params_tipo:{id:null}};if(I!=""){const H=n[W];if(W==="categoria"){const R=w.find(ie=>ie.key==="categoria"),G=(D=R==null?void 0:R.params_plantillas)==null?void 0:D.find(ie=>ie.reference_id===I);A.id=G==null?void 0:G.id}else A.id=I;A.params_tipo.id=H,U.push(A)}}return Object.keys(U).length>0&&(k.params_plantillas=U),k}catch(k){console.log(k)}},g=async D=>{var k;try{let T=null;return i?T=await u.put(`/api/plantillas/${r.id}`,{data:D}):T=await u.post("/api/plantillas",{data:D}),T.data?be(T.data):null}catch(T){throw console.error("Error en saveTemplateToStrapi:",{error:T.message,status:(k=T.response)==null?void 0:k.status}),T}},x=async D=>{var k;try{const T=Ae.stringify({filters:{plantilla:{id:D}}},{encodeValuesOnly:!0}),v=await u.get(`/api/plantillas/plantilla-tareas-grafico?${T}`);return v.data?be(v.data.data):null}catch(T){throw console.error("Error en getTemplateWithTasks:",{error:T.message,status:(k=T.response)==null?void 0:k.status}),T}},b=async()=>{try{let D=m();const k=await g(D);if(!k)return{success:!1,message:"No se pudo guardar el flujo de trabajo en Strapi",error:"templateData es null"};const T=await x(k.id);return T?{success:!0,message:"Flujo de trabajo creado y sincronizado completamente",data:T}:{success:!1,message:"No se pudieron obtener los datos completos del flujo de trabajo",error:"completeData es null"}}catch(D){const{response:{data:k}}=D,T=Or(k.error);return console.error("Error al guardar el flujo de trabajo: ",{level:T.failureLevel,message:T.errorMessage,technicalDetails:T.technicalDetails}),{success:!1,message:T.errorMessage,error:T.technicalDetails}}},j=()=>{const{params_plantillas:D}=r;let k={};[1,2,3].forEach(v=>{const C=`step${v}`;k[C]={},f(v).forEach(y=>{var W;const X=D.find(I=>I.params_tipo.key===y.key);if(X){let I=null;if(y.key==="categoria"){const A=(W=y.params_plantillas)==null?void 0:W.find(H=>H.id===X.id);I=(A==null?void 0:A.reference_id)||X.id}else I=X.id;k[C][y.key]=I}})}),a(k)},_=()=>{const{params_plantillas:D}=r;for(const k of D){const{params_tipo:{id:T,key:v},name:C,id:U}=k,y=w.find(X=>X.key===v).params_plantillas.find(X=>X.id===U);h[v](C,T),y&&d({field:v,value:y.abbreviation})}},z=()=>{try{const{fase_plantilla:D,modo_configuracion:k,formato_salida:T,tipo_medio:v}=c;if(D==="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(v)||o({fields:["formato_salida","medio_especifico"],value:!0}),T==="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(v)&&o({fields:["formato_salida","medio_especifico"],value:!1}),["Vallas Móviles"].includes(v)&&(o({fields:["formato_salida"],value:!1}),o({fields:["medio_especifico"],value:!0})),["Camiones","Brand Riders"].includes(v)&&o({fields:["formato_salida","medio_especifico"],value:!0}),T==="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 C=["formato_salida","medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"];o({fields:["tipo_medio"],value:!1}),o({fields:C,value:!0})}else["Sitios Fijos","Indoors"].includes(v)?(o({fields:["formato_salida"],value:!0}),o({fields:["medio_especifico"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!0})}catch(D){console.error("Error al aplicar reglas de habilitar y deshabilitar campos",D)}};return p.useEffect(()=>{(i||l)&&r&&(j(),_())},[i,l]),p.useEffect(()=>{(i||l)&&c&&z()},[i,c,l]),{savePlantilla:b,getTemplateWithTasks:x}}const qr=()=>{const{watch:t,getValues:a}=Ne.useFormContext(),{templateFormData:s,isDuplicateTemplate:n,currentTemplateForEdit:r}=Ie(),[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}=qr(),{setHasFormChanges:n}=Ie();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(ee=>ee.reset),{templateFields:d,resetTemplateFormData:l}=Nt(),{clave:c,resetClave:u,resetDisabledFields:f,isEditTemplate:h,setIsEditTemplate:w,refetch:m,isDuplicateTemplate:g,hasFormChanges:x,setIsDuplicateTemplate:b}=Ie(),{openTemplate:j}=Oe(),[_,z]=p.useState(!1),[D,k]=p.useState(""),[T,v]=p.useState(!1),C=p.useRef(null),U=ee=>{C.current=ee},y=Mr(d),X=s===1,W=s===3,I=X?"Cancelar":"Atrás";p.useEffect(()=>{t&&o()},[t,o]);const A=Ne.useForm({mode:"onChange",defaultValues:y}),{trigger:H,reset:R,clearErrors:G,getValues:ie}=A,{savePlantilla:J}=Lr(ie,R),te=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."),v(!0);return}try{z(!0);const O=await J();if(O.success){const L=O.data;if(q(),E(),v(!1),!h)try{await j({template:L,statusTemplate:ye.NEW})}catch(Q){console.warn("La plantilla se creó exitosamente pero hubo un problema al abrirla:",Q)}m()}else{const{error:L}=O;k(L),v(!0)}}catch(O){console.error("Error inesperado al guardar la plantilla:",O);return}finally{z(!1)}}n()}},ae=()=>{k(""),v(!1)},E=()=>{G(),R(),l(),f(),u(),ae(),h&&w(!1),g&&b(!1),C.current&&C.current()},q=()=>{E(),a()};return _?e.jsx(Ye,{isLoading:_}):e.jsxs(Ne.FormProvider,{...A,children:[e.jsx(Rr,{onReset:U}),e.jsx(P.Modal,{isOpen:t,closeAtCancel:!1,onSuccess:te,cancelButtonText:I,successButtonText:W?h?"Guardar":"Crear":"Continuar",onCancel:X?q:r,onClose:q,size:"sm",icon:"PlantillaOutlined",title:h?"Editar flujo de trabajo":"Nuevo flujo de trabajo",children:e.jsxs(P.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(P.Stepper,{currentStep:s-1,onStepChange:ee=>i(ee+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:[T&&e.jsx(P.Alert,{open:!0,variant:"outlined",color:"red",message:D,className:"tw-mb-6",onClose:ae}),e.jsx(Pr,{step:s})]})]})})]})},$r=({isOpen:t,onClose:a,replaceTemplate:s})=>e.jsx(e.Fragment,{children:e.jsx(P.Modal,{isOpen:t,closeAtCancel:!1,cancelButtonText:"Cancelar",successButtonText:"Abrir",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ExclamationTriangleOutlined",title:"Límite de flujos de trabajo",children:e.jsx(P.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(P.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=Le.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(P.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(P.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(P.Icon,{name:"SaveOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-flex tw-flex-col tw-mx-6",children:e.jsx(P.Alert,{open:!0,variant:"outlined",color:"red",showCloseButton:!1,message:"Tienes cambios sin guardar en este flujo de trabajo",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(P.Button,{variant:"outlined",color:"white",onClick:()=>{s(),a()},children:"Descartar cambios"})})]})})})}),Ra=({isOpen:t,onClose:a,publishTemplate:s})=>e.jsx(P.Modal,{isOpen:t,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Confirmar",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ArrowUpOutlined",title:"Publicar",children:e.jsx(P.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(P.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}=Ie(),{removeTemplateStates:f}=Xe(),{mode:h,setMode:w,setViewMode:m,getViewMode:g}=ve(),{setCanCreateTemplate:x,canCreateTemplate:b}=Br(),j=h===t,{screens:_,get:z,delete:D,activeTemplate:k,activateTemplate:T,reorderingTemplates:v,replaceTemplate:C,saveTemplateChanges:U,publishTemplate:y,loadingPublishTemplate:X,loadingSaveChanges:W}=Oe(),I=178,[A,H]=p.useState([]),[R,G]=p.useState([]),[ie,J]=p.useState(null),[te,ae]=p.useState(!1),E=k!=null&&k.id?g(k.id):"readonly";p.useEffect(()=>{const $=()=>{if(!s.current)return;const se=s.current.offsetWidth;let oe=0;const le=[],pe=[],fe=10,re=s.current.querySelector("button:not([data-screen])"),ce=s.current.querySelector(".tw-mx-1");let ue=0;re&&(ue+=re.getBoundingClientRect().width),ce&&_.length>0&&(ue+=ce.getBoundingClientRect().width,ue+=fe);const xe=(he,Ce)=>{const Qe=Ce?54:0,at=(he==null?void 0:he.length)*8;return Math.max(80,at+40+Qe)},we=se-I-ue;_.forEach((he,Ce)=>{const _e=!!(he.isNew||he.badgeLabel),Se=xe(he.clave,_e),Fe=Ce>0?fe:0,Qe=Se+Fe;oe+Qe<=we?(le.push(he),oe+=Qe):pe.push(he)}),H(le),G(pe)},Y=()=>{const se=_.length;x(se)};return _.length>0&&($(),Y(),window.addEventListener("resize",$)),()=>{window.removeEventListener("resize",$)}},[_,h]);const q=$=>$.estatus===ye.DIRTY||$.estatus===ye.NEW,ee=async $=>{q($)?(J($.id),d(!0)):await D($.id)},O=()=>u(!0),L=async()=>{await D(ie),await f(ie)},Q=async()=>{await U(!1)},F=async()=>{await U()},S=()=>{var Y,se;const $=(se=(Y=k==null?void 0:k.graph_layout)==null?void 0:Y.snapshot)==null?void 0:se.nodes.length;ae(()=>$-1>=1)};p.useEffect(()=>{S()},[k,E]);const B=()=>!((k==null?void 0:k.estatus)==ye.IDLE&&te&&k.estatusFromStrapi!==ke.PUBLISHED),M=()=>{var Y;const{nodes:$}=(Y=k==null?void 0:k.graph_layout)==null?void 0:Y.snapshot;return $==null?void 0:$.some(se=>se.type!=="start"&&(se==null?void 0:se.data.tarea_padre)===null&&(se==null?void 0:se.data.id_t_requerida)===null)},N=()=>(k==null?void 0:k.estatus)===ye.IDLE||M()?!0:!te,K=async()=>{await y(k.id)};return W||X?e.jsx(Ye,{isLoading:W||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:C}),e.jsx(Hr,{isOpen:l,onClose:()=>d(!1),discardChanges:L,saveAndExit:F}),e.jsx(Ra,{isOpen:c,onClose:()=>u(!1),publishTemplate:K}),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(P.Button,{variant:j?"button":"outlined",color:j?"blue":"white",onClick:()=>w(t),children:"Listado de flujos"}),_.length>0&&e.jsx(P.Separator,{vertical:!0,className:"tw-mx-1"}),_.filter($=>A.some(Y=>Y.clave===$.clave)).map($=>{const Y=(k==null?void 0:k.clave)===$.clave&&h===a;return e.jsxs(P.Button,{"data-screen":$.clave,variant:Y?"button":"outlined",onClick:async()=>{await T($),w(a,$.id)},color:Y?"blue":"white",slotLeft:"TaskOutlined",badgeColor:q($)?"orange":void 0,onClickRightSlot:()=>ee($),slotRight:"X2Outlined",children:[$.clave," ",$.status]},$.id)})]}),R.length>0&&e.jsx(P.Popup,{absolute:!0,slotRight:"AngleDownOutlined",label:`${R.length}+`,size:"lg",textColor:"blue",children:e.jsx("div",{className:"ui-py-2 ui-min-w-[250px]",children:e.jsx(P.List,{icon:"TaskOutlined",items:R.map($=>({id:$.id,label:$.clave})),onClick:async $=>{const Y=await z($.id);await v(Y.id),await T(Y),w("create-edit",Y.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!==ke.PUBLISHED&&e.jsxs(e.Fragment,{children:[e.jsx(P.Button,{color:"green",variant:"outlined",slotLeft:"ArrowUpOutlined",disabled:B(),onClick:O,children:"Publicar"}),E=="readonly"&&e.jsx(P.Button,{slotLeft:"EditOutlined",onClick:()=>(k==null?void 0:k.id)&&m(k.id,"edit"),children:"Editar"}),E==="edit"&&e.jsx(P.Button,{slotLeft:"SaveOutlined",onClick:Q,disabled:N(),children:"Guardar"})]})}):e.jsx(P.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:"Nuevo flujo"})]})},Wr=({isOpen:t,onClose:a,deleteTemplate:s})=>e.jsx(P.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:""}),Kr=()=>{const{viewMode:t,setRefetch:a,openModalPublishTemplate:s,setOpenModalPublishTemplate:n,currentTemplateId:r,setOpenModalDeleteTemplate:i,openModalDeleteTemplate:o}=Ie(),{publishTemplate:d,deleteTemplate:l}=Oe(),{debouncedSearch:c,filters:u}=Ln("templates-container"),f=t==="list",[h,w]=p.useState(1),m=5,{data:g,isLoading:x,isFetching:b,refetch:j}=La({page:h,pageSize:m,search:c,filters:u});p.useEffect(()=>{a(j)},[]),p.useEffect(()=>{w(1)},[u,c]);const{users:_}=Ge(),{getImageOBP:z}=me(),D=C=>{if(!(C!=null&&C.email))return"";const U=_==null?void 0:_[C==null?void 0:C.email];return U!=null&&U.image?z(U==null?void 0:U.image):""},k=p.useMemo(()=>{try{return!g||!_?[]:g.data.map(C=>{const U=D((C==null?void 0:C.updated_by)||(C==null?void 0:C.created_by));return{...C,updated_by:{...C.updated_by,image:U}}})}catch(C){return console.error("Error al mapear las plantillas:",C),[]}},[g,_]),T=async()=>{await d(r),await j()},v=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:T}),e.jsx(Wr,{isOpen:o,onClose:()=>i(!1),deleteTemplate:v}),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(C=>e.jsx(Pa,{fullWidth:f,template:C},C.id))}),e.jsx("div",{children:e.jsx(P.Pagination,{pageSize:m,pageCount:g==null?void 0:g.meta.pagination.pageCount,currentPage:h,onPageChange:C=>w(C)})})]})},za=()=>{var o,d,l,c;const t="grid",a="create-edit",{mode:s}=ve(),n=s===t,r=s===a,i=Me(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(Kr,{}),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)||[]})]})},Gr=()=>({header:e.jsx(Kn,{}),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(Z.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}=Ke();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(Z.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}=De(),[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 v;l(c==="lista-campanias"?"lista":c==="kanban-campania"?"kanban":c==="teams-container"?"teams":c==="templates-container"?"templates":"kanban"),s(c),x(((v=w.find(C=>C.path===c))==null?void 0:v.search)??"")},[t,c]),p.useEffect(()=>{var v;((v=k())==null?void 0:v.trim())===""&&n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:null}),r()},[w]);const j=v=>({"kanban-general":"Kanban General","lista-campanias":"Campanias","teams-container":"Equipos","kanban-campania":`Kanban de ${f.project}`,"templates-container":"Flujos de trabajo"})[v],_=v=>{u(v)},z=["lista-campanias","kanban-campania"],D={"lista-campanias":["lista","gantt"],"kanban-campania":["kanban","lista","gantt"],"teams-container":["teams"],"templates-container":["templates"]},k=()=>{var v;return((v=w.find(C=>C.path===c))==null?void 0:v.search)??""},T=v=>{m(C=>C.map(U=>U.path===c?{...U,search:v}:U))};return p.useEffect(()=>{const v=setTimeout(()=>{n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:g==null?void 0:g.trim()}),T(g)},500);return()=>{clearTimeout(v)}},[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:()=>_("lista-campanias"),className:"tw-text-primary hover:tw-text-primary/80 tw-flex tw-items-center tw-transition-colors",children:e.jsx(Z.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)}),z.includes(c)&&e.jsx(Xr,{tabs:D[c],renderItem:v=>{l(v)},initialTab:d})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-s !tw-text-[16px]",children:[e.jsx(P.Input,{leftSlot:"SearchOutlined",onChange:v=>{x(v.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:_,project:f,setProject:h})})]})};return e.jsx(Ga,{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(P.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
|
+
`+v)})()},title:i?"Editar tarea":"Nueva tarea",successButtonText:i?"Actualizar":"Crear",disabledSuccessButton:!z,children:e.jsxs("form",{className:"tw-flex tw-flex-col tw-gap-4",children:[e.jsx(Ne.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:T})=>{var v;return e.jsx(P.Input,{fullWidth:!0,label:"Título",placeholder:"Ingresa el título de la tarea...",error:(v=g.title)==null?void 0:v.message,...T})}}),e.jsx(Ne.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:T})=>{var v;return e.jsx(P.Textarea,{className:"ui-w-full tw-w-full",placeholder:"Describe la tarea a realizar...",label:"Descripción",error:(v=g.description)==null?void 0:v.message,...T})}}),e.jsx(P.Separator,{}),e.jsx(Ne.Controller,{control:w,name:"priority",rules:{required:"La prioridad es obligatoria"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Prioridad",placeholder:"Selecciona la prioridad...",options:sr,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(Ne.Controller,{control:w,name:"difficulty",rules:{required:"La dificultad es obligatoria"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Dificultad",placeholder:"Selecciona la dificultad...",options:nr,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(Ne.Controller,{control:w,name:"duration",rules:{required:"La duración es obligatoria"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Duración",placeholder:"Selecciona la duración...",options:rr,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(P.Separator,{}),e.jsx(Ne.Controller,{control:w,name:"team",rules:{required:"El equipo es obligatorio"},render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,label:"Equipo",placeholder:"Selecciona el equipo...",options:d,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})}),e.jsx(Ne.Controller,{control:w,name:"responsible",render:({field:T,fieldState:{error:v}})=>e.jsx(P.Dropdown,{fullWidth:!0,absolute:!0,label:"Responsable",placeholder:"Selecciona el responsable...",options:f,error:v==null?void 0:v.message,value:T.value,onValueChange:C=>{T.onChange(C)}})})]})})},or=()=>{const{get:t}=Oe(),a=Me(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("Flujo de trabajo no encontrado"),!1;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}}}},je={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}},rt=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:je.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:je.DEFAULT_CHILD_HEIGHT)}))-d;s.style={...s.style??{},width:o,height:c}}),a},ot=t=>t.source===je.START_NODE_ID||t.target===je.START_NODE_ID,Be=t=>t===je.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}),it=(t,a,s,n,r,i=!1,o=null,d=null)=>{const l=ir(n),c=i?je.DEFAULT_SOURCE_HANDLE:s;return{id:`edge-${t}-${a}`,source:t,sourceHandle:c,target:a,targetHandle:je.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}=ne.useReactFlow(),{get:w,update:m,addTaskUpdatingTemplate:g,addTemplateUpdatingTemplate:x}=Oe(),b=Me(W=>W.activeTemplate),j=de.useQueryClient(),_=Me(W=>W.setActiveTemplate),{removeTaskFromState:z,updateNodeWithNewEdge:D,updateTaskInState:k}=Xe(),T=p.useCallback(async W=>{const I=t.find(H=>H.id===W);if(!(I!=null&&I.data))return null;if(I.id===je.START_NODE_ID){if(!b)return null;try{const H=await w(b.id),R=H.tarea_plantillas.find(G=>G.start===!0);return R!=null&&R.id?R.id:H.tarea_plantillas.length>0?H.tarea_plantillas[0].id:null}catch{return null}}const A=I.data.id;if(!A&&A!==0)return null;if(typeof A=="string"){if(A.includes("-"))return A;{const H=parseInt(A,10);return isNaN(H)?null:H}}else if(typeof A=="number")return A;return null},[t,b,w]),v=p.useCallback(async(W=t,I=a)=>{var A,H,R,G,ie,J,te;if(!b){P.toast.warning("No hay template activo para actualizar layout");return}try{const ae=await w(b.id);if(!ae){P.toast.warning("Template no encontrado en IndexedDB");return}const E=(A=ae.graph_layout)==null?void 0:A.snapshot;if(!(!E||JSON.stringify(E.nodes)!==JSON.stringify(W)||JSON.stringify(E.edges)!==JSON.stringify(I))){console.log("🔄 No hay cambios en el layout, omitiendo actualización");return}const ee=W.filter(Q=>{var F;return!((F=Q.data)!=null&&F.isInternal)&&!Q.parentId}).map(Q=>{const{style:F,measured:S,data:B,selected:M,...N}=Q,{expandedDimensions:K,isExpanded:$,needsReExpansion:Y,...se}=B||{},oe=F?{...F,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...N,style:oe,data:se}}),O=I.filter(Q=>{var F;return!((F=Q.data)!=null&&F.isInternal)}),L={...ae,graph_layout:{id:((H=ae.graph_layout)==null?void 0:H.id)||0,snapshot:{nodes:ee,edges:O,viewport:((G=(R=ae.graph_layout)==null?void 0:R.snapshot)==null?void 0:G.viewport)||{x:0,y:0,zoom:1}},history:((ie=ae.graph_layout)==null?void 0:ie.history)||[],zoom:((J=ae.graph_layout)==null?void 0:J.zoom)||1,position:((te=ae.graph_layout)==null?void 0:te.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await m(b.id,L),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"),_(L)}catch(ae){console.error("❌ Error al actualizar template layout:",ae)}},[b,w,m,t,a,_]),C=p.useCallback(async(W=[],I=[],A,H)=>{var G,ie,J,te,ae,E,q,ee,O,L,Q,F;const R=A||(b==null?void 0:b.id);if(!R){P.toast.warning("No hay template ID disponible para actualizar");return}try{const S=await w(R);if(!S)return;const B=(J=(ie=(G=S.graph_layout)==null?void 0:G.snapshot)==null?void 0:ie.nodes)==null?void 0:J.filter(K=>{var $;return!W.includes(K.id)&&!(($=K.data)!=null&&$.isInternal)&&!K.parentId}).map(K=>{const{style:$,measured:Y,data:se,...oe}=K,{expandedDimensions:le,...pe}=se||{},fe=$?{...$,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...oe,style:fe,data:pe}}),M=((E=(ae=(te=S.graph_layout)==null?void 0:te.snapshot)==null?void 0:ae.edges)==null?void 0:E.filter(K=>{var $;return!W.includes(K.source)&&!W.includes(K.target)&&!(($=K.data)!=null&&$.isInternal)}))||[],N={...S,graph_layout:{id:((q=S.graph_layout)==null?void 0:q.id)||0,snapshot:{nodes:B,edges:M,viewport:((O=(ee=S.graph_layout)==null?void 0:ee.snapshot)==null?void 0:O.viewport)||{x:0,y:0,zoom:1}},history:((L=S.graph_layout)==null?void 0:L.history)||[],zoom:((Q=S.graph_layout)==null?void 0:Q.zoom)||1,position:((F=S.graph_layout)==null?void 0:F.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await z({templateId:R,id:H||0}),await m(R,N),await j.invalidateQueries({queryKey:["template",R]}),await j.invalidateQueries({queryKey:["template"]}),R===(b==null?void 0:b.id)&&_(N)}catch(S){console.error("❌ updateAfterDeleted - Error al actualizar template layout:",S)}},[b,w,m,a,t,z,_]),U=p.useCallback(async(W,I,A)=>{if(!r||!b)return;const{nodeId:H,sourceNodeId:R,sourceHandleId:G}=r;if(R)try{const ie=await T(R);if(!ie)return;if(W==="plantilla"){const J=A;if(!(J!=null&&J.templateId))return;if(!await x(J.templateId,b.id,ie,I)){P.toast.error("No se pudo agregar la plantilla. Intenta nuevamente."),o();return}try{const Q=await w(b.id);if(Q){const F=(B,M)=>{for(const N of B){if(N.id===M||N.uuid===M)return N;if(N.tareas&&N.tareas.length>0){const K=F(N.tareas,M);if(K)return K}}return null},S=F(Q.tarea_plantillas,ie);if(S&&S.id){const B=(S.plantilla_dependents||[]).map(N=>typeof N=="object"&&N.id?{id:N.id}:typeof N=="number"?{id:N}:N),M={...S,plantilla_dependents:B,plantilla:{id:b.id,clave:Q.clave,categoria:Q.categoria||{id:0,nombre:"Sin categoría"}}};await k({task:M}),console.log("✅ Tarea padre agregada a templates_states.updated con plantilla_dependents:",S.id,M.plantilla_dependents)}}}catch(Q){console.error("❌ Error al actualizar tarea padre en templates_states:",Q)}const ae=c({x:r.position.x,y:r.position.y}),E=J.templateData||{id:J.templateId,nombre_plantilla:`Flujo de trabajo ${J.templateId}`,clave:`TPL-${J.templateId}`,estatus:"activo",categoria:null,counts_tasks:0,dias_duracion:0},q={id:H,type:"group",position:ae,selected:!1,deletable:!0,data:{id:J.templateId,templateId:J.templateId,type:"template",nombre_plantilla:E.nombre_plantilla||`Flujo de trabajo ${J.templateId}`,clave:E.clave||`TPL-${J.templateId}`,estatus:E.estatus||"activo",categoria:E.categoria||null,counts_tasks:E.counts_tasks||0,dias_duracion:E.dias_duracion||0,tarea_plantillas:E.tarea_plantillas||[],params_plantillas:E.params_plantillas||[],createdAt:E.createdAt||new Date().toISOString(),updatedAt:E.updatedAt||new Date().toISOString(),created_by:E.created_by||null,updated_by:E.updated_by||null}};s(Q=>[...Q,q]);const ee=G||je.DEFAULT_SOURCE_HANDLE,O=Be(R),L=it(R,H,ee,I,"plantilla",O,ie);n(Q=>[...Q,L]);try{const Q=[...t,q],F=[...a,L];await v(Q,F)}catch(Q){console.error("❌ Error al actualizar layout después de agregar plantilla:",Q)}}else if(W==="tarea"){const J=A;if(!J)return;const te=c({x:r.position.x,y:r.position.y}),ae=-new Date().getTime(),E={id:ae,reference_graph:H,title:J.title,description:J.description,priority:J.priority,difficulty:J.difficulty,duration:J.duration,team:J.team,responsible:J.responsible,parent:{data:{id:ie}}},q=await g(E,b.id,I),ee=lr(H,te,q);s(F=>[...F,ee]);const O=G||je.DEFAULT_SOURCE_HANDLE,L=Be(R),Q=it(R,H,O,I,W,L,ie,ae);n(F=>[...F,Q]);try{const F=[...t,ee],S=[...a,Q];await v(F,S)}catch(F){console.error("❌ Error al actualizar layout después de agregar tarea:",F)}setTimeout(()=>{try{const F=u(H);if(F){const S=window.innerWidth,B=window.innerHeight,M=S/2,N=B/2;f({x:M-F.position.x-130,y:N-F.position.y-40,zoom:1},{duration:800})}else h({padding:.1,duration:800})}catch{try{h({padding:.1,duration:800})}catch{}}},200)}o()}catch(ie){console.error("❌ Error en createNodeFromPopup:",ie)}},[r,b,g,x,T,c,s,n,o,v,t,a]),y=p.useCallback(async(W,I)=>{var G,ie;if(console.log("🟢 createConnectionFromPopup - INICIO",{nodeType:W,connectionType:I}),!i){console.warn("⚠️ createConnectionFromPopup - No hay connectionPopup");return}const{sourceNodeId:A,sourceHandleId:H,targetNodeId:R}=i;console.log("🟢 createConnectionFromPopup - Datos de conexión:",{sourceNodeId:A,targetNodeId:R,sourceHandleId:H});try{if(!(window.validConnectionTypes||{dependiente:!0,hija:!0})[I]){console.warn("⚠️ createConnectionFromPopup - Tipo de conexión no válido:",I),P.toast.warning("Tipo de conexión no válido"),l(!1),d();return}const te=t.find(M=>M.id===A),ae=t.find(M=>M.id===R);console.log("🟢 createConnectionFromPopup - Nodos encontrados:",{sourceNode:te==null?void 0:te.id,targetNode:ae==null?void 0:ae.id,sourceData:te==null?void 0:te.data,targetData:ae==null?void 0:ae.data});const E=ae==null?void 0:ae.data,q=((G=te==null?void 0:te.data)==null?void 0:G.id)||A,ee=((ie=ae==null?void 0:ae.data)==null?void 0:ie.id)||R;console.log("🟢 createConnectionFromPopup - IDs extraídos:",{parentId:q,childId:ee});const O=it(A,R,H||je.DEFAULT_SOURCE_HANDLE,I,W,Be(A),q,ee);console.log("🟢 createConnectionFromPopup - Nuevo edge creado:",O),n(M=>[...M,O]);const L=[...a,O],Q=E.id||-Date.now(),F=E.reference_graph||R,S={id:Q,uuid:E.uuid||crypto.randomUUID(),reference_graph:F,texto_corto:E.texto_corto||"",texto_largo:E.texto_largo||"",prioridad:E.prioridad||null,nivel_dificultad:E.nivel_dificultad||1,duracion:E.duracion||null,start:E.start||!1,equipo:E.equipo||null,responsable:E.responsable||null,plantilla:{id:E.plantilla.id,clave:E.plantilla.clave,categoria:E.plantilla.categoria||{id:0,nombre:"Sin categoría"}},plantilla_dependents:E.plantilla_dependents||[],ids_t_dependientes:E.ids_t_dependientes||[],tarea_padre:I==="hija"?{id:O.data.parentId}:null,id_t_requerida:I==="dependiente"?{id:O.data.parentId}:null,tareas:E.tareas||[],type:"task"};console.log("🟢 createConnectionFromPopup - taskForState creado:",S),console.log("🟢 createConnectionFromPopup - currentTemplate.id:",b.id);const B=t.map(M=>M.id===R?{...M,data:S}:M);console.log("🟢 createConnectionFromPopup - Actualizando nodos en React Flow..."),s(B),console.log("✅ createConnectionFromPopup - Nodos actualizados en React Flow"),console.log("🟢 createConnectionFromPopup - Actualizando template layout..."),await v(B,L),console.log("✅ createConnectionFromPopup - Template layout actualizado"),console.log("🟢 createConnectionFromPopup - Llamando a updateNodeWithNewEdge..."),await D({templateId:b.id,edge:O,task:S}),console.log("✅ createConnectionFromPopup - updateNodeWithNewEdge completado")}catch(J){console.error("❌ createConnectionFromPopup - Error al crear conexión:",J),console.error("❌ createConnectionFromPopup - Stack:",J.stack)}finally{console.log("🟢 createConnectionFromPopup - Limpiando estado..."),l(!1),d(),console.log("🟢 createConnectionFromPopup - FIN")}},[i,n,l,d,a,t,v]),X=p.useCallback(async W=>{if(!r||!b){P.toast.warning("No hay newNodePopup o template activo para actualizar el nodo");return}const{nodeId:I}=r;if(!I){P.toast.warning("No se encontró nodeId en newNodePopup");return}try{const A=t.find(R=>R.id===I);if(!A){P.toast.warning(`No se encontró el nodo con ID: ${I}`);return}const H={...A,data:{...A.data,...W,id:A.data.id||A.id,type:A.data.type||A.data.type,updatedAt:new Date().toISOString()}};s(R=>R.map(G=>G.id===I?H:G));try{const R=t.map(G=>G.id===I?H:G);await v(R,a)}catch(R){P.toast.error("Error al actualizar layout después de actualizar nodo:",R)}o()}catch(A){P.toast.error("Error al actualizar el nodo:",A)}},[r,b,t,s,a,v,o]);return{createNodeFromPopup:U,createConnectionFromPopup:y,updateNodeFromPopup:X,updateAfterDeleted:C}},wr=({data:t,id:a,isConnectable:s,selected:n})=>{const r=ve(C=>C.getViewMode),[i,o]=p.useState(!1),[d,l]=p.useState(t),c=Me(C=>C.activeTemplate),u=Me(C=>C.setActiveTemplate),{get:f,update:h}=Oe(),w=c!=null&&c.id?r(c.id):"readonly",{updateTaskInTemplate:m}=or(),{setNodes:g,setEdges:x,getNodes:b,getEdges:j}=ne.useReactFlow(),_=de.useQueryClient(),{updateAfterDeleted:z}=Oa({nodes:b(),edges:j(),setNodes:g,setEdges:x,newNodePopup:null,connectionPopup:null,closeNewNodePopup:()=>{},closeConnectionPopup:()=>{},setIsConnectingExistingNodes:()=>{}}),D=()=>{o(!0)},k=p.useCallback(async()=>{var I,A,H;const C=b().find(R=>R.id===a);if(!C){console.warn("⚠️ Nodo no encontrado para eliminar");return}const U=[C],y=Aa(U),X=U.length>0?(A=(I=U[0])==null?void 0:I.data)==null?void 0:A.id:0;x(R=>R.filter(G=>!y.includes(G.source)&&!y.includes(G.target))),g(R=>R.filter(G=>G.id!==a));let W;for(const R of U)try{const G=R.data;if((H=G==null?void 0:G.plantilla)!=null&&H.id){W=G.plantilla.id;break}}catch{}try{x(R=>((async()=>{await z(y,R,W,X)})().catch(G=>{console.error("❌ Error en updateAfterDeleted:",G)}),R))}catch(R){console.error("❌ Error en handleDeleteNode:",R)}},[a,b,j,g,x,z]),T=p.useCallback(async C=>{var U,y,X,W,I,A,H,R,G,ie;if(!c){console.warn("⚠️ MainNode.updateTemplateLayout - No hay template activo");return}try{const J=await f(c.id);if(!J){console.warn("⚠️ MainNode.updateTemplateLayout - Template no encontrado en IndexedDB");return}const te=(U=J.graph_layout)==null?void 0:U.snapshot;if(!(!te||JSON.stringify(te.nodes)!==JSON.stringify(C))){console.log("🔄 MainNode.updateTemplateLayout - No hay cambios en nodos, omitiendo actualización");return}const E=C.filter(O=>{var L;return!((L=O.data)!=null&&L.isInternal)&&!O.parentId}).map(O=>{const{style:L,measured:Q,data:F,selected:S,...B}=O,{expandedDimensions:M,isExpanded:N,needsReExpansion:K,...$}=F||{},Y=L?{...L,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0;return{...B,style:Y,data:$}}),q=(((X=(y=J.graph_layout)==null?void 0:y.snapshot)==null?void 0:X.edges)||[]).filter(O=>{var L;return!((L=O.data)!=null&&L.isInternal)}),ee={...J,graph_layout:{id:((W=J.graph_layout)==null?void 0:W.id)||0,snapshot:{...(I=J.graph_layout)==null?void 0:I.snapshot,nodes:E,edges:q,viewport:((H=(A=J.graph_layout)==null?void 0:A.snapshot)==null?void 0:H.viewport)||{x:0,y:0,zoom:1}},history:((R=J.graph_layout)==null?void 0:R.history)||[],zoom:((G=J.graph_layout)==null?void 0:G.zoom)||1,position:((ie=J.graph_layout)==null?void 0:ie.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await h(c.id,ee),await _.invalidateQueries({queryKey:["template",c.id]}),await _.invalidateQueries({queryKey:["template"]}),c&&c.id===ee.id&&u(ee)}catch(J){console.error("❌ MainNode.updateTemplateLayout - Error al actualizar template layout:",J)}},[c,f,h,u,_]),v=async C=>{if(o(!1),c){const U={...t,texto_corto:C.title,texto_largo:C.description,prioridad:C.priority?typeof C.priority=="number"?C.priority:parseInt(C.priority.toString()):null,nivel_dificultad:C.difficulty?typeof C.difficulty=="number"?C.difficulty:parseInt(C.difficulty.toString()):1,duracion:C.duration?typeof C.duration=="number"?C.duration:parseInt(C.duration.toString()):null,equipo:{id:Number(C.team)||null},responsable:{id:Number(C.responsible)||null}};await m(t.id,U),g(y=>{const X=y.map(W=>W.id===a?{...W,data:{...W.data,...U,tarea_padre:t.tarea_padre,id_t_requerida:t.id_t_requerida,updatedAt:new Date().toISOString()}}:W);return console.log("🔄 updatedNodes:",X),setTimeout(()=>T(X),0),X})}};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 tw-max-w-[423px] ${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(ne.Handle,{isConnectable:s,id:"top-target",type:"target",position:ne.Position.Top,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white"}),e.jsx(ne.Handle,{isConnectable:s,id:"right-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Right}),e.jsx(ne.Handle,{isConnectable:s,id:"bottom-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Bottom}),e.jsx(ne.Handle,{isConnectable:s,id:"left-target",type:"target",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Left}),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 tw-truncate",children:d.texto_corto}),!t.isInternal&&c.estatusFromStrapi!==ke.PUBLISHED&&w!=="readonly"&&e.jsx("div",{children:t.type==="task"?e.jsx(P.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"ElipsisOutlined",containerClassName:"nopan nodrag",buttonClassName:"nopan nodrag",children:e.jsxs(P.List,{children:[e.jsx(P.ListItem,{icon:"EditOutlined",onClick:D,children:"Editar"}),e.jsx(P.ListSeparator,{}),e.jsx(P.ListItem,{icon:"Plus1Outlined",color:"red",onClick:k,children:"Eliminar"})]})}):e.jsx(P.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(ne.Handle,{isConnectable:s,id:"top-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Top}),e.jsx(ne.Handle,{isConnectable:s,id:"right-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Right}),e.jsx(ne.Handle,{isConnectable:s,id:"bottom-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Bottom}),e.jsx(ne.Handle,{isConnectable:s,id:"left-source",type:"source",className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white",position:ne.Position.Left}),t.type==="task"&&i&&e.jsx(Ma,{isOpen:i,onClose:()=>o(!1),onSuccess:v,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:ke.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=Ae.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:be(d.data.data),meta:d.data.meta}:{data:[],meta:{pagination:{page:a,pageSize:s,pageCount:0,total:0}}}},La=({page:t=1,pageSize:a=10,search:s="",filters:n={}})=>{const{tasks_api:r}=me();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})})},qa=({isOpen:t,onClose:a,onSuccess:s,nodeDataType:n,parentNodeInfo:r})=>{var _,z,D,k;const i=ve(T=>T.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}=La({page:c,pageSize:l,search:f}),g=T=>{h(T.target.value)},x=()=>{var v;if(o===0)return;const T=(v=w==null?void 0:w.data)==null?void 0:v.find(C=>C.id===o);if(!T){console.error("No se encontró el flujo de trabajo seleccionado en los datos");return}s?s({templateId:o,templateData:T}):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=((z=(_=w.meta)==null?void 0:_.pagination)==null?void 0:z.total)||0,j=b===1?"flujo encontrado":"flujos encontrados";return e.jsx(P.Modal,{icon:"TaskOutlined",isOpen:t,size:"lg",onSuccess:x,onClose:a,title:"Agregar flujo de trabajo",successButtonText:"Agregar",disableSuccessButton:o===0,closeAtSuccess:!0,children:e.jsxs(P.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(P.Input,{className:"tw-flex-1",leftSlot:"SearchOutlined",fullWidth:!0,placeholder:"Buscar por nombre, parámetros o estado...",value:f,onChange:g})]}),e.jsx(P.Separator,{}),e.jsxs("div",{className:"tw-flex tw-flex-col tw-gap-6 tw-p-12",children:[w.data.map(T=>e.jsx(Pa,{mode:"modal",template:T,active:o===T.id,fullWidth:!0,onClick:d,withOptions:!1},T.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 flujos de trabajo con ese criterio de búsqueda"})})]}),e.jsx(P.Separator,{}),e.jsx("div",{className:"tw-mt-6",children:e.jsx(P.Pagination,{className:"tw-pt-0",pageSize:l,pageCount:((k=(D=w==null?void 0:w.meta)==null?void 0:D.pagination)==null?void 0:k.pageCount)||1,currentPage:c,onPageChange:T=>u(T)})})]})})},mr=({data:t,id:a})=>{const s=ve(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(qa,{isOpen:i,onClose:()=>o(!1),nodeDataType:d}),e.jsx(ne.Handle,{id:"top-target",type:"target",position:ne.Position.Top}),e.jsx(ne.Handle,{id:"right-target",type:"target",position:ne.Position.Right}),e.jsx(ne.Handle,{id:"bottom-target",type:"target",position:ne.Position.Bottom}),e.jsx(ne.Handle,{id:"left-target",type:"target",position:ne.Position.Left}),e.jsx(ne.Handle,{id:"top-source",type:"source",position:ne.Position.Top}),e.jsx(ne.Handle,{id:"right-source",type:"source",position:ne.Position.Right}),e.jsx(ne.Handle,{id:"bottom-source",type:"source",position:ne.Position.Bottom}),e.jsx(ne.Handle,{id:"left-source",type:"source",position:ne.Position.Left}),e.jsx(P.Popup,{position:"right",absolute:!0,size:"md",rounded:!0,icon:"Plus1Outlined",containerClassName:"nopan",buttonClassName:"nopan",children:e.jsxs(P.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(P.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>c({type:"tarea",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(P.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"tarea",connectionType:"hija"}),children:"Hija"}),e.jsx(P.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),e.jsx(P.ListItem,{icon:"Plus1Outlined",onClick:()=>c({type:"plantilla",connectionType:"dependiente"}),children:"Dependiente"}),e.jsx(P.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(P.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(P.ListItem,{icon:"ElipsisOutlined",iconColor:"blue",onClick:()=>f("tarea","dependiente"),children:"Dependiente"}),e.jsx(P.ListItem,{icon:"Plus1Outlined",onClick:()=>f("tarea","hija"),children:"Hija"}),e.jsx(P.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),e.jsx(P.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(qa,{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}=ne.useReactFlow(),{zoom:r}=ne.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 D=t==null?void 0:t.current;if(D){const k=D.getBoundingClientRect();w(k.width)}},[t]);const m=p.useMemo(()=>{var v;if(!a||a.length===0)return{x:0,y:0,zoom:1};const D=a.find(C=>{var U;return(U=C==null?void 0:C.data)==null?void 0:U.main})??a[0];return{x:(h||(typeof window<"u"?window.innerWidth:0))/2-(((v=D==null?void 0:D.position)==null?void 0:v.x)??0),y:20,zoom:1}},[a,h]),g=p.useCallback(D=>{if(!u){const k=[...o.slice(0,l+1),D];d(k),c(k.length-1)}},[o,l,u]),x=p.useCallback(()=>{if(u)return;const D=n(),k=Math.min(D.zoom*1.2,2);g(D),f(!0),s({x:D.x,y:D.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),b=p.useCallback(()=>{if(u)return;const D=n(),k=Math.max(D.zoom/1.2,.5);g(D),f(!0),s({x:D.x,y:D.y,zoom:k}),setTimeout(()=>f(!1),100)},[n,s,g,u]),j=p.useCallback(()=>{if(u)return;const D=n();Math.abs(D.zoom-1)>.01&&g(D),f(!0),s({x:D.x,y:D.y,zoom:1}),setTimeout(()=>f(!1),100)},[n,s,g,u]),_=p.useCallback(()=>{if(u||l<=0)return;const D=o[l-1];f(!0),s(D),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:_}}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=ve.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(P.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(P.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(P.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(ne.Handle,{id:"bottom-source",type:"source",position:ne.Position.Bottom,className:"tw-h-[16px] tw-w-[16px] tw-border-neutral-100 !tw-bg-white tw-cursor-crosshair"}),e.jsx(ne.Handle,{id:"top-target",type:"target",position:ne.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]=ne.useNodesState(rt(t)),[i,o,d]=ne.useEdgesState(a),[l,c]=p.useState(!1),u=p.useCallback(O=>{o(O)},[o]),{toObject:f}=ne.useReactFlow(),{findClosestHandles:h,shouldApplyMagneticConnection:w}=hr(),{updateGraphLayout:m,get:g,update:x}=Oe(),b=Me(O=>O.activeTemplate),j=Me(O=>O.setActiveTemplate),_=de.useQueryClient(),{removeParentIdFromNodes:z}=Xe(),{newNodePopup:D,connectionPopup:k,isConnectingExistingNodes:T,openNewNodePopup:v,closeNewNodePopup:C,openConnectionPopup:U,closeConnectionPopup:y,getParentNodeInfo:X,setIsConnectingExistingNodes:W}=br(s),{createNodeFromPopup:I,createConnectionFromPopup:A,updateNodeFromPopup:H,updateAfterDeleted:R}=Oa({nodes:s,edges:i,setNodes:n,setEdges:u,newNodePopup:D,connectionPopup:k,closeNewNodePopup:C,closeConnectionPopup:y,setIsConnectingExistingNodes:W});p.useEffect(()=>{if(t&&t.length>0){if(!(t.some((M,N)=>{const K=s[N];return K?M.id!==K.id||JSON.stringify(M.position)!==JSON.stringify(K.position)||JSON.stringify(M.data)!==JSON.stringify(K.data):!0})||t.length!==s.filter(M=>{var N;return!((N=M.data)!=null&&N.isInternal)}).length)&&s.length>0)return;const{expandedGroups:L,groupTemplateData:Q}=ve.getState(),F=rt(t),S=new Set(F.map(M=>M.id));let B=s.filter(M=>{var N,K;return((N=M.data)==null?void 0:N.isInternal)&&typeof((K=M.data)==null?void 0:K.originalGroupId)=="string"&&L.has(M.data.originalGroupId)&&S.has(M.data.originalGroupId)});if(B.length>0){const M=F.map(N=>{var K;if(L.has(N.id)){const $=s.find(se=>se.id===N.id),Y=(K=$==null?void 0:$.data)==null?void 0:K.expandedDimensions;if(Y)return{...N,style:{...N.style,width:Y.width,height:Y.height},data:{...N.data,isExpanded:!0,expandedDimensions:Y}}}return N});n([...M,...B])}else if(L.size>0){const M=F.map(N=>L.has(N.id)&&Q[N.id]?{...N,data:{...N.data,isExpanded:!0,needsReExpansion:!0}}:N);n(M)}else n(F)}else n([])},[t,n]),p.useEffect(()=>{if(!l&&a&&a.length>0){const{expandedGroups:O}=ve.getState(),L=rt(t),Q=new Set(L.map(B=>B.id)),F=i.filter(B=>{var M,N;return((M=B.data)==null?void 0:M.isInternal)&&typeof((N=B.data)==null?void 0:N.originalGroupId)=="string"&&O.has(B.data.originalGroupId)&&Q.has(B.data.originalGroupId)}),S=i.filter(B=>{var M,N;return((M=B.data)==null?void 0:M.redirectedToInternal)&&typeof((N=B.data)==null?void 0:N.originalTarget)=="string"&&O.has(B.data.originalTarget)&&Q.has(B.data.originalTarget)});if(F.length>0||S.length>0){const B=a.filter(M=>!S.some(N=>{var K;return((K=N.data)==null?void 0:K.originalTarget)===M.target}));u([...B,...F,...S])}else u(a)}},[a,u,l]);const G=p.useCallback((O,L,Q=!1)=>{const S=i.filter(N=>N.target===L).length>0;if(i.some(N=>N.source===O&&N.target===L||N.source===L&&N.target===O)&&!Q)return P.toast.warning("La tarea destino ya tiene una conexión"),!1;const M=!S;return typeof window<"u"&&(window.validConnectionTypes={dependiente:M,hija:M}),M?!0:(P.toast.warning("La tarea destino ya tiene una conexión de entrada"),!1)},[i]),ie=p.useCallback(O=>{if(!cr(O.source,O.target))return;Be(O.source)&&!O.sourceHandle&&(O.sourceHandle=je.DEFAULT_SOURCE_HANDLE);const L=s.find(F=>F.id===O.source),Q=s.find(F=>F.id===O.target);if(L&&Q){if(!G(O.source,O.target))return;U(O.source,O.target,O.sourceHandle,O.targetHandle);return}return u(F=>ne.addEdge(O,F))},[s,U,u,G]),J=p.useCallback((O,L)=>{var Q;if(!T&&!L.isValid&&L.fromNode){const F=s.find(Y=>Y.id===L.fromNode.id);if((F==null?void 0:F.type)==="group"){P.toast.warning("En una plantilla, no se puede crear una conexión");return}const S=dr(O),B=document.elementFromPoint(S.x,S.y);if(B!=null&&B.closest(".react-flow__node"))return;const M=crypto.randomUUID(),N=((Q=L.fromHandle)==null?void 0:Q.id)||je.DEFAULT_SOURCE_HANDLE,$=Be(L.fromNode.id)?je.DEFAULT_SOURCE_HANDLE:N;v(M,S,L.fromNode.id,$)}},[T,v,s]),te=p.useCallback(async O=>{var S,B,M;const L=Aa(O),Q=O.length>0?(B=(S=O[0])==null?void 0:S.data)==null?void 0:B.id:0;u(N=>N.filter(K=>!L.includes(K.source)&&!L.includes(K.target)));let F;for(const N of O)try{const K=N.data;if((M=K==null?void 0:K.plantilla)!=null&&M.id){F=K.plantilla.id;break}}catch{}try{u(N=>((async()=>{await R(L,N,F,Q)})().catch(K=>{console.error("❌ Error en updateAfterDeleted:",K)}),N))}catch(N){console.error("❌ Error en onDeleteNode:",N)}},[u,R]),ae=p.useCallback(async O=>{var Q,F,S,B,M,N,K,$,Y,se,oe,le,pe,fe;if(!O||O.length===0)return;let L;if(b!=null&&b.id)L=b.id;else for(const re of O){const ce=s.find(xe=>xe.id===re.source),ue=s.find(xe=>xe.id===re.target);if(ce!=null&&ce.data&&typeof ce.data=="object"&&"plantilla"in ce.data){const xe=ce.data.plantilla;if(xe!=null&&xe.id){L=xe.id;break}}if(ue!=null&&ue.data&&typeof ue.data=="object"&&"plantilla"in ue.data){const xe=ue.data.plantilla;if(xe!=null&&xe.id){L=xe.id;break}}}if(!L){console.warn("⚠️ onEdgesDelete - No se pudo obtener templateId");return}try{const re=await g(L);if(!re){console.warn("⚠️ onEdgesDelete - Template no encontrado en IndexedDB");return}const ce=O.map(Se=>Se.id),ue=((S=(F=(Q=re.graph_layout)==null?void 0:Q.snapshot)==null?void 0:F.edges)==null?void 0:S.filter(Se=>{var Fe;return!ce.includes(Se.id)&&!((Fe=Se.data)!=null&&Fe.isInternal)}))||[],we=(((N=(M=(B=re.graph_layout)==null?void 0:B.snapshot)==null?void 0:M.nodes)==null?void 0:N.filter(Se=>{var Fe;return!((Fe=Se.data)!=null&&Fe.isInternal)&&!Se.parentId}))||[]).map(Se=>{const{style:Fe,measured:Qe,data:at,...$a}=Se,{expandedDimensions:so,isExpanded:no,needsReExpansion:ro,...Ct}=at||{},Ba=Fe?{...Fe,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0}:void 0,Ha=Se.data.id===O[0].data.childId?{...Ct,tarea_padre:null,id_t_requerida:null}:Ct;return{...$a,style:Ba,data:Ha}}),he=(($=(K=re.graph_layout)==null?void 0:K.snapshot)==null?void 0:$.edges)||[];if(!(JSON.stringify(he)!==JSON.stringify(ue)))return;const _e={...re,graph_layout:{id:((Y=re.graph_layout)==null?void 0:Y.id)||0,snapshot:{nodes:we,edges:ue,viewport:((oe=(se=re.graph_layout)==null?void 0:se.snapshot)==null?void 0:oe.viewport)||{x:0,y:0,zoom:1}},history:((le=re.graph_layout)==null?void 0:le.history)||[],zoom:((pe=re.graph_layout)==null?void 0:pe.zoom)||1,position:((fe=re.graph_layout)==null?void 0:fe.position)||{x:0,y:0}},estatus:ye.DIRTY,updatedAt:new Date().toISOString()};await z({templateId:L,id:O[0].data.childId}),await x(L,_e),console.log("🗑️ [useFlow] Invalidando caché de la plantilla:",L),await _.invalidateQueries({queryKey:["template",L]}),await _.invalidateQueries({queryKey:["template"]}),console.log("✅ [useFlow] Caché invalidado exitosamente"),L===(b==null?void 0:b.id)&&j(_e)}catch(re){console.error("❌ onEdgesDelete - Error al actualizar template layout:",re)}},[s,b,g,x,j,z]),E=p.useCallback(async O=>!O.nodes.some(Q=>Q.type==="start"||Q.id===je.START_NODE_ID),[]),q=p.useCallback((O,L,Q)=>{var M,N,K;const F=s.find($=>$.id===L.id);if(!F)return;if(F.type==="group"&&((M=F.data)!=null&&M.isExpanded)){u($=>$.map(Y=>{if(Y.hidden&&Y.target===L.id){const{hidden:se,...oe}=Y;return oe}return Y}));return}let S;if(F.type==="group"?S=b==null?void 0:b.id:(K=(N=L==null?void 0:L.data)==null?void 0:N.plantilla)!=null&&K.id&&(S=L.data.plantilla.id),!S)return;const B=i.map($=>{var oe,le,pe,fe,re;if(ot($))return $;const Y=s.find(ce=>ce.id===$.source),se=s.find(ce=>ce.id===$.target);if(Y&&se){const ce=Y.type==="group"&&((oe=Y.data)==null?void 0:oe.isExpanded),ue=se.type==="group"&&((le=se.data)==null?void 0:le.isExpanded),xe=(pe=Y.data)==null?void 0:pe.isInternal,we=(fe=se.data)==null?void 0:fe.isInternal,he=(re=$.data)==null?void 0:re.redirectedToInternal;if(ce||ue||xe||we||he)return $;if(Y.id===L.id||se.id===L.id||w(Y,se,je.MAGNETIC_CONNECTION_DISTANCE)){const _e=h(Y,se);if(_e!=null&&_e.handle1&&(_e!=null&&_e.handle2))return{...$,sourceHandle:_e.handle1,targetHandle:_e.handle2}}}return $});if(JSON.stringify(i)!==JSON.stringify(B))u(B),setTimeout(()=>{const $=f();m(S,$)},100);else{const $=f();m(S,$)}},[s,i,b,m,f,u,h,w]),ee=p.useCallback(O=>{r(O);const L=ur(O);if(L.length>0){const Q=L.filter(F=>{var B;const S=s.find(M=>M.id===F);return(S==null?void 0:S.type)==="group"&&((B=S==null?void 0:S.data)==null?void 0:B.isExpanded)});if(Q.length>0){u(F=>F.map(S=>{var N;const B=Q.includes(S.target),M=!((N=S.data)!=null&&N.redirectedToInternal);return B&&M?{...S,hidden:!0}:S}));return}c(!0),setTimeout(()=>{const F=i.map(B=>{var K,$,Y,se;if(ot(B))return{...B};const M=s.find(oe=>oe.id===B.source),N=s.find(oe=>oe.id===B.target);if(M&&N){const oe=M.type==="group"&&((K=M.data)==null?void 0:K.isExpanded),le=N.type==="group"&&(($=N.data)==null?void 0:$.isExpanded),pe=(Y=M.data)==null?void 0:Y.isInternal,fe=(se=N.data)==null?void 0:se.isInternal;if(oe||le||pe||fe)return{...B};if(w(M,N,je.MAGNETIC_CONNECTION_DISTANCE)){const re=h(M,N);if(re!=null&&re.handle1&&(re!=null&&re.handle2)&&(B.sourceHandle!==re.handle1||B.targetHandle!==re.handle2))return{...B,sourceHandle:re.handle1,targetHandle:re.handle2}}}return{...B}});if(i.some((B,M)=>{const N=F[M];return B.sourceHandle!==N.sourceHandle||B.targetHandle!==N.targetHandle})){const B=F.map(M=>({...M,id:M.id}));u(B)}setTimeout(()=>{c(!1)},200)},0)}},[r,i,s,u,h,w,c]);return{nodes:s,edges:i,newNodePopup:D,connectionPopup:k,setNodes:n,setEdges:u,onEdgesChange:d,onConnect:ie,onConnectEnd:J,onDeleteNode:te,onEdgesDelete:ae,onBeforeDelete:E,handleNodesChange:ee,onDragEnd:q,getParentNodeInfo:X,isProtectedConnection:ot,isStartNode:Be,createNodeFromPopup:I,updateNodeFromPopup:H,closeNewNodePopup:C,createConnectionFromPopup:A,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(P.List,{children:[e.jsx("p",{className:"ui-text-sm tw-px-4 tw-font-medium tw-text-neutral-300",children:"Tarea"}),e.jsxs(P.ListItem,{icon:"ElipsisOutlined",iconColor:r.tarea.dependiente?"blue":"neutral",onClick:()=>i("tarea","dependiente"),children:["Dependiente ",!r.tarea.dependiente&&"(No disponible)"]}),e.jsxs(P.ListItem,{icon:"Plus1Outlined",iconColor:r.tarea.hija?"blue":"neutral",onClick:()=>i("tarea","hija"),children:["Hija ",!r.tarea.hija&&"(No disponible)"]}),e.jsx(P.ListSeparator,{}),e.jsx("p",{className:"ui-text-sm tw-px-4 tw-py-2 tw-font-medium tw-text-neutral-300",children:"Flujo de trabajo"}),e.jsxs(P.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}=ve(),[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=ve.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=ve.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(ne.Handle,{id:"top-target",type:"target",position:ne.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(ne.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:ne.Position.Right,isConnectable:!l}),e.jsx(ne.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:ne.Position.Bottom,isConnectable:!l}),e.jsx(ne.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:ne.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(P.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(P.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(P.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}=ve(),f=de.useQueryClient(),{getTemplateWithTasks:h}=Ea(),{hydrateTasks:w}=Ia(),m=p.useCallback(async(j,_)=>{var z,D,k,T;try{await f.invalidateQueries({queryKey:["template",_]});const v=await h(_),C=(k=(D=(z=v==null?void 0:v.graph_layout)==null?void 0:z.snapshot)==null?void 0:D.nodes)==null?void 0:k.filter(N=>{var K,$;return((K=N.data)==null?void 0:K.isInternal)||N.parentId||(($=N.id)==null?void 0:$.includes("-internal-"))});if(C&&C.length>0&&console.warn("⚠️ [expandGroup] Nodos sospechosos en API para plantilla",_,":",C),!((T=v==null?void 0:v.graph_layout)!=null&&T.snapshot))throw new Error(`No se encontraron datos de graph_layout en la plantilla: ${_}`);const U=v.graph_layout.snapshot.nodes||[],y=U.filter(N=>{var oe,le;const K=(oe=N.data)==null?void 0:oe.isInternal,$=!!N.parentId,Y=(le=N.id)==null?void 0:le.includes("-internal-"),se=K||$||Y;return se&&console.warn("🗑️ [expandGroup] Filtrando nodo corrupto:",{id:N.id,type:N.type,esInterno:K,tieneParentId:$,tieneInternalEnId:Y}),!se}),X={...v,graph_layout:{...v.graph_layout,snapshot:{...v.graph_layout.snapshot,nodes:y,edges:(v.graph_layout.snapshot.edges||[]).filter(N=>{var K,$;return!((K=N.data)!=null&&K.isInternal)&&!(($=N.id)!=null&&$.includes("-internal-"))})}}},W=U.length-y.length;W>0?console.warn(`⚠️ [expandGroup] Se filtraron ${W} nodos internos corruptos de la BD para plantilla ${_}`):console.log(`✅ [expandGroup] No se encontraron nodos corruptos en plantilla ${_}`);const I=await w(X),A={...X,hydratedNodes:I,nodes:I||X.graph_layout.snapshot.nodes||[],edges:X.graph_layout.snapshot.edges||[]},H=A.nodes,R=A.edges;if(!H||!R){console.error("❌ No se encontraron nodos o edges en la plantilla:",_);return}c(j,{nodes:H,edges:R,viewport:A.graph_layout.snapshot.viewport||{x:0,y:0,zoom:1}});const G=r.current.find(N=>N.id===j);if(!G){console.error("❌ No se encontró el nodo grupo:",j);return}const ie=H.filter(N=>N.id!==j);let J=1/0,te=1/0,ae=-1/0,E=-1/0;ie.forEach(N=>{var re,ce,ue,xe,we,he;const K=((re=N.position)==null?void 0:re.x)||0,$=((ce=N.position)==null?void 0:ce.y)||0,Y=typeof((ue=N.style)==null?void 0:ue.width)=="number"?N.style.width:((xe=N.measured)==null?void 0:xe.width)||268,se=typeof((we=N.style)==null?void 0:we.height)=="number"?N.style.height:((he=N.measured)==null?void 0:he.height)||111,oe=K-Y/2,le=K+Y/2,pe=$,fe=$+se;J=Math.min(J,oe),te=Math.min(te,pe),ae=Math.max(ae,le),E=Math.max(E,fe)});const q=80,ee=60,O=ae-J,L=E-te,Q=O+q*2,F=L+q*2+ee,S=H.map((N,K)=>{var re,ce;if(N.id===j)return null;const $=((re=N.position)==null?void 0:re.x)||0,Y=((ce=N.position)==null?void 0:ce.y)||0,se=$-J+q,oe=Y-te+q+ee,le=N.type==="start"||N.id==="start",pe=le?{...N.data,estatus:G.data.estatus,updatedAt:G.data.updatedAt,createdAt:G.data.createdAt,isInternal:!0,originalGroupId:j,originalNodeId:N.id}:{...N.data,isInternal:!0,originalGroupId:j,originalNodeId:N.id};return{...N,id:`${j}-internal-${N.id}`,parentId:j,extent:"parent",type:N.type==="group"?"main":N.type,position:{x:se,y:oe},style:{...N.style},data:pe,draggable:!1,selectable:le,selected:!1,deletable:!1,connectable:!1,focusable:le,zIndex:999}}).filter(Boolean),B=R.map(N=>{const K=S.some(se=>se&&se.id===`${j}-internal-${N.source}`),$=S.some(se=>se&&se.id===`${j}-internal-${N.target}`);return!K||!$?null:{...N,id:`${j}-internal-${N.id}`,source:`${j}-internal-${N.source}`,target:`${j}-internal-${N.target}`,style:{...N.style},data:{...N.data,isInternal:!0,originalGroupId:j}}}).filter(Boolean),M=S.find(N=>{var K;return N&&((K=N.data)==null?void 0:K.originalNodeId)==="start"});M&&n(N=>N.map(K=>K.target===j?{...K,target:M.id,targetHandle:"top-target",data:{...K.data,redirectedToInternal:!0,originalTarget:j,originalTargetHandle:K.targetHandle}}:K)),l(j),s(N=>[...N.map($=>{if($.id===j){const{needsReExpansion:Y,...se}=$.data||{};return{...$,style:{...$.style,width:Q,height:F},data:{...se,isExpanded:!0,expandedDimensions:{width:Q,height:F}},zIndex:1e3}}return $}),...S]),n(N=>[...N,...B])}catch(v){console.error("❌ Error al expandir el grupo:",v)}},[f,h,w,c,l,s,n]),g=p.useCallback(j=>{var C,U;const _=r.current,z=i.current,D=_.find(y=>y.id===j),k=((C=D==null?void 0:D.data)==null?void 0:C.templateId)||((U=D==null?void 0:D.data)==null?void 0:U.id),T=_.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),v=z.filter(y=>!y.id.startsWith(`${j}-internal-`)).map(y=>{var X,W;if((X=y.data)!=null&&X.redirectedToInternal&&((W=y.data)==null?void 0:W.originalTarget)===j){const{redirectedToInternal:I,originalTarget:A,originalTargetHandle:H,...R}=y.data;return{...y,target:j,targetHandle:H||y.targetHandle,data:R}}return y});s(T),n(v),l(j),u(j),k&&f.invalidateQueries({queryKey:["template",k]})},[s,n,l,u,f]),x=p.useCallback(async(j,_)=>{o.has(j)?g(j):await m(j,_)},[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}=ne.useReactFlow(),{copiedNodes:r,setCopiedNodes:i,getViewMode:o}=ve(),{activeTemplate:d,setActiveTemplate:l}=Me(),{updateGraphLayout:c,get:u,update:f}=Oe(),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(T=>T.selected).filter(T=>!(T.type==="start"||T.id==="start"||T.type==="group")),[t]),g=p.useCallback(()=>{if(h==="readonly"){P.toast.error("No puedes copiar tareas en modo solo lectura");return}if(!d){P.toast.error("No hay una plantilla activa");return}const z=m();if(z.length===0){const k=t().filter(T=>T.selected);if(k.length>0){const T=k.some(C=>C.type==="group"),v=k.some(C=>C.type==="start"||C.id==="start");T?P.toast.error("Las plantillas conectadas no pueden ser copiadas"):v&&P.toast.error("El nodo de inicio no puede ser copiado")}else P.toast.error("No hay tareas seleccionadas para copiar");return}const D=z.map(k=>{const{selected:T,...v}=k;return{...v,data:{...v.data,_originalTemplateId:d.id}}});i(D),P.toast.success(`${z.length} ${z.length===1?"tarea copiada":"tareas copiadas"} con éxito`)},[h,d,m,t,i]),x=p.useCallback(async z=>{if(h==="readonly"){P.toast.error("No puedes pegar tareas en modo solo lectura");return}if(!d){P.toast.error("No hay una plantilla activa");return}if(r.length===0){P.toast.error("No hay tareas copiadas para pegar");return}const D=t();let k={x:0,y:0};if(z)k=s({x:z.x,y:z.y});else if(D.length>0){const W=D.reduce((A,H)=>A+H.position.x,0)/D.length,I=D.reduce((A,H)=>A+H.position.y,0)/D.length;k={x:W+50,y:I+100}}const T=r[0],v=k.x-T.position.x,C=k.y-T.position.y,U=r.map((W,I)=>{const A=w(),H=-(Date.now()+I),R=W.data.plantilla&&typeof W.data.plantilla=="object"?{...W.data.plantilla,id:d.id}:{id:d.id},{id:G,...ie}=W.data,J={...ie,id:H,reference_graph:A,plantilla:R,parent:{data:{id:null}},_originalTemplateId:void 0};return{...W,id:A,position:{x:W.position.x+v,y:W.position.y+C},data:J,selected:!0}}),X=[...D.map(W=>({...W,selected:!1})),...U];if(a(X),d.id)try{const W=await u(d.id);if(!W)return;const I=U.filter(H=>H.type!=="start"&&H.type!=="group").map(H=>{const R=H.data;return{id:R.id,reference_graph:H.id,nombre:R.nombre||R.texto_corto||"Tarea sin nombre",texto_corto:R.texto_corto||"",texto_largo:R.texto_largo||"",prioridad:R.prioridad??0,nivel_dificultad:R.nivel_dificultad??0,dias_duracion:R.dias_duracion??0,plantilla:{id:d.id},parent:{data:{id:null}},tareas:[],plantilla_dependents:R.plantilla_dependents||[],start:R.start||!1,es_grupo:R.es_grupo||!1,optional:R.optional||!1,subtask_completadas:R.subtask_completadas||0,subtask_totales:R.subtask_totales||0}}),A={...W,tarea_plantillas:[...W.tarea_plantillas,...I],estatus:"dirty",updatedAt:new Date().toISOString()};await f(d.id,A),l(A),setTimeout(async()=>{await c(d.id,{nodes:X,edges:[]})},50)}catch(W){console.error("Error al actualizar template en IndexedDB:",W)}if(U.length>0){const W=U.reduce((A,H)=>A+H.position.x,0)/U.length,I=U.reduce((A,H)=>A+H.position.y,0)/U.length;n(W,I,{zoom:1,duration:800})}P.toast.success(`${U.length} ${U.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]),_=m().length>0;return{handleCopy:g,handlePaste:x,hasCopiedNodes:b,hasSelectableNodes:_,copiedNodesCount:r.length}},Tr={main:wr,plus:mr,start:gr,group:vr},Cr=[.5,0],Er=({initialNodes:t,initialEdges:a,debugEvents:s=!1})=>{const n=p.useRef(null),{nodes:r,edges:i,onEdgesChange:o,onConnect:d,onConnectEnd:l,onBeforeDelete:c,onDeleteNode:u,onEdgesDelete:f,handleNodesChange:h,newNodePopup:w,getParentNodeInfo:m,createNodeFromPopup:g,closeNewNodePopup:x,connectionPopup:b,createConnectionFromPopup:j,closeConnectionPopup:_,onDragEnd:z,setNodes:D,setEdges:k}=yr({initialNodes:t,initialEdges:a}),{expandGroup:T,collapseGroup:v}=_r(r,i,D,k),{handleCopy:C,handlePaste:U,hasCopiedNodes:y,copiedNodesCount:X}=Nr();p.useEffect(()=>{if(!s)return;const re=we=>{console.log("🔍 [DEBUG] KeyDown:",{key:we.key,code:we.code,shiftKey:we.shiftKey,ctrlKey:we.ctrlKey,metaKey:we.metaKey,altKey:we.altKey,target:we.target,defaultPrevented:we.defaultPrevented,bubbles:we.bubbles,timestamp:new Date().toISOString()})},ce=we=>{console.log("🔍 [DEBUG] KeyUp:",{key:we.key,code:we.code,shiftKey:we.shiftKey,timestamp:new Date().toISOString()})},ue=we=>{var he,Ce;console.log("🔍 [DEBUG] Click:",{button:we.button,shiftKey:we.shiftKey,ctrlKey:we.ctrlKey,metaKey:we.metaKey,altKey:we.altKey,target:(he=we.target)==null?void 0:he.tagName,targetClass:(Ce=we.target)==null?void 0:Ce.className,defaultPrevented:we.defaultPrevented,bubbles:we.bubbles,timestamp:new Date().toISOString()})},xe=we=>{console.log("🔍 [DEBUG] MouseDown:",{button:we.button,shiftKey:we.shiftKey,ctrlKey:we.ctrlKey,metaKey:we.metaKey,defaultPrevented:we.defaultPrevented,timestamp:new Date().toISOString()})};return document.addEventListener("keydown",re,!0),document.addEventListener("keyup",ce,!0),document.addEventListener("click",ue,!0),document.addEventListener("mousedown",xe,!0),console.log("🔍 [DEBUG] Event listeners activados. Presiona Shift + Click en un nodo para ver los eventos."),()=>{document.removeEventListener("keydown",re,!0),document.removeEventListener("keyup",ce,!0),document.removeEventListener("click",ue,!0),document.removeEventListener("mousedown",xe,!0),console.log("🔍 [DEBUG] Event listeners desactivados.")}},[s]);const I=r.filter(re=>!(!re.selected||re.type==="start"||re.id==="start"||re.type==="group")).length,A=I>0,H=p.useRef(T),R=p.useRef(v);p.useEffect(()=>{H.current=T,R.current=v},[T,v]),p.useEffect(()=>{const re=async(ue,xe)=>{H.current&&await H.current(ue,xe)},ce=ue=>{R.current&&R.current(ue)};ve.setState({expandGroup:re,collapseGroup:ce})},[]);const{zoomPercentage:G,handleZoomIn:ie,handleZoomOut:J,handleZoomTo100:te,handleDoubleClick:ae}=xr({reactFlowWrapper:n,nodes:r}),{getViewMode:E}=ve(),{activeTemplate:q}=Me(),O=(q!=null&&q.id?E(q.id):"readonly")==="readonly";p.useEffect(()=>{if(O)return;const re=ce=>{const ue=ce.target;ue.tagName==="INPUT"||ue.tagName==="TEXTAREA"||ue.isContentEditable||((ce.ctrlKey||ce.metaKey)&&ce.key==="c"&&(ce.preventDefault(),C()),(ce.ctrlKey||ce.metaKey)&&ce.key==="v"&&(ce.preventDefault(),U()))};return document.addEventListener("keydown",re),()=>{document.removeEventListener("keydown",re)}},[C,U,O]);const L=p.useCallback((re,ce)=>{const ue=re.target;ue.tagName==="BUTTON"||ue.closest("button")||ue.closest('[role="button"]')||ue.classList.contains("nopan")||ue.classList.contains("nodrag")},[]),Q=p.useCallback(re=>{const ce=re.filter(ue=>{var xe,we;if(ue.type==="position"&&ue.dragging===!1){const he=r.find(Ce=>Ce.id===ue.id);if(he&&ue.position){const Ce=Math.abs((ue.position.x||0)-(((xe=he.position)==null?void 0:xe.x)||0)),_e=Math.abs((ue.position.y||0)-(((we=he.position)==null?void 0:we.y)||0));if(Ce<3&&_e<3)return!1}}return!0});ce.length>0&&h(ce)},[h,r]),F=O?void 0:o,S=O?void 0:Q,B=O?void 0:d,M=O?void 0:l,N=O?void 0:c,K=O?void 0:z,$=O?void 0:u,Y=O?void 0:f,se=O?null:["Backspace","Delete"],pe=O?{nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,nodesFocusable:!1,draggable:!1,connectOnClick:!1}:{nodesDraggable:!0,nodesConnectable:!0,elementsSelectable:!0,edgesFocusable:!0,nodesFocusable:!0,draggable:!1,connectOnClick:!0,elevateNodesOnSelect:!0},fe=()=>{if(b)return{tarea:{dependiente:!0,hija:!0},plantilla:{dependiente:!0}}};return e.jsxs("div",{className:"wrapper",ref:n,style:{width:"100%",height:"100vh"},children:[e.jsxs(ne.ReactFlow,{nodes:r,edges:i,nodeTypes:Tr,onEdgesChange:F,onNodesChange:S,onConnect:B,onConnectEnd:M,onBeforeDelete:N,onNodeDragStop:K,onNodesDelete:$,onEdgesDelete:Y,onNodeClick:L,...pe,fitView:!0,fitViewOptions:{padding:2},nodeOrigin:Cr,defaultEdgeOptions:{type:"smoothstep"},connectionLineType:ne.ConnectionLineType.SmoothStep,deleteKeyCode:se,multiSelectionKeyCode:O?null:"Shift",selectionOnDrag:!1,panOnDrag:O?!0:[0],nodeClickDistance:15,selectNodesOnDrag:!1,nodeDragThreshold:10,autoPanOnNodeDrag:!1,autoPanOnConnect:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",children:[e.jsx(ne.Background,{}),!O&&e.jsx(ne.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(ne.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:[q.estatusFromStrapi===ke.PUBLISHED&&e.jsx(P.Tag,{color:"green",variant:"outlined",borderable:!1,label:"Publicado",size:"lg",rounded:!0,badgeColor:"green"}),q.estatusFromStrapi===ke.DRAFT&&e.jsx(P.Tag,{color:"neutral",variant:"outlined",borderable:!1,label:"Borrador",size:"lg",rounded:!0})]}),!O&&I>0&&e.jsxs("p",{className:"tw-text-blue-dark-500 ui-text-xs tw-font-medium",children:[I," ",I===1?"tarea seleccionada":"tareas seleccionadas"]})]})}),e.jsx(ne.Panel,{position:"top-right",className:"tw-m-0",children:e.jsxs("div",{className:"tw-flex tw-gap-2",children:[!O&&e.jsxs(P.ButtonGroup,{children:[e.jsxs(P.Button,{icon:"CopyOutlined",onClick:C,disabled:!A,variant:A?"button":"outlined",color:A?"blue-dark":"neutral",title:A?`Copiar ${I} ${I===1?"tarea":"tareas"} (Ctrl+C)`:"Selecciona tareas para copiar (mantén Shift y haz clic)",children:["Copiar ",I>0&&`(${I})`]}),e.jsxs(P.Button,{icon:"DocumentOutlined",onClick:()=>U(),disabled:!y(),variant:"outlined",color:"neutral",title:y()?`Pegar ${X} ${X===1?"tarea":"tareas"} (Ctrl+V)`:"No hay tareas copiadas",children:["Pegar ",X>0&&`(${X})`]})]}),e.jsxs(P.ButtonGroup,{color:"white",variant:"outlined",children:[e.jsx(P.Button,{icon:"Minus2Outlined",onClick:J}),e.jsxs(P.Button,{onClick:te,onDoubleClick:ae,children:[G,"%"]}),e.jsx(P.Button,{icon:"Plus1Outlined",onClick:ie})]})]})})]}),w&&e.jsx(fr,{isOpen:w.isOpen,position:w.position,onClose:x,createNodeFromPopup:g,parentNodeInfo:m()}),b&&e.jsx(jr,{isOpen:b.isOpen,onClose:_,createConnectionFromPopup:j,availableConnections:fe()})]})},Sr=({initialNodes:t,initialEdges:a,debugEvents:s})=>e.jsx(ne.ReactFlowProvider,{children:e.jsx(Er,{initialNodes:t,initialEdges:a,debugEvents:s})}),Ve=Le.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 Nt(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}=Ie(),{tasks_api:w}=me(),m=Ve(E=>E.step),{data:g,error:x,isSuccess:b,isError:j}=de.useQuery({queryKey:["paramsTipoPlantilla"],queryFn:async()=>{const E=Ae.stringify({populate:{params_plantillas:{fields:["id","abbreviation","name","active","tipomedio_nombre","reference_id"]}},sort:["order:asc"],fields:["id","step","key","label","order"]},{encodeValuesOnly:!0}),q=await w.get(`/api/params-tipos?${E}`);return q.data?{paramsTiposPlantilla:be(q.data.data)}:{paramsTiposPlantilla:[]}}});p.useEffect(()=>{x&&j&&console.log(x)},[x,j]),p.useEffect(()=>{if(g&&b){const E=g.paramsTiposPlantilla;s(E)}},[g,b]);const _={fase_plantilla:(E,q)=>{d({fase_plantilla:E}),h({fase_plantilla:q})},tipo_plantilla:(E,q)=>{d({tipo_plantilla:E}),h({tipo_plantilla:q})},modo_configuracion:(E,q)=>{d({modo_configuracion:E}),h({modo_configuracion:q})},categoria:(E,q)=>{d({categoria:E}),h({categoria:q})},formato_salida:(E,q)=>{d({formato_salida:E}),h({formato_salida:q})},tipo_medio:(E,q)=>{d({tipo_medio:E}),h({tipo_medio:q})},medio_especifico:(E,q)=>{d({medio_especifico:E}),h({medio_especifico:q})},responsable_impresion:(E,q)=>{d({responsable_impresion:E}),h({responsable_impresion:q})},pertenencia_medio:(E,q)=>{d({pertenencia_medio:E}),h({pertenencia_medio:q})},ubicacion_medio:(E,q)=>{d({ubicacion_medio:E}),h({ubicacion_medio:q})}},z={fase_plantilla:(E,q)=>i({field:E,value:q}),tipo_plantilla:(E,q)=>i({field:E,value:q}),categoria:(E,q)=>i({field:E,value:q}),tipo_medio:(E,q)=>i({field:E,value:q}),medio_especifico:(E,q)=>i({field:E,value:q}),responsable_impresion:(E,q)=>i({field:E,value:q}),pertenencia_medio:(E,q)=>i({field:E,value:q}),ubicacion_medio:(E,q)=>i({field:E,value:q})},D={Digital:{execute:()=>{const E=a.filter(O=>O.step===3).find(O=>O.key==="responsable_impresion").params_plantillas.find(O=>O.name==="N/A").id,q="step3.responsable_impresion",ee=["responsable_impresion"];d({responsable_impresion:"N/A"}),t(q,E),c({fields:ee,value:!0}),i({field:"responsable_impresion",value:"NA"})}},Impreso:{execute:()=>{const E="step3.responsable_impresion",q=["responsable_impresion"];d({responsable_impresion:""}),t(E,""),c({fields:q,value:!1}),i({field:"responsable_impresion",value:""})}}},k={"Sitios Fijos":{execute:()=>X()},"Vallas Móviles":{execute:()=>W()},Indoors:{execute:()=>X()},Camiones:{execute:()=>I()},"Brand Riders":{execute:()=>I()}},T={"Sitios Fijos":{execute:()=>y()},"Vallas Móviles":{execute:()=>y()},Indoors:{execute:()=>y()},Camiones:{execute:()=>{U(),D.Impreso.execute()}},"Brand Riders":{execute:()=>{U(),D.Impreso.execute()}}},v={"Sitios Fijos":{execute:()=>C()},"Vallas Móviles":{execute:()=>U()},Indoors:{execute:()=>C()},Camiones:{execute:()=>U()},"Brand Riders":{execute:()=>U()}},C=()=>{const E=["medio_especifico"],q=o.modo_configuracion,ee=`step${m}.medio_especifico`,O=`step${m}.formato_salida`;c(q==="Default"?{fields:E,value:!0}:{fields:E,value:!1}),d({medio_especifico:""}),d({formato_salida:""}),t(ee,""),t(O,""),i({field:"medio_especifico",value:""}),i({field:"formato_salida",value:""})},U=()=>{const E=a.filter(L=>L.step===m).find(L=>L.key==="formato_salida").params_plantillas.find(L=>L.name==="Impreso").id,q=`step${m}.formato_salida`,ee=["formato_salida","medio_especifico"],O=`step${m}.medio_especifico`;d({medio_especifico:""}),d({formato_salida:"Impreso"}),t(q,E),t(O,""),i({field:"medio_especifico",value:""}),i({field:"tipo_medio",value:o.tipo_medio}),c({fields:ee,value:!0})},y=()=>{const E=["formato_salida"],q=`step${m}.formato_salida`,ee={};ee.formato_salida="",d(ee),t(q,""),c({fields:E,value:!1})},X=()=>{const E=["formato_salida","medio_especifico"],q=`step${m}.formato_salida`,ee={};ee.formato_salida="",d(ee),t(q,""),c({fields:E,value:!1})},W=()=>{const E=["formato_salida"],q=["medio_especifico"],ee=`step${m}.formato_salida`,O=`step${m}.medio_especifico`,L={};L.formato_salida="",L.medio_especifico="",d(L),t(ee,""),t(O,""),c({fields:E,value:!1}),c({fields:q,value:!0})},I=()=>{const E=a.filter(L=>L.step===m).find(L=>L.key==="formato_salida").params_plantillas.find(L=>L.name==="Impreso").id,q=`step${m}.formato_salida`,ee=`step${m}.medio_especifico`,O=["formato_salida","medio_especifico"];d({formato_salida:"Impreso"}),t(q,E),t(ee,""),c({fields:O,value:!0}),D.Impreso.execute()},A=(E,q)=>{Object.keys(Bt).includes(E)&&Bt[E][q].fieldsToClear.forEach(L=>{const Q={};Q[L]="",d(Q),i({field:L,value:""}),t&&[...new Set(a.map(S=>S.step))].forEach(S=>{const B=`step${S}.${L}`;t(B,"")})})},H=(E,q,ee)=>E==="modo_configuracion"&&ee?Ht[E][ee][q].fieldsToEnableDisable:Ht[E][q].fieldsToEnableDisable,R=E=>a.filter(q=>q.step===E),G=E=>{var q;return n[E]||((q=a.find(ee=>ee.key===E))==null?void 0:q.params_plantillas)},ie=E=>{var ee,O,L;let q=[];E==="Sitios fijos"?q=(ee=a.find(Q=>Q.key==="medio_especifico"))==null?void 0:ee.params_plantillas.filter(Q=>Q.tipomedio_nombre==="OOH"):E==="Indoors"?q=(O=a.find(Q=>Q.key==="medio_especifico"))==null?void 0:O.params_plantillas.filter(Q=>Q.tipomedio_nombre==="InDoor"):q=(L=a.find(Q=>Q.key==="medio_especifico"))==null?void 0:L.params_plantillas,r(Q=>({...Q,medio_especifico:q}))},J=(E,q)=>{const ee=E.key;if($t.includes(ee)&&ee==="tipo_medio"){const O=q.label,L=o.fase_plantilla,Q=o.modo_configuracion;if(L==="Preventa"){ie(O);return}else if(Q==="Especifico"){ie(O);return}}},te=(E,q,ee)=>{const O=E.params_plantillas.find(L=>E.key==="categoria"?L.reference_id===q.value:L.id===q.value);if(O){const L=E.key,Q=q.label;if(_[L](Q,ee),zt.includes(L))if(A(L,Q),L==="fase_plantilla"){const S=H(L,Q);c({fields:["categoria","modo_configuracion","tipo_plantilla"],value:!0}),S.length>0&&c({fields:S,value:!1})}else if(L==="modo_configuracion"){const F=Q,S=o.fase_plantilla,B=H(L,F,S);c({fields:["medio_especifico","formato_salida"],value:!0}),B.length>0&&c({fields:B,value:!1})}else if(L==="tipo_medio"){const F=Q,S=o.modo_configuracion;o.fase_plantilla==="Venta"?S==="Especifico"?k[F].execute():T[F].execute():S==="Especifico"&&v[F].execute()}else if(L==="formato_salida")D[Q].execute();else{const F=H(L,Q);F.length>0&&c({fields:F,value:!1})}if(Rt.includes(L)){let F="",S="";if(L==="formato_salida"){const B=o.modo_configuracion,M=Q;S="tipo_medio",F=B==="Default"&&M==="Digital"?F="DDG":F="DRP"}else S=L,F=O.abbreviation;z[S](S,F)}$t.includes(L)&&J(E,q)}},ae=()=>{if(o){const E=o.fase_plantilla;if(E==="Preventa"){const q=o.modo_configuracion,ee=f.fase_plantilla||"XX";let O=null;if(q==="Default")O=f.tipo_medio||"XXX";else{const Q=o.tipo_medio;["Vallas Móviles","Camiones","Brand Riders"].includes(Q)?O=f.tipo_medio||"XXX":O=f.medio_especifico||"XXX"}const L=`${ee}-${O}`;u(L)}if(E==="Venta"){const q=f.fase_plantilla||"XX",ee=f.tipo_plantilla||"XXX",O=f.categoria||"XX",L=f.medio_especifico||f.tipo_medio||f.modo_configuracion||"XXX",Q=f.responsable_impresion||"XX",F=f.pertenencia_medio||"X",S=f.ubicacion_medio||"X",B=`${q}-${ee}-${O}-${L}-${Q}-${F}-${S}`;u(B)}}};return p.useEffect(()=>{ae()},[f]),{templateFields:a,getFieldsByStep:R,dropdownFunctionsUpdateClave:z,fieldsForUpdateClave:Rt,resetTemplateFormData:l,fieldsWithDisableTrigger:zt,getFieldsToDisable:H,handleOptionSelected:te,getFilteredOptions:G,dropdownFunctionsUpdateFormData:_}}const Tt=()=>{const{control:t,setValue:a}=Ne.useFormContext(),s=Ve(c=>c.step),{getFieldsByStep:n,handleOptionSelected:r,getFilteredOptions:i}=Nt(a),{disabledFields:o}=Ie(),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(Ne.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(P.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(Tt,{})}),Dr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Tt,{})}),Fr=()=>e.jsx("div",{className:"tw-flex tw-flex-col tw-gap-y-4",children:e.jsx(Tt,{})}),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 Lr(t,a){const{clave:s,paramsTipo:n,currentTemplateForEdit:r,isEditTemplate:i,setDisableField:o,setClaveParams:d,isDuplicateTemplate:l,templateFormData:c}=Ie(),{tasks_api:u}=me(),{getFieldsByStep:f,dropdownFunctionsUpdateFormData:h,templateFields:w}=Nt(),m=()=>{var D;try{const k={},T=t(),v=Ar(T),{step1:C}=v,U=[];k.clave=s,C.categoria!=""&&(k.categoria=C.categoria);for(const[y,X]of Object.entries(v))for(const[W,I]of Object.entries(X)){const A={id:null,params_tipo:{id:null}};if(I!=""){const H=n[W];if(W==="categoria"){const R=w.find(ie=>ie.key==="categoria"),G=(D=R==null?void 0:R.params_plantillas)==null?void 0:D.find(ie=>ie.reference_id===I);A.id=G==null?void 0:G.id}else A.id=I;A.params_tipo.id=H,U.push(A)}}return Object.keys(U).length>0&&(k.params_plantillas=U),k}catch(k){console.log(k)}},g=async D=>{var k;try{let T=null;return i?T=await u.put(`/api/plantillas/${r.id}`,{data:D}):T=await u.post("/api/plantillas",{data:D}),T.data?be(T.data):null}catch(T){throw console.error("Error en saveTemplateToStrapi:",{error:T.message,status:(k=T.response)==null?void 0:k.status}),T}},x=async D=>{var k;try{const T=Ae.stringify({filters:{plantilla:{id:D}}},{encodeValuesOnly:!0}),v=await u.get(`/api/plantillas/plantilla-tareas-grafico?${T}`);return v.data?be(v.data.data):null}catch(T){throw console.error("Error en getTemplateWithTasks:",{error:T.message,status:(k=T.response)==null?void 0:k.status}),T}},b=async()=>{try{let D=m();const k=await g(D);if(!k)return{success:!1,message:"No se pudo guardar el flujo de trabajo en Strapi",error:"templateData es null"};const T=await x(k.id);return T?{success:!0,message:"Flujo de trabajo creado y sincronizado completamente",data:T}:{success:!1,message:"No se pudieron obtener los datos completos del flujo de trabajo",error:"completeData es null"}}catch(D){const{response:{data:k}}=D,T=Or(k.error);return console.error("Error al guardar el flujo de trabajo: ",{level:T.failureLevel,message:T.errorMessage,technicalDetails:T.technicalDetails}),{success:!1,message:T.errorMessage,error:T.technicalDetails}}},j=()=>{const{params_plantillas:D}=r;let k={};[1,2,3].forEach(v=>{const C=`step${v}`;k[C]={},f(v).forEach(y=>{var W;const X=D.find(I=>I.params_tipo.key===y.key);if(X){let I=null;if(y.key==="categoria"){const A=(W=y.params_plantillas)==null?void 0:W.find(H=>H.id===X.id);I=(A==null?void 0:A.reference_id)||X.id}else I=X.id;k[C][y.key]=I}})}),a(k)},_=()=>{const{params_plantillas:D}=r;for(const k of D){const{params_tipo:{id:T,key:v},name:C,id:U}=k,y=w.find(X=>X.key===v).params_plantillas.find(X=>X.id===U);h[v](C,T),y&&d({field:v,value:y.abbreviation})}},z=()=>{try{const{fase_plantilla:D,modo_configuracion:k,formato_salida:T,tipo_medio:v}=c;if(D==="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(v)||o({fields:["formato_salida","medio_especifico"],value:!0}),T==="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(v)&&o({fields:["formato_salida","medio_especifico"],value:!1}),["Vallas Móviles"].includes(v)&&(o({fields:["formato_salida"],value:!1}),o({fields:["medio_especifico"],value:!0})),["Camiones","Brand Riders"].includes(v)&&o({fields:["formato_salida","medio_especifico"],value:!0}),T==="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 C=["formato_salida","medio_especifico","responsable_impresion","pertenencia_medio","ubicacion_medio"];o({fields:["tipo_medio"],value:!1}),o({fields:C,value:!0})}else["Sitios Fijos","Indoors"].includes(v)?(o({fields:["formato_salida"],value:!0}),o({fields:["medio_especifico"],value:!1})):o({fields:["responsable_impresion","pertenencia_medio","ubicacion_medio"],value:!0})}catch(D){console.error("Error al aplicar reglas de habilitar y deshabilitar campos",D)}};return p.useEffect(()=>{(i||l)&&r&&(j(),_())},[i,l]),p.useEffect(()=>{(i||l)&&c&&z()},[i,c,l]),{savePlantilla:b,getTemplateWithTasks:x}}const qr=()=>{const{watch:t,getValues:a}=Ne.useFormContext(),{templateFormData:s,isDuplicateTemplate:n,currentTemplateForEdit:r}=Ie(),[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}=qr(),{setHasFormChanges:n}=Ie();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(ee=>ee.reset),{templateFields:d,resetTemplateFormData:l}=Nt(),{clave:c,resetClave:u,resetDisabledFields:f,isEditTemplate:h,setIsEditTemplate:w,refetch:m,isDuplicateTemplate:g,hasFormChanges:x,setIsDuplicateTemplate:b}=Ie(),{openTemplate:j}=Oe(),[_,z]=p.useState(!1),[D,k]=p.useState(""),[T,v]=p.useState(!1),C=p.useRef(null),U=ee=>{C.current=ee},y=Mr(d),X=s===1,W=s===3,I=X?"Cancelar":"Atrás";p.useEffect(()=>{t&&o()},[t,o]);const A=Ne.useForm({mode:"onChange",defaultValues:y}),{trigger:H,reset:R,clearErrors:G,getValues:ie}=A,{savePlantilla:J}=Lr(ie,R),te=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."),v(!0);return}try{z(!0);const O=await J();if(O.success){const L=O.data;if(q(),E(),v(!1),!h)try{await j({template:L,statusTemplate:ye.NEW})}catch(Q){console.warn("La plantilla se creó exitosamente pero hubo un problema al abrirla:",Q)}m()}else{const{error:L}=O;k(L),v(!0)}}catch(O){console.error("Error inesperado al guardar la plantilla:",O);return}finally{z(!1)}}n()}},ae=()=>{k(""),v(!1)},E=()=>{G(),R(),l(),f(),u(),ae(),h&&w(!1),g&&b(!1),C.current&&C.current()},q=()=>{E(),a()};return _?e.jsx(Ye,{isLoading:_}):e.jsxs(Ne.FormProvider,{...A,children:[e.jsx(Rr,{onReset:U}),e.jsx(P.Modal,{isOpen:t,closeAtCancel:!1,onSuccess:te,cancelButtonText:I,successButtonText:W?h?"Guardar":"Crear":"Continuar",onCancel:X?q:r,onClose:q,size:"sm",icon:"PlantillaOutlined",title:h?"Editar flujo de trabajo":"Nuevo flujo de trabajo",children:e.jsxs(P.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(P.Stepper,{currentStep:s-1,onStepChange:ee=>i(ee+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:[T&&e.jsx(P.Alert,{open:!0,variant:"outlined",color:"red",message:D,className:"tw-mb-6",onClose:ae}),e.jsx(Pr,{step:s})]})]})})]})},$r=({isOpen:t,onClose:a,replaceTemplate:s})=>e.jsx(e.Fragment,{children:e.jsx(P.Modal,{isOpen:t,closeAtCancel:!1,cancelButtonText:"Cancelar",successButtonText:"Abrir",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ExclamationTriangleOutlined",title:"Límite de flujos de trabajo",children:e.jsx(P.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(P.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=Le.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(P.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(P.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(P.Icon,{name:"SaveOutlined",size:"6xl",color:"blue"})})}),e.jsx("div",{className:"tw-flex tw-flex-col tw-mx-6",children:e.jsx(P.Alert,{open:!0,variant:"outlined",color:"red",showCloseButton:!1,message:"Tienes cambios sin guardar en este flujo de trabajo",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(P.Button,{variant:"outlined",color:"white",onClick:()=>{s(),a()},children:"Descartar cambios"})})]})})})}),Ra=({isOpen:t,onClose:a,publishTemplate:s})=>e.jsx(P.Modal,{isOpen:t,closeAtCancel:!0,cancelButtonText:"Cancelar",successButtonText:"Confirmar",onCancel:a,onClose:a,onSuccess:s,size:"sm",icon:"ArrowUpOutlined",title:"Publicar",children:e.jsx(P.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(P.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}=Ie(),{removeTemplateStates:f}=Xe(),{mode:h,setMode:w,setViewMode:m,getViewMode:g}=ve(),{setCanCreateTemplate:x,canCreateTemplate:b}=Br(),j=h===t,{screens:_,get:z,delete:D,activeTemplate:k,activateTemplate:T,reorderingTemplates:v,replaceTemplate:C,saveTemplateChanges:U,publishTemplate:y,loadingPublishTemplate:X,loadingSaveChanges:W}=Oe(),I=178,[A,H]=p.useState([]),[R,G]=p.useState([]),[ie,J]=p.useState(null),[te,ae]=p.useState(!1),E=k!=null&&k.id?g(k.id):"readonly";p.useEffect(()=>{const $=()=>{if(!s.current)return;const se=s.current.offsetWidth;let oe=0;const le=[],pe=[],fe=10,re=s.current.querySelector("button:not([data-screen])"),ce=s.current.querySelector(".tw-mx-1");let ue=0;re&&(ue+=re.getBoundingClientRect().width),ce&&_.length>0&&(ue+=ce.getBoundingClientRect().width,ue+=fe);const xe=(he,Ce)=>{const Qe=Ce?54:0,at=(he==null?void 0:he.length)*8;return Math.max(80,at+40+Qe)},we=se-I-ue;_.forEach((he,Ce)=>{const _e=!!(he.isNew||he.badgeLabel),Se=xe(he.clave,_e),Fe=Ce>0?fe:0,Qe=Se+Fe;oe+Qe<=we?(le.push(he),oe+=Qe):pe.push(he)}),H(le),G(pe)},Y=()=>{const se=_.length;x(se)};return _.length>0&&($(),Y(),window.addEventListener("resize",$)),()=>{window.removeEventListener("resize",$)}},[_,h]);const q=$=>$.estatus===ye.DIRTY||$.estatus===ye.NEW,ee=async $=>{q($)?(J($.id),d(!0)):await D($.id)},O=()=>u(!0),L=async()=>{await D(ie),await f(ie)},Q=async()=>{await U(!1)},F=async()=>{await U()},S=()=>{var Y,se;const $=(se=(Y=k==null?void 0:k.graph_layout)==null?void 0:Y.snapshot)==null?void 0:se.nodes.length;ae(()=>$-1>=1)};p.useEffect(()=>{S()},[k,E]);const B=()=>!((k==null?void 0:k.estatus)==ye.IDLE&&te&&k.estatusFromStrapi!==ke.PUBLISHED),M=()=>{var Y;const{nodes:$}=(Y=k==null?void 0:k.graph_layout)==null?void 0:Y.snapshot;return $==null?void 0:$.some(se=>se.type!=="start"&&(se==null?void 0:se.data.tarea_padre)===null&&(se==null?void 0:se.data.id_t_requerida)===null)},N=()=>(k==null?void 0:k.estatus)===ye.IDLE||M()?!0:!te,K=async()=>{await y(k.id)};return W||X?e.jsx(Ye,{isLoading:W||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:C}),e.jsx(Hr,{isOpen:l,onClose:()=>d(!1),discardChanges:L,saveAndExit:F}),e.jsx(Ra,{isOpen:c,onClose:()=>u(!1),publishTemplate:K}),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(P.Button,{variant:j?"button":"outlined",color:j?"blue":"white",onClick:()=>w(t),children:"Listado de flujos"}),_.length>0&&e.jsx(P.Separator,{vertical:!0,className:"tw-mx-1"}),_.filter($=>A.some(Y=>Y.clave===$.clave)).map($=>{const Y=(k==null?void 0:k.clave)===$.clave&&h===a;return e.jsxs(P.Button,{"data-screen":$.clave,variant:Y?"button":"outlined",onClick:async()=>{await T($),w(a,$.id)},color:Y?"blue":"white",slotLeft:"TaskOutlined",badgeColor:q($)?"orange":void 0,onClickRightSlot:()=>ee($),slotRight:"X2Outlined",children:[$.clave," ",$.status]},$.id)})]}),R.length>0&&e.jsx(P.Popup,{absolute:!0,slotRight:"AngleDownOutlined",label:`${R.length}+`,size:"lg",textColor:"blue",children:e.jsx("div",{className:"ui-py-2 ui-min-w-[250px]",children:e.jsx(P.List,{icon:"TaskOutlined",items:R.map($=>({id:$.id,label:$.clave})),onClick:async $=>{const Y=await z($.id);await v(Y.id),await T(Y),w("create-edit",Y.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!==ke.PUBLISHED&&e.jsxs(e.Fragment,{children:[e.jsx(P.Button,{color:"green",variant:"outlined",slotLeft:"ArrowUpOutlined",disabled:B(),onClick:O,children:"Publicar"}),E=="readonly"&&e.jsx(P.Button,{slotLeft:"EditOutlined",onClick:()=>(k==null?void 0:k.id)&&m(k.id,"edit"),children:"Editar"}),E==="edit"&&e.jsx(P.Button,{slotLeft:"SaveOutlined",onClick:Q,disabled:N(),children:"Guardar"})]})}):e.jsx(P.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:"Nuevo flujo"})]})},Wr=({isOpen:t,onClose:a,deleteTemplate:s})=>e.jsx(P.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:""}),Kr=()=>{const{viewMode:t,setRefetch:a,openModalPublishTemplate:s,setOpenModalPublishTemplate:n,currentTemplateId:r,setOpenModalDeleteTemplate:i,openModalDeleteTemplate:o}=Ie(),{publishTemplate:d,deleteTemplate:l}=Oe(),{debouncedSearch:c,filters:u}=Ln("templates-container"),f=t==="list",[h,w]=p.useState(1),m=5,{data:g,isLoading:x,isFetching:b,refetch:j}=La({page:h,pageSize:m,search:c,filters:u});p.useEffect(()=>{a(j)},[]),p.useEffect(()=>{w(1)},[u,c]);const{users:_}=Ge(),{getImageOBP:z}=me(),D=C=>{if(!(C!=null&&C.email))return"";const U=_==null?void 0:_[C==null?void 0:C.email];return U!=null&&U.image?z(U==null?void 0:U.image):""},k=p.useMemo(()=>{try{return!g||!_?[]:g.data.map(C=>{const U=D((C==null?void 0:C.updated_by)||(C==null?void 0:C.created_by));return{...C,updated_by:{...C.updated_by,image:U}}})}catch(C){return console.error("Error al mapear las plantillas:",C),[]}},[g,_]),T=async()=>{await d(r),await j()},v=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:T}),e.jsx(Wr,{isOpen:o,onClose:()=>i(!1),deleteTemplate:v}),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(C=>e.jsx(Pa,{fullWidth:f,template:C},C.id))}),e.jsx("div",{children:e.jsx(P.Pagination,{pageSize:m,pageCount:g==null?void 0:g.meta.pagination.pageCount,currentPage:h,onPageChange:C=>w(C)})})]})},za=()=>{var o,d,l,c;const t="grid",a="create-edit",{mode:s}=ve(),n=s===t,r=s===a,i=Me(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(Kr,{}),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)||[]})]})},Gr=()=>({header:e.jsx(Kn,{}),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(Z.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}=Ke();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(Z.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}=De(),[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 v;l(c==="lista-campanias"?"lista":c==="kanban-campania"?"kanban":c==="teams-container"?"teams":c==="templates-container"?"templates":"kanban"),s(c),x(((v=w.find(C=>C.path===c))==null?void 0:v.search)??"")},[t,c]),p.useEffect(()=>{var v;((v=k())==null?void 0:v.trim())===""&&n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:null}),r()},[w]);const j=v=>({"kanban-general":"Kanban General","lista-campanias":"Campanias","teams-container":"Equipos","kanban-campania":`Kanban de ${f.project}`,"templates-container":"Flujos de trabajo"})[v],_=v=>{u(v)},z=["lista-campanias","kanban-campania"],D={"lista-campanias":["lista","gantt"],"kanban-campania":["kanban","lista","gantt"],"teams-container":["teams"],"templates-container":["templates"]},k=()=>{var v;return((v=w.find(C=>C.path===c))==null?void 0:v.search)??""},T=v=>{m(C=>C.map(U=>U.path===c?{...U,search:v}:U))};return p.useEffect(()=>{const v=setTimeout(()=>{n({name:c==="lista-campanias"||c==="teams-container"||c==="templates-container"?"search":"taskName",value:g==null?void 0:g.trim()}),T(g)},500);return()=>{clearTimeout(v)}},[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:()=>_("lista-campanias"),className:"tw-text-primary hover:tw-text-primary/80 tw-flex tw-items-center tw-transition-colors",children:e.jsx(Z.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)}),z.includes(c)&&e.jsx(Xr,{tabs:D[c],renderItem:v=>{l(v)},initialTab:d})]}),e.jsxs("div",{className:"tw-flex tw-items-center tw-gap-s !tw-text-[16px]",children:[e.jsx(P.Input,{leftSlot:"SearchOutlined",onChange:v=>{x(v.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:_,project:f,setProject:h})})]})};return e.jsx(Ga,{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(P.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
|
@@ -10552,8 +10552,7 @@ const Hs = (e) => {
|
|
|
10552
10552
|
edgesFocusable: !1,
|
|
10553
10553
|
nodesFocusable: !1,
|
|
10554
10554
|
draggable: !1,
|
|
10555
|
-
connectOnClick: !1
|
|
10556
|
-
zoomOnPinch: !1
|
|
10555
|
+
connectOnClick: !1
|
|
10557
10556
|
} : {
|
|
10558
10557
|
nodesDraggable: !0,
|
|
10559
10558
|
nodesConnectable: !0,
|
|
@@ -10601,7 +10600,7 @@ const Hs = (e) => {
|
|
|
10601
10600
|
deleteKeyCode: re,
|
|
10602
10601
|
multiSelectionKeyCode: O ? null : "Shift",
|
|
10603
10602
|
selectionOnDrag: !1,
|
|
10604
|
-
panOnDrag: O ? !0 : [
|
|
10603
|
+
panOnDrag: O ? !0 : [0],
|
|
10605
10604
|
nodeClickDistance: 15,
|
|
10606
10605
|
selectNodesOnDrag: !1,
|
|
10607
10606
|
nodeDragThreshold: 10,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imj_media/tareas",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.30",
|
|
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",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"access": "public",
|
|
84
84
|
"registry": "https://registry.npmjs.org/@imjmedia"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "dfaeca149025acf9ffcbbc781c2e3a2d207d8468"
|
|
87
87
|
}
|