PageSourceSearch

https://chess-enigma-app.web.app/chunk-R52XIXKK.js

js chess-enigma-app.web.app collected 2026-10-03 12:21:12 UTC 52,630 bytes, 1 lines download raw bytes

1import{c as it,e as rt}from"./chunk-IACEPVNH.js";import{a as ot}from"./chunk-4MGU5X5Y.js";import{a as tt}from"./chunk-VUM4FFFM.js";import{a as nt}from"./chunk-XAYGRDLW.js";import{a as Y}from"./chunk-CRUCRX3R.js";import{a as et}from"./chunk-ZF3HGL3Z.js";import{a as ne}from"./chunk-DJXCVLBW.js";import{a as Ze}from"./chunk-LR2X2PXY.js";import{a as Xe}from"./chunk-3JUORT54.js";import{a as We}from"./chunk-ZRDGLI4E.js";import"./chunk-GSGUMTGM.js";import"./chunk-PMOJV6QQ.js";import"./chunk-UXI7YJC7.js";import"./chunk-SCBQOEJF.js";import"./chunk-TBURFRLC.js";import"./chunk-ZW5NKVSY.js";import{a as Ge,b as Ke,c as Qe,d as Ye}from"./chunk-HD53CZ7M.js";import"./chunk-SGWD7PZQ.js";import"./chunk-SXDBOREE.js";import"./chunk-OO74L2QA.js";import"./chunk-3QXL4HOC.js";import"./chunk-F45QDOS3.js";import"./chunk-JRZPIXE7.js";import"./chunk-KBACV6BQ.js";import{a as Je}from"./chunk-ZRS3HHTF.js";import"./chunk-XIWGCBY5.js";import"./chunk-V7Q5PJVD.js";import"./chunk-GME4YNVY.js";import"./chunk-VYLW6UQ6.js";import"./chunk-Q5YRW222.js";import"./chunk-ODNZTXMD.js";import"./chunk-R44JDMJH.js";import"./chunk-PUOSSHJC.js";import"./chunk-52DWRGCO.js";import{a as He}from"./chunk-PK5PD4UC.js";import"./chunk-OBXOIUL2.js";import"./chunk-VSM6V6ZC.js";import"./chunk-UGEWXZEJ.js";import{b as Ue}from"./chunk-ML4TWIDL.js";import"./chunk-WN2YBRS5.js";import"./chunk-BCMKBQ3A.js";import"./chunk-XBVAR2YW.js";import{a as je}from"./chunk-BTE4ZAUF.js";import"./chunk-Y4PVHYT7.js";import"./chunk-SDIFHJKO.js";import"./chunk-A4YL573F.js";import"./chunk-HZVWDVS2.js";import"./chunk-4B3PD3YC.js";import"./chunk-OC2LSDCS.js";import"./chunk-M7TYEF7H.js";import"./chunk-2WK4TXPQ.js";import"./chunk-DR76WQJQ.js";import"./chunk-JUPCIF2S.js";import"./chunk-FNJW4ZTD.js";import"./chunk-SPI3GMXG.js";import{i as Me}from"./chunk-6BYSG5EZ.js";import"./chunk-UGIFNT3X.js";import"./chunk-4DHQWB75.js";import"./chunk-R7ADOXKV.js";import"./chunk-ALBVXH6G.js";import"./chunk-EOJJDWTI.js";import{f as ve,h as Pe}from"./chunk-DPAD4UIL.js";import"./chunk-GMYZCGXV.js";import"./chunk-WKWY7JHI.js";import"./chunk-GAFVUD4K.js";import{k as te,l as qe}from"./chunk-2KXKJSUE.js";import"./chunk-LC6KWAXX.js";import"./chunk-ZDJJSUDB.js";import"./chunk-53NTHUG6.js";import"./chunk-RNVU3LRT.js";import"./chunk-C4QNY2AB.js";import"./chunk-MZIRWHHJ.js";import"./chunk-EQROQCMY.js";import"./chunk-TMX2E5KG.js";import"./chunk-EO7VI4QD.js";import"./chunk-I4HNPVCL.js";import"./chunk-G2E2DNTZ.js";import"./chunk-4PYZEU7N.js";import"./chunk-JBJSGCYH.js";import"./chunk-CR7BHW3F.js";import"./chunk-I5HEW3IT.js";import"./chunk-XF5YVPYW.js";import"./chunk-CFQEG5TK.js";import"./chunk-YJJVETWH.js";import{b as Ee}from"./chunk-BNYYUCHE.js";import{D as Le,E as K,d as v,g as G,p as Ie,t as Fe,v as Se,w as Oe,x as Te}from"./chunk-GVDE5OFA.js";import{b as H}from"./chunk-V3IAXK5A.js";import"./chunk-67HD4ZJV.js";import{a as ee}from"./chunk-TB3DALIN.js";import"./chunk-PU3PPWPM.js";import{X as Re,ec as $e}from"./chunk-BU5XIOZD.js";import"./chunk-MNI4OXUN.js";import{c as we,f as ke}from"./chunk-2NHBOERL.js";import"./chunk-SLCQ2VJK.js";import"./chunk-AVLXS3R5.js";import{a as A}from"./chunk-3R2OZJRH.js";import{Da as Ae,Fa as Q,M as Ve,Ua as Be,Z as ze,c as De,cb as Ne}from"./chunk-2I4F4LE4.js";import"./chunk-OGD4AQBU.js";import"./chunk-KRTPX3ZP.js";import"./chunk-SILQNNZP.js";import"./chunk-IQGMUASG.js";import"./chunk-RI6NV5IB.js";import"./chunk-TNS4L7RB.js";import"./chunk-YYMR3JOT.js";import{k as Ce}from"./chunk-SAMSZ2TJ.js";import{o as ye}from"./chunk-VOSR76PC.js";import{Ca as ce,Dc as u,Fc as c,Gd as U,Ka as I,Kb as T,Nd as xe,Pb as $,Qa as de,Rc as L,Tc as me,Uc as d,Vc as M,Wc as D,Yc as _e,cd as ue,dd as fe,ed as he,fc as S,hd as z,ic as g,id as q,jc as b,lc as F,mb as pe,mc as P,nb as Z,nc as w,oc as p,pc as r,pd as ge,qc as l,rc as m,rd as be,sa as E,t as R,tb as a,ya as f,yc as x,yd as j,za as h}from"./chunk-X6INATCZ.js";import{a as B,b as N,i as V}from"./chunk-U3SD5ENI.js";var W="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",J={K:["e1","K","h1","R"],Q:["e1","K","a1","R"],k:["e8","k","h8","r"],q:["e8","k","a8","r"]};function oe(o){let s={};return o.split(" ")[0].split("/").forEach((e,t)=>{let n=0;for(let i of e)/[1-8]/.test(i)?n+=Number(i):s[String.fromCharCode(97+n++)+(8-t)]=i}),s}function ie(o,s){let e=s==="w"?5:4;
1return[..."abcdefgh"].filter((t,n)=>{let i=s==="w"?"P":"p";return o[t+e]===(s==="w"?"p":"P")&&!o[t+(s==="w"?6:3)]&&!o[t+(s==="w"?7:2)]&&[n-1,n+1].some(_=>_>=0&&_<8&&o["abcdefgh"[_]+e]===i)}).map(t=>t+(s==="w"?6:3))}function X(o){try{let s=new Ue(o),e=o.split(" "),t=oe(o);for(let _ of e[2]==="-"?"":e[2]){let[k,C,y,O]=J[_];if(t[k]!==C||t[y]!==O)return"Revisa los reyes y las torres con derecho a enroque."}if(e[3]!=="-"&&(!ie(t,e[1]).includes(e[3])||e[4]!=="0"))return"La captura al paso no corresponde a la posici\xF3n y al turno.";let n=e[1]==="w"?"b":"w",i=Object.keys(t).find(_=>t[_]===(n==="w"?"K":"k"));return s.isAttacked(i,e[1])?"El rey del bando que acaba de mover no puede estar en jaque.":s.isGameOver()?"La posici\xF3n debe permitir continuar la partida.":null}catch(s){return"Posici\xF3n no v\xE1lida: coloca un rey de cada color y revisa las piezas y el FEN."}}var re=()=>({standalone:!0});function pt(o,s){if(o&1&&m(0,"img",17),o&2){let e=c().$implicit,t=c(2);p("src",t.pieceImage(e),Z)}}function mt(o,s){o&1&&d(0," Borrar ")}function _t(o,s){if(o&1){let e=x();r(0,"button",16),u("click",function(){let n=f(e).$implicit,i=c(2);return h(i.selected=n)}),g(1,pt,1,1,"img",17)(2,mt,1,0),l()}if(o&2){let e=s.$implicit,t=c(2);L("selected",t.selected===e),p("title",t.names[e]||"Borrar pieza"),S("aria-label",t.names[e]||"Borrar pieza")("aria-pressed",t.selected===e),a(),b(e?1:2)}}function ut(o,s){if(o&1&&m(0,"img",19),o&2){let e=c().$implicit,t=c(2);p("src",t.pieceImage(t.pieces[e]),Z)}}function ft(o,s){if(o&1){let e=x();r(0,"button",18),u("click",function(){let n=f(e).$implicit,i=c(2);return h(i.place(n))}),g(1,ut,1,1,"img",19),l()}if(o&2){let e=s.$implicit,t=c(2);S("aria-label",e+": "+(t.names[t.pieces[e]]||"vac\xEDa")),a(),b(t.pieces[e]?1:-1)}}function ht(o,s){if(o&1){let e=x();r(0,"label")(1,"input",20),u("change",function(n){let i=f(e).$implicit,_=c(2);return h(_.setRight(i,n.target.checked))}),l(),d(2),l()}if(o&2){let e=s.$implicit,t=c(2);a(),p("checked",t.parts[2].includes(e))("disabled",!t.canCastle(e)),a(),D(" ",t.rightNames[e])}}function gt(o,s){if(o&1&&(r(0,"option",14),d(1),l()),o&2){let e=s.$implicit;p("value",e),a(),M(e)}}function bt(o,s){if(o&1&&(r(0,"p",15),d(1),l()),o&2){let e=c(2);a(),M(e.error)}}function xt(o,s){if(o&1){let e=x();r(0,"p",2),d(1," El alumno jugar\xE1 con el bando que tenga el turno y ver\xE1 sus piezas desde abajo. Cambiar la orientaci\xF3n tambi\xE9n cambia el turno. "),l(),r(2,"div",3),P(3,_t,3,6,"button",4,F),r(5,"button",5),u("click",function(){f(e);let n=c();return h(n.reset(!1))}),d(6,"Posici\xF3n inicial"),l(),r(7,"button",5),u("click",function(){f(e);let n=c();return h(n.reset(!0))}),d(8,"Vaciar tablero"),l()(),r(9,"p"),d(10,"Selecciona una pieza y pulsa una casilla para colocarla. Usa Borrar para quitar piezas."),l(),r(11,"div",6)(12,"div",7),P(13,ft,2,2,"button",8,F),l(),r(15,"div",9)(16,"label"),d(17,"Turno del alumno"),r(18,"select",10),u("ngModelChange",function(n){f(e);let i=c();return h(i.setTurn(n))}),r(19,"option",11),d(20,"Blancas"),l(),r(21,"option",12),d(22,"Negras"),l()()(),r(23,"label"),d(24,"Orientaci\xF3n"),r(25,"select",10),u("ngModelChange",function(n){f(e);let i=c();return h(i.setTurn(n))}),r(26,"option",11),d(27,"Blancas abajo"),l(),r(28,"option",12),d(29,"Negras abajo"),l()()(),r(30,"fieldset")(31,"legend"),d(32,"Derechos de enroque"),l(),P(33,ht,3,3,"label",null,F),l(),r(35,"label"),d(36,"Captura al paso"),r(37,"select",10),u("ngModelChange",function(n){f(e);let i=c();return h(i.setEp(n))}),r(38,"option",13),d(39,"Ninguna"),l(),P(40,gt,2,2,"option",14,F),l()()()(),g(42,bt,2,1,"p",15)}if(o&2){let e=c();a(3),w(e.palette),a(10),w(e.squares),a(5),p("ngModel",e.turn)("ngModelOptions",z(7,re)),a(7),p("ngModel",e.turn)("ngModelOptions",z(8,re)),a(8),w(e.rights),a(4),p("ngModel",e.parts[3])("ngModelOptions",z(9,re)),a(3),w(e.epOptions),a(2),b(e.error?42:-1)}}var at=(()=>{class o{constructor(){this.control=U.required(),this.selected="P",this.palette=[..."KQRBNPkqrbnp",""],this.names={K:"Rey blanco",Q:"Dama blanca",R:"Torre blanca",B:"Alfil blanco",N:"Caballo blanco",P:"Pe\xF3n blanco",k:"Rey negro",q:"Dama negra",r:"Torre negra",b:"Alfil negro",n:"Caballo negro",p:"Pe\xF3n negro"},this.rights=["K","Q","k","q"],this.rightNames={K:"Blancas O-O",Q:"Blancas O-O-O",k:"Negras O-O",q:"Negras O-O-O"}}get fen(){return this.control().value??W}get parts(){return this.fen.split(" ")}get pieces(){return oe(this.fen)}get turn(){return this.parts[1]==="b"?"b":"w"}get squares(){let e=this.turn==="w"?"abcdefgh":"hgfedcba";return[...this.turn==="w"?"87654321":"12345678"].flatMap(n=>[...e].map(i=>i+n))}get epOptions(){return ie(this.pieces,this.turn)}get error(){return X(this.fen)}
1pieceImage(e){return"assets/chessground/images/pieces/merida/"+(e===e.toUpperCase()?"w":"b")+e.toUpperCase()+".svg"}write(e){this.control().setValue(e),this.control().markAsDirty(),this.control().markAsTouched()}enable(e){this.write(e?W:null)}canCastle(e){let[t,n,i,_]=J[e];return this.pieces[t]===n&&this.pieces[i]===_}setTurn(e){let t=this.parts;t[1]=e,t[3]="-",this.write(t.join(" "))}setRight(e,t){let n=this.parts;n[2]=this.rights.filter(i=>i===e?t:n[2].includes(i)).join("")||"-",this.write(n.join(" "))}setEp(e){let t=this.parts;t[3]=e,t[4]="0",this.write(t.join(" "))}reset(e){this.write(e?"8/8/8/8/8/8/8/8 "+this.turn+" - - 0 1":W)}place(e){let t=this.pieces;this.selected?t[e]=this.selected:delete t[e];let n=[..."87654321"].map(_=>{let k="",C=0;for(let y of"abcdefgh"){let O=t[y+_];O?(C&&(k+=C),C=0,k+=O):C++}return k+(C||"")}),i=this.parts;i[0]=n.join("/"),i[2]=this.rights.filter(_=>{let[k,C,y,O]=J[_];return i[2].includes(_)&&t[k]===C&&t[y]===O}).join("")||"-",i[3]="-",i[4]="0",this.write(i.join(" "))}static{this.\u0275fac=function(t){return new(t||o)}}static{this.\u0275cmp=T({type:o,selectors:[["admin-app-bot-position-editor"]],inputs:{control:[1,"control"]},decls:5,vars:3,consts:[[1,"position-editor",3,"disabled"],["type","checkbox",3,"change","checked"],["role","note",1,"info"],["aria-label","Piezas para colocar",1,"tools"],["type","button",3,"selected","title"],["type","button",3,"click"],[1,"layout"],["aria-label","Constructor de posici\xF3n",1,"board"],["type","button",1,"square"],[1,"settings"],[3,"ngModelChange","ngModel","ngModelOptions"],["value","w"],["value","b"],["value","-"],[3,"value"],["role","alert",1,"error"],["type","button",3,"click","title"],["alt","",1,"palette-piece",3,"src"],["type","button",1,"square",3,"click"],["alt","","draggable","false",3,"src"],["type","checkbox",3,"change","checked","disabled"]],template:function(t,n){t&1&&(r(0,"fieldset",0)(1,"label")(2,"input",1),u("change",function(_){return n.enable(_.target.checked)}),l(),d(3," Configurar posici\xF3n inicial"),l(),g(4,xt,43,10),l()),t&2&&(p("disabled",n.control().disabled),a(2),p("checked",n.control().value!==null),a(2),b(n.control().value!==null?4:-1))},dependencies:[Le,Oe,Te,Se,G,Ie],styles:["[_nghost-%COMP%]{display:block;margin-top:16px}.position-editor[_ngcontent-%COMP%]{color:#252525;background:#fff;border-radius:16px;padding:16px;font-size:.875rem}p[_ngcontent-%COMP%]{margin:12px 0}.tools[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.tools[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{min-height:40px;padding:4px 14px;border:1px solid #e5e5e5;border-radius:999px;background:#fff;color:#252525;font-weight:600;cursor:pointer}.tools[_ngcontent-%COMP%]   button.selected[_ngcontent-%COMP%]{background:#f0ce15}.layout[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px}.board[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(8,1fr);width:min(100%,420px);flex-shrink:0;
1background:url(/assets/chessground/images/board/blue.svg) center/100% 100%}.square[_ngcontent-%COMP%]{position:relative;aspect-ratio:1;padding:0;border:0;border-radius:0;background:transparent;color:#252525;cursor:pointer;font-size:1.875rem}.square[_ngcontent-%COMP%]   img[_ngcontent-%COMP%]{display:block;width:100%;height:100%;pointer-events:none}.palette-piece[_ngcontent-%COMP%]{display:block;width:28px;height:28px}.info[_ngcontent-%COMP%]{background:#e3f2fd;color:#1565c0;padding:12px 16px;border-radius:8px}.settings[_ngcontent-%COMP%]{flex:1;min-width:min(100%,300px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px}.settings[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{display:block}select[_ngcontent-%COMP%]{display:block;width:100%;min-height:40px;color:#252525;background:#fff;border:1px solid #e5e5e5;border-radius:8px;padding:8px}fieldset[_ngcontent-%COMP%]{min-width:0;margin:0;border:1px solid #e5e5e5;border-radius:8px}.error[_ngcontent-%COMP%]{color:#b3261e;background:#fce8e6;padding:12px;border-radius:8px}.position-editor[_ngcontent-%COMP%]{border:0;margin:0;min-width:0}"],changeDetection:0})}}return o})();var Ct=(o,s)=>s.id;function yt(o,s){if(o&1){let e=x();r(0,"span",8),u("click",function(n){f(e);let i=c().$index;return c().removePuzzle(i),h(n.stopPropagation())}),m(1,"bop-icon",4),l()}if(o&2){let e=c(2);a(),p("path",e.trashIcon)}}function vt(o,s){if(o&1){let e=x();r(0,"button",6),u("click",function(){let n=f(e).$index,i=c();return h(i.selectPuzzle(n))}),d(1),g(2,yt,2,1,"span",7),l()}if(o&2){let e=s.$implicit,t=s.$index,n=c();L("sp-editor__tab--active",t===n.activeIndex())("sp-editor__tab--invalid",!e.solvable),a(),D(" Puzzle ",t+1," "),a(),b(n.puzzles().length>1?2:-1)}}function Pt(o,s){if(o&1){let e=x();r(0,"button",24),u("click",function(){let n=f(e).$implicit,i=c(2);return h(i.setPiece(n))}),d(1),l()}if(o&2){let e=s.$implicit,t=c(2);L("sp-editor__piece-btn--active",t.tool()==="place"&&t.activePiece()===e),S("aria-label","Colocar "+e),a(),D(" ",t.PIECE_GLYPH[e]," ")}}function wt(o,s){if(o&1&&(r(0,"span",27),d(1),l()),o&2){let e=c(4);a(),M(e.PIECE_GLYPH[s])}}function kt(o,s){o&1&&(r(0,"span",28),d(1,"\u2605"),l())}function Et(o,s){if(o&1){let e=x();ue(0),r(1,"button",26),u("click",function(){f(e);let n=he(0),i=c(3);return h(i.onCellClick(n))}),g(2,wt,2,1,"span",27),g(3,kt,2,0,"span",28),l()}if(o&2){let e,t=s.$implicit,n=c().$implicit,i=c(2),_=fe(i.square(t,n));a(),L("sp-editor__cell--light",i.isLight(t,n))("sp-editor__cell--dark",!i.isLight(t,n)),S("aria-label",_),a(),b((e=i.pieceAt(_))?2:-1,e),a(),b(i.isTarget(_)?3:-1)}}function Mt(o,s){if(o&1&&(r(0,"div",16),P(1,Et,4,8,"button",25,F),l()),o&2){let e=c(2);a(),w(e.files)}}function It(o,s){o&1&&(r(0,"span",18),d(1," Coloca al menos una pieza blanca. "),l())}function Ft(o,s){o&1&&(r(0,"span",18),d(1," Marca al menos una casilla-estrella. "),l())}function St(o,s){o&1&&(r(0,"span",18),d(1," Posici\xF3n demasiado abierta para calcular el \xF3ptimo. Reduce piezas o casillas. "),l())}function Ot(o,s){o&1&&(r(0,"span",19),d(1," No hay forma de pasar por todas las estrellas con estas piezas. "),l())}function Tt(o,s){if(o&1&&(r(0,"span",20),d(1," \xD3ptimo: "),r(2,"strong"),d(3),l(),d(4),l()),o&2){let e=c();a(3),M(e.par),a(),_e(" ",e.par===1?"movimiento":"movimientos"," \xB7 ",e.targets.length," ",e.targets.length===1?"estrella":"estrellas"," ")}}function Lt(o,s){if(o&1){let e=x();r(0,"div",5)(1,"div",9)(2,"span",10),d(3,"Pieza (blancas)"),l(),r(4,"div",11),P(5,Pt,2,4,"button",12,F),l(),r(7,"div",13)(8,"button",14),u("click",function(){f(e);let n=c();return h(n.setTool("star"))}),m(9,"bop-icon",4),d(10," Estrella "),l(),r(11,"button",14),u("click",function(){f(e);let n=c();return h(n.setTool("erase"))}),m(12,"bop-icon",4),d(13," Borrar "),l(),r(14,"button",14),u("click",function(){f(e);let n=c();return h(n.clearBoard())}),m(15,"bop-icon",4),d(16," Vaciar "),l()()(),r(17,"div",15),P(18,Mt,3,0,"div",16,F),l(),r(20,"div",17),g(21,It,2,0,"span",18)(22,Ft,2,0,"span",18)(23,St,2,0,"span",18)(24,Ot,2,0,"span",19)(25,Tt,5,4,"span",20),l(),r(26,"label",21)(27,"span",22),d(28,"Instru
1cci\xF3n para el alumno (opcional)"),l(),r(29,"input",23),u("input",function(n){f(e);let i=c();return h(i.onLegendInput(n.target.value))}),l()()()}if(o&2){let e=s,t=c();a(5),w(t.pieceTypes),a(3),L("sp-editor__tool-btn--active",t.tool()==="star"),a(),p("path",t.starIcon),a(2),L("sp-editor__tool-btn--active",t.tool()==="erase"),a(),p("path",t.eraseIcon),a(3),p("path",t.trashIcon),a(3),w(t.ranks),a(3),b(t.pieceCount(e)?e.targets.length?e.capped?23:e.solvable?25:24:22:21),a(8),p("value",e.legend)}}var le=["a","b","c","d","e","f","g","h"],Dt=[8,7,6,5,4,3,2,1],Vt={k:"\u2654",q:"\u2655",r:"\u2656",b:"\u2657",n:"\u2658",p:"\u2659"},lt=(()=>{class o{constructor(){this.cdr=E(xe),this.control=U.required(),this.puzzles=I([]),this.activeIndex=I(0),this.tool=I("place"),this.activePiece=I("r"),this.files=le,this.ranks=Dt,this.pieceTypes=["k","q","r","b","n","p"],this.PIECE_GLYPH=Vt,this.starIcon=Be,this.eraseIcon=Ve,this.addIcon=Q,this.trashIcon=Ne,this.hydrated=!1,this.current=j(()=>this.puzzles()[this.activeIndex()]??null),queueMicrotask(()=>this.hydrateFromControl())}hydrateFromControl(){if(this.hydrated)return;this.hydrated=!0;let t=(this.control().value??[]).map(n=>this.toEditor(n));this.puzzles.set(t.length?t:[this.blankPuzzle()]),this.recomputeAll(),this.cdr.markForCheck()}blankPuzzle(){return{id:this.newId(),pieces:{}
1,targets:[],legend:"",par:null,solvable:!1,capped:!1}}toEditor(e){let t={};for(let n of zt(e.fen))t[n.square]=n.type;return{id:e.id||this.newId(),pieces:t,targets:[...e.targets??[]],legend:e.legend??"",par:e.par??null,solvable:e.par!=null,capped:!1}}newId(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`sp-${Math.floor(performance.now())}-${this.puzzles().length}`}square(e,t){return`${e}${t}`}pieceAt(e){return this.current()?.pieces[e]??null}isTarget(e){return this.current()?.targets.includes(e)??!1}isLight(e,t){return(le.indexOf(e)+t)%2===0}onCellClick(e){let t=this.current();if(t){switch(this.tool()){case"place":t.pieces=N(B({},t.pieces),{[e]:this.activePiece()});break;case"star":t.targets=t.targets.includes(e)?t.targets.filter(n=>n!==e):[...t.targets,e];break;case"erase":{let n=B({},t.pieces);delete n[e],t.pieces=n,t.targets=t.targets.filter(i=>i!==e);break}}this.recompute(t),this.commit()}}setTool(e){this.tool.set(e)}setPiece(e){this.activePiece.set(e),this.tool.set("place")}clearBoard(){let e=this.current();e&&(e.pieces={},e.targets=[],this.recompute(e),this.commit())}onLegendInput(e){let t=this.current();t&&(t.legend=e,this.commit())}addPuzzle(){this.puzzles.update(e=>[...e,this.blankPuzzle()]),this.activeIndex.set(this.puzzles().length-1),this.commit()}removePuzzle(e){this.puzzles.update(t=>t.filter((n,i)=>i!==e)),this.puzzles().length===0&&this.puzzles.set([this.blankPuzzle()]),this.activeIndex.set(Math.max(0,Math.min(this.activeIndex(),this.puzzles().length-1))),this.commit()}selectPuzzle(e){this.activeIndex.set(e)}pieceCount(e){return Object.keys(e.pieces).length}piecesOf(e){return Object.entries(e.pieces).map(([t,n])=>({square:t,type:n,color:"w"}))}recompute(e){let t=this.piecesOf(e);if(t.length===0||e.targets.length===0){e.par=null,e.solvable=!1,e.capped=!1;return}let n=it(t,e.targets);e.par=n.par,e.solvable=n.solvable,e.capped=n.capped}recomputeAll(){for(let e of this.puzzles())this.recompute(e)}commit(){let e=this.puzzles().map(n=>({id:n.id,fen:rt(this.piecesOf(n)),targets:[...n.targets],par:n.solvable&&n.par!=null?n.par:-1,legend:n.legend?.trim()?n.legend.trim():null})),t=this.control();t.setValue(e),t.markAsDirty(),t.updateValueAndValidity(),this.puzzles.set([...this.puzzles()]),this.cdr.markForCheck()}static{this.\u0275fac=function(t){return new(t||o)}}static{this.\u0275cmp=T({type:o,selectors:[["admin-app-star-path-editor"]],inputs:{control:[1,"control"]},decls:8,vars:2,consts:[[1,"sp-editor"],[1,"sp-editor__tabs"],["type","button",1,"sp-editor__tab",3,"sp-editor__tab--active","sp-editor__tab--invalid"],["type","button",1,"sp-editor__tab","sp-editor__tab--add",3,"click"],[3,"path"],[1,"sp-editor__body"],["type","button",1,"sp-editor__tab",3,"click"],["role","button","aria-label","Eliminar puzzle",1,"sp-editor__tab-remove"],["role","button","aria-label","Eliminar puzzle",1,"sp-editor__tab-remove",3,"click"],[1,"sp-editor__tools"],[1,"sp-editor__tools-label"],[1,"sp-editor__palette"],["type","button",1,"sp-editor__piece-btn",3,"sp-editor__piece-btn--active"],[1,"sp-editor__tool-row"],["type","button",1,"sp-editor__tool-btn",3,"click"],[1,"sp-editor__board"],[1,"sp-editor__row"],[1,"sp-editor__status"],[1,"sp-editor__status-msg","sp-editor__status-msg--warn"],[1,"sp-editor__status-msg","sp-editor__status-msg--error"],[1,"sp-editor__status-msg","sp-editor__status-msg--ok"],[1,"sp-editor__legend"],[1,"sp-editor__legend-label"],["type","text","maxlength","200","placeholder","P. ej.: usa las dos torres para ir m\xE1s r\xE1pido",1,"sp-editor__legend-input",3,"input","value"],["type","button",1,"sp-editor__piece-btn",3,"click"],["type","button",1,"sp-editor__cell",3,"sp-editor__cell--light","sp-editor__cell--dark"],["type","button",1,"sp-editor__cell",3,"click"],[1,"sp-editor__cell-piece"],[1,"sp-editor__cell-star"]],template:function(t,n){if(t&1&&(r(0,"div",0)(1,"div",1),P(2,vt,3,6,"button",2,Ct),r(4,"button",3),u("click",function(){return n.addPuzzle()}),m(5,"bop-icon",4),d(6," A\xF1adir puzzle "),l()(),g(7,Lt,30,9,"div",5),l()),t&2){let i;a(2),w(n.puzzles()),a(3),p("path",n.addIcon),a(2),b((i=n.current())?7:-1,i)}}
1,dependencies:[K,A],styles:[".sp-editor[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px}.sp-editor__tabs[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px}.sp-editor__tab[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid #e5e5e5;border-radius:999px;background:#fff;font-size:.875rem;font-weight:600;color:#191919;cursor:pointer}.sp-editor__tab--active[_ngcontent-%COMP%]{border-color:#252525;background:#252525;color:#fff}.sp-editor__tab--invalid[_ngcontent-%COMP%]:not(.sp-editor__tab--active){border-color:#b3261e;color:#b3261e}.sp-editor__tab--add[_ngcontent-%COMP%]{color:#252525;--bop-icon-size: 16px}.sp-editor__tab-remove[_ngcontent-%COMP%]{display:inline-flex;--bop-icon-size: 14px;opacity:.7}.sp-editor__tab-remove[_ngcontent-%COMP%]:hover{opacity:1}.sp-editor__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.sp-editor__tools[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;width:100%}.sp-editor__tools-label[_ngcontent-%COMP%]{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#191919}.sp-editor__palette[_ngcontent-%COMP%]{display:flex;gap:6px;flex-wrap:wrap}.sp-editor__piece-btn[_ngcontent-%COMP%]{width:40px;height:40px;border:1px solid #e5e5e5;border-radius:12px;background:#fff;font-size:26px;line-height:1;cursor:pointer}.sp-editor__piece-btn--active[_ngcontent-%COMP%]{border-color:#252525;background:#f0ce15}.sp-editor__tool-row[_ngcontent-%COMP%]{display:flex;gap:6px;flex-wrap:wrap}.sp-editor__tool-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border:1px solid #e5e5e5;border-radius:999px;background:#fff;font-size:.875rem;font-weight:600;color:#252525;cursor:pointer;--bop-icon-size: 16px}.sp-editor__tool-btn--active[_ngcontent-%COMP%]{border-color:#252525;background:#f0ce15}.sp-editor__board[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column;border:2px solid #252525;border-radius:10px;overflow:hidden}.sp-editor__row[_ngcontent-%COMP%]{display:flex}.sp-editor__cell[_ngcontent-%COMP%]{position:relative;width:44px;height:44px;padding:0;border:none;cursor:pointer;font-size:30px;line-height:1}.sp-editor__cell--light[_ngcontent-%COMP%]{background:#f0d9b5}.sp-editor__cell--dark[_ngcontent-%COMP%]{background:#b58863}.sp-editor__cell[_ngcontent-%COMP%]:hover{box-shadow:inset 0 0 0 3px #f0ce15e6}.sp-editor__cell-piece[_ngcontent-%COMP%]{position:relative;z-index:1;color:#1a1a1a;text-shadow:0 1px 1px rgba(255,255,255,.6)}.sp-editor__cell-star[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#f5a01a;font-size:26px;text-shadow:0 0 3px rgba(232,115,12,.9);pointer-events:none}.sp-editor__status-msg[_ngcontent-%COMP%]{font-size:.875rem;font-weight:600}.sp-editor__status-msg--ok[_ngcontent-%COMP%]{color:#1a6a20}.sp-editor__status-msg--warn[_ngcontent-%COMP%]{color:#191919}.sp-editor__status-msg--error[_ngcontent-%COMP%]{color:#b3261e}.sp-editor__legend[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;width:100%;max-width:420px}.sp-editor__legend-label[_ngcontent-%COMP%]{font-size:.75rem;font-weight:600;color:#191919}.sp-editor__legend-input[_ngcontent-%COMP%]{padding:9px 12px;border:1px solid #e5e5e5;border-radius:12px;font-size:.875rem;font-family:inherit}.sp-editor__legend-input[_ngcontent-%COMP%]:focus{outline:none;border-color:#252525}"],changeDetection:0})}}return o})();function zt(o){let e=((o??"").trim().split(/\s+/)[0]??"").split("/"),t=[];return e.forEach((n,i)=>{let _=8-i,k=0;for(let C of n){if(/\d/.test(C)){k+=Number(C);continue}C===C.toUpperCase()&&t.push({square:`${le[k]}${_}`,type:C.toLowerCase(),color:"w"}),k+=1}}),t}var At=o=>({enabled:o,objectName:"la lecci\xF3n",toastMessage:"Lecci\xF3n eliminada"}),st=()=>({key:"extraId",lighter:!0,prefix:"[",suffix:"]"}),ct=o=>["name",o];function Bt(o,s){o&1&&m(0,"bop-preloader",1),o&2&&p("position","absolute")}function Nt(o,s){if(o&1){let e=x();r(0,"button",13),u("click",function(){f(e);let n=c(2);return h(n.clearVideoStudy())}),m(1,"bop-icon",14),l()}if(o&2){let e=c(2);S("aria-label","Quitar estudio"),a(),p("path",e.removeIcon)}}function Rt(o,s){if(o&1&&(m(0,"bop-form-item",3),r(1,"div",10),m(2,"bop-selector",11),g(3,Nt,2,2,"button",12),l()),o&2){let e=c();p("bopFormControl",e.myForm.controls.payload.controls.vimeoUrl)("id","vimeoUrl")("label","URL del v\xEDdeo de 
1Vimeo")("maxLength",400)("placeholder","https://vimeo.com/000000000"),a(2),p("formControl",e.myForm.controls.payload.controls.studyId)("id","videoStudyId")("label","Estudio (opcional)")("optionLabelFormats",q(14,ct,z(13,st)))("pageSize",20)("placeholder","Busca por nombre o ID del estudio")("route","studies"),a(),b(e.myForm.controls.payload.controls.studyId.value?3:-1)}}function $t(o,s){if(o&1&&m(0,"bop-form-item",3)(1,"bop-form-item",3),o&2){let e=c();p("bopFormControl",e.myForm.controls.payload.controls.typeformId)("id","typeformId")("label","ID del Typeform")("maxLength",60)("placeholder","Introduce el ID del Typeform"),a(),p("bopFormControl",e.myForm.controls.payload.controls.typeformTitle)("id","typeformTitle")("label","T\xEDtulo del Typeform")("maxLength",200)("placeholder","T\xEDtulo a mostrar sobre el formulario (opcional)")}}function qt(o,s){if(o&1&&m(0,"bop-form-item",3)(1,"bop-form-item",3),o&2){let e=c();p("bopFormControl",e.myForm.controls.payload.controls.typeformId)("id","typeformId")("label","ID del Typeform")("maxLength",60)("placeholder","Introduce el ID del Typeform"),a(),p("bopFormControl",e.myForm.controls.payload.controls.typeformTitle)("id","typeformTitle")("label","T\xEDtulo del Typeform")("maxLength",200)("placeholder","T\xEDtulo a mostrar sobre el formulario (opcional)")}}function jt(o,s){if(o&1){let e=x();r(0,"button",13),u("click",function(){f(e);let n=c().$index,i=c(2);return h(i.removeStudyRow(n))}),m(1,"bop-icon",14),l()}if(o&2){let e=c(3);S("aria-label","Quitar estudio"),a(),p("path",e.removeIcon)}}function Ut(o,s){if(o&1&&(r(0,"div",10),m(1,"bop-selector",11),g(2,jt,2,2,"button",12),l()),o&2){let e=s.$implicit,t=s.$index,n=c(2);a(),p("formControl",e)("id","studyId_"+t)("label",t===0?"Estudio":"Estudio "+(t+1))("optionLabelFormats",q(9,ct,z(8,st)))("pageSize",20)("placeholder","Busca por nombre o ID del estudio")("route","studies"),a(),b(n.studyIdsArray.length>1?2:-1)}}function Ht(o,s){if(o&1){let e=x();r(0,"div",6),P(1,Ut,3,11,"div",10,F),r(3,"button",15),u("click",function(){f(e);let n=c();return h(n.addStudyRow())}),m(4,"bop-icon",14),r(5,"span"),d(6,"A\xF1adir estudio"),l()()()}if(o&2){let e=c();a(),w(e.studyIdsArray.controls),a(3),p("path",e.addIcon)}}function Gt(o,s){if(o&1&&m(0,"bop-form-item",5)(1,"admin-app-bot-position-editor",7),o&2){let e=c();p("bopFormControl",e.myForm.controls.payload.controls.botId)("id","botId")("label","Bot a enfrentar")("options",e.BOT_OPTIONS)("placeholder","Selecciona el bot")("type","select"),a(),p("control",e.myForm.controls.payload.controls.initialFen)}}function Kt(o,s){if(o&1&&m(0,"admin-app-star-path-editor",7),o&2){let e=c();p("control",e.myForm.controls.payload.controls.puzzles)}}function Qt(o,s){if(o&1&&m(0,"bop-form-item",8),o&2){let e=c();p("bopFormControl",e.myForm.controls.publishDate)("id","publishDate")("label","Fecha de publicaci\xF3n")("placeholder","Fecha de publicaci\xF3n de la lecci\xF3n")("type","datetime")}}function Yt(o,s){if(o&1&&m(0,"bop-model-info",9),o&2){let e=c();p("appearance","dialog-section")("model",e.selectedModel)}}var se=(()=>{class o extends Je{get studyIdsArray(){return this.myForm.controls.payload.controls.studyIds}constructor(){super(),this.authService=E(Me),this.learnAdminConfig=E(Y),this.expanding=!1,this.presetEcho=new WeakMap,this.canDelete=this.authService.can(`${this.learnAdminConfig.lessonAbility}:delete`),this.apiRoute=this.learnAdminConfig.lessonApi,this.currentType=I("video"),this.myForm=this.fb.group({learnLevelId:this.fb.nonNullable.control("",v.required),title:this.fb.nonNullable.control("",[v.required,v.maxLength(200)]),description:this.fb.control(null,te.safeHtml),type:this.fb.nonNullable.control("video",v.required),payload:this.fb.group({vimeoUrl:this.fb.control(null),studyId:this.fb.control(null),typeformId:this.fb.control(null),typeformTitle:this.fb.control(null),studyIds:this.fb.array([]),botId:this.fb.control(null),initialFen:this.fb.control(null),puzzles:this.fb.nonNullable.control([])}),status:this.fb.nonNullable.control("publish"),publishDate:this.fb.control(null)}),this.removeIcon=Re,this.addIcon=$e,this.TYPE_OPTIONS=[{value:"video",name:"V\xEDdeo"},{value:"theory",name:"Teor\xEDa"},{value:"level_test",name:"Prueba de nivel"},{value:"practice",name:"Pr\xE1ctica"},{value:"bot",name:"Bot"},{value:"star_path",name:"Recorrido de estrellas"}].filter(e=>
1this.learnAdminConfig.supportedTypes.includes(e.value)),this.BOT_OPTIONS=ne.map(e=>({value:e.id,name:`Bot nivel ${e.id} \xB7 ${e.name}`})),this.PUBLISH_STATUS_OPTIONS=tt,this.myForm.controls.type.valueChanges.subscribe(e=>{e&&(this.currentType.set(e),this.refreshPayloadValidators())}),this.myForm.controls.status.valueChanges.subscribe(()=>{this.refreshPublishDateValidator()})}customFormInit(){let e=this.data?.preset?.learnLevelId;e&&!this.myForm.controls.learnLevelId.value&&this.myForm.controls.learnLevelId.setValue(e),this.currentType.set(this.myForm.controls.type.value),this.refreshPayloadValidators(),this.refreshPublishDateValidator()}refreshPublishDateValidator(){let e=this.myForm.controls.publishDate;this.myForm.controls.status.value==="future"?e.setValidators([v.required]):e.clearValidators(),e.updateValueAndValidity({emitEvent:!1})}refreshPayloadValidators(){let e=this.myForm.controls.payload;e.controls.vimeoUrl.clearValidators(),e.controls.typeformId.clearValidators(),e.controls.typeformTitle.clearValidators(),e.controls.botId.clearValidators(),e.controls.initialFen.clearValidators(),e.controls.studyIds.clearValidators(),e.controls.puzzles.clearValidators();for(let t of e.controls.studyIds.controls)t.clearValidators(),t.updateValueAndValidity({emitEvent:!1});switch(this.currentType()){case"video":e.controls.vimeoUrl.setValidators([v.required,te.url]);break;case"theory":case"level_test":e.controls.typeformId.setValidators([v.required,v.maxLength(60)]),e.controls.typeformTitle.setValidators([v.maxLength(200)]);break;case"practice":e.controls.studyIds.setValidators([v.required,v.minLength(1)]),e.controls.studyIds.length===0&&this.addStudyRow();for(let t of e.controls.studyIds.controls)t.setValidators([v.required]),t.updateValueAndValidity({emitEvent:!1});break;case"bot":e.controls.initialFen.setValidators([t=>t.value&&X(t.value)?{invalidPosition:!0}:null]),e.controls.botId.setValidators([v.required,t=>ne.some(n=>n.id===Number(t.value))?null:{invalidBot:!0}]);break;case"star_path":e.controls.puzzles.setValidators([this.starPuzzlesValidator]);break}e.controls.vimeoUrl.updateValueAndValidity({emitEvent:!1}),e.controls.typeformId.updateValueAndValidity({emitEvent:!1}),e.controls.typeformTitle.updateValueAndValidity({emitEvent:!1}),e.controls.botId.updateValueAndValidity({emitEvent:!1}
1),e.controls.initialFen.updateValueAndValidity({emitEvent:!1}),e.controls.studyIds.updateValueAndValidity({emitEvent:!1}),e.controls.puzzles.updateValueAndValidity({emitEvent:!1})}starPuzzlesValidator(e){let t=e.value??[];return t.length===0?{required:!0}:t.some(i=>!i.fen||!Array.isArray(i.targets)||i.targets.length===0||i.par==null||i.par<0)?{invalidPuzzles:!0}:null}addStudyRow(e=null){this.studyIdsArray.push(this.createStudyControl(e)),this.studyIdsArray.markAsDirty(),this.studyIdsArray.updateValueAndValidity({emitEvent:!1})}createStudyControl(e=null){let t=this.fb.control(e,this.currentType()==="practice"?[v.required]:[]);return e&&this.presetEcho.set(t,e),t.valueChanges.pipe(ee(this.destroyRef)).subscribe(n=>{if(!(this.expanding||!n||this.currentType()!=="practice")){if(this.presetEcho.get(t)===n){this.presetEcho.delete(t);return}this.expandStudyIntoExercises(t,n)}}),t}expandStudyIntoExercises(e,t){this.httpClient.get(`studies/${t}/exercises`).pipe(ee(this.destroyRef)).subscribe(n=>{let i=n?.data??[];if(i.length===0)return;let _=this.studyIdsArray.controls.indexOf(e);if(_===-1)return;let k=new Set(this.studyIdsArray.controls.filter(y=>y!==e).map(y=>y.value)),C=i.map(y=>y.id).filter(y=>y&&!k.has(y));this.expanding=!0,this.studyIdsArray.removeAt(_,{emitEvent:!1}),C.forEach((y,O)=>{this.studyIdsArray.insert(_+O,this.createStudyControl(y),{emitEvent:!1})}),this.studyIdsArray.length===0&&this.studyIdsArray.push(this.createStudyControl()),this.studyIdsArray.markAsDirty(),this.studyIdsArray.updateValueAndValidity({emitEvent:!1}),this.expanding=!1,this.changeDetectorRef.markForCheck()})}clearVideoStudy(){let e=this.myForm.controls.payload.controls.studyId;e.setValue(null),e.markAsDirty()}removeStudyRow(e){this.studyIdsArray.removeAt(e),this.studyIdsArray.markAsDirty(),this.studyIdsArray.updateValueAndValidity({emitEvent:!1})}asyncCustomFormInit(e){return V(this,null,function*(){let t=e?.payload?.studyIds??e?.payload?.study_ids;if(Array.isArray(t)){this.studyIdsArray.clear({emitEvent:!1});for(let _ of t)this.addStudyRow(typeof _=="string"?_:null)}let n=e?.payload?.studyId??e?.payload?.study_id;typeof n=="string"&&this.myForm.controls.payload.controls.studyId.setValue(n,{emitEvent:!1});let i=e?.payload?.puzzles;Array.isArray(i)&&this.myForm.controls.payload.controls.puzzles.setValue(i,{emitEvent:!1})})}static{this.\u0275fac=function(t){return new(t||o)}}static{this.\u0275cmp=T({type:o,selectors:[["admin-app-learn-lesson-form"]],features:[$],decls:17,vars:41,consts:[[3,"afterDelete","afterSubmit","closeDialogContainer","apiRoute","bopFormGroup","centeredTitle","defaultErrorMessage","deleteConfiguration","disabledClauses","method","redirectAfterSubmit","saveButtonText","title","toastMessage"],[3,"position"],[3,"title"],[3,"bopFormControl","id","label","maxLength","placeholder"],[3,"bopFormControl","id","label","placeholder"],[3,"bopFormControl","id","label","options","placeholder","type"],[1,"study-rows"],[3,"control"],[3,"bopFormControl","id","label","placeholder","type"],[3,"appearance","model"],[1,"study-row"],[1,"study-row__selector",3,"formControl","id","label","optionLabelFormats","pageSize","placeholder","route"],["mat-icon-button","","type","button",1,"study-row__remove"],["mat-icon-button","","type","button",1,"study-row__remove",3,"click"],[3,"path"],["color","primary","mat-button","","type","button",1,"study-row__add",3,"click"]],template:function(t,n){if(t&1&&(r(0,"bop-form",0),u("afterDelete",function(){return n.onPostDelete()})("afterSubmit",function(){return n.onPostSubmit()})("closeDialogContainer",function(){return n.closeDialog()}),g(1,Bt,1,1,"bop-preloader",1),r(2,"bop-dialog-section",2),m(3,"bop-form-item",3)(4,"bop-rich-text",4)(5,"bop-form-item",5),l(),r(6,"bop-dialog-section",2),g(7,Rt,4,16)(8,$t,2,10)(9,qt,2,10)(10,Ht,7,1,"div",6)(11,Gt,2,7)(12,Kt,1,1,"admin-app-star-path-editor",7),l(),r(13,"bop-dialog-section",2),m(14,"bop-form-item",5),g(15,Qt,1,5,"bop-form-item",8),l(),g(16,Yt,1,2,"bop-model-info",9),l()),t&2){let i;p("apiRoute",n.apiRoute)("bopFormGroup",n.myForm)("centeredTitle",!0)("defaultErrorMessage","Error al "+(n.selectedModel?"editar":"crear")+" la lecci\xF3n, int\xE9ntalo de nuevo")("deleteConfiguration",q(39,At,n.canDelete))("disabledClauses",!n.formChanged())("method",n.method)("redirectAfterSubmit",!1)("saveButtonText",n.selectedModel?"Guardar cambios":"Crear lecci\xF3n")("title",!n.selectedModel&&n.loaded()?"Nueva lecci\xF3n":"Lecci\xF3n: "+n.myForm.controls.title.value)("toastMessage",n.selectedModel?"Lecci\xF3n editada con \xE9xito":"Lecci\xF3n creada con \xE9xito"),a(),b(n.loaded()?-1:1),a(),p("title","Datos generales"),a(),p("bopFormControl",n.myForm.controls.title)("id","title")("label","T\xEDtulo")("maxLength",200)("placeholder","Introduce el t\xEDtulo de la lecci\xF3n"),a(),p("bopFormControl",n.myForm.controls.description)("id","description")("label","Descripci\xF3n")("placeholder","Describe brevemente la lecci\xF3n"),a(),p("bopFormControl",n.myForm.controls.type)("id","type")("label","Tipo de lecci\xF3n")("options",n.TYPE_OPTIONS)("placeholder","Selecciona el tipo")("type","boxRadio"),a(),p("title","Contenido espec\xEDfico"),a(),b((i=n.currentType())==="video"?7:i==="theory"?8:i==="level_test"?9:i==="practice"?10:i==="bot"?11:i==="star_path"?12:-1),a(6),p("title","Publicaci\xF3n"),a(),p("bopFormControl",n.myForm.controls.status)("id","status")("label","Estado")("options",n.PUBLISH_STATUS_OPTIONS)("placeholder","Selecciona un estado")("type","boxRadio"),a(),b(n.myForm.controls.status.value==="future"?15:-1),a(),b(n.selectedModel?16:-1)}},dependencies:[K,G,Fe,je,H,qe,et,He,Ze,Xe,A,ke,we,lt,at],styles:[".study-rows[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.study-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:4px}.study-row__selector[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.study-row__remove[_ngcontent-%COMP%]{flex:0 0 auto;margin-top:4px}.study-row__add[_ngcontent-%COMP%]{align-self:flex-start}"],changeDetection:0})}}return o}
1)();var Wt=(o,s)=>s.id;function Jt(o,s){o&1&&m(0,"bop-preloader",0),o&2&&p("loadingText","Cargando nivel...")}function Xt(o,s){if(o&1&&m(0,"div",8),o&2){let e=c(2);p("innerHTML",e.level().description,pe)}}function Zt(o,s){if(o&1){let e=x();r(0,"button",24),u("click",function(){f(e);let n=c(2);return h(n.newModel())}),m(1,"bop-icon",3),r(2,"span"),d(3,"Nueva lecci\xF3n"),l()()}if(o&2){let e=c(2);a(),p("path",e.addIcon)}}function en(o,s){o&1&&(r(0,"div",22),d(1,"Este nivel todav\xEDa no tiene lecciones."),l())}function tn(o,s){if(o&1&&(r(0,"button",27),m(1,"bop-icon",3),l()),o&2){let e=c(4);a(),p("path",e.dragIcon)}}function nn(o,s){if(o&1){let e=x();r(0,"button",35),u("click",function(){f(e);let n=c().$implicit,i=c(3);return h(i.editLesson(n.id))}),m(1,"bop-icon",3),l()}if(o&2){let e=c(4);a(),p("path",e.editIcon)}}function on(o,s){if(o&1&&(r(0,"li",26),g(1,tn,2,1,"button",27),r(2,"span",28),d(3),l(),r(4,"div",29)(5,"span",30),d(6),l(),r(7,"span",31),d(8),l()(),r(9,"span",32),d(10),l(),r(11,"span",33),d(12),ge(13,"date"),l(),g(14,nn,2,1,"button",34),l()),o&2){let e=s.$implicit,t=s.$index,n=c(3);p("cdkDragDisabled",!n.canEdit),a(),b(n.canEdit?1:-1),a(2),M(t+1),a(3),M(e.title),a(2),M(n.typeLabels[e.type]),a(),me(n.statusMeta[e.status].className),a(),D(" ",n.statusMeta[e.status].label," "),a(2),D(" ",e.publishDate?be(13,10,e.publishDate,"dd/MM/yyyy HH:mm"):"\u2014"," "),a(2),b(n.canEdit?14:-1)}}function rn(o,s){if(o&1){let e=x();r(0,"ul",25),u("cdkDropListDropped",function(n){f(e);let i=c(2);return h(i.drop(n))}),P(1,on,15,13,"li",26,Wt),l()}if(o&2){let e=c(2);p("cdkDropListDisabled",!e.canEdit||e.reordering()),a(),w(e.lessons())}}function an(o,s){if(o&1){let e=x();r(0,"div",1)(1,"button",2),u("click",function(){f(e);let n=c();return h(n.goBack())}),m(2,"bop-icon",3),r(3,"span"),d(4,"Volver a niveles"),l()(),r(5,"header",4)(6,"div",5)(7,"span",6),d(8,"Nivel \xB7 Aprender"),l(),r(9,"h1",7),d(10),l(),g(11,Xt,1,1,"div",8),r(12,"div",9)(13,"span",10)(14,"span",11),d(15,"Icono"),l(),m(16,"bop-icon",12),l(),r(17,"span",10)(18,"span",11),d(19,"Posici\xF3n"),l(),r(20,"span",13),d(21),l()()()(),r(22,"div",14)(23,"button",15),u("click",function(){f(e);let n=c();return h(n.editLevel())}),m(24,"bop-icon",3),r(25,"span"),d(26,"Editar nivel"),l()()()(),r(27,"section",16)(28,"div",17)(29,"div",18)(30,"h2",19),d(31,"Lecciones"),l(),r(32,"p",20),d(33,"Arrastra para cambiar el orden de aprendizaje."),l()(),g(34,Zt,4,1,"button",21),l(),g(35,en,2,0,"div",22)(36,rn,3,1,"ul",23),l()()}if(o&2){let e=c();a(2),p("path",e.backIcon),a(8),M(e.level().title),a(),b(e.level().description?11:-1),a(5),p("path",e.levelIconMap[e.level().icon]),a(5),M(e.level().position),a(3),p("path",e.editIcon),a(10),b(e.canCreate?34:-1),a(),b(e.lessons().length===0?35:36)}}var ln={pending:{label:"En revisi\xF3n",className:"is-pending"},draft:{label:"Borrador",className:"is-draft"},future:{label:"Programado",className:"is-future"},publish:{label:"Publicado",className:"is-publish"},private:{label:"Privado",className:"is-private"}},sn={video:"V\xEDdeo",theory:"Teor\xEDa",practice:"Pr\xE1ctica",bot:"Bot",level_test:"Prueba de nivel",star_path:"Recorrido de estrellas"},ho=(()=>{class o extends We{constructor(){super(...arguments),this.activatedRoute=E(ve),this.router=E(Pe),this.httpClient=E(ye),this.snackBar=E(Ee),this.learnAdminConfig=E(Y),this.dialogInjector=E(ce),this.modelToCheck=this.learnAdminConfig.lessonAbility,this.createDialogComponent=se,this.editDialogComponent=se,this.learnLevelId=this.activatedRoute.snapshot.paramMap.get("learnLevelId"),this.level=I(null),this.lessons=I([]),this.levelLoaded=j(()=>this.level()!==null),this.reordering=I(!1),this.backIcon=De,this.editIcon=Ae,this.addIcon=Q,this.dragIcon=ze,this.levelIconMap=ot,this.statusMeta=ln,this.typeLabels=sn}asyncCustomInit(){return V(this,null,function*(){yield Promise.all([this.loadLevel(),this.loadLessons()])})}loadLevel(){return V(this,null,function*(){let e=yield R(this.httpClient.get(`${this.learnAdminConfig.levelApi}/${this.learnLevelId}`));this.level.set(e.data)})}loadLessons(){return V(this,null,function*(){let e=yield R(this.httpClient.get(this.learnAdminConfig.lessonApi,{params:{learn_level_id:this.learnLevelId,orderBy:"position",sortOrder:"asc"}}));this.lessons.set(e.data??[]),this.changeDetectorRef.markForCheck()})}updateDataGrid(){this.loadLessons()}newModel(e){super.newModel(N(B({},e??{}
1),{preset:{learnLevelId:this.learnLevelId}}))}editLesson(e){this.editModel(e)}editLevel(){this.matDialog.open(nt,{injector:this.dialogInjector,data:{id:this.learnLevelId},width:"720px",minWidth:"320px",disableClose:!0}).afterClosed().subscribe(()=>{this.loadLevel()})}goBack(){this.router.navigate([".."],{relativeTo:this.activatedRoute})}drop(e){return V(this,null,function*(){if(e.previousIndex===e.currentIndex||this.reordering())return;let n=[...this.lessons()];Ge(n,e.previousIndex,e.currentIndex),this.lessons.set(n),this.reordering.set(!0);try{yield R(this.httpClient.patch(`${this.learnAdminConfig.lessonApi}/reorder`,{learn_level_id:this.learnLevelId,ordered_ids:n.map(i=>i.id)}))}catch(i){this.snackBar.open("No se pudo guardar el nuevo orden. Se ha restaurado el anterior."),yield this.loadLessons()}finally{this.reordering.set(!1),this.changeDetectorRef.markForCheck()}})}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=de(o)))(n||o)}})()}static{this.\u0275cmp=T({type:o,selectors:[["admin-app-learn-level-detail"]],features:[$],decls:2,vars:1,consts:[[3,"loadingText"],[1,"level-detail"],["type","button",1,"level-detail__back",3,"click"],[3,"path"],[1,"level-hero"],[1,"level-hero__main"],[1,"level-hero__eyebrow"],[1,"level-hero__title"],[1,"level-hero__description",3,"innerHTML"],[1,"level-hero__meta"],[1,"level-hero__stat"],[1,"level-hero__stat-label"],[1,"level-hero__stat-icon",3,"path"],[1,"level-hero__stat-value"],[1,"level-hero__actions"],["type","button",1,"ce-btn","ce-btn--secondary",3,"click"],[1,"lessons"],[1,"lessons__header"],[1,"lessons__heading"],[1,"lessons__title"],[1,"lessons__hint"],["type","button",1,"ce-btn","ce-btn--primary"],[1,"lessons__empty"],["cdkDropList","",1,"lesson-list",3,"cdkDropListDisabled"],["type","button",1,"ce-btn","ce-btn--primary",3,"click"],["cdkDropList","",1,"lesson-list",3,"cdkDropListDropped","cdkDropListDisabled"],["cdkDrag","",1,"lesson-row",3,"cdkDragDisabled"],["aria-label","Reordenar lecci\xF3n","cdkDragHandle","","type","button",1,"lesson-row__handle"],[1,"lesson-row__position"],[1,"lesson-row__main"],[1,"lesson-row__name"],[1,"lesson-row__type"],[1,"lesson-row__status"],[1,"lesson-row__date"],["aria-label","Editar lecci\xF3n","type","button",1,"lesson-row__edit"],["aria-label","Editar lecci\xF3n","type","button",1,"lesson-row__edit",3,"click"]],template:function(t,n){t&1&&g(0,Jt,1,1,"bop-preloader",0)(1,an,37,8,"div",1),t&2&&b(n.levelLoaded()?1:0)},dependencies:[A,H,Ye,Qe,Ke,Ce],styles:[".level-detail[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:16px clamp(16px,4vw,40px) 32px}.level-detail__back[_ngcontent-%COMP%]{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 12px 0 8px;border:1px solid #e5e5e5;border-radius:999px;background:#fff;color:#444;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.level-detail__back[_ngcontent-%COMP%]   bop-icon[_ngcontent-%COMP%]{--bop-icon-size: 16px}.level-detail__back[_ngcontent-%COMP%]:hover{background:#f7f7f7;color:#111;border-color:#e0e0e0}.level-hero[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px clamp(16px,2.5vw,22px);background:#fff;border:1px solid #e5e5e5;border-radius:16px;box-shadow:0 1px 3px #0000000d,0 4px 12px #0000000a}@media(max-width:680px){.level-hero[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}}.level-hero__main[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;min-width:0}.level-hero__eyebrow[_ngcontent-%COMP%]{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#999}.level-hero__title[_ngcontent-%COMP%]{margin:0;font-size:clamp(1.25rem,1.8vw,1.5rem);font-weight:800;letter-spacing:-.02em;line-height:1.2;color:#111}.level-hero__description[_ngcontent-%COMP%]{margin:0;font-size:.875rem;line-height:1.5;color:#555}.level-hero__description[_ngcontent-%COMP%]   :where(p[_ngcontent-%COMP%]){margin:0}.level-hero__meta[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.level-hero__stat[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;border:1px solid #e5e5e5;border-radius:999px;background:#fafafa}.level-hero__stat-icon[_ngcontent-%COMP%]{--bop-icon-size: 20px;color:#111}.level-hero__stat-value[_ngcontent-%COMP%]{font-size:var(--text-base, 1rem);font-weight:700;letter-spacing:-.01em;color:#111}.level-hero__stat-label[_ngcontent-%COMP%]{font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#999}.level-hero__actions[_ngcontent-%COMP%]{flex-shrink:0}.ce-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 18px;border:1px solid transparent;border-radius:999px;font-size:.875rem;font-weight:600;letter-spacing:-.01em;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.ce-btn[_ngcontent-%COMP%]   bop-icon[_ngcontent-%COMP%]{--bop-icon-size: 18px;flex-shrink:0}.ce-btn[_ngcontent-%COMP%] > bop-icon[_ngcontent-%COMP%]:first-child:not(:only-child){margin-right:6px}.ce-btn[_ngcontent-%COMP%]:active{transform:translateY(1px)}.ce-btn--secondary[_ngcontent-%COMP%]{background:#f8f9fa;color:#252525;border-color:#d9dee5}.ce-btn--secondary[_ngcontent-%COMP%]:hover{background:#f3f4f6;border-color:#cdd4dc}.ce-btn--primary[_ngcontent-%COMP%]{background:#f0ce15;color:#252525;border-color:#f0ce15}.ce-btn--primary[_ngcontent-%COMP%]:hover{background:#e6c40f;border-color:#e6c40f}@media(max-width:680px){.ce-btn[_ngcontent-%COMP%]{width:100%}}.lessons[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px;padding:16px clamp(16px,2.5vw,22px);background:#fff;border:1px solid #e5e5e5;border-radius:16px;box-shadow:0 1px 3px #0000000d,0 4px 12px #0000000a}.lessons__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:16px}@media(max-width:680px){.lessons__header[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}}.lessons__heading[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.lessons__title[_ngcontent-%COMP%]{margin:0;font-size:1.125rem;font-weight:800;letter-spacing:-.01em;color:#111}.lessons__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:#999}.lessons__empty[_ngcontent-%COMP%]{padding:28px 16px;text-align:center;font-size:.875rem;color:#999;background:#fafafa;border:1px dashed #e5e5e5;border-radius:12px}.lesson-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.lesson-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#fff;border:1px solid #ececec;border-radius:12px;transition:border-color .15s ease,box-shadow .15s ease}.lesson-row[_ngcontent-%COMP%]:hover{border-color:#e0e0e0}.lesson-row__handle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;padding:0;border:none;background:transparent;color:#bbb;cursor:grab;transition:color .15s ease}.lesson-row__handle[_ngcontent-%COMP%]   bop-icon[_ngcontent-%COMP%]{--bop-icon-size: 20px}.lesson-row__handle[_ngcontent-%COMP%]:hover{color:#666}.lesson-row__handle[_ngcontent-%COMP%]:active{cursor:grabbing}.lesson-row__position[_ngcontent-%COMP%]{flex-shrink:0;width:24px;text-align:center;font-size:.875rem;font-weight:700;color:#999}.lesson-row__main[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}.lesson-row__name[_ngcontent-%COMP%]{font-size:var(--text-base, 1rem);font-weight:600;color:#111;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-row__type[_ngcontent-%COMP%]{font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#aaa}.lesson-row__status[_ngcontent-%COMP%]{flex-shrink:0;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:700}.lesson-row__status.is-publish[_ngcontent-%COMP%]{background:#e6f6ed;color:#157347}.lesson-row__status.is-future[_ngcontent-%COMP%]{background:#e7f0fb;color:#1c5fb0}.lesson-row__status.is-pending[_ngcontent-%COMP%]{background:#fdf0e3;color:#b3610f}.lesson-row__status.is-draft[_ngcontent-%COMP%]{background:#f0ecf9;color:#6b4bb0}.lesson-row__status.is-private[_ngcontent-%COMP%]{background:#fbe9e9;color:#b02a2a}.lesson-row__date[_ngcontent-%COMP%]{flex-shrink:0;min-width:120px;text-align:right;font-size:.875rem;
1color:#777}@media(max-width:680px){.lesson-row__date[_ngcontent-%COMP%]{display:none}}.lesson-row__edit[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;padding:0;border:1px solid #e5e5e5;border-radius:50%;background:#fff;color:#555;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.lesson-row__edit[_ngcontent-%COMP%]   bop-icon[_ngcontent-%COMP%]{--bop-icon-size: 16px}.lesson-row__edit[_ngcontent-%COMP%]:hover{background:#f7f7f7;color:#111}.lesson-row.cdk-drag-preview[_ngcontent-%COMP%]{box-shadow:0 8px 24px #00000029;border-color:#f0ce15}.lesson-row.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .2s cubic-bezier(0,0,.2,1)}.lesson-list.cdk-drop-list-dragging[_ngcontent-%COMP%]   .lesson-row[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .2s cubic-bezier(0,0,.2,1)}"],changeDetection:0})}}return o})();export{ho as LearnLevelDetailComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.