{"version":3,"file":"main.js","mappings":"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B,qBAAqB;IAAAgY,OAAA,EAArBhY,qBAAqB,CAAAiY,IAAA;IAAAC,UAAA,EAFpB;EAAM;;;;;;;;;;;;;;;;ACbpB;AACA;AACA;AAEO,MAAMW,WAAW,GAAG;EACzBC,UAAU,EAAE;CACb;AAED;;;;;;;AAOA;;;;;;;;;;;;;;;;;ACf+C;AAGF;AACY;AAEzD,IAAID,kEAAW,CAACC,UAAU,EAAE;EAC1BC,6DAAc,EAAE;;AAGlBC,sEAAA,EAAwB,CAACE,eAAe,CAAC7W,sDAAS,CAAC,CAChD8W,KAAK,CAACC,GAAG,IAAIvZ,OAAO,CAACD,KAAK,CAACwZ,GAAG,CAAC,CAAC;;;;;;;;;;ACXnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/about-me/about-me.component.ts","./src/app/components/about-me/about-me.component.html","./src/app/components/career/career-detail/career-detail.component.ts","./src/app/components/career/career-detail/career-detail.component.html","./src/app/components/career/career.component.ts","./src/app/components/career/career.component.html","./src/app/components/not-found/not-found.component.ts","./src/app/components/not-found/not-found.component.html","./src/app/components/resume/resume.component.ts","./src/app/components/resume/resume.component.html","./src/app/models/resume/PDFResumeBuilder.ts","./src/app/models/resume/Resume.ts","./src/app/models/resume/Skill.ts","./src/app/models/resume/component-renderers/main-content/DefaultTextRenderer.ts","./src/app/models/resume/component-renderers/main-content/EducationRenderer.ts","./src/app/models/resume/component-renderers/main-content/HeaderRenderer.ts","./src/app/models/resume/component-renderers/main-content/ProfessionalExperienceRenderer.ts","./src/app/models/resume/component-renderers/main-content/SubHeaderTagRenderer.ts","./src/app/models/resume/component-renderers/main-content/SummaryRenderer.ts","./src/app/models/resume/component-renderers/main-content/TitleWithPeriodRenderer.ts","./src/app/models/resume/component-renderers/side-bar/AchievementRenderer.ts","./src/app/models/resume/component-renderers/side-bar/LanguageRenderer.ts","./src/app/models/resume/component-renderers/side-bar/ProfileImageRenderer.ts","./src/app/models/resume/component-renderers/side-bar/SkillRenderer.ts","./src/app/models/resume/component-renderers/utils/ResumeHeader.ts","./src/app/models/resume/component-renderers/utils/SubHeaderTag.ts","./src/app/models/resume/component-renderers/utils/TitleWithPeriod.ts","./src/app/models/site-content/Career.ts","./src/app/models/site-content/Education.ts","./src/app/models/site-content/PersonalInformation.ts","./src/app/models/site-content/Position.ts","./src/app/models/site-content/Project.ts","./src/app/models/site-content/TechnicalKnowledge.ts","./src/app/models/site-content/WebsiteContent.ts","./src/app/models/utils/Dimensions.ts","./src/app/models/utils/PDFConstants.ts","./src/app/models/utils/PDFDocument.ts","./src/app/models/utils/PDFSideBarUtils.ts","./src/app/models/utils/PDFUtils.ts","./src/app/models/utils/TitleAndDescriptionPair.ts","./src/app/service/resume.service.ts","./src/app/service/web-site-content.service.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AboutMeComponent } from './components/about-me/about-me.component';\nimport { CareerDetailComponent } from './components/career/career-detail/career-detail.component';\nimport { CareerComponent } from './components/career/career.component';\nimport { NotFoundComponent } from './components/not-found/not-found.component';\nimport { ResumeComponent } from './components/resume/resume.component';\n\nconst routes: Routes = [\n { path: 'about', component: AboutMeComponent },\n { path: 'career', component: CareerComponent },\n { path: 'career/:index', component: CareerDetailComponent },\n { path: 'page-not-found', component: NotFoundComponent}, \n { path: 'resume', component: ResumeComponent },\n { path: '', redirectTo: '/about', pathMatch: 'full' },\n { path: '**',redirectTo: '/page-not-found', pathMatch: 'full'}\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, ViewChild } from '@angular/core';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { WebsiteContent } from './models/site-content/WebsiteContent';\nimport { WebSiteContentService } from './service/web-site-content.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.sass']\n})\nexport class AppComponent { \n @ViewChild(\"drawer\") drawer: MatDrawer;\n websiteContent: WebsiteContent;\n\n constructor(private websiteContentService: WebSiteContentService) { }\n\n ngAfterViewInit(): void { \n }\n\n ngOnInit(): void {\n\n this.websiteContentService.get().subscribe(\n (content: WebsiteContent) => { \n this.websiteContent = content; \n },\n (error) => {\n console.error(\"Error while getting website content: \", error);\n }\n ); \n }\n}\n","<mat-drawer-container class=\"site-container\" hasBackdrop=\"true\">\n <mat-drawer #drawer class=\"sidenav\" mode=\"over\">\n <div class=\"row\">\n <div class=\"col s12 center-align\">\n <img src=\"assets/img/profile-picture.jpeg\" alt=\"\" class=\"responsive-img circle\">\n <span class=\"col s12 name\">{{websiteContent?.personalInformation?.name}}</span>\n <span class=\"col s12\">\n <a href=\"mailto:{{websiteContent?.personalInformation?.email}}\">\n {{websiteContent?.personalInformation?.email}}\n </a>\n </span>\n </div>\n <div class=\"col s12\">\n <hr>\n </div>\n <div class=\"col s12 sidenav-menu\">\n <a class=\"sidenav-button\" routerLink=\"/about\" [routerLinkActive]=\"['is-active']\" (click)=\"drawer.close()\">About me </a>\n <a class=\"sidenav-button\" routerLink=\"/career\" [routerLinkActive]=\"['is-active']\" (click)=\"drawer.close()\">Career</a> \n <a class=\"sidenav-button\" routerLink=\"/resume\" [routerLinkActive]=\"['is-active']\" (click)=\"drawer.close()\">Resume</a> \n </div> \n </div>\n </mat-drawer>\n <div class=\"row\">\n <div class=\"col s12 m2 l2\">\n <a class=\"black-text\">\n <i class=\"medium material-icons\" (click)=\"drawer.toggle()\">\n menu\n </i>\n </a>\n </div>\n <div class=\"col s12 m9 l9 content-container\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"col s12 m1 l1 hide-on-small-and-down\"></div>\n </div>\n</mat-drawer-container>","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { MatSidenavModule } from '@angular/material/sidenav';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AboutMeComponent } from './components/about-me/about-me.component';\nimport { CareerComponent } from './components/career/career.component';\nimport { NotFoundComponent } from './components/not-found/not-found.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CareerDetailComponent } from './components/career/career-detail/career-detail.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n AboutMeComponent,\n CareerComponent, NotFoundComponent, CareerDetailComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n MatSidenavModule,\n BrowserAnimationsModule,\n HttpClientModule\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component, OnInit } from '@angular/core';\nimport * as moment from 'moment';\nimport { Education } from 'src/app/models/site-content/Education';\nimport { WebsiteContent } from 'src/app/models/site-content/WebsiteContent';\nimport { WebSiteContentService } from 'src/app/service/web-site-content.service';\n\n@Component({\n selector: 'app-about-me',\n templateUrl: './about-me.component.html',\n styleUrls: ['./about-me.component.sass']\n})\nexport class AboutMeComponent implements OnInit { \n dateOfBirth: string;\n firstName: string;\n myAge: number; \n websiteContent: WebsiteContent;\n\n constructor(private websiteContentService: WebSiteContentService) { }\n\n ngOnInit(): void {\n\n this.websiteContentService.get().subscribe(\n (content: WebsiteContent) => { \n this.websiteContent = content; \n this.dateOfBirth = content.personalInformation.dateOfBirth.format(\"MMM Do, yyyy\");\n this.myAge = moment().diff(content.personalInformation.dateOfBirth, 'years');\n this.firstName = content.personalInformation.name.split(' ')[0];\n },\n (error) => {\n console.error(\"Error while getting website content: \", error);\n }\n ); \n }\n\n public getFormattedEducationPeriod(education: Education): string {\n const shouldFormat: boolean = education.startDate.isValid() && education.endDate.isValid();\n\n return shouldFormat ? education.startDate.format('YYYY') + ' - ' + education.endDate.format('YYYY') : \"\";\n\n }\n}\n","<div class=\"hide-on-med-and-up\">\n <div class=\"col s12 m3 l3 center-align\">\n <img src=\"assets/img/profile-picture.jpeg\" alt=\"\" class=\"responsive-img circle\">\n </div>\n <div class=\"col s12 center-align\">\n <div class=\"personal-information\">\n <h1>{{websiteContent?.personalInformation?.name}}</h1>\n <ul>\n <li>Age: {{myAge}} ({{dateOfBirth}})</li>\n <li>Nationality: {{websiteContent?.personalInformation?.nationality}}</li>\n <li>\n LinkedIn: \n <a [href]=\"websiteContent?.personalInformation?.linkedIn\" target=\"_blank\">\n {{websiteContent?.personalInformation?.linkedIn}}\n </a>\n </li>\n <li>\n GitHub: \n <a [href]=\"websiteContent?.personalInformation?.github\" target=\"_blank\">\n {{websiteContent?.personalInformation?.github}}\n </a>\n </li>\n <li>\n Email:\n <a href=\"mailto:{{websiteContent?.personalInformation?.email}}\">\n {{websiteContent?.personalInformation?.email}}\n </a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<div class=\"hide-on-small-only\">\n <div class=\"col s12 header\">\n <img src=\"assets/img/profile-picture.jpeg\" alt=\"\" class=\"responsive-img circle\">\n <div class=\"personal-information\">\n <h1>{{websiteContent?.personalInformation?.name}}</h1>\n <ul>\n <li>Age: {{myAge}} ({{dateOfBirth}})</li>\n <li>Nationality: {{websiteContent?.personalInformation?.nationality}}</li>\n <li>\n LinkedIn: \n <a [href]=\"websiteContent?.personalInformation?.linkedIn\" target=\"_blank\">\n {{websiteContent?.personalInformation?.linkedIn}}\n </a>\n </li>\n <li>\n GitHub: \n <a [href]=\"websiteContent?.personalInformation?.github\" target=\"_blank\">\n {{websiteContent?.personalInformation?.github}}\n </a>\n </li>\n <li>\n Email:\n <a href=\"mailto:{{websiteContent?.personalInformation?.email}}\">\n {{websiteContent?.personalInformation?.email}}\n </a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<div class=\"col s12 section\">\n <h1>\n Hey, I'm {{firstName}}, welcome to my website!\n </h1>\n {{websiteContent?.personalInformation?.biography}}\n</div>\n\n<div class=\"col s12 section\">\n <h1>Personal interests</h1>\n Here's a list of the kind of stuff I usually go to for fun\n <ul>\n <li *ngFor=\"let interest of websiteContent?.personalInterests\">{{interest}}</li>\n </ul>\n</div>\n\n<div class=\"col s12 section\">\n <h1>Education</h1>\n <div class=\"col s12 m12 l6 portfolio-item\" *ngFor=\"let education of websiteContent?.education\"> \n <div class=\"col s12 m3 l3\" style=\"padding:0;\">\n <img [src]=\"education.imgSrc\">\n </div>\n <div class=\"col s12 m9 l9 description\">\n <h1>{{education.name}}</h1> \n <ul>\n <li>{{getFormattedEducationPeriod(education)}}</li>\n <li>{{education.description}}</li>\n </ul>\n </div> \n </div>\n</div>\n\n<div class=\"col s12 section\">\n <h1>Some technical stuff I happen to know...</h1>\n <div class=\"col s12 m12 l6 portfolio-item\" *ngFor=\"let technicalKnowledge of websiteContent?.technicalKnowledge\"> \n <div class=\"col s12 m3 l3\" style=\"padding:0;\">\n <img [src]=\"technicalKnowledge.emblemSrc\">\n </div>\n <div class=\"col s12 m9 l9 description\">\n <h1>{{technicalKnowledge.title}}</h1>\n <ul>\n <li *ngFor=\"let description of technicalKnowledge.description\" [innerHTML]=\"description\"></li>\n </ul>\n </div>\n </div>\n \n</div>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Career } from 'src/app/models/site-content/Career';\nimport { Position } from 'src/app/models/site-content/Position';\nimport { WebsiteContent } from 'src/app/models/site-content/WebsiteContent';\nimport { WebSiteContentService } from 'src/app/service/web-site-content.service';\n\n@Component({\n selector: 'app-career-detail',\n templateUrl: './career-detail.component.html',\n styleUrls: ['./career-detail.component.sass']\n})\nexport class CareerDetailComponent implements OnInit {\n \n public careerDetail: Career;\n public nextCompanyLink:string;\n public previousCompanyLink:string;\n\n constructor(private route: ActivatedRoute, private router: Router, private websiteContentService: WebSiteContentService) { }\n\n ngOnInit(): void {\n const currentCompanyIndexString: string = this.route.snapshot.paramMap.get('index')\n const currentCompanyIndex: number = parseInt(currentCompanyIndexString); \n const nextCompanyIndex = currentCompanyIndex + 1;\n const previousCompanyIndex = currentCompanyIndex - 1;\n\n this.websiteContentService.get().subscribe(\n (content: WebsiteContent) => {\n this.careerDetail = content.careerInformation[currentCompanyIndex]; \n this.nextCompanyLink = this.getCompanyLinkByIndex(content, nextCompanyIndex);\n this.previousCompanyLink = this.getCompanyLinkByIndex(content, previousCompanyIndex);\n\n if (!this.careerDetail) { \n this.router.navigate(['page-not-found']) \n } \n },\n (error) => {\n console.error(\"Error while getting website content: \", error);\n }\n );\n }\n\n private getCompanyLinkByIndex(content: WebsiteContent, nextCompanyIndex: number): string {\n return content.careerInformation[nextCompanyIndex] ? '/career/' + (nextCompanyIndex) : undefined;\n }\n\n public getFormattedPositionPeriod(position: Position): string {\n const shouldFormat: boolean = position.startDate.isValid() && position.endDate.isValid();\n return shouldFormat ? '(' + position.startDate.format('MMM/YYYY') + ' to ' + position.endDate.format('MMM/YYYY') + ')' : ''; \n }\n\n}\n","<div class=\"col s12\">\n <img class=\"logo\" [src]=\"careerDetail?.logoSrc\" alt=\"\">\n</div>\n<div class=\"col s12 section\">\n <h1>About {{careerDetail?.company}}</h1>\n {{careerDetail?.about}}\n</div>\n\n<div class=\"col s12 section\">\n <h1>Positions occupied</h1>\n <div *ngFor=\"let position of careerDetail?.positions\">\n <div class=\"section-text\">\n <h2>{{position.title}} {{getFormattedPositionPeriod(position)}}</h2>\n {{position.description}}\n </div>\n </div>\n</div>\n\n<div class=\"col s12 section\">\n <h1>Relevant projects</h1>\n <div *ngFor=\"let project of careerDetail?.projects\">\n <div class=\"section-text\">\n <h2>{{project.title}}</h2>\n <div [innerHTML]=\"project.description\"></div>\n </div>\n </div>\n</div>\n\n<div class=\"col s12 section\">\n <h1>Main technologies used</h1>\n <img *ngFor=\"let technologySrc of careerDetail?.technologies\" [src]=\"technologySrc\" class=\"responsive-img emblem\"> \n</div>\n\n<div class=\"col s12 career-navigator\">\n <div class=\"col s4 center-align\">\n <a [href]=\"previousCompanyLink\" [hidden]=\"!previousCompanyLink\">\n Previous company\n </a>\n </div>\n <div class=\"col s4 center-align\">\n <a routerLink=\"/career\">\n Back to timeline\n </a>\n </div>\n <div class=\"col s4 center-align\">\n <a [href]=\"nextCompanyLink\" [hidden]=\"!nextCompanyLink\">\n Next company\n </a>\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { Career } from 'src/app/models/site-content/Career';\nimport { WebsiteContent } from 'src/app/models/site-content/WebsiteContent';\nimport { WebSiteContentService } from 'src/app/service/web-site-content.service';\n\n@Component({\n selector: 'app-career',\n templateUrl: './career.component.html',\n styleUrls: ['./career.component.sass']\n})\nexport class CareerComponent implements OnInit {\n\n websiteContent: WebsiteContent;\n\n constructor(private websiteContentService: WebSiteContentService) { }\n\n ngOnInit(): void {\n this.websiteContentService.get().subscribe(\n (content: WebsiteContent) => { \n this.websiteContent = content;\n },\n (error) => {\n console.error(\"Error while getting website content: \", error);\n }\n );\n }\n\n getFormattedCareerPeriod(career: Career): string {\n return career.endDate.isValid() ? '(' + career.startDate?.format(\"YYYY\") + ' - ' + career.endDate?.format(\"YYYY\") + ')' : '(Current)';\n }\n\n}\n","<div class=\"col s12 hide-on-small-only margin-top\"></div>\n<div class=\"col s12 center-align\"> \n <h1>Here's a cool timeline of my career, click stuff to get more details :)</h1>\n <div class=\"col s12 m6 l3 timeline-item\" *ngFor=\"let career of websiteContent?.careerInformation; index as i\">\n <a routerLink=\"/career/{{i}}\">\n <img class=\"icon responsive-img\" [src]=\"career.iconSrc\">\n <br>\n {{getFormattedCareerPeriod(career)}} \n <br>\n {{career.company}}\n </a>\n </div> \n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.sass']\n})\nexport class NotFoundComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>not-found works!</p>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { PDFResumeBuilder } from 'src/app/models/resume/PDFResumeBuilder';\nimport { ResumeService } from 'src/app/service/resume.service';\n\n@Component({\n selector: 'app-resume',\n standalone: true,\n imports: [\n CommonModule\n ],\n templateUrl: './resume.component.html',\n styleUrl: './resume.component.sass'\n})\nexport class ResumeComponent { \n\n public resumeUrl: SafeResourceUrl;\n public localPdfUrl: string;\n \n constructor(private resumeService: ResumeService, private sanitizer: DomSanitizer) {\n resumeService.get().subscribe(\n resume => {\n const blob: Blob = new PDFResumeBuilder(resume)\n .withSideBar()\n .withHeader()\n .withSummary()\n .withProfessionalExperience()\n .withEducation()\n .build();\n\n this.localPdfUrl = URL.createObjectURL(blob); \n\n this.resumeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.localPdfUrl);\n }, \n error=> {\n console.log('Error while getting resume information: ', error);\n }\n );\n } \n\n public downloadPDF_OnClick(): void { \n var a = document.createElement(\"a\");\n document.body.appendChild(a); \n a.href = this.localPdfUrl;\n a.download = 'resume.pdf';\n a.click();\n \n setTimeout(() => { \n document.body.removeChild(a);\n }, 0);\n }\n\n}\n","<div class=\"col s12 center-align\" *ngIf=\"resumeUrl\"> \n <div class=\"hide-on-med-and-up\">\n <h1>\n Mobile browsers don't like PDF previews :(\n </h1> \n <br/>\n <h2>\n But don't worry, I got you! Click <a (click)=\"downloadPDF_OnClick()\"> here</a> to download the resume.\n </h2>\n </div>\n \n <div class=\"hide-on-small-only\">\n <iframe [src]=\"resumeUrl\" type=\"application/pdf\" width=\"100%\" style=\"height: 100vh;\"></iframe> \n \n <br/>\n <h1>\n Problems with the PDF preview?\n </h1> \n <br/>\n <h2>\n Don't worry, I got you! Click <a (click)=\"downloadPDF_OnClick()\"> here</a> to download the resume.\n </h2>\n </div>\n</div>\n","import { jsPDF } from \"jspdf\";\nimport { Resume } from \"./Resume\";\nimport { ProfileImageRenderer } from \"./component-renderers/side-bar/ProfileImageRenderer\";\nimport { PDFDocument } from \"../utils/PDFDocument\";\nimport { AchievementRenderer } from \"./component-renderers/side-bar/AchievementRenderer\";\nimport { PDFUtils } from \"../utils/PDFUtils\";\nimport { SkillRenderer } from \"./component-renderers/side-bar/SkillRenderer\";\nimport { LanguageRenderer } from \"./component-renderers/side-bar/LanguageRenderer\";\nimport { HeaderRenderer } from \"./component-renderers/main-content/HeaderRenderer\";\nimport { SummaryRenderer } from \"./component-renderers/main-content/SummaryRenderer\";\nimport { ProfessionalExperienceRenderer } from \"./component-renderers/main-content/ProfessionalExperienceRenderer\";\nimport { EducationRenderer } from \"./component-renderers/main-content/EducationRenderer\";\nimport { ResumeHeader } from \"./component-renderers/utils/ResumeHeader\";\n\nexport class PDFResumeBuilder {\n private resume: Resume;\n private doc: jsPDF;\n private cursorXCoordinate: number;\n private cursorYCoordinate: number;\n\n private pdf: PDFDocument;\n private utils: PDFUtils;\n\n constructor(resume: Resume) {\n this.resume = resume;\n this.doc = new jsPDF({ unit: 'px' });\n this.cursorXCoordinate = 0;\n this.cursorYCoordinate = 0;\n\n this.pdf = new PDFDocument(this.doc, this.cursorXCoordinate, this.cursorYCoordinate);\n this.utils = new PDFUtils(this.pdf);\n };\n\n public withSideBar(): PDFResumeBuilder {\n this.utils.renderSideBarBackground();\n this.utils.renderSidebarFirstPageShadow();\n\n this.utils.renderSimpleComponent(\n new ProfileImageRenderer(this.pdf, this.utils),\n `../../${this.resume.personalInformation.profilePictureSrc}` \n );\n\n this.utils.sideBar.renderSection(\n 'ACHIEVEMENTS',\n new AchievementRenderer(this.pdf, this.utils),\n this.resume.achievements \n );\n\n this.utils.sideBar.renderSection(\n 'PROFESSIONAL EXPERTISE',\n new SkillRenderer(this.pdf, this.utils),\n this.resume.skills \n );\n\n this.utils.sideBar.renderSection(\n 'LANGUAGES',\n new LanguageRenderer(this.pdf, this.utils),\n this.resume.languages \n );\n\n return this;\n }\n\n public withHeader(): PDFResumeBuilder {\n const header: ResumeHeader = new ResumeHeader(this.resume.personalInformation, this.resume.position);\n\n this.utils.renderSimpleComponent(\n new HeaderRenderer(this.pdf, this.utils),\n header\n )\n\n return this;\n }\n\n public withSummary(): PDFResumeBuilder {\n this.utils.renderSimpleComponent(\n new SummaryRenderer(this.pdf, this.utils),\n this.resume.summary\n );\n\n return this;\n }\n\n public withProfessionalExperience(): PDFResumeBuilder {\n this.utils.renderSection(\n 'PROFESSIONAL EXPERIENCE',\n new ProfessionalExperienceRenderer(this.pdf, this.utils),\n this.resume.career\n );\n\n return this;\n }\n\n public withEducation(): PDFResumeBuilder {\n this.utils.renderSection(\n 'EDUCATION',\n new EducationRenderer(this.pdf, this.utils),\n this.resume.education\n );\n\n return this;\n }\n\n public build(): Blob {\n return this.pdf.doc.output('blob');\n } \n}\n","import { TitleAndDescriptionPair } from \"../utils/TitleAndDescriptionPair\";\nimport { Education } from \"../site-content/Education\";\nimport { PersonalInformation } from \"../site-content/PersonalInformation\";\nimport { Skill } from \"./Skill\";\nimport { Career } from \"../site-content/Career\";\n\nexport class Resume {\n\n public personalInformation: PersonalInformation;\n public education: Education[];\n public career?: Career[];\n public summary: string;\n public achievements: TitleAndDescriptionPair[];\n public skills: Skill[];\n public languages: TitleAndDescriptionPair[];\n public position: string;\n \n public constructor(\n fields?: {\n personalInformation?: PersonalInformation,\n education?: Education[],\n career?: Career[],\n resumeData?: any \n }\n ) {\n if (fields) {\n this.personalInformation = fields.personalInformation || this.personalInformation;\n this.education = fields.education || this.education;\n this.summary = fields.resumeData.summary;\n this.achievements = fields.resumeData.achievements;\n this.skills = fields.resumeData.skills;\n this.languages = fields.resumeData.languages;\n this.position = fields.resumeData.position;\n this.career = fields.career;\n } \n }\n }\n ","export class Skill {\n public name: string;\n public level: number;\n \n public constructor(\n fields?: {\n name?: string,\n level?: number,\n }\n ) {\n if (fields) {\n this.name = fields.name || this.name;\n this.level = fields.level || this.level;\n }\n }\n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { Position } from \"src/app/models/site-content/Position\";\n\nexport class DefaultTextRenderer implements PDFComponentRenderer<string> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private text: string;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n } \n \n public setTarget(obj: string): void {\n this.text = obj;\n }\n \n public render(): void { \n this.utils.writeDefaultText(this.text);\n }\n \n public getDimensions(): Dimensions {\n const TEXT_VERTICAL_PADDING = 5;\n \n let dimensions: Dimensions = this.utils.simulateTextDimensions(this.text, 12);\n dimensions.height += TEXT_VERTICAL_PADDING;\n \n return dimensions;\n } \n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { Education } from \"src/app/models/site-content/Education\";\nimport { TitleWithPeriodRenderer } from \"./TitleWithPeriodRenderer\";\nimport { TitleWithPeriod } from \"../utils/TitleWithPeriod\";\nimport { PDFConstants } from \"src/app/models/utils/PDFConstants\";\n\nexport class EducationRenderer implements PDFComponentRenderer<Education> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private education: Education;\n private titleRenderer: TitleWithPeriodRenderer\n\n private readonly PADDING_BOTTOM = 10;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n this.titleRenderer = new TitleWithPeriodRenderer(this.pdf, this.utils);\n this.titleRenderer.setTarget(this.utils.createStubTitle());\n } \n \n public setTarget(obj: Education): void {\n this.education = obj;\n }\n \n public render(): void { \n const title: TitleWithPeriod = new TitleWithPeriod({\n title: this.education.description,\n startDate: this.education.startDate,\n endDate: this.education.endDate\n });\n\n this.titleRenderer.setTarget(title);\n this.titleRenderer.render();\n\n this.utils.writeHighlightedSubtitle(this.education.name);\n this.utils.addLineBreak(this.utils.getTextDimensions(this.education.name).height + this.PADDING_BOTTOM);\n }\n \n public getDimensions(): Dimensions { \n const subtitleHeight: number = this.utils.simulateTextDimensions(this.education.name, 14).height;\n const componentHeight: number = this.titleRenderer.getDimensions().height\n + subtitleHeight\n + this.PADDING_BOTTOM;\n\n return new Dimensions(PDFConstants.MAX_TEXT_WIDTH, componentHeight);\n } \n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { PDFConstants } from \"src/app/models/utils/PDFConstants\";\nimport { ResumeHeader } from \"../utils/ResumeHeader\";\nimport { SubHeaderTag } from \"../utils/SubHeaderTag\";\nimport { SubHeaderTagRenderer } from \"./SubHeaderTagRenderer\";\n\nexport class HeaderRenderer implements PDFComponentRenderer<ResumeHeader> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private header: ResumeHeader;\n private lineCount: number = 0;\n\n private readonly MAX_CONTENT_WIDTH = PDFConstants.PAGE_WIDTH - PDFConstants.HORIZONTAL_PADDING;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n } \n \n public setTarget(obj: ResumeHeader): void {\n\n this.header = obj;\n }\n \n public render(): void {\n this.pdf.doc.setPage(1);\n this.pdf.moveTo(PDFConstants.LINE_START, PDFConstants.VERTICAL_PADDING); \n\n this.pdf.doc.setTextColor(PDFConstants.TEXT_COLOR);\n this.utils.writeHeader(this.header.personalInformation.name.toUpperCase());\n\n this.utils.addLineBreak();\n \n this.pdf.doc.setTextColor(PDFConstants.CYAN_COLOR);\n this.utils.writeSubHeader(this.header.position);\n\n this.utils.addLineBreak();\n\n this.renderSubHeaderTags(this.header.getSubHeaderTags());\n\n this.utils.addLineBreak(PDFConstants.DEFAULT_LINE_HEIGHT * 2);\n }\n \n public getDimensions(): Dimensions {\n let nameDimensions = this.utils.simulateTextDimensions(this.header.personalInformation.name.toUpperCase(), 28);\n let positionDimensions = this.utils.simulateTextDimensions(this.header.position, 16);\n let tagsDimensions = this.getTagsDimensions();\n \n const componentHeight = nameDimensions.height \n + positionDimensions.height \n + tagsDimensions.height \n + PDFConstants.DEFAULT_LINE_HEIGHT * 4;\n \n return new Dimensions(\n this.MAX_CONTENT_WIDTH,\n componentHeight\n );\n } \n\n private getTagsDimensions(): Dimensions {\n return new Dimensions(\n this.MAX_CONTENT_WIDTH,\n this.lineCount * PDFConstants.DEFAULT_LINE_HEIGHT\n );\n }\n\n private renderSubHeaderTags(tags: SubHeaderTag[]): void { \n tags.forEach(tag => {\n let renderer: SubHeaderTagRenderer = new SubHeaderTagRenderer(this.pdf, this.utils);\n renderer.setTarget(tag);\n\n if(this.pdf.cursorXCoordinate + renderer.getDimensions().width > (this.MAX_CONTENT_WIDTH)){\n this.utils.addLineBreak();\n this.lineCount++;\n }\n\n renderer.render(); \n }); \n }\n\n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { Position } from \"src/app/models/site-content/Position\";\nimport { TitleWithPeriodRenderer } from \"./TitleWithPeriodRenderer\";\nimport { DefaultTextRenderer } from \"./DefaultTextRenderer\";\nimport { Career } from \"src/app/models/site-content/Career\";\n\nexport class ProfessionalExperienceRenderer implements PDFComponentRenderer<Career> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private career: Career;\n\n private titleRenderer: TitleWithPeriodRenderer;\n private textRenderer: DefaultTextRenderer;\n\n private readonly SUBTITLE_VERTICAL_PADDING = 2;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n\n this.titleRenderer = new TitleWithPeriodRenderer(this.pdf, this.utils); \n this.titleRenderer.setTarget(this.utils.createStubTitle());\n this.textRenderer = new DefaultTextRenderer(this.pdf, this.utils);\n this.textRenderer.setTarget('');\n } \n\n public setTarget(obj: Career): void {\n this.career = obj;\n }\n \n public render(): void {\n let title: any = {\n title: this.career.company,\n startDate: this.career.startDate,\n endDate: this.career.endDate\n }\n\n this.titleRenderer.setTarget(title);\n this.titleRenderer.render();\n \n this.career.positions.reverse().forEach((position: Position) => { \n const positionDescription = position.resumeDescription ?? position.description;\n this.textRenderer.setTarget(positionDescription);\n this.utils.handlePagination(this.getDimensions().height);\n\n this.utils.writeHighlightedSubtitle(position.title); \n this.utils.addLineBreak(this.utils.getTextDimensions(position.title).height + this.SUBTITLE_VERTICAL_PADDING);\n\n this.textRenderer.render(); \n \n this.pdf.moveTo(\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate + this.utils.getTextDimensions(positionDescription).height\n ) \n \n this.utils.addLineBreak(10);\n });\n } \n \n public getDimensions(): Dimensions { \n const titleDimensions: Dimensions = this.titleRenderer.getDimensions();\n const descriptionDimensions: Dimensions = this.textRenderer.getDimensions();\n const subtitleDimensions: Dimensions = this.utils.simulateTextDimensions('someSubtitle', 14); \n\n return new Dimensions(\n Math.max(titleDimensions.width, descriptionDimensions.width, subtitleDimensions.width),\n titleDimensions.height + descriptionDimensions.height + subtitleDimensions.height + this.SUBTITLE_VERTICAL_PADDING\n );\n } \n \n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { SubHeaderTag } from \"../utils/SubHeaderTag\";\nimport { PDFConstants } from \"src/app/models/utils/PDFConstants\";\n\nexport class SubHeaderTagRenderer implements PDFComponentRenderer<SubHeaderTag> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private tag: SubHeaderTag;\n\n private readonly ICON_SIZE: number = 7;\n private readonly ICON_MARGIN: number = 3;\n private readonly TAGS_SPACING: number = 5;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n } \n \n public setTarget(obj: SubHeaderTag): void {\n this.tag = obj;\n }\n \n public render(): void { \n this.pdf.setFontSize(13);\n this.pdf.doc.setTextColor(PDFConstants.TEXT_COLOR);\n\n const textDimensions = this.utils.getTextDimensions(this.tag.value);\n \n this.pdf.doc.addImage(\n `../../../../../assets/img/resume/${this.tag.icon}.png`,\n 'PNG',\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate - (this.ICON_SIZE - 1),\n this.ICON_SIZE,\n this.ICON_SIZE\n );\n\n this.pdf.moveTo(this.pdf.cursorXCoordinate + this.ICON_SIZE + this.ICON_MARGIN, this.pdf.cursorYCoordinate);\n this.utils.writeText(this.tag.value);\n this.pdf.moveTo(this.pdf.cursorXCoordinate + textDimensions.width + this.TAGS_SPACING, this.pdf.cursorYCoordinate);\n }\n \n public getDimensions(): Dimensions {\n const textDimensions = this.utils.getTextDimensions(this.tag.value);\n\n return new Dimensions(\n this.ICON_SIZE + this.ICON_MARGIN + textDimensions.width + this.TAGS_SPACING,\n textDimensions.height \n );\n } \n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { PDFConstants } from \"src/app/models/utils/PDFConstants\";\n\nexport class SummaryRenderer implements PDFComponentRenderer<string> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private summary: string;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n } \n \n public setTarget(obj: string): void {\n this.summary = obj;\n }\n \n public render(): void { \n this.utils.renderSectionSeparator('SUMMARY');\n\n this.utils.writeDefaultText(this.summary);\n\n this.pdf.moveTo(\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate + this.utils.getTextDimensions(this.summary).height\n ); \n\n this.utils.addLineBreak();\n }\n \n public getDimensions(): Dimensions {\n const titleHeight: number = this.utils.simulateTextDimensions(this.summary, 12).height;\n \n return new Dimensions(\n PDFConstants.SIDE_BAR.TEXT_WIDTH, \n titleHeight + PDFConstants.DEFAULT_LINE_HEIGHT\n );\n } \n}","import { Dimensions } from \"src/app/models/utils/Dimensions\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\nimport { PDFUtils } from \"src/app/models/utils/PDFUtils\";\nimport { TitleWithPeriod } from \"../utils/TitleWithPeriod\";\n\nexport class TitleWithPeriodRenderer implements PDFComponentRenderer<TitleWithPeriod> {\n private pdf: PDFDocument; \n private utils: PDFUtils;\n private titleWithPeriod: TitleWithPeriod;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils;\n } \n \n public setTarget(obj: TitleWithPeriod): void {\n this.titleWithPeriod = obj;\n }\n \n public render(): void { \n this.utils.renderTitleWithPeriodComponent(this.titleWithPeriod.title, this.titleWithPeriod.startDate, this.titleWithPeriod.endDate);\n }\n \n public getDimensions(): Dimensions { \n const TITLE_VERTICAL_PADDING = 5;\n \n let dimensions: Dimensions = this.utils.simulateTextDimensions(this.titleWithPeriod.title, 16);\n dimensions.height += TITLE_VERTICAL_PADDING;\n \n return dimensions;\n } \n}","import { Dimensions } from \"../../../utils/Dimensions\";\nimport { TitleAndDescriptionPair } from \"../../../utils/TitleAndDescriptionPair\";\nimport { PDFUtils } from \"../../../utils/PDFUtils\";\nimport { PDFSideBarUtils } from \"../../../utils/PDFSideBarUtils\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFConstants } from \"src/app/models/utils/PDFConstants\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\n\nexport class AchievementRenderer implements PDFComponentRenderer<TitleAndDescriptionPair> {\n\n public achievement: TitleAndDescriptionPair \n private utils: PDFSideBarUtils;\n private pdf: PDFDocument;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) { \n this.utils = utils.sideBar;\n this.pdf = pdf; \n } \n\n public setTarget(obj: TitleAndDescriptionPair): void {\n this.achievement = obj;\n }\n\n public render(): void {\n this.pdf.moveTo(PDFConstants.SIDE_BAR.LINE_START, this.pdf.cursorYCoordinate);\n \n this.utils.writeSubHeader(this.achievement.title);\n this.utils.addLineBreak(this.utils.getTextDimensions(this.achievement.title).height);\n this.utils.writeDefaultText(this.achievement.description);\n \n this.utils.addLineBreak(\n PDFConstants.DEFAULT_LINE_HEIGHT + this.utils.getTextDimensions(this.achievement.description).height\n ); \n }\n\n public getDimensions(): Dimensions{\n const subHeaderHeight: number = this.utils.simulateTextDimensions(this.achievement.title, 16).height;\n const textHeight: number = this.utils.simulateTextDimensions(this.achievement.description, 12).height;\n \n return new Dimensions(\n PDFConstants.SIDE_BAR.TEXT_WIDTH, \n PDFConstants.DEFAULT_LINE_HEIGHT + subHeaderHeight + textHeight\n );\n }\n}","import { Dimensions } from \"../../../utils/Dimensions\";\nimport { TitleAndDescriptionPair } from \"../../../utils/TitleAndDescriptionPair\";\nimport { PDFUtils } from \"../../../utils/PDFUtils\";\nimport { PDFSideBarUtils } from \"../../../utils/PDFSideBarUtils\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\nimport { PDFConstants } from \"src/app/models/utils/PDFConstants\";\nimport { PDFDocument } from \"src/app/models/utils/PDFDocument\";\n\nexport class LanguageRenderer implements PDFComponentRenderer<TitleAndDescriptionPair> {\n\n public language: TitleAndDescriptionPair \n private utils: PDFSideBarUtils; \n\n private formattedLanguageTitle: string;\n private pdf: PDFDocument;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) { \n this.utils = utils.sideBar;\n this.pdf = pdf; \n } \n \n public setTarget(obj: TitleAndDescriptionPair): void {\n this.language = obj;\n this.formattedLanguageTitle = `• ${this.language.title} (${this.language.description})`\n }\n\n public render(): void {\n this.pdf.moveTo(PDFConstants.SIDE_BAR.LINE_START, this.pdf.cursorYCoordinate);\n this.utils.writeSubHeader(this.formattedLanguageTitle);\n this.utils.addLineBreak(\n PDFConstants.DEFAULT_LINE_HEIGHT \n + this.utils.getTextDimensions(this.formattedLanguageTitle).height\n );\n }\n\n public getDimensions(): Dimensions{ \n return new Dimensions(\n PDFConstants.SIDE_BAR.TEXT_WIDTH, \n PDFConstants.DEFAULT_LINE_HEIGHT \n + this.utils.getTextDimensions(this.formattedLanguageTitle).height\n ); \n }\n}","import { Dimensions } from \"../../../utils/Dimensions\";\nimport { PDFConstants } from \"../../../utils/PDFConstants\";\nimport { PDFSideBarUtils } from \"../../../utils/PDFSideBarUtils\";\nimport { PDFDocument } from \"../../../utils/PDFDocument\";\nimport { PDFUtils } from \"../../../utils/PDFUtils\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\n\nexport class ProfileImageRenderer implements PDFComponentRenderer<string> {\n\n private pdf: PDFDocument; \n private utils: PDFSideBarUtils;\n private imagePath: string;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) {\n this.pdf = pdf;\n this.utils = utils.sideBar;\n } \n \n public setTarget(obj: string): void {\n this.imagePath = obj;\n }\n\n public render(): void {\n const dimensions: Dimensions = this.getDimensions(); \n\n this.pdf.moveTo(\n PDFConstants.SIDE_BAR.WIDTH / 2 - dimensions.width / 2,\n this.pdf.cursorYCoordinate + PDFConstants.VERTICAL_PADDING - this.pdf.doc.getLineHeight()\n ); \n\n this.pdf.doc.addImage(\n this.imagePath,\n this.getImageType(),\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate,\n dimensions.width,\n dimensions.width\n );\n\n this.utils.addLineBreak(dimensions.height);\n }\n\n private getImageType() {\n let matches = this.imagePath.match(/\\.(?<format>\\w*)$/); \n return matches[1].toUpperCase();\n }\n\n public getDimensions(): Dimensions{\n const IMAGE_WIDTH = this.getImageWidth(); \n const BOTTOM_PADDING = 20;\n\n return new Dimensions(IMAGE_WIDTH, IMAGE_WIDTH + BOTTOM_PADDING);\n }\n\n private getImageWidth(): number {\n return PDFConstants.SIDE_BAR.WIDTH * 0.4;\n }\n\n}","import { Dimensions } from \"../../../utils/Dimensions\";\nimport { PDFConstants } from \"../../../utils/PDFConstants\";\nimport { PDFDocument } from \"../../../utils/PDFDocument\";\nimport { PDFSideBarUtils } from \"../../../utils/PDFSideBarUtils\";\nimport { PDFUtils } from \"../../../utils/PDFUtils\";\nimport { Skill } from \"../../Skill\";\nimport { PDFComponentRenderer } from \"../PDFComponentRenderer\";\n\nexport class SkillRenderer implements PDFComponentRenderer<Skill> {\n public skill: Skill;\n \n private utils: PDFSideBarUtils; \n private pdf: PDFDocument;\n \n private readonly BACKGROUND_HEIGHT = 6;\n private readonly FILLING_HEIGHT = this.BACKGROUND_HEIGHT - 1;\n private readonly FILLING_MAX_WIDTH = PDFConstants.SIDE_BAR.TEXT_WIDTH - 1;\n private readonly AMOUNT_OF_RECTS = 10;\n private readonly AMOUNT_OF_SPACES = this.AMOUNT_OF_RECTS - 1;\n private readonly SPACE_BETWEEN_RECTS = 2; \n private readonly FILLING_WIDTH = (this.FILLING_MAX_WIDTH - this.SPACE_BETWEEN_RECTS * this.AMOUNT_OF_SPACES)/this.AMOUNT_OF_RECTS;\n\n private readonly ROUND_FACTOR = 3;\n\n constructor(pdf: PDFDocument, utils: PDFUtils) { \n this.pdf = pdf; \n this.utils = utils.sideBar; \n } \n\n public setTarget(obj: Skill): void {\n this.skill = obj;\n }\n\n public render(): void {\n this.pdf.moveTo(PDFConstants.SIDE_BAR.LINE_START, this.pdf.cursorYCoordinate);\n \n this.utils.writeSubHeader(this.skill.name);\n this.utils.addLineBreak(this.utils.getTextDimensions(this.skill.name).height);\n \n this.renderBackground();\n this.renderProgress(this.skill.level);\n\n this.utils.addLineBreak(PDFConstants.DEFAULT_LINE_HEIGHT + this.BACKGROUND_HEIGHT); \n }\n\n public getDimensions(): Dimensions{\n const subHeaderHeight: number = this.utils.simulateTextDimensions(this.skill.name, 16).height;\n \n return new Dimensions(\n PDFConstants.SIDE_BAR.TEXT_WIDTH, \n PDFConstants.DEFAULT_LINE_HEIGHT + this.BACKGROUND_HEIGHT + subHeaderHeight\n );\n }\n \n private renderBackground(): void {\n this.pdf.doc.roundedRect(\n this.pdf.cursorXCoordinate, \n this.pdf.cursorYCoordinate,\n PDFConstants.SIDE_BAR.TEXT_WIDTH,\n this.BACKGROUND_HEIGHT,\n this.ROUND_FACTOR,\n this.ROUND_FACTOR,\n 'F'\n );\n }\n\n private renderProgress(level: number) : void { \n this.pdf.moveTo(\n this.pdf.cursorXCoordinate + 0.5, \n this.pdf.cursorYCoordinate + 0.5\n );\n \n let isFirst: boolean = true;\n let initialLevel: number = level;\n \n this.pdf.doc.setFillColor(PDFConstants.SIDE_BAR.BACKGROUND_COLOR);\n\n while(level > 0) {\n if(isFirst) {\n isFirst = false;\n this.drawEdgeProgressIndicator(); \n } else if(level == 1 && initialLevel == 10) {\n this.drawEdgeProgressIndicator(true);\n } else {\n this.pdf.doc.rect(\n this.pdf.cursorXCoordinate, \n this.pdf.cursorYCoordinate, \n this.FILLING_WIDTH, \n this.FILLING_HEIGHT, \n 'F'\n );\n }\n \n this.pdf.moveTo(\n this.pdf.cursorXCoordinate + this.SPACE_BETWEEN_RECTS + this.FILLING_WIDTH, \n this.pdf.cursorYCoordinate\n );\n \n level--;\n } \n }\n\n private drawEdgeProgressIndicator(right?: boolean): void { \n this.pdf.doc.roundedRect(\n this.pdf.cursorXCoordinate, \n this.pdf.cursorYCoordinate,\n this.FILLING_WIDTH,\n this.FILLING_HEIGHT,\n this.ROUND_FACTOR,\n this.ROUND_FACTOR,\n 'F'\n );\n \n const HALF_PROGRESS_BAR_FILL_WIDTH = this.FILLING_WIDTH / 2;\n \n this.pdf.doc.rect(\n right ? this.pdf.cursorXCoordinate : this.pdf.cursorXCoordinate + HALF_PROGRESS_BAR_FILL_WIDTH,\n this.pdf.cursorYCoordinate,\n HALF_PROGRESS_BAR_FILL_WIDTH,\n this.FILLING_HEIGHT,\n 'F'\n );\n }\n}","import { PersonalInformation } from \"src/app/models/site-content/PersonalInformation\";\nimport { SubHeaderTag } from \"./SubHeaderTag\";\n\nexport class ResumeHeader {\n public personalInformation: PersonalInformation;\n public position: string;\n\n constructor(personalInformation: PersonalInformation, position: string) {\n this.personalInformation = personalInformation;\n this.position = position;\n }\n\n public getSubHeaderTags(): SubHeaderTag [] { \n return [ \n new SubHeaderTag('mail', this.personalInformation.email),\n new SubHeaderTag('github', this.personalInformation.github),\n new SubHeaderTag('location', this.personalInformation.location),\n new SubHeaderTag('link', window.location.origin)\n ];\n }\n}","export class SubHeaderTag {\n public value: string;\n public icon: string;\n\n constructor(icon: string, value: string) {\n this.value = value;\n this.icon = icon;\n }\n}","import * as moment from \"moment\";\n\nexport class TitleWithPeriod {\n public title;\n public startDate;\n public endDate;\n\n constructor(fields: {title: string, startDate: moment.Moment, endDate: moment.Moment}) {\n this.title = fields.title;\n this.startDate = fields.startDate;\n this.endDate = fields.endDate;\n }\n\n}","import * as moment from 'moment';\nimport { Position } from './Position';\nimport { Project } from './Project';\n\nexport class Career {\n public logoSrc: string;\n public company: string;\n public startDate: moment.Moment;\n public endDate: moment.Moment;\n public iconSrc: string; \n public about: string;\n public positions: Position[];\n public projects: Project[];\n public technologies: string[];\n\n public constructor(\n fields?: {\n logoSrc?: string,\n company?: string,\n startDate?: string,\n endDate?: string,\n iconSrc?: string,\n about?: string,\n positions?: Position[],\n projects?: Project[],\n technologies?: string[]\n }\n ) {\n if (fields) {\n this.logoSrc = fields.logoSrc || this.logoSrc;\n this.company = fields.company || this.company;\n this.startDate = moment(fields.startDate) || this.startDate;\n this.endDate = moment(fields.endDate) || this.endDate;\n this.iconSrc = fields.iconSrc || this.iconSrc;\n this.about = fields.about || this.about;\n this.positions = fields.positions || this.positions;\n this.projects = fields.projects || this.projects;\n this.technologies = fields.technologies || this.technologies;\n }\n }\n}","import * as moment from \"moment\";\n\nexport class Education{\n public name: string;\n public description: string;\n public startDate: moment.Moment;\n public endDate: moment.Moment;\n public imgSrc: string;\n\n public constructor(\n fields?:{\n name?: string,\n description?: string,\n startDate?: moment.Moment,\n endDate?: moment.Moment,\n imgSrc?: string\n }\n ){\n if(fields){\n this.name = fields.name || this.name;\n this.description = fields.description || this.description;\n this.startDate = moment(fields.startDate) || this.startDate;\n this.endDate = moment(fields.endDate) || this.endDate;\n this.imgSrc = fields.imgSrc || this.imgSrc;\n }\n\n }\n}","import * as moment from 'moment';\n\nexport class PersonalInformation {\n\n public profilePictureSrc: string;\n public name: string;\n public email: string;\n public linkedIn: string;\n public github: string;\n public dateOfBirth: moment.Moment;\n public nationality: string;\n public location: string;\n public biography: string;\n\n public constructor(\n fields?: {\n profilePictureSrc?: string,\n name?: string,\n linkedIn?: string,\n github?: string,\n email?: string,\n dateOfBirth?: string,\n nationality?: string,\n location?: string,\n biography?: string\n }\n ) {\n if (fields) {\n this.profilePictureSrc = fields.profilePictureSrc || this.profilePictureSrc;\n this.name = fields.name || this.name;\n this.linkedIn = fields.linkedIn || this.linkedIn;\n this.github = fields.github || this.github;\n this.email = fields.email || this.email;\n this.dateOfBirth = moment(fields.dateOfBirth) || this.dateOfBirth; \n this.nationality = fields.nationality || this.nationality;\n this.location = fields.location || this.nationality;\n this.biography = fields.biography || this.biography;\n }\n\n }\n}","import * as moment from \"moment\";\n\nexport class Position {\n\n public title: string;\n public startDate: moment.Moment;\n public endDate: moment.Moment;\n public description: string;\n public resumeDescription: string;\n\n\n public constructor(\n fields?: {\n title?: string,\n startDate?: string,\n endDate?: string,\n description?: string,\n resumeDescription?: string\n }\n ) {\n if (fields) {\n this.title = fields.title || this.title;\n this.startDate = moment(fields.startDate) || this.startDate;\n this.endDate = moment(fields.endDate) || this.endDate;\n this.description = fields.description || this.description;\n this.resumeDescription = fields.resumeDescription || this.description;\n }\n }\n\n}","export class Project {\n\n public title: string;\n public description: string;\n\n public constructor(\n fields?: {\n title?: string,\n description: string\n }\n ) {\n if (fields) {\n this.title = fields.title || this.title;\n this.description = fields.description || this.description;\n }\n }\n\n}","export class TechnicalKnowledge {\n\n public title: string;\n public description: string[];\n public emblemSrc: string;\n\n public constructor(\n fields?: {\n title?: string,\n description?: string[],\n emblemSrc?: string\n }\n ) {\n if (fields) {\n this.title = fields.title || this.title;\n this.description = fields.description || this.description;\n this.emblemSrc = fields.emblemSrc || this.emblemSrc;\n }\n\n }\n}","import { Career } from \"./Career\";\nimport { Education } from \"./Education\";\nimport { PersonalInformation } from \"./PersonalInformation\";\nimport { TechnicalKnowledge } from \"./TechnicalKnowledge\";\n\nexport class WebsiteContent {\n\n public personalInformation: PersonalInformation;\n public education: Education[];\n public personalInterests: string[];\n public technicalKnowledge: TechnicalKnowledge[];\n public careerInformation: Career[];\n\n public constructor(\n fields?: {\n personalInformation?: PersonalInformation,\n education?: Education[],\n personalInterests?: string[],\n technicalKnowledge?: TechnicalKnowledge[],\n careerInformation?: Career[]\n }\n ) {\n if (fields) {\n this.personalInformation = fields.personalInformation || this.personalInformation;\n this.education = fields.education || this.education;\n this.personalInterests = fields.personalInterests || this.personalInterests;\n this.technicalKnowledge = fields.technicalKnowledge || this.technicalKnowledge;\n this.careerInformation = fields.careerInformation || this.careerInformation;\n }\n\n }\n}\n","export class Dimensions {\n public width: number;\n public height: number;\n\n constructor(width: number, height: number) {\n this.width = width;\n this.height = height;\n }\n}","export class PDFConstants {\n public static readonly PAGE_HEIGHT: number = 632;\n public static readonly PAGE_WIDTH: number = 447;\n public static readonly HORIZONTAL_PADDING: number = 20;\n public static readonly VERTICAL_PADDING: number = 30;\n public static readonly FONT_SIZE_SCALE: number = 0.571; \n public static readonly TEXT_COLOR = '#384347'; \n public static readonly DEFAULT_LINE_HEIGHT: number = 13;\n public static readonly CYAN_COLOR = '#1ab0b3'; \n\n\n public static readonly SIDE_BAR: any = class {\n public static readonly WIDTH = PDFConstants.PAGE_WIDTH * 0.35;\n public static readonly LINE_START = PDFConstants.HORIZONTAL_PADDING;\n public static readonly TEXT_COLOR = '#FFFFFF';\n public static readonly BACKGROUND_COLOR = '#046864';\n public static readonly TEXT_WIDTH = this.WIDTH - (PDFConstants.HORIZONTAL_PADDING * 2);\n }; \n\n public static readonly LINE_START = PDFConstants.SIDE_BAR.WIDTH + PDFConstants.HORIZONTAL_PADDING; \n public static readonly LINE_END = this.PAGE_WIDTH - this.HORIZONTAL_PADDING;\n public static readonly MAX_TEXT_WIDTH = this.PAGE_WIDTH - (PDFConstants.SIDE_BAR.WIDTH + this.HORIZONTAL_PADDING * 2);\n}","import jsPDF from \"jspdf\";\n\nexport class PDFDocument {\n public doc: jsPDF;\n public cursorXCoordinate: number;\n public cursorYCoordinate: number;\n \n private readonly FONT_SIZE_SCALE: number = 0.571;\n\n constructor(doc: jsPDF, cursorXCoordinate: number, cursorYCoordinate: number) {\n this.doc = doc;\n this.cursorXCoordinate = cursorXCoordinate;\n this.cursorYCoordinate = cursorYCoordinate;\n }\n\n public moveTo(x: number, y: number): void {\n this.cursorXCoordinate = x;\n this.cursorYCoordinate = y;\n }\n\n public setFontSize(size: number): void {\n this.doc.setFontSize(size * this.FONT_SIZE_SCALE);\n }\n}","import { PDFComponentRenderer } from \"../resume/component-renderers/PDFComponentRenderer\";\nimport { Dimensions } from \"./Dimensions\";\nimport { PDFConstants } from \"./PDFConstants\";\nimport { PDFDocument } from \"./PDFDocument\";\nimport { PDFUtils } from \"./PDFUtils\";\n\nexport class PDFSideBarUtils {\n private pdf: PDFDocument; \n\n constructor(pdf: PDFDocument) {\n this.pdf = pdf; \n }\n \n public addLineBreak(lineHeight?: number): void { \n this.pdf.moveTo(\n PDFConstants.SIDE_BAR.LINE_START,\n this.pdf.cursorYCoordinate + (lineHeight ?? PDFConstants.DEFAULT_LINE_HEIGHT)\n ); \n }\n\n public writeSubHeader(text: string): void {\n this.pdf.setFontSize(16);\n this.writeText(text);\n }\n \n public writeDefaultText(text: string, alignRight?: boolean): void {\n this.pdf.doc.setTextColor(PDFConstants.SIDE_BAR.TEXT_COLOR);\n this.pdf.setFontSize(12);\n this.writeText(text, alignRight);\n }\n\n public renderSectionSeparator(sectionName: string): void {\n this.pdf.doc.setTextColor(PDFConstants.SIDE_BAR.TEXT_COLOR);\n this.writeSubHeader(sectionName);\n this.pdf.moveTo(this.pdf.cursorXCoordinate, this.pdf.cursorYCoordinate + 5);\n this.renderLineSeparator();\n\n this.addLineBreak();\n }\n \n public getTextDimensions(text: string): Dimensions {\n let {w, h} = this.pdf.doc.getTextDimensions(\n text,\n {\n fontSize: this.pdf.doc.getFontSize(),\n maxWidth: PDFConstants.SIDE_BAR.TEXT_WIDTH\n }\n );\n\n return new Dimensions(w, h);\n }\n\n public renderSection(title: string, renderer: PDFComponentRenderer<any>, list: any[]): void {\n this.renderSectionSeparator(title);\n\n list.forEach((obj: any) => {\n renderer.setTarget(obj);\n this.handlePagination(renderer.getDimensions().height);\n renderer.render();\n });\n\n this.addLineBreak();\n } \n \n public simulateTextDimensions(text: string, fontSize: number): Dimensions { \n const utils = new PDFUtils(this.pdf);\n return utils.simulateTextDimensions(text, fontSize);\n }\n \n private handlePagination(height: number) { \n const utils = new PDFUtils(this.pdf);\n utils.handlePagination(height); \n }\n\n private writeText(text: string, alignRight?: boolean): void { \n this.pdf.doc.text(\n text,\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate,\n {\n maxWidth: PDFConstants.SIDE_BAR.TEXT_WIDTH,\n align: alignRight ? 'right' : \"left\"\n }\n );\n }\n\n private renderLineSeparator(): void {\n this.pdf.doc.setFillColor(PDFConstants.SIDE_BAR.TEXT_COLOR);\n\n this.pdf.doc.line(\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate,\n this.pdf.cursorXCoordinate + PDFConstants.SIDE_BAR.TEXT_WIDTH,\n this.pdf.cursorYCoordinate,\n 'F'\n );\n } \n \n}","import * as moment from \"moment\";\nimport { PDFComponentRenderer } from \"../resume/component-renderers/PDFComponentRenderer\";\nimport { TitleWithPeriod } from \"../resume/component-renderers/utils/TitleWithPeriod\";\nimport { Dimensions } from \"./Dimensions\";\nimport { PDFConstants } from \"./PDFConstants\";\nimport { PDFDocument } from \"./PDFDocument\";\nimport { PDFSideBarUtils } from \"./PDFSideBarUtils\";\n\nexport class PDFUtils {\n public sideBar: PDFSideBarUtils;\n \n private pdf: PDFDocument; \n\n constructor(pdf: PDFDocument) {\n this.pdf = pdf; \n this.sideBar = new PDFSideBarUtils(pdf);\n }\n \n public writeHeader(text: string): void {\n this.pdf.setFontSize(28);\n this.writeText(text);\n }\n \n public writeSubHeader(text: string): void {\n this.pdf.setFontSize(16);\n this.writeText(text);\n } \n \n public writeHighlightedSubtitle(text: string): void { \n this.pdf.doc.setTextColor(PDFConstants.CYAN_COLOR);\n this.pdf.setFontSize(14);\n this.writeText(text); \n }\n\n public writeDefaultText(text: string, alignRight?: boolean) {\n this.pdf.doc.setTextColor(PDFConstants.TEXT_COLOR);\n this.pdf.setFontSize(12);\n this.writeText(text, alignRight);\n } \n\n public addLineBreak(lineHeight?: number): void { \n const DEFAULT_LINE_HEIGHT: number = 13;\n this.pdf.moveTo(\n PDFConstants.LINE_START,\n this.pdf.cursorYCoordinate + (lineHeight ? lineHeight : DEFAULT_LINE_HEIGHT)\n ); \n } \n\n public writeText(text: string, alignRight?: boolean): void { \n this.pdf.doc.text(\n text,\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate,\n {\n maxWidth: PDFConstants.MAX_TEXT_WIDTH,\n align: alignRight ? 'right' : \"left\"\n }\n );\n } \n \n public getTextDimensions(text: string): Dimensions {\n const {w, h} = this.pdf.doc.getTextDimensions(\n text,\n {\n fontSize: this.pdf.doc.getFontSize(),\n maxWidth: PDFConstants.MAX_TEXT_WIDTH\n }\n );\n\n return new Dimensions(w, h);\n }\n\n public renderSectionSeparator(sectionName: string): void {\n this.writeSubHeader(sectionName);\n this.pdf.moveTo(\n this.pdf.cursorXCoordinate, \n this.pdf.cursorYCoordinate + 5\n );\n \n this.renderLineSeparator();\n\n this.addLineBreak();\n }\n\n public simulateTextDimensions(text: string, fontSize: number): Dimensions {\n let oldFontSize: number = this.pdf.doc.getFontSize();\n \n this.pdf.setFontSize(fontSize); \n const textDimensions = this.getTextDimensions(text); \n this.pdf.setFontSize(oldFontSize);\n\n return textDimensions;\n }\n\n public renderTitleWithPeriodComponent(title: string, startDate: moment.Moment, endDate: moment.Moment) : void {\n const period: string = `${this.formatDate(startDate)} - ${this.formatDate(endDate)}`;\n \n this.pdf.doc.setTextColor(PDFConstants.TEXT_COLOR);\n this.writeSubHeader(title);\n\n this.pdf.moveTo(PDFConstants.LINE_END, this.pdf.cursorYCoordinate);\n\n this.writeDefaultText(period, true);\n \n this.pdf.moveTo(PDFConstants.LINE_START, this.pdf.cursorYCoordinate);\n this.addLineBreak(this.getTextDimensions(period).height + 5);\n } \n\n public renderSideBarBackground(): void {\n this.pdf.doc.setFillColor(PDFConstants.SIDE_BAR.BACKGROUND_COLOR);\n this.pdf.doc.rect(0, 0, PDFConstants.SIDE_BAR.WIDTH, PDFConstants.PAGE_HEIGHT, 'F');\n }\n\n public renderSidebarFirstPageShadow(): void {\n const SHADOW_COLOR = '#004747';\n this.pdf.doc.setFillColor(SHADOW_COLOR);\n this.pdf.doc.rect(0, 0, PDFConstants.SIDE_BAR.WIDTH, PDFConstants.PAGE_HEIGHT * 0.004, 'F');\n }\n\n public renderSimpleComponent(renderer: PDFComponentRenderer<any>, target: any): void {\n renderer.setTarget(target);\n renderer.render();\n }\n \n public renderSection(title: string, renderer: PDFComponentRenderer<any>, list: any[]): void {\n\n this.renderSectionSeparator(title);\n\n list.forEach((obj: any) => {\n renderer.setTarget(obj); \n this.handlePagination(renderer.getDimensions().height);\n renderer.render();\n });\n\n this.addLineBreak();\n } \n\n public handlePagination(height: number) {\n if (this.pdf.cursorYCoordinate + height > PDFConstants.PAGE_HEIGHT) { \n const currentPage = this.pdf.doc.getCurrentPageInfo().pageNumber;\n const pageCount = this.pdf.doc.getNumberOfPages(); \n\n if(currentPage < pageCount){\n this.pdf.doc.setPage(currentPage + 1); \n } else{\n this.addPageBreak();\n }\n\n this.pdf.moveTo(PDFConstants.LINE_START, PDFConstants.VERTICAL_PADDING);\n }\n }\n\n public createStubTitle(): TitleWithPeriod { \n return new TitleWithPeriod({\n title: 'a',\n startDate: moment(),\n endDate: moment()\n });\n }\n\n private addPageBreak(): void {\n this.pdf.doc.addPage();\n this.renderSideBarBackground(); \n }\n\n private formatDate(date: moment.Moment): string { \n return date.isValid() ? date.format('YYYY') : 'Present';\n } \n\n private renderLineSeparator(): void {\n this.pdf.doc.setFillColor('#bdbdbd'); \n\n this.pdf.doc.line(\n this.pdf.cursorXCoordinate,\n this.pdf.cursorYCoordinate,\n this.pdf.cursorXCoordinate + PDFConstants.MAX_TEXT_WIDTH,\n this.pdf.cursorYCoordinate,\n 'F'\n );\n } \n\n}","export class TitleAndDescriptionPair {\n public title: string;\n public description: string;\n \n public constructor(\n fields?: {\n title?: string,\n description?: string,\n }\n ) {\n if (fields) {\n this.title = fields.title || this.title;\n this.description = fields.description || this.description;\n }\n }\n}","import { Injectable } from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { Resume } from '../models/resume/Resume';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/internal/operators/map';\nimport { WebSiteContentService } from './web-site-content.service';\nimport { WebsiteContent } from '../models/site-content/WebsiteContent';\nimport { Career } from '../models/site-content/Career';\nimport { TitleAndDescriptionPair } from '../models/utils/TitleAndDescriptionPair';\nimport { Skill } from '../models/resume/Skill';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResumeService {\n\n constructor(private http: HttpClient, private websiteContentService: WebSiteContentService) { }\n\n public get(): Observable<Resume> {\n const websiteContent: Observable<WebsiteContent> = this.websiteContentService.get();\n const resumeContent: Observable<any> = this.http.get('/assets/config/resume.json');\n\n return forkJoin<WebsiteContent, any>([websiteContent, resumeContent])\n .pipe(\n map((data: any) => {\n return this.getResumeContentFromConfiguration(data[0], data[1]);\n })\n );\n }\n\n private getResumeContentFromConfiguration(websiteContent: WebsiteContent, resumeData: any): Resume { \n resumeData.achievements = this.getTitleAndDescriptionObjectFromConfiguration(resumeData.achievements);\n resumeData.skills = this.getSkillsFromConfiguration(resumeData)\n resumeData.languages = this.getTitleAndDescriptionObjectFromConfiguration(resumeData.languages);\n \n \n return new Resume({\n personalInformation: websiteContent.personalInformation,\n education: websiteContent.education,\n career: this.getCareerInformation(websiteContent.careerInformation),\n resumeData: resumeData \n });\n }\n\n private getCareerInformation(careerInformation: Career[]): Career[] {\n return careerInformation.sort((a, b) => { \n return a.startDate.isAfter(b.startDate) ? -1 : 1;\n });\n }\n\n private getSkillsFromConfiguration(resumeData: any): TitleAndDescriptionPair[] {\n let skills = [];\n\n resumeData.skills.forEach(skill => {\n skills.push(new Skill(skill));\n });\n\n return skills;\n }\n \n private getTitleAndDescriptionObjectFromConfiguration(objArray: any[]): TitleAndDescriptionPair[] {\n let results = [];\n\n objArray.forEach(obj => {\n results.push(new TitleAndDescriptionPair(obj)); \n });\n\n return results;\n } \n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Career } from '../models/site-content/Career';\nimport { Education } from '../models/site-content/Education';\nimport { PersonalInformation } from '../models/site-content/PersonalInformation';\nimport { Position } from '../models/site-content/Position';\nimport { Project } from '../models/site-content/Project';\nimport { TechnicalKnowledge } from '../models/site-content/TechnicalKnowledge';\nimport { WebsiteContent } from '../models/site-content/WebsiteContent';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WebSiteContentService {\n\n constructor(private http: HttpClient) { }\n\n get(): Observable<WebsiteContent> {\n return this.http\n .get('/assets/config/content.json')\n .pipe(map((data: any) => { return this.getWebsiteContentFromConfiguration(data); }));\n }\n\n private getWebsiteContentFromConfiguration(configuration: any): WebsiteContent {\n return new WebsiteContent(\n {\n personalInformation: new PersonalInformation(configuration.personalInformation),\n education: this.getEducationFromConfiguration(configuration.education),\n personalInterests: configuration.personalInterests,\n technicalKnowledge: this.getTechnicalKnowledgeFromConfiguration(configuration.technicalKnowledge),\n careerInformation: this.getCareerInformationFromConfiguration(configuration.careerInformation)\n }\n );\n }\n private getEducationFromConfiguration(configuration: any): import(\"../models/site-content/Education\").Education[] {\n const education: Education[] = [];\n\n configuration.forEach(educationItem => {\n education.push(new Education(educationItem));\n });\n\n return education; \n }\n\n private getCareerInformationFromConfiguration(configuration: any): Career[] {\n const careerInformation: Career[] = []; \n\n configuration.forEach(career => {\n career.positions = this.getPositionsFromConfiguration(career.positions);\n career.projects = this.getProjectsFromConfiguration(career.projects);\n careerInformation.push(new Career(career)); \n });\n\n return careerInformation;\n }\n\n private getProjectsFromConfiguration(configuration: any): any {\n const projects: Project[] = [];\n\n configuration.forEach(project => {\n projects.push(new Project(project));\n });\n\n return projects; \n }\n\n private getPositionsFromConfiguration(configuration: any): any {\n const positions: Position[] = [];\n\n configuration.forEach(position => {\n positions.push(new Position(position));\n });\n\n return positions; \n }\n\n private getTechnicalKnowledgeFromConfiguration(configuration: any): TechnicalKnowledge[] {\n const technicalKnowledge: TechnicalKnowledge[] = [];\n\n configuration.forEach((knowledge: any) => {\n technicalKnowledge.push(new TechnicalKnowledge(knowledge));\n });\n\n return technicalKnowledge;\n }\n}\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/plugins/zone-error'; // Included with Angular CLI.\n","import { 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));","var map = {\n\t\"./af\": 5637,\n\t\"./af.js\": 5637,\n\t\"./ar\": 6777,\n\t\"./ar-dz\": 4508,\n\t\"./ar-dz.js\": 4508,\n\t\"./ar-kw\": 7504,\n\t\"./ar-kw.js\": 7504,\n\t\"./ar-ly\": 5373,\n\t\"./ar-ly.js\": 5373,\n\t\"./ar-ma\": 2412,\n\t\"./ar-ma.js\": 2412,\n\t\"./ar-ps\": 8823,\n\t\"./ar-ps.js\": 8823,\n\t\"./ar-sa\": 6670,\n\t\"./ar-sa.js\": 6670,\n\t\"./ar-tn\": 6448,\n\t\"./ar-tn.js\": 6448,\n\t\"./ar.js\": 6777,\n\t\"./az\": 3009,\n\t\"./az.js\": 3009,\n\t\"./be\": 8299,\n\t\"./be.js\": 8299,\n\t\"./bg\": 4685,\n\t\"./bg.js\": 4685,\n\t\"./bm\": 1171,\n\t\"./bm.js\": 1171,\n\t\"./bn\": 3590,\n\t\"./bn-bd\": 5841,\n\t\"./bn-bd.js\": 5841,\n\t\"./bn.js\": 3590,\n\t\"./bo\": 4309,\n\t\"./bo.js\": 4309,\n\t\"./br\": 4130,\n\t\"./br.js\": 4130,\n\t\"./bs\": 8033,\n\t\"./bs.js\": 8033,\n\t\"./ca\": 5294,\n\t\"./ca.js\": 5294,\n\t\"./cs\": 3028,\n\t\"./cs.js\": 3028,\n\t\"./cv\": 5807,\n\t\"./cv.js\": 5807,\n\t\"./cy\": 342,\n\t\"./cy.js\": 342,\n\t\"./da\": 8269,\n\t\"./da.js\": 8269,\n\t\"./de\": 1489,\n\t\"./de-at\": 2123,\n\t\"./de-at.js\": 2123,\n\t\"./de-ch\": 7757,\n\t\"./de-ch.js\": 7757,\n\t\"./de.js\": 1489,\n\t\"./dv\": 8152,\n\t\"./dv.js\": 8152,\n\t\"./el\": 7687,\n\t\"./el.js\": 7687,\n\t\"./en-au\": 6668,\n\t\"./en-au.js\": 6668,\n\t\"./en-ca\": 6798,\n\t\"./en-ca.js\": 6798,\n\t\"./en-gb\": 3615,\n\t\"./en-gb.js\": 3615,\n\t\"./en-ie\": 1364,\n\t\"./en-ie.js\": 1364,\n\t\"./en-il\": 9907,\n\t\"./en-il.js\": 9907,\n\t\"./en-in\": 533,\n\t\"./en-in.js\": 533,\n\t\"./en-nz\": 3190,\n\t\"./en-nz.js\": 3190,\n\t\"./en-sg\": 1096,\n\t\"./en-sg.js\": 1096,\n\t\"./eo\": 3962,\n\t\"./eo.js\": 3962,\n\t\"./es\": 7726,\n\t\"./es-do\": 5010,\n\t\"./es-do.js\": 5010,\n\t\"./es-mx\": 3654,\n\t\"./es-mx.js\": 3654,\n\t\"./es-us\": 9043,\n\t\"./es-us.js\": 9043,\n\t\"./es.js\": 7726,\n\t\"./et\": 5343,\n\t\"./et.js\": 5343,\n\t\"./eu\": 728,\n\t\"./eu.js\": 728,\n\t\"./fa\": 787,\n\t\"./fa.js\": 787,\n\t\"./fi\": 1771,\n\t\"./fi.js\": 1771,\n\t\"./fil\": 5335,\n\t\"./fil.js\": 5335,\n\t\"./fo\": 9761,\n\t\"./fo.js\": 9761,\n\t\"./fr\": 1670,\n\t\"./fr-ca\": 8991,\n\t\"./fr-ca.js\": 8991,\n\t\"./fr-ch\": 7280,\n\t\"./fr-ch.js\": 7280,\n\t\"./fr.js\": 1670,\n\t\"./fy\": 4203,\n\t\"./fy.js\": 4203,\n\t\"./ga\": 9858,\n\t\"./ga.js\": 9858,\n\t\"./gd\": 8605,\n\t\"./gd.js\": 8605,\n\t\"./gl\": 7365,\n\t\"./gl.js\": 7365,\n\t\"./gom-deva\": 3896,\n\t\"./gom-deva.js\": 3896,\n\t\"./gom-latn\": 5587,\n\t\"./gom-latn.js\": 5587,\n\t\"./gu\": 7950,\n\t\"./gu.js\": 7950,\n\t\"./he\": 2029,\n\t\"./he.js\": 2029,\n\t\"./hi\": 1897,\n\t\"./hi.js\": 1897,\n\t\"./hr\": 9816,\n\t\"./hr.js\": 9816,\n\t\"./hu\": 2253,\n\t\"./hu.js\": 2253,\n\t\"./hy-am\": 8196,\n\t\"./hy-am.js\": 8196,\n\t\"./id\": 1307,\n\t\"./id.js\": 1307,\n\t\"./is\": 5474,\n\t\"./is.js\": 5474,\n\t\"./it\": 3099,\n\t\"./it-ch\": 8188,\n\t\"./it-ch.js\": 8188,\n\t\"./it.js\": 3099,\n\t\"./ja\": 9127,\n\t\"./ja.js\": 9127,\n\t\"./jv\": 182,\n\t\"./jv.js\": 182,\n\t\"./ka\": 758,\n\t\"./ka.js\": 758,\n\t\"./kk\": 3444,\n\t\"./kk.js\": 3444,\n\t\"./km\": 2034,\n\t\"./km.js\": 2034,\n\t\"./kn\": 6223,\n\t\"./kn.js\": 6223,\n\t\"./ko\": 3064,\n\t\"./ko.js\": 3064,\n\t\"./ku\": 8714,\n\t\"./ku-kmr\": 961,\n\t\"./ku-kmr.js\": 961,\n\t\"./ku.js\": 8714,\n\t\"./ky\": 2062,\n\t\"./ky.js\": 2062,\n\t\"./lb\": 4796,\n\t\"./lb.js\": 4796,\n\t\"./lo\": 9279,\n\t\"./lo.js\": 9279,\n\t\"./lt\": 106,\n\t\"./lt.js\": 106,\n\t\"./lv\": 1840,\n\t\"./lv.js\": 1840,\n\t\"./me\": 2240,\n\t\"./me.js\": 2240,\n\t\"./mi\": 3588,\n\t\"./mi.js\": 3588,\n\t\"./mk\": 5518,\n\t\"./mk.js\": 5518,\n\t\"./ml\": 7823,\n\t\"./ml.js\": 7823,\n\t\"./mn\": 8657,\n\t\"./mn.js\": 8657,\n\t\"./mr\": 1285,\n\t\"./mr.js\": 1285,\n\t\"./ms\": 3014,\n\t\"./ms-my\": 6253,\n\t\"./ms-my.js\": 6253,\n\t\"./ms.js\": 3014,\n\t\"./mt\": 167,\n\t\"./mt.js\": 167,\n\t\"./my\": 7940,\n\t\"./my.js\": 7940,\n\t\"./nb\": 14,\n\t\"./nb.js\": 14,\n\t\"./ne\": 9023,\n\t\"./ne.js\": 9023,\n\t\"./nl\": 4208,\n\t\"./nl-be\": 1412,\n\t\"./nl-be.js\": 1412,\n\t\"./nl.js\": 4208,\n\t\"./nn\": 1354,\n\t\"./nn.js\": 1354,\n\t\"./oc-lnc\": 870,\n\t\"./oc-lnc.js\": 870,\n\t\"./pa-in\": 389,\n\t\"./pa-in.js\": 389,\n\t\"./pl\": 7342,\n\t\"./pl.js\": 7342,\n\t\"./pt\": 4774,\n\t\"./pt-br\": 3003,\n\t\"./pt-br.js\": 3003,\n\t\"./pt.js\": 4774,\n\t\"./ro\": 5333,\n\t\"./ro.js\": 5333,\n\t\"./ru\": 3451,\n\t\"./ru.js\": 3451,\n\t\"./sd\": 3921,\n\t\"./sd.js\": 3921,\n\t\"./se\": 9682,\n\t\"./se.js\": 9682,\n\t\"./si\": 582,\n\t\"./si.js\": 582,\n\t\"./sk\": 4348,\n\t\"./sk.js\": 4348,\n\t\"./sl\": 5337,\n\t\"./sl.js\": 5337,\n\t\"./sq\": 9358,\n\t\"./sq.js\": 9358,\n\t\"./sr\": 683,\n\t\"./sr-cyrl\": 9382,\n\t\"./sr-cyrl.js\": 9382,\n\t\"./sr.js\": 683,\n\t\"./ss\": 1156,\n\t\"./ss.js\": 1156,\n\t\"./sv\": 9855,\n\t\"./sv.js\": 9855,\n\t\"./sw\": 8536,\n\t\"./sw.js\": 8536,\n\t\"./ta\": 7754,\n\t\"./ta.js\": 7754,\n\t\"./te\": 7809,\n\t\"./te.js\": 7809,\n\t\"./tet\": 1297,\n\t\"./tet.js\": 1297,\n\t\"./tg\": 2527,\n\t\"./tg.js\": 2527,\n\t\"./th\": 5862,\n\t\"./th.js\": 5862,\n\t\"./tk\": 9331,\n\t\"./tk.js\": 9331,\n\t\"./tl-ph\": 4387,\n\t\"./tl-ph.js\": 4387,\n\t\"./tlh\": 3592,\n\t\"./tlh.js\": 3592,\n\t\"./tr\": 9732,\n\t\"./tr.js\": 9732,\n\t\"./tzl\": 7189,\n\t\"./tzl.js\": 7189,\n\t\"./tzm\": 3553,\n\t\"./tzm-latn\": 80,\n\t\"./tzm-latn.js\": 80,\n\t\"./tzm.js\": 3553,\n\t\"./ug-cn\": 5674,\n\t\"./ug-cn.js\": 5674,\n\t\"./uk\": 9974,\n\t\"./uk.js\": 9974,\n\t\"./ur\": 5773,\n\t\"./ur.js\": 5773,\n\t\"./uz\": 357,\n\t\"./uz-latn\": 7135,\n\t\"./uz-latn.js\": 7135,\n\t\"./uz.js\": 357,\n\t\"./vi\": 43,\n\t\"./vi.js\": 43,\n\t\"./x-pseudo\": 767,\n\t\"./x-pseudo.js\": 767,\n\t\"./yo\": 150,\n\t\"./yo.js\": 150,\n\t\"./zh-cn\": 1828,\n\t\"./zh-cn.js\": 1828,\n\t\"./zh-hk\": 6644,\n\t\"./zh-hk.js\": 6644,\n\t\"./zh-mo\": 9305,\n\t\"./zh-mo.js\": 9305,\n\t\"./zh-tw\": 1860,\n\t\"./zh-tw.js\": 1860\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;"],"names":["RouterModule","AboutMeComponent","CareerDetailComponent","CareerComponent","NotFoundComponent","ResumeComponent","routes","path","component","redirectTo","pathMatch","AppRoutingModule","_","_2","_3","forRoot","imports","i1","exports","AppComponent","constructor","websiteContentService","ngAfterViewInit","ngOnInit","get","subscribe","content","websiteContent","error","console","i0","ɵɵdirectiveInject","WebSiteContentService","selectors","viewQuery","AppComponent_Query","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵlistener","AppComponent_Template_a_click_14_listener","ɵɵrestoreView","_r1","drawer_r2","ɵɵreference","ɵɵresetView","close","AppComponent_Template_a_click_16_listener","AppComponent_Template_a_click_18_listener","AppComponent_Template_i_click_23_listener","toggle","ɵɵadvance","ɵɵtextInterpolate","personalInformation","name","ɵɵpropertyInterpolate1","email","ɵɵsanitizeUrl","ɵɵtextInterpolate1","ɵɵproperty","ɵɵpureFunction0","_c1","BrowserModule","MatSidenavModule","BrowserAnimationsModule","HttpClientModule","AppModule","bootstrap","declarations","moment","interest_r1","education_r2","imgSrc","ctx_r2","getFormattedEducationPeriod","description","description_r4","ɵɵsanitizeHtml","ɵɵtemplate","AboutMeComponent_div_64_li_7_Template","technicalKnowledge_r5","emblemSrc","title","dateOfBirth","format","myAge","diff","firstName","split","education","shouldFormat","startDate","isValid","endDate","decls","vars","consts","template","AboutMeComponent_Template","AboutMeComponent_li_56_Template","AboutMeComponent_div_60_Template","AboutMeComponent_div_64_Template","ɵɵtextInterpolate2","nationality","linkedIn","github","biography","personalInterests","technicalKnowledge","position_r1","ctx_r1","getFormattedPositionPeriod","project_r3","technologySrc_r4","route","router","currentCompanyIndexString","snapshot","paramMap","currentCompanyIndex","parseInt","nextCompanyIndex","previousCompanyIndex","careerDetail","careerInformation","nextCompanyLink","getCompanyLinkByIndex","previousCompanyLink","navigate","undefined","position","ActivatedRoute","Router","i2","CareerDetailComponent_Template","CareerDetailComponent_div_9_Template","CareerDetailComponent_div_13_Template","CareerDetailComponent_img_17_Template","logoSrc","company","about","positions","projects","technologies","i_r2","career_r1","iconSrc","getFormattedCareerPeriod","career","CareerComponent_Template","CareerComponent_div_4_Template","NotFoundComponent_Template","CommonModule","PDFResumeBuilder","ResumeComponent_div_0_Template_a_click_7_listener","ɵɵnextContext","downloadPDF_OnClick","ResumeComponent_div_0_Template_a_click_18_listener","resumeUrl","ɵɵsanitizeResourceUrl","resumeService","sanitizer","resume","blob","withSideBar","withHeader","withSummary","withProfessionalExperience","withEducation","build","localPdfUrl","URL","createObjectURL","bypassSecurityTrustResourceUrl","log","a","document","createElement","body","appendChild","href","download","click","setTimeout","removeChild","ResumeService","DomSanitizer","standalone","features","ɵɵStandaloneFeature","ResumeComponent_Template","ResumeComponent_div_0_Template","i3","NgIf","styles","jsPDF","ProfileImageRenderer","PDFDocument","AchievementRenderer","PDFUtils","SkillRenderer","LanguageRenderer","HeaderRenderer","SummaryRenderer","ProfessionalExperienceRenderer","EducationRenderer","ResumeHeader","doc","unit","cursorXCoordinate","cursorYCoordinate","pdf","utils","renderSideBarBackground","renderSidebarFirstPageShadow","renderSimpleComponent","profilePictureSrc","sideBar","renderSection","achievements","skills","languages","header","summary","output","Resume","fields","resumeData","Skill","level","DefaultTextRenderer","setTarget","obj","text","render","writeDefaultText","getDimensions","TEXT_VERTICAL_PADDING","dimensions","simulateTextDimensions","height","Dimensions","TitleWithPeriodRenderer","TitleWithPeriod","PDFConstants","PADDING_BOTTOM","titleRenderer","createStubTitle","writeHighlightedSubtitle","addLineBreak","getTextDimensions","subtitleHeight","componentHeight","MAX_TEXT_WIDTH","SubHeaderTagRenderer","lineCount","MAX_CONTENT_WIDTH","PAGE_WIDTH","HORIZONTAL_PADDING","setPage","moveTo","LINE_START","VERTICAL_PADDING","setTextColor","TEXT_COLOR","writeHeader","toUpperCase","CYAN_COLOR","writeSubHeader","renderSubHeaderTags","getSubHeaderTags","DEFAULT_LINE_HEIGHT","nameDimensions","positionDimensions","tagsDimensions","getTagsDimensions","tags","forEach","tag","renderer","width","SUBTITLE_VERTICAL_PADDING","textRenderer","reverse","positionDescription","resumeDescription","handlePagination","titleDimensions","descriptionDimensions","subtitleDimensions","Math","max","ICON_SIZE","ICON_MARGIN","TAGS_SPACING","setFontSize","textDimensions","value","addImage","icon","writeText","renderSectionSeparator","titleHeight","SIDE_BAR","TEXT_WIDTH","titleWithPeriod","renderTitleWithPeriodComponent","TITLE_VERTICAL_PADDING","achievement","subHeaderHeight","textHeight","language","formattedLanguageTitle","imagePath","WIDTH","getLineHeight","getImageType","matches","match","IMAGE_WIDTH","getImageWidth","BOTTOM_PADDING","BACKGROUND_HEIGHT","FILLING_HEIGHT","FILLING_MAX_WIDTH","AMOUNT_OF_RECTS","AMOUNT_OF_SPACES","SPACE_BETWEEN_RECTS","FILLING_WIDTH","ROUND_FACTOR","skill","renderBackground","renderProgress","roundedRect","isFirst","initialLevel","setFillColor","BACKGROUND_COLOR","drawEdgeProgressIndicator","rect","right","HALF_PROGRESS_BAR_FILL_WIDTH","SubHeaderTag","location","window","origin","Career","Education","PersonalInformation","Position","Project","TechnicalKnowledge","WebsiteContent","PAGE_HEIGHT","_4","_5","FONT_SIZE_SCALE","_6","_7","_8","_9","_10","_11","LINE_END","_12","x","y","size","PDFSideBarUtils","lineHeight","alignRight","sectionName","renderLineSeparator","w","h","fontSize","getFontSize","maxWidth","list","align","line","oldFontSize","period","formatDate","SHADOW_COLOR","target","currentPage","getCurrentPageInfo","pageNumber","pageCount","getNumberOfPages","addPageBreak","addPage","date","TitleAndDescriptionPair","forkJoin","map","http","resumeContent","pipe","data","getResumeContentFromConfiguration","getTitleAndDescriptionObjectFromConfiguration","getSkillsFromConfiguration","getCareerInformation","sort","b","isAfter","push","objArray","results","ɵɵinject","HttpClient","factory","ɵfac","providedIn","getWebsiteContentFromConfiguration","configuration","getEducationFromConfiguration","getTechnicalKnowledgeFromConfiguration","getCareerInformationFromConfiguration","educationItem","getPositionsFromConfiguration","getProjectsFromConfiguration","project","knowledge","environment","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[48]}