-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain-es5.js.map
1 lines (1 loc) · 56.4 KB
/
main-es5.js.map
1
{"version":3,"sources":["webpack:///src/app/experience/experience.component.ts","webpack:///src/app/experience/experience.component.html","webpack:///src/app/about/about.component.ts","webpack:///src/app/about/about.component.html","webpack:///src/app/core/header/header.component.ts","webpack:///src/app/core/header/header.component.html","webpack:///src/environments/environment.ts","webpack:///src/app/core/footer/footer.component.ts","webpack:///src/app/core/footer/footer.component.html","webpack:///src/app/app.translations.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.module.ts","webpack:///src/app/contact/contact.component.ts","webpack:///src/app/contact/contact.component.html","webpack:///src/app/app-routing.module.ts","webpack:///src/app/projects/projects.component.ts","webpack:///src/app/projects/projects.component.html","webpack:///src/main.ts","webpack:///$_lazy_route_resource lazy namespace object"],"names":["ExperienceComponent","selectedCategory","skillData","programming","assetURL","altText","dataLabel","value","frameworks","devops","selectCategory","category","event","tabList","document","getElementById","childNodes","forEach","listElement","classList","remove","element","path","add","$event","selector","templateUrl","styleUrls","AboutComponent","triggerAnimationEventEmitter","setComponentHeight","header","headerHeight","offsetHeight","startSection","viewportHeight","window","innerHeight","availableHeight","style","height","toString","el","scroll","top","offsetTop","documentElement","clientHeight","behavior","emit","scrollToBio","HeaderComponent","translate","language","heading","headingKey","darkMode","darkModeButtonKey","onscroll","setScrollIndicator","addAnimationClasses","setMarginToContent","winScroll","body","scrollTop","scrollHeight","scrolled","width","localStorage","setItem","heightString","headerSection","marginBottom","innerNav","parentElement","overflow","buttonImage","src","lang","use","instant","section","navigateToSection","location","hash","burger","click","$burger","$target","dataset","target","contains","toggleActive","assignHeading","changeLanguage","toggleDarkMode","environment","production","FooterComponent","appTranslations","de","HEADER","HOME","ABOUT","EXPERIENCE","PROJECTS","CONTACT","DARKMODE","LIGHTMODE","INTRO_TEXT","INTRO_TITLE","INTRO_SUBTITLE","PREVIOUS_EXPERIENCE_TEXT","PREVIOUS_EXPERIENCE","PROJECTS_TEXT","PROPOSAL","PROPOSAL_TEXT","en","AppComponent","elementsToBeAnimated","isDarkMode","addEventListener","substring","offset","parseInt","getItem","currentOffset","triggerAnimations","initializeTranslations","animations","initializeDarkModeSwitch","getElementsToBeAnimated","initializeScrollEventHandler","rect","getBoundingClientRect","left","bottom","right","innerWidth","clientWidth","requestAnimationFrame","passive","animationfunction","getComputedStyle","visibility","isElementInViewport","animation","replace","browserLang","navigator","setTranslation","setDefaultLang","AppModule","forRoot","defaultLanguage","declarations","imports","providers","bootstrap","ContactComponent","routes","redirectTo","pathMatch","AppRoutingModule","exports","ProjectsComponent","bootstrapModule","err","console","error","webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","id"],"mappings":"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","file":"main-es5.js","sourcesContent":["import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subscription } from 'rxjs/internal/Subscription';\n\n@Component({\n selector: 'app-experience',\n templateUrl: './experience.component.html',\n styleUrls: ['./experience.component.sass']\n})\nexport class ExperienceComponent implements OnInit {\n /**\n * stores which tab content is displayed\n */\n selectedCategory = 'programming';\n\n /**\n * array to store data for progress bars\n */\n skillData = {\n programming: [\n {assetURL: '../../assets/svg/HTML5_logo.svg', altText: 'html5-logo', dataLabel: '95%', value: 'value-95'},\n {assetURL: '../../assets/svg/CSS3_logo.svg', altText: 'css3-logo', dataLabel: '65%', value: 'value-65'},\n {assetURL: '../../assets/svg/JavaScript_logo.svg', altText: 'javascript-logo', dataLabel: '85%', value: 'value-85'},\n ],\n frameworks: [\n {assetURL: '../../assets/svg/Angular_full_color_logo.svg', altText: 'angular-logo', dataLabel: '90%', value: 'value-90'},\n {assetURL: '../../assets/svg/React_logo.svg', altText: 'react-logo', dataLabel: '40%', value: 'value-40'},\n {assetURL: '../../assets/svg/Node.js_logo.svg', altText: 'node-js-logo', dataLabel: '65%', value: 'value-65'},\n ],\n devops: [\n {assetURL: '../../assets/svg/Microsoft_Azure_logo.svg', altText: 'microsoft-azure-logo', dataLabel: '75%', value: 'value-75'},\n {assetURL: '../../assets/svg/Amazon_Web_Services_logo.svg', altText: 'amazon-webservices-logo', dataLabel: '20%', value: 'value-20'},\n {assetURL: '../../assets/svg/Docker_logo.svg', altText: 'docker-logo', dataLabel: '35%', value: 'value-35'},\n ]\n };\n\n constructor() { }\n\n ngOnInit(): void {}\n\n /**\n * called on tab selection\n */\n selectCategory = (category: string, event: any) => {\n\n // remove is-active class from every element\n const tabList = document.getElementById('experience-tab-list');\n tabList.childNodes.forEach((listElement: HTMLElement) => {\n listElement.classList.remove('is-active');\n });\n\n this.selectedCategory = category;\n\n // add is-active class to the selected element\n const element = event.path[1];\n element.classList.add('is-active');\n }\n\n}\n","<section class=\"section\" id=\"experience\">\n\n <div class=\"block\">\n <h1 id=\"experience-title\" class=\"title visibility-hidden\">{{'EXPERIENCE.PREVIOUS_EXPERIENCE' | translate}}</h1>\n </div>\n\n <div class=\"block\">\n <h2 class=\"subtitle visibility-hidden\" id=\"experience-subtitle\">{{'EXPERIENCE.PREVIOUS_EXPERIENCE_TEXT' | translate}}</h2>\n </div>\n\n <div id=\"experience-tab-container\" class=\"visibility-hidden\">\n\n <div class=\"tabs is-centered is-toggle is-fullwidth\" id=\"experience-tab-switch\">\n <ul id=\"experience-tab-list\">\n <li class=\"tab-list-item-container is-active\">\n <a (click)=\"selectCategory('programming', $event)\" class=\"tab-list-item\">Programming</a>\n </li>\n <li class=\"tab-list-item-container\">\n <a (click)=\"selectCategory('frameworks', $event)\" class=\"tab-list-item\">Frameworks</a>\n </li>\n <li class=\"tab-list-item-container\">\n <a (click)=\"selectCategory('devops', $event)\" class=\"tab-list-item\">DevOps</a>\n </li>\n </ul>\n </div>\n\n <div class=\"card\" id=\"experience-tab-card\">\n <div *ngIf=\"selectedCategory === 'programming'\" class=\"card-content is-flex is-flex-direction-column\">\n\n <div *ngFor=\"let data of skillData.programming\" class=\"is-flex is-flex-direction-row is-justify-content-center is-align-items-center\">\n <img src=\"{{data.assetURL}}\" class=\"panel-icon icon tech-icon\" alt=\"{{data.altText}}\">\n <div class=\"progress progress-text is-flex is-justify-content-center\">\n <span class=\"data-label-span\">{{data.dataLabel}}</span>\n <span class=\"value {{data.value}} progress-span animate__animated animate__fadeInLeft\"></span>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"selectedCategory === 'frameworks'\" class=\"card-content is-flex is-flex-direction-column\">\n\n <div *ngFor=\"let data of skillData.frameworks\" class=\"is-flex is-flex-direction-row is-justify-content-center is-align-items-center\">\n <img src=\"{{data.assetURL}}\" class=\"panel-icon icon tech-icon\" alt=\"{{data.altText}}\">\n <div class=\"progress is-info progress-text is-flex is-justify-content-center\">\n <span class=\"data-label-span\">{{data.dataLabel}}</span>\n <span class=\"value {{data.value}} progress-span animate__animated animate__fadeInLeft\"></span>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"selectedCategory === 'devops'\" class=\"card-content is-flex is-flex-direction-column\">\n\n <div *ngFor=\"let data of skillData.devops\" class=\"is-flex is-flex-direction-row is-justify-content-center is-align-items-center\">\n <img src=\"{{data.assetURL}}\" class=\"panel-icon icon tech-icon\" alt=\"{{data.altText}}\">\n <div class=\"progress progress-text is-flex is-justify-content-center\">\n <span class=\"data-label-span\">{{data.dataLabel}}</span>\n <span class=\"value {{data.value}} progress-span animate__animated animate__fadeInLeft\"></span>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n</section>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\n@Component({\n selector: 'app-about',\n templateUrl: './about.component.html',\n styleUrls: ['./about.component.sass']\n})\nexport class AboutComponent implements OnInit {\n\n @Output() triggerAnimationEventEmitter = new EventEmitter<any>();\n\n constructor() {}\n\n ngOnInit() {\n this.setComponentHeight();\n }\n\n /**\n * Adjust height, of the start screen to fill up the whole screen (- navbar)\n */\n setComponentHeight() {\n const header = document.getElementById('navigation');\n const headerHeight = header.offsetHeight;\n\n const startSection = document.getElementById('about-visible-on-start-container');\n const viewportHeight = window.innerHeight;\n const availableHeight = viewportHeight - headerHeight;\n\n // console.log('headerheight: ', headerHeight);\n // console.log('viewportHeight: ', window.innerHeight);\n // console.log('availableHeight: ', availableHeight);\n\n // Section padding is 3 rem and rem is according to browser font size, usually 1rem:16px\n startSection.style.height = (availableHeight - 48).toString() + 'px';\n\n // const convertRemToPixels = (rem) => {\n // return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\n // }\n // console.log('pixels: ', convertRemToPixels(3));\n\n }\n\n scrollToBio() {\n const el = document.getElementById('experience');\n scroll({\n top: el.offsetTop - document.documentElement.clientHeight,\n behavior: 'smooth'\n });\n this.triggerAnimationEventEmitter.emit();\n }\n\n}\n","<section class=\"section is-flex adjust-flex-direction\" id=\"about\">\n\n <div class=\"is-flex is-flex-direction-column\">\n\n <div id=\"about-visible-on-start-container\">\n\n <div class=\"columns\">\n\n <div id=\"heading-container\" class=\"column is-flex is-flex-direction-column is-justify-content-center is-align-items-center\">\n <div class=\"block has-text-centered\">\n <h1 id=\"about-title\" class=\"title visibility-hidden is-size-2 font-monospace\">{{'ABOUT.INTRO_TITLE' | translate}} <br class=\"is-hidden-desktop is-hidden-tablet\"> Florian 👋</h1>\n </div>\n\n <div class=\"block has-text-centered\">\n <h2 id=\"about-subtitle\" class=\"subtitle visibility-hidden is-size-3\">{{'ABOUT.INTRO_SUBTITLE' | translate}}</h2>\n </div>\n </div>\n\n <div class=\"column is-flex is-align-items-center is-justify-content-center\">\n <img id=\"profile-image\" class=\"profile-image visibility-hidden\" src=\"../../assets/pictures/profile-image.jpg\" alt=\"sideways-photo-florian\">\n </div>\n\n </div>\n\n <div class=\"is-flex is-justify-content-center pt-2\" (click)=\"scrollToBio()\">\n <img id=\"arrow-down-icon\" class=\"arrow-down-icon visibility-hidden\" src=\"../../assets/icons/arrow-down.svg\" alt=\"arrow-down-icon\">\n </div>\n\n </div>\n\n <div class=\"is-flex is-justify-content-center is-align-items-center\">\n <h2 id=\"about-subtext\" class=\"subtitle visibility-hidden is-size-4 is-size-5-mobile\">{{'ABOUT.INTRO_TEXT' | translate}}</h2>\n </div>\n\n </div>\n\n</section>\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.sass']\n})\nexport class HeaderComponent implements OnInit {\n\n public language = 'en-EN';\n public heading = 'About me';\n private headingKey = 'HEADER.ABOUT';\n private darkMode = false;\n public darkModeButtonKey = 'HEADER.DARKMODE';\n\n constructor(private translate: TranslateService) {\n window.onscroll = () => {\n this.setScrollIndicator();\n };\n }\n\n ngOnInit() {\n this.addAnimationClasses();\n this.setMarginToContent();\n }\n\n setScrollIndicator() {\n const winScroll = document.body.scrollTop || document.documentElement.scrollTop;\n const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;\n const scrolled = (winScroll / height) * 100;\n document.getElementById('scroll-indicator-bar').style.width = scrolled + '%';\n }\n\n\n setMarginToContent(): void {\n const headerHeight = document.getElementById('header-brand').clientHeight;\n localStorage.setItem('headerHeight', headerHeight.toString());\n const heightString = headerHeight.toString() + 'px';\n const headerSection = document.getElementById('header-section');\n headerSection.style.marginBottom = heightString;\n }\n\n addAnimationClasses() {\n const innerNav = document.getElementById('inner-navigation');\n innerNav.parentElement.style.overflow = 'hidden';\n innerNav.classList.add('animate__animated', 'animate__fadeInDown');\n }\n\n toggleDarkMode() {\n\n const buttonImage = document.getElementById('darkmode-button-image') as HTMLImageElement;\n\n if (!this.darkMode) {\n buttonImage.src = '../../../assets/icons/sun.svg';\n this.darkModeButtonKey = 'HEADER.LIGHTMODE';\n } else {\n buttonImage.src = '../../../assets/icons/moon.svg';\n this.darkModeButtonKey = 'HEADER.DARKMODE';\n }\n\n this.darkMode = !this.darkMode;\n // console.log('darkMode: ', this.darkMode);\n }\n\n // changes the applications language\n changeLanguage(lang: string) {\n this.language = lang;\n this.translate.use(this.language);\n this.heading = this.translate.instant(this.headingKey);\n }\n\n // changes the navbars heading\n assignHeading(heading: string, section: string) {\n this.headingKey = heading;\n this.heading = this.translate.instant(this.headingKey);\n this.navigateToSection(section);\n }\n\n navigateToSection(section: string) {\n\n window.location.hash = section;\n\n // TODO: we might need this later for the CV presentation feature\n // if (section.length > 0) {\n // if (this.router.url === '/cv') {\n // this.router.navigateByUrl('/abou´').then(() => {\n // // window.location.href = '/home#' + section;\n // // window.location.hash = '';\n // window.location.hash = section;\n // });\n // } else {\n // // window.location.href = '/home#' + section;\n // // window.location.hash = '';\n // window.location.hash = section;\n // }\n // }\n\n\n // close the menu if open\n const burger = document.getElementById('burgerMenu');\n burger.click();\n\n }\n\n toggleActive() {\n const $burger = document.getElementById('burgerMenu');\n const $target = document.getElementById($burger.dataset.target);\n\n if ($burger.classList.contains('is-active')) {\n $burger.classList.remove('is-active');\n } else {\n $burger.classList.add('is-active');\n }\n\n if ($target.classList.contains('is-active')) {\n $target.classList.remove('is-active');\n } else {\n $target.classList.add('is-active');\n }\n }\n\n}\n","<!-- NAVIGATION-->\n\n<section id=\"header-section\" class=\"is-flex is-justify-content-space-evenly is-align-items-center\">\n\n <nav class=\"navbar is-flex is-flex-direction-column is-fixed-top is-transparent\" role=\"navigation\" aria-label=\"main navigation\" id=\"navigation\">\n\n <div class=\"is-flex is-justify-content-center is-align-items-center adjust-flex-direction\" id=\"inner-navigation\">\n\n <div id=\"header-brand\" class=\"navbar-brand is-flex is-justify-content-center is-align-items-center brand-container\">\n\n <div class=\"is-flex is-flex-direction-row is-align-items-center\" style=\"width: 100%\">\n <img class=\"findflorian-logo\" src=\"../../../assets/icons/portfolio-logo-semi-final.svg\">\n <div class=\"is-flex is-flex-direction-column\">\n <h1 class=\"toggle-text-color is-size-4-mobile\">findflorian</h1>\n </div>\n </div>\n\n <a role=\"button\" class=\"navbar-burger\" (click)=\"toggleActive()\" data-target=\"navMenu\" aria-label=\"menu\" aria-expanded=\"false\" id=\"burgerMenu\">\n <span class=\"toggle-text-color\" aria-hidden=\"true\"></span>\n <span class=\"toggle-text-color\" aria-hidden=\"true\"></span>\n <span class=\"toggle-text-color\" aria-hidden=\"true\"></span>\n </a>\n\n </div>\n\n <div class=\"navbar-menu navigation-menu is-full-mobile\" id=\"navMenu\">\n <div class=\"navbar-start nav-start\">\n\n <div class=\"is-flex has-text-centered adjust-flex-direction\">\n <a (click)=\"assignHeading('HEADER.ABOUT', 'about')\" class=\"navbar-item nav-item toggle-text-color\">\n {{'HEADER.ABOUT' | translate}}\n </a>\n <a (click)=\"assignHeading('HEADER.EXPERIENCE', 'experience')\" class=\"navbar-item nav-item toggle-text-color\">\n {{'HEADER.EXPERIENCE' | translate}}\n </a>\n <a (click)=\"assignHeading('HEADER.PROJECTS', 'projects')\" class=\"navbar-item nav-item toggle-text-color\">\n {{'HEADER.PROJECTS' | translate}}\n </a>\n <a (click)=\"assignHeading('HEADER.CONTACT', 'contact')\" class=\"navbar-item nav-item toggle-text-color\">\n {{'HEADER.CONTACT' | translate}}\n </a>\n </div>\n\n </div>\n\n <div class=\"navbar-end nav-end\" style=\"width: 100%\">\n\n <div class=\"is-flex is-flex-direction-row is-align-items-stretch\">\n\n <div class=\"is-flex is-justify-content-space-evenly is-align-items-center\">\n <img src=\"../../../assets/flags/united-kingdom.svg\" alt=\"united-kingdom-flag\" (click)=\"changeLanguage('en-EN')\" class=\"flag\">\n <img src=\"../../../assets/flags/germany.svg\" alt=\"german-flag\" (click)=\"changeLanguage('de-DE')\" class=\"flag\">\n\n <button id=\"darkmode-togglebutton\" class=\"darkmode-toggle-button\" (click)=\"toggleDarkMode()\">\n <div class=\"is-flex is-justify-content-space-evenly is-align-items-center\">\n <img id=\"darkmode-button-image\" class=\"button-icon\" src=\"../../../assets/icons/moon.svg\">\n <div class=\"toggle-text-color\">\n {{darkModeButtonKey | translate}}\n </div>\n </div>\n </button>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class=\"scroll-indicator-container\">\n <div class=\"scroll-indicator\" id=\"scroll-indicator-bar\"></div>\n </div>\n\n\n </nav>\n</section>\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.sass']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<footer class=\"footer\" id=\"footer\">\n <div class=\"content has-text-centered\">\n\n <div id=\"footer-social-icons\" class=\"visibility-hidden is-flex is-flex-direction-row is-justify-content-space-evenly icon-container mb-5\">\n <object data=\"../../../assets/icons/gmail-icon.svg\" type=\"image/svg+xml\" width=\"25\" height=\"25\"></object>\n <object data=\"../../../assets/icons/instagram-icon.svg\" type=\"image/svg+xml\" width=\"25\" height=\"25\"></object>\n <object data=\"../../../assets/icons/linkedin-icon.svg\" type=\"image/svg+xml\" width=\"25\" height=\"25\"></object>\n </div>\n\n <p id=\"footer-created-text\" class=\"is-size-5 toggle-text-color visibility-hidden\">\n Created by Florian Wieland. © 2021\n </p>\n </div>\n</footer>\n","// tslint:disable:max-line-length\nexport const appTranslations = {\n de: {\n HEADER: {\n HOME: 'Home',\n ABOUT: 'Über mich',\n EXPERIENCE: 'Erfahrung & Skillset',\n PROJECTS: 'Projekte',\n CONTACT: 'Kontakt',\n DARKMODE: 'Dunkel',\n LIGHTMODE: 'Hell',\n },\n ABOUT: {\n INTRO_TEXT: 'Ich bin Software Entwickler aus der Nähe von Stuttgart. Am liebsten baue ich Software die meinen Kunden das Leben erleichtert.\\n' +\n 'Obwohl ich großes Interesse für den Gesamten Entwicklungsprozess mitbringe, liegt mein Hauptfokus auf Front-End Entwicklung und der Bereitstellung einer intuitiven, dynamischen User Experience.',\n INTRO_TITLE: 'Hey, ich bin',\n INTRO_SUBTITLE: 'Semi inspirational, halbwahre Aussage darüber wer ich bin',\n },\n EXPERIENCE: {\n PREVIOUS_EXPERIENCE_TEXT: 'In den vergangenen Jahren habe ich an einer Vielzahl von Projekten gearbeitet, sowohl in der In-House Produktentwicklung, als auch für verschiedene namhafte Kunden im Automotive Sektor.\\n' +\n 'Diese Projekte reichen von Angular und React Single Page Applikationen für Webbrowser, über Desktop Anwendungen unter Verwendung von Electron.js, bis hin zu Hybrid Mobile Apps für iOS und Android, welche mit Frameworks wie Ionic oder Flutter umgesetzt wurden.\\n' +\n 'Ich lerne gerne Neues und versuche mein Wissen durch frische Technologien und Herangehensweisen zu erweitern.',\n PREVIOUS_EXPERIENCE: 'Bisherige Erfahrungen & Kunden',\n },\n PROJECTS : {\n PROJECTS: 'Projekte',\n PROJECTS_TEXT: 'Ich verbringe den Großteil meiner Zeit mit firmeninternen Projekten, darüber hinaus arbeite ich gerne an folgendem:'\n },\n CONTACT: {\n PROPOSAL: 'Auf der Suche nach jemandem der Ihrer Idee Leben einhaucht?',\n PROPOSAL_TEXT: 'Egal ob Sie eine einfache Landing Page oder eine vollumfängliche Web- oder Mobileapplikation realisieren wollen, ich freue mich immer mit Leuten ins Gespräch zu kommen die eine Vision haben.',\n }\n },\n en: {\n HEADER: {\n HOME: 'Home',\n ABOUT: 'About me',\n EXPERIENCE: 'Experience & Skillset',\n PROJECTS: 'Projects',\n CONTACT: 'Contact',\n DARKMODE: 'Dark',\n LIGHTMODE: 'Light',\n },\n ABOUT: {\n INTRO_TEXT: 'I\\'m a Software Developer based in Stuttgart, Germany. I am passionate about building great Software Products, that are tailored to customer needs.\\n' +\n 'While I\\'m trying to build up a well rounded skillset in full stack development, my main focus lies on front-end and web technologies to provide intuitive, dynamic user experiences.',\n INTRO_TITLE: 'Hey, I\\'m',\n INTRO_SUBTITLE: 'Inspirational, semi true fact about me',\n },\n EXPERIENCE: {\n PREVIOUS_EXPERIENCE_TEXT: 'In recent years I\\'ve been working on a variety of projects, either in-house products or for different large scale business customers, mainly in the automotive sector.\\n' +\n 'These projects range from Angular and React based single page applications for the web, over desktop applications implemented with the electron.js framework, to Hybrid Mobile Apps for iOS and Android realized with Ionic or Flutter.\\n' +\n 'I am always keen to expand my know how and work with new technologies and approaches.',\n PREVIOUS_EXPERIENCE: 'Previous Experience & Customers',\n },\n PROJECTS : {\n PROJECTS: 'Projects',\n PROJECTS_TEXT: 'I spend most of my time on company projects, but here\\'s some stuff I\\'ve worked on, while not on my dayjob:'\n },\n CONTACT: {\n PROPOSAL: 'Looking for someone to bring your idea to life?',\n PROPOSAL_TEXT: 'Weather you are looking to build a simple landing page, a fully fledged web or mobile application, or just want to say hi - I\\'m always keen to get in touch with people that have a vision.',\n }\n }\n};\n","import { AfterViewInit, Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { appTranslations } from './app.translations';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.sass']\n})\nexport class AppComponent implements OnInit, AfterViewInit {\n elementsToBeAnimated = [];\n\n /**\n * stores application language\n * defaults to english\n */\n public language = 'en-EN';\n public isDarkMode = false;\n\n constructor(private translate: TranslateService) {\n\n /**\n * adjust the viewport when a navigation happens, to account for header size\n */\n window.addEventListener('hashchange', (event) => {\n const hash = window.location.hash.substring(1);\n if (!hash) {\n return;\n }\n const offset = parseInt(localStorage.getItem('headerHeight'), 10);\n const el = document.getElementById(hash);\n const currentOffset = el.offsetTop;\n scroll({\n top: currentOffset - offset,\n behavior: 'smooth'\n });\n this.triggerAnimations();\n });\n\n this.initializeTranslations();\n }\n\n getElementsToBeAnimated() {\n // tslint:disable:max-line-length\n this.elementsToBeAnimated = [\n // About Component Elements\n { element: document.getElementById('about-title'), animations: ['animate__animated', 'animate__fadeInLeft', 'animate__delay-1s'] },\n { element: document.getElementById('about-subtitle'), animations: ['animate__animated', 'animate__fadeInRight', 'animate__delay-1s'] },\n { element: document.getElementById('about-subtext'), animations: ['animate__animated', 'animate__fadeInRight'] },\n { element: document.getElementById('profile-image'), animations: ['animate__animated', 'animate__zoomIn', 'animate__delay-1s'] },\n { element: document.getElementById('arrow-down-icon'), animations: ['animate__animated', 'animate__heartBeat', 'animate__delay-1s', 'animate__infinite', 'animate__slower'] },\n\n // Experience Component Elements\n { element: document.getElementById('experience-title'), animations: ['animate__animated', 'animate__fadeInRight'] },\n { element: document.getElementById('experience-subtitle'), animations: ['animate__animated', 'animate__fadeInLeft'] },\n // { element: document.getElementById('experience-tab-switch'), animations: ['animate__animated', 'animate__fadeInRight'] },\n // { element: document.getElementById('experience-tab-card'), animations: ['animate__animated', 'animate__fadeInUp'] },\n { element: document.getElementById('experience-tab-container'), animations: ['animate__animated', 'animate__fadeInUp'] },\n\n // Projects Component Elements\n { element: document.getElementById('projects-title'), animations: ['animate__animated', 'animate__fadeInRight'] },\n { element: document.getElementById('projects-subtitle'), animations: ['animate__animated', 'animate__fadeInLeft'] },\n { element: document.getElementById('panel-entity-1'), animations: ['animate__animated', 'animate__fadeInLeft'] },\n { element: document.getElementById('panel-entity-2'), animations: ['animate__animated', 'animate__fadeInUp'] },\n { element: document.getElementById('panel-entity-3'), animations: ['animate__animated', 'animate__fadeInRight'] },\n\n // Contact Component Elements\n { element: document.getElementById('contact-title'), animations: ['animate__animated', 'animate__fadeInRight'] },\n { element: document.getElementById('contact-subtitle'), animations: ['animate__animated', 'animate__fadeInLeft'] },\n\n // Footer Component Elements\n { element: document.getElementById('footer-created-text'), animations: ['animate__animated', 'animate__fadeInDown'] },\n { element: document.getElementById('footer-social-icons'), animations: ['animate__animated', 'animate__fadeInUp'] },\n ];\n\n // console.log('elementsToBeAnimated: ', this.elementsToBeAnimated);\n }\n\n /**\n * init\n */\n public ngOnInit() {\n // setTimeout(() => {\n // document.body.style.transform = 'scale(1)';\n // }, 1000);\n // TODO: implement this later\n // gets users preferred mode\n // const isOsDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n // console.log('isOsDark: ', isOsDark);\n\n this.initializeDarkModeSwitch();\n }\n\n public ngAfterViewInit() {\n this.getElementsToBeAnimated();\n this.triggerAnimations();\n this.initializeScrollEventHandler();\n }\n\n /**\n * checks if given html element is visible inside the current viewport\n */\n isElementInViewport(el) {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\n );\n }\n\n initializeScrollEventHandler() {\n window.addEventListener('scroll', (event) => {\n requestAnimationFrame(() => {\n this.triggerAnimations();\n });\n }, { passive: true });\n }\n\n triggerAnimations() {\n const animationfunction = () => {\n this.elementsToBeAnimated.forEach((element) => {\n if (window.getComputedStyle(element.element).visibility === 'hidden') {\n if (this.isElementInViewport(element.element)) {\n this.addAnimationClasses(element);\n }\n }\n });\n };\n animationfunction();\n }\n\n /**\n * adds animation classes to the template elements\n */\n addAnimationClasses(el: { element: any, animations: string[] }) {\n el.element.parentElement.style.overflow = 'hidden';\n el.animations.forEach((animation) => {\n el.element.classList.add(animation);\n });\n el.element.style.visibility = 'visible';\n }\n\n /**\n * Initialize the Darkmode Switch button event listener\n */\n initializeDarkModeSwitch() {\n document.getElementById('darkmode-togglebutton').addEventListener('click', () => {\n if (!this.isDarkMode) {\n document.body.classList.replace('light', 'dark');\n } else {\n document.body.classList.replace('dark', 'light');\n }\n this.isDarkMode = !this.isDarkMode;\n });\n }\n\n /**\n * Initializes Translations\n */\n initializeTranslations() {\n // get users browser language\n const browserLang = navigator.language;\n // initialize translations\n this.translate.setTranslation('en-EN', appTranslations.en);\n this.translate.setTranslation('de-DE', appTranslations.de);\n\n // set language according to browser language\n if (browserLang === 'de-DE') {\n this.translate.setDefaultLang('de-DE');\n this.language = 'de-DE';\n } else if (browserLang === ('en-EN' || 'en-GB')) {\n this.translate.setDefaultLang('en-EN');\n this.language = 'en-EN';\n } else {\n this.translate.setDefaultLang('en-EN');\n this.language = 'en-EN';\n }\n this.translate.use(this.language);\n }\n}\n","<app-header></app-header>\n\n<app-about id=\"about\" (triggerAnimationEventEmitter)=\"triggerAnimations()\"></app-about>\n<app-experience id=\"experience\"></app-experience>\n<app-projects id=\"projects\"></app-projects>\n<app-contact id=\"contact\"></app-contact>\n\n<app-footer></app-footer>\n\n\n\n<!--<router-outlet></router-outlet>-->\n","import { CommonModule } from '@angular/common';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {NgModule} from '@angular/core';\nimport {AppRoutingModule} from './app-routing.module';\nimport {AppComponent} from './app.component';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {HttpClientModule} from '@angular/common/http';\nimport { AboutComponent } from './about/about.component';\nimport { ContactComponent } from './contact/contact.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { HeaderComponent } from './core/header/header.component';\nimport { FooterComponent } from './core/footer/footer.component';\nimport { ExperienceComponent } from './experience/experience.component';\nimport { ProjectsComponent } from './projects/projects.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n AboutComponent,\n ContactComponent,\n HeaderComponent,\n FooterComponent,\n ExperienceComponent,\n ProjectsComponent\n ],\n imports: [\n BrowserModule,\n CommonModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n HttpClientModule,\n AppRoutingModule,\n TranslateModule.forRoot({\n defaultLanguage: 'en-EN'\n })\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-contact',\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.sass']\n})\nexport class ContactComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<section class=\"section\" id=\"contact\">\n\n <div class=\"block\">\n <h1 id=\"contact-title\" class=\"title visibility-hidden\">{{'CONTACT.PROPOSAL' | translate}}</h1>\n </div>\n\n <div class=\"block\">\n <h2 id=\"contact-subtitle\" class=\"subtitle visibility-hidden\">{{'CONTACT.PROPOSAL_TEXT' | translate}}</h2>\n </div>\n\n</section>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nconst routes: Routes = [\n {\n path: '',\n redirectTo: '',\n pathMatch: 'full'\n },\n // {\n // path: 'cv',\n // component: CVComponent\n // },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-projects',\n templateUrl: './projects.component.html',\n styleUrls: ['./projects.component.sass']\n})\nexport class ProjectsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<section class=\"section\" id=\"projects\">\n\n <div class=\"block\">\n <h1 id=\"projects-title\" class=\"title visibility-hidden\">{{'PROJECTS.PROJECTS' | translate}}</h1>\n </div>\n\n <div class=\"block\">\n <h2 id=\"projects-subtitle\" class=\"subtitle visibility-hidden\">{{'PROJECTS.PROJECTS_TEXT' | translate}}</h2>\n </div>\n\n <div id=\"panel-container\" class=\"is-flex is-justify-content-center is-align-items-center adjust-flex-direction\">\n\n<!-- <div class=\"is-flex is-justify-content-center is-align-items-center is-flex-direction-column\" style=\"width: 100%\">-->\n<!-- <div class=\"panel panel-entity visibility-hidden\" id=\"panel-entity-1\">-->\n<!-- <p class=\"panel-heading has-text-centered\">-->\n<!-- Coming Soon-->\n<!-- </p>-->\n<!-- <div class=\"panel-block is-flex is-flex-direction-column is-justify-content-center\">-->\n<!-- <img src=\"../../assets/icons/maintenance.svg\" style=\"height: 5em; width: 100%;\">-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- <button class=\"button is-rounded is-link is-outlined\">Visit Website</button>-->\n<!-- </div>-->\n\n <div class=\"panel panel-entity visibility-hidden\" id=\"panel-entity-1\">\n <p class=\"panel-heading has-text-centered\">\n Coming Soon\n </p>\n <div class=\"panel-block is-flex is-flex-direction-column is-justify-content-center\">\n <img src=\"../../assets/icons/maintenance.svg\" class=\"panel-image\">\n </div>\n </div>\n\n\n <div class=\"panel panel-entity visibility-hidden\" id=\"panel-entity-2\">\n <p class=\"panel-heading has-text-centered\">\n Coming Soon\n </p>\n <div class=\"panel-block is-justify-content-center\">\n <img src=\"../../assets/icons/maintenance.svg\" class=\"panel-image\">\n </div>\n </div>\n\n <div class=\"panel panel-entity visibility-hidden\" id=\"panel-entity-3\">\n <p class=\"panel-heading has-text-centered\">\n Coming Soon\n </p>\n <div class=\"panel-block is-justify-content-center\">\n <img src=\"../../assets/icons/maintenance.svg\" class=\"panel-image\">\n </div>\n </div>\n\n </div>\n\n\n</section>\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\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"]}