{"version":3,"file":"main.659aec37b0c1257b4fd1.js","mappings":"0MAWIA,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,O,aCftD,EAAU,CAAC,EAEf,EAAQL,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCM1DC,OAAOC,iBAAiB,oBAAoB,KAC1C,MAAMC,EAAW,IAAIC,sBAAsBC,IACzCA,EAAQC,SAASC,IACf,MAAMC,EAAKD,EAAME,OAAOC,aAAa,MACjCH,EAAMI,kBAAoB,EAC5BC,SAASC,cAAe,aAAYL,OAAQM,UAAUC,IAAI,UAE1DH,SAASC,cAAe,aAAYL,OAAQM,UAAUE,OAAO,SAC/D,GACA,IAEJJ,SAASK,iBAAiB,eAAeX,SAASY,IAChDf,EAASgB,QAAQD,EAAQ,GACzB,I,uJC5CJ,MAEME,EAAQC,EAAAA,EAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC4FlB,SAASC,EAAYC,GAKnB,OAJkBA,EAAKC,MAAM,KACKC,KAAKC,GAC9BA,EAAKC,OAAO,GAAGC,cAAgBF,EAAKG,MAAM,KAE5BC,KAAK,IAC9B,C,gaCxFAC,iBACE,IACE,MAAMC,QDZHD,iBACL,MAAMC,EAAWpB,SAASqB,cAAc,WACxCD,EAASlB,UAAUC,IAAI,0BACvBiB,EAASxB,GAAK,WACdwB,EAASE,aAAa,aAAc,0CAEpC,MAAMC,EAAgBvB,SAASqB,cAAc,MAC7CE,EAAcrB,UAAUC,IAAI,mBAC5BoB,EAAcC,YAAc,WAEPxB,SAASqB,cAAc,MAC/BnB,UAAUC,IAAI,kBAE3BiB,EAASK,YAAYF,GAErB,IACE,MAAMG,EAAe1B,SAASqB,cAAc,MA+D5C,OA9DAK,EAAaxB,UAAUC,IAAI,yBDcxBgB,iBACL,MAAMQ,EAAS,IAAIC,EAAAA,GAAc,iCAAkC,CACjEC,QAAS,CACPC,cAAgB,qDAIpB,IAEE,aADmBH,EAAOI,QAAQvB,EAEpC,CAAE,MAAOwB,GAEP,MADAC,QAAQD,MAAM,sCAAuCA,GAC/CA,CACR,CACF,CC1BuBE,IACdC,KAAKC,YAAYC,MAAM3C,SAAS4C,IACnC,MAAM,KAAE3B,EAAI,YAAE4B,EAAW,UAAEC,EAAS,kBAAEC,EAAiB,YAAEC,GACvDJ,EAAKK,KAEDC,EAAc5C,SAASqB,cAAc,MAC3CuB,EAAY1C,UAAUC,IAAI,iBAE1B,MAAM0C,EAAY7C,SAASqB,cAAc,OACzCwB,EAAU3C,UAAUC,IAAI,eACxB0C,EAAUC,IAAML,EAChBI,EAAUE,IAAO,GAAEpC,eAEnB,MAAMqC,EAAchD,SAASqB,cAAc,OAC3C2B,EAAY9C,UAAUC,IAAI,iBAE1B,MAAM8C,EAAejD,SAASqB,cAAc,MAC5C4B,EAAa/C,UAAUC,IAAI,kBAE3B,MAAM+C,EAAYlD,SAASqB,cAAc,KACzC6B,EAAUhD,UAAUC,IAAI,eACxB+C,EAAU1B,YAAcd,EAAYC,GACpCuC,EAAUC,KAAOT,EAAYU,MAAM,GAAGC,aAAaC,eACnDJ,EAAUrD,OAAS,SACnBqD,EAAU5B,aACR,aACC,GAAEZ,EAAYC,2BAGjB,MAAM4C,EAAQvD,SAASqB,cAAc,OACrCkC,EAAMT,IAAMU,EACZD,EAAMrD,UAAUC,IAAI,eACpBoD,EAAMjC,aAAa,cAAe,QAElC4B,EAAUzB,YAAY8B,GAEtBN,EAAaxB,YAAYyB,GAEzB,MAAMO,EAAqBzD,SAASqB,cAAc,KAClDoC,EAAmBvD,UAAUC,IAAI,wBACjCsD,EAAmBjC,YAAce,EAEjC,MAAMmB,EAAmB1D,SAASqB,cAAc,MAChDqC,EAAiBxD,UAAUC,IAAI,sBAE/BqC,EAAUY,MAAM1D,SAASiE,IACvB,MAAMC,EAAe5D,SAASqB,cAAc,MAC5CuC,EAAa1D,UAAUC,IAAI,mBAC3ByD,EAAapC,YAAcmC,EAAShD,KACpC+C,EAAiBjC,YAAYmC,EAAa,IAG5CZ,EAAYa,OAAOZ,EAAcQ,EAAoBC,GAErDd,EAAYiB,OAAOhB,EAAWG,GAE9BtB,EAAaD,YAAYmB,EAAY,IAGvCxB,EAASK,YAAYC,GACdN,CACT,CAAE,MAAOY,GACPZ,EAASlB,UAAUC,IAAI,iCAEvB,MAAM2D,EAAe9D,SAASqB,cAAc,KAK5C,OAJAyC,EAAa5D,UAAUC,IAAI,mBAC3B2D,EAAaC,UAAa,sUAE1B3C,EAASK,YAAYqC,GACd1C,CACT,CACF,CC9E2B4C,GAEjBC,EAAYjE,SAASqB,cAAc,OACzC4C,EAAU/D,UAAUC,IAAI,aAExB,MAAM+D,EAASlE,SAASqB,cAAc,UACtC6C,EAAOtE,GAAK,qBAEZ,MAAMuE,EAAanE,SAASqB,cAAc,UAC1C8C,EAAWjE,UAAUC,IAAI,eACzBgE,EAAWN,OCzBR,WACL,MAAMO,EAAoBpE,SAASqB,cAAc,OACjD+C,EAAkBlE,UAAUC,IAAI,wBAEhC,MAAMkE,EAAkBrE,SAASqB,cAAc,OAC/CgD,EAAgBnE,UAAUC,IAAI,sBAC9BkE,EAAgBzE,GAAK,cAErB,MAAM0E,EAAYtE,SAASqB,cAAc,MACzCiD,EAAU9C,YAAc,cACxB,MAAM+C,EAAYvE,SAASqB,cAAc,MACzCkD,EAAUR,UAAa,oDACvBM,EAAgBR,OAAOS,EAAWC,GAClCH,EAAkB3C,YAAY4C,GAE9B,MAAMG,EAAYxE,SAASqB,cAAc,QAKzC,OAJAmD,EAAU5E,GAAK,QAEfwE,EAAkB3C,YAAY+C,GAEvBJ,CACT,CDIsBK,GHzBf,WACL,MAAMC,EAAM1E,SAASqB,cAAc,OACnCqD,EAAIxE,UAAUC,IAAI,mBAAoB,0BAEtC,MAAMwE,EAAU3E,SAASqB,cAAc,MACvCsD,EAAQzE,UAAUC,IAAI,aAEtB,MACMyE,EAAQ,CAAC,SAAU,YAAa,iBAqBtC,MAtBkB,CAAC,QAAS,WAAY,gBAG9BlF,SAAQ,CAACmF,EAAOC,KACxB,MAAMC,EAAU/E,SAASqB,cAAc,MACvC0D,EAAQ7E,UAAUC,IAAI,aACtB,MAAM6E,EAAUhF,SAASqB,cAAc,KACvC2D,EAAQ9E,UAAUC,IAAI,aACtB6E,EAAQxD,YAAcqD,EACtBG,EAAQ1D,aAAa,OAAQsD,EAAME,IACnCC,EAAQtD,YAAYuD,GACpBL,EAAQlD,YAAYsD,EAAQ,IAG9BL,EAAIjD,YAAYkD,GAEhBM,YAAW,KACTjF,SACGC,cAAc,qBACdC,UAAUE,OAAO,yBAAyB,GAC5C,KAEIsE,CACT,CGL+BA,GErBxB,WACL,MAAMQ,EAAUlF,SAASqB,cAAc,WACvC6D,EAAQhF,UAAUC,IAChB,4BACA,mCAGF,MAAMgF,EAAcnF,SAASqB,cAAc,MAsD3C,OArDA8D,EAAYjF,UAAUC,IAAI,sBAE1B+E,EAAQzD,YAAY0D,GAED,CACjB,CACExE,KAAM,SACNyE,IAAK,8BACLC,KAAMC,GAER,CACE3E,KAAM,WACNyE,IAAK,gDACLC,KAAME,GAER,CACE5E,KAAM,YACNyE,IAAK,uCACLC,KAAMG,IAIC9F,SAAS+F,IAClB,MAAMC,EAAkB1F,SAASqB,cAAc,MAC/CqE,EAAgBxF,UAAUC,IAAI,gBAE9B,MAAMwF,EAAa3F,SAASqB,cAAc,KAC1CsE,EAAWzF,UAAUC,IAAI,gBACzBwF,EAAWxC,KAAOsC,EAAOL,IACzBO,EAAW9F,OAAS,SACpB8F,EAAWrE,aACT,aACC,MAAKmE,EAAO9E,6BAGf,MAAMiF,EAAc5F,SAASqB,cAAc,OAC3CuE,EAAY1F,UAAUC,IAAI,gBAC1ByF,EAAY9C,IAAM2C,EAAOJ,KACzBO,EAAY7C,IAAO,GAAE0C,EAAO9E,YAE5BgF,EAAWlE,YAAYmE,GAEvBF,EAAgBjE,YAAYkE,GAE5BR,EAAY1D,YAAYiE,EAAgB,IAG1CT,YAAW,KACTjF,SACGC,cAAc,8BACdC,UAAUE,OAAO,kCAAkC,GACrD,KAEI8E,CACT,CFzCsCW,IAElC,MAAMC,EAAc9F,SAASqB,cAAc,QAC3CyE,EAAY5F,UAAUC,IAAI,eAAgB,sBAC1C2F,EAAYjC,OG7BT,WACL,MAAMkC,EAAQ/F,SAASqB,cAAc,WACrC0E,EAAM7F,UAAUC,IAAI,uBACpB4F,EAAMnG,GAAK,QACXmG,EAAMzE,aAAa,aAAc,oBAEjC,MAAM0E,EAAahG,SAASqB,cAAc,MAoB1C,OAnBA2E,EAAW9F,UAAUC,IAAI,gBACzB6F,EAAWxE,YAAc,QAEzBuE,EAAMtE,YAAYuE,GAEC,CACjB,oRACA,4dACA,mSAGStG,SAASuG,IAClB,MAAMC,EAAYlG,SAASqB,cAAc,KACzC6E,EAAUhG,UAAUC,IAAI,oBACxB+F,EAAU1E,YAAcyE,EAExBF,EAAMtE,YAAYyE,EAAU,IAGvBH,CACT,CHEuBA,GAAS3E,EIhBzB,WACL,MAAM+E,EAAiB,CACrB,CACExF,KAAM,OACN0E,KAAMe,GAER,CACEzF,KAAM,MACN0E,KAAMgB,GAER,CACE1F,KAAM,aACN0E,KAAMiB,GAER,CACE3F,KAAM,MACN0E,KAAMkB,GAER,CACE5F,KAAM,OACN0E,KAAMmB,GAER,CACE7F,KAAM,UACN0E,KAAMoB,GAER,CACE9F,KAAM,QACN0E,KAAMqB,GAER,CACE/F,KAAM,OACN0E,KAAMsB,GAER,CACEhG,KAAM,OACN0E,KAAMuB,GAER,CACEjG,KAAM,SACN0E,KAAMwB,GAER,CACElG,KAAM,gBACN0E,KAAMyB,GAER,CACEnG,KAAM,MACN0E,KAAM0B,IAIJC,EAAehH,SAASqB,cAAc,WAC5C2F,EAAa9G,UAAUC,IAAI,8BAC3B6G,EAAapH,GAAK,eAClBoH,EAAa1F,aAAa,aAAc,mCAExC,MAAM2F,EAAoBjH,SAASqB,cAAc,MACjD4F,EAAkB/G,UAAUC,IAAI,uBAChC8G,EAAkBzF,YAAc,eAEhC,MAAM0F,EAAuBlH,SAASqB,cAAc,KACpD6F,EAAqBhH,UAAUC,IAAI,0BACnC+G,EAAqB1F,YACnB,0FAEF,MAAM2F,EAAmBnH,SAASqB,cAAc,MA0BhD,OAzBA8F,EAAiBjH,UAAUC,IAAI,sBAE/BgG,EAAezG,SAAS0H,IACtB,MAAMC,EAAmBrH,SAASqB,cAAc,MAChDgG,EAAiBnH,UAAUC,IAAI,cAE/B,MAAMmH,EAAYtH,SAASqB,cAAc,OACzCiG,EAAUpH,UAAUC,IAAI,eACxBmH,EAAUxE,IAAMsE,EAAW/B,KAC3BiC,EAAUvE,IAAO,GAAEqE,EAAWzG,YAE9B,MAAM4G,EAAWvH,SAASqB,cAAc,KACxCkG,EAASrH,UAAUC,IAAI,cACvBoH,EAAS/F,YAAc4F,EAAWzG,KAElC0G,EAAiBxD,OAAOyD,EAAWC,GACnCJ,EAAiB1F,YAAY4F,EAAiB,IAGhDL,EAAanD,OACXoD,EACAC,EACAC,GAGKH,CACT,CJ7E0CQ,GK7BnC,WACL,MAAMC,EAAiBzH,SAASqB,cAAc,WAC9CoG,EAAevH,UAAUC,IAAI,yBAC7BsH,EAAenG,aAAa,aAAc,sBAE1C,MAAMoG,EAAc1H,SAASqB,cAAc,KAK3C,OAJAqG,EAAY3D,UAAa,obAEzB0D,EAAehG,YAAYiG,GAEpBD,CACT,CLkB8DE,IAE1D1D,EAAUJ,OAAOM,EAAY2B,EAAa5B,GAC1ClE,SAAS4H,KAAK/D,OAAOI,GAErB,MAAM1E,EAAW,IAAIC,sBAClBC,IACCA,EAAQC,SAASC,IACf,MAAMC,EAAKD,EAAME,OAAOC,aAAa,MAC/BkF,EAAUhF,SAASC,cAAe,qBAAoBL,OACxDD,EAAMkI,eACR7C,EAAQ9E,UAAUC,IAAI,qBAEtB6E,EAAQ9E,UAAUE,OAAO,oBAC3B,GACA,GAEJ,CAAE0H,UAAW,MAGf9H,SAASK,iBAAiB,eAAeX,SAASY,IAChDf,EAASgB,QAAQD,EAAQ,GAE7B,CAAE,MAAO0B,GACPC,QAAQD,MAAM,wBAAyBA,EACzC,CAAE,QACAiD,YAAW,KACTjF,SACGC,cAAc,iBACdC,UAAUE,OAAO,sBM1DnB,WACL,MAAM8D,EAASlE,SAAS+H,eAAe,sBACjCC,EAAM9D,EAAO+D,WAAW,KAAM,CAAEC,OAAO,IAE7ChE,EAAOiE,MAAQ9I,OAAO+I,WACtBlE,EAAOmE,OAAShJ,OAAOiJ,YAEvB,MAAMC,EAAU,CACd,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BAQF,SAASC,EAAmBC,EAAKC,GAC/B,OAAOC,KAAKC,MAAMD,KAAKE,UAAYH,EAAMD,EAAM,GAAKA,EACtD,CAMA,SAASK,EAASC,EAAGC,EAAGC,EAAGC,GACzBC,KAAKJ,EAAIA,EACTI,KAAKH,EAAIA,EACTG,KAAKF,EAAIA,EACTE,KAAKD,OAASA,EACdC,KAAKC,QAAUT,KAAKE,SAAWF,KAAKU,GAAK,EACzCF,KAAKG,SAA2B,KAAhBX,KAAKE,SAAoB,KACzCM,KAAKI,iBAAmB,CAGtBR,EAAGP,EAAmB,EAAkB,IAAftE,EAAOiE,OAChCa,EAAGR,EAAmB,EAAmB,IAAhBtE,EAAOmE,SAGlCc,KAAKK,OAAS,KACZ,MAAMC,EAAY,CAAEV,EAAGI,KAAKJ,EAAGC,EAAGG,KAAKH,GACvCG,KAAKC,SAAWD,KAAKG,SACrBH,KAAKJ,EAAIA,EAAIJ,KAAKe,IAAIP,KAAKC,SAAWD,KAAKI,iBAAiBR,EAC5DI,KAAKH,EAAIA,EAAIL,KAAKgB,IAAIR,KAAKC,SAAWD,KAAKI,iBAAiBP,EAC5DG,KAAKS,KAAKH,EAAU,EAGtBN,KAAKS,KAAQH,IACXzB,EAAI6B,YACJ7B,EAAI8B,YAAcX,KAAKD,OACvBlB,EAAI+B,UAAYZ,KAAKF,EACrBjB,EAAIgC,QAAU,QACdhC,EAAIiC,OAAOR,EAAUV,EAAGU,EAAUT,GAClChB,EAAIkC,OAAOf,KAAKJ,EAAGI,KAAKH,GACxBhB,EAAImC,SACJnC,EAAIoC,WAAW,CAEnB,CAEA,IAAIC,GACJ,WACEA,EAAY,GAEZ,IAAK,IAAIC,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5B,MAAMC,EAAyB,GAAhB5B,KAAKE,SAAgB,EACpCwB,EAAUG,KACR,IAAI1B,EACF5E,EAAOiE,MAAQ,EACfjE,EAAOmE,OAAS,EAChBkC,GAzDcE,EA0DDlC,GAzDCI,KAAKC,MAAMD,KAAKE,SAAW4B,EAAMC,UA4DrD,CA7DF,IAAsBD,CA8DtB,CAYAE,GAVA,SAASC,IACPC,sBAAsBD,GACtB5C,EAAI8C,UAAY,mBAChB9C,EAAI+C,SAAS,EAAG,EAAG7G,EAAOiE,MAAOjE,EAAOmE,QAExCgC,EAAU3K,SAASsL,IACjBA,EAASxB,QAAQ,GAErB,CAGAoB,GAjEE1G,EAAO+G,MAAMC,QAAU,GAmE3B,CNxDMC,EAAY,GACX,KAEH,IAAIC,GAAgB,EAEpB,IAAIC,EAAAA,EAAM,SAAU,CAClBC,eAAgB,eAChBC,UAAW,GACXC,UAAW,GACXC,UAAW,IACXC,eAAgBA,KACd,GAAIN,EAAe,CAEjB,MAAMO,EAAU3L,SAASC,cAAc,UACjC2L,EAAS5L,SAASC,cAAc,iBACtC0L,EAAQV,MAAMY,MAAQ,mBACtBF,EAAQV,MAAMa,gBAAkB,eAChCF,EAAOX,MAAMY,MAAQ,mBACrBD,EAAOX,MAAMa,gBAAkB,eAC/BV,GAAgB,CAClB,KAAO,CACL,MAAMO,EAAU3L,SAASC,cAAc,UACjC2L,EAAS5L,SAASC,cAAc,iBACtC0L,EAAQV,MAAMY,MAAQ,GACtBF,EAAQV,MAAMa,gBAAkB,GAChCF,EAAOX,MAAMY,MAAQ,GACrBD,EAAOX,MAAMa,gBAAkB,EACjC,IAGN,CACA7J,QAAQ8J,IAAI,mBAKd,CAEAC,E,gEO9FIC,E,MAA0B,GAA4B,KAE1DA,EAAwBzB,KAAK,CAAC0B,EAAOtM,GAAI,slCAAulC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gCAAgC,MAAQ,GAAG,SAAW,uZAAuZ,eAAiB,CAAC,u/CAAu/C,WAAa,MAE9nG,S,2FCHIuM,EAAgC,IAAIC,IAAI,YACxCC,EAAgC,IAAID,IAAI,WACxCH,EAA0B,IAA4B,KACtDK,EAAqC,IAAgCH,GACrEI,EAAqC,IAAgCF,GAEzEJ,EAAwBzB,KAAK,CAAC0B,EAAOtM,GAAI,+CAA+C0M,UAA2CC,uvNAAyxN,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4CAA4C,+BAA+B,2BAA2B,6CAA6C,+BAA+B,gDAAgD,6CAA6C,6CAA6C,mCAAmC,yCAAyC,iCAAiC,MAAQ,GAAG,SAAW,27FAA27F,eAAiB,CAAC,81CAA81C,4HAA4H,wqCAAwqC,2lBAA6lB,ijBAAijB,wUAA0U,00EAA00E,oxCAAoxC,sSAAsS,4TAA8T,86DAA86D,WAAa,MAE1hpB,S","sources":["webpack:///./index/reset.scss?4c95","webpack:///./index/styles.scss?b3ab","webpack:///./nav/nav.js","webpack:///./github_pins/github_pins.js","webpack:///./display_data/display_data.js","webpack:///./index/index.js","webpack:///./title/title.js","webpack:///./social_links/social_links.js","webpack:///./about/about.js","webpack:///./technologies/technologies.js","webpack:///./contact/contact.js","webpack:///./background/background.js","webpack:///./index/reset.scss","webpack:///./index/styles.scss"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./reset.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./reset.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","export function nav() {\n const nav = document.createElement('nav');\n nav.classList.add('left-column__nav', 'left-column__nav--hide');\n\n const navList = document.createElement('ul');\n navList.classList.add('nav__list');\n\n const nav_array = ['About', 'Projects', 'Technologies'];\n const hrefs = ['#about', '#projects', '#technologies'];\n\n nav_array.forEach((label, index) => {\n const navItem = document.createElement('li');\n navItem.classList.add('nav__item');\n const navLink = document.createElement('a');\n navLink.classList.add('nav__link');\n navLink.textContent = label;\n navLink.setAttribute('href', hrefs[index]);\n navItem.appendChild(navLink);\n navList.appendChild(navItem);\n });\n\n nav.appendChild(navList);\n\n setTimeout(() => {\n document\n .querySelector('.left-column__nav')\n .classList.remove('left-column__nav--hide');\n }, 5000);\n\n return nav;\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n if (entry.intersectionRatio > 0) {\n document.querySelector(`a[href]=\"#${id}\"]`).classList.add('active');\n } else {\n document.querySelector(`a[href]=\"#${id}\"]`).classList.remove('active');\n }\n });\n });\n document.querySelectorAll('section[id]').forEach((section) => {\n observer.observe(section);\n });\n});\n","import { GraphQLClient, gql } from 'graphql-request';\nconst api_key = process.env.PERSONAL_ACCESS_TOKEN;\n\nconst query = gql`\n query {\n user(login: \"shaun-b1\") {\n pinnedItems(first: 4, types: [REPOSITORY]) {\n edges {\n node {\n ... on Repository {\n name\n description\n url\n openGraphImageUrl\n languages(first: 5) {\n nodes {\n name\n }\n }\n deployments(last: 1) {\n nodes {\n latestStatus {\n environmentUrl\n }\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n\nexport async function fetchData() {\n const client = new GraphQLClient('https://api.github.com/graphql', {\n headers: {\n Authorization: `Bearer ${api_key}`,\n },\n });\n\n try {\n const data = await client.request(query);\n return data;\n } catch (error) {\n console.error('Error fetching pinned repositories:', error);\n throw error;\n }\n}\n","import arrowIcon from '../assets/images/Arrow Up Right Icon.svg';\nimport { fetchData } from '../github_pins/github_pins';\n\nexport async function displayData() {\n const projects = document.createElement('section');\n projects.classList.add('right-column__projects');\n projects.id = 'projects';\n projects.setAttribute('aria-label', 'A selection of projects from my github');\n\n const projectsTitle = document.createElement('h2');\n projectsTitle.classList.add('projects__title');\n projectsTitle.textContent = 'Projects';\n\n const projectsList = document.createElement('ul');\n projectsList.classList.add('projects__list');\n\n projects.appendChild(projectsTitle);\n\n try {\n const projectsList = document.createElement('ul');\n projectsList.classList.add('projects__list');\n\n const data = await fetchData();\n data.user.pinnedItems.edges.forEach((edge) => {\n const { name, description, languages, openGraphImageUrl, deployments } =\n edge.node;\n\n const projectCard = document.createElement('li');\n projectCard.classList.add('project__card');\n\n const cardImage = document.createElement('img');\n cardImage.classList.add('card__image');\n cardImage.src = openGraphImageUrl;\n cardImage.alt = `${name} screenshot`;\n\n const cardContent = document.createElement('div');\n cardContent.classList.add('card__content');\n\n const contentTitle = document.createElement('h3');\n contentTitle.classList.add('content__title');\n\n const titleLink = document.createElement('a');\n titleLink.classList.add('title__link');\n titleLink.textContent = displayName(name);\n titleLink.href = deployments.nodes[0].latestStatus.environmentUrl;\n titleLink.target = '_blank';\n titleLink.setAttribute(\n 'aria-label',\n `${displayName(name)} (opens in a new tab)`,\n );\n\n const arrow = document.createElement('img');\n arrow.src = arrowIcon;\n arrow.classList.add('link__arrow');\n arrow.setAttribute('aria-hidden', 'true');\n\n titleLink.appendChild(arrow);\n\n contentTitle.appendChild(titleLink);\n\n const contentDescription = document.createElement('p');\n contentDescription.classList.add('content__description');\n contentDescription.textContent = description;\n\n const contentLanguages = document.createElement('ul');\n contentLanguages.classList.add('content__languages');\n\n languages.nodes.forEach((language) => {\n const languageItem = document.createElement('li');\n languageItem.classList.add('languages__item');\n languageItem.textContent = language.name;\n contentLanguages.appendChild(languageItem);\n });\n\n cardContent.append(contentTitle, contentDescription, contentLanguages);\n\n projectCard.append(cardImage, cardContent);\n\n projectsList.appendChild(projectCard);\n });\n\n projects.appendChild(projectsList);\n return projects;\n } catch (error) {\n projects.classList.add('right-column__projects--error');\n\n const errorElement = document.createElement('p');\n errorElement.classList.add('projects__error');\n errorElement.innerHTML = `Oh no, something has gone wrong! If you can see this, my GraphQL query has failed. Please ping me a message, and I'll fix it!`;\n\n projects.appendChild(errorElement);\n return projects;\n }\n}\n\nfunction displayName(name) {\n const splitName = name.split('_');\n const capitalisedName = splitName.map((word) => {\n return word.charAt(0).toUpperCase() + word.slice(1);\n });\n return capitalisedName.join(' ');\n}\n","import './reset.scss';\nimport './styles.scss';\n\nimport { title } from '../title/title';\nimport { nav } from '../nav/nav';\nimport { socialLinks } from '../social_links/social_links';\nimport { about } from '../about/about';\nimport { displayData } from '../display_data/display_data';\nimport { listTechnologies } from '../technologies/technologies';\nimport { contact } from '../contact/contact';\nimport { background } from '../background/background';\nimport Typed from 'typed.js';\n\nasync function renderData() {\n try {\n const projects = await displayData();\n\n const container = document.createElement('div');\n container.classList.add('container');\n\n const canvas = document.createElement('canvas');\n canvas.id = 'background__canvas';\n\n const leftColumn = document.createElement('header');\n leftColumn.classList.add('left-column');\n leftColumn.append(title(), nav(), socialLinks());\n\n const rightColumn = document.createElement('main');\n rightColumn.classList.add('right-column', 'right-column--hide');\n rightColumn.append(about(), projects, listTechnologies(), contact());\n\n container.append(leftColumn, rightColumn, canvas);\n document.body.append(container);\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const navLink = document.querySelector(`.nav__link[href=\"#${id}\"]`);\n if (entry.isIntersecting) {\n navLink.classList.add('nav__link--active');\n } else {\n navLink.classList.remove('nav__link--active');\n }\n });\n },\n { threshold: 0.45 },\n );\n\n document.querySelectorAll('section[id]').forEach((section) => {\n observer.observe(section);\n });\n } catch (error) {\n console.error('Error rendering data:', error);\n } finally {\n setTimeout(() => {\n document\n .querySelector('.right-column')\n .classList.remove('right-column--hide');\n background();\n }, 5000);\n\n let isFirstString = true;\n\n new Typed('#typed', {\n stringsElement: '#typed-title',\n typeSpeed: 80,\n backSpeed: 40,\n backDelay: 2000,\n preStringTyped: () => {\n if (isFirstString) {\n // Customize styles for the first string\n const strings = document.querySelector('#typed');\n const cursor = document.querySelector('.typed-cursor');\n strings.style.color = 'rgb(40, 254, 20)';\n strings.style.backgroundColor = 'rgb(0, 0, 0)';\n cursor.style.color = 'rgb(40, 254, 20)';\n cursor.style.backgroundColor = 'rgb(0, 0, 0)';\n isFirstString = false; // Set flag to false after customizing the first string\n } else {\n const strings = document.querySelector('#typed');\n const cursor = document.querySelector('.typed-cursor');\n strings.style.color = '';\n strings.style.backgroundColor = '';\n cursor.style.color = '';\n cursor.style.backgroundColor = '';\n }\n },\n });\n }\n console.log('Page initialized');\n\n if (process.env.NODE_ENV !== 'production') {\n console.log('Looks like we are in development mode!');\n }\n}\n\nrenderData();\n","export function title() {\n const leftColumnWrapper = document.createElement('div');\n leftColumnWrapper.classList.add('left-column__wrapper');\n\n const leftColumnTitle = document.createElement('div');\n leftColumnTitle.classList.add('left-column__title');\n leftColumnTitle.id = 'typed-title';\n\n const h2Element = document.createElement('h2');\n h2Element.textContent = 'Hello World';\n const h1Element = document.createElement('h1');\n h1Element.innerHTML = `I'm Shaun MacWilliam,
and I'm a Web Developer`;\n leftColumnTitle.append(h2Element, h1Element);\n leftColumnWrapper.appendChild(leftColumnTitle);\n\n const typedSpan = document.createElement('span');\n typedSpan.id = 'typed';\n\n leftColumnWrapper.appendChild(typedSpan);\n\n return leftColumnWrapper;\n}\n","import githubIcon from '../assets/images/Github SVGRepo.svg';\nimport linkedInIcon from '../assets/images/Linkedin brand icon.png';\nimport instagramIcon from '../assets/images/Instagram brand icon.png';\n\nexport function socialLinks() {\n const socials = document.createElement('section');\n socials.classList.add(\n 'left-column__social-links',\n 'left-column__social-links--hide',\n );\n\n const socialsList = document.createElement('ul');\n socialsList.classList.add('social-links__list');\n\n socials.appendChild(socialsList);\n\n const socialData = [\n {\n name: 'GitHub',\n url: 'https://github.com/shaun-b1',\n icon: githubIcon,\n },\n {\n name: 'LinkedIn',\n url: 'https://www.linkedin.com/in/shaun-macwilliam/',\n icon: linkedInIcon,\n },\n {\n name: 'Instagram',\n url: 'https://www.instagram.com/shauny_b1/',\n icon: instagramIcon,\n },\n ];\n\n socialData.forEach((social) => {\n const socialsListItem = document.createElement('li');\n socialsListItem.classList.add('social__item');\n\n const socialLink = document.createElement('a');\n socialLink.classList.add('social__link');\n socialLink.href = social.url;\n socialLink.target = '_blank';\n socialLink.setAttribute(\n 'aria-label',\n `My ${social.name} (opens in a new tab)`,\n );\n\n const socialImage = document.createElement('img');\n socialImage.classList.add('social__icon');\n socialImage.src = social.icon;\n socialImage.alt = `${social.name} icon`;\n\n socialLink.appendChild(socialImage);\n\n socialsListItem.appendChild(socialLink);\n\n socialsList.appendChild(socialsListItem);\n });\n\n setTimeout(() => {\n document\n .querySelector('.left-column__social-links')\n .classList.remove('left-column__social-links--hide');\n }, 5000);\n\n return socials;\n}\n","export function about() {\n const about = document.createElement('section');\n about.classList.add('right-column__about');\n about.id = 'about';\n about.setAttribute('aria-label', 'About me section');\n\n const aboutTitle = document.createElement('h2');\n aboutTitle.classList.add('about__title');\n aboutTitle.textContent = 'About';\n\n about.appendChild(aboutTitle);\n\n const paragraphs = [\n \"I first began building things on the internet when I was in school. Initially I would put together forums for my online gaming groups; a job that I would always volunteer for. I'd stay up late at night and wake up early before school to fix any little bugbear I could find.\",\n \"Since leaving school, I've gone on to complete a degree in Ancient History, excel as a professional athlete, and have had a successful career in event management. But I've never lost my passion for tinkering with technology. It wasn't until early 2019 that my tinkering would actually form the concept of a career, when a friend suggested I could actually do this as a job. After a global pandemic and a move across the world, it feels time to make that concept a reality.\",\n \"I'm highly passionate about building beautiful pieces of software both externally and internally, things that will stand the test of time. I'm looking for a place of employment that will foster this passion, and enable me to take a confident first step into the world of web development.\",\n ];\n\n paragraphs.forEach((paragraph) => {\n const aboutPara = document.createElement('p');\n aboutPara.classList.add('about__paragraph');\n aboutPara.textContent = paragraph;\n\n about.appendChild(aboutPara);\n });\n\n return about;\n}\n","import HTMLIcon from '../assets/images/Html5.svg';\nimport CSSIcon from '../assets/images/Css3 01 icon.svg';\nimport JSIcon from '../assets/images/Javascript Fill Icon.svg';\nimport npmIcon from '../assets/images/Npm.svg';\nimport yarnIcon from '../assets/images/Yarn icon.svg';\nimport webpackIcon from '../assets/images/Webpack SVG icon.svg';\nimport babelIcon from '../assets/images/Babel 16 icon.svg';\nimport jestIcon from '../assets/images/Jest.svg';\nimport sassIcon from '../assets/images/Sass SVG Repo.svg';\nimport nodeIcon from '../assets/images/Nodejs icon.svg';\nimport rubyIcon from '../assets/images/Ruby SVG icon.svg';\nimport gitIcon from '../assets/images/Git icon.svg';\n\nexport function listTechnologies() {\n const technologyData = [\n {\n name: 'HTML',\n icon: HTMLIcon,\n },\n {\n name: 'CSS',\n icon: CSSIcon,\n },\n {\n name: 'JavaScript',\n icon: JSIcon,\n },\n {\n name: 'NPM',\n icon: npmIcon,\n },\n {\n name: 'Yarn',\n icon: yarnIcon,\n },\n {\n name: 'Webpack',\n icon: webpackIcon,\n },\n {\n name: 'Babel',\n icon: babelIcon,\n },\n {\n name: 'Jest',\n icon: jestIcon,\n },\n {\n name: 'Sass',\n icon: sassIcon,\n },\n {\n name: 'NodeJS',\n icon: nodeIcon,\n },\n {\n name: 'Ruby on Rails',\n icon: rubyIcon,\n },\n {\n name: 'Git',\n icon: gitIcon,\n },\n ];\n\n const technologies = document.createElement('section');\n technologies.classList.add('right-column__technologies');\n technologies.id = 'technologies';\n technologies.setAttribute('aria-label', 'Technologies I have worked with');\n\n const technologiesTitle = document.createElement('h2');\n technologiesTitle.classList.add('technologies__title');\n technologiesTitle.textContent = 'Technologies';\n\n const technologiesSubtitle = document.createElement('p');\n technologiesSubtitle.classList.add('technologies__subtitle');\n technologiesSubtitle.textContent =\n 'Below are just a few of the languages, frameworks, and tools that I have experience in:';\n\n const technologiesGrid = document.createElement('ul');\n technologiesGrid.classList.add('technologies__grid');\n\n technologyData.forEach((technology) => {\n const technologiesTile = document.createElement('li');\n technologiesTile.classList.add('grid__tile');\n\n const tileImage = document.createElement('img');\n tileImage.classList.add('tile__image');\n tileImage.src = technology.icon;\n tileImage.alt = `${technology.name} icon`;\n\n const tileText = document.createElement('p');\n tileText.classList.add('tile__text');\n tileText.textContent = technology.name;\n\n technologiesTile.append(tileImage, tileText);\n technologiesGrid.appendChild(technologiesTile);\n });\n\n technologies.append(\n technologiesTitle,\n technologiesSubtitle,\n technologiesGrid,\n );\n\n return technologies;\n}\n","export function contact() {\n const contactSection = document.createElement('section');\n contactSection.classList.add('right-column__contact');\n contactSection.setAttribute('aria-label', 'Contact me section');\n\n const contactText = document.createElement('p');\n contactText.innerHTML = `Loosely designed in Canva, and coded in Visual Studio Code. If you'd like to reach out, drop me an email.`;\n\n contactSection.appendChild(contactText);\n\n return contactSection;\n}\n","export function background() {\n const canvas = document.getElementById('background__canvas');\n const ctx = canvas.getContext('2d', { alpha: false });\n\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n\n const colours = [\n 'rgba(87, 72, 173, 0.1)',\n 'rgba(87, 72, 173, 0.2)',\n 'rgba(87, 72, 173, 0.3)',\n 'rgba(87, 72, 173, 0.4)',\n 'rgba(87, 72, 173, 0.5)',\n 'rgba(87, 72, 173, 0.6)',\n 'rgba(87, 72, 173, 0.7)',\n 'rgba(13, 31, 45, 0.1)',\n 'rgba(13, 31, 45, 0.2)',\n 'rgba(13, 31, 45, 0.3)',\n 'rgba(13, 31, 45, 0.4)',\n 'rgba(13, 31, 45, 0.5)',\n 'rgba(13, 31, 45, 0.6)',\n 'rgba(13, 31, 45, 0.7)',\n 'rgba(96, 132, 120, 0.1)',\n 'rgba(96, 132, 120, 0.2)',\n 'rgba(96, 132, 120, 0.3)',\n 'rgba(96, 132, 120, 0.4)',\n 'rgba(96, 132, 120, 0.5)',\n 'rgba(96, 132, 120, 0.6)',\n 'rgba(96, 132, 120, 0.7)',\n 'rgba(255, 255, 255, 0.1)',\n 'rgba(255, 255, 255, 0.2)',\n 'rgba(255, 255, 255, 0.3)',\n 'rgba(255, 255, 255, 0.4)',\n 'rgba(255, 255, 255, 0.5)',\n 'rgba(255, 255, 255, 0.6)',\n 'rgba(255, 255, 255, 0.7)',\n ];\n\n function randomColour(array) {\n const randomIndex = Math.floor(Math.random() * array.length);\n return array[randomIndex];\n }\n\n function randomIntFromRange(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n }\n\n function fadeInCanvas() {\n canvas.style.opacity = '1';\n }\n\n function Particle(x, y, r, colour) {\n this.x = x;\n this.y = y;\n this.r = r;\n this.colour = colour;\n this.radians = Math.random() * Math.PI * 2;\n this.velocity = Math.random() * 0.0008 + 0.0003;\n this.distanceToCentre = {\n // x: randomIntFromRange(canvas.width * 0.2, canvas.width * 0.4),\n // y: randomIntFromRange(canvas.height * 0.2, canvas.height * 0.4),\n x: randomIntFromRange(0, canvas.width * 1.3),\n y: randomIntFromRange(0, canvas.height * 1.1),\n };\n\n this.update = () => {\n const lastPoint = { x: this.x, y: this.y };\n this.radians += this.velocity;\n this.x = x + Math.cos(this.radians) * this.distanceToCentre.x;\n this.y = y + Math.sin(this.radians) * this.distanceToCentre.y;\n this.draw(lastPoint);\n };\n\n this.draw = (lastPoint) => {\n ctx.beginPath();\n ctx.strokeStyle = this.colour;\n ctx.lineWidth = this.r;\n ctx.lineCap = 'round';\n ctx.moveTo(lastPoint.x, lastPoint.y);\n ctx.lineTo(this.x, this.y);\n ctx.stroke();\n ctx.closePath();\n };\n }\n\n let particles;\n function init() {\n particles = [];\n\n for (let i = 0; i < 200; i++) {\n const radius = Math.random() * 15 + 5;\n particles.push(\n new Particle(\n canvas.width / 2,\n canvas.height / 2,\n radius,\n randomColour(colours),\n ),\n );\n }\n }\n\n function animate() {\n requestAnimationFrame(animate);\n ctx.fillStyle = 'rgba(46, 52, 64)';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n particles.forEach((particle) => {\n particle.update();\n });\n }\n\n init();\n animate();\n fadeInCanvas(); // Adjust delay as needed\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:\"\";content:none}table{border-collapse:collapse;border-spacing:0}button{appearance:none;background-color:rgba(0,0,0,0);border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;text-align:left;text-decoration:none;outline:none}a{appearance:none;background-color:rgba(0,0,0,0);border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;text-align:left;text-decoration:none;outline:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./index/reset.scss\"],\"names\":[],\"mappings\":\"AACA,2ZAaE,QAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,uBAAA,CAGF,8EAEE,aAAA,CAGF,KACE,aAAA,CAGF,MACE,eAAA,CAGF,aACE,WAAA,CAGF,oDAEE,UAAA,CACA,YAAA,CAGF,MACE,wBAAA,CACA,gBAAA,CAGF,OACE,eAAA,CACA,8BAAA,CACA,WAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,eAAA,CACA,oBAAA,CACA,YAAA,CAQF,EACE,eAAA,CACA,8BAAA,CACA,WAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,eAAA,CACA,oBAAA,CACA,YAAA\",\"sourcesContent\":[\"/* Reset styles */\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td,\\narticle, aside, canvas, details, embed, \\nfigure, figcaption, footer, header, hgroup, \\nmenu, nav, output, ruby, section, summary,\\ntime, mark, audio, video {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font: inherit;\\n vertical-align: baseline;\\n}\\n\\narticle, aside, details, figcaption, figure, \\nfooter, header, hgroup, menu, nav, section {\\n display: block;\\n}\\n\\nbody {\\n line-height: 1;\\n}\\n\\nol, ul {\\n list-style: none;\\n}\\n\\nblockquote, q {\\n quotes: none;\\n}\\n\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n content: '';\\n content: none;\\n}\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\nbutton {\\n appearance: none;\\n background-color: transparent;\\n border: none;\\n padding: 0;\\n margin: 0;\\n font: inherit;\\n color: inherit;\\n cursor: pointer;\\n text-align: left;\\n text-decoration: none;\\n outline: none;\\n\\n &:hover,\\n &:focus,\\n &:active {\\n }\\n}\\n\\na {\\n appearance: none;\\n background-color: transparent;\\n border: none;\\n padding: 0;\\n margin: 0;\\n font: inherit;\\n color: inherit;\\n cursor: pointer;\\n text-align: left;\\n text-decoration: none;\\n outline: none;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../assets/fonts/Montserrat-VariableFont_wght.ttf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../assets/fonts/Montserrat font.woff2\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@font-face{font-family:\"Montserrat\";src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}),url(${___CSS_LOADER_URL_REPLACEMENT_1___});font-weight:normal;font-style:normal}@media(min-width: 1025px){:root{--h1-size: 2.5rem;--h3-size: 1.2rem;--p-size: 1rem;--image-size: 3rem;--main-horizontal-margin: 6rem;--main-vertical-spacing: 5rem;--column-section-margin: 4rem;--column-element-margin: 2rem}}@media(max-width: 1024px)and (min-width: 769px){:root{--h1-size: 2rem;--h3-size: 1rem;--p-size: 0.8rem;--image-size: 3rem;--main-horizontal-margin: 3rem;--main-vertical-spacing: 3rem;--column-section-margin: 2rem;--column-element-margin: 2rem}}@media(max-width: 768px){:root{--h1-size: 2rem;--h3-size: 1rem;--p-size: 0.8rem;--image-size: 3rem;--main-horizontal-margin: 1rem;--main-vertical-spacing: 2.5rem;--column-section-margin: 2.5rem;--column-element-margin: 1.5rem}}.left-column__title,#typed,.typed-cursor{font-size:var(--h1-size)}.left-column__nav{margin-bottom:auto;opacity:1;transition:opacity 1s ease-in 3s}@media(max-width: 1023px){.left-column__nav{display:none}}.left-column__nav--hide{opacity:0}.nav__item{margin-bottom:var(--column-element-margin);font-size:var(--h3-size)}.nav__link{position:relative;left:0;opacity:.5;transition:opacity .3s ease-in-out,left .3s ease-in-out}.nav__link::before{content:\"//\";position:absolute;top:.15rem;left:calc(var(--h3-size)*-1);opacity:0;transition:opacity .3s ease-in-out}.nav__link:hover,.nav__link--active{left:var(--h3-size);opacity:1}.nav__link:hover::before,.nav__link--active::before{opacity:1}.left-column__social-links{opacity:1;transition:opacity 1s ease-in 3s}.left-column__social-links--hide{opacity:0}.social-links__list{display:flex;justify-content:flex-start}.social__icon{filter:invert(100%);height:var(--image-size);width:var(--image-size);margin-right:var(--column-element-margin);opacity:.5;transition:opacity .3s ease-in-out}.social__icon:hover{opacity:1}.right-column__about{position:relative;display:flex;flex-direction:column;gap:var(--column-element-margin);padding:var(--column-element-margin);background:rgba(46,52,64,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.about__title{font-size:var(--h3-size)}@media(min-width: 1024px){.about__title{display:none}}.about__paragraph{font-size:var(--p-size);line-height:1.4rem}.right-column__projects{display:flex;flex-direction:column;gap:var(--column-element-margin)}.right-column__projects--error{padding:var(--column-element-margin);background:rgba(46,52,64,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.projects__title{font-size:var(--h3-size)}@media(min-width: 1024px){.projects__title{display:none}}.projects__list{display:flex;flex-direction:column;gap:var(--column-element-margin)}.project__card{position:relative;overflow:hidden;background:rgba(46,52,64,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.card__image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:50% 0%}.card__content{position:relative;display:flex;font-size:var(--p-size);flex-direction:column;padding:var(--column-element-margin) 2.5rem;opacity:0;transition:opacity .3s ease-in-out;background:rgba(46,52,64,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.card__content:hover{opacity:1}@media(max-width: 1023px){.card__content{opacity:1}}.content__title{margin-bottom:calc(var(--column-element-margin)/2)}.title__link{font-size:var(--h3-size)}.title__link:hover>.link__arrow{transform:translate(0.25rem, -0.25rem)}.link__arrow{height:1.5rem;width:1.5rem;filter:invert(95%);position:absolute;transition:transform .3s ease-in-out}.content__description{margin-bottom:var(--column-element-margin)}.content__languages{display:flex;flex-wrap:wrap;gap:1rem}.languages__item{padding:.5rem 2rem;background:rgba(115,137,174,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.projects__error{font-size:var(--p-size);line-height:1.4rem}.projects__error a{color:#7389ae}.right-column__technologies{display:flex;flex-direction:column;gap:var(--column-element-margin);padding:var(--column-element-margin);background:rgba(46,52,64,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.technologies__title{font-size:var(--h3-size);line-height:1.3rem}@media(min-width: 1024px){.technologies__title{display:none}}.technologies__subtitle{font-size:var(--p-size);line-height:1.3rem}.technologies__grid{display:grid;grid-template-columns:repeat(4, 1fr);grid-template-rows:auto;row-gap:var(--column-element-margin)}@media(max-width: 1023px){.technologies__grid{grid-template-columns:repeat(3, 1fr)}}.grid__tile{font-size:var(--p-size);display:flex;flex-direction:column;justify-content:center;align-items:center}.tile__image{filter:invert(100%);height:var(--image-size);width:var(--image-size);padding:.5rem}.tile__text{text-align:center;padding:.5rem}.right-column__contact{font-size:var(--p-size);padding:var(--column-element-margin);background:rgba(46,52,64,.6);border-radius:15px;box-shadow:1px 1px 5px rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(236,239,244,.15)}.right-column__contact a{color:#7389ae}#background__canvas{position:fixed;top:50%;left:50%;transform:translate(-50%, -50%);z-index:-9999;will-change:contents;transform:translateZ(0, 0, 0);opacity:0;transition:opacity 1s ease-in 3s}:root{background-color:#2e3440;color:#eceff4;font-family:\"Montserrat\",sans-serif}.container{width:100vw;height:100vh;display:flex;padding:0 var(--main-horizontal-margin);justify-content:space-between;gap:1rem;box-sizing:border-box}.left-column{position:sticky;display:flex;flex-direction:column;gap:var(--column-section-margin);width:45%;max-height:100vh;top:0;padding:var(--main-vertical-spacing) 0}.right-column{display:flex;flex-direction:column;justify-content:space-between;gap:var(--column-section-margin);padding:var(--main-vertical-spacing) 10px;width:50%;opacity:1;transition:opacity 1s ease-in 3s;-ms-overflow-style:none;scrollbar-width:none;overflow-y:overlay;scroll-behavior:smooth}.right-column::-webkit-scrollbar{display:none}.right-column--hide{opacity:0}@media(max-width: 1023px){.container{height:auto;width:auto;padding:var(--main-vertical-spacing) var(--main-horizontal-margin);flex-direction:column;gap:var(--column-section-margin)}.left-column{position:relative;width:auto;max-height:none;padding:0 10px}.right-column{padding:0 10px;width:auto;overflow-y:visible}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./assets/mixins/_variables.scss\",\"webpack://./title/title.scss\",\"webpack://./nav/nav.scss\",\"webpack://./social_links/social_links.scss\",\"webpack://./about/about.scss\",\"webpack://./assets/mixins/_glassmorphism.scss\",\"webpack://./display_data/display_data.scss\",\"webpack://./technologies/technologies.scss\",\"webpack://./contact/contact.scss\",\"webpack://./background/background.scss\",\"webpack://./index/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@font-face {\\n font-family: 'Montserrat';\\n src: url('../assets/fonts/Montserrat-VariableFont_wght.ttf'),\\n url('../assets/fonts/Montserrat font.woff2');\\n font-weight: normal;\\n font-style: normal;\\n}\\n\\n// Common variables\\n$background-color: rgb(46, 52, 64);\\n$text-color: rgb(236, 239, 244);\\n$highlight-color: rgb(115, 137, 174);\\n$font-family: 'Montserrat', sans-serif;\\n$trans-hover: 0.3s ease-in-out;\\n$trans-page-load: opacity 1s ease-in 3s;\\n\\n// Media queries\\n@media (min-width: 1025px) {\\n :root {\\n --h1-size: 2.5rem;\\n --h3-size: 1.2rem;\\n --p-size: 1rem;\\n --image-size: 3rem;\\n --main-horizontal-margin: 6rem;\\n --main-vertical-spacing: 5rem;\\n --column-section-margin: 4rem;\\n --column-element-margin: 2rem;\\n }\\n}\\n\\n@media (max-width: 1024px) and (min-width: 769px) {\\n :root {\\n --h1-size: 2rem;\\n --h3-size: 1rem;\\n --p-size: 0.8rem;\\n --image-size: 3rem;\\n --main-horizontal-margin: 3rem;\\n --main-vertical-spacing: 3rem;\\n --column-section-margin: 2rem;\\n --column-element-margin: 2rem;\\n }\\n}\\n\\n@media (max-width: 768px) {\\n :root {\\n --h1-size: 2rem;\\n --h3-size: 1rem;\\n --p-size: 0.8rem;\\n --image-size: 3rem;\\n --main-horizontal-margin: 1rem;\\n --main-vertical-spacing: 2.5rem;\\n --column-section-margin: 2.5rem;\\n --column-element-margin: 1.5rem;\\n }\\n}\\n\",\"%fontSize {\\n font-size: var(--h1-size);\\n}\\n\\n.left-column__title,\\n#typed,\\n.typed-cursor {\\n @extend %fontSize;\\n}\\n\",\"@use \\\"../assets/mixins/variables\\\" as v;\\n\\n// Styles for the navigation container\\n.left-column__nav {\\n margin-bottom: auto;\\n opacity: 1;\\n transition: v.$trans-page-load;\\n\\n // Styles for hiding the navigation on small screens\\n @media (max-width: 1023px) {\\n display: none;\\n }\\n\\n // Styles for hiding the navigation on page load\\n &--hide {\\n opacity: 0;\\n }\\n}\\n\\n// Styles for navigation menu items\\n.nav__item {\\n margin-bottom: var(--column-element-margin);\\n font-size: var(--h3-size);\\n}\\n\\n// Styles for navigation links\\n.nav__link { \\n position: relative;\\n left: 0;\\n opacity: 0.5;\\n transition: opacity v.$trans-hover, left v.$trans-hover;\\n\\n // Styles for the pseudo-element before the link\\n &::before {\\n content: '//';\\n position: absolute;\\n top: 0.15rem;\\n left: calc(#{var(--h3-size)} * -1);\\n opacity: 0; \\n transition: opacity v.$trans-hover;\\n }\\n\\n // Styles for link hover and active states\\n &:hover, \\n &--active {\\n left: var(--h3-size);\\n opacity: 1;\\n &::before {\\n opacity: 1;\\n }\\n }\\n}\\n\",\"@use \\\"../assets/mixins/variables\\\" as v;\\n\\n// Styles for the social media links\\n.left-column__social-links {\\n opacity: 1;\\n transition: v.$trans-page-load;\\n\\n &--hide {\\n opacity: 0;\\n }\\n}\\n\\n// Styles for the social media list\\n.social-links__list {\\n display: flex;\\n justify-content: flex-start;\\n}\\n\\n// Styles for the social media icons\\n.social__icon {\\n filter: invert(100%);\\n height: var(--image-size);\\n width: var(--image-size);\\n margin-right: var(--column-element-margin);\\n opacity: 0.5;\\n transition: opacity v.$trans-hover;\\n\\n &:hover {\\n opacity: 1;\\n }\\n}\\n\",\"@use '../assets/mixins/glassmorphism' as glass;\\n\\n// About section styles\\n.right-column__about {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n gap: var(--column-element-margin);\\n padding: var(--column-element-margin);\\n\\n @include glass.glassmorphism();\\n}\\n\\n// About title styles\\n.about__title {\\n font-size: var(--h3-size);\\n\\n // Hide title on smaller screens\\n @media (min-width: 1024px) {\\n display: none;\\n }\\n}\\n\\n// Paragraph styles\\n.about__paragraph {\\n font-size: var(--p-size);\\n line-height: 1.4rem;\\n}\\n\",\"@use \\\"./variables\\\" as v;\\n\\n@mixin glassmorphism($bg-color: v.$background-color) {\\n background: rgba($bg-color, 0.6);\\n border-radius: 15px;\\n box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.4);\\n\\tbackdrop-filter: blur(12px);\\n -webkit-backdrop-filter: blur(12px);\\n border: 1px solid rgba(v.$text-color, 0.15);\\n}\\n\",\"@use '../assets/mixins/glassmorphism' as glass;\\n@use '../assets/mixins/variables' as v;\\n\\n// Projects section styles\\n.right-column__projects {\\n display: flex;\\n flex-direction: column;\\n gap: var(--column-element-margin);\\n &--error {\\n padding: var(--column-element-margin);\\n @include glass.glassmorphism()\\n }\\n}\\n\\n// Projects title styles\\n.projects__title {\\n font-size: var(--h3-size);\\n\\n // Hide title on smaller screens\\n @media (min-width: 1024px) {\\n display: none;\\n }\\n}\\n\\n// Projects list styles\\n.projects__list {\\n display: flex;\\n flex-direction: column;\\n gap: var(--column-element-margin);\\n}\\n\\n// Github project card styles\\n.project__card {\\n position: relative;\\n overflow: hidden;\\n\\n @include glass.glassmorphism();\\n}\\n\\n// Github project image\\n.card__image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n object-position: 50% 0%;\\n}\\n\\n// Github project content styles\\n.card__content {\\n position: relative;\\n display: flex;\\n font-size: var(--p-size);\\n flex-direction: column;\\n padding: var(--column-element-margin) 2.5rem;\\n opacity: 0;\\n transition: opacity v.$trans-hover;\\n\\n // Show content on hover\\n &:hover {\\n opacity: 1;\\n }\\n\\n @include glass.glassmorphism();\\n\\n // Show cards by default on smaller screens\\n @media (max-width: 1023px) {\\n opacity: 1;\\n }\\n}\\n\\n// Content title styles\\n.content__title {\\n margin-bottom: calc(#{var(--column-element-margin)} / 2);\\n}\\n\\n// Title link styles\\n.title__link {\\n font-size: var(--h3-size);\\n\\n // Arrow animation on hover\\n &:hover > .link__arrow {\\n transform: translate(0.25rem, -0.25rem);\\n }\\n}\\n\\n// Link arrow styles\\n.link__arrow {\\n height: 1.5rem;\\n width: 1.5rem;\\n filter: invert(95%);\\n position: absolute;\\n transition: transform v.$trans-hover;\\n}\\n\\n// Content description styles\\n.content__description {\\n margin-bottom: var(--column-element-margin);\\n}\\n\\n// Languages used list styles\\n.content__languages {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 1rem;\\n}\\n\\n// Language item styles\\n.languages__item {\\n padding: 0.5rem 2rem;\\n\\n @include glass.glassmorphism(v.$highlight-color);\\n}\\n\\n// Error styles \\n.projects__error {\\n font-size: var(--p-size);\\n line-height: 1.4rem;\\n}\\n\\n.projects__error a{\\n color: v.$highlight-color;\\n}\",\"@use '../assets/mixins/glassmorphism' as glass;\\n\\n// Technologies section styles\\n.right-column__technologies {\\n display: flex;\\n flex-direction: column;\\n gap: var(--column-element-margin);\\n padding: var(--column-element-margin);\\n\\n @include glass.glassmorphism();\\n}\\n\\n// Title styles\\n.technologies__title {\\n font-size: var(--h3-size);\\n line-height: 1.3rem;\\n\\n // Hide title on smaller screens\\n @media (min-width: 1024px) {\\n display: none;\\n }\\n}\\n\\n// Section caption styles\\n.technologies__subtitle {\\n font-size: var(--p-size);\\n line-height: 1.3rem;\\n}\\n\\n// Grid container styles\\n.technologies__grid {\\n display: grid;\\n grid-template-columns: repeat(4, 1fr);\\n grid-template-rows: auto;\\n row-gap: var(--column-element-margin);\\n\\n // Adjust grid layout for smaller screens\\n @media (max-width: 1023px) {\\n grid-template-columns: repeat(3, 1fr);\\n }\\n}\\n\\n// Grid tile styles\\n.grid__tile {\\n font-size: var(--p-size);\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n// Tile image styles\\n.tile__image {\\n filter: invert(100%);\\n height: var(--image-size);\\n width: var(--image-size);\\n padding: 0.5rem;\\n}\\n\\n// Tile text styles\\n.tile__text {\\n text-align: center;\\n padding: 0.5rem;\\n}\\n\",\"@use '../assets/mixins/variables' as v;\\n@use '../assets/mixins/glassmorphism' as glass;\\n\\n.right-column__contact {\\n font-size: var(--p-size);\\n padding: var(--column-element-margin);\\n\\n @include glass.glassmorphism()\\n}\\n\\n.right-column__contact a {\\n color: v.$highlight-color;\\n}\",\"@use \\\"../assets/mixins/variables\\\" as v;\\n\\n// Canvas atoms\\n#background__canvas {\\n position: fixed;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n z-index: -9999;\\n will-change: contents;\\n transform: translateZ(0,0,0);\\n opacity: 0;\\n transition: v.$trans-page-load\\n}\",\"@use '../assets/mixins/variables' as v;\\n@use '../title/title';\\n@use '../nav/nav';\\n@use '../social_links/social_links';\\n@use '../about/about';\\n@use '../display_data/display_data';\\n@use '../technologies/technologies';\\n@use '../contact/contact.scss';\\n@use '../background/background';\\n\\n\\n// Root styles\\n:root {\\n background-color: v.$background-color;\\n color: v.$text-color;\\n font-family: v.$font-family;\\n}\\n\\n// Main container styles\\n.container {\\n width: 100vw;\\n height: 100vh;\\n display: flex;\\n padding: 0 var(--main-horizontal-margin);\\n justify-content: space-between;\\n gap: 1rem;\\n box-sizing: border-box;\\n}\\n\\n// Left column styles\\n.left-column {\\n position: sticky;\\n display: flex;\\n flex-direction: column;\\n gap: var(--column-section-margin);\\n width: 45%;\\n max-height: 100vh;\\n top: 0;\\n padding: var(--main-vertical-spacing) 0;\\n}\\n\\n// Right column styles\\n.right-column {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n gap: var(--column-section-margin);\\n padding: var(--main-vertical-spacing) 10px;\\n width: 50%;\\n opacity: 1;\\n transition: v.$trans-page-load;\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n overflow-y: overlay;\\n scroll-behavior: smooth;\\n &::-webkit-scrollbar {\\n display: none;\\n }\\n &--hide {\\n opacity: 0;\\n }\\n}\\n\\n// Media query for smaller screens\\n@media (max-width: 1023px) {\\n .container {\\n height: auto;\\n width: auto;\\n padding: var(--main-vertical-spacing) var(--main-horizontal-margin);\\n flex-direction: column;\\n gap: var(--column-section-margin);\\n }\\n\\n .left-column {\\n position: relative;\\n width: auto;\\n max-height: none;\\n padding: 0 10px;\\n }\\n\\n .right-column {\\n padding: 0 10px;\\n width: auto;\\n overflow-y: visible;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","window","addEventListener","observer","IntersectionObserver","entries","forEach","entry","id","target","getAttribute","intersectionRatio","document","querySelector","classList","add","remove","querySelectorAll","section","observe","query","gql","displayName","name","split","map","word","charAt","toUpperCase","slice","join","async","projects","createElement","setAttribute","projectsTitle","textContent","appendChild","projectsList","client","GraphQLClient","headers","Authorization","request","error","console","fetchData","user","pinnedItems","edges","edge","description","languages","openGraphImageUrl","deployments","node","projectCard","cardImage","src","alt","cardContent","contentTitle","titleLink","href","nodes","latestStatus","environmentUrl","arrow","arrowIcon","contentDescription","contentLanguages","language","languageItem","append","errorElement","innerHTML","displayData","container","canvas","leftColumn","leftColumnWrapper","leftColumnTitle","h2Element","h1Element","typedSpan","title","nav","navList","hrefs","label","index","navItem","navLink","setTimeout","socials","socialsList","url","icon","githubIcon","linkedInIcon","instagramIcon","social","socialsListItem","socialLink","socialImage","socialLinks","rightColumn","about","aboutTitle","paragraph","aboutPara","technologyData","HTMLIcon","CSSIcon","JSIcon","npmIcon","yarnIcon","webpackIcon","babelIcon","jestIcon","sassIcon","nodeIcon","rubyIcon","gitIcon","technologies","technologiesTitle","technologiesSubtitle","technologiesGrid","technology","technologiesTile","tileImage","tileText","listTechnologies","contactSection","contactText","contact","body","isIntersecting","threshold","getElementById","ctx","getContext","alpha","width","innerWidth","height","innerHeight","colours","randomIntFromRange","min","max","Math","floor","random","Particle","x","y","r","colour","this","radians","PI","velocity","distanceToCentre","update","lastPoint","cos","sin","draw","beginPath","strokeStyle","lineWidth","lineCap","moveTo","lineTo","stroke","closePath","particles","i","radius","push","array","length","init","animate","requestAnimationFrame","fillStyle","fillRect","particle","style","opacity","background","isFirstString","Typed","stringsElement","typeSpeed","backSpeed","backDelay","preStringTyped","strings","cursor","color","backgroundColor","log","renderData","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___"],"sourceRoot":""}