PageSourceSearch

https://www.movemeback.com/54.1e449922cd2c82b1.js

js movemeback.com collected 2026-10-02 16:45:10 UTC 40,736 bytes, 2 lines download raw bytes

1(self.webpackChunkmmb_web_app=self.webpackChunkmmb_web_app||[]).push([[54,272],{13054:(o,r,t)=>{"use strict";t.r(r),t.d(r,{EventsModule:()=>k});var s=t(42321),n=t(22560),a=t(94666),d=t(24486);var I=t(96031),c=t.n(I),_=t(76317),O=t(26562),v=t(72003),u=t(94817),w=t(93819),b=t(40272),f=t(3790),R=t(61311),L=t(90214),h=t(55396),y=t(53388);let m=class{constructor(e,i,p,A,j,X,G,H){this.eventsService=e,this.router=i,this.toastr=p,this.sharedService=A,this.authService=j,this.userTrackersService=X,this.advertService=G,this.sharedHelperService=H,this.offset=new _.X(0),this.limit=new _.X(16),this.filters=new _.X(new b.w),this.isLoading=!0,this.loadMoreEvents=!0,this.historic=!0,this.isGridViewActive=!0,this.events=[],this.navItems=[],this.selectedIndex=2}ngOnInit(){this.sharedHelperService.setPageMeta(),this.isAuthenticated=this.authService.isAuthenticated$.value,this.sharedService.userPermissions$.subscribe(e=>{}),(0,O.a)(this.offset).subscribe(()=>{this.isEventsLoaded||(this.loadMoreEvents=!0,0!==this.offset.value&&this.eventsService.getEvents(this.offset.value,this.limit.value).subscribe(e=>{this.isLoading=!1,this.loadMoreEvents=!1,this.events.push(...e.results),this.isEventsLoaded=!e.results||0===e.results.length}))}),this.filters.subscribe(e=>{this.isLoading=!0,this.offset.next(0),this.limit.next(16),this.eventsService.getEvents(this.offset.value,this.limit.value,this.filters.value).subscribe(i=>{this.events=i.results,this.count=i.count,this.isLoading=!1,this.loadMoreEvents=!1,this.isEventsLoaded=!i.results||0===i.results.length})}),this.setNavItems(),this.getAdvert()}getAdvert(){this.advertService.getCareerListingAdvert().subscribe(e=>{e&&e.results&&(this.advert=e.results[0])})}setNavItems(){this.navItems=h.X}onScroll(){this.offset.next(this.offset.value+this.limit.value)}onSearch(e){e&&this.router.navigate([`/events/search/${e}`])}onAddToFavorites(e){this.eventsService.addToFavorites(e).subscribe(i=>{this.toastr.success("Added to your favourites!","Success"),e.saved=i})}onRemoveFromFavorites(e){const i=e.saved.uuid;this.eventsService.removeFromFavorites(i).subscribe(()=>{this.toastr.success("Removed from favourites!","Success"),e.saved=!1})}onFiltersUpdated(e){this.filters.next(e)}onSearchUpdated(e){this.filters.value.keyword=e,this.filters.next(this.filters.value)}onPageEnterTracker(){this.userTrackersService.onPageEnter({object_uuid:"",name:"event-listing-page",slug:"events",area:"Event",type:"Initial",additional_info:"event-listing-logged"}).subscribe()}selectTabHandler(e){this.router.navigateByUrl(e.path)}getViewOptionsTooltip(){return this.authService.isAuthenticated$.value?"Coming soon":"Sign up or Log in to use this feature"}onPostEvent(){this.router.navigate(["/events/new-post"])}static#e=this.ctorParameters=()=>[{type:v.n},{type:d.F0},{type:u._W},{type:w.F},{type:f.e},{type:R.hW},{type:y.c},{type:L.Y}]};m=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-all",template:'<div class="bg-light">\n    <mmb-web-app-header-extras [menu]="\'opportunityMenu\'" [title]="\'Events\'"\n        [subtitle]="\'Stay informed with African focused, globally sourced events\'" [showSearchBar]="isAuthenticated"\n        [showNavBar]="true" (searchStringEvent)="onSearchUpdated($event)" [navItems]="navItems"\n        [selectedNavItemIndex]="selectedIndex" [navButton]="{ text: \'Post an Event\'}"\n        (headerButtonEvent)="onPostEvent()" (selectTabEvent)="selectTabHandler($event)"\n        [isUserLoggedIn]="isAuthenticated" [entityType]="\'event\'" [filters]="filters"\n        (filtersApplied)="onFiltersUpdated($event)">\n    </mmb-web-app-header-extras>\n    <div class="mmb-responsive-container mt-3" ngClass.sm="mmb-responsive-container--sm"\n        ngClass.xs="mmb-responsive-container--xs" fxLayout="row" fxLayoutAlign="space-between center"\n        *ngIf="isAuthenticated">\n        <div fxFlex.lt-md class="py-4" fxHide.xs="true" *ngIf="events">\n            <mmb-web-app-top-level-filters [entityType]="\'event\'" [filters]="filters"\n                (filtersUpdated)="onFiltersUpdated($event)"></mmb-web-app-top-level-filters>\n        </div>\n    </div>\n\n    <div class="mmb-responsive-container py-3" ngClass.sm="mmb-responsive-container--sm"\n        ngClass.xs="mmb-responsive-container--xs" fxLayout="row" fxLayoutAlign="space-between center">\n        <div fxLayout="row" fxLayoutAlign="start center">\n            <div class="mmb-caption-2" *ngIf="events && isAuthenticated">Available\n                <strong class="font-weight-600">{{ count }} Events</strong>\n            </div>\n            \x3c!-- <div *ngIf="!isAuthenticated">\n                <a class="text-secondary-300 mmb-subheading-2" [routerLink]="\'/join\'">
1\n                    <span>Join </span>\n                </a>\n                <span class="mmb-subheading-2">to see more events</span>\n            </div> --\x3e\n        </div>\n    </div>\n\n    <div class="mmb-responsive-container mt-3" ngClass.sm="mmb-responsive-container--sm"\n        ngClass.xs="mmb-responsive-container--xs">\n        <div infiniteScroll [infiniteScrollDistance]="5" [infiniteScrollThrottle]="150" (scrolled)="onScroll()"\n            *ngIf="isAuthenticated">\n            <div class="w-100" fxLayout.gt-xs="row wrap" fxLayout.xs="column" fxLayoutAlign="stretch"\n                fxLayoutGap.gt-xs="20px grid" fxLayoutGap.xs="20px" fxLayoutAlign.lt.md="space-between center">\n                <ng-container *ngFor="let event of events; let i=index">\n                    <div [fxFlex.gt-md]="100/4" [fxFlex.md]="100/3" [fxFlex.sm]="50" [fxFlex.xs]="100"\n                        ngClass.gt-xs="px-3">\n                        <mmb-web-app-event-card [event]="event" [isSaved]="event.saved"\n                            [isAuthenticated]="isAuthenticated" (addBookmark)="onAddToFavorites(event)"\n                            (removeBookmark)="onRemoveFromFavorites(event)" [image]="event.organisation.logo"\n                            [coverImage]="event.cover" url="/events/{{event.slug}}" [title]="event.title"\n                            [heading]="event.name" [location]="event.location_summary"\n                            [author]="event.organisation.name" [date]="event.start_date | date:\'fullDate\'">\n                        </mmb-web-app-event-card>\n\n                    </div>\n                    <div *ngIf="i === 7" fxFlex="100" class="p-0">\n                        <mmb-web-app-listing-row-advert [advert]="advert"></mmb-web-app-listing-row-advert>\n                    </div>\n                </ng-container>\n            </div>\n\n            <div class="px-3 pb-5 pt-5 mmb-subheading-2 text-center w-100"\n                *ngIf="(!events || events.length === 0) && !isLoading">\n                No events found\n            </div>\n\n            <div class="text-center py-4" *ngIf="isLoading || loadMoreEvents" [ngClass]="{\'h-100vh\': !loadMoreEvents}">\n                <mmb-ui-inline-loader text="More exciting events will be with you in just a second..."\n                    i18n-text="Events all inline loader text|Title for events all inline loader text@@eventssAllInlineLoaderText">\n                </mmb-ui-inline-loader>\n            </div>\n        </div>\n        <div class="mt-3" *ngIf="!isAuthenticated">\n            <div class="w-100" fxLayout.gt-xs="row wrap" fxLayout.xs="column" fxLayoutAlign="stretch"\n                fxLayoutGap.gt-xs="20px grid" fxLayoutGap.xs="20px" fxLayoutAlign.lt.md="space-between center">\n                <ng-container *ngFor="let event of events; let i=index">\n                    <div [fxFlex.gt-md]="100/4" [fxFlex.md]="100/3" [fxFlex.sm]="50" [fxFlex.xs]="100"\n                        ngClass.gt-xs="px-3">\n                        <mmb-web-app-event-card [event]="event" [isSaved]="event.saved"\n                            (addToFavoritesClicked)="onAddToFavorites(event)"\n                            (removeFromFavoritesClicked)="onRemoveFromFavorites(event)"\n                            [image]="event.organisation.logo" [coverImage]="event.cover" url="/events/{{event.slug}}"\n                            [title]="event.title" [heading]="event.name" [location]="event.location_summary"\n                            [author]="event.organisation.name"\n                            [date]="event.start_date | date:\'fullDate\'"></mmb-web-app-event-card>\n                    </div>\n\n                    <div *ngIf="i === 7" fxFlex="100" class="p-0">\n                        <mmb-web-app-listing-row-advert [advert]="advert"></mmb-web-app-listing-row-advert>\n                    </div>\n                </ng-container>\n            </div>\n\n            <div class="minh-100vh-no-results-patch pt-5 pb-5 mmb-body-1 text-center w-100"\n                [ngClass.lt-md]="\'is-small\'" *ngIf="(!events || events.length === 0) && !isLoading" fxLayout="column"\n                fxLayoutAlign="center">\n                No results found\n            </div>\n\n            <div class="text-center py-4" *ngIf="isLoading || loadM
1oreEvents" [ngClass]="{\'h-100vh\': !loadMoreEvents}">\n                <mmb-ui-inline-loader text="More exciting events will be with you in just a second..."\n                    i18n-text="Events all inline loader text|Title for events all inline loader text@@eventssAllInlineLoaderText">\n                </mmb-ui-inline-loader>\n            </div>\n        </div>\n    </div>\n</div>\n<ng-container *ngIf="!isAuthenticated && !isLoading">\n    <mmb-web-app-join-community></mmb-web-app-join-community>\n</ng-container>',styles:[c()]})],m);var Y=t(2150),Z=t.n(Y),D=t(50635),J=t(19337),E=t(72675),z=t(79639),Q=t(17759),x=t(43746),V=t(96836);let S=class{constructor(e,i,p,A,j,X,G,H,Te){this.eventsService=e,this.route=i,this.modalService=p,this.router=A,this.userTrackersService=j,this.authService=X,this.sharedService=G,this.sharedHelperService=H,this.feedService=Te}ngOnInit(){this.isAuthenticated=this.authService.isAuthenticated$.value,this.authService.user$.subscribe(e=>{this.user=e}),this.route.params.pipe((0,D.U)(e=>({slug:e.slug,query:e.query})),(0,J.b)(e=>{this.isLoading=!0,e.slug&&(this.slug=e.slug,this.eventsService.getEventDetails(e.slug).pipe((0,D.U)(i=>{this.selectedEventDetails=i,this.isAuthenticated&&this.eventsService.expressCuriousInterest(this.selectedEventDetails).subscribe(),this.sharedHelperService.setPageMeta({title:this.selectedEventDetails.title,de
1scription:this.selectedEventDetails.summary,banner:this.selectedEventDetails.cover})})).subscribe(()=>{this.isLoading=!1}))})).subscribe()}onAddNewComment(e){if(this.isAuthenticated){let i={event:this.selectedEventDetails.id,comment:e};this.feedService.addNewComment(`${x.N.domain}${x.N.api.events.comment}`,i).subscribe(p=>{})}else this._openRegisterModal()}onUpvote(e){this.feedService.onCommentUpvoteClicked(`${x.N.domain}${x.N.api.events.commentVote}`,!0,e)}onDownvote(e){this.feedService.onCommentDownvoteClicked(`${x.N.domain}${x.N.api.events.commentVote}`,!1,e)}onListingCardClicked(e){this.router.navigate([`events/${e.slug}`])}getListingType(){return this.sharedService.getListingType(this.selectedEventDetails.listing_type)}isExternal(e){return e&&parseInt(e)>3}onExternalApply(e){const i=this.modalService.open(z.U,{centered:!0,size:"md"});i.componentInstance.orgLogo=this.selectedEventDetails.organisation.image_logo_large,i.componentInstance.orgName=this.selectedEventDetails.organisation.name,i.componentInstance.eventId=this.selectedEventDetails.id,i.componentInstance.eventName=this.selectedEventDetails.title,i.componentInstance.event=this.selectedEventDetails,i.componentInstance.redirectUrl=this.selectedEventDetails.website_redirect_url,i.componentInstance.submitted.subscribe(()=>{i.dismiss(),this.eventsService.getEventDetails(this.slug).pipe((0,D.U)(p=>this.selectedEventDetails=p)).subscribe()})}onPageEnterTracker(){const e={object_uuid:this.selectedEventDetails.uuid,name:`${this.selectedEventDetails.organisation.name} - ${this.selectedEventDetails.title}`,slug:this.selectedEventDetails.slug,area:"Event",type:"Initial",additional_info:"event-details-logged"};this.userTrackersService.onPageEnter(e).subscribe()}getNavigationLink(e){return e&&e.slug?`/events/${e.slug}`:null}onReadMoreClicked(e){e.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})}onSimilarEventsLoaded(e){this.isSimilarEventsGtZero=e&&e.length>0}onSuggestedEventsLoaded(e){this.isSuggestedEventsGtZero=e&&e.length>0}_openRegisterModal(){const e=this.modalService.open(V.y,{centered:!0,size:"md"});e.componentInstance.isOpenedInModal=!0,e.componentInstance.completed.subscribe(()=>{e.dismiss()})}static#e=this.ctorParameters=()=>[{type:v.n},{type:d.gz},{type:E.FF},{type:d.F0},{type:R.hW},{type:f.e},{type:w.F},{type:L.Y},{type:Q.q}]};S=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-events-details-light",template:'<div *ngIf="selectedEventDetails">\n    <div class="bg-white">\n        <div class="mmb-responsive-container py-6" ngClass.sm="mmb-responsive-container--sm"\n            ngClass.xs="mmb-responsive-container--xs">\n            <mmb-web-app-item-navigation-panel [next]="getNavigationLink(selectedEventDetails.navigation.next)"\n                [previous]="getNavigationLink(selectedEventDetails.navigation.previous)" [listPageUrl]="\'/events\'"\n                [goBackText]="\'Back to events\'">\n            </mmb-web-app-item-navigation-panel>\n        </div>\n    </div>\n\n    <div class="bg-light">\n        <div class="mmb-responsive-container py-8" ngClass.sm="mmb-responsive-container--sm"\n            ngClass.xs="mmb-responsive-container--xs">\n            <div class="position-relative mb-4">\n                <img class="border-radius-sm w-100 maxh-640px" [src]="selectedEventDetails.cover"\n                    onerror="this.src=\'assets/img/mmb-placeholder.jpg\'" />\n                <div class="">\n                    <a href="#"\n                    class="mmb-primary-button--dark position-absolute mmb-right-24px mmb-bottom-24px pointer-events-none mmb-caption-2 text-uppercase py-1">Movemeback\n                        \xb7 {{getListingType()}}</a>\n                </div>\n            </div>\n\n            <div class="mmb-cms" fxLayout="row wrap" fxLayoutAlign="space-around start">\n                <div [fxFlex.gt-sm]="100 / 10 * 7" ngClass.gt-sm="pr-3" [fxFlex.lt-md]="100">\n                    <mmb-web-app-event-summary-info [event]="selectedEventDetails" (register)="onExternalApply(false)" (reregister)="onExternalApply(true)">\n                    </mmb-web-app-event-summary-info>\n                    <mmb-web-app-event-description [event]="selectedEventDetails"></mmb-web-app-event-description>\n                    <div class="bg-white border-radius-sm mb-4 py-8">\n                    <h6 class="mmb-emphasize-left-secondary mmb-subheading-1 mb-4">\n                            Comments</h6>\n                        <div class="px-4">\n                            <mmb-web-app-comments [profilePic]="user?.profile_image" [isAuthenticated]="isAuthenticated"\n                                [totalComments]="selectedEventDetails.comments?.length" [comments]="selectedEventDetails.comments"\n                                (addComment)="onAddNewComment($event)" (upvote)="onUpvote($event)"\n                                (downvote)="onDownvote($event)">\n                            </mmb-web-app-comments>\n                        </div>\n                    </div>\n                </div>\n                <div [fxFlex.gt-sm]="100 / 10 * 3" ngClass.gt-sm="pl-3" [fxFlex.lt-md]="100">
1\n                    <mmb-web-app-event-extra-details [event]="selectedEventDetails"></mmb-web-app-event-extra-details>\n                    <mmb-web-app-event-posted-by [event]="selectedEventDetails"\n                        (readMoreClicked)="onReadMoreClicked(aboutOrganisation)"></mmb-web-app-event-posted-by>\n                </div>\n            </div>\n\n            <div #aboutOrganisation>\n                <mmb-web-app-event-details-org-overview [event]="selectedEventDetails">\n                </mmb-web-app-event-details-org-overview>\n            </div>\n\n        </div>\n    </div>\n</div>\n<div class="bg-primary-900 pt-15 pb-30" *ngIf="selectedEventDetails"\n    [hidden]="!isSimilarEventsGtZero && !isSuggestedEventsGtZero">\n    <div class="mmb-responsive-container" ngClass.sm="mmb-responsive-container--sm"\n        ngClass.xs="mmb-responsive-container--xs">\n        <mmb-web-app-similar-events [type]="\'similar\'" [showSimilarEventsButton]="false"\n            [slug]="selectedEventDetails.slug" (similarEventsLoaded)="onSuggestedEventsLoaded($event)">\n        </mmb-web-app-similar-events>\n\n        <mmb-web-app-similar-events *ngIf="isAuthenticated" [type]="\'suggested\'" [showSimilarEventsButton]="false"\n            (similarEventsLoaded)="onSuggestedEventsLoaded($event)">\n        </mmb-web-app-similar-events>\n    </div>\n</div>\n\n<div class="text-center py-2 w-100 h-100vh" fxLayoutAlign="center center" *ngIf="isLoading">\n    <mmb-ui-inline-loader>\n    </mmb-ui-inline-loader>\n</div>',styles:[Z()]})],S);var ee=t(18158),te=t.n(ee);let C=class{constructor(){this.formId="YSuhW4PX"}ngOnInit(){}ngAfterViewInit(){tf.createWidget(this.formId,{container:document.querySelector("#mmb-tf-form"),hideHeaders:!0,hideFooter:!0,opacity:0})}static#e=this.ctorParameters=()=>[]};C=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-new-career",template:'<div class="w-100 bg-typeform-event" id="mmb-tf-form"></div>\n',styles:[te()]})],C);const ne=[{path:"search/:query",component:S},{path:"new-post",component:C},{path:":slug",component:S},{path:"",component:m}];let P=class{};P=(0,s.gn)([(0,n.LVF)({imports:[d.Bz.forChild(ne)],exports:[d.Bz]})],P);var se=t(41889),ie=t(91420),W=t(2508);var oe=t(99213),re=t.n(oe);let M=class{constructor(e,i){this.toastr=e,this.eventsService=i,this.externalApply=new n.vpe}ngOnInit(){}isExternal(e){return e&&e>3}onExternalApply(){this.externalApply.emit()}onReactionUpdated(e){this.eventsService.onReactionUpdated(this.selectedEventDetails,e)}onCommentAdded(e){this.eventsService.onCommentAdded(this.selectedEventDetails,e)}onExpressInterest(){this.eventsService.expressInterest(this.selectedEventDetails).subscribe(e=>{this.selectedEventDetails.interested.interested=e,this.toastr.success("Expressed interest","Success")})}onRemoveInterest(){this.eventsService.removeInterest(this.selectedEventDetails).subscribe(e=>{this.selectedEventDetails.interested.interested=null,this.toastr.success("Removed the interest","Success")})}static#e=this.ctorParameters=()=>[{type:u._W},{type:v.n}];static#t=this.propDecorators={selectedEventDetails:[{type:n.IIB}],externalApply:[{type:n.r_U}]}};M=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-apply-event",template:'<mmb-web-app-interaction-tools [reactions]="selectedEventDetails.reactions_summary?.total"\n    [reacted]="selectedEventDetails.reacted" [isReactionsEnabled]="true" (commentAdded)="onCommentAdded($event)"\n    [comments]="selectedEventDetails.comments" (reactionUpdated)="onReactionUpdated($event)">\n</mmb-web-app-interaction-tools>\n\n<div class="mt-2">\n    <button\n    *ngIf="!selectedEventDetails.applied && !selectedEventDetails.applied_external && !selectedEventDetails.interested.interested"\n    type="button" class="btn sApp-btn btn-sm mb-3" (click)="onExpressInterest()">I\'m Interested!</button>\n<button type="button" class="btn btn-sm mb-3 border-radius" (click)="onRemoveInterest()" ngbTooltip="Expressed Interest {{ (selectedEventDetails.interested.modified ? selectedEventDetails.interested.modified : selectedEventDetails.interested.created) | timeago }}"\n    *ngIf="selectedEventDetails.interested.interested && !selectedEventDetails.applied && !selectedEventDetails.applied_external">\n    Expressed Interest\n</button>\n    <a *ngIf="!isExternal(selectedEventDetails.listing_type)" type="button" class="btn sApp-btn btn-sm mb-3 ml-2">\n        <img src="assets/logos/mmb-logo.png" class="logo-icon" />\n        Easy Apply\n    </a>\n    <a *ngIf="isExternal(selectedEventDetails.listing_type)" type="button" class="btn sApp-btn btn-sm mb-3 ml-2"\n        (click)="onExternalApply()">Apply</a>\n</div>',styles:[re()]})],M);var le=t(65949);var ve=t(13603),ce=t.n(ve),me=t(8345);let T=class{constructor(e,i,p,A){this.eventService=e,this.toastr=i,this.modalService=p,this.authService=A,this.register=new n.vpe,this.reregister=new n.vpe}ngOnInit(){}onRegister(e){this.authService.isAuthenticated$.value?e?this.reregister.emit():this.register.emit():this._openRegisterModal()}onAddToFavorites(e){this.authService.isAuthenticated$.value?this.eventService.addToFavorites(e).subscribe(i=>{this.toastr.success("Added to your favourites!","Success"),e.saved=i}):this._openRegisterModal()}onRemoveFromFavorites(e){if(this.authService.isAuthenticated$.value){const i=e.saved.uuid;this.eventService.removeFromFavorites(i).subscribe(()=>{this.toastr.success("Removed from favourites!","Success"),e.saved=!1})}else this._openRegisterModal()}getShareUrl(){return`${window.location.href}`}
1_openInviteModal(){const e=this.modalService.open(me.B,{centered:!0,size:"md"});e.componentInstance.isOpenedInModal=!0,e.componentInstance.event=this.event,e.componentInstance.completed.subscribe(()=>{e.dismiss()})}_openRegisterModal(){const e=this.modalService.open(V.y,{centered:!0,size:"md"});e.componentInstance.isOpenedInModal=!0,e.componentInstance.completed.subscribe(()=>{e.dismiss()})}static#e=this.ctorParameters=()=>[{type:v.n},{type:u._W},{type:E.FF},{type:f.e}];static#t=this.propDecorators={event:[{type:n.IIB}],register:[{type:n.r_U}],reregister:[{type:n.r_U}]}};T=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-event-summary-info",template:'<div class="bg-white border-radius-sm mb-4" ngClass.gt-sm="px-8 pt-6 pb-8" ngClass.lt-md="p-3">\n    <div fxLayout="row" fxLayoutAlign="space-between center" class="mb-3" ngClass.lt-md="mmb-flex-wrap">\n        <div ngClass.lt-md="w-100 mb-2 mmb-flex-wrap" fxLayout="row" fxLayoutAlign="start center" fxLayoutGap="25px">\n            <div ngClass.lt-md="w-100 mb-2" class="cursor-pointer" fxLayout="row" fxLayoutAlign="start center"\n                fxLayoutGap="5px">\n                <i class="ri-map-pin-line"></i>\n                <span class="mmb-caption-2 text-black">{{ event.location_summary }}</span>\n            </div>\n            <div fxLayout="row" fxLayoutAlign="start center" fxLayoutGap="5px">\n                <i class="ri-calendar-line"></i>\n                <span class="mmb-caption-2 text-black">{{ event.deadline_date | date }}</span>\n            </div>\n            <div>\n                <span class="mmb-caption-2 text-black">Posted {{ event.created | timeago }}</span>\n            </div>\n        </div>\n\n        <div class="text-dark" fxLayout="row" fxLayoutAlign.gt-sm="start center" fxLayoutAlign.lt-md="end center"\n            fxLayoutGap="15px" ngClass.lt-md="mt-2 w-100">\n            <div (click)="$event.stopPropagation()" class="d-inline">\n                <i class="cursor-pointer ri-share-line mmb-body-1 mr-2" id="shareOptions"></i>\n            </div>\n            <i *ngIf="!event.saved" class="ri-bookmark-line ri-xl cursor-pointer" (click)="onAddToFavorites(event)"></i>\n            <i *ngIf="event.saved" class="ri-bookmark-fill ri-xl cursor-pointer"\n                (click)="onRemoveFromFavorites(event)"></i>\n        </div>\n\n    </div>\n\n    <h4 class="font-family-base-medium text-black mb-3 mmb-subheading-1">{{\n        event.title }}</h4>\n\n    <div [innerHTML]="event.summary" class="mb-4 text-black mmb-body-1"></div>\n\n    <div fxLayout.gt-xs="row wrap" fxLayout.xs="column nowrap" fxLayoutAlign.xs="center stretch" fxLayoutGap="12px">\n        <button *ngIf="!event.applied_external" class="mmb-btn mmb-primary-button--dark" (click)="onRegister()">\n            Register\n        </button>\n\n        <div *ngIf="event.applied_external">\n            <button class="mmb-btn mmb-btn-secondary" ngClass.xs="w-100" [ngbTooltip]="\'You have visited this before\'"\n                (click)="onRegister(true)">\n                Register (visted)\n            </button>\n        </div>\n        \x3c!-- <a class="mmb-btn mmb-btn-tertiary text-primary mmb-caption-2 ml-2" (click)="_openInviteModal()">Refer a friend</a> --\x3e\n        <button class="mmb-btn white-space-nowrap mmb-btn-tertiary text-primary mmb-caption-2" ngClass.gt-xs="ml-auto"\n            (click)="_openInviteModal()">Refer a\n            friend</button>\n    </div>\n\n    <div class="mmb-body-1 medium mt-3 text-muted"\n        *ngIf="event.interested && (!event.applied && !event.applied_external)">* Expressed interest {{\n        (event.interested.modified ? event.interested.modified : event.interested.created) | timeago }}</div>\n    <div class="mmb-body-1 medium mt-3 text-muted" *ngIf="event.applied">* Registered {{\n        (event.applied.modified? event.applied.modified : event.applied.created) | timeago }}</div>\n    <div class="mmb-body-1 medium mt-3 text-muted" *ngIf="event.applied_external">* Registered {{\n        (event.applied_external.modified ? event.applied_external.modified : event.applied_external.created) | timeago\n        }}</div>\n\n</div>',styles:[ce()]})],T);var ge=t(5712),ue=t.n(ge);let F=class{constructor(){}ngOnInit(){}static#e=this.ctorParameters=()=>[];static#t=this.propDecorators={event:[{type:n.IIB}]}};F=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-event-description",template:'<div class="bg-white border-radius-sm mb-4" ngClass.gt-sm="py-8" ngClass.lt-md="py-3">\n    <h6 class="mmb-emphasize-left-secondary mmb-subheading-1 mb-4">Description</h6>\n    <div class="mmb-caption-2 text-black list-style-colored--light"  ngClass.gt-sm="px-6" ngClass.lt-md="px-3" [innerHTML]="event.description"></div>\n</div>',styles:[ue()]})],F);var he=t(70961),xe=t.n(he),_e=t(49609),fe=t(4053),ye=t(90579);let U=class{constructor(){}ngOnInit(){}getEventType(e){return ye.E.find(i=>i.value===e.toString())}getEventPrice(e){return _e.t.find(i=>i.value===e.toString())}getEventTheme(e){return fe.K.find(i=>i.value===e.toString())}static#e=this.ctorParameters=()=>[];static#t=this.propDecorators={event:[{type:n.IIB}]}};
1U=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-event-extra-details",template:'<div class="bg-lightest border-radius-sm mb-4" ngClass.gt-sm="py-8" ngClass.lt-md="py-3">\n    <h6 class="mmb-emphasize-left-secondary mmb-body-2 mb-3">More details</h6>\n    <div ngClass.gt-sm="px-8" ngClass.lt-md="px-3" class="mmb-caption-2 text-black list-style-colored--light">\n        <ul>\n            <li *ngIf="event.price">{{ getEventPrice(event.price).viewValue }}</li>\n            <li *ngIf="event.event_type">{{ getEventType(event.event_type).viewValue }}</li>\n            <li *ngIf="event.theme">{{ getEventTheme(event.theme).viewValue }}</li>\n        </ul>\n    </div>\n</div>',styles:[xe()]})],U);var Se=t(91020),Ae=t.n(Se);let N=class{constructor(){this.readMoreClicked=new n.vpe}ngOnInit(){}onReadMoreClicked(){this.readMoreClicked.emit()}static#e=this.ctorParameters=()=>[];static#t=this.propDecorators={event:[{type:n.IIB}],readMoreClicked:[{type:n.r_U}]}};N=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-event-posted-by",template:'<div class="bg-lightest border-radius-sm mb-4" ngClass.gt-sm="p-8 py-6" ngClass.lt-md="p-3">\n    <div class="mb-3" fxLayout="row" fxLayoutAlign="space-between flex-end">\n        <div class="pr-2">\n            <div class="mmb-caption-2 text-black mb-2">\n                Event posted by\n            </div>\n            <div class="cursor-pointer" fxLayout="row" fxLayoutAlign="start center" fxLayoutGap="10px" \n            routerLink="/organisation/{{ event.organisation.slug }}/profile">\n                <i class="ri-building-line"></i>\n                <h6 class="mb-0mmb-caption-2-medium text-black">{{ event.organisation.name }}</h6>\n            </div>\n        </div>\n        <div>\n            <img class="cursor-pointer avatar-sm bg-white p-1 object-fit-cover w-100px box-shadow-md border-radius-xs"\n                onerror="this.src=\'assets/images/avatars/not-found.png\';" [src]="event.organisation.logo" \n                routerLink="/organisation/{{ event.organisation.slug }}/profile">\n        </div>\n    </div>\n    <div class="mmb-caption text-black" [innerHTML]="event.organisation.headline"></div>\n\n    <div class="mt-3">\n        <a fxLayout="row" fxLayoutAlign="end center" class="text-secondary-300 mmb-caption-2" (click)="onReadMoreClicked()">Read more <i\n                class="ri-arrow-down-s-line"></i>\n        </a>\n    </div>\n</div>',styles:[Ae()]})],N);var we=t(95057),Re=t.n(we);let B=class{constructor(e,i){this.eventsService=e,this.toastr=i,this.similarEventsLoaded=new n.vpe,this.suggestedEventsLoaded=new n.vpe}ngOnInit(){"similar"==this.type&&this.eventsService.getSimilarEvents(this.slug).subscribe(e=>{e&&(this.events=e),this.similarEventsLoaded.emit(this.events)}),"suggested"==this.type&&this.eventsService.getSuggestedEvents().subscribe(e=>{e&&(this.events=e),this.suggestedEventsLoaded.emit(this.events)})}onAddToFavorites(e){this.eventsService.addToFavorites(e).subscribe(i=>{this.toastr.success("Added to your favourites!","Success"),e.saved=i})}onRemoveFromFavorites(e){const i=e.saved.uuid;this.eventsService.removeFromFavorites(i).subscribe(()=>{this.toastr.success("Removed from favourites!","Success"),e.saved=!1})}onExpressInterest(e){this.eventsService.expressInterest(e).subscribe(i=>{this.toastr.success("Expressed interested","Success"),e.interested=i})}static#e=this.ctorParameters=()=>[{type:v.n},{type:u._W}];static#t=this.propDecorators={slug:[{type:n.IIB}],type:[{type:n.IIB}],showSimilarEventsButton:[{type:n.IIB}],similarEventsLoaded:[{type:n.r_U}],suggestedEventsLoaded:[{type:n.r_U}]}};B=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-similar-events",template:'<div class="mb-5" [hidden]="!events || events.length === 0">\n    <h5 class="mmb-emphasize-left-secondary mmb-subheading-2 mb-5 text-white" *ngIf="!showSimilarEventsButton">{{type |\n        titlecase}} Events</h5>\n    <div *ngIf="showSimilarEventsButton" fxLayout="row" fxLayoutAlign="space-between end">\n        <h5 class="mmb-emphasize-left-secondary mmb-subheading-2 mb-5 text-white">{{type | titlecase}} Events</h5>\n        <button class="btn mmb-secondary-button--dark">Discover other events</button>\n    </div>\n    <div class="my-3" ngClass.lt-md="mx-0">\n        <div fxLayout="row wrap" fxLayoutAlign="stretch">\n            <div [fxFlex.gt-sm]="100 / 4" [fxFlex.lt-md]="100" ngClass.gt-sm="px-3" ngClass.lt-md="mb-5"\n                *ngFor="let event of events | slice:0:4">\n                <mmb-web-app-event-card [event]="event" [isSaved]="event.saved"\n                    (addToFavoritesClicked)="onAddToFavorites(event)"\n                    (removeFromFavoritesClicked)="onRemoveFromFavorites(event)" [image]="event.organisation.logo"\n                    [coverImage]="event.cover" url="/events/{{event.slug}}" [title]="event.title" [heading]="event.name"\n                    [location]="event.location_summary" [author]="event.organisation.name"\n                    [date]="event.start_date | date:\'fullDate\'" [isCategorizedInSimilar]="true"></mmb-web-app-event-card>\n            </div>\n        </div>\n    </div>\n</div>',styles:[Re()]})],B);var Ce=t(88641),Oe=t.n(Ce);let $=class{constructor(e){this.eventService=e}ngOnInit(){this.events=this.eventService.getEventsByOrg(this.event.organisation.uuid)}static#e=this.ctorParameters=()=>[{type:v.n}];static#t=this.propDecorators={event:[{type:n.IIB}]}};$=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-event-details-org-overview",template:'<div class="bg-white border-radius-sm mb-4" ngClass.gt-sm="p-8" ngClass.lt-md="p-3">\n    <div fxLayout="row wrap" fxLayoutAlign="space-around start">\n        <div [fxFlex.gt-sm]="100 / 10 * 7" ngClass.gt-sm="pr-4" ngClass.lt-md="mb-3" [fxFlex.lt-md]="100">\n            <div class="mb-4" fxLayout="row" fxLayoutAlign="start center" fxLayoutGap="24px">\n                <img class="cursor-pointer avatar-sm bg-white object-fit-contain w-100px border-radius-xs box-shadow-md"\n                    onerror="this.src=\'assets/images/avatars/not-found.png\';" [src]="event.organisation.logo"\n                    routerLink="/organisation/{{ event.organisation.slug }}/profile">\n                <div>\n                    \n                    <div class="cursor-pointer" fxLayout="column" fxLayoutAlign="start start" fxLayoutGap="5px"\n                        routerLink="/organisation/{{ event.organisation.slug }}/profile">\n                        <div class="mmb-caption-2">About the organisation</div>\n                        <h6 fxLayout="row" fxLayoutAlign="start center" class="mb-0 mmb-body-1 text-secondary-300">\n                            <i class="ri-building-line mr-2 text-black"></i> {{ event.organisation.name }}</h6>\n                    </div>\n                </div>\n            </div>\n            <div class="mmb-caption-2 text-black" [innerHTML]="event.organisation.description">\n            </div>\n        </div>\n\n        <div [fxFlex.gt-sm]="100 / 10 * 3" ngClass.gt-sm="pl-3" [fxFlex.lt-md]="100">\n\n            <h6 class="mmb-emphasize-left-secondary mmb-subheading-1 mb-4">Other events\n            </h6>\n\n            \x3c!-- <mmb-web-app-event-details-org-event-card class="cursor-pointer" [event]="exp"\n                *ngFor="let exp of events | async | slice:0:3" routerLink="/events/{{exp.slug}}">\n            </mmb-web-app-event-details-org-event-card> --\x3e\n\n\n            <div>\n                <a fxLayout="row" fxLayoutAlign="end center"\n                    routerLink="/organisation/{{ event.organisation.slug }}/profile" [queryParams]="{tab:1}" class="mmb-caption-2 text-secondary-300 mt-4">See\n                    all events from {{ event.organisation.name }}\n                    <i class="ri-arrow-right-line ml-2"></i></a>\n            </div>\n        </div>\n\n    </div>\n</div>',styles:[Oe()]})],$);var De=t(30417),Pe=t(3784),Me=t(1331);let k=class{};k=(0,s.gn)([(0,n.LVF)({declarations:[m,S,z.U,M,T,F,U,N,B,$,C],imports:[a.ez,P,se.m,
1ie.Rq,W.u5,W.UX,E.dT,E.IJ,E.HK,le.o9,De.PublicModule,Pe.c,Me.w],providers:[v.n]})],k)},55396:(o,r,t)=>{"use strict";t.d(r,{X:()=>s});const s=[{name:"Careers",icon:"ri-briefcase-line",activeIcon:"ri-briefcase-fill",badge:!1,path:"/careers"},{name:"Programs",icon:"ri-mental-health-line",activeIcon:"ri-mental-health-fill",badge:0,path:"/programs"},{name:"Events",icon:"ri-calendar-line",activeIcon:"ri-calendar-fill",badge:!1,path:"/events"},{name:"Contracts",icon:"ri-money-dollar-box-line",activeIcon:"ri-money-dollar-box-fill",badge:!1,path:"/contracts"}]},3784:(o,r,t)=>{"use strict";t.d(r,{c:()=>y});var s=t(42321),n=t(22560),a=t(94666);var g=t(28503),I=t.n(g);let c=class{advertClick(){window.open(this.advert.website_redirect_url,"_target")}static#e=this.propDecorators={advert:[{type:n.IIB}]}};c=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-listing-row-advert",template:'<div class="p-5 mx-3 mb-4 border-radius-sm box-shadow-sm text-white"\n    [style.background-color]="advert.styling_bg_color"\n    [style.background-image]="\'url(\' + advert.cover + \')\'" *ngIf="advert">\n    <div fxLayout="row" fxLayoutAlign="space-between center">\n        <div>\n            <h5 class="mb-0 mmb-body-2">{{ advert.title }}</h5>\n            <div fxHide.lt-lg class="mmb-caption" [innerHTML]="advert.summary"></div>\n        </div>\n        <div class="px-4">\n            <img [src]="advert.organisation.logo" class="w-100px" />\n        </div>\n        <div *ngIf="advert.action_text">\n            <button class="btn stroked-button btn--sm border-radius-lg minw-150px" [style.color]="advert.styling_action_color"\n                [style.border-color]="advert.styling_action_border_color" (click)="advertClick()">\n                {{ advert.action_text }}\n            </button>\n        </div>\n    </div>\n</div>',styles:[I()]})],c);var _=t(53388),O=t(65949);var u=t(53362),w=t.n(u);let b=class{advertClick(){window.open(this.advert.website_redirect_url,"_target")}static#e=this.propDecorators={advert:[{type:n.IIB}]}};b=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-feed-row-advert",template:'<div class="px-5 py-3 mb-4 border-radius-sm box-shadow-sm text-white" [style.background-color]="advert.styling_bg_color"\n    [style.background-image]="\'url(\' + advert.cover + \')\'" *ngIf="advert">\n    <div>\n        <div class="mb-6" fxLayout="row" fxLayoutAlign="space-between start">\n            <div class="mt-5">\n                <h5 class="mmb-headline mb-3">{{ advert.title }}</h5>\n                <div class="mmb-caption" [innerHTML]="advert.summary"></div>\n            </div>\n\n            <div fxLayout="row" fxLayoutAlign="start center">\n                <span class="mmb-caption-2 pr-2">Sponsored</span>\n                <i class="ri-information-line"></i>\n            </div>\n        </div>\n        <div class="mb-5" fxLayout="row" fxLayoutAlign="space-between start">\n            <div *ngIf="advert.action_text">\n                <button class="btn stroked-button btn--sm border-radius-lg minw-150px" [style.color]="\'white\'"\n                    [style.border-color]="\'white\'" (click)="advertClick()">\n                    {{ advert.action_text }}\n                </button>\n            </div>\n            <div class="px-4">\n                <img [src]="advert.organisation.logo" class="w-100px" />\n            </div>\n        </div>\n    </div>\n</div>',styles:[w()]})],b);var R=t(42619),L=t.n(R);let h=class{advertClick(){window.open(this.advert.website_redirect_url,"_target")}static#e=this.propDecorators={advert:[{type:n.IIB}]}};h=(0,s.gn)([(0,n.wA2)({selector:"mmb-web-app-sidebar-row-advert",template:'<div class="px-5 py-3 mb-4 border-radius-sm box-shadow-sm text-white" [style.background-color]="advert.styling_bg_color"\n    [style.background-image]="\'url(\' + advert.cover + \')\'" *ngIf="advert">\n    <div>\n        <div class="mb-6" fxLayout="row" fxLayoutAlign="space-between start">\n            <div class="mt-5">\n                <img [src]="advert.organisation.logo" class="w-100px" />\n            </div>\n\n            <div fxLayout="row" fxLayoutAlign="start center">
1\n                <span class="mmb-caption-2 pr-2">Sponsored</span>\n                <i class="ri-information-line"></i>\n            </div>\n        </div>\n        <div class="mb-6">\n            <h5 class="mmb-headline mb-3">{{ advert.title }}</h5>\n            <div class="mmb-caption" [innerHTML]="advert.summary"></div>\n        </div>\n        <div class="mb-5">\n            <div *ngIf="advert.action_text" class="w-100">\n                <button class="btn stroked-button btn--sm border-radius-lg w-100" [style.color]="advert.styling_action_color"\n                    [style.border-color]="advert.styling_action_border_color" (click)="advertClick()">\n                    {{ advert.action_text }}\n                </button>\n            </div>\n        </div>\n    </div>\n</div>',styles:[L()]})],h);let y=class{};y=(0,s.gn)([(0,n.LVF)({declarations:[c,b,h],imports:[a.ez,O.o9],providers:[_.c],exports:[c,b,h]})],y)},53388:(o,r,t)=>{"use strict";t.d(r,{c:()=>g});var s=t(42321),n=t(58987),a=t(22560),d=t(43746);let g=class{constructor(c){this.http=c}getCareerListingAdvert(){return this.http.get(`${d.N.domain}${d.N.api.career.advert}`)}static#e=this.ctorParameters=()=>[{type:n.eN}]};g=(0,s.gn)([(0,a.GSi)()],g)},40272:(o,r,t)=>{"use strict";t.d(r,{w:()=>s});class s{}},96031:(o,r,t)=>
1{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},2150:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},99213:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},5712:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},88641:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},70961:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},91020:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},13603:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},95057:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},18158:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},53362:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},28503:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()},42619:(o,r,t)=>{var s=t(337),a=t(60931)(s);a.push([o.id,"",""]),o.exports=a.toString()}}]);
2//# sourceMappingURL=54.1e449922cd2c82b1.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.