1(self.webpackChunkmmb_web_app=self.webpackChunkmmb_web_app||[]).push([[840,272],{52840:(l,_,s)=>{"use strict";s.r(_),s.d(_,{ProjectsModule:()=>V});var i=s(42321),e=s(22560),a=s(94666),E=s(41889),v=s(24486);var x=s(92637),w=s.n(x),c=s(3790),d=s(58987),g=s(50635),b=s(91640),m=s(43746),K=s(93819),Z=s(20475),J=s(79263);let P=class{constructor(t,r,n){this.http=t,this.sharedService=r,this.authService=n}getProjects(t,r,n,o){let u=this.authService.hasToken()?m.N.api.projects:m.N.api.public.projects,f=m.N.domain+u+`?historic=${n}&limit=${r}&offset=${t}`;return f=this.sharedService.applyFilterToUrl(f,o),this.http.get(f).pipe((0,g.U)(h=>h))}getProjectDetails(t){const r=this.authService.hasToken()?m.N.api.projects:m.N.api.public.projects,n=m.N.domain+r+`${t}/?response_type=full`;return this.http.get(n).pipe((0,g.U)(o=>o))}expressCuriousInterest(t){const r=`${m.N.domain}${m.N.api.project.expressInterest}`;return this.http.post(r,{project:t.id,event_type:J.W.CURIOUS,source:Z.m.WEBSITE})}postNewComment(t,r,n){const o={project:r,comment:t,user:n},u=`${m.N.domain}${m.N.api.project.comment}`;return this.http.post(u,o)}followProject(t,r){const n={user:t,project:r},o=`${m.N.domain}${m.N.api.project.follow}`;return this.http.post(o,n)}unFollowProject(t){const r=`${m.N.domain}${m.N.api.project.unfollow}${t}/`;return this.http.delete(r)}voteComment(t,r,n){const o=`${m.N.domain}${m.N.api.project.commentVote}`,u={vote:r,comment:n};return this.http.post(o,u)}getComments(t){const r=`${m.N.domain}${m.N.api.project.comment}?uuid=${t}`;return this.http.get(r)}getUpdateComments(t){const r=`${m.N.domain}${m.N.api.project.updateComment}${t}`;return this.http.get(r)}onCommentAdded(t,r,n){this.postNewComment(r,t.id,n).subscribe(o=>{t.comments||(t.comments=[])},o=>{})}getProjectInterests(t){const r=`${m.N.domain}${m.N.api.project.interest}?uuid=${t.id}`;return this.http.get(r)}onExpressInterest(t,r){const n=`${m.N.domain}${m.N.api.project.interest}`,o={project:t.id,user:t.uuid,event_type:r};return this.http.post(n,o)}onDeleteInterest(t){const n=t.interest.filter(o=>o.user===this.authService.user$.value.id).map(o=>{const u=`${m.N.domain}${m.N.api.project.interest}${o.uuid}/`;return this.http.delete(u)});return(0,b.D)(n).pipe((0,g.U)(()=>null))}voteProject(t,r,n){const o=`${m.N.domain}${m.N.api.project.projectVote}`,u={vote:r,project:t};return this.http.post(o,u)}onCommentAddedUpdate(t,r,n){this.postNewComment(r,t.id,n).subscribe(o=>{t.comments||(t.comments=[])},o=>{})}static#t=this.ctorParameters=()=>[{type:d.eN},{type:K.F},{type:c.e}]};P=(0,i.gn)([(0,e.GSi)({providedIn:"root"})],P);var R=s(40272),j=s(76317);let S=class{constructor(t,r,n){this.authService=t,this.router=r,this.ProjectsService=n,this.selectedIndex=2,this.isLoading=!0,this.offset=new j.X(0),this.limit=new j.X(15),this.filters=new j.X(new R.w),this.projects=[],this.loadMoreProjects=!0,this.historic=!1}ngOnInit(){this.isAuthenticated=this.authService.isAuthenticated$.value,this.authService.isAuthenticated$.subscribe(t=>{this.isAuthenticated=t}),this.filters.subscribe(t=>{this.isLoading=!0,this.offset.next(0),this.limit.next(15),this.ProjectsService.getProjects(this.offset.value,this.limit.value,this.historic,this.filters.value).subscribe(r=>{this.isLoading=!1,this.loadMoreProjects=!1,this.projects=r.results,this.count=r.count,console.log(this.projects),this.isProjectLoaded=!r.results||0===r.results.length})}),this.setNavItems(),this.setNavButtons()}setNavItems(){this.navItems=[{name:"Requests",path:"/requests"},{name:"Forum",path:"/forum"},{name:"Projects",path:"/projects"}]}selectTabHandler(t){this.router.navigateByUrl(t.path)}onScroll(){this.offset.next(this.offset.value+this.limit.value)}onFiltersUpdated(t){t.keyword=this.filters.value.keyword,this.filters.next(t)}onSearchUpdated(t){this.filters.value.keyword=t,this.filters.next(this.filters.value)}setNavButtons(){this.navButtons=[{name:"How does it work?",icon:!1,badge:!1,handle:""}]}onPostProject(){this.router.navigate(["/projects/new/new-project"])}static#t=this.ctorParameters=()=>[{type:c.e},{type:v.F0},{type:P}]};S=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-all",template:'<div class="bg-light">\n\t<mmb-web-app-header-extras [title]="\'Projects\'" [navItems]="navItems" [navButton]="navButton" [showSearchBar]="true"\n\t\t[isUserLoggedIn]="isAuthenticated" (selectTabEvent)="selectTabHandler($event)"\n\t\t(filtersApplied)="onFiltersUpdated($event)" (searchStringEvent)="onSearchUpdated($event)"\n\t\t(headerButtonEvent)="onPostProject()" [navButtons]="navButtons" [subtitle]="\'Collaborate on your endeavours\'"\n\t\t[showNavBar]="true" [selectedNavItemIndex]="selectedIndex">\n\t</mmb-web-app-header-extras>\n\t<div class="mmb-responsive-container w-100 my-4" ngClass.sm="mmb-responsive-container--sm"\n\t\tngClass.xs="mmb-responsive-container--xs" fxLayout.gt-sm="row" fxLayout.lt-md="column"\n\t\tfxLayoutAlign="space-between center" *ngIf="isAuthenticated">\n\t\t<div ngClass.gt-sm="w-70" ngClass.lt-md="w-100">\n\t\t\t<mmb-web-app-top-level-filters [entityType]="\'projects\'" [filters]="filters"\n\t\t\t\t(filtersUpdated)="onFiltersUpdated($event)"></mmb-web-app-top-level-filters>\n\t\t</div>\n\t\t<div (click)="onPostProject()" fxLayout="row" fxLayoutAlign="center center"\n\t\t\tclass="btn btn-primary mb-3 cursor-pointer w-204px h-48px p-0 border-radius-lg">Create\n\t\t\tProjects</div>\n\t</div>\n\t<div class="mmb-responsive-container pb-3" ngClass.sm="mmb-responsive-container--sm"\n\t\tngClass.xs="mmb-responsive-container--xs" fxLayout="row" fxLayoutAlign="space-between center">\n\t\t<div fxLayout="row" fxLayoutAlign="start center">\n\t\t\t<div class="mmb-caption-2" *ngIf="isAuthenticated">\n\t\t\t\tShowing {{count}} result(s)\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class="mmb-responsive-container mt-3" ngClass.sm="mmb-responsive-container--sm"\n\t\tngClass.xs="mmb-responsive-container--xs">\n\t\t<div class="p0 w-100" infiniteScroll [infiniteScrollDistance]="5" [infiniteScrollThrottle]="150"\n\t\t\t(scrolled)="onScroll()">\n\t\t\t<div>\n\t\t\t\t<ng-container *ngIf="isAuthenticated">\n\t\t\t\t\t<div class="w-100" fxLayout="row wrap" fxLayoutAlign.gt-sm
1="space-between stretch"\n\t\t\t\t\t\tfxLayoutAlign.lt.md="space-between center">\n\t\t\t\t\t\t<div class="mb-4" [fxFlex.gt-sm]="100/2" [fxFlex.lt-md]="100" *ngFor="let project of projects">\n\t\t\t\t\t\t\t<div class="w-100 h-100 px-2">\n\t\t\t\t\t\t\t\t<mmb-web-app-mmb-listing-card-project [card]="project"></mmb-web-app-mmb-listing-card-project>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<div class="minh-100vh-no-results-patch pt-5 pb-5 mmb-subheading-2 text-center w-100 mb-20"\n\t\t\t\t\t[ngClass.lt-md]="\'is-small\'" *ngIf="(!projects || projects.length === 0) && !isLoading" fxLayout="column"\n\t\t\t\t\tfxLayoutAlign="center">\n\t\t\t\t\tNo results found\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="col-12 text-center py-2 w-100" [ngClass]="{\'h-100vh\': !loadMoreProjects}"\n\t\t\t\t*ngIf="isLoading || loadMoreProjects">\n\t\t\t\t<mmb-ui-inline-loader text="More exciting African opportunities will be with you in just a second..."\n\t\t\t\t\ti18n-text="Projects all inline loader text|Title for project all inline loader text@@projectsAllInlineLoaderText">\n\t\t\t\t</mmb-ui-inline-loader>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<div class="mmb-responsive-container w-100 my-4" ngClass.sm="mmb-responsive-container--sm"\n\tngClass.xs="mmb-responsive-container--xs" fxLayout.gt-sm="row" fxLayout.lt-md="column"\n\tfxLayoutAlign="space-between center">\n\t<div class="w-100 bg-secondary h-130px border-radius-sm p-10" fxLayout.gt-sm="row" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="space-between center" fxLayoutAlign.lt-md="center center">\n\t\t<div class="text-white" ngClass.gt-sm="mmb-display-3" ngClass.lt-md="mmb-subheading-2 mb-4">Get our community to help your project</div>\n\t\t<button (click)="onPostProject()" class="mmb-btn mmb-btn-tertiary text-white">Create Project</button>\n\t</div>\n</div>',styles:[w()]})],S);var q=s(45290),tt=s.n(q),L=s(19337),et=s(90214);let I=class{constructor(t,r,n,o,u,f){this.projectsService=t,this.route=r,this.router=n,this.authService=o,this.sharedHelperService=u,this.sharedService=f,this.isPageLoading=!0,this.isLoading=!0,this.offset=new j.X(0),this.limit=new j.X(15),this.filters=new j.X(new R.w),this.historic=!0,this.careers=[],this.navigationItems=["Overview","Updates"],this.selectedItemIndex=0,this.focusFlag=!1}ngOnInit(){this.isAuthenticated=this.authService.isAuthenticated$.value,this.authService.user$.subscribe(t=>{this.user=t}),this.route.params.pipe((0,g.U)(t=>({slug:t.slug,query:t.query})),(0,L.b)(t=>{if(t.slug)this.projectsService.getProjectDetails(t.slug).pipe((0,g.U)(r=>(this.selectedProject=r,this.isAuthenticated&&this.projectsService.expressCuriousInterest(this.selectedProject).subscribe(),this.isLoading=!1,this.selectedProject)),(0,L.b)(r=>{this.projectsService.getProjectInterests(r.id).subscribe(n=>{this.selectedProject.interest=n.results})}),(0,L.b)(r=>{this.projectsService.getComments(r.id).subscribe(n=>{this.selectedProject.comments=n.results})}),(0,L.b)(()=>{this.getProjectLocation()})).subscribe(()=>{this.isPageLoading=!1},r=>{this.sharedHelperService.handleError(r,!0)});else if(t.query){let r=new R.w;r.keyword=t.query,this.isUserSearching=!0,this.filters.next(r)}})).subscribe()}selectItem(t){this.selectedItemIndex=t}calculateDuration(){const t=new Date(this.selectedProject?.created),r=new Date(this.selectedProject?.end_date);let n=r.getFullYear()-t.getFullYear(),o=r.getMonth()-t.getMonth(),u=r.getDate()-t.getDate();(o<0||0===o&&u<0)&&(n--,o+=12),u<0&&(o--,u+=new Date(r.getFullYear(),r.getMonth(),0).getDate());const f=(h,W)=>h?`${h} ${W}${h>1?"s":""} `:"";return`${f(n,"year")}${f(o,"month")}${f(u,"day")}`.trim()}getProjectLocation(){this.sharedService.getCountryById(this.selectedProject?.country.toString()).subscribe(t=>{this.projectLocation=t[0].name})}scrollToSectionAndFocus(){this.section.nativeElement.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{this.focusFlag=!0},500)}static#t=this.ctorParameters=()=>[{type:P},{type:v.gz},{type:v.F0},{type:c.e},{type:et.Y},{type:K.F}];static#e=this.propDecorators={section:[{type:e.i9L,args:["sectionToScroll"]}]}};I=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-details",template:'<div class="w-100">\n\t<div class="mmb-responsive-container py-6" ngClass.sm="mmb-responsive-container--sm"\n\t\tngClass.xs="mmb-responsive-container--xs">\n\t\t<mmb-web-app-item-navigation-panel [listPageUrl]="\'/projects\'" [goBackText]="\'Back to projects\'">\n\t\t</mmb-web-app-item-navigation-panel>\n\t</div>
1\n\t<div class="position-relative w-100 h-320px">\n\t\t<img class="w-100 h-100 object-fit-cover" [src]="selectedProject?.cover"\n\t\t\tonerror="this.src=\'assets/img/mmb-placeholder.jpg\'" />\n\t</div>\n</div>\n<div class="bg-white w-100 py-4">\n\t<div class="mmb-responsive-container py-6" ngClass.sm="mmb-responsive-container--sm"\n\t\tngClass.xs="mmb-responsive-container--xs">\n\t\t<mmb-web-app-project-org-details [selectedProject]="selectedProject"></mmb-web-app-project-org-details>\n\t</div>\n</div>\n\n<div class="w-100 h-88px bg-lightest--gray">\n\t<div class="mmb-responsive-container" ngClass.sm="mmb-responsive-container--sm"\n\t\tngClass.xs="mmb-responsive-container--xs">\n\t\t<ul class="nav w-100 h-88px" fxLayout="row" fxLayoutAlign="start start" fxLayoutGap="30px">\n\t\t\t<li fxLayout="row" fxLayoutAlign="center center"\n\t\t\t\tclass="nav-item nav-item-project mmb-nav-item cursor-pointer h-88px mmb-caption"\n\t\t\t\t*ngFor="let item of navigationItems; let i = index"\n\t\t\t\t[class.mmb-tab-menu--active]="i === selectedItemIndex" (click)="selectItem(i)"> {{item}}\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</div>\n<div class="mmb-responsive-container" ngClass.sm="mmb-responsive-container--sm"\n\tngClass.xs="mmb-responsive-container--xs">\n\t<div class="px-2">\n\t\t<div *ngIf="selectedItemIndex!==1" class="w-100 bg-white border-radius-sm p-5 mt-5">\n\t\t\t\x3c!-- <div class="mmb-display-3 mb-3">Description</div>--\x3e\n\t\t\t\x3c!-- <div [innerHTML]="selectedProject?.description"></div>--\x3e\n\t\t\t<div class="maxw-1024px w-100" fxLayout.gt-xs="row wrap" fxLayout.lt-sm="column"\n\t\t\t\tfxLayoutAlign.gt-xs="space-between center" fxLayoutAlign.lt-sm="start start">\n\t\t\t\t<div ngClass.lt-md="mb-4 w-100" fxLayout.gt-xs="row" fxLayout.lt-sm="column"\n\t\t\t\t\tfxLayoutAlign.gt-sm="start center" fxLayoutAlign.lt-md="center center">\n\t\t\t\t\t<img class="w-70px h-70px border-radius-lg" [src]="selectedProject?.user.profile_image"\n\t\t\t\t\t\tonerror="this.src=\'assets/images/avatars/not-found.png\'" />\n\t\t\t\t\t<div ngClass.gt-xs="ml-6" ngClass.lt-sm="ml-0" fxLayout.lt-sm="column"\n\t\t\t\t\t\tfxLayoutAlign.lt-sm="center center">\n\t\t\t\t\t\t<div class="mmb-caption">{{selectedProject?.user.name}}</div>\n\t\t\t\t\t\t<div class="mmb-caption-2 mt-2">{{selectedProject?.user.professional_title}}</div>\n\t\t\t\t\t\t\x3c!-- <div class="mmb-caption-2">{{selectedProject?.user.professional_title}}</div> --\x3e\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div fxLayout="column" fxLayoutAlign="center start" fxLayoutGap="10px" ngClass.lt-sm="mb-3">\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="start center">\n\t\t\t\t\t\t<i class="ri-map-pin-line mmb-subheading-2"></i>\n\t\t\t\t\t\t<div class="ml-2">{{projectLocation}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="start center">\n\t\t\t\t\t\t<i class="ri-money-dollar-circle-line mmb-subheading-2"></i>\n\t\t\t\t\t\t<div class="ml-2">Budget: $ {{selectedProject?.total_budget}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div fxLayout="column" fxLayoutAlign="center start" fxLayoutGap="10px">\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="start center">\n\t\t\t\t\t\t<i class="ri-calendar-line mmb-subheading-2"></i>\n\t\t\t\t\t\t<div class="ml-2">Published: {{selectedProject?.created | date}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="start center">\n\t\t\t\t\t\t<i class="ri-time-line mmb-subheading-2"></i>\n\t\t\t\t\t\t<div class="ml-2">Duration: {{calculateDuration()}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf="selectedItemIndex === 0" class="w-100 bg-white border-radius-sm mt-5 p-8">\n\t\t\t<div class="mmb-display-3 my-2 mb-3">{{selectedProject?.title}}</div>\n\t\t\t<div class="mt-4" [innerHTML]="selectedProject?.description"></div>\n\t\t</div>\n\t</div>\n\t<mmb-web-app-project-milestones *ngIf="selectedItemIndex === 0"\n\t\t[selectedProject]="selectedProject"></mmb-web-app-project-milestones>\n\t<mmb-web-app-project-needs *ngIf="selectedItemIndex === 0"\n\t\t[selectedProject]="selectedProject"></mmb-web-app-project-needs>\n\t<ng-container *ngIf="selectedItemIndex === 0">\n\t\t<div class="mmb-body-1 mt-10 mb-3 ml-3" fxLayout="row">\n\t\t\t<i class="ri-bookmark-line mr-2"></i>\n\t\t\tTags ({{selectedProject?.tags?.length}})\n\t\t</div>\n\t\t<div class="px-2">\n\t\t\t<div fxLayout="row wrap" fxLayoutAlign="start" fxLayoutGap="25px"\n\t\t\t\tclass="bg-white border-radius-sm p-6 mb-5">\n\t\t\t\t<div *ngFor="let tag of selectedProject?.tags"\n\t\t\t\t\tclass="mmb-caption-2 my-2 py-2 px-4 minw-100px mmb-border--light border-radius-lg text-align--center">\n\t\t\t\t\t{{tag}}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</ng-container>\n\t<div #sectionToScroll>\n\t\t<mmb-web-app-project-updates *ngIf="selectedItemIndex === 1"\n\t\t\t[selectedProject]="selectedProject"></mmb-web-app-project-updates>\n\t\t<mmb-web-app-project-comments [focusFlag]="focusFlag" *ngIf="selectedItemIndex === 0"\n\t\t\t[selectedProject]="selectedProject"></mmb-web-app-project-comments>\n\t</div>\n</div>\n<div *ngIf="selectedItemIndex === 0" class="mmb-responsive-container w-100 my-4"\n\tngClass.sm="mmb-responsive-container--sm" ngClass.xs="mmb-responsive-container--xs" fxLayout="column"\n\tfxLayoutAlign="center center">\n\t<div class="px-2 w-100">\n\t\t<div class="w-100 bg-secondary h-130px border-radius-sm p-10 h-250px" fxLayout="column"\n\t\t\tfxLayoutAlign="center center">\n\t\t\t<div class="text-white" ngClass.gt-sm="mmb-display-3" ngClass.lt-md="mmb-subheading-2 mb-4">Get involved and\n\t\t\t\tconnect</div>\n\t\t\t<button (click)="scrollToSectionAndFocus()"\n\t\t\t\tclass="mmb-btn mmb-btn-tertiary text-white mt-4 maxw-340px w-100">
1Contribute</button>\n\t\t</div>\n\t</div>\n</div>',styles:[tt()]})],I);var st=s(45906),nt=s.n(st);let O=class{constructor(){this.formId="W4PmvwY6"}ngOnInit(){}ngAfterViewInit(){tf.createWidget(this.formId,{container:document.querySelector("#mmb-tf-form"),hideHeaders:!0,hideFooter:!0,opacity:0})}};O=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-new-project",template:'<div class="w-100 bg-black" id="mmb-tf-form"></div>\n',styles:[nt()]})],O);const it=[{path:"",component:S},{path:":slug",component:I},{path:"new/new-project",component:O}];let D=class{};D=(0,i.gn)([(0,e.LVF)({imports:[v.Bz.forChild(it)],exports:[v.Bz]})],D);var ot=s(65949),at=s(91420);var lt=s(45384),dt=s.n(lt);class mt{}var Y=s(94817);let M=class{constructor(t,r,n){this.router=t,this.projectsService=r,this.toastr=n,this.projectMilestones=[{title:"Discover local talent",description:"Conduct talent searches through social media, local music events, and DJ competitions to identify and attract local DJs with a strong following and the ability to engage listeners. Networking within local music and also uncover hidden talent.",completion:75}],this.selectedProject=new mt,this.slideConfig={dots:!0,draggable:!1,infinite:!1,rows:1,arrows:!1,responsive:[{breakpoint:5e3,settings:{slidesToShow:1,slidesToScroll:1}},{breakpoint:960,settings:{slidesToShow:1,slidesToScroll:1}}]},this.document=document}ngOnInit(){this.projectsService.getProjectDetails(this.card.slug).subscribe(t=>{this.selectedProject=t}),this.projectsService.getComments(this.card.id).subscribe(t=>{this.selectedProject.comments=t.results})}redirectToDetails(t){this.router.navigate([`/projects/${t.slug}`])}calculateDuration(){const t=new Date(this.selectedProject?.created),r=new Date(this.selectedProject?.end_date);let n=r.getFullYear()-t.getFullYear(),o=r.getMonth()-t.getMonth(),u=r.getDate()-t.getDate();(o<0||0===o&&u<0)&&(n--,o+=12),u<0&&(o--,u+=new Date(r.getFullYear(),r.getMonth(),0).getDate());const f=(h,W)=>h?`${h} ${W}${h>1?"s":""} `:"";return`${f(n,"year")}${f(o,"month")}${f(u,"day")}`.trim()}followProject(t,r,n){t.stopPropagation(),this.projectsService.followProject(n,r).subscribe(o=>{this.card.followed=o,this.card.followed.followed=!0,this.toastr.success("You're following this project")},o=>{console.error("Error follow a project:",o)})}unfollowProject(t,r){t.stopPropagation(),this.projectsService.unFollowProject(r).subscribe(n=>{this.card.followed=null,this.toastr.info("You unfollowed this project")},n=>{console.error("Error follow a project:",n)})}static#t=this.ctorParameters=()=>[{type:v.F0},{type:P},{type:Y._W}];static#e=this.propDecorators={card:[{type:e.IIB}]}};M=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-mmb-listing-card-project",template:'<div class="card-item border-radius-sm cursor-pointer bg-white h-100 maxh-650 pb-6 pt-7 px-4 box-shadow-sm position-relative"\n\t(click)="redirectToDetails(card)">\n\t<div fxLayout="row" fxLayoutAlign="space-between flex-start" class="w-100 mb-9">\n\t\t<div fxLayout="column">\n\t\t\t<div class="mmb-caption-2 mt-4">Freetown, Sierra Leone</div>\n\t\t\t<div class="w-90 mmb-display-3 text-black mt-4">{{card.title}}</div>\n\t\t\t<div>\n\t\t\t\t<div fxLayout="row" fxLayoutGap="20px" fxLayoutAlign="flex-start center" class="w-100 mt-5">\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="flex-start center" fxLayoutGap="7px">\n\t\t\t\t\t\t<i class="ri-chat-1-line mmb-subheading-3"></i>\n\t\t\t\t\t\t<p class="m-0 p-0">{{card.comments_total}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="flex-start center" fxLayoutGap="7px">\n\t\t\t\t\t\t<i class="ri-timer-line mmb-subheading-3"></i>\n\t\t\t\t\t\t<p class="m-0 p-0">{{calculateDuration()}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="flex-start center" fxLayoutGap="7px">\n\t\t\t\t\t\t<i class="ri-volume-up-line mmb-subheading-3"></i>\n\t\t\t\t\t\t<p class="m-0 p-0">{{selectedProject?.updates?.length}}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<div class="position-relative h-76px">\n\t\t\t\t<img [src]="card.user.profile_image" onerror="this.src=\'assets/images/avatars/not-found.png\'"\n\t\t\t\t\tclass="w-64px h-64px border-radius-xl" />\n\t\t\t\t<div fxLayout="row" fxLayoutAlign="center center"\n\t\t\t\t\tclass="mmb-border-white-md ml-5 w-26px h-26px bg-black border-radius-lg position-absolute bottom-0 left-0">\n\t\t\t\t\t<i class="ri-add-line text-white"></i>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf="!card?.followed" (click)="followProject($event, card.id, card.uuid)" fxLayout="row" fxLayoutAlign="center center"\n\t\t\t\tclass="w-64px mt-3 h-64px border-radius-lg mmb-border box-shadow-xl ">
1\n\t\t\t\t<i class="ri-add-line text-black mmb-display-3"></i>\n\t\t\t</div>\n\t\t\t<div *ngIf="card?.followed || card?.followed?.followed" (click)="unfollowProject($event, card.followed.uuid)" fxLayout="row" fxLayoutAlign="center center"\n\t\t\t\tclass="w-64px mt-3 h-64px border-radius-lg mmb-border box-shadow-xl ">\n\t\t\t\t<i class="ri-check-fill text-success mmb-display-3"></i>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class="w-100 project-slider">\n\t\t<div class="w-100 my-4 mx-auto w-100 mmb-caption-2" fxLayout="column" fxLayoutAlign="center center">\n\t\t\t<div class="w-100 position-relative" fxLayout="column" fxLayoutAlign="start center">\n\t\t\t\t<div class="w-100 position-absolute top-0 left-0 z-index-1000 mt-35">\n\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="space-between center"\n\t\t\t\t\t\tclass="position-relative z-index-1000 px-3">\n\t\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="center center"\n\t\t\t\t\t\t\tclass="w-48px h-48px bg-white border-radius-lg mmb-border"\n\t\t\t\t\t\t\t(click)="$event.stopPropagation(); $event.preventDefault(); slickModal.slickPrev()">\n\t\t\t\t\t\t\t<i class="ri-arrow-left-s-fill mmb-display-3 mx-2"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="center center"\n\t\t\t\t\t\t\tclass="w-48px h-48px bg-white border-radius-lg mmb-border"\n\t\t\t\t\t\t\t(click)="$event.stopPropagation(); $event.preventDefault(); slickModal.slickNext()">\n\t\t\t\t\t\t\t<i class="ri-arrow-right-s-fill mmb-display-3 mx-2"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<ngx-slick-carousel class="carousel w-100" #slickModal="slick-carousel" [config]="slideConfig">\n\t\t\t\t\t<div ngxSlickItem class="slide" fxLayout="column" fxLayoutAlign="center start">\n\t\t\t\t\t\t<div class="w-100 h-304px position-relative">\n\t\t\t\t\t\t\t<img [src]="card.cover" onerror="this.src=\'assets/img/mmb-placeholder.jpg\'"\n\t\t\t\t\t\t\t\tclass="w-100 border-radius-sm h-100 object-fit-cover cursor-pointer" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="w-100 my-6 w-100 mmb-caption-2 text-align-left px-5">\n\t\t\t\t\t\t\t{{card.summary}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div ngxSlickItem *ngFor="let milestone of selectedProject?.milestones" fxLayout="column"\n\t\t\t\t\t\tfxLayoutAlign="center start" class="slide">\n\t\t\t\t\t\t<div class="w-100 h-304px position-relative bg-light border-radius-sm">\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div fxLayout="row" fxLayoutAlign="space-between center" class="mmb-subheading-2 mt-6 mb-5">\n\t\t\t\t\t\t\t<div>{{milestone.title}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mmb-caption-2 text-ellipsis text-left"> {{milestone.description}}</div>\n\t\t\t\t\t\t\x3c!-- <div class="mmb-caption-2 mt-4 mb-5"><b> By {{milestone.deadline_date | date}} </b></div>\n\t\t\t\t\t\t<mat-progress-bar *ngIf="milestone.progress > 0" mode="determinate"\n\t\t\t\t\t\t\t[value]="milestone.progress"></mat-progress-bar>\n\t\t\t\t\t\t<div class="mmb-caption-2 mt-2"> {{milestone.progress}}% complete</div> --\x3e\n\t\t\t\t\t</div>\n\t\t\t\t</ngx-slick-carousel>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>',styles:[dt()]})],M);var ut=s(19188),gt=s.n(ut);let T=class{constructor(t,r,n){this.projectsService=t,this.authService=r,this.toastr=n}ngOnInit(){setTimeout(()=>{console.log(this.selectedProject)},1e3)}onExpressInterest(){this.projectsService.onExpressInterest(this.selectedProject,2).subscribe(t=>{this.selectedProject.interested=t,this.selectedProject.interested.interested=!0,this.toastr.success("Expressed interest in project")})}onRemoveExpressInterest(){this.projectsService.onExpressInterest(this.selectedProject,10).subscribe(t=>{this.selectedProject.interested=null,this.toastr.success("Remove interest in project")})}followProject(t,r,n){t.stopPropagation(),this.projectsService.followProject(n,r).subscribe(o=>{this.selectedProject.followed=o,this.toastr.success("You're following this project")},o=>{console.error("Error follow a project:",o)})}unfollowProject(t){this.projectsService.unFollowProject(t).subscribe(r=>{this.selectedProject.followed=null,this.toastr.success("You unfollowed this project")},r=>{console.error("Error follow a project:",r)})}upVote(t){this.projectsService.voteProject(this.selectedProject.id,1,this.selectedProject.uuid).subscribe(r=>{console.log(r)},r=>{console.error("Error Voting:",r)})}downVote(t){this.projectsService.voteProject(this.selectedProject.id,-1,this.authService.user$.value.id).subscribe(r=>{console.log(r)},r=>{console.error("Error Voting:",r)})}static#t=this.ctorParameters=()=>[{type:P},{type:c.e},{type:Y._W}];static#e=this.propDecorators={selectedProject:[{type:e.IIB}]}};T=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-org-details",template:'<div class="w-100 mb-10">\n <div class="mmb-display-3">\n {{selectedProject?.title}}\n </div>\n <div class="mt-4 maxw-900px w-100 mmb-caption" [innerHTML]="selectedProject?.summary"></div>\n\n</div>\n<div class="w-100 mt-10" fxLayout.gt-xs="row" fxLayout.lt-sm="column" fxLayoutAlign="space-between center">\n <div fxLayout.gt-xs="row" fxLayout.lt-sm="column" fxLayoutAlign="space-between center" fxLayoutGap="20px"\n ngClass.lt-sm="w-100">\n <button ngClass.gt-xs="minw-200px" ngClass.lt-md="minw-100px" ngClass.lt-sm="w-100"\n *ngIf="!selectedProject?.interested || !selectedProject?.interested?.interested"\n class="mmb-primary-button px-5 py-3 border-radius-lg" (click)="onExpressInterest()">Express Interest\n </button>\n <button ngClass.gt-xs="minw-200px" ngClass.lt-md="minw-100px" ngClass.lt-sm="w-100"\n *ngIf="selectedProject?.interested && selectedProject?.interested?.interested"\n class="mmb-btn mmb-tertiary-button--dark px-5 py-3 border-radius-lg"\n (click)="onRemoveExpressInterest()">Remove Interest\n </button>\n\n <button *ngIf="!selectedProject?.followed"\n (click)="followProject($event, selectedProject.id, selectedProject.uuid)" ngClass.gt-xs="minw-200px"\n ngClass.lt-md="minw-100px" ngClass.lt-sm="w-100"\n class="mmb-primary-button--
1dark py-3">Follow</button>\n <button (click)="unfollowProject(selectedProject.followed.uuid)" fxLayout="row" fxLayoutAlign="center center" *ngIf="selectedProject?.followed || selectedProject?.followed?.followed" ngClass.gt-xs="minw-200px" ngClass.lt-md="minw-100px"\n ngClass.lt-sm="w-100" class="mmb-primary-button--dark py-3"><i class="ri-check-fill mmb-subheading-2 mr-2"></i> Following</button>\n <div>{{selectedProject?.followers_total}} Followers</div>\n </div>\n <div fxLayout="row" fxLayoutAlign="center center" fxLayoutGap="15px">\n <div>{{selectedProject?.votes_total}}</div>\n <mmb-web-app-voting-panel-new (upvote)="upVote($event)" (downvote)="downVote($event)"\n [score]="selectedProject?.votes_total"\n [isUpvoteSelected]="selectedProject?.voted && selectedProject?.voted.vote === 1"\n [isDownvoteSelected]="selectedProject?.voted && selectedProject?.voted.vote === -1"></mmb-web-app-voting-panel-new>\n </div>\n</div>',styles:[gt()]})],T);var ft=s(86547),vt=s.n(ft);let k=class{};k=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-about-project-details",template:'<div [fxFlex.gt-sm]="100 / 10 * 7" class="pr-3">\n <div class="mmb-subheading-1">About project</div>\n <div class="mmb-caption-2 mt-3">\n Join us in launching \'Panorama Beats,\' a groundbreaking community radio initiative that aims to amplify\n African voices and celebrate our continent\'s rich cultural diversity.\n <br /><br />\n Our project seeks funding to build a platform where music, stories, and dialogues from across Africa can\n be shared and appreciated by a global audience.\n <br /><br />\n Your support will enable us to equip our studio, train local talent, and broadcast programs that inspire\n unity, understanding, and cultural exchange. Help us turn up the volume on Africa\'s voices. Together, we\n can create a space where every note and word builds bridges across communities. Support \'Panorama\n Beats\'\u2014where Africa\'s heart beats louder."\n </div>\n</div>\n<div [fxFlex.gt-sm]="100 / 10 * 3" class="px-3 position-relative">\n <div class="w-100 bg-gray--dark h-280px mt-n40 border-radius-sm">\n\n </div>\n</div>',styles:[vt()]})],k);var ht=s(66442),yt=s.n(ht);let B=class{constructor(){this.projectNeeds=["Technical Infrastructure: reliable streaming services, a new website, and potentially a mobile app.","Content Strategy: clear content strategy that identifies the target audience, types of shows, music selection, and any niche topics to cover is vital","Licensing and Legal Compliance: Ensuring that all music, talk shows, and other content comply with copyright laws is essential. ","Technical Infrastructure: reliable streaming services, a new website, and potentially a mobile app."]}static#t=this.propDecorators={selectedProject:[{type:e.IIB}]}};B=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-needs",template:'<div class="mmb-body-1 mt-10 mb-3 ml-3" fxLayout="row">\n <i class="ri-survey-line mr-2"></i>\n Project\'s needs ({{selectedProject?.needs?.length}})\n</div>\n<div fxLayout="row wrap" fxLayoutAlign.gt-xs="space-between stretch" fxLayoutAlign.lt-sm="space-between center">\n <div class="px-2" ngClass.lt-md="mb-3" *ngFor="let need of selectedProject?.needs" [fxFlex.gt-xs]="100/4" [fxFlex.lt-md]="100/2" [fxFlex.lt-sm]="100">\n <div class="bg-white border-radius-sm p-6 mmb-caption-2 w-100 h-100">\n <hr class="mmb-border-top-dark maxw-60px">\n <p>{{need.description}}</p>\n </div>\n </div>\n</div>\n',styles:[yt()]})],B);var wt=s(14285),Pt=s.n(wt),jt=s(14346),At=s(79949);let $=class{constructor(){this.editorConfig=jt.$,this.Editor=At}ngOnInit(){this.user=this.selectedProject.user,console.log(this.selectedProject)}static#t=this.ctorParameters=()=>[];static#e=this.propDecorators={selectedProject:[{type:e.IIB}]}};$=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-updates",template:'\x3c!-- <div class="w-100 bg-white border-radius-sm p-5 my-5">\n\t<ckeditor ngbAutofocus formControlName="request" [editor]="Editor" data="" [config]="editorConfig">\n\t</ckeditor>\n</div> --\x3e\n<ng-container *ngFor="let update of selectedProject.updates">\n\t<div class="w-100 bg-white border-radius-sm p-5 mb-7 mt-4" xmlns="http://www.w3.org/1999/html">\n\t\t<div fxLayout="row" fxLayoutAlign="space-between center">\n\t\t\t<div fxLayout="row">\n\t\t\t\t<div fxLayout="row" fxLayoutAlign="start center">\n\t\t\t\t\t<img src="assets/images/avatars/not-found.png" class="w-56px h-56px">\n\t\t\t\t\t<div fxLayout="column" fxLayoutAlign="start start">\n\t\t\t\t\t\t<div class="mmb-caption-2 ml-2" fxLayout="row" fxLayoutAlign="center center">{{selectedProject.user.name}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mmb-caption-2 ml-2" fxLayout="row" fxLayoutAlign="center center">\n\t\t\t\t\t\t\t{{selectedProject.user.professional_title}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<div class="text-center w-60px mmb-display-3">{{selectedProject.modified | date: "dd MMM"}}</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<hr class="mmb-border-bottom--lightest---solid w-100 my-3">\n\t\t<div class="w-100">\n\t\t\t<div class="mmb-subheading-3 my-2">{{update.title}}</div>\n\t\t\t<div [innerHTML]="update.update"></div>\n\t\t</div>\n\t\t\x3c!-- <div class="w-100 mt-10">\n\t\t\t<div fxLayout="row" fxLayoutAlign="flex-start center">\n\t\t\t\t<i class="ri-discuss-line mmb-subheading-1 mr-3"></i>\n\t\t\t\t<div class="mmb-subheading-2">Comments</div>\n\t\t\t</div>\n\t\t\t<mmb-web-app-project-update-comment [selectedProject]="selectedProject">\n\t\t\t</mmb-web-app-project-update-comment>\n\t\t</div> --\x3e\n\t</div>\n</ng-container>\n\n<div class="w-100 bg-secondary h-130px border-radius-sm p-10 mb-5" fxLayout.gt-sm="row" fxLayout.lt-md="column" fxLayoutAlign.gt-sm
1="space-between center" fxLayoutAlign.lt-md="center center">\n\t<div fxLayout="row" class="text-white" ngClass.gt-sm="mmb-display-3" ngClass.lt-md="mmb-subheading-2 mb-4">Project launched <i class="ri-bard-line text-white"></i></div>\n\t<div ngClass.lt-md="w-auto" ngClass.gt-sm="w-60px" class="text-center text-white mmb-display-3">29 Apr</div>\n</div>',styles:[Pt()]})],$);var St=s(28820),Lt=s.n(St);let U=class{static#t=this.propDecorators={selectedProject:[{type:e.IIB}]}};U=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-community",template:"\n",styles:[Lt()]})],U);var Ot=s(45057),Et=s.n(Ot);let N=class{constructor(t,r){this.authService=t,this.projectsService=r,this.focusFlag=!1,this.flagForChild2=!1}ngOnInit(){this.isAuthenticated=this.authService.isAuthenticated$.value}ngOnChanges(t){t.focusFlag&&this.focusFlag&&(this.flagForChild2=!0)}onAddNewComment(t){this.projectsService.postNewComment(t,this.selectedProject.id,this.authService.user$.value.id).subscribe(r=>{})}onVote(t){this.projectsService.voteComment(this.selectedProject.uuid,1,t.id).subscribe(r=>{})}onDownvote(t){this.projectsService.voteComment(this.selectedProject.uuid,2,t.id).subscribe(r=>{})}static#t=this.ctorParameters=()=>[{type:c.e},{type:P}];static#e=this.propDecorators={selectedProject:[{type:e.IIB}],focusFlag:[{type:e.IIB}]}};N=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-comments",template:'<div class="mmb-body-1 mt-10 mb-3 ml-3" fxLayout="row">\n <i class="ri-chat-2-line mr-2"></i>\n Comments ({{selectedProject?.comments?.length}})\n</div>\n<div class="px-2">\n <div class="w-100 bg-white border-radius-sm p-5 mt-5">\n <div class="mmb-display-3 mb-3">Comments</div>\n <mmb-web-app-comments [focusFlag]="flagForChild2" [profilePic]="selectedProject?.user.profile_image" [comments]="selectedProject?.comments"\n [isAuthenticated]="isAuthenticated" [totalComments]="selectedProject?.comments?.length"\n (addComment)="onAddNewComment($event)" (upvote)="onVote($event)"\n (downvote)="onVote($event)">\n </mmb-web-app-comments>\n </div>\n</div>\n',styles:[Et()]})],N);var Dt=s(33764),Mt=s.n(Dt);let X=class{constructor(){this.slideConfig={dots:!0,draggable:!1,infinite:!1,rows:1,arrows:!1,adaptiveHeight:!0,responsive:[{breakpoint:5e3,settings:{slidesToShow:2.5,slidesToScroll:1}},{breakpoint:960,settings:{slidesToShow:1,slidesToScroll:1}}]}}ngOnInit(){}static#t=this.ctorParameters=()=>[];static#e=this.propDecorators={selectedProject:[{type:e.IIB}]}};X=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-milestones",template:'<div class="mmb-body-1 mt-10 mb-5 ml-3" fxLayout="row">\n <i class="ri-survey-line mr-2"></i>\n Project\'s milestones ({{selectedProject?.milestones?.length}})\n</div>\n<div fxLayout="row wrap">\n <div *ngFor="let milestone of selectedProject?.milestones" [fxFlex.gt-sm]="100/3" [fxFlex.lt-md]="100" class="mb-8 px-2" fxLayout="row wrap"\n fxLayoutAlign="space-between stretch">\n <div class="w-100 p-10 bg-white border-radius-sm content-item">\n <div fxLayout="row" fxLayoutAlign="space-between center" class="mmb-subheading-2 my-2">\n <div>{{milestone.title}}</div>\n </div>\n <div class="mmb-caption-2 my-4"> {{milestone.description}}</div>\n <div class="mmb-caption-2 mt-4 mb-20"><b> By {{milestone.deadline_date | date}} </b></div>\n <ng-container *ngIf="milestone.progress < 100">\n <div class="mmb-progrees-bar">\n <div class="liner" [style.width.px]="milestone.progress"></div>\n </div>\n </ng-container>\n <ng-container *ngIf="milestone.progress == 100">\n <div class="mmb-progrees-bar">\n <div class="liner green" [style.width.px]="milestone.progress"></div>\n </div>\n </ng-container>\n <div class="mmb-caption-2 mt-2"> {{milestone.progress}}% - Milestone Completed</div>\n </div>\n </div>\n</div>\n',styles:[Mt()]})],X);var F=s(70207),G=s(48971);const Tt=new e.OlP("MAT_PROGRESS_BAR_DEFAULT_OPTIONS");new e.OlP("mat-progress-bar-location",{providedIn:"root",factory:function kt(){const p=(0,e.f3M)(a.K0),t=p?p.location:null;return{getPathname:()=>t?t.pathname+t.search:""}}});const Bt=(0,F.pj)(class{constructor(p){this._elementRef=p}},"primary");class A extends Bt{constructor(t,r,n,o,u){super(t),this._ngZone=r,this._changeDetectorRef=n,this._animationMode=o,this._isNoopAnimation=!1,this._value=0,this._bufferValue=0,this.animationEnd=new e.vpe,this._mode="determinate",this._transitionendHandler=f=>{0===this.animationEnd.observers.length||!f.target||!f.target.classList.contains("mdc-linear-progress__primary-bar")||("determinate"===this.mode||"buffer"===this.mode)&&this._ngZone.run(()=>this.animationEnd.next({value:this.value}))},this._isNoopAnimation="NoopAnimations"===o,u&&(u.color&&(this.color=this.defaultColor=u.color),this.mode=u.mode||this.mode)}get value(){return this._value}set value(t){this._value=H((0,G.su)(t)),this._changeDetectorRef.markForCheck()}get bufferValue(){return this._bufferValue||0}set bufferValue(t){this._bufferValue=H((0,G.su)(t)),this._changeDetectorRef.markForCheck()}get mode(){return this._mode}set mode(t){this._mode=t,this._changeDetectorRef.markForCheck()}ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("transitionend",this._transitionendHandler)})}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._transitionendHandler)}_getPrimaryBarTransform(){return`scaleX(${this._isIndeterminate()?1:this.value/100})`}_getBufferBarFlexBasis(){return`${"buffer"===this.mode?this.bufferValue:100}%`}_isIndeterminate(){return"indeterminate"===this.mode||"query"===this.mode}}function H(p,t=0,r=100){return Math.max(t,Math.min(r,p))}A.\u0275fac=function(t){return new(t||A)(e.Y36(e.SBq),e.Y36(e.R0b),e.Y36(e.sBO),e.Y36(e.QbO,8),e.Y36(Tt,8))},A.\u0275cmp=e.Xpm({type:A,selectors:[["mat-progress-bar"]],hostAttrs:["role","progressbar","aria-valuemin","0","aria-valuemax","100","tabindex","-1",1,"mat-mdc-progress-bar","mdc-linear-progress"],hostVars:8,hostBindings:function(t,r){2&t&&(e.uIk("aria-valuenow",r._isIndeterminate()?null:r.value)("mode",r.mode),e.ekj("_mat-animation-noopable",r._isNoopAnimation)("mdc-linear-progress--animation-ready",!r._isNoopAnimation)("mdc-linear-progress--indeterminate",r._isIndeterminate()))},inputs:{color:"color",value:"value",bufferValue:"bufferValue",mode:"mode"},outputs:{animationEnd:"animationEnd"},exportAs:["matProgressBar"],features:[e.qOj],decls:7,vars:4,consts:[["aria-hidden","true",1,"mdc-linear-progress__buffer"],[1,"mdc-linear-progress__buffer-bar"],[1,"mdc-linear-progress__buffer-dots"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__primary-bar"],[1,"mdc-linear-progress__bar-inner"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__secondary-bar"]],template:function(t,r){1&t&&(e.TgZ(0,"div",0),e._UZ(1,"div",1)(2,"div",2),e.qZA(),e.TgZ(3,"div",3),e._UZ(4,"span",4),e.qZA(),e.TgZ(5,"div",5),e._UZ(6,"span",4),e.qZA()),2&t&&(e.xp6(1),e.Udp("flex-basis",r._getBufferBarFlexBasis()),e.xp6(2),e.Udp("transform",r._getPrimaryBarTransform()))},styles:["@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half, 83.67142%))}100%{transform:translateX(var(--mdc-linear-progress-primary-full, 200.611057%))}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scale
1X(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter, 37.651913%))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half, 84.386165%))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full, 160.277782%))}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(-10px)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half-neg, -83.67142%))}100%{transform:translateX(var(--mdc-linear-progress-primary-full-neg, -200.611057%))}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter-neg, -37.651913%))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half-neg, -84.386165%))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full-neg, -160.277782%))}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}@media screen and (forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;width:100%;height:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid}.mdc-linear-progress__buffer{display:flex;position:absolute;width:100%;height:100%}.mdc-linear-progress__buffer-dots{background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar{right:0;-webkit-transform-origin:center right;transform-origin:center right}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-linear-progress--closed{opacity:0}
1.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots{animation:none}.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner{animation:none}.mdc-linear-progress__bar-inner{border-color:var(--mdc-linear-progress-active-indicator-color, #6200ee)}.mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='%23e6e6e6'/%3E%3C/svg%3E\")}.mdc-linear-progress__buffer-bar{background-color:#e6e6e6}.mdc-linear-progress{height:var(--mdc-linear-progress-track-height, 4px)}.mdc-linear-progress__bar-inner{border-top-width:var(--mdc-linear-progress-track-height, 4px)}.mdc-linear-progress__buffer-dots{background-size:10px var(--mdc-linear-progress-track-height, 4px)}.mat-mdc-progress-bar{display:block}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}"],encapsulation:2,changeDetection:0});class C{}C.\u0275fac=function(t){return new(t||C)},C.\u0275mod=e.oAB({type:C,declarations:[A],exports:[A,F.BQ]}),C.\u0275inj=e.cJS({imports:[F.BQ]});var $t=s(25939);var Nt=s(16357),Xt=s.n(Nt);let z=class{constructor(t,r){this.authService=t,this.projectsService=r}ngOnInit(){this.isAuthenticated=this.authService.isAuthenticated$.value}onAddNewComment(t){this.projectsService.postNewComment(t,this.selectedProject.id,this.authService.user$.value.id).subscribe(r=>{})}onVote(t){this.projectsService.voteComment(this.selectedProject.uuid,1,t.id).subscribe(r=>{})}onDownvote(t){this.projectsService.voteComment(this.selectedProject.uuid,2,t.id).subscribe(r=>{})}static#t=this.ctorParameters=()=>[{type:c.e},{type:P}];static#e=this.propDecorators={selectedProject:[{type:e.IIB}]}};z=(0,i.gn)([(0,e.wA2)({selector:"mmb-web-app-project-update-comment",template:'<div class="px-2">\n <div class="w-100 bg-white border-radius-sm p-5 mt-5">\n <div class="mmb-display-3 mb-3">Comments</div>\n <mmb-web-app-comments [profilePic]="selectedProject?.user.profile_image" [comments]="selectedProject?.comments"\n [isAuthenticated]="isAuthenticated" [totalComments]="selectedProject?.comments?.length"\n (addComment)="onAddNewComment($event)" (upvote)="onVote($event)"\n (downvote)="onVote($event)">\n </mmb-web-app-comments>\n </div>\n</div>\n',styles:[Xt()]})],z);let V=class{};V=(0,i.gn)([(0,e.LVF)({declarations:[S,M,I,T,k,B,$,U,N,X,O,z],imports:[a.ez,D,E.m,at.Rq,ot.o9,C,$t.Sv]})],V)},40272:(l,_,s)=>{"use strict";s.d(_,{w:()=>i});class i{}},92637:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},86547:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},45384:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},45057:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},28820:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},33764:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},66442:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},19188:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},16357:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},14285:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},45906:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},45290:(l,_,s)=>{var i=s(337),a=s(60931)(i);a.push([l.id,"",""]),l.exports=a.toString()},25939:(l,_,s)=>{"use strict";s.d(_,{Sv:()=>x});var i=s(94666),e=s(22560),a=s(2508);class v{constructor(c,d,g){this.el=c,this.zone=d,this.platformId=g,this.afterChange=new e.vpe,this.beforeChange=new e.vpe,this.breakpoint=new e.vpe,this.destroy=new e.vpe,this.init=new e.vpe,this.currentIndex=0,this.slides=[],this.initialized=!1,this._removedSlides=[],this._addedSlides=[]}ngOnDestroy(){this.unslick()}ngAfterViewInit(){this.ngAfterViewChecked()}ngAfterViewChecked(){if(!(0,i.PM)(this.platformId)&&(this._addedSlides.length>0||this._removedSlides.length>0)){const c=this.slides.length-this._removedSlides.length+this._addedSlides.length;
1this.initialized?0===c?this.unslick():(this._addedSlides.forEach(d=>{this.slides.push(d),this.zone.runOutsideAngular(()=>{this.$instance.slick("slickAdd",d.el.nativeElement)})}),this._addedSlides=[],this._removedSlides.forEach(d=>{const g=this.slides.indexOf(d);this.slides=this.slides.filter(b=>b!==d),this.zone.runOutsideAngular(()=>{this.$instance.slick("slickRemove",g)})}),this._removedSlides=[]):c>0&&this.initSlick()}}initSlick(){this.slides=this._addedSlides,this._addedSlides=[],this._removedSlides=[],this.zone.runOutsideAngular(()=>{this.$instance=jQuery(this.el.nativeElement),this.$instance.on("init",(c,d)=>{this.zone.run(()=>{this.init.emit({event:c,slick:d})})}),this.$instance.slick(this.config),this.zone.run(()=>{this.initialized=!0,this.currentIndex=this.config?.initialSlide||0}),this.$instance.on("afterChange",(c,d,g)=>{this.zone.run(()=>{this.afterChange.emit({event:c,slick:d,currentSlide:g,first:0===g,last:d.$slides.length===g+d.options.slidesToScroll}),this.currentIndex=g})}),this.$instance.on("beforeChange",(c,d,g,b)=>{this.zone.run(()=>{this.beforeChange.emit({event:c,slick:d,currentSlide:g,nextSlide:b}),this.currentIndex=b})}),this.$instance.on("breakpoint",(c,d,g)=>{this.zone.run(()=>{this.breakpoint.emit({event:c,slick:d,breakpoint:g})})}),this.$instance.on("destroy",(c,d)=>{this.zone.run(()=>{this.destroy.emit({event:c,slick:d}),this.initialized=!1})})})}addSlide(c){this._addedSlides.push(c)}removeSlide(c){this._removedSlides.push(c)}slickGoTo(c){this.zone.runOutsideAngular(()=>{this.$instance.slick("slickGoTo",c)})}slickNext(){this.zone.runOutsideAngular(()=>{this.$instance.slick("slickNext")})}slickPrev(){this.zone.runOutsideAngular(()=>{this.$instance.slick("slickPrev")})}slickPause(){this.zone.runOutsideAngular(()=>{this.$instance.slick("slickPause")})}slickPlay(){this.zone.runOutsideAngular(()=>{this.$instance.slick("slickPlay")})}unslick(){this.$instance&&(this.zone.runOutsideAngular(()=>{this.$instance.slick("unslick")}),this.$instance=void 0),this.initialized=!1}ngOnChanges(c){if(this.initialized){const d=c.config;if(d.previousValue!==d.currentValue&&void 0!==d.currentValue){const g=d.currentValue.refresh,b=Object.assign({},d.currentValue);delete b.refresh,this.zone.runOutsideAngular(()=>{this.$instance.slick("slickSetOption",b,g)})}}}}v.\u0275fac=function(c){return new(c||v)(e.Y36(e.SBq),e.Y36(e.R0b),e.Y36(e.Lbi))},v.\u0275cmp=e.Xpm({type:v,selectors:[["ngx-slick-carousel"]],inputs:{config:"config"},outputs:{afterChange:"afterChange",beforeChange:"beforeChange",breakpoint:"breakpoint",destroy:"destroy",init:"init"},exportAs:["slick-carousel"],features:[e._Bn([{provide:a.JU,useExisting:(0,e.Gpc)(()=>v),multi:!0}]),e.TTD],ngContentSelectors:["*"],decls:1,vars:0,template:function(c,d){1&c&&(e.F$t(),e.Hsn(0))},encapsulation:2});class y{constructor(c,d,g,b){this.el=c,this.renderer=d,this.platformId=g,this.carousel=b}ngOnInit(){this.carousel.addSlide(this),(0,i.PM)(this.platformId)&&this.carousel.slides.length>0&&this.renderer.setStyle(this.el,"display","none")}ngOnDestroy(){this.carousel.removeSlide(this)}}y.\u0275fac=function(c){return new(c||y)(e.Y36(e.SBq),e.Y36(e.Qsj),e.Y36(e.Lbi),e.Y36(v,1))},y.\u0275dir=e.lG2({type:y,selectors:[["","ngxSlickItem",""]]});class x{}x.\u0275fac=function(c){return new(c||x)},x.\u0275mod=e.oAB({type:x,declarations:[v,y],imports:[i.ez],exports:[v,y]}),x.\u0275inj=e.cJS({imports:[i.ez]})}}]); 2//# sourceMappingURL=840.85cbd8947b1d096e.js.map
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.