{"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]}