{"version":3,"sources":["./src/app/services/responsive.service.ts","./src/app/shared/shell/shell.component.html","./src/app/shared/shell/shell.component.ts","./src/app/shared/shared.module.ts","./src/app/services/api-handler.service.ts","./src/app/portfolio-page/portfolio-page.component.html","./src/app/portfolio-page/portfolio-page.component.ts","./src/app/api-page/api-page.component.html","./src/app/api-page/api-page.component.ts","./src/app/resume-page/resume-page.component.html","./src/app/resume-page/resume-page.component.ts","./src/app/landing-page/landing-page.component.html","./src/app/landing-page/landing-page.component.ts","./src/app/app-routing.module.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/app.module.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":["ResponsiveService","breakpointObserver","router","isHandset$","this","observe","Handset","pipe","map","result","matches","shareReplay","isLarge$","Large","isXLarge$","XLarge","isBoth$","IsLandingPage$","BehaviorSubject","events","subscribe","event","setLandingPageValue","url","newValue","next","ShellComponent","service","$element","document","getElementById","scrollIntoView","behavior","block","inline","modules","SharedModule","ApiHandlerService","httpClient","GIT_API_SERVER","GIT_USER_NAME","GIT_USER","CORE_API","BIRDAPP_API_SERVER","get","username","switchMap","response","forkJoin","repo","languages_url","Languages","PortfolioPageComponent","apiService","responsiveservice","$userName","sendGetRequestGitUser","reposhow","repostate","githubResponse$","console","log","error","err","complete","SendRepoRequest","repoUrl","window","open","onSubmit","opacity","ApiPageComponent","gitstate","gitshow","sendGetRequestGit","sendGetRequestCore","coreResponse$","dataResponse$","SendGetRequestBirdapp","BirdAppResponse$","ResumePageComponent","skills","name","logo","programs","workexperiences","title","date","company","paragraph","educationexperiences","link","createElement","download","href","click","downloadFile","LandingPageComponent","routes","path","component","outlet","AppRoutingModule","forRoot","AppComponent","isLandingPage$","AppModule","bootstrapModule","catch","webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id"],"mappings":"yVAUO,Y,MAAMA,EAiCX,YAAoBC,EAAgDC,GAAhD,KAAAD,qBAAgD,KAAAC,SAzBpE,KAAAC,WAAkCC,KAAKH,mBAAmBI,QAAQ,CAAC,IAAYC,UAC9EC,KACC,OAAAC,EAAA,GAAIC,GAAUA,EAAOC,SACrB,OAAAC,EAAA,MAEF,KAAAC,SAAgCR,KAAKH,mBAAmBI,QAAQ,CAAC,IAAYQ,QAC5EN,KACC,OAAAC,EAAA,GAAIC,GAAUA,EAAOC,SACrB,OAAAC,EAAA,MAEF,KAAAG,UAAiCV,KAAKH,mBAAmBI,QAAQ,CAAC,IAAYU,SAC7ER,KACC,OAAAC,EAAA,GAAIC,GAAUA,EAAOC,SACrB,OAAAC,EAAA,MAEF,KAAAK,SAAgCZ,KAAKU,WAAaV,KAAKQ,UAAUL,KAAK,OAAAI,EAAA,MAYpEP,KAAKa,eAAiB,IAAIC,EAAA,GAAyB,GACnDd,KAAKF,OAAOiB,OAAOC,UAAWC,IACxBA,aAAiB,KAGfjB,KAAKkB,oBAFU,KAAbD,EAAME,OAXlB,oBAAoBC,GAClBpB,KAAKa,eAAeQ,KAAKD,I,6CA5BhBxB,GAAiB,sB,yBAAjBA,EAAiB,QAAjBA,EAAiB,qBAFhB,S,GAEP,G,uCCYD,oBAIE,sDAAS,WAIT,sBAA4C,eAAI,OAClD,Q,iJAGA,cACE,eAAkC,iBAAQ,eAAI,OAAS,OACvD,eAAuC,iBAAQ,gBAAK,OAAS,OAC7D,eAA2C,iBAAQ,oBAAS,OAAS,OACrE,gBAAqC,kBAAQ,gBAAI,OAAS,OAE5D,Q,MALgB,qCACA,qCACA,qCACA,sC,cC5Bf,Y,MAAM0B,EAWT,YAAoBC,GAAA,KAAAA,UATpB,gBAAgBC,GAEAC,SAASC,eAAeF,GAC9BG,eAAe,CAACC,SAAU,SAAUC,MAAO,QAASC,OAAQ,YAQtE,WACE9B,KAAKD,WAAaC,KAAKuB,QAAQxB,WAC/BC,KAAKY,QAAUZ,KAAKuB,QAAQxB,Y,6CAfrBuB,GAAc,U,uBAAdA,EAAc,6tB,ODR3B,kCACE,0B,gCAIE,sBAAa,eAAI,OACjB,uBACE,cAAqC,eAAI,OACzC,eAA0C,iBAAK,OAC/C,eAA8C,qBAAS,OACvD,eAAwC,gBAAI,OAC9C,OACF,OACA,+BACE,iBAKA,yBACE,0B,iBAUA,kB,iBAAyH,0BAAc,OACvI,kB,iBACA,wB,iBAOF,OACA,OAEA,SAEF,OACF,Q,MA1CM,2DAA+C,aAD/C,2DAKiB,sCACA,sCACA,sCACA,sCAef,8CAKgE,6DACzC,+DACpB,iD,8mBCxBJ,G,4BCWP,MAEMS,EAAU,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAWK,Y,MAAMC,G,8BAAAA,I,oDAAAA,IAAY,SANd,IAAID,GAnBb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,O,GAWK,G,gECpCA,Y,MAAME,EAQX,YAAoBC,GAAA,KAAAA,aANZ,KAAAC,eAAiB,yBACjB,KAAAC,cAAgB,mBAChB,KAAAC,SAAW,0BACX,KAAAC,SAAW,2LACX,KAAAC,mBAAqB,uJAItB,oBACL,OAAOvC,KAAKkC,WAAWM,IAAkB,GAAGxC,KAAKmC,iBAAiBnC,KAAKqC,YAKlE,sBAAsBI,GAC3B,OAAOzC,KAAKkC,WAAWM,IAAY,GAAGxC,KAAKmC,wBAAwBM,WAAkBtC,KAEnF,OAAAuC,EAAA,GAAWC,GAAiD,OAAAC,EAAA,GAE1DD,EAASvC,IAAKyC,GAEZ7C,KAAKkC,WAAWM,IAA8BK,EAAKC,eAAe3C,KAEhE,OAAAC,EAAA,GAAK2C,GAAuD,OAAD,wBAAMF,GAAI,CAAEE,oBAQ1E,oBAAoB5B,GACzB,OAAOnB,KAAKkC,WAAWM,IAAiB,OAKnC,qBAGL,OAAOxC,KAAKkC,WAAWM,IAAoB,GAAGxC,KAAKsC,UAI9C,wBACL,OAAOtC,KAAKkC,WAAWM,IAAuB,GAAGxC,KAAKuC,qB,6CA/C7CN,GAAiB,Y,yBAAjBA,EAAiB,QAAjBA,EAAiB,qBAFhB,S,GAEP,G,yCC6BO,eACA,iBAAyD,YAAG,QAAgB,OAC5E,Q,yBAD4B,oBAAgC,qB,uCAlBlE,sBAGA,4FAGE,0BACE,4BACE,wBACE,kBAAqO,OACrO,sBAAqB,QAAa,OACpC,OACJ,OACA,2BACE,eAA4B,QAAoB,OAChD,kBACE,kBACA,yB,oBAGA,gBACE,yBAA8H,mBAAof,OAClnB,oBAAG,SAAoB,OACzB,OACA,gBAAM,yBACJ,mBAAuH,OACvH,oBAAG,SAAyB,OAC9B,OACA,OACA,OACJ,OACF,O,4BArB6B,qBAIG,4BAGpB,+CAKD,4BAIA,kC,yBA/BX,iBAKA,6BAgCF,Q,oBAlCE,+BAGA,2CCQD,Y,MAAMe,EAEX,YAAoBC,EAAwCC,GAAxC,KAAAD,aAAwC,KAAAC,oBAS5D,gBAAgBC,GACdnD,KAAKiD,WAAWG,sBAAsBD,GAAWnC,UAAU,CACzDK,KAAOhB,IACPL,KAAKqD,UAAW,EAChBrD,KAAKsD,UAAY,UACjBtD,KAAKuD,gBAAkBlD,EACvBmD,QAAQC,IAAIpD,IAEZqD,MAAQC,IACRH,QAAQC,IAAIE,IAEZC,SAAU,SAMd,SAAST,GACPK,QAAQC,IAAIN,GACZnD,KAAK6D,gBAAgBV,GAKvB,WACEnD,KAAKD,WAAaC,KAAKkD,kBAAkBnD,WACzCC,KAAK6D,gBAAgB,oBAGhB,WAAWC,GAChBC,OAAOC,KAAKF,EAAS,W,6CAzCZd,GAAsB,kB,uBAAtBA,EAAsB,sgE,eDlCnC,oBACE,eAAmB,oBAAS,OAC5B,OAIA,oBACE,eAAsC,uBAAY,OAClD,2BAEE,oBAAW,mBAAQ,OACnB,oBACA,oBAAiE,wDAAS,EAAAiB,SAAA,WACxE,oBAAU,gBAAI,OAChB,OACF,OAED,iB,iBACC,iBACE,kBACE,wBAuCF,OACF,OACF,OACA,O,MA7CuC,qEAIjC,kC,khGCNM,CACV,YAAQ,YAAa,CACnB,YACE,UACA,YAAM,CACJC,QAAS,OAGb,YACE,SACA,YAAM,CACJA,QAAS,OAGb,YAAW,eAAgB,CAAC,YAAQ,qBACpC,YAAW,oBAAqB,CAAC,YAAQ,2B,GAIxC,G,yCCSG,iBACE,sBAAkF,eAAI,OACpF,QACF,Q,qBADE,kE,yBAGJ,iBACE,sBAAkF,mBAAQ,OACzF,QACD,Q,qBADC,sE,yBA9BP,sBAQE,0BACE,iBACA,yBAAgB,QAAwB,OACxC,4BAAmB,QAAuB,OAC5C,OACA,2BACI,iBACE,sBAA4E,kBAAM,OAChF,SACJ,OACD,kBACE,uBAAkF,eAAG,OAClF,gBAAqD,SAAwB,OACnF,OAEA,wBAKA,wBAKA,kBACE,uBAA8E,iBAAK,OACjF,SACF,OAEF,kBACE,uBAA0E,gBAAI,OAC9E,SACF,OAEA,kBACE,uBAA0E,iBAAK,OAC/E,SACF,OAIA,eAAK,uBAA0E,yBAAkF,mBAA4gB,OAAM,OACjrB,uBAAqF,SAAoC,OAC1H,OAEH,OAEF,4BACI,gBAAgD,gCAAoB,OACtE,OACF,Q,oBAtDA,6BAIyB,sDACL,qCACG,oCAKb,2GAIqB,iDAAgC,qCAGtD,gDAKA,iDAOD,iDAKF,mEAKA,qEAMqB,uFAAgE,iDAMpF,sD,yBAqBP,sBAKE,0BACE,iBACA,4BAA0D,QAAgD,OAC1G,+BAAwC,QAAc,OACxD,OACF,Q,yBAJyB,kDACqC,yDAClB,sB,yBAb5C,iBAKA,4BAWF,Q,oBAZE,6BAEA,4C,yBAqCI,4BAA2D,QAA6C,Q,8BAA7C,oD,yBAR/D,sBAKE,0BACE,4BAA8C,QAA8B,OAC5E,4BAAmB,sBAA4E,iBAAM,OAAW,QAAyC,OACzJ,qCACF,OACA,2BACE,kBACE,uBAA8E,uBAAW,OACvF,SACF,OACA,kBACE,uBAAkF,eAAG,OAClF,gBAA6D,SAAgC,OACnG,OAEH,OACF,Q,yBAfkD,8BACkE,+CAC7F,0CAKf,4CAIwB,4CAAwC,iC,yBAtBxE,iBAKA,6BAsBF,Q,oBAvBE,6BAEA,yCC/FC,Y,MAAMC,EAEX,YAAoBlB,EAAuCC,GAAvC,KAAAD,aAAuC,KAAAC,oBAmB3D,WAEElD,KAAKD,WAAaC,KAAKkD,kBAAkBnD,WACzCC,KAAKoE,SAAW,SAChBpE,KAAKqE,SAAU,EAEfrE,KAAKiD,WAAWqB,oBAAoBtD,UAAU,CAC5CK,KAAOhB,IACPL,KAAKqE,SAAU,EACfrE,KAAKoE,SAAW,UAChBpE,KAAKuD,gBAAkBlD,GAOvBqD,MAAQC,IACRH,QAAQC,IAAIE,IAEZC,SAAU,SAIV5D,KAAKiD,WAAWsB,qBAAqBvD,UAAU,CAC7CK,KAAOhB,IACPL,KAAKwE,cAAgBnE,EACrBL,KAAKyE,cAAgBzE,KAAKwE,cAAoB,MAI9Cd,MAAQC,IACRH,QAAQC,IAAIE,IAEZC,SAAU,SAIV5D,KAAKiD,WAAayB,wBAAwB1D,UAAU,CAClDK,KAAOhB,IACPL,KAAK2E,iBAAmBtE,GAIxBqD,MAAQC,IACRH,QAAQC,IAAIE,IAEZC,SAAU,U,6CApEPO,GAAgB,kB,uBAAhBA,EAAgB,2jFDlC7B,oBACE,eAAmB,eAAI,OACvB,OAKF,oBACI,eAAoC,0BAAe,OACnD,gBACE,gBACE,2YACJ,OACA,OACF,eAAoC,kBAAM,OAC1C,iB,iBACA,iBAEE,iBAEE,8BA6DF,OACF,OACF,OACA,OAEA,sBACE,iBAA0D,mBAAO,OACjE,iB,iBACA,iBAEE,kBAEE,wBAkBF,OACF,OACF,OACA,OAEA,qBACE,gBAAoC,gBAAI,OACxC,iB,iBACA,iBAEE,kBAEE,wBA6BF,OACF,OACF,OACA,Q,MA5IwC,sEAMlC,+BAmEkC,qEAMlC,wCAwBkC,qEAMlC,uC,qvDC9GQ,CACV,YAAQ,WAAY,CAClB,YACE,UACA,YAAM,CACJD,QAAS,OAGb,YACE,SACA,YAAM,CACJA,QAAS,OAGb,YAAW,eAAgB,CAAC,YAAQ,qBACpC,YAAW,oBAAqB,CAAC,YAAQ,2B,GAKxC,G,yBCnBC,iB,8BAAwB,yB,0BAJ1B,sBAIE,wBAAsE,QACxE,Q,yBADO,4BAAiE,6B,yBAWtE,iB,8BAAwB,yB,0BAJ1B,sBAIE,wBAAsE,QACxE,Q,yBADO,4BAAiE,6B,0BA8B9E,iBACE,sBACE,0BACE,yBAAgB,QAAoB,OACpC,4BAAmB,oBAA8B,QAAqB,OAAW,QAAsB,OACzG,OACA,2BACE,gBACF,OACF,OACF,Q,yBAPsB,sBACiC,6BAAgC,+BAG9E,4C,0BASP,iBACE,sBACE,0BACE,yBAAgB,QAAoB,OACpC,4BAAmB,oBAA8B,QAAqB,OAAW,QAAsB,OACzG,OACA,2BACE,gBACF,OACF,OACF,Q,yBAPsB,sBACiC,6BAAgC,+BAG9E,4CCtDJ,a,MAAMU,EA0DX,YAAoB1B,GAAA,KAAAA,oBAxDpB,KAAA2B,OAAkB,CAEhB,CAACC,KAAM,+BAAiCC,KAAK,uBAC7C,CAACD,KAAM,yBACP,CAACA,KAAM,8BACP,CAACA,KAAM,MAAOC,KAAK,2BACnB,CAACD,KAAM,MAAOC,KAAK,sBACnB,CAACD,KAAM,SACP,CAACA,KAAM,SAAUC,KAAK,yBACtB,CAACD,KAAM,UAAWC,KAAK,0BACvB,CAACD,KAAM,eAAgBC,KAAK,sBAC5B,CAACD,KAAM,OAAQC,KAAK,uBACpB,CAACD,KAAM,gBAAiBC,KAAK,8BAC7B,CAACD,KAAM,UAAWC,KAAK,+BACvB,CAACD,KAAM,WAAYC,KAAK,4BAI1B,KAAAC,SAAoB,CAClB,CAACF,KAAM,aAAeC,KAAK,6BAC3B,CAACD,KAAM,SAAUC,KAAK,2BACtB,CAACD,KAAM,KAAMC,KAAK,uBAClB,CAACD,KAAM,MAAOC,KAAK,4BACnB,CAACD,KAAM,OAAQC,KAAK,uBACpB,CAACD,KAAM,OAASC,KAAK,8BACrB,CAACD,KAAM,MAAQC,KAAK,uBACpB,CAACD,KAAM,aAAcC,KAAK,8BAI5B,KAAAE,gBAA0B,CACxB,CAACC,MAAO,yBAA2BC,KAAM,iBAAkBC,QAAS,sBAAuBC,UAAU,+LACrG,CAACH,MAAO,gBAAkBC,KAAM,cAAeC,QAAS,YAAaC,UAAU,2KAGjF,KAAAC,qBAA+B,CAC7B,CAACJ,MAAO,wBAA0BC,KAAM,uBAAwBC,QAAS,gDAAiDC,UAAU,iIACpI,CAACH,MAAO,wBAA0BC,KAAM,0BAA2BC,QAAS,mBAAoBC,UAAU,wKAU5G,eAEE,IAAIE,EAAO9D,SAAS+D,cAAc,KAClCD,EAAKE,SAAW,yBAChBF,EAAKG,KAAO,gCACZH,EAAKI,QAMP,WACE3F,KAAKQ,SAAWR,KAAKkD,kBAAkB1C,SACvCR,KAAKY,QAAUZ,KAAKkD,kBAAkBtC,QACtCZ,KAAKD,WAAaC,KAAKkD,kBAAkBnD,Y,6CA/DhC6E,GAAmB,U,uBAAnBA,EAAmB,6qDDzBhC,oBACA,eAAmB,iBAAM,OACzB,OAEA,oBAEA,gBACA,eAA8D,iBAAM,OACpE,gBACE,gB,gBACE,yBACE,6BAMF,OACF,OACA,cACA,iB,iBACE,yBACE,6BAMF,OACF,OACF,OACA,OACA,OAGA,qBAEA,iBAAoC,oBAAQ,OAC5C,kBACE,kB,iBACE,kBACF,OACA,kBACE,yXAAyW,kBAC3W,qBAA+E,+BAAS,EAAAgB,iBAA6B,oBAAU,mBAAO,OAAW,+BAAmB,OAEtK,OACA,OACA,OACA,OAEA,sBACA,kBACA,kB,iBACA,iBAAoC,sBAAU,OAC9C,kBACA,0BAWA,OACA,OACA,kB,iBACE,iBAAoC,qBAAS,OAC7C,kBACA,0BAWA,OACA,OACF,OACA,Q,MA7EkC,oEAK1B,iCAM0B,qEAK1B,mCAcwB,iEAcX,6DAG+B,0CAa1B,4DAG4B,iD,8+FC/C/C,G,wCClBW,oBAAsC,+DAA2C,2BAAgB,mBAAU,kBAAO,OAAW,Q,qGCExI,a,MAAMC,EAaX,YAAoB3C,GAAA,KAAAA,oBAClBlD,KAAKD,WAAaC,KAAKkD,kBAAkBnD,WAT3C,eAEE,IAAIwF,EAAO9D,SAAS+D,cAAc,KAClCD,EAAKE,SAAW,yBAChBF,EAAKG,KAAO,gCACZH,EAAKI,QAOP,a,6CAjBWE,GAAoB,U,uBAApBA,EAAoB,qkBDTjC,oBACE,gBACE,gBACI,gBACI,gBACI,aAAI,eAAM,kBAAO,OAAO,yBAAc,OACtC,aAAI,gCAAoB,OACtB,2B,iBACN,OACJ,OACA,iBACI,iBACI,iBACI,gBAA4B,kBAAM,OACtC,OACJ,OACA,kBACI,kBACI,iBAAgC,qBAAS,OAC7C,OACJ,OACA,kBACI,kBACI,iBAA0B,eAAG,OACjC,OACJ,OACJ,OAxBJ,OAFJ,Q,MAO0B,+CAIuB,sCAKK,sCAKL,wC,kyLCZ1C,GCFP,MAAMC,GAAiB,CACrB,CAAEC,KAAM,GAAIC,UAAW,GAAsBC,OAAQ,WACrD,CAAEF,KAAM,UAAWC,UAAW,GAAsBC,OAAQ,WAC5D,CAAEF,KAAM,QAASC,UAAW,IAC5B,CAAED,KAAM,MAAOC,UAAW,GAC1B,CAAED,KAAM,YAAaC,UAAW,IAQ3B,a,MAAME,G,8BAAAA,I,oDAAAA,IAAgB,SAHlB,CAAC,IAAaC,QAAQL,KACrB,O,GAEL,G,sBCpBP,0B,uBAEE,oBACE,wBACF,QCKK,a,MAAMM,EAEX,YAAoBlD,GAAA,KAAAA,oBAKpB,WACElD,KAAKqG,eAAiBrG,KAAKkD,kBAAkBrC,gB,6CARpCuF,GAAY,U,uBAAZA,EAAY,kJ,GAAA,MDTzB,iC,gBACA,0C,qBAD8B,wCAA6C,gB,oDCSpE,G,iBCyBA,a,MAAME,G,8BAAAA,EAAS,WAFR,M,oDAEDA,IAAS,UAHT,GAAE,SARJ,CACP,IACA,IACA,GACA,KACA,EACA,IAAsBH,c,GAKnB,GCxBP,MAAyBI,gBAAgB,IACtCC,MAAM7C,GAAOH,QAAQE,MAAMC,K,mBCX9B,SAAS8C,EAAyBC,GAGjC,OAAOC,QAAQC,UAAUC,KAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBL,EAAM,KAEjD,MADAI,EAAEE,KAAO,mBACHF,IAGRL,EAAyBQ,KAAO,WAAa,MAAO,IACpDR,EAAyBG,QAAUH,EACnCS,EAAOC,QAAUV,EACjBA,EAAyBW,GAAK,S","file":"main.js","sourcesContent":["import { Injectable } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { Router, Event, NavigationStart, NavigationEnd, NavigationError } from '@angular/router';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResponsiveService {\n\n\n //private messageSource = new BehaviorSubject('default message');\n //currentMessage = this.messageSource.asObservable();\n public IsLandingPage$: BehaviorSubject;\n\n\n isHandset$: Observable = this.breakpointObserver.observe([Breakpoints.Handset])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n isLarge$: Observable = this.breakpointObserver.observe([Breakpoints.Large])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n isXLarge$: Observable = this.breakpointObserver.observe([Breakpoints.XLarge])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n isBoth$: Observable = (this.isXLarge$ || this.isLarge$).pipe(shareReplay());\n\n\n\n setLandingPageValue(newValue): void {\n this.IsLandingPage$.next(newValue);\n\n }\n\n\n constructor(private breakpointObserver: BreakpointObserver, private router: Router) {\n\n this.IsLandingPage$ = new BehaviorSubject(true);\n this.router.events.subscribe((event: Event) => {\n if (event instanceof NavigationEnd) {\n if (event.url == '/')\n {\n this.setLandingPageValue(true)\n }\n else\n {\n this.setLandingPageValue(false)\n }\n\n }\n });\n }\n\n\n\n\n}\n","\n\n\n \n Menu\n \n Home\n About\n Portfolio\n APIs\n \n \n \n
\n \n \n\n\n menu\n \n Pieter van Zyl\n \n
\n Home\n About\n Portfolio\n APIs\n\n
\n
\n
\n\n \n\n
\n
\n","import { ResponsiveService } from './../../services/responsive.service';\nimport { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n\n@Component({\n selector: 'app-shell',\n templateUrl: './shell.component.html',\n styleUrls: ['./shell.component.scss']\n})\nexport class ShellComponent {\n\n scrollToElement($element:string): void {\n //console.log($element);\n var element = document.getElementById($element);\n element.scrollIntoView({behavior: \"smooth\", block: \"start\", inline: \"nearest\"});\n }\n\n isHandset$: Observable;\n isBoth$: Observable;\n\n constructor(private service: ResponsiveService){}\n\n ngOnInit() {\n this.isHandset$ = this.service.isHandset$;\n this.isBoth$ = this.service.isHandset$;\n }\n\n}\n\n","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule} from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RouterModule } from '@angular/router';\nimport { MatCardModule } from '@angular/material/card';\nimport {MatStepperModule} from '@angular/material/stepper';\nimport { ShellComponent } from './shell/shell.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {MatInputModule} from '@angular/material/input';\n\n\n\n\nconst components = [ShellComponent];\n\nconst modules = [\n CommonModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n FlexLayoutModule,\n MatSidenavModule,\n MatListModule,\n MatMenuModule,\n MatIconModule,\n MatCardModule,\n MatChipsModule,\n MatStepperModule,\n MatFormFieldModule,\n MatInputModule,\n RouterModule\n];\n\n@NgModule({\n declarations: [...components],\n imports: [...modules],\n exports: [\n ...components,\n ...modules,\n ]\n})\nexport class SharedModule {\n}\n","import { CoreResponse} from './../model/core-response';\nimport { twitterResponse } from './../model/twitter-response';\nimport { GithubUser, Languages, Repo, RepoResponse } from './../model/github-user';\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map, mergeMap, switchMap } from 'rxjs/operators';\nimport { forkJoin, Observable } from 'rxjs';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiHandlerService {\n //updated cloud function\n private GIT_API_SERVER = \"https://api.github.com\";\n private GIT_USER_NAME = \"PieterVanZyl-Dev\"\n private GIT_USER = '/users/PieterVanZyl-Dev'\n private CORE_API = ' https://pietervanzylcvapi.azurewebsites.net/api/core?url=https://core.ac.uk:443/api-v2/search/title%3AGAN%20%20and%20%2BGenerative%20%2Badversarial%20%2Bnetworks?page=1%26pageSize=10'\n private BIRDAPP_API_SERVER = \"https://pietervanzylcvapi.azurewebsites.net/api/twitter?url=https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=pieter_the%26count=3\"\n\n constructor(private httpClient: HttpClient) { }\n\n public sendGetRequestGit(){\n return this.httpClient.get(`${this.GIT_API_SERVER}${this.GIT_USER}`);\n\n }\n\n\n public sendGetRequestGitUser(username: string): Observable {\n return this.httpClient.get(`${this.GIT_API_SERVER}/users/${username}/repos`).pipe(\n // After the httpClient.get emits an array of Repos _switch_ to another forkJoin Observable to continue the pipeline.\n switchMap((response: Repo[]): Observable => forkJoin(\n // Convert the array of Repos to an array of Observables that emit an array of RepoLang objects\n response.map((repo: Repo): Observable => // Array.prototype,map\n // For each Repo object, do this request.\n this.httpClient.get[]>(repo.languages_url).pipe(\n // Once the request emits, merge the two data into a single object. I'm just guessing what you want here.\n map((Languages: Record[]): RepoResponse => ({ ...repo, Languages })), // rxjs/operators map\n )),\n )),\n );\n }\n\n\n\n public GetLanguagesRequest(url:string){\n return this.httpClient.get(`url`);\n\n }\n\n\n public sendGetRequestCore()\n {\n //return this.httpClient.get(`${this.CORE_API_SERVER}${this.CORE_API_KEY}`);\n return this.httpClient.get(`${this.CORE_API}`);\n\n }\n\n public SendGetRequestBirdapp(){\n return this.httpClient.get(`${this.BIRDAPP_API_SERVER}`);\n}\n}\n\n\n\n","
\n

Portfolio

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

Github Repos

\n \n\n UserName\n \n \n \n\n
\n
\n
\n \n\n \n\n\n \n \n \n \n

{{repo.name}}

\n
\n
\n \n

{{repo.description}}

\n
\n
\n \n

{{language.key}}

\n
\n \n \n

{{repo.forks_count}}

\n
\n \n \n

{{repo.stargazers_count}}

\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n","import { ResponsiveService } from './../services/responsive.service';\nimport { Observable } from 'rxjs';\nimport { GithubUser, Languages, Repo, RepoResponse } from './../model/github-user';\nimport { ApiHandlerService } from './../services/api-handler.service';\nimport { Component, OnInit } from '@angular/core';\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\n\n\n\nexport type FadeState = 'visible' | 'hidden';\n\n@Component({\n selector: 'app-portfolio-page',\n templateUrl: './portfolio-page.component.html',\n styleUrls: ['./portfolio-page.component.scss'],\n animations: [\n trigger('repostate', [\n state(\n 'visible',\n style({\n opacity: '1'\n })\n ),\n state(\n 'hidden',\n style({\n opacity: '0'\n })\n ),\n transition('* => visible', [animate('1500ms ease-out')]),\n transition('visible => hidden', [animate('1500ms ease-out')])\n ])\n ],\n})\nexport class PortfolioPageComponent implements OnInit {\n\n constructor(private apiService: ApiHandlerService , private responsiveservice: ResponsiveService) { }\n\n isHandset$: Observable;\n githubResponse$: Observable;\n repostate: FadeState;\n reposhow: boolean;\n\n //\n\n SendRepoRequest($userName:string): void {\n this.apiService.sendGetRequestGitUser($userName).subscribe({\n next: (result: any) => {\n this.reposhow = true;\n this.repostate = 'visible';\n this.githubResponse$ = result;\n console.log(result);\n },\n error: (err: any) => {\n console.log(err);\n },\n complete: () => {\n\n }\n });\n }\n\n onSubmit($userName: string) {\n console.log($userName)\n this.SendRepoRequest($userName)\n }\n\n\n\n ngOnInit(): void {\n this.isHandset$ = this.responsiveservice.isHandset$;\n this.SendRepoRequest('PieterVanZyl-Dev');\n }\n\n public openNewTab(repoUrl: string) {\n window.open(repoUrl, '_blank');\n }\n\n}\n","
\n

APIs

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

About this page

\n
\n
\n This section, connects to 3 different API's; Github, Twitter and CORE (The world's largest collection of open access research papers.) Both Twitter & Core Require private API Keys to Authenticate to their API. Using an Azure Cloud Function I add my Tokens to requests and return the results back to the client, this is the best way to avoid exposing private keys to the client side.\n
\n
\n

GitHub

\n
\n
\n\n
\n\n \n\n\n \n \"Avatar\n {{githubResponse$.name}}\n {{githubResponse$.bio}}\n \n \n
\n people\n {{githubResponse$.followers}} followers · following {{githubResponse$.following}}\n
\n \n\n
\n work\n {{githubResponse$.name}} is looking for work\n
\n\n
\n work_off\n {{githubResponse$.name}} is not looking for work\n
\n\n
\n place\n {{githubResponse$.location}}\n
\n\n
\n book\n Public Repos: {{githubResponse$.public_repos}}\n
\n\n
\n event\n Joined github on: {{githubResponse$.created_at}}\n
\n\n\n\n \n\n
\n\n \n Go to github profile\n \n
\n\n
\n
\n
\n
\n\n
\n

Twitter

\n
\n
\n\n
\n\n \n \n\n\n \n \"Avatar\n {{tweet.user.name}} | {{tweet.user.screen_name}}\n {{tweet.text}}\n \n \n
\n\n
\n
\n\n
\n\n
\n

CORE

\n
\n
\n\n
\n\n \n \n\n\n \n {{dataResponse._source.title}}\n peopleAuthors: {{dataResponse._source.authors}}\n Publisher: {{dataResponse._source.publisher}}\n \n \n
\n description\n {{dataResponse._source.description}}\n
\n \n\n
\n
\n
\n\n
\n
\n\n
\n","import { ResponsiveService } from './../services/responsive.service';\nimport { GithubUser } from './../model/github-user';\nimport { CoreResponse, Datum, Repository, RepositoryDocument, Source } from './../model/core-response';\nimport { Observable } from 'rxjs';\nimport { ApiHandlerService } from './../services/api-handler.service';\nimport { ChangeDetectionStrategy, Component, Input , OnInit} from '@angular/core';\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\n\nexport type FadeState = 'visible' | 'hidden';\n\n@Component({\n selector: 'app-api-page',\n templateUrl: './api-page.component.html',\n styleUrls: ['./api-page.component.scss'],\n animations: [\n trigger('gitstate', [\n state(\n 'visible',\n style({\n opacity: '1'\n })\n ),\n state(\n 'hidden',\n style({\n opacity: '0'\n })\n ),\n transition('* => visible', [animate('1500ms ease-out')]),\n transition('visible => hidden', [animate('1500ms ease-out')])\n ])\n ],\n })\n\nexport class ApiPageComponent implements OnInit {\n\n constructor(private apiService: ApiHandlerService, private responsiveservice: ResponsiveService) { }\n\n githubResponse$: Observable;\n coreResponse$: Observable;\n BirdAppResponse$: Observable;\n dataResponse$: Observable;\n isHandset$: Observable;\n gitstate: FadeState;\n gitshow: boolean;\n\n\n\n\n\n\n\n\n\n\n ngOnInit(): void {\n\n this.isHandset$ = this.responsiveservice.isHandset$;\n this.gitstate = 'hidden';\n this.gitshow = false;\n\n this.apiService.sendGetRequestGit().subscribe({\n next: (result: any) => {\n this.gitshow = true;\n this.gitstate = 'visible';\n this.githubResponse$ = result;\n\n\n\n\n\n },\n error: (err: any) => {\n console.log(err);\n },\n complete: () => {\n }\n });\n\n this.apiService.sendGetRequestCore().subscribe({\n next: (result: any) => {\n this.coreResponse$ = result;\n this.dataResponse$ = this.coreResponse$['data']\n\n\n },\n error: (err: any) => {\n console.log(err);\n },\n complete: () => {\n }\n });\n\n this.apiService. SendGetRequestBirdapp().subscribe({\n next: (result: any) => {\n this.BirdAppResponse$ = result;\n\n\n },\n error: (err: any) => {\n console.log(err);\n },\n complete: () => {\n }\n });\n\n\n\n\n }\n\n\n}\n","
\n

Resume

\n
\n\n
\n
\n

Skills

\n
\n
\n \n \n \"logo\"{{skill.name}}\n \n \n
\n
\n
\n \n \n \"logo\"{{skill.name}}\n \n \n
\n
\n
\n
\n\n\n
\n

About Me

\n
\n
\n \"photo\n
\n
\n I’m a very creative person, this shows up in my front-end design and my unique approach to problem solving. I served as a Student Assistant for 2 years in System Design and Analysis, Introduction to Programming. I am very driven and also worked part-time as an IT technician, doing lots of technical support, Networking setups and sharing for local business.
\n \n\n
\n
\n
\n
\n\n
\n
\n
\n

Experience

\n
\n
\n \n \n {{experience.title}}\n {{experience.date}} | {{experience.company}}\n \n \n

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

Education

\n
\n
\n \n \n {{experience.title}}\n {{experience.date}} | {{experience.company}}\n \n \n

\n
\n
\n
\n
\n
\n
\n
\n\n\n","import { ResponsiveService } from './../services/responsive.service';\nimport { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n\nexport interface skill {\n name: string;\n logo?: string;\n}\n\nexport interface card {\n title: string;\n date: string;\n company: string;\n paragraph: string;\n}\n\n\n\n\n@Component({\n selector: 'app-home-page',\n templateUrl: './resume-page.component.html',\n styleUrls: ['./resume-page.component.scss']\n})\nexport class ResumePageComponent implements OnInit{\n\n skills: skill[] = [\n\n {name: 'Data Structures & Algorithms' , logo:'assets/svg/data.svg'},\n {name: 'Machine Learning & AI'},\n {name: 'System Analysis and Design'},\n {name: 'Git', logo:'assets/svg/github-1.svg'},\n {name: 'SQL', logo:'assets/svg/sql.svg'},\n {name: 'UI/UX'},\n {name: 'Oracle', logo:'assets/svg/oracle.svg'},\n {name: 'MongoDB', logo:'assets/svg/mongodb.svg'},\n {name: 'Restful APIs', logo:'assets/svg/api.svg'},\n {name: 'JSON', logo:'assets/svg/json.svg'},\n {name: 'ASP.Net & MVC', logo:'assets/svg/dotnet-icon.svg'},\n {name: 'Angular', logo:'assets/svg/angular-icon.svg'},\n {name: 'Electron', logo:'assets/svg/electron.svg'},\n\n ];\n\n programs: skill[] = [\n {name: 'TypeScript' , logo:'assets/svg/typescript.svg'},\n {name: 'Python', logo:'assets/svg/python-5.svg'},\n {name: 'C#', logo:'assets/svg/c--4.svg'},\n {name: 'C++', logo:'assets/svg/cplusplus.svg'},\n {name: 'Java', logo:'assets/svg/java.svg'},\n {name: 'HTML' , logo:'assets/svg/HTML5_badge.svg'},\n {name: 'CSS' , logo:'assets/svg/css3.svg'},\n {name: 'Javascript', logo:'assets/svg/javascript.svg'},\n\n ];\n\n workexperiences: card[] = [\n {title: 'Photography and Design' , date: '2017 - present', company: 'Pieter Creative Co.', paragraph:\"• Created many designs, websites, posters and flyers for companies.
• Took professional photos for a wide variety of clientele.
• Worked on personal passion projects.\"},\n {title: 'IT Technician' , date: '2017 - 2020', company: 'Amazitech', paragraph:\"• Technical support expert; Windows & Linux
• Server control and Networking + Sharing.
• Tool Development for Managing UNIFI Voucher system.(API)\"},\n ];\n\n educationexperiences: card[] = [\n {title: 'NORTH-WEST UNIVERSITY' , date: '2018 - December 2020', company: 'Bachelor of Science in Information Technology', paragraph:\"• Top 15% Performer - Year 1, 2, 3.
• Student Assistant (SA) - Year 2 & 3
• Member, Golden Key Society.\"},\n {title: 'HIGH SCHOOL SASOLBURG' , date: 'Graduated Class of 2017', company: 'Top 25% Achiever', paragraph:\"• President and Founder, E-Sport Team -(LoL, National Finalists)
• 3 Years Coding in Delphi
• Actor part of the Theater production - 2 years\"},\n ];\n\n\n\n\n isBoth$: Observable;\n isLarge$: Observable;\n isHandset$: Observable;\n\n downloadFile()\n {\n let link = document.createElement(\"a\");\n link.download = \"PietervanZylResume.pdf\";\n link.href = \"assets/PietervanZylResume.pdf\";\n link.click();\n }\n\n\n constructor(private responsiveservice: ResponsiveService){}\n\n ngOnInit() {\n this.isLarge$ = this.responsiveservice.isLarge$;\n this.isBoth$ = this.responsiveservice.isBoth$;\n this.isHandset$ = this.responsiveservice.isHandset$;\n\n }\n\n}\n","
\n
\n
\n
\n
\n

Hi, I'mPieter van Zyl

\n

Creative & Developer

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

Resume

\n
\n
\n
\n
\n

Portfolio

\n
\n
\n
\n
\n

API

\n
\n
\n
\n","import { Observable } from 'rxjs';\nimport { ResponsiveService } from './../services/responsive.service';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-landing-page',\n templateUrl: './landing-page.component.html',\n styleUrls: ['./landing-page.component.scss']\n})\nexport class LandingPageComponent implements OnInit {\n\n\n isHandset$: Observable;\n\n downloadFile()\n {\n let link = document.createElement(\"a\");\n link.download = \"PietervanZylResume.pdf\";\n link.href = \"assets/PietervanZylResume.pdf\";\n link.click();\n }\n\n constructor(private responsiveservice: ResponsiveService){\n this.isHandset$ = this.responsiveservice.isHandset$;\n }\n\n ngOnInit(): void {}\n}\n","import { PortfolioPageComponent } from './portfolio-page/portfolio-page.component';\nimport { ApiPageComponent } from './api-page/api-page.component';\nimport { ResumePageComponent } from './resume-page/resume-page.component';\nimport { LandingPageComponent } from './landing-page/landing-page.component';\nimport { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [\n { path: '', component: LandingPageComponent, outlet: 'landing' },\n { path: 'landing', component: LandingPageComponent, outlet: 'landing' },\n { path: 'about', component: ResumePageComponent },\n { path: 'api', component: ApiPageComponent },\n { path: 'portfolio', component: PortfolioPageComponent },\n\n\n];\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","\n\n \n \n \n\n\n\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ResponsiveService } from './services/responsive.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n\n constructor(private responsiveservice: ResponsiveService){}\n isLandingPage$:Observable;\n\n\n\n ngOnInit() : void {\n this.isLandingPage$ = this.responsiveservice.IsLandingPage$\n }\n\n\n}\n","import { SharedModule } from './shared/shared.module';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { LandingPageComponent } from './landing-page/landing-page.component';\nimport { ResumePageComponent } from './resume-page/resume-page.component';\nimport { ApiPageComponent } from './api-page/api-page.component';\nimport { PortfolioPageComponent } from './portfolio-page/portfolio-page.component';\n\nimport { AnimateOnScrollModule } from 'ng2-animate-on-scroll';\n\n@NgModule({\n declarations: [\n AppComponent,\n ResumePageComponent,\n LandingPageComponent,\n ApiPageComponent,\n PortfolioPageComponent,\n ],\n imports: [\n BrowserModule,\n HttpClientModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n SharedModule,\n AnimateOnScrollModule.forRoot()\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n\n\n}\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));\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}