1import{a as le}from"./chunk-I6LUA7UW.js";import{a as de}from"./chunk-JZJQ6BJK.js";import{a as pe}from"./chunk-ADYSSEOA.js";import{a as me}from"./chunk-BWOA3O75.js";import"./chunk-BYXBJQAS.js";import{a as ce}from"./chunk-5ZQGCCCY.js";import"./chunk-4FVF4XW5.js";import"./chunk-SZWPQOPO.js";import"./chunk-PUPRFTQE.js";import"./chunk-WPEK75LG.js";import"./chunk-5A256VPV.js";import{b as ue}from"./chunk-6ZMNKWZS.js";import{c as R}from"./chunk-73DAJ7S6.js";import"./chunk-2DI2KIVN.js";import"./chunk-UX4MQNMZ.js";import"./chunk-GNSDLL5C.js";import{A as ee,Ea as ie,Fa as oe,Ja as ne,Na as se,Oa as ae,a as K,h as X,i as Y,ya as te,z as Z,za as re}from"./chunk-4U4ML4TW.js";import{C as J,t as G,z as H}from"./chunk-VBF2GIEK.js";import"./chunk-CEWHAWND.js";import{_ as W,r as z}from"./chunk-3GQPMSWI.js";import{Ab as k,Ec as Q,G as P,J as V,Jb as F,K as j,Ma as m,Ob as S,Qb as x,ab as A,ba as v,bc as L,cc as y,ec as q,f as U,ia as T,ja as w,ra as C,rb as N,s as I,sb as $,vb as B,wb as M,xb as D,yb as s,zb as l}from"./chunk-B6BX7UR2.js";import"./chunk-T7S4UQRR.js";import"./chunk-QUJFQN2Y.js";import"./chunk-C47BX2NK.js";import"./chunk-QM4HJ7EF.js";import"./chunk-5FEFXGVO.js";import"./chunk-NXA6OUW7.js";import"./chunk-MTHZ7MWU.js";import"./chunk-WI5MSH4N.js";import"./chunk-YDWYQHVT.js";import"./chunk-KECZPZFP.js";import"./chunk-LTWXMWG5.js";import"./chunk-H6OOK2WT.js";import"./chunk-2V3V3YIG.js";import"./chunk-CKP3SGE2.js";import"./chunk-4WFVMWDK.js";import"./chunk-DVVH2KKN.js";import"./chunk-NV3QH4JK.js";import"./chunk-X6S6HNUM.js";import"./chunk-7KGURMOZ.js";import"./chunk-TDK4HUGW.js";import"./chunk-7G7AMD4F.js";import"./chunk-FCX3RDSO.js";import"./chunk-FSOYKJLJ.js";import"./chunk-VIMCRFDB.js";import"./chunk-4R3VVVOU.js";import"./chunk-FW2RO4O5.js";import"./chunk-LRFGNCHE.js";import"./chunk-M2X7KQLB.js";import"./chunk-NL7IECSO.js";import"./chunk-42C7ZIID.js";import"./chunk-OZYWYLNK.js";import{a as _,b,g as d,h,i as f,k as O}from"./chunk-STXFOC7T.js";var ge=(t,r)=>r.id,he=(t,r)=>r.course._id;function fe(t,r){if(t&1){let o=F();s(0,"div",4)(1,"button",10),S("click",function(){let u=T(o).$implicit,c=x();return w(c.selectFilter(u))}),y(2),l()()}if(t&2){let o=r.$implicit,a=x();m(),L(a.getFilterButtonClass(o)),m(),q(" ",o.label," ")}}function Ce(t,r){t&1&&(s(0,"div",7)(1,"div",11),k(2,"ion-spinner",12),s(3,"p",13),y(4,"\u0417\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435 \u043D\u0430 \u0437\u0430\u043F\u0430\u0437\u0435\u043D\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0435..."),l()()())}function _e(t,r){t&1&&(s(0,"div",8),k(1,"ion-icon",14),s(2,"p",15),y(3,"\u0412\u0441\u0435 \u043E\u0449\u0435 \u043D\u044F\u043C\u0430\u0448 \u0437\u0430\u043F\u0430\u0437\u0435\u043D\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0435."),l()())}function be(t,r){if(t&1){let o=F();s(0,"app-course-card",17),S("toggleBookmark",function(u){T(o);let c=x(2);return w(c.onToggleBookmark(u))}),l()}if(t&2){let o=r.$implicit;D("course",o.course)("cardType","default")}}function ve(t,r){if(t&1&&(s(0,"div",9),B(1,be,1,2,"app-course-card",16,he),l()),t&2){let o=x();m(),M(o.courses())}}var Ae=(()=>{var r,o,a,u,c;let p=class p{constructor(){h(this,r);h(this,o);h(this,a);h(this,u);h(this,c);f(this,r,new U),f(this,o,v(ce)),f(this,a,v(le)),f(this,u,v(ue)),f(this,c,v(H)),this.isAdmin=d(this,u).user$.pipe(I(e=>e?.role==="admin")),this.searchQuery=R(d(this,r),{initialValue:""}),this.courses=C([]),this.isLoading=C(!0),this.error=C(null),this.filters=[{id:"enrolled",label:"\u0417\u0430\u043F\u043E\u0447\u043D\u0430\u0442\u0438"},{id:"in_progress",label:"\u0410\u043A\u0442\u0438\u0432\u043D\u0438"},{id:"completed",label:"\u0417\u0430\u0432\u044A\u0440\u0448\u0435\u043D\u0438"}],this.selectedStatus=C(void 0),this.queryParams=Q(()=>({status:this.selectedStatus(),search:this.searchQuery()})),K({star:se,starOutline:ae,bookmark:X,bookmarkOutline:Y,playCircleOutline:ie,peopleOutline:te,readerOutline:oe,chevronBack:Z,search:ne,person:re,chevronBackOutline:ee})}ngOnInit(){d(this,r).pipe(P(300),V()).subscribe(()=>{this.loadCourses()}),this.loadCourses()}loadCourses(){this.isLoading.set(!0),this.error.set(null),d(this,o).getMyCourses(this.queryParams()).pipe(j(()=>this.isLoading.set(!1))).subscribe({next:e=>{if(e.success&&e.data){let n=e.data.map(i=>b(_({},i),{course:b(_({},i.course),{isSaved:i.isSaved,isBookmarked:i.isSaved})}));this.courses.set(n)}},error:e=>this.error.set("Failed to load courses")})}selectFilter(e){this.selectedStatus.set(e.id===this.selectedStatus()?void 0:e.id),this.loadCourses()}getFilterButtonClass(e){let n="cursor-pointer px-6 py-2 rounded-full font-medium transition-all duration-300 ";return e.id===this.selectedStatus()?n+"text-white shadow-md custom-gradient":n+"bg-white text-gray-700 hover:text-purple-600"}onToggleBookmark(e){let n=C(this.courses().map(i=>i.course));d(this,a).toggleBookmark(e,n,i=>{let E=this.courses().map(g=>g.course._id===e._id?b(_({},g),{isSaved:i,course:b(_({},g.course),{isBookmarked:i,isSaved:i})}):g);this.courses.set(E)},i=>{console.error("Custom error handling:",i)})}onSearchChange(e){d(this,r).next(e)}reloadCourses(){this.loadCourses()}showToast(e,n){return O(this,null,function*(){yield(yield d(this,c).create({message:e,duration:3e3,color:n,position:"bottom"})).present()})}};r=new WeakMap,o=new WeakMap,a=new WeakMap,u=new WeakMap,c=new WeakMap,p.\u0275fac=function(n){return new(n||p)},p.\u0275cmp=A({type:p,selectors:[["app-courses-user"]],decls:11,vars:2,consts:[[1,"mt-6","mb-6","p-4"],["title","\u041A\u0443\u0440\u0441\u043E\u0432\u0435","backRoute","/profile/content","backIcon","chevron-back-outline",3,"showBackButton"],[1,"mb-6","flex","flex-wrap","items-center","justify-between"],[1,"mb-8","flex","flex-wrap","gap-3"],[1,"gradient-border-wrapper"],[1,"relative","mb-8","w-full","max-w-2xl"],["placeholder","\u041D\u0430\u043C\u0435\u0440\u0438 \u043A\u0443\u0440\u0441",3,"search"],[1,"col-span-full","flex","min-h-[400px]","items-center","justify-center"],[1,"flex","min-h-[300px]","flex-col","items-center","justify-center","gap-4"],[1,"mb-8","grid","grid-cols-1","gap-6","sm:grid-cols-2","lg:grid-cols-3"],[1,"py-3","text-lg","font-medium",3,"click"],[1,"text-center"],["name","crescent",1,"h-12","w-12",2,"--color","#a855f7"],[1,"mt-4","text-sm","text-gray-500"],["name","bookmark-outline",1,"text-5xl","text-gray-400"],[1,"text-gray-500"],[3,"course","cardType"],[3,"toggleBookmark","course","cardType"]],template:function(n,i){n&1&&(s(0,"div",0),k(1,"app-custom-title",1),s(2,"div",2)(3,"div",3),B(4,fe,3,3,"div",4,ge),l(),s(6,"div",5)(7,"app-search-input",6),S("search",function(g){return i.onSearchChange(g)}),l()()(),N(8,Ce,5,0,"div",7)(9,_e,4,0,"div",8)(10,ve,3,0,"div",9),l(
1)),n&2&&(m(),D("showBackButton",!0),m(3),M(i.filters),m(4),$(i.isLoading()?8:i.courses().length===0?9:10))},dependencies:[J,W,z,me,de,pe,G],styles:[".gradient-border-wrapper[_ngcontent-%COMP%]{position:relative;border-radius:9999px;padding:1px;background:linear-gradient(42.13deg,#7c1cb8 29.78%,#ac20ba 53.61%,#db25bc 66.35%,#e37a7e 80.6%,#eccf40 87.25%);display:inline-block}.custom-gradient[_ngcontent-%COMP%]{background:linear-gradient(42.13deg,#7c1cb8 29.78%,#ac20ba 53.61%,#db25bc 66.35%,#e37a7e 80.6%,#eccf40 87.25%)}.gradient-border-wrapper[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:none!important;border-radius:9999px;display:block;width:100%}"]});let t=p;return t})();export{Ae as CoursesUserComponent};
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.