{"version":3,"file":"main.js","mappings":"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","names":["AuthService","signedIn","localStorage","getItem","value","setItem","String","activateAccount","token","this","http","get","activateAccountUrl","pipe","map","catchError","of","signOut","signOutUrl","tap","x","signUp","post","signUpUrl","observe","signIn","credentials","signInUrl","httpOptions","shareReplay","forgotPassword","email","forgotPasswordUrl","trim","resetPassword","password","resetPasswordUrl","constructor","static","t","i0","i1","_angular_core__WEBPACK_IMPORTED_MODULE_5__","jDH","factory","ɵfac","providedIn","headers","HttpHeaders","RouteOrUrlDirective","e","navigation","route","onMouseClick","navigate","routeOrUrl","undefined","queryParams","i2","_angular_core__WEBPACK_IMPORTED_MODULE_0__","FsC","selectors","hostBindings","rf","ctx","languageToLanguageParams","lang","id","i18nReplace","languageString","values","reduce","acc","key","replace","language","params","languageParams","LanguageService","getLanguage","activatedRoute","queryParamMap","getLanguageParams","_angular_core__WEBPACK_IMPORTED_MODULE_1__","NavigationService","isValidUrl","url","URL","isString","dest","msg","window","location","assign","path","snapshot","parentUrl","parent","currentSlug","_","breadcrumbSlugs","length","parameters","breadcrumbExtras","slug","extras","state","data","message","query","router","relativeTo","Window","MatPaginatorDeEn","MatPaginatorIntl","strapi","super","translateLabels","ngOnDestroy","subscription","unsubscribe","getPaginators","subscribe","p","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","changes","next","fesm2022_core","MatsModule","$C","G2t","provide","MAT_SNACK_BAR_DEFAULT_OPTIONS","useValue","duration","verticalPosition","useClass","imports","ReactiveFormsModule","MatIconModule","MatChipsModule","MatRippleModule","MatPaginatorModule","MatSortModule","MatTableModule","MatInputModule","MatAutocompleteModule","MatFormFieldModule","MatButtonModule","MatRadioModule","MatSnackBarModule","MatCheckboxModule","FormsModule","MatProgressSpinnerModule","MatSelectModule","MatDialogModule","MatTooltipModule","paginatedDataSource","endpoint","initialSort","initialQuery","refreshEvent","paginateCallback","initialPaging","previousPageIndex","pageIndex","pageSize","pageEvent","Subject","sort","BehaviorSubject","loading","refresher","page$","combineLatest","switchMap","startWith","page","indicate","indicator","source","prepare","callback","defer","finalize","contentPluck","pluck","sortBy","s","queryBy","q","paginate","connect","disconnect","loading$","asObservable","subSlug","ctx_r0","relativeCrumb","name","BreadcrumbsComponent","languageService","ngOnInit","language$","ngOnChanges","crumb","backToHomeText","core","VBU","inputs","features","decls","vars","consts","template","BreadcrumbsComponent_button_7_Template","_c0","_c1","_c2","LanguageComponent_div_0_a_1_Template","LanguageComponent_div_0_a_2_Template","language_r1","LanguageComponent","LanguageComponent_div_0_Template","menu","GlobalButtonsComponent_button_2_div_2_Template","GlobalButtonsComponent_button_2_mat_icon_3_Template","closeText","menuOpen","GlobalButtonsComponent","navigationService","authService","eRef","showOptions","accountActions$","getAuthTranslations","viewValue","signout_link","signin_header","clickout","event","nativeElement","contains","target","hide","selectionChange","i3","i4","i5","$event","GlobalButtonsComponent_button_2_Template","heroImage","breadcrumb","title","subTitle","titleIcon","sciName","markdown","image","HeaderComponent_ng_container_2_mat_icon_6_Template","HeaderComponent_ng_container_2_h3_7_Template","HeaderComponent_ng_container_2_p_11_Template","HeaderComponent_ng_container_2_hr_12_Template","HeaderComponent_ng_container_2_div_13_Template","HeaderComponent_ng_container_2_div_14_Template","hr","HeaderComponent","classNamesByVariant","dark","isOn","variant","header","headerType","content","Marked","parse","icon","HeaderComponent_ng_container_1_Template","HeaderComponent_ng_container_2_Template","HeaderComponent_ng_container_3_Template","partitionMenuItems","menuItems","primaryMenuItems","filter","i","primary","secondaryMenuItems","item_r1","MenuItemsComponent_a_2_mat_icon_1_Template","item_r2","MenuItemsComponent_a_4_mat_icon_1_Template","MenuItemsComponent","mainMenuItemsWithDefaultIcon","showInMainMenu","item","partitioned","MenuItemsComponent_a_2_Template","MenuItemsComponent_a_4_Template","MenuComponent","intro","_r1","ctx_r1","scrollToTop","scrollText","item_r3","item_r4","FooterComponent_footer_0_button_2_Template","FooterComponent_footer_0_li_5_Template","FooterComponent_footer_0_li_7_Template","FooterComponent_footer_0_img_11_Template","FooterComponent_footer_0_img_12_Template","darkBackground","showScrollUp","data_r5","FooterComponent","strapiService","data$","hideInFooter","getMenuItems","items","scrollTo","FooterComponent_footer_0_Template","frameData_r1","contentBackground","FrameComponent_div_0_app_menu_3_Template","FrameComponent_div_0_div_4_Template","background","mainClass","FrameComponent","frameData$","getMenu","queryParameters","history","currentMenu","find","frameType","contentQueries","dirIndex","TemplateRef","FrameComponent_div_0_Template","ImageComponent","src","environment","strapiBaseUrl","srcset","Object","formats","width","join","selectImage","maxWidth","a","b","sizes","ir","mobileMax","mobile","tabletMax","tablet","small","desktop","filteredSizes","imageRatio","imgStyle","SharedComponentsModule","CommonModule","RouterModule","m_r1","prefix","match","suffix","spec","localname","m_r3","sciname","m_r4","synonym","QueryMatchComponent_ng_container_6_ng_container_2_Template","QueryMatchComponent_ng_container_6_ng_container_3_Template","QueryMatchComponent","m","toLowerCase","index","substring","slice","QueryMatchComponent_ng_container_1_Template","QueryMatchComponent_ng_container_2_Template","QueryMatchComponent_ng_container_4_Template","QueryMatchComponent_ng_container_5_Template","QueryMatchComponent_ng_container_6_Template","specData_r2","speciesListLength","spec_r3","SpeciesNameQueryComponent_ng_container_8_ng_container_1_Template","SpeciesNameQueryComponent_ng_container_8_mat_option_2_Template","speciesList","SpeciesNameQueryComponent","optionSelected","forwardToSpeciesFilter","queryParamsHandling","buildQuery","_limit","filterUrl","paramsService","createURLQuery","queryFormCtrl","FormControl","initQueryFromURL$","params$","first","setValue","changeQuery$","merge","valueChanges","debounceTime","panelFilter$","res","count","inputPlaceholder","option","SpeciesNameQueryComponent_ng_container_8_Template","auto_r4","tag_r3","_r2","$implicit","selectedTags_r4","ngIf","ctx_r4","removeTag","tag_r6","SpeciesTagsComponent_mat_form_field_3_div_10_mat_option_1_Template","tags_r7","SpeciesTagsComponent_mat_form_field_3_mat_chip_row_4_Template","addTag","SpeciesTagsComponent_mat_form_field_3_div_10_Template","tagsFormCtrl","auto_r9","chipList_r8","filterTagList$","SpeciesTagsComponent","tagNameFilterQuery","tagsearch","tagsArray","tags","tag","tag_id","changeTagParams","newTagIds","currentTagIds","tagNameInputField","blur","concat","strapiURL","tagMapQuery","filterByTags","tagQuery$","currentTagList$","viewQuery","SpeciesTagsComponent_mat_form_field_3_Template","getAvatarImg","spec_r1","tableHeader","spec_r4","row_r5","_r6","tableData","page_r7","size","SpeciesTableComponent","group","speciesid","split","imgServer","ps","_sort","active","direction","toUpperCase","_start","queryEndpoint","colNames","pagesort","currentParams","SpeciesTableComponent_div_0_Template","SpeciesTableComponent_th_5_Template","SpeciesTableComponent_td_6_Template","SpeciesTableComponent_th_8_Template","SpeciesTableComponent_td_9_Template","SpeciesTableComponent_th_11_Template","SpeciesTableComponent_td_12_Template","SpeciesTableComponent_th_14_Template","SpeciesTableComponent_td_15_Template","SpeciesTableComponent_tr_16_Template","SpeciesTableComponent_tr_17_Template","SpeciesTableComponent_mat_paginator_18_Template","currentParams_r1","SpeciesGroupsViewComponent_ng_container_0_app_species_table_2_Template","SpeciesGroupsViewComponent_ng_container_0_app_species_masonry_3_Template","SpeciesGroupsViewComponent_ng_container_0_div_4_Template","viewMode$","SpeciesGroupsViewComponent","currentParams$","view","SpeciesGroupsViewComponent_ng_container_0_Template","strapiUrl","artPortrait","SpeciesMasonryComponent_ng_container_2_div_1_ng_container_1_div_1_Template","SpeciesMasonryComponent_ng_container_2_div_1_ng_container_1_Template","col_r3","SpeciesMasonryComponent_ng_container_2_div_1_Template","species_r4","SpeciesMasonryComponent","speciesId","routePrefix","offset","limit","itemList2RowGrid","colNb","iter","getRatio","img","height","newParams$","ReplaySubject","bottomScroll$","fromEvent","document","innerHeight","scrollY","body","offsetHeight","throttle","interval","scan","colsNb$","documentElement","offsetWidth","distinctUntilChanged","conquerColHeight","imgGrid","rowItems","sortedRow","y","colIdx","ratioRank","idx","gridCols$","startGrid","Array","fill","concatMap","rows","pix","specGrid","specItems","SpeciesMasonryComponent_ng_container_2_Template","SpeciesFilterParamsService","normalizeParams","isArray","createUrlTree","toString","StrapiService","findOne","findOneNoLanguage","getPageOr404","pageUrl","pages","getPage","menuItemUrl","getHomepage","homepageUrl","authUrl","getFieldbookTranslations","fieldbookUrl","getMapPage","mapPageUrl","getDialogTranslations","dialogUrl","paginatorsUrl","getSpecies","speciesUrl","getSpeciesArray","speciesids","getPortraitFilterText","filterTextUrl","getEvaluationText","evaluationTextsUrl","menuUrl","getProjects","ids","projectsUrl","getAuthor","authorsUrl","_angular_core__WEBPACK_IMPORTED_MODULE_6__","production","hmr","strapiMarkdownBaseUrl","audioServer","portraitUrl","specImgServer","ContentDirective","viewContainerRef","TextComponent","getClass","notCentered","HomeCardLinkComponent","isUrl","hostAttrs","link","linkText","subHeadline","secondLink","secondLinkText","HomeCardComponent","bodyMarkdown","headline","colSize","HomeCardComponent_div_3_Template","HomeCardComponent_app_home_card_link_8_Template","card_r1","subtitle","text","ctx_r2","getColSize","i_r2","HomeCardGridComponent","columns","version","parseInt","cards","HomeCardGridComponent_app_homecard_1_Template","HomeContentComponent","componentFactoryResolver","ngAfterViewInit","selectComponent","loadComponent","component","contentHost","clear","componentFactory","resolveComponentFactory","createComponent","homeContent","__component","textComponent","initRichText","instance","changeDetectorRef","detectChanges","cardGridComponent","initHomeCardGrid","homecards","HomeContentComponent_ng_template_1_Template","fixedParams_r1","SpeciesGalleryComponent_div_0_div_6_Template","text_r2","placeholderSpeciesName","placeholderTagName","searchDescription","fixedParams$","discoverMoreThan","SpeciesGalleryComponent","TAG_FRONT_PAGE","normalizeFilterParams","l","textService","contextGroup$","SpeciesGalleryComponent_div_0_Template","HomeComponent_app_frame_0_ng_template_1_app_home_content_3_Template","data_r2","home","HomeComponent_app_frame_0_ng_template_1_Template","HomeComponent","hero","HomeComponent_app_frame_0_Template","CaptionComponent","caption","ImageTextComponent","getOrientation","invert","imageClass","textClass","gridClass","ImageTextComponent_app_caption_3_Template","ColumnsClassPipe","transform","EJ8","pure","WidthClassPipe","narrow","image_r1","mapCol","ImageGridComponent","one","two","three","images","ImageGridComponent_app_image_4_Template","ImageGridComponent_app_caption_5_Template","youtubeUrl","giveConsent","imageUrl","YoutubeComponent","sanitizer","consent","youtubeId","pathname","bypassSecurityTrustResourceUrl","YoutubeComponent_div_2_Template","YoutubeComponent_div_3_Template","FAQComponent","answer","question","CardComponent","style","markdownBody","CardComponent_div_4_Template","CardGridComponent","CardGridComponent_app_card_4_Template","ContentComponent","componentType","imageTextComponent","initImageText","imageGridComponent","initImageGrid","youtubeComponent","initYoutube","initCardGrid","faqComponent","initFaq","ContentComponent_ng_template_1_Template","PageComponent_app_frame_0_ng_template_1_app_content_1_Template","page_r2","PageComponent_app_frame_0_ng_template_1_Template","headerText","headerImage","PageComponent","subpage","PageComponent_app_frame_0_Template","routes","loadChildren","Promise","all","__webpack_require__","then","bind","ProjectModule","IconTestComponent","f","FieldbookModule","SpeciesModule","AuthModule","NotfoundComponent","redirectTo","pathMatch","AppRoutingModule","forRoot","anchorScrolling","TrackerService","trackerEndpoint","freshSpaId","generateUuid","events","NavigationEnd","ne","encodeNavigationEnd","mergeMap","uri","d2h","vals","push","substr","_i","Math","random","encodeURIComponent","innerWidth","fishingbaitfish","insectcentipede","snail","spider","shellfishcrab","insectant","logo","SpeciesIcons","reptile","mammal","butterfly","conifer","amphibian","hymenoptera","herb","bird","tree","actinopterygii","chondrichthyes","chilopoda","diplopoda","anaspidea","bivalvia_mollusken","cephalaspidea","cephalopoda","gastropoda","acarida","arachnid","araneae","hydrachnidia","amphipoda","branchiopoda","crustacea","maxillopoda","blattodea","bug","coleoptera","dermaptera","diptera","dragonfly","ephemeroptera","grasshopper","heteroptera","lepidoptera","mantodea","mecoptera","megaloptera","neuroptera","odonata","planipennia","plecoptera","psocoptera","raphidioptera","thysanoptera","trichoptera","truebug","zygentoma","algae","anopla","anthozoa","ascidiacea","asteroidea","bryozoa","calcarea","cephalaspidomorphi","cestoda","ciliatea","coelenterata","collembola","coscinodiscophyceae","cryptophyceae","demospongiae","diatoms","echinoidea","entognatha","euglenida","eurotatoria","fungi","gymnolaemata","halicryptomorphida","hormogoneae","hydrozoa","kamptozoa","moss","nematoda","nematomorpha","nemertini","ophiuroidea","phylactolaemata","phyllopharyngea","porifera","rotatoria","scyphozoa","stonewort","strigeida","tardigrada","tentaculata","trematoda","turbellaria","branchiobdellida","hirudinea","oligochaeta","polychaeta","terebellida","IconService","getIconRegistry","iconRegistry","domSanitizer","addSvgIcon","AppComponent","_2","unauthorizedInterceptorProviders","HTTP_INTERCEPTORS","UnauthorizedInterceptor","intercept","request","handleReponse","handle","err","HttpErrorResponse","status","multi","wthCredentialsInterceptorProviders","WithCredentialsInterceptor","req","isRequestToPlayback","clone","withCredentials","indexOf","MarkdownRenderer","Renderer","options","xhtml","href","AppModule","bootstrap","withCredentialsInterceptorProviders","APP_INITIALIZER","useFactory","setOptions","renderer","BrowserModule","HttpClientModule","BrowserAnimationsModule","enableProdMode","console","error","log","__NgCli_bootstrap_1","bootstrapModule","catch"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/auth/auth.service.ts","./src/app/directives/route-or-url.directive.ts","./src/app/language.service.ts","./src/app/navigation.service.ts","./src/app/shared/mat-paginator.ts","./src/app/shared/mats.module.ts","./src/app/shared/table-datasource.ts","./src/app/shared/operators.ts","./src/app/sharedComponents/breadcrumbs/breadcrumb.ts","./src/app/sharedComponents/breadcrumbs/breadcrumbs.component.html","./src/app/sharedComponents/breadcrumbs/breadcrumbs.component.ts","./src/app/sharedComponents/language/language.component.html","./src/app/sharedComponents/language/language.component.ts","./src/app/sharedComponents/global-buttons/global-buttons.component.html","./src/app/sharedComponents/global-buttons/global-buttons.component.ts","./src/app/sharedComponents/header/header.component.html","./src/app/sharedComponents/header/header.component.ts","./src/app/sharedComponents/footer/menu-item.ts","./src/app/sharedComponents/menu-items/menu-items.component.html","./src/app/sharedComponents/menu-items/menu-items.component.ts","./src/app/sharedComponents/menu/menu.component.ts","./src/app/sharedComponents/menu/menu.component.html","./src/app/sharedComponents/footer/footer.component.html","./src/app/sharedComponents/footer/footer.component.ts","./src/app/sharedComponents/frame/frame.component.html","./src/app/sharedComponents/frame/frame.component.ts","./src/app/sharedComponents/image/image.component.ts","./src/app/sharedComponents/image/image.component.html","./src/app/sharedComponents/sharedComponents.module.ts","./src/app/species/speciesfilter/filter-inputs/query-match.component.ts","./src/app/species/speciesfilter/filter-inputs/species-name-query.component.html","./src/app/species/speciesfilter/filter-inputs/species-name-query.component.ts","./src/app/species/speciesfilter/filter-inputs/species-tags.component.html","./src/app/species/speciesfilter/filter-inputs/species-tags.component.ts","./src/app/species/speciesfilter/filter-views/species-table.component.html","./src/app/species/speciesfilter/filter-views/species-table.component.ts","./src/app/species/speciesfilter/filter-views/species-groups-view.component.ts","./src/app/species/speciesfilter/filter-views/species-masonry.component.html","./src/app/species/speciesfilter/filter-views/species-masonry.component.ts","./src/app/species/speciesfilter/species-filter-params.service.ts","./src/app/strapi/strapi.service.ts","./src/environments/environment.prod.ts","./src/app/sharedComponents/content/content.directive.ts","./src/app/sharedComponents/text/text.component.ts","./src/app/sharedComponents/text/text.component.html","./src/app/sharedComponents/home-card-link/home-card-link.component.ts","./src/app/sharedComponents/home-card-link/home-card-link.component.html","./src/app/sharedComponents/homecard/homecard.component.html","./src/app/sharedComponents/homecard/homecard.component.ts","./src/app/sharedComponents/home-card-grid/home-card-grid.component.html","./src/app/sharedComponents/home-card-grid/home-card-grid.component.ts","./src/app/sharedComponents/home-content/home-content.component.ts","./src/app/sharedComponents/home-content/home-content.component.html","./src/app/sharedComponents/species-gallery/species-gallery.component.html","./src/app/sharedComponents/species-gallery/species-gallery.component.ts","./src/app/home/home.component.html","./src/app/home/home.component.ts","./src/app/sharedComponents/caption/caption.component.ts","./src/app/sharedComponents/caption/caption.component.html","./src/app/sharedComponents/image-text/image-text.component.html","./src/app/sharedComponents/image-text/image-text.component.ts","./src/app/sharedComponents/content/columns-class.pipe.ts","./src/app/sharedComponents/content/width-class.pipe.ts","./src/app/sharedComponents/image-grid/image-grid.component.html","./src/app/sharedComponents/image-grid/image-grid.component.ts","./src/app/sharedComponents/youtube/youtube.component.html","./src/app/sharedComponents/youtube/youtube.component.ts","./src/app/sharedComponents/faq/faq.component.ts","./src/app/sharedComponents/faq/faq.component.html","./src/app/sharedComponents/card/card.component.html","./src/app/sharedComponents/card/card.component.ts","./src/app/sharedComponents/card-grid/card-grid.component.html","./src/app/sharedComponents/card-grid/card-grid.component.ts","./src/app/sharedComponents/content/content.component.ts","./src/app/sharedComponents/content/content.component.html","./src/app/page/page.component.html","./src/app/page/page.component.ts","./src/app/app-routing.module.ts","./src/app/sharedComponents/icon-test.ts","./src/app/notfound/notfound.component.ts","./src/app/notfound/notfound.component.html","./src/app/tracker.service.ts","./src/app/icon.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/auth/interceptor/unauthorized.interceptor.ts","./src/app/auth/interceptor/withcredentials.interceptor.ts","./src/app/strapi/markdown-renderer.ts","./src/app/app.module.ts","./src/main.ts"],"sourcesContent":["import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, tap } from 'rxjs/operators';\nimport { Credentials } from './credentials';\nimport { SignUpForm } from './signupform';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n\n private readonly signOutUrl = '/api/signOut';\n private readonly signInUrl = '/api/signIn';\n private readonly signUpUrl = '/api/signUp';\n private readonly forgotPasswordUrl = '/api/password/forgot';\n private readonly resetPasswordUrl = '/api/password/reset/';\n private readonly activateAccountUrl = '/api/account/activate/';\n\n get signedIn(): boolean {\n return localStorage.getItem(\"signedIn\") == \"true\";\n }\n\n set signedIn(value: boolean) {\n localStorage.setItem(\"signedIn\", String(value));\n }\n\n\n activateAccount(token: string): Observable {\n return this.http.get(this.activateAccountUrl + token).pipe(\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n signOut() {\n return this.http.get(this.signOutUrl).pipe(\n tap(x => this.signedIn = false),\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n signUp(signUp: SignUpForm) {\n return this.http.post(this.signUpUrl, signUp, { observe: 'response' });\n }\n\n signIn(credentials: Credentials) {\n return this.http.post(this.signInUrl, credentials, httpOptions).pipe(\n tap(x => this.signedIn = true),\n shareReplay()\n );\n }\n\n\n forgotPassword(email: string) {\n return this.http.post(this.forgotPasswordUrl, { email: email.trim() });\n }\n\n resetPassword(password: string, token: string) {\n return this.http.post(this.resetPasswordUrl + token, { password: password });\n }\n\n constructor(private http: HttpClient) { }\n}\n\n\nconst httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n observe: 'response' as const\n};\n","import { Directive, ElementRef, Input, HostListener } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { NavigationService } from '../navigation.service';\n\n@Directive({\n selector: '[routeOrUrl]'\n})\nexport class RouteOrUrlDirective {\n @Input() routeOrUrl: string | any[] | undefined;\n @Input() queryParams?: Params | null;\n\n constructor(e: ElementRef, private navigation: NavigationService, private route: ActivatedRoute) {}\n\n @HostListener('click') onMouseClick() {\n this.navigation.navigate(this.route, this.routeOrUrl, undefined, this.queryParams);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, ParamMap } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport type Language = 'de' | 'en' | 'dels';\nexport interface LanguageParams {\n lang: Language;\n id: number;\n};\n\nexport function languageToLanguageParams(lang: Language): LanguageParams {\n switch(lang) {\n case 'de':\n return {\n lang: 'de',\n id: 1\n };\n case 'en':\n return {\n lang: 'en',\n id: 2\n };\n case 'dels':\n return {\n lang: 'dels',\n id: 4\n };\n default:\n const _exhaustiveCheck: never = lang;\n return {\n lang: 'de',\n id: 1\n };\n }\n}\n\nexport function i18nReplace(languageString: string, values: [string, string][]): string {\n return values.reduce((acc, [key, value]) => acc.replace(key, value), languageString);\n}\n\nexport function language(params: ParamMap): Language {\n const lang = params.get('lang') as Language;\n return lang !== null ? lang : 'de';\n}\n\nexport function languageParams(params: ParamMap): LanguageParams {\n return languageToLanguageParams(language(params));\n}\n\n\n@Injectable()\nexport class LanguageService {\n\n getLanguage(): Observable {\n return this.activatedRoute.queryParamMap.pipe(\n map(language)\n );\n }\n\n getLanguageParams(): Observable {\n return this.getLanguage().pipe(\n map(languageToLanguageParams)\n );\n }\n\n constructor(private activatedRoute: ActivatedRoute) { }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, ActivatedRoute, Params, UrlSegment } from '@angular/router';\nimport { breadcrumbSlugs } from'./sharedComponents/breadcrumbs/breadcrumb';\n\n@Injectable()\nexport class NavigationService {\n private isValidUrl(url: string): boolean {\n try {\n /* If valid URL set location directly */\n new URL(url);\n return true;\n } catch {\n return false;\n }\n }\n\n private isString(x: any): x is string {\n return typeof x === \"string\";\n }\n\n navigate(route: ActivatedRoute, dest: string | any[] | undefined, msg?: string, queryParams?: Params | null) {\n if(dest != undefined) {\n if(this.isString(dest) && this.isValidUrl(dest)) {\n /* If valid URL set location directly */\n this.window.location.assign(dest);\n } else {\n /* If not a valid URL, try routing */\n const path = this.isString(dest) ? [dest] : dest;\n const {lang, ...params} = route.snapshot.queryParams;\n const parentUrl = route.snapshot.parent?.url ?? [];\n const [currentSlug, _] = breadcrumbSlugs(parentUrl.length ? parentUrl : [{path: \"\", parameters: {}}] as UrlSegment[], route.snapshot.url);\n const breadcrumbExtras = {queryParams: params, slug: currentSlug};\n const extras = msg ? { state: { data: { message: msg, ...breadcrumbExtras } } } : { state: { data: breadcrumbExtras } };\n const query = lang ? { queryParams: {lang: lang, ...queryParams} } : {queryParams: queryParams};\n this.router.navigate(path, {\n relativeTo: route,\n ...extras,\n ...query\n });\n }\n }\n }\n constructor(private router: Router, private window: Window) { }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { StrapiService } from '../strapi/strapi.service';\n\nexport interface PaginatorTranslations {\n itemsPerPageLabel: string;\n nextPageLabel: string;\n previousPageLabel: string;\n firstPageLabel: string;\n lastPageLabel: string;\n}\n\n@Injectable()\nexport class MatPaginatorDeEn extends MatPaginatorIntl implements OnDestroy {\n\n private subscription: Subscription;\n\n constructor(private strapi: StrapiService) {\n super();\n this.translateLabels();\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n translateLabels(): void {\n this.subscription = this.strapi.getPaginators().subscribe(p => {\n this.itemsPerPageLabel = p.itemsPerPageLabel;\n this.nextPageLabel = p.nextPageLabel;\n this.previousPageLabel = p.previousPageLabel;\n this.firstPageLabel = p.firstPageLabel;\n this.lastPageLabel = p.lastPageLabel;\n this.changes.next(); // Fire a change event to make sure that the labels are refreshed\n });\n }\n}","import { NgModule } from '@angular/core';\n\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule, MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatPaginatorDeEn } from './mat-paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n\n@NgModule({\n declarations: [\n ],\n providers: [\n {\n provide: MAT_SNACK_BAR_DEFAULT_OPTIONS,\n useValue: { duration: 2500, verticalPosition: 'top' }\n }, {\n provide: MatPaginatorIntl,\n useClass: MatPaginatorDeEn\n }\n ],\n imports: [\n ReactiveFormsModule\n ],\n exports: [\n MatIconModule,\n MatChipsModule,\n MatRippleModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n MatInputModule,\n MatAutocompleteModule,\n MatFormFieldModule,\n MatButtonModule,\n MatRadioModule,\n MatSnackBarModule,\n MatCheckboxModule,\n FormsModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n MatSelectModule,\n MatDialogModule,\n MatSelectModule,\n MatTooltipModule\n ]\n})\nexport class MatsModule { }\n","import { PageEvent } from \"@angular/material/paginator\";\nimport { Subject, BehaviorSubject, combineLatest, Observable, of } from \"rxjs\";\nimport { switchMap, startWith, pluck, shareReplay } from \"rxjs/operators\";\nimport { indicate } from \"./operators\";\nimport { TableSort, PaginatedEndpoint, PaginatedDataSource } from \"./table-page.model\";\n\nexport function paginatedDataSource(\n endpoint: PaginatedEndpoint,\n initialSort: TableSort,\n initialQuery: Q,\n refreshEvent?: Subject>,\n paginateCallback?: () => void\n): PaginatedDataSource {\n\n const initialPaging = { previousPageIndex: 0, pageIndex: 0, pageSize: 10, length: 0 };\n const pageEvent = new Subject();\n const sort = new BehaviorSubject>(initialSort);\n const query = new BehaviorSubject(initialQuery);\n const loading = new Subject();\n\n const refresher: Observable> = (refreshEvent || of(of(1)));\n\n const page$ = combineLatest([query, sort, refresher]).pipe(\n switchMap(([query, sort, _]) => pageEvent.pipe(\n startWith(initialPaging),\n switchMap(page => endpoint({ page, sort }, query)\n .pipe(indicate(loading))\n )\n )),\n shareReplay(1)\n );\n\n const contentPluck = page$.pipe(pluck(\"content\"));\n\n return {\n sortBy: (s: TableSort) => sort.next(s),\n queryBy: (q: Q) => query.next(q),\n paginate: (p: PageEvent) => {\n if (paginateCallback) {\n paginateCallback();\n }\n pageEvent.next(p);\n },\n connect: () => contentPluck,\n disconnect: () => undefined,\n loading$: loading.asObservable(),\n page$\n };\n}","import { Observable, Subject, defer } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nexport function prepare(callback: () => void): (source: Observable) => Observable {\n return (source: Observable): Observable => defer(() => {\n callback();\n return source;\n });\n }\n\nexport function indicate(indicator: Subject): (source: Observable) => Observable {\n return (source: Observable): Observable => source.pipe(\n prepare(() => indicator.next(true)),\n finalize(() => indicator.next(false))\n )\n }","import { Params, UrlSegment } from '@angular/router';\n\nexport interface Breadcrumb {\n name: string;\n path: string;\n params: Params;\n}\n\nexport function breadcrumbSlugs(parentUrl: UrlSegment[], url: UrlSegment[]): [string, string?] {\n var slug: string;\n var subSlug: string | undefined;\n if(parentUrl[0].path == \"species\" && url[0] && url[0].path == \"portrait\") {\n slug = \"species/portrait\";\n subSlug = url[1]?.path;\n } else {\n slug = parentUrl[0].path ? parentUrl[0].path : url[0]?.path;\n subSlug = url[1]?.path;\n }\n return [slug, subSlug];\n}\n","
\n \n \n
\n","import { Component, Input, ChangeDetectionStrategy, OnChanges, SimpleChanges, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { LanguageService, Language } from './../../language.service';\nimport { Breadcrumb} from './breadcrumb';\n\n@Component({\n selector: 'app-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsComponent implements OnInit, OnChanges {\n @Input() crumb?: Breadcrumb;\n relativeCrumb?: Breadcrumb;\n language$: Observable;\n\n constructor(private languageService: LanguageService) { }\n\n ngOnInit(): void {\n this.language$ = this.languageService.getLanguage();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(this.crumb) {\n this.relativeCrumb = {path: `/${this.crumb.path}`, name: this.crumb.name, params: this.crumb.params};\n } else {\n this.relativeCrumb = undefined;\n }\n }\n\n backToHomeText(language: Language | null): String {\n if(language == null || language == 'de') {\n return \"Zur Startseite\";\n } else {\n return \"To the homepage\";\n }\n }\n\n}\n","\n","import { Component, OnInit, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { LanguageService, Language } from './../../language.service';\n@Component({\n selector: 'app-language',\n templateUrl: './language.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LanguageComponent implements OnInit {\n language$: Observable;\n\n constructor(private languageService: LanguageService) {}\n\n ngOnInit(): void {\n this.language$ = this.languageService.getLanguage();\n }\n}\n","
\n \n \n \n
\n","import { Component, HostListener, ElementRef, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NavigationService } from 'src/app/navigation.service';\nimport { StrapiService } from 'src/app/strapi/strapi.service';\nimport { AuthService } from '../../auth/auth.service';\nimport { LanguageService, Language } from './../../language.service';\n\ninterface AccountAction {\n value: string;\n viewValue: string;\n}\n\n@Component({\n selector: 'app-global-buttons',\n templateUrl: './global-buttons.component.html'\n})\nexport class GlobalButtonsComponent implements OnInit {\n language$: Observable;\n @Input() menu: string;\n @Input() menuOpen: boolean;\n showOptions = false\n accountActions$: Observable;\n\n constructor(private navigationService: NavigationService, private strapi: StrapiService, private authService: AuthService, private languageService: LanguageService, private eRef: ElementRef, private route: ActivatedRoute) { }\n\n ngOnInit(): void {\n this.accountActions$ = this.strapi.getAuthTranslations().pipe(\n map(t =>\n this.authService.signedIn ? { value: '/account/signout', viewValue: t.signout_link } : { value: '/account/signin', viewValue: t.signin_header }\n )\n );\n this.language$ = this.languageService.getLanguage();\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event: any) {\n if (!this.eRef.nativeElement.contains(event.target) && this.showOptions) {\n this.hide();\n }\n }\n\n selectionChange(value: string) {\n this.navigationService.navigate(this.route, value);\n this.hide();\n }\n\n hide() {\n this.showOptions = false;\n }\n\n closeText(language: Language | null, menuOpen: Boolean): String {\n if(menuOpen) {\n if(language == null || language == 'de') {\n return \"Menü schließen\";\n } else {\n return \"Close menu\"; \n }\n } else {\n if(language == null || language == 'de') {\n return \"Menü öffnen\";\n } else {\n return \"Open menu\";\n }\n }\n } \n}\n","
\n\n \n\n \n\n
\n\n
\n
\n \n \n
\n
\n\n
\n

{{title}}

\n

{{subTitle}}

\n
\n
\n
\n\n \n\n
\n
\n \n \n
\n
\n\n
\n \n

{{sciName}}

\n
\n

{{title}}

\n
\n

{{subTitle}}

\n
\n
\n
\n
\n
\n \n
\n \n
\n\n \n\n
\n
\n \n \n
\n
\n \n
\n\n
\n","import { Component, OnChanges, ChangeDetectionStrategy, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { Marked } from '@ts-stack/markdown';\nimport { Image } from './../../strapi/image';\nimport { Breadcrumb } from './../breadcrumbs/breadcrumb';\n\nexport interface HomeScreenHeader {\n headerType: 'home-screen';\n title: string;\n heroImage: Image;\n subTitle: string;\n}\n\nexport interface PortalPageHeader {\n headerType: 'portal-page';\n icon: string;\n title: string;\n content?: string;\n}\n\nexport interface StaticPageHeader {\n headerType: 'static-page';\n title: string;\n content?: string;\n image?: Image;\n}\n\nexport interface SpeciesPortraitHeader {\n headerType: 'portrait';\n title: string;\n subTitle: string | null;\n sciName: string;\n icon: string;\n}\n\nexport interface ObservationHeader {\n headerType: 'observation';\n title: string;\n subTitle: string;\n icon: string;\n}\nexport type HeaderContent = \n HomeScreenHeader |\n ObservationHeader | \n PortalPageHeader | \n StaticPageHeader | \n SpeciesPortraitHeader;\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeaderComponent implements OnChanges {\n @Input() header: HeaderContent;\n @Input() dark: boolean;\n @Input() menuOpen: boolean;\n @Input() menu: string;\n @Input() breadcrumb?: Breadcrumb;\n\n title: string;\n image?: Image;\n heroImage?: Image;\n group?: string;\n sciName?: string;\n subTitle?: string | null;\n markdown?: string;\n titleIcon?: string;\n hr: boolean;\n\n get classNamesByVariant() {\n const variants: [boolean, string][] = [\n [!!this.dark, 'header--dark-page'],\n [!!this.image, 'header--with-image'],\n [!!this.heroImage, 'header--hero-Image'],\n [this.menuOpen, 'header--menu-open'],\n ];\n return variants.reduce((acc: string, [isOn, variant]: [boolean, string]) => isOn ? `${acc} ${variant}` : acc, '');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n switch (this.header.headerType) {\n case 'home-screen':\n this.title = this.header.title;\n this.heroImage = this.header.heroImage;\n this.hr = false;\n this.subTitle = this.header.subTitle;\n return;\n case 'portal-page':\n this.title = this.header.title;\n if(this.header.content)\n this.markdown = Marked.parse(this.header.content);\n else\n this.markdown = undefined;\n this.titleIcon = this.header.icon;\n this.hr = false;\n return;\n case 'static-page':\n this.title = this.header.title;\n if(this.header.content)\n this.markdown = Marked.parse(this.header.content);\n else\n this.markdown = undefined;\n this.image = this.header.image;\n this.hr = true;\n return;\n case 'portrait':\n this.title = this.header.title;\n this.subTitle = this.header.subTitle;\n this.sciName = this.header.sciName;\n this.titleIcon = this.header.icon;\n this.hr = false;\n return;\n case 'observation':\n this.title = this.header.title;\n this.subTitle = this.header.subTitle;\n this.titleIcon = this.header.icon;\n this.hr = false;\n return;\n default:\n const _exhaustiveCheck: never = this.header;\n }\n }\n\n}\n","export class Slug {\n slug: string;\n}\n\nexport class MenuItem {\n name: string;\n primary: boolean;\n slug: Slug;\n hideInFooter?: boolean;\n showInMainMenu?: boolean;\n icon?: string;\n}\n\nexport interface PartitionedMenuItems {\n primaryMenuItems: MenuItem[];\n secondaryMenuItems: MenuItem[];\n}\n\nexport function partitionMenuItems(menuItems: MenuItem[]): PartitionedMenuItems {\n return {\n primaryMenuItems: menuItems.filter(i => i.primary),\n secondaryMenuItems: menuItems.filter(i => !i.primary)\n };\n}\n","\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { MenuItem, PartitionedMenuItems, partitionMenuItems } from './../footer/menu-item';\n\n@Component({\n selector: 'app-menu-items',\n templateUrl: './menu-items.component.html'\n})\nexport class MenuItemsComponent implements OnChanges {\n @Input() menuItems: MenuItem[];\n partitioned: PartitionedMenuItems\n\n ngOnChanges(_: SimpleChanges) {\n const mainMenuItemsWithDefaultIcon = this.menuItems\n .filter(i => i.showInMainMenu)\n .map( item => ({ ...item, icon: item.icon ? item.icon : undefined }))\n\n this.partitioned = partitionMenuItems(mainMenuItemsWithDefaultIcon);\n }\n\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { Marked } from '@ts-stack/markdown';\nimport { MenuItem } from './../footer/menu-item';\nimport { Menu } from './menu';\n\n@Component({\n selector: 'app-menu',\n templateUrl: './menu.component.html'\n})\nexport class MenuComponent implements OnChanges {\n @Input() menuItems: MenuItem[];\n @Input() menu: Menu;\n markdown: string;\n\n ngOnChanges(_: SimpleChanges) {\n this.markdown = Marked.parse(this.menu.intro);\n }\n\n}\n","
\n \n
\n","\n","import {\n Component,\n OnInit,\n ChangeDetectionStrategy,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { StrapiService } from '../../strapi/strapi.service';\nimport { MenuItem, partitionMenuItems, PartitionedMenuItems } from './menu-item';\nimport { LanguageService, Language } from './../../language.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterComponent implements OnInit, OnChanges {\n data$: Observable;\n language$: Observable;\n @Input() menuItems?: MenuItem[];\n @Input() dark: boolean = true;\n @Input() showScrollUp: boolean = true;\n\n constructor(private window: Window, private strapiService: StrapiService, private languageService: LanguageService) {}\n\n ngOnInit(): void {\n this.language$ = this.languageService.getLanguage();\n }\n\n ngOnChanges(): void {\n if(this.menuItems) {\n this.data$ = of(partitionMenuItems(this.menuItems.filter(i => !i.hideInFooter)));\n } else {\n this.data$ = this.strapiService.getMenuItems().pipe(map( items => partitionMenuItems(items.filter(i => !i.hideInFooter))));\n }\n }\n\n scrollToTop(): void {\n window.scrollTo(0, 0);\n }\n\n darkBackground(dark: boolean) {\n if(dark) {\n return 'dark-background';\n } else {\n return '';\n }\n }\n\n scrollText(language: Language | null): String {\n if(language == null || language == 'de') {\n return \"Zurück nach oben\";\n } else {\n return \"Back to top\"; \n } \n } \n}\n","
\n
\n \n \n \n
\n
\n \n
\n
\n
\n \n \n
\n","import { Component, Input, OnInit, OnChanges, SimpleChanges, ContentChild, TemplateRef } from '@angular/core';\nimport { ActivatedRoute, UrlSegment, Params } from '@angular/router';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { StrapiService } from './../../strapi/strapi.service';\nimport { FrameType } from './frame-type';\nimport { MenuItem } from './../footer/menu-item';\nimport { Menu } from './../menu/menu';\nimport { HeaderContent } from './../header/header.component';\nimport { Breadcrumb, breadcrumbSlugs} from './../breadcrumbs/breadcrumb';\n\ninterface FrameData {\n menuItems: MenuItem[];\n breadcrumb?: Breadcrumb;\n menuOpen: boolean;\n menu: Menu;\n}\n\n@Component({\n selector: 'app-frame',\n templateUrl: './frame.component.html'\n})\nexport class FrameComponent implements OnInit, OnChanges {\n @Input() frameType: FrameType;\n @Input() header: HeaderContent;\n @ContentChild(TemplateRef) template: TemplateRef;\n frameData$: Observable;\n dark: boolean;\n contentBackground: string;\n\n constructor(private strapi: StrapiService, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.frameData$ = combineLatest([\n this.activatedRoute?.parent?.url || of([{path: \"\", parameters: {}}] as UrlSegment[]),\n this.activatedRoute.url,\n this.activatedRoute.queryParams,\n this.strapi.getMenuItems(),\n this.strapi.getMenu()\n ]).pipe(\n map(([parentUrl, url, queryParams, menuItems, menu]: [UrlSegment[], UrlSegment[], Params, MenuItem[], Menu]) => {\n /* Species protraits are special, because they live two deep */\n const [slug, subSlug] = breadcrumbSlugs(parentUrl, url);\n const queryParameters = history.state.data?.queryParams;\n let breadcrumb: Breadcrumb | undefined = undefined;\n const currentMenu = menuItems.find(e => e.slug.slug === slug);\n if(subSlug && currentMenu) {\n breadcrumb = { path: slug, name: currentMenu.name, params: queryParameters};\n }\n return {\n menuItems: menuItems,\n breadcrumb: breadcrumb,\n menuOpen: queryParams?.menu === 'open',\n menu: menu\n };\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n switch (this.frameType) {\n case 'dark':\n this.dark = true;\n this.contentBackground = 'dark-background';\n return;\n case 'card':\n this.dark = true;\n this.contentBackground = 'no-top-padding';\n return;\n case 'light':\n this.dark = false;\n this.contentBackground = '';\n return;\n default:\n const _exhaustiveCheck: never = this.frameType;\n }\n }\n\n mainClass(menuOpen: boolean) {\n if(menuOpen) {\n return \"frame__main frame__main--menu-open\";\n } else {\n return \"frame__main\";\n }\n }\n\n background(dark: boolean, menuOpen: boolean) {\n if(dark || menuOpen) {\n return {\n background: \"url('/assets/imgs/background_grain.png')\"\n };\n } else {\n return {};\n }\n }\n\n}\n","import { Component, Input } from '@angular/core';\nimport { BaseImage, Image } from './../../strapi/image';\nimport { ImageRatio } from './image-ratio';\nimport { environment } from './../../../environments/environment';\n\n\nconst DEFAULT_MOBILE = 767 - 64;\nconst DEFAULT_TABLET = 1023 - 64;\n\n@Component({\n selector: 'app-image',\n templateUrl: './image.component.html'\n})\nexport class ImageComponent {\n @Input() image: Image\n @Input() imageRatio?: ImageRatio\n @Input() imgStyle?: any;\n src(i: BaseImage | undefined): string {\n return environment.strapiBaseUrl + i?.url;\n }\n\n srcset(i: Image): string {\n const formats = Object.values(i.formats).map(i => `${this.src(i)} ${i.width}w`).join(', ');\n return `${formats}, ${this.src(i)}`;\n }\n\n private selectImage(i: Image, maxWidth: number): number | undefined {\n const widths = Object.values(i.formats).map(i => i.width).sort((a, b) => a - b);\n return widths.find(width => maxWidth < width);\n }\n\n sizes(i: Image, ir: ImageRatio | undefined): string | undefined {\n const mobileMax = ir?.mobile ?? DEFAULT_MOBILE;\n const tabletMax = ir?.tablet ?? DEFAULT_TABLET;\n\n // Default rule for very small screens, when images are full width\n // Our 767px mobile breakpoint is to big for those devices in portrait mode\n const small = mobileMax > 400 && tabletMax > 400 ? this.selectImage(i, 399) : undefined;\n\n const mobile = this.selectImage(i, mobileMax);\n const tablet = this.selectImage(i, tabletMax);\n const desktop = ir?.desktop ? this.selectImage(i, ir.desktop) : undefined;\n const sizes = [\n small ? `(max-width: 400px) ${small}px` : undefined,\n mobile ? `(max-width: 767px) ${mobile}px` : undefined,\n tablet ? `(max-width: 1023px) ${tablet}px` : undefined,\n desktop ? `${desktop}px`: undefined\n ];\n const filteredSizes = sizes.filter(x => x !== undefined)\n if(filteredSizes.length > 0) {\n return filteredSizes.join(', ');\n } else {\n return undefined;\n }\n }\n}\n","\"\"/\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { LanguageComponent } from './language/language.component';\nimport { ImageComponent } from './image/image.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { HeaderComponent } from './header/header.component';\nimport { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component';\nimport { FrameComponent } from './frame/frame.component';\nimport { MenuComponent } from './menu/menu.component';\nimport { MenuItemsComponent } from './menu-items/menu-items.component';\nimport { ContentComponent } from './content/content.component';\nimport { ContentDirective } from './content/content.directive';\nimport { FooterComponent } from './footer/footer.component';\nimport { GlobalButtonsComponent } from './global-buttons/global-buttons.component';\nimport { TextComponent } from './text/text.component';\nimport { ReplacerPipe } from \"../pipes/replacer.pipe\"\nimport { RouteOrUrlDirective } from \"../directives/route-or-url.directive\"\n\n\n@NgModule({\n declarations: [\n HeaderComponent,\n BreadcrumbsComponent,\n FrameComponent,\n MenuComponent,\n MenuItemsComponent,\n ContentComponent,\n ContentDirective,\n FooterComponent,\n LanguageComponent,\n ImageComponent,\n GlobalButtonsComponent,\n ReplacerPipe,\n RouteOrUrlDirective,\n TextComponent\n ],\n providers: [\n { provide: Window, useValue: window }\n ],\n imports: [\n CommonModule,\n RouterModule,\n MatIconModule,\n MatSelectModule\n ],\n exports: [\n HeaderComponent,\n BreadcrumbsComponent,\n FrameComponent,\n ContentComponent,\n ContentDirective,\n FooterComponent,\n LanguageComponent,\n ImageComponent,\n GlobalButtonsComponent,\n ReplacerPipe,\n RouteOrUrlDirective,\n TextComponent\n ]\n})\nexport class SharedComponentsModule { }\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { QueryMatchMarkup, SpeciesFilterItem } from '../species-filter.model';\nimport { Language } from 'src/app/language.service';\n\n@Component({\n selector: 'app-query-match',\n template: `\n \n \n {{m.prefix}}{{m.match}}{{m.suffix}}\n \n \n {{spec.localname}}\n \n \n\n \n \n {{m.prefix}}{{m.match}}{{m.suffix}}\n \n \n {{spec.sciname}}\n \n \n\n \n \n \n {{m.prefix}}{{m.match}}{{m.suffix}}\n \n \n {{spec.synonym}}\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class QueryMatchComponent {\n\n @Input() spec: SpeciesFilterItem;\n @Input() query: string;\n\n match(name: string): QueryMatchMarkup | undefined {\n const m = name.toLowerCase().match(this.query.toLowerCase());\n if (m && m.index !== undefined) {\n return {\n prefix: name.substring(0, m.index),\n match: name.slice(m.index, m.index + this.query.length),\n suffix: name.substring(m.index + this.query.length, name.length)\n };\n } else {\n undefined;\n }\n }\n}","
\n \n
\n \n \n \n\n \n \n 1\">\n \n
{{ specData.speciesListLength }} Ergebnisse
\n
Alle anzeigen
\n
\n
\n
\n\n \n \n \n\n
\n\n
\n
\n
\n
","import { Component, OnInit, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Observable, combineLatest, merge } from 'rxjs';\nimport { map, switchMap, tap, first, debounceTime } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { StrapiSpeciesItem, NormedFilterParams, StrapiSpeciesFilter, SpeciesNQuery } from '../species-filter.model';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\nimport { SpeciesFilterParamsService } from '../species-filter-params.service';\n\n@Component({\n selector: 'app-species-name-query',\n templateUrl: './species-name-query.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\n\nexport class SpeciesNameQueryComponent implements OnInit {\n\n @Input() inputPlaceholder: string;\n\n @Input() forwardToSpeciesFilter = false;\n\n queryFormCtrl: FormControl;\n panelFilter$: Observable;\n inputPlaceholder$: Observable;\n\n optionSelected(value: string | StrapiSpeciesItem) {\n let commands: any[] = this.forwardToSpeciesFilter ? ['species', 'portrait'] : []\n if (typeof value === 'string') {\n this.router.navigate(commands,\n { queryParams: { query: value}, queryParamsHandling: 'merge' }\n );\n return value;\n } else {\n this.router.navigate( [ '/species/portrait/', value.id ], {queryParamsHandling: 'merge'});\n return null;\n }\n }\n\n buildQuery(q: string, p: NormedFilterParams ): string {\n const queryParams = { ...p, lang: p.lang.lang, query: q, _limit: 3 };\n const filterUrl = this.paramsService.createURLQuery(['species', 'filter'], { queryParams });\n return environment.strapiBaseUrl + filterUrl;\n }\n\n constructor(\n private router: Router,\n private paramsService: SpeciesFilterParamsService,\n private http: HttpClient) {}\n\n ngOnInit() {\n this.queryFormCtrl = new FormControl();\n\n const initQueryFromURL$ = this.paramsService.params$().pipe( \n first(),\n map((p: NormedFilterParams) => p.query || '' ),\n tap(x => this.queryFormCtrl.setValue(x))\n )\n\n const changeQuery$: Observable = merge(\n initQueryFromURL$,\n this.queryFormCtrl.valueChanges.pipe( debounceTime(150) )\n )\n\n this.panelFilter$ = combineLatest([\n changeQuery$,\n this.paramsService.params$()\n ]).pipe(\n switchMap(([q, p]: [string, NormedFilterParams]) => \n this.http.get(this.buildQuery(q, p)).pipe(\n map((res: StrapiSpeciesFilter) => ({\n speciesList: res.data,\n speciesListLength: res.count,\n query: q\n })\n )\n )\n )\n );\n }\n\n\n}\n","
\n \n
\n \n\n \n
\n \n {{ tag.localname }}\n cancel\n \n
\n
\n\n \n \n \n\n
\n \n
{{ tag.localname }}
\n
\n
\n \n
\n\n
\n
\n
\n ","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ElementRef } from '@angular/core';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nimport { startWith, map, filter, switchMap, debounceTime, tap } from 'rxjs/operators';\nimport { NormedFilterParams, StrapiFilterTag, StrapiTag } from '../species-filter.model';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { environment } from 'src/environments/environment';\nimport { HttpClient } from '@angular/common/http';\nimport { SpeciesFilterParamsService } from '../species-filter-params.service';\nimport { NavigationService } from 'src/app/navigation.service';\n@Component({\n selector: 'app-species-tags',\n templateUrl: './species-tags.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SpeciesTagsComponent implements OnInit {\n\n @ViewChild('tagNameInput') tagNameInputField: ElementRef;\n\n @Input() inputPlaceholder: string;\n\n @Input() forwardToSpeciesFilter = false;\n\n tagsFormCtrl = new FormControl(); \n\n filterTagList$: Observable;\n currentTagList$: Observable;\n strapiURL = environment.strapiBaseUrl;\n\n tagNameFilterQuery(q: string, p: NormedFilterParams ): string {\n const queryParams = { ...p, lang: p.lang.lang, tagsearch: q, _limit: -1 };\n const filterUrl = this.paramsService.createURLQuery(['tags', 'filter'], { queryParams });\n return environment.strapiBaseUrl + filterUrl;\n }\n\n tagMapQuery = (tags: number[] | undefined): string => {\n const filterByTags = (tags || []).map(id => `_where[0][_or][0][id]=${id}`);\n return `${environment.strapiBaseUrl}/tags?${filterByTags.join('&')}&_limit=-1`;\n }\n\n tagsArray(tags: StrapiFilterTag[] | undefined): number[] {\n return !tags ? [] : tags.map(tag => tag.tag_id);\n }\n\n changeTagParams(newTagIds: number[]): void {\n let navigationExtras: NavigationExtras = { queryParams: { tag: newTagIds }, queryParamsHandling: 'merge' };\n if (this.forwardToSpeciesFilter) {\n this.router.navigate(['species', 'portrait'], navigationExtras);\n } else {\n this.router.navigate([], navigationExtras); \n }\n }\n\n removeTag( tag: StrapiFilterTag, currentTagIds: StrapiFilterTag[] ): void {\n this.changeTagParams( this.tagsArray(currentTagIds).filter(t => t !== tag.tag_id) );\n }\n\n addTag( tag: StrapiFilterTag, currentTagIds: StrapiFilterTag[] ): void {\n this.tagNameInputField.nativeElement.blur();\n this.tagNameInputField.nativeElement.value = '';\n this.changeTagParams( this.tagsArray(currentTagIds).concat(tag.tag_id) );\n }\n\n constructor(\n private router: Router,\n private paramsService: SpeciesFilterParamsService,\n private http: HttpClient,\n private navigation: NavigationService, \n private activatedRoute: ActivatedRoute\n ) {}\n \n ngOnInit(): void {\n this.tagsFormCtrl = new FormControl();\n\n const tagQuery$: Observable = this.tagsFormCtrl.valueChanges.pipe(\n debounceTime(250),\n filter(i => (typeof i === 'string' || i instanceof String)),\n startWith(''),\n );\n\n this.currentTagList$ = this.paramsService.params$().pipe(\n switchMap((p: NormedFilterParams) => (\n !p?.tag?.length ? of([]) : this.http.get(this.tagMapQuery(p?.tag))\n ).pipe(\n map((tags: StrapiTag[]) => tags.map(tag => ({\n tag_id: tag.id,\n localname: tag[p.lang.id === 1 ? 'name' : 'englishName']\n })\n ))\n )\n ) \n )\n\n this.filterTagList$ = combineLatest([ \n tagQuery$,\n this.paramsService.params$()\n ]).pipe(\n switchMap(([q, p]: [string, NormedFilterParams]) => \n this.http.get(this.tagNameFilterQuery(q, p))\n ),\n map(x => x.filter(t => t.tag_id && t.localname))\n )\n }\n}\n","
\n \n \n
\n\n
\n\n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n
\n \"\"\n {{tableHeader[1]}} \n

\n \n {{spec.localname}}\n \n

\n
{{tableHeader[2]}} \n

{{spec.sciname}}

\n
{{tableHeader[3]}} \n

{{row.synonym}}

\n
\n\n \n \n\n
\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { NormedFilterParams, SpeciesTableItem, StrapiSpeciesFilter } from '../species-filter.model';\nimport { map } from 'rxjs/operators';\nimport { paginatedDataSource } from '../../../shared/table-datasource';\nimport { environment } from 'src/environments/environment';\nimport { HttpClient } from '@angular/common/http';\nimport { Page, PageRequest, PaginatedDataSource } from 'src/app/shared/table-page.model';\nimport { SpeciesFilterParamsService } from '../species-filter-params.service';\n\n@Component({\n selector: 'app-species-table',\n templateUrl: 'species-table.component.html',\n})\nexport class SpeciesTableComponent {\n\n @Input() currentParams: NormedFilterParams;\n\n tableData: PaginatedDataSource;\n colNames = ['speciesid', 'localname', 'sciname', 'synonym'];\n tableHeader = ['ID', 'Name', 'Lateinischer Name', 'Weitere Namen'];\n\n getAvatarImg(item: SpeciesTableItem): string {\n if(item.url) {\n return `${environment.strapiBaseUrl}${item.url}`;\n } else {\n const group = item.speciesid.split('_')[0];\n return `${environment.imgServer}/${group}/thumbs/${item.speciesid}.jpg`;\n }\n }\n\n buildQuery( p: NormedFilterParams, ps: PageRequest ): string {\n const queryParams = {\n ...p,\n lang: p.lang.lang,\n _sort: `${ps.sort.active}:${ps.sort?.direction.toUpperCase()}`,\n _start: ps.page.pageIndex * ps.page.pageSize,\n _limit: ps.page.pageSize\n };\n const filterUrl = this.paramsService.createURLQuery(['species', 'filter'], { queryParams });\n return environment.strapiBaseUrl + filterUrl;\n }\n\n queryEndpoint(ps: PageRequest, params: NormedFilterParams):\n Observable> {\n\n return this.http.get(this.buildQuery(params, ps)).pipe(\n map((res: StrapiSpeciesFilter) => ({\n content: res.data,\n count: res.count,\n size: ps.page.pageSize,\n index: ps.page.pageIndex\n })\n ) \n );\n }\n\n constructor( private http: HttpClient, private paramsService: SpeciesFilterParamsService ) {}\n\n ngOnInit() {\n this.tableData = paginatedDataSource(\n (pagesort, params) => this.queryEndpoint(pagesort, params),\n {active: 'speciesid', direction: ''},\n this.currentParams\n );\n }\n\n ngOnChanges(_: SimpleChanges): void {\n this.tableHeader = this.currentParams.lang.id === 1\n ? ['ID', 'Name', 'Lateinischer Name', 'Weitere Namen']\n : ['ID', 'name', 'scientific name', 'other names'];\n\n this.tableData?.queryBy(this.currentParams);\n }\n\n}\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { NormedFilterParams } from '../species-filter.model';\nimport { SpeciesFilterParamsService } from '../species-filter-params.service';\n\ntype ViewMode = 'gallery' | 'table' | 'grid';\n\n@Component({\n selector: 'app-species-groups-view',\n template: `\n \n \n \n
GALLERY
\n
\n `,\n})\nexport class SpeciesGroupsViewComponent {\n\n currentParams$: Observable = this.paramsService.params$();\n\n viewMode$: Observable = this.route.params.pipe(\n map(p => p.view)\n );\n\n constructor(public route: ActivatedRoute, private paramsService: SpeciesFilterParamsService ) {}\n\n}","
\n\n \n\n
\n\n \n\n \n\n \n\n
\n
\n
\n","import { HttpClient } from '@angular/common/http';\nimport { SimpleChanges } from '@angular/core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { combineLatest, fromEvent, interval, Observable, ReplaySubject } from 'rxjs';\nimport { concatMap, debounceTime, distinctUntilChanged, filter, map, scan, startWith, switchMap, throttle } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { SpeciesFilterParamsService } from '../species-filter-params.service';\nimport { NormedFilterParams, SpeciesImageItem } from '../species-filter.model';\n\n@Component({\n selector: 'app-species-masonry',\n templateUrl: './species-masonry.component.html',\n})\nexport class SpeciesMasonryComponent implements OnInit {\n\n @Input() currentParams: NormedFilterParams;\n // currentParams are pushed nto newParams$ via onChanges hook\n newParams$ = new ReplaySubject(1);\n\n // array of species-image columns => will be bound to the DOM\n gridCols$: Observable;\n\n routePrefix = \"/species/portrait/\"\n\n artPortrait(speciesId: number) {\n return this.routePrefix + speciesId\n }\n\n\n // scrolling to about 600pix to the bottom will request another 4 rows of items\n bottomScroll$: Observable = fromEvent(window['document'], 'scroll').pipe(\n filter(() => (window.innerHeight + window.scrollY) >= document.body.offsetHeight - 600),\n throttle(() => interval(400)),\n startWith( 0 ), // 1st emission w/o user-scrolling\n scan((acc, _) => ++acc, 0)\n );\n\n // window resize events emit number of colums of the image grid\n // => screen width dictates the number of cols\n colsNb$: Observable = fromEvent(window, 'resize').pipe(\n startWith(document.documentElement.offsetWidth),\n map(() => document.documentElement.offsetWidth),\n debounceTime(50),\n map((width: number) => {\n if (width > 1023) {\n return 4;\n } else if (width < 1024 && width > 767) {\n return 3;\n } else {\n return 2;\n }\n }),\n distinctUntilChanged()\n );\n\n public strapiUrl = environment.strapiBaseUrl;\n\n buildQuery(p: NormedFilterParams, offset: number = 0, limit: number = -1): string {\n const queryParams = {\n ...p,\n lang: p.lang.lang,\n _sort: `localname:ASC`,\n _start: offset,\n _limit: limit\n };\n const filterUrl = this.paramsService.createURLQuery(['species-image-lists', 'filter'], { queryParams });\n return this.strapiUrl + filterUrl;\n }\n\n itemList2RowGrid(items:SpeciesImageItem[], colNb: number): SpeciesImageItem[][] {\n return items.reduce((acc, iter) => {\n if (acc.length === 0 || acc[ acc.length-1 ].length === colNb) {\n return acc.concat([[iter]]);\n } else {\n acc[ acc.length-1 ] = acc[ acc.length-1 ].concat( [iter] );\n return acc;\n }\n },[] as SpeciesImageItem[][])\n }\n\n getRatio(img: SpeciesImageItem | undefined): number {\n return img ? (img.formats.small.height / img.formats.small.width) : 0;\n }\n\n // heart of a masonry frid: takes list of row-items & concats each row to existing List of cols ('imgGrid')\n // 1.) items of a single row & sorts them by height (img-ratio) => 'sortedRow'\n // 2.) calculates the height of each col in imgGrid & ranks them in an indes => 'sortedColHeigths'\n // 3.) concats the row item with smallest height to the col with largest height and so on => repeat with next row\n conquerColHeight = (imgGrid: SpeciesImageItem[][], rowItems: SpeciesImageItem[]): SpeciesImageItem[][] => {\n\n const sortedRow: SpeciesImageItem[] = imgGrid[0].length > 0\n ? rowItems.sort((x, y) => this.getRatio(x) - this.getRatio(y))\n : rowItems; // don't sort the very 1st row in the grid\n\n const sortedColHeigths: number[][] = imgGrid.map((x: SpeciesImageItem[], colIdx: number) => {\n let ratioRank: number;\n // last row might not have enough items for a full row => fill from left-to-right\n if (sortedRow.length < imgGrid.length && colIdx >= sortedRow.length) {\n ratioRank = 0; \n } else { // when row has sufficient items for colNb => rank all cols real ratioRank!\n ratioRank = x.reduce((a, i) => a + this.getRatio(i), 0)\n }\n return [colIdx, ratioRank]; // ratioRank is the sum of all img-ratios per col\n })\n .sort((x: [number, number], y: [number, number]) => y[1] - x[1]) // sort by ratioRank\n .map((x: [number, number], idx: number) => [x[0], idx, x[1]]) // add index of sorted list\n .sort((x: [number, number], y: [number, number]) => x[0] - y[0]); // sort back by colIdx\n\n return sortedColHeigths.map( (x: number[]) => imgGrid[x[0]].concat(sortedRow?.[x[1]]) );\n }\n\n\n constructor( private http: HttpClient, private paramsService: SpeciesFilterParamsService ) { }\n\n ngOnInit(): void {\n\n this.gridCols$ = combineLatest([ this.newParams$, this.colsNb$]).pipe(\n switchMap(([params, colNb]: [ NormedFilterParams, number]) => {\n // create empty grid with the right amount of cols\n const startGrid = new Array(colNb).fill([]) as SpeciesImageItem[][];\n // fetch speces-image-items upon scrolling towards the bottom\n return this.bottomScroll$.pipe(\n concatMap((rows: number) => // get speciesImgItems as Array\n this.http.get(this.buildQuery(params, 4*(rows-1)*colNb, 4*colNb))\n .pipe(\n filter((pix: SpeciesImageItem[]) => rows === 1 ? true : pix.length > 0),\n map((pix: SpeciesImageItem[]): SpeciesImageItem[][] =>\n this.itemList2RowGrid(pix, colNb) // transform items into Array of rows\n )\n )\n ), // aggregate the newly requested items-rows with the existing items-grid \n scan((specGrid: SpeciesImageItem[][], specItems: SpeciesImageItem[][]) =>\n specItems.reduce( this.conquerColHeight, specGrid)\n ,startGrid),\n )\n })\n );\n }\n\n ngOnChanges(_: SimpleChanges): void {\n this.newParams$.next( this.currentParams );\n }\n\n}","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NormedFilterParams } from './species-filter.model';\n\ntype Params = {\n [key: string]: any | any[];\n }\n \n@Injectable()\nexport class SpeciesFilterParamsService {\n\n private normalizeParams(params: Params): NormedFilterParams {\n return ({\n ...params,\n ...(!params.tag ? {} : { tag: Array.isArray(params.tag) ? params.tag : [params.tag] } ),\n ...{\n 'lang': { \n lang: params?.lang || 'de',\n id: params?.lang !== 'en' ? 1 : 2 \n } \n }\n });\n }\n params$(): Observable {\n return this.route.queryParams.pipe(\n map( this.normalizeParams )\n );\n }\n\n createURLQuery(endpoint: string[], params: Params): string {\n return this.router.createUrlTree(endpoint, params).toString();\n }\n\n constructor(private route: ActivatedRoute, private router: Router) { }\n}","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap, filter, distinctUntilChanged } from 'rxjs/operators';\nimport { environment } from './../../environments/environment';\nimport { LanguageService, Language } from './../language.service';\nimport { Home } from './../home/home';\nimport { Page } from './../page/page';\nimport { MapPage } from './../project/map-page/map-page';\nimport { EvaluationText } from './../project/observation-evaluation/evaluation-text';\nimport { Project } from './../project/observation-evaluation/project';\nimport { Author } from './../project/observation-evaluation/author';\nimport { MenuItem } from './../sharedComponents/footer/menu-item';\nimport { Menu } from './../sharedComponents/menu/menu';\nimport { AuthTranslations } from '../auth/authtranslations';\nimport { FieldbookTranslations } from '../fieldbook/fieldbooktranslations';\nimport { DialogTranslations } from '../sharedComponents/dialog/yes-or-no-dialog.component';\nimport { Species } from './species'\nimport { FilterText } from '../species/speciesfilter/species-filter.model';\nimport { PaginatorTranslations } from '../shared/mat-paginator';\n\n@Injectable()\nexport class StrapiService {\n\n private homepageUrl = environment.strapiBaseUrl + '/homepages';\n private pageUrl = environment.strapiBaseUrl + '/pages';\n private menuItemUrl = environment.strapiBaseUrl + '/menu-items';\n private authUrl = environment.strapiBaseUrl + '/auths';\n private fieldbookUrl = environment.strapiBaseUrl + '/fieldbooks';\n private dialogUrl = environment.strapiBaseUrl + '/dialog-texts';\n private mapPageUrl = environment.strapiBaseUrl + '/map-pages';\n private menuUrl = environment.strapiBaseUrl + '/menus';\n private speciesUrl = environment.strapiBaseUrl + '/species';\n private filterTextUrl = environment.strapiBaseUrl + '/portrait-filter-texts';\n private paginatorsUrl = environment.strapiBaseUrl + '/paginators';\n private evaluationTextsUrl = environment.strapiBaseUrl + '/evaluation-texts';\n private projectsUrl = environment.strapiBaseUrl + '/projects';\n private authorsUrl = environment.strapiBaseUrl + '/authors';\n\n private findOne(url: string, language: Language): Observable {\n return this.http.get(url + `?language.language=${language}`).pipe(\n filter( a => a.length > 0),\n map(a => a[0])\n );\n }\n\n private findOneNoLanguage(url: string): Observable {\n return this.languageService.getLanguage().pipe(\n distinctUntilChanged(),\n switchMap(language => this.findOne(url, language))\n );\n }\n\n private getPageOr404(page: string, language: string): Observable {\n return this.http.get(this.pageUrl + `?language.language=${language}&slug.slug=${page}`).pipe(\n switchMap(pages => {\n if(pages.length > 0) {\n return of(pages);\n } else {\n return this.http.get(this.pageUrl + `?language.language=${language}&slug.slug=404`);\n }\n })\n );\n }\n\n getPage(page: string): Observable {\n return this.languageService.getLanguage().pipe(\n switchMap(language => this.getPageOr404(page, language)),\n filter(a => a.length > 0),\n map(a => a[0])\n );\n }\n\n getMenuItems(): Observable {\n return this.languageService.getLanguage().pipe(\n switchMap(language => {\n return this.http.get(this.menuItemUrl + `?language.language=${language}`);\n })\n );\n }\n\n getHomepage(): Observable {\n return this.findOneNoLanguage(this.homepageUrl);\n }\n\n getAuthTranslations(): Observable {\n return this.findOneNoLanguage(this.authUrl);\n }\n\n getFieldbookTranslations(): Observable {\n return this.findOneNoLanguage(this.fieldbookUrl);\n }\n\n getMapPage(language: Language): Observable {\n return this.findOne(this.mapPageUrl, language);\n }\n\n\n getDialogTranslations(): Observable {\n return this.findOneNoLanguage(this.dialogUrl);\n }\n\n getPaginators(): Observable {\n return this.findOneNoLanguage(this.paginatorsUrl);\n }\n\n getSpecies(id: number): Observable {\n return this.http.get(`${this.speciesUrl}/${id}`);\n }\n\n getSpeciesArray(speciesids: string[]): Observable {\n return this.http.get(this.speciesUrl + '?' + speciesids.map(id => `speciesid_in=${id}`).join('&'));\n }\n\n getPortraitFilterText(): Observable {\n return this.findOneNoLanguage(this.filterTextUrl);\n }\n\n getEvaluationText(language: Language): Observable {\n return this.findOne(this.evaluationTextsUrl, language);\n }\n\n getMenu(): Observable {\n return this.findOneNoLanguage(this.menuUrl);\n }\n\n getProjects(ids: number[]): Observable {\n return this.http.get(this.projectsUrl + '?' + ids.map(id => `id_in=${id}`).join('&'));\n }\n\n getAuthor(id: number): Observable {\n return this.http.get(`${this.authorsUrl}/${id}`);\n }\n\n constructor(private languageService: LanguageService, private http: HttpClient) { }\n}\n","export const environment = {\n production: true,\n hmr: false,\n strapiBaseUrl: '/strapi',\n strapiMarkdownBaseUrl: '',\n imgServer: 'https://media.naturblick.net/img/species',\n audioServer: 'https://media.naturblick.net/audio',\n portraitUrl: 'https://content.naturblick.net/couchdb/species_db_',\n specImgServer: \"https://platform.naturblick.net/assets/imgs/species\"\n};\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[contentHost]',\n})\nexport class ContentDirective {\n constructor(public viewContainerRef: ViewContainerRef) { }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Marked } from '@ts-stack/markdown';\n\n@Component({\n selector: 'app-text',\n templateUrl: './text.component.html'\n})\nexport class TextComponent implements OnChanges, OnInit {\n @Input() notCentered?: boolean;\n @Input() content: string;\n markdown: string;\n\n constructor() {\n }\n\n getClass(): string {\n if(this.notCentered) {\n return \"\";\n } else {\n return \"container__text--center\";\n }\n }\n\n ngOnInit() {\n this.markdown = Marked.parse(this.content);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.markdown = Marked.parse(this.content);\n }\n\n}\n","
\n","import {\n Component,\n ChangeDetectionStrategy,\n Input\n} from '@angular/core';\n\n@Component({\n selector: 'app-home-card-link',\n templateUrl: './home-card-link.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'card__cta card__cta--goto'}\n})\nexport class HomeCardLinkComponent {\n @Input() link: string;\n @Input() linkText: string;\n\n isUrl(s: string): boolean {\n try {\n new URL(s);\n return true;\n } catch {\n return false;\n }\n }\n}\n","{{linkText}}\n →\n","
\n \n \n
\n
{{subHeadline}}
\n
{{headline}}
\n
\n \n \n
\n
\n","import {\n Component,\n ChangeDetectionStrategy,\n Input,\n OnChanges,\n SimpleChanges,\n OnInit\n} from '@angular/core';\nimport { Image } from './../../strapi/image';\nimport { Marked } from '@ts-stack/markdown';\n\n@Component({\n selector: 'app-homecard',\n templateUrl: './homecard.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HomeCardComponent implements OnChanges, OnInit {\n @Input() headline: string;\n @Input() subHeadline?: string;\n @Input() body: string;\n @Input() image: Image;\n @Input() colSize: number;\n @Input() link: string;\n @Input() linkText: string;\n @Input() secondLink?: string;\n @Input() secondLinkText?: string;\n bodyMarkdown: string;\n\n ngOnInit() {\n this.bodyMarkdown = Marked.parse(this.body);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.bodyMarkdown = Marked.parse(this.body);\n }\n\n}\n","
\n \n\n
\n","import { Component, Input } from '@angular/core';\nimport { HomeCardGridVersion } from './../home-content/home-content';\nimport { HomeCard } from './../../home/homecard'\n\n@Component({\n selector: 'app-home-card-grid',\n templateUrl: './home-card-grid.component.html'\n})\nexport class HomeCardGridComponent {\n @Input() cards: HomeCard[];\n @Input() version: HomeCardGridVersion;\n\n columns(): string {\n switch (this.version) {\n case \"card_3\":\n return \"columns-1\";\n case \"card_1_card_1\":\n return \"columns-2\";\n case \"card_2_card_1\":\n return \"columns-2-1\";\n case \"card_1_card_2\":\n return \"columns-1-2\";\n case \"card_1_card_1_card_1\":\n return \"columns-3\";\n }\n }\n\n getColSize(idx: number): number {\n return this.version\n .split(/_?card_/)\n .filter(x => x)\n .map((x: string) => parseInt(x))[idx];\n }\n}\n","import { Component, AfterViewInit, Input, ViewChild, ComponentFactoryResolver, Type, ComponentRef } from '@angular/core';\nimport { Text } from './../content/content';\nimport { HomeContent, HomeCardGrid } from './home-content';\nimport { ContentDirective } from './../content/content.directive';\nimport { TextComponent } from './../text/text.component';\nimport { HomeCardGridComponent } from './../home-card-grid/home-card-grid.component';\n\n@Component({\n selector: 'app-home-content',\n templateUrl: './home-content.component.html'\n})\nexport class HomeContentComponent implements AfterViewInit {\n @ViewChild(ContentDirective, {static: true}) contentHost: ContentDirective;\n @Input() content: HomeContent;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n }\n\n ngAfterViewInit() {\n this.selectComponent(this.content);\n }\n\n private loadComponent(component: Type): ComponentRef {\n const viewContainerRef = this.contentHost.viewContainerRef;\n viewContainerRef.clear();\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n return viewContainerRef.createComponent(componentFactory);\n }\n\n private selectComponent(homeContent: HomeContent) {\n switch (homeContent.__component) {\n case \"text.rich-text\":\n const textComponent = this.loadComponent(TextComponent)\n this.initRichText(textComponent.instance, homeContent);\n textComponent.changeDetectorRef.detectChanges();\n return;\n case \"grid.home-card-grid\":\n const cardGridComponent = this.loadComponent(HomeCardGridComponent)\n this.initHomeCardGrid(cardGridComponent.instance, homeContent);\n cardGridComponent.changeDetectorRef.detectChanges();\n return;\n default: const _exhaustiveCheck: never = homeContent;\n }\n }\n\n private initRichText(component: TextComponent, homeContent: Text) {\n component.content = homeContent.text;\n }\n\n private initHomeCardGrid(component: HomeCardGridComponent, homeContent: HomeCardGrid) {\n component.version = homeContent.version;\n component.cards = homeContent.homecards;\n }\n\n}\n","
\n \n
\n","
\n \n \n\n
\n \n\n \n \n
\n\n \n
\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { SpeciesCard } from './species-card';\nimport { StrapiService } from '../../strapi/strapi.service';\nimport { Observable, map } from 'rxjs';\nimport { FilterText, NormedFilterParams } from '../../species/speciesfilter/species-filter.model';\nimport { LanguageParams, LanguageService } from 'src/app/language.service';\n\n@Component({\n selector: 'app-species-gallery',\n templateUrl: './species-gallery.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpeciesGalleryComponent {\n @Input() discoverMoreThan: string;\n @Input() searchDescription: string;\n \n public static TAG_FRONT_PAGE = 138;\n\n private normalizeFilterParams(l: LanguageParams): NormedFilterParams {\n return {\n tag: [ SpeciesGalleryComponent.TAG_FRONT_PAGE ],\n lang: l\n }\n }\n\n\n fixedParams$ = this.languageService.getLanguageParams().pipe(\n map(lang => this.normalizeFilterParams(lang))\n );\n \n contextGroup$: Observable = this.textService.getPortraitFilterText();\n\n constructor( private textService: StrapiService, private languageService: LanguageService ) { }\n}\n","\n\n \n
\n \n
\n \n
\n
\n
\n
\n","import { Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Component, OnInit } from '@angular/core';\nimport { Home } from './home';\nimport { MenuItem } from '../sharedComponents/footer/menu-item';\nimport { StrapiService } from '../strapi/strapi.service';\nimport { Marked } from '@ts-stack/markdown';\n\ninterface HomeData {\n home: Home;\n menuItems: MenuItem[];\n}\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html'\n})\nexport class HomeComponent implements OnInit {\n data$: Observable;\n constructor(private strapi: StrapiService) {\n }\n\n ngOnInit(): void {\n this.data$ = combineLatest([this.strapi.getHomepage(), this.strapi.getMenuItems()]).pipe(\n map( ([home, menuItems]: [Home, MenuItem[]]) => {\n return {\n home: { ...home, hero: Marked.parse(home.hero) },\n menuItems: menuItems\n };\n })\n );\n }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Marked } from '@ts-stack/markdown';\n\n@Component({\n selector: 'app-caption',\n templateUrl: './caption.component.html'\n})\nexport class CaptionComponent implements OnChanges, OnInit {\n @Input() caption: string;\n markdown: string;\n\n constructor() {\n }\n\n ngOnInit() {\n this.markdown = Marked.parse(this.caption);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.markdown = Marked.parse(this.caption);\n }\n\n}\n","
\n","
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Image } from './../../strapi/image';\nimport { ImageTextVersion } from './../content/content';\n\n@Component({\n selector: 'app-image-text',\n templateUrl: './image-text.component.html'\n})\nexport class ImageTextComponent {\n @Input() image: Image;\n @Input() content: string;\n @Input() version?: ImageTextVersion;\n @Input() caption?: string;\n\n constructor() {\n }\n\n private getOrientation(invert: Boolean): string {\n switch(this.version) {\n case undefined:\n case null:\n case \"img_1_text_2\":\n case \"img_1_text_1\":\n case \"img_2_text_1\":\n case \"img_1_text_3\":\n return invert ? \"image-text__left\" : \"image-text__right\";\n case \"text_1_img_1\":\n case \"text_2_img_1\":\n case \"text_1_img_2\":\n case \"text_3_img_1\":\n return invert ? \"image-text__right\" : \"image-text__left\";\n }\n }\n\n imageClass(): string {\n return this.getOrientation(true);\n }\n\n textClass(): string {\n return this.getOrientation(false);\n }\n\n gridClass(): string {\n switch(this.version) {\n case \"img_1_text_2\":\n case \"text_1_img_2\":\n return \"columns-1-2\";\n case \"text_2_img_1\":\n case \"img_2_text_1\":\n return \"columns-2-1\";\n case \"img_1_text_3\":\n return \"columns-1-3\";\n case \"text_3_img_1\":\n return \"columns-3-1\";\n case undefined:\n case null:\n case \"text_1_img_1\":\n case \"img_1_text_1\":\n return \"columns-2\";\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Columns } from './content';\n\n@Pipe({name: 'columnsClass'})\nexport class ColumnsClassPipe implements PipeTransform {\n transform(columns: Columns): string {\n switch(columns) {\n default:\n case \"one\":\n return \"columns-1\";\n case \"two\":\n return \"columns-2\";\n case \"three\":\n return \"columns-3\";\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'widthClass'})\nexport class WidthClassPipe implements PipeTransform {\n transform(narrow?: boolean): string {\n if(narrow) {\n return \"container__text container__text--center\";\n } else {\n return \"\";\n }\n }\n}\n","
\n
\n \n
\n \n
\n","import { Component, Input } from '@angular/core';\nimport { Image } from './../../strapi/image';\nimport { Columns } from './../content/content';\n\n@Component({\n selector: 'app-image-grid',\n templateUrl: './image-grid.component.html'\n})\nexport class ImageGridComponent {\n @Input() columns: Columns;\n @Input() images: Image[];\n @Input() caption?: string;\n @Input() narrow?: boolean;\n \n mapCol(): number {\n return this.columns\n ? { 'one': 768, 'two': 368, 'three': 235 }[this.columns]\n : 768;\n }\n\n}\n","
\n
\n \n
\n
\n \"\"/\n \"\"/\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\n@Component({\n selector: 'app-youtube',\n templateUrl: './youtube.component.html'\n})\nexport class YoutubeComponent implements OnInit {\n @Input() url: string;\n @Input() narrow?: boolean;\n\n consent: Boolean = false;\n youtubeUrl: SafeResourceUrl;\n imageUrl: String;\n constructor(private sanitizer: DomSanitizer) {\n }\n\n ngOnInit() {\n const youtubeId = new URL(this.url).pathname.split('/').slice(-1)[0];\n this.imageUrl = `https://i.ytimg.com/vi/${youtubeId}/hq720.jpg`;\n this.youtubeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`https://www.youtube-nocookie.com/embed/${youtubeId}`);\n }\n\n giveConsent() {\n this.consent = true;\n }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Marked } from '@ts-stack/markdown';\n\n@Component({\n selector: 'app-faq',\n templateUrl: './faq.component.html'\n})\nexport class FAQComponent implements OnChanges, OnInit {\n @Input() question: string;\n @Input() answer: string;\n markdown: string;\n\n constructor() {\n }\n\n ngOnInit() {\n this.markdown = Marked.parse(this.answer);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.markdown = Marked.parse(this.answer);\n }\n\n}\n","
\n {{question}}\n
\n
\n","\n
\n \n
\n
{{subHeadline}}
\n
{{headline}}
\n
\n

\n

\n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n ChangeDetectionStrategy,\n Input,\n} from '@angular/core';\nimport { Image } from './../../strapi/image';\nimport { Marked } from '@ts-stack/markdown';\n\n@Component({\n selector: 'app-card',\n templateUrl: './card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent implements OnInit {\n @Input() headline: string;\n @Input() subHeadline?: string;\n @Input() body: string;\n @Input() image: Image;\n @Input() link: string;\n @Input() variant?:\n | 'normal'\n | 'blue'\n | 'jumbo-horizontal'\n | 'jumbo-vertical'\n | null;\n\n @Input() style = '';\n markdownBody: string;\n\n get classNamesByVariant() {\n switch (this.variant) {\n case 'blue':\n return 'card--blue dark-background';\n case 'jumbo-horizontal':\n return 'card--jumbo card--jumbo--horizontal dark-background';\n case 'jumbo-vertical':\n return 'card--jumbo card--jumbo--vertical dark-background';\n default:\n return '';\n }\n }\n\n ngOnInit(): void {\n this.markdownBody = Marked.parse(this.body);\n }\n}\n","
\n
\n \n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Columns, Card, CardVersion } from './../content/content';\n\n@Component({\n selector: 'app-card-grid',\n templateUrl: './card-grid.component.html'\n})\nexport class CardGridComponent {\n @Input() columns: Columns;\n @Input() cards: Card[];\n @Input() version: CardVersion;\n @Input() narrow?: boolean;\n\n constructor() {\n }\n\n}\n","import { Component, AfterViewInit, Input, ViewChild, ComponentFactoryResolver, Type, ComponentRef } from '@angular/core';\nimport { Text, ImageText, ImageGrid, Youtube, Content, CardGrid, FAQ } from './content';\nimport { ContentDirective } from './content.directive';\nimport { TextComponent } from './../text/text.component';\nimport { ImageTextComponent } from './../image-text/image-text.component';\nimport { ImageGridComponent } from './../image-grid/image-grid.component';\nimport { YoutubeComponent } from './../youtube/youtube.component';\nimport { FAQComponent } from './../faq/faq.component';\nimport { CardGridComponent } from './../card-grid/card-grid.component';\n\n@Component({\n selector: 'app-content',\n templateUrl: './content.component.html'\n})\nexport class ContentComponent implements AfterViewInit {\n @ViewChild(ContentDirective) contentHost: ContentDirective;\n @Input() content: Content;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n }\n\n ngAfterViewInit() {\n this.selectComponent(this.content);\n }\n\n getClass(): String {\n if(this.content.__component === \"misc.faq\") {\n return \"element element--faq\";\n } else {\n return \"element\";\n }\n }\n\n private loadComponent(componentType: Type): ComponentRef {\n const viewContainerRef = this.contentHost.viewContainerRef;\n viewContainerRef.clear();\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n return viewContainerRef.createComponent(componentFactory);\n }\n\n private selectComponent(content: Content) {\n switch (content.__component) {\n case \"text.rich-text\":\n const textComponent = this.loadComponent(TextComponent);\n this.initRichText(textComponent.instance, content);\n textComponent.changeDetectorRef.detectChanges();\n return;\n case \"grid.image-text\":\n const imageTextComponent = this.loadComponent(ImageTextComponent)\n this.initImageText(imageTextComponent.instance, content);\n imageTextComponent.changeDetectorRef.detectChanges();\n return;\n case \"grid.image-grid\":\n const imageGridComponent = this.loadComponent(ImageGridComponent)\n this.initImageGrid(imageGridComponent.instance, content);\n imageGridComponent.changeDetectorRef.detectChanges();\n return;\n case \"misc.youtube\":\n const youtubeComponent = this.loadComponent(YoutubeComponent)\n this.initYoutube(youtubeComponent.instance, content);\n youtubeComponent.changeDetectorRef.detectChanges();\n return;\n case \"grid.card-grid\":\n const cardGridComponent = this.loadComponent(CardGridComponent)\n this.initCardGrid(cardGridComponent.instance, content);\n cardGridComponent.changeDetectorRef.detectChanges();\n return;\n case \"misc.faq\":\n const faqComponent = this.loadComponent(FAQComponent)\n this.initFaq(faqComponent.instance, content);\n faqComponent.changeDetectorRef.detectChanges();\n return;\n default: const _exhaustiveCheck: never = content;\n }\n }\n\n private initRichText(component: TextComponent, content: Text) {\n component.content = content.text;\n }\n\n private initImageGrid(component: ImageGridComponent, content: ImageGrid) {\n component.images = content.images;\n component.columns = content.columns;\n component.caption = content.caption;\n component.narrow = content.narrow;\n }\n\n private initImageText(component: ImageTextComponent, content: ImageText) {\n component.content = content.text;\n component.image = content.image;\n component.version = content.version;\n component.caption = content.caption;\n }\n\n private initYoutube(component: YoutubeComponent, content: Youtube) {\n component.url = content.url;\n component.narrow = content.narrow;\n }\n\n private initCardGrid(component: CardGridComponent, content: CardGrid) {\n component.columns = content.columns;\n component.cards = content.cards;\n component.version = content.version;\n component.narrow = content.narrow;\n }\n\n private initFaq(component: FAQComponent, content: FAQ) {\n component.question = content.question;\n component.answer = content.answer;\n }\n\n}\n","
\n \n
\n","\n \n
\n \n
\n
\n\n","import { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Page } from './page';\nimport { FrameType } from './../sharedComponents/frame/frame-type';\nimport { StrapiService } from '../strapi/strapi.service';\n\n@Component({\n selector: 'app-page',\n templateUrl: './page.component.html'\n})\nexport class PageComponent implements OnInit {\n page$: Observable;\n\n constructor(private strapi: StrapiService, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.page$ = this.activatedRoute.params.pipe(\n switchMap(params => {\n const slug = params['page'];\n const subSlug = params['subpage'];\n const query = subSlug ? `${slug}/${subSlug}` : slug;\n return this.strapi.getPage(query);\n })\n );\n }\n\n frameType(dark: boolean): FrameType {\n return dark ? 'dark' : 'light';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { HomeComponent } from './home/home.component';\nimport { PageComponent } from './page/page.component';\nimport { NotfoundComponent } from './notfound/notfound.component';\nimport { IconTestComponent } from './sharedComponents/icon-test';\n\nconst routes: Routes = [\n {\n path: '',\n component: HomeComponent\n }, {\n path: 'map',\n loadChildren: () =>\n import('./project/project.module').then(m => m.ProjectModule)\n }, {\n path: 'icons',\n component: IconTestComponent\n }, {\n path: 'fieldbook',\n loadChildren: () =>\n import('./fieldbook/fieldbook.module').then(f => f.FieldbookModule)\n }, {\n path: 'species',\n loadChildren: () =>\n import('./species/species.module').then(m => m.SpeciesModule)\n }, {\n path: 'account',\n loadChildren: () =>\n import('./auth/auth.module').then(a => a.AuthModule)\n }, {\n path: ':page',\n component: PageComponent\n }, {\n path: ':page/:subpage',\n component: PageComponent\n },\n {\n path: '**',\n component: NotfoundComponent\n }, {\n path: '',\n redirectTo: '',\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n anchorScrolling: 'enabled'\n})],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","\nimport { Component } from \"@angular/core\";\n\n@Component({\n template: `
\n
    \n
  • observation:
  • \n
  • right-arrow:
  • \n
  • pinwithstar:
  • \n
  • fail:
  • \n
  • success:
  • \n
  • new_badge:
  • \n
  • demand:
  • \n
  • pending:
  • \n
  • unknown:
  • \n
  • loading:
  • \n
  • settings_vertical:
  • \n
  • minus:
  • \n
  • add:
  • \n
  • lock:
  • \n
  • arrow_simple:
  • \n
  • pin:
  • \n
  • settings_horizontal:
  • \n
  • sort_descending:
  • \n
  • menu_bars:
  • \n
  • common_file_module:
  • \n
  • arrow:
  • \n
  • close_big:
  • \n
  • pause_media:
  • \n
  • sound_speaker:
  • \n
  • common_file:
  • \n
  • plus:
  • \n
  • common_file_download:
  • \n
  • expand:
  • \n
  • sort_ascending:
  • \n
  • arrow_in:
  • \n
  • common_file_home:
  • \n
  • search:
  • \n
  • mini_arrow:
  • \n
  • trash:
  • \n
  • close_small:
  • \n
  • cog:
  • \n
  • play_media:
  • \n
  • cc:
  • \n
  • edit:
  • \n
  • cards:
  • \n
  • compass:
  • \n
  • map:
  • \n
  • gallery:
  • \n
  • list:
  • \n
  • howtos:
  • \n
  • lang_de:
  • \n
  • veranstaltungen:
  • \n
  • ueber_naturblick:
  • \n
  • naturblick_feldbuch:
  • \n
  • info:
  • \n
  • profile:
  • \n
  • publikationen:
  • \n
  • artbestimmung:
  • \n
  • communities:
  • \n
  • logout:
  • \n
  • lang_en:
  • \n
  • lang_L:
  • \n
  • comment:
  • \n
  • feldbuch:
  • \n
  • artportraits:
  • \n
  • reptilien:
  • \n
  • saeugetiere:
  • \n
  • schmetterlinge:
  • \n
  • nadelbaeume:
  • \n
  • amphibien:
  • \n
  • bienen:
  • \n
  • kraeuter:
  • \n
  • voegel:
  • \n
  • laubbaeume:
  • \n
  • alle:
  • \n
  • radio_button:
  • \n
  • radio_button_selected:
  • \n
  • unchecked:
  • \n
  • checked:
  • \n
  • semi_checked:
  • \n
  • check:
  • \n
  • time:
  • \n
  • thumbsup:
  • \n
  • location:
  • \n
  • camera:
  • \n
  • tag:
  • \n
  • phone_expand:
  • \n
  • score:
  • \n
  • whale_love:
  • \n
  • activity:
  • \n
  • microphone:
  • \n
  • insectant:
  • \n
  • shellfishcrab:
  • \n
  • spider:
  • \n
  • snail:
  • \n
  • insectcentipede:
  • \n
  • fishingbaitfish:
  • \n
  • all:
  • \n
  • tree:
  • \n
  • bird:
  • \n
  • herb:
  • \n
  • hymenoptera:
  • \n
  • amphibian:
  • \n
  • conifer:
  • \n
  • butterfly:
  • \n
  • mammal:
  • \n
  • reptile:
  • \n
\n
`,\n selector: \"app-icon-test\",\n})\nexport class IconTestComponent {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-notfound',\n templateUrl: './notfound.component.html',\n styleUrls: ['./notfound.component.scss']\n})\nexport class NotfoundComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","

Wooops...this is awkward!

\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { filter, map, mergeMap } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackerService implements OnDestroy {\n\n private readonly trackerEndpoint = '/api/tracker';\n private readonly freshSpaId = this.generateUuid();\n private subscription: Subscription;\n\n constructor(private router: Router, private http: HttpClient) {\n this.subscription = router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map((ne: NavigationEnd) => this.encodeNavigationEnd(ne)),\n mergeMap(uri => this.http.get(uri))\n ).subscribe();\n }\n\n private generateUuid() {\n let d2h = [];\n let vals = new Array(16);\n\n for (let i = 0; i < 256; ++i) {\n d2h.push((0x100 + i).toString(16).substr(1));\n }\n\n for (let _i = 0; _i < 16; ++_i) {\n vals[_i] = Math.random() * 256 | 0;\n }\n\n return d2h[vals[0]] + d2h[vals[1]] + d2h[vals[2]] + d2h[vals[3]] + d2h[vals[4]] + d2h[vals[5]] + d2h[vals[6]] + d2h[vals[7]] + d2h[vals[8]] + d2h[vals[9]] + d2h[vals[10]] + d2h[vals[11]] + d2h[vals[12]] + d2h[vals[13]] + d2h[vals[14]] + d2h[vals[15]];\n }\n\n private encodeNavigationEnd(ne: NavigationEnd) {\n return this.trackerEndpoint + '?freshSpaId=' + this.freshSpaId + '&numOfSteps=' + ne.id + '&url=' + encodeURIComponent(ne.url) + '&innerWidth=' + window.innerWidth\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { MatIconRegistry } from \"@angular/material/icon\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nconst reptile =\n \"../assets/all-icons/Großgruppen/Regular/reptilien_streamline-icon-reptile-snake-1@24x24.svg\";\nconst mammal =\n \"../assets/all-icons/Großgruppen/Regular/saeuugetiere_streamline-icon-fox-body@24x24.svg\";\nconst butterfly =\n \"../assets/all-icons/Großgruppen/Regular/schmetterlinge_streamline-icon-flying-insect-butterfly-1@24x24.svg\";\nconst conifer =\n \"../assets/all-icons/Großgruppen/Regular/nadelbaeumume_streamline-icon-tree-christmas@24x24.svg\";\nconst amphibian =\n \"../assets/all-icons/Großgruppen/Regular/amphibien_streamline-icon-amphibian-frog-body@24x24.svg\";\nconst hymenoptera =\n \"../assets/all-icons/Großgruppen/Regular/bienen_streamline-icon-flying-insect-bee@24x24.svg\";\nconst herb =\n \"../assets/all-icons/Großgruppen/Regular/kraeuuter_streamline-icon-plant@24x24.svg\";\nconst bird =\n \"../assets/all-icons/Großgruppen/Regular/voegel_streamline-icon-wild-bird-owl-body@24x24.svg\";\nconst tree =\n \"../assets/all-icons/Großgruppen/Regular/laubbaeuume_streamline-icon-tree-2@24x24.svg\";\nconst all =\n \"../assets/all-icons/Großgruppen/Regular/alle_streamline-icon-ecology-leaf-book-open@24x24.svg\";\nconst fishingbaitfish =\n \"../assets/all-icons/Großgruppen/Regular/fishing-bait-fish.svg\";\nconst insectcentipede =\n \"../assets/all-icons/Großgruppen/Regular/insect-centipede.svg\";\nconst snail = \"../assets/all-icons/Großgruppen/Regular/snail.svg\";\nconst spider = \"../assets/all-icons/Großgruppen/Regular/spider.svg\";\nconst shellfishcrab =\n \"../assets/all-icons/Großgruppen/Regular/shellfish-crab.svg\";\nconst insectant = \"../assets/all-icons/Großgruppen/Regular/insect-ant.svg\";\nconst logo = \"../assets/all-icons/Global Navigation/Regular/about_streamline-icon-view-1@24x24.svg\";\n\nexport const SpeciesIcons: Record = {\n reptile: reptile,\n mammal: mammal,\n butterfly: butterfly,\n conifer: conifer,\n amphibian: amphibian,\n hymenoptera: hymenoptera,\n herb: herb,\n bird: bird,\n tree: tree,\n all: all,\n fishingbaitfish: fishingbaitfish,\n actinopterygii: fishingbaitfish,\n chondrichthyes: fishingbaitfish,\n insectcentipede: insectcentipede,\n chilopoda: insectcentipede,\n diplopoda: insectcentipede,\n snail: snail,\n anaspidea: snail,\n bivalvia_mollusken: snail,\n cephalaspidea: snail,\n cephalopoda: snail,\n gastropoda: snail,\n spider: spider,\n acarida: spider,\n arachnid: spider,\n araneae: spider,\n hydrachnidia: spider,\n shellfishcrab: shellfishcrab,\n amphipoda: shellfishcrab,\n branchiopoda: shellfishcrab,\n crustacea: shellfishcrab,\n maxillopoda: shellfishcrab,\n insectant: insectant,\n blattodea: insectant,\n bug: insectant,\n coleoptera: insectant,\n dermaptera: insectant,\n diptera: insectant,\n dragonfly: insectant,\n ephemeroptera: insectant,\n grasshopper: insectant,\n heteroptera: insectant,\n lepidoptera: insectant,\n mantodea: insectant,\n mecoptera: insectant,\n megaloptera: insectant,\n neuroptera: insectant,\n odonata: insectant,\n planipennia: insectant,\n plecoptera: insectant,\n psocoptera: insectant,\n raphidioptera: insectant,\n thysanoptera: insectant,\n trichoptera: insectant,\n truebug: insectant,\n zygentoma: insectant,\n algae: logo,\n anopla: logo,\n anthozoa: logo,\n ascidiacea: logo,\n asteroidea: logo,\n bryozoa: logo,\n calcarea: logo,\n cephalaspidomorphi: logo,\n cestoda: logo,\n ciliatea: logo,\n coelenterata: logo,\n collembola: logo,\n coscinodiscophyceae: logo,\n cryptophyceae: logo,\n demospongiae: logo,\n diatoms: logo,\n echinoidea: logo,\n entognatha: logo,\n euglenida: logo,\n eurotatoria: logo,\n fungi: logo,\n gymnolaemata: logo,\n halicryptomorphida: logo,\n hormogoneae: logo,\n hydrozoa: logo,\n kamptozoa: logo,\n moss: logo,\n nematoda: logo,\n nematomorpha: logo,\n nemertini: logo,\n ophiuroidea: logo,\n phylactolaemata: logo,\n phyllopharyngea: logo,\n porifera: logo,\n rotatoria: logo,\n scyphozoa: logo,\n stonewort: logo,\n strigeida: logo,\n tardigrada: logo,\n tentaculata: logo,\n trematoda: logo,\n turbellaria: logo,\n branchiobdellida: logo,\n hirudinea: logo,\n oligochaeta: logo,\n polychaeta: logo,\n terebellida: logo\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n\n get getIconRegistry() {\n return this.iconRegistry;\n }\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer\n ) {\n this.iconRegistry.addSvgIcon(\n \"observation\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/icons/observation.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"right-arrow\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/icons/right-arrow.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"pinwithstar\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/icons/pinwithstar.svg\"\n )\n );\n\n // Imported 2021-04-28\n this.iconRegistry.addSvgIcon(\n \"fail\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/status/fail_streamline-icon-interface-alert-warning-triangle@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"success\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/status/success_streamline-icon-interface-validation-check-circle@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"new_badge\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/status/new-badge_streamline-icon-interface-geometric-circle@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"demand\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/status/demand.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"pending\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/status/pending_streamline-icon-interface-time-clock-circle@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"unknown\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/status/unknown_streamline-icon-interface-help-question-circle@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"loading\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/loading_streamline-icon-loading-line-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"settings_vertical\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/settings-vertical_streamline-icon-navigation-menu-vertical@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"minus\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/minus_streamline-icon-interface-remove-1@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"add\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/plus_streamline-icon-add-circle-bold@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"lock\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/lock_streamline-icon-interface-lock@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"arrow_simple\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/arrow-simple_streamline-icon-interface-arrows-button-down@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"pin\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/pin_streamline-icon-style-two-pin-marker@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"settings_horizontal\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/settings-horizontal_streamline-icon-interface-setting-menu-horizontal@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"sort_descending\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/sort-descending.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"menu_bars\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/menu_bars.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"common_file_module\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/common-file-module-1_streamline-icon-common-file-module-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"arrow\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/arrow_streamline-icon-arrow-left@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"close_big\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/close-big.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"pause_media\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/pause-media.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"sound_speaker\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/sound-speaker.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"common_file\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/common-file-text_streamline-icon-common-file-text@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"plus\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/plus_streamline-icon-interface-add-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"common_file_download\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/common-file-text-download_streamline-icon-common-file-text-download@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"expand\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/expand_streamline-icon-expand-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"sort_ascending\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/sort-ascending.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"arrow_in\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/arrow-in_streamline-icon-login-alternate@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"common_file_home\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/common-file-home_streamline-icon-common-file-home@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"search\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/search_streamline-icon-search-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"mini_arrow\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/mini-arrow_streamline-icon-arrow-button-down-2@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"trash\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/trash_streamline-icon-bin-2-alternate@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"close_small\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/close-small_streamline-icon-remove-circle-bold@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"cog\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/cog_streamline-icon-cog-1@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"play_media\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/play-media.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"cc\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/cc.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"edit\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Functional/pencil_streamline-icon-pencil-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"cards\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Views/cards_streamline-icon-layout-dashboard@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"compass\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Views/map_streamline-icon-compass@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"map\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/map_streamline-icon-maps@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"gallery\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Views/gallery_streamline-icon-layout-array-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"list\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Views/list_streamline-icon-layout-bullets@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"howtos\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/howtos_streamline-icon-study-owl@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"lang_de\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/lang_de.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"veranstaltungen\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/veranstaltungen_streamline-icon-astronomy-telescope@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"ueber_naturblick\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/about_streamline-icon-view-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"naturblick_feldbuch\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/naturblick-feldbuch.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"info\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/info.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"profile\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/profile_streamline-icon-single-man-circle@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"publikationen\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/publikationen_streamline-icon-newspaper-read-man@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"artbestimmung\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/artbestimmung_streamline-icon-focus-flower@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"communities\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/communities_streamline-icon-religion-cao-dai@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"logout\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/logout_streamline-icon-logout-2@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"lang_en\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/lang_en.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"lang_L\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/lang_L.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"comment\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/comment_streamline-icon-messages-bubble-heart@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"feldbuch\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/feldbuch_streamline-icon-ecology-leaf-book-open@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"artportraits\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Global Navigation/Regular/artportraits.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"reptilien\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/reptilien_streamline-icon-reptile-snake-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"saeugetiere\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/saeuugetiere_streamline-icon-fox-body@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"schmetterlinge\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/schmetterlinge_streamline-icon-flying-insect-butterfly-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"nadelbaeume\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/nadelbaeumume_streamline-icon-tree-christmas@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"amphibien\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/amphibien_streamline-icon-amphibian-frog-body@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"bienen\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/bienen_streamline-icon-flying-insect-bee@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"kraeuter\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/kraeuuter_streamline-icon-plant@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"voegel\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/voegel_streamline-icon-wild-bird-owl-body@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"laubbaeume\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/laubbaeuume_streamline-icon-tree-2@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"alle\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Großgruppen/Regular/alle_streamline-icon-ecology-leaf-book-open@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"radio_button\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Forms/Radio/radio-button_streamline-icon-sign-badge-circle-alternate@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"radio_button_selected\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Forms/Radio/radio-button-selected_streamline-icon-button-record-alternate@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"unchecked\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Forms/Checkbox/Bright/unchecked_streamline-icon-interface-geometric-square@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"checked\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Forms/Checkbox/Bright/checked_streamline-icon-check-2@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"semi_checked\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Forms/Checkbox/Bright/semichecked_streamline-icon-interface-remove-square@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"check\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Forms/check_streamline-icon-check@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"time\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/time_streamline-icon-interface-time-clock-circle@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"thumbsup\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/thumbsup_streamline-icon-interface-favorite-like@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"location\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/location_streamline-icon-travel-map-location-pin@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"camera\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/camera_streamline-icon-lens-shade-1@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"tag\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/tag_streamline-icon-barcode-tag@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"phone_expand\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/phone-expand_streamline-icon-phone-expand@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"score\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/score_streamline-icon-robot@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"whale_love\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/whale-love_streamline-icon-love-whale@24x24.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"activity\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/activity_streamline-icon-interface-edit-binocular@16x16.svg\"\n )\n );\n this.iconRegistry.addSvgIcon(\n \"microphone\",\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n \"../assets/all-icons/Describing/microphone_streamline-icon-microphone-podcast-2@24x24.svg\"\n )\n );\n\n // Redefinition of Großgruppen with names derived from species ID\n for (let id in SpeciesIcons) {\n const path = SpeciesIcons[id];\n this.iconRegistry.addSvgIcon(\n id,\n this.domSanitizer.bypassSecurityTrustResourceUrl(path)\n );\n }\n }\n}\n","import { Component } from '@angular/core';\n\nimport { TrackerService } from './tracker.service';\nimport { IconService } from './icon.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'NB-Platform';\n\n constructor(_: TrackerService, _2: IconService) {}\n}\n","\n","import {\n HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HTTP_INTERCEPTORS\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { NavigationService } from '../../navigation.service';\nimport { AuthService } from '../auth.service';\n\n\n@Injectable()\nexport class UnauthorizedInterceptor implements HttpInterceptor {\n\n constructor(private navigationService: NavigationService, private authService: AuthService, private route: ActivatedRoute) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return this.handleReponse(request, next);\n }\n\n private handleReponse(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(tap(() => { },\n (err: any) => {\n if (err instanceof HttpErrorResponse) {\n if (err.status !== 401) {\n return;\n }\n this.authService.signedIn = false;\n this.navigationService.navigate(this.route, '/account/signin');\n }\n }));\n }\n}\n\nexport const unauthorizedInterceptorProviders = [\n { provide: HTTP_INTERCEPTORS, useClass: UnauthorizedInterceptor, multi: true },\n];\n","import { Injectable } from '@angular/core';\nimport {\n HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { request } from 'http';\n\n@Injectable()\nexport class WithCredentialsInterceptor implements HttpInterceptor {\n\n intercept(req: HttpRequest, next: HttpHandler):\n Observable> {\n \n if (this.isRequestToPlayback(req)) {\n req = req.clone({\n withCredentials: true\n });\n }\n\n return next.handle(req);\n }\n\n private isRequestToPlayback(req: HttpRequest): boolean {\n return req.url.indexOf('/api/') != -1;\n }\n}\n\nexport const wthCredentialsInterceptorProviders = [\n { provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },\n];","import { Renderer } from '@ts-stack/markdown';\nimport { environment } from './../../environments/environment';\n\nexport class MarkdownRenderer extends Renderer {\n hr(): string {\n return this.options.xhtml ? '
\\n' : '
\\n';\n }\n\n image(href: string, title: string, text: string): string {\n return super.image(environment.strapiMarkdownBaseUrl + href, title, text);\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { Marked } from '@ts-stack/markdown';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { AuthService } from './auth/auth.service';\nimport { unauthorizedInterceptorProviders } from './auth/interceptor/unauthorized.interceptor';\nimport { wthCredentialsInterceptorProviders as withCredentialsInterceptorProviders } from './auth/interceptor/withcredentials.interceptor';\nimport { HomeComponent } from './home/home.component';\nimport { IconService } from './icon.service';\nimport { LanguageService } from './language.service';\nimport { NavigationService } from './navigation.service';\nimport { NotfoundComponent } from './notfound/notfound.component';\nimport { PageComponent } from './page/page.component';\nimport { CaptionComponent } from './sharedComponents/caption/caption.component';\nimport { CardGridComponent } from './sharedComponents/card-grid/card-grid.component';\nimport { CardComponent } from './sharedComponents/card/card.component';\nimport { ColumnsClassPipe } from './sharedComponents/content/columns-class.pipe';\nimport { WidthClassPipe } from './sharedComponents/content/width-class.pipe';\nimport { HomeCardGridComponent } from './sharedComponents/home-card-grid/home-card-grid.component';\nimport { HomeCardLinkComponent } from './sharedComponents/home-card-link/home-card-link.component';\nimport { HomeContentComponent } from './sharedComponents/home-content/home-content.component';\nimport { HomeCardComponent } from './sharedComponents/homecard/homecard.component';\nimport { IconTestComponent } from './sharedComponents/icon-test';\nimport { ImageGridComponent } from './sharedComponents/image-grid/image-grid.component';\nimport { ImageTextComponent } from './sharedComponents/image-text/image-text.component';\nimport { SharedComponentsModule } from './sharedComponents/sharedComponents.module';\nimport { SpeciesGalleryComponent } from './sharedComponents/species-gallery/species-gallery.component';\nimport { YoutubeComponent } from './sharedComponents/youtube/youtube.component';\nimport { MarkdownRenderer } from './strapi/markdown-renderer';\nimport { StrapiService } from './strapi/strapi.service';\nimport { TrackerService } from './tracker.service';\nimport { SpeciesFilterComponent } from './species/speciesfilter/species-filter.component';\nimport { SpeciesFilterParamsService } from './species/speciesfilter/species-filter-params.service';\nimport { SpeciesNameQueryComponent } from './species/speciesfilter/filter-inputs/species-name-query.component';\nimport { RouterModule } from '@angular/router';\nimport { MatsModule } from './shared/mats.module';\nimport { QueryMatchComponent } from './species/speciesfilter/filter-inputs/query-match.component';\nimport { SpeciesTagsComponent } from './species/speciesfilter/filter-inputs/species-tags.component';\nimport { SpeciesViewSelectorComponent } from './species/speciesfilter/filter-inputs/species-view-selector.component';\nimport { SpeciesGroupsViewComponent } from './species/speciesfilter/filter-views/species-groups-view.component';\nimport { SpeciesTableComponent } from './species/speciesfilter/filter-views/species-table.component';\nimport { SpeciesMasonryComponent } from './species/speciesfilter/filter-views/species-masonry.component';\n\n@NgModule({\n declarations: [\n ColumnsClassPipe,\n WidthClassPipe,\n AppComponent,\n NotfoundComponent,\n HomeComponent,\n PageComponent,\n CardComponent,\n HomeCardComponent,\n HomeCardLinkComponent,\n HomeCardGridComponent,\n HomeContentComponent,\n SpeciesGalleryComponent,\n YoutubeComponent,\n ImageTextComponent,\n ImageGridComponent,\n CardGridComponent,\n CaptionComponent,\n IconTestComponent,\n SpeciesFilterComponent,\n SpeciesNameQueryComponent,\n QueryMatchComponent,\n SpeciesTagsComponent,\n SpeciesViewSelectorComponent,\n SpeciesGroupsViewComponent,\n SpeciesTableComponent,\n SpeciesMasonryComponent\n ],\n imports: [\n BrowserModule,\n HttpClientModule,\n AppRoutingModule,\n MatIconModule,\n MatSelectModule,\n BrowserAnimationsModule,\n SharedComponentsModule,\n RouterModule,\n MatsModule\n ],\n providers: [\n AuthService,\n StrapiService,\n IconService,\n LanguageService,\n NavigationService,\n TrackerService,\n withCredentialsInterceptorProviders,\n unauthorizedInterceptorProviders,\n {\n provide: APP_INITIALIZER, useFactory: () =>\n () => Marked.setOptions({ renderer: new MarkdownRenderer() }), multi: true\n },\n SpeciesFilterParamsService\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","\nimport { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport { hmrBootstrap } from './hmr';\n\nif (environment.production) {\n enableProdMode();\n}\n\nconst bootstrap = () => platformBrowserDynamic()\n .bootstrapModule(AppModule)\n // .catch(err => console.error(err));\n\nif (environment.hmr) {\n if ((module as any) [ 'hot' ]) {\n hmrBootstrap(module, bootstrap);\n } else {\n console.error('HMR is not enabled for webpack-dev-server!');\n console.log('Are you using the --hmr flag for ng serve?');\n }\n} else {\n bootstrap().catch(err => console.log(err));\n}\n"],"x_google_ignoreList":[]}