{"version":3,"file":"js/app.b2a99716.js","mappings":"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","sources":["webpack://website/./src/App.vue","webpack://website/./src/components/Navigation.vue","webpack://website/./src/components/Navigation.vue?399a","webpack://website/./src/App.vue?7ccd","webpack://website/./src/views/HomeView.vue","webpack://website/./src/components/Intro.vue","webpack://website/./src/components/Intro.vue?4ec2","webpack://website/./src/components/Lights.vue","webpack://website/./src/lib/lights.js","webpack://website/./src/components/Lights.vue?19d9","webpack://website/./src/components/About.vue","webpack://website/./src/components/About.vue?5f92","webpack://website/./src/components/Houndini.vue","webpack://website/./src/components/Houndini.vue?fd4f","webpack://website/./src/components/Code.vue","webpack://website/./src/components/Code.vue?52d4","webpack://website/./src/components/HomePhotography.vue","webpack://website/./src/components/HomePhotography.vue?6d2e","webpack://website/./src/components/Contact.vue","webpack://website/./src/components/Contact.vue?d7c1","webpack://website/./src/components/SiteFooter.vue","webpack://website/./src/components/SiteFooter.vue?41ca","webpack://website/./src/views/HomeView.vue?1da1","webpack://website/./src/router/index.js","webpack://website/./src/lib/fontawesome-icons.js","webpack://website/./src/main.js","webpack://website/./src/components/Work.vue","webpack://website/./src/components/Project.vue","webpack://website/./src/components/Project.vue?93cb","webpack://website/./src/components/Work.vue?37b7","webpack://website/webpack/bootstrap","webpack://website/webpack/runtime/chunk loaded","webpack://website/webpack/runtime/compat get default export","webpack://website/webpack/runtime/define property getters","webpack://website/webpack/runtime/ensure chunk","webpack://website/webpack/runtime/get javascript chunk filename","webpack://website/webpack/runtime/get mini-css chunk filename","webpack://website/webpack/runtime/global","webpack://website/webpack/runtime/hasOwnProperty shorthand","webpack://website/webpack/runtime/load script","webpack://website/webpack/runtime/make namespace object","webpack://website/webpack/runtime/node module decorator","webpack://website/webpack/runtime/publicPath","webpack://website/webpack/runtime/css loading","webpack://website/webpack/runtime/jsonp chunk loading","webpack://website/webpack/startup"],"sourcesContent":["<template>\n <Navigation></Navigation>\n <router-view/>\n</template>\n\n<script>\nimport Navigation from '@/components/Navigation.vue';\n\nexport default {\n name: 'App',\n components: {\n Navigation,\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import './scss/main';\n</style>\n","<template>\n <nav id=\"nav\" class=\"nav\" role=\"navigation\" ref=\"navFocusTrap\">\n <div>\n <div class=\"nav-controls\" ref=\"navControls\">\n <button\n type=\"button\"\n :class=\"[{ 'button-override-black': isMenuOpen }, 'button button-shadow button-red nav-control-open']\"\n @click=\"toggleMenu\"\n @focus=\"onFocus\"\n :aria-expanded=\"isMenuOpen?'true':'false'\"\n aria-controls=\"menu\"\n >\n <span v-if=\"!isMenuOpen\">Menu</span>\n <span v-if=\"isMenuOpen\">Close Menu</span>\n <span :class=\"[{ 'is-active': isMenuOpen }, 'hamburger hamburger--collapse']\">\n <span class=\"hamburger-box\">\n <span class=\"hamburger-inner\"></span>\n </span>\n </span>\n </button>\n </div>\n <div id=\"menu\" :class=\"[{ 'is-active': isMenuOpen }, 'nav-overlay']\" ref=\"navOverlay\" aria-label=\"Primary\" role=\"navigation\">\n <menu :class=\"[{ 'animate-menu': isMenuOpen }, 'nav-menu']\">\n <router-link @click=\"closeMenu\" to=\"/\">Home</router-link>\n <!-- <router-link @click=\"closeMenu\" to=\"/about\">About</router-link> -->\n <router-link @click=\"closeMenu\" to=\"/code\">Code</router-link>\n <router-link @click=\"closeMenu\" to=\"/photography\">Photography</router-link>\n <a class=\"nav-external-link nav-external-link-first\" target=\"_blank\" href=\"https://www.instagram.com/eightbitkent/\" rel=\"noopener\" title=\"Kent Widman on Instagram\">\n <span class=\"icon-launch\"></span>@eightbitkent\n </a>\n <a class=\"nav-external-link\" href=\"https://soundcloud.com/kent-widman\" target=\"_blank\" rel=\"noopener\" title=\"Kent Widman on Soundcloud\">\n <span class=\"icon-launch\"></span>soundcloud\n </a>\n <a class=\"nav-external-link\" href=\"https://www.linkedin.com/in/kent-widman/\" target=\"_blank\" rel=\"noopener\" title=\"Kent Widman on LinkedIn\">\n <span class=\"icon-launch\"></span>linkedin\n </a>\n </menu>\n </div>\n </div>\n </nav>\n</template>\n\n<script>\nimport * as focusTrap from 'focus-trap';\n\nexport default {\n name: 'SiteNavigation',\n data() {\n return {\n isMenuOpen: false,\n // scroll behavior\n didScroll: false,\n lastScrollTop: 0,\n delta: 5,\n navbarHeight: 60,\n ft: null,\n };\n },\n mounted() {\n this.setup();\n\n // add focus trap modal\n this.ft = focusTrap.createFocusTrap(this.$refs.navFocusTrap);\n },\n watch: {\n isMenuOpen(val) {\n const htmlEl = document.getElementsByTagName('html')[0];\n if (val) {\n htmlEl.classList.add('no-scroll', 'nav-open');\n\n this.hideContentForScreenReaders();\n\n // add focus trap modal\n this.ft.activate();\n\n // setTimeout(() => {\n // this.ft.updateContainerElements();\n // }, 1000);\n } else {\n htmlEl.classList.remove('no-scroll', 'nav-open');\n\n this.showContentForScreenReaders();\n\n setTimeout(() => {\n this.$refs.navOverlay.scrollTo(0, 0);\n }, 300);\n\n this.ft.deactivate();\n }\n },\n },\n methods: {\n openMenu() {\n this.isMenuOpen = true;\n },\n closeMenu() {\n this.isMenuOpen = false;\n },\n toggleMenu() {\n this.isMenuOpen = !this.isMenuOpen;\n },\n setup() {\n document.addEventListener('scroll', this.onScroll);\n\n setInterval(this.checkInterval, 250);\n },\n onScroll() {\n this.didScroll = true;\n },\n onFocus() {\n this.lastScrollTop = 0;\n this.$refs.navControls.classList.remove('nav-up');\n },\n checkInterval() {\n if (this.didScroll) {\n this.hasScrolled();\n this.didScroll = false;\n }\n },\n hasScrolled() {\n const st = window.scrollY;\n\n // Make sure they scroll more than delta\n if (Math.abs(this.lastScrollTop - st) <= this.delta) {\n return;\n }\n\n // If they scrolled down and are past the navbar, add class .nav-up.\n // This is necessary so you never see what is \"behind\" the navbar.\n if (st > this.lastScrollTop && st > this.navbarHeight && !this.isMenuOpen) {\n // Scroll Down\n this.$refs.navControls.classList.add('nav-up');\n } else {\n // Scroll Up\n const windowHeight = window.innerHeight;\n const documentHeight = document.body.scrollHeight;\n if (st + windowHeight < documentHeight) {\n this.$refs.navControls.classList.remove('nav-up');\n }\n }\n\n this.lastScrollTop = st;\n },\n hideContentForScreenReaders() {\n const elementsToHide = document.querySelectorAll('#main');\n elementsToHide.forEach((e) => { e.setAttribute('aria-hidden', 'true'); });\n },\n showContentForScreenReaders() {\n const elementsToShow = document.querySelectorAll('#main');\n elementsToShow.forEach((e) => { e.setAttribute('aria-hidden', 'false'); });\n },\n },\n destoyed() {\n const htmlEl = document.getElementsByTagName('html')[0];\n htmlEl.classList.remove('no-scroll', 'nav-open');\n\n if (this.ft) {\n this.ft.deactivate();\n }\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@use \"sass:math\";\n@import '../scss/common';\n\n.nav {\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n.nav-controls {\n pointer-events: visible;\n position: fixed;\n right: 20px;\n top: 20px;\n transform: translate(0, 0);\n transition: transform 0.3s ease-in-out,\n top 0s linear 0.3s;\n z-index: 200;\n}\n\n.nav-control-open {\n .hamburger {\n margin-left: 8px;\n }\n}\n\n.nav-overlay {\n pointer-events: none;\n background-color: $color-off-white;\n // background-image: url('/images/bg-menu.jpg');\n // background-position: top center;\n background-size: math.div(2500px, 2) math.div(1600px, 2);\n background-repeat: no-repeat;\n position: fixed;\n overflow-y: scroll;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 89;\n transition: transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out,\n visibility 0s ease-in-out 0.3s;\n transform-origin: top center;\n opacity: 0;\n visibility: hidden;\n\n &.is-active {\n pointer-events: all;\n transition: transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out,\n visibility 0s ease-in-out 0s;\n transform-origin: top center;\n opacity: 1;\n visibility: unset;\n }\n}\n\n.nav-menu {\n padding: 110px 0 90px 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n @include mq($from: mobile) {\n padding: 160px 0 90px 0;\n }\n\n @include mq($from: tablet-large) {\n padding: 90px 0 90px 0;\n }\n\n a {\n text-decoration: none;\n font-size: 1.625rem;\n color: $color-black;\n transition: transform 0.2s ease-in-out 0.5s,\n opacity 0.2s ease-in-out,\n visibility 0s ease-in-out 0.3s;\n transform-origin: top center;\n opacity: 0;\n visibility: hidden;\n transform: translate(0, 100px);\n\n @include mq($from: mobile) {\n font-size: 2rem\n }\n }\n\n &.animate-menu {\n a {\n transform: translate(0, 0);\n transition: transform 0.5s cubic-bezier(0,.66,.48,1),\n opacity 0.5s cubic-bezier(0,.66,.48,1),\n visibility 0s cubic-bezier(0,.66,.48,1) 0s;\n opacity: 1;\n visibility: unset;\n }\n\n a:nth-child(1) {\n transition-delay: 0.5s - 0.3s;\n }\n a:nth-child(2) {\n transition-delay: 0.55s - 0.3s;\n }\n a:nth-child(3) {\n transition-delay: 0.60s - 0.3s;\n }\n a:nth-child(4) {\n transition-delay: 0.65s - 0.3s;\n }\n a:nth-child(5) {\n transition-delay: 0.70s - 0.3s;\n }\n a:nth-child(6) {\n transition-delay: 0.75s - 0.3s;\n }\n a:nth-child(7) {\n transition-delay: 0.80s - 0.3s;\n }\n a:nth-child(8) {\n transition-delay: 0.85s - 0.3s;\n }\n a:nth-child(9) {\n transition-delay: 0.90s - 0.3s;\n }\n a:nth-child(10) {\n transition-delay: 0.95s - 0.3s;\n }\n a:nth-child(11) {\n transition-delay: 1.00s - 0.3s;\n }\n a:nth-child(12) {\n transition-delay: 1.05s - 0.3s;\n }\n a:nth-child(13) {\n transition-delay: 1.10s - 0.3s;\n }\n }\n\n a + a {\n margin-top: 1.2em;\n }\n}\n\n.nav-external-link {\n span {\n font-size: 28px;\n margin-right: 0.4em;\n }\n}\n\n// .nav-external-link-first {\n// margin-top: 3vh !important;\n\n// @include mq($from: tablet-large) {\n// margin-top: 5vh !important;\n// }\n// }\n</style>\n","import { render } from \"./Navigation.vue?vue&type=template&id=64e445e8\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js\"\n\nimport \"./Navigation.vue?vue&type=style&index=0&id=64e445e8&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=6b2589b0\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=6b2589b0&lang=scss\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n <Intro />\n <Lights />\n <About />\n <Houndini />\n <Code />\n <Work />\n <HomePhotography />\n <Contact />\n <SiteFooter />\n</template>\n\n<script>\n// @ is an alias to /src\n// import GlobalNav from '@/components/GlobalNav.vue';\nimport Intro from '@/components/Intro.vue';\nimport Lights from '@/components/Lights.vue';\nimport About from '@/components/About.vue';\nimport Houndini from '@/components/Houndini.vue';\nimport Code from '@/components/Code.vue';\nimport Work from '@/components/Work.vue';\nimport HomePhotography from '@/components/HomePhotography.vue';\nimport Contact from '@/components/Contact.vue';\nimport SiteFooter from '@/components/SiteFooter.vue';\n\nexport default {\n name: 'HomeView',\n components: {\n Intro,\n Lights,\n About,\n Houndini,\n Code,\n Work,\n Contact,\n HomePhotography,\n SiteFooter,\n },\n metaInfo: {\n title: 'Home',\n titleTemplate: '%s | Kent Widman Web Developer',\n // meta: [\n // { charset: 'utf-8' },\n // { name: 'viewport', content: 'width=device-width, initial-scale=1' },\n // ],\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n @import '../scss/common';\n @import '../scss/theme/neo';\n @import '../scss/views/home';\n</style>\n","<template>\n <section id=\"intro\" class=\"intro neo\">\n <div class=\"intro-text-wrapper\">\n <div class=\"intro-text\">\n <h1>\n <span class=\"intro-text__part-1\" data-swap-text=\"namdiv tnek\">kent widman</span>\n <span class=\"intro-text__part-2\" data-swap-text=\"digital dictator\">technical director</span>\n </h1>\n <h2>\n <span class=\"intro-text__part-3\">\n <span data-swap-text=\"lead developer\">hand crafted</span>\n <span> </span>\n <span data-swap-text=\"code guru\">digital blitz</span>\n </span>\n </h2>\n </div>\n </div>\n </section>\n</template>\n\n<script>\n// import swapText from '../lib/swap-text';\n\nexport default {\n name: 'IntroSection',\n // mounted() {\n // swapText.init(document.getElementById('intro'));\n // },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@import '../scss/common';\n\n.intro {\n background-image: url('~@/assets/intro.jpg');\n background-position: top center;\n background-repeat: no-repeat;\n background-size: cover;\n padding: 0;\n height: 100%;\n min-height: 500px;\n}\n\n.intro-text {\n h1,\n h2 {\n margin: 0 !important;\n padding: 0 !important;\n }\n}\n\n.intro-text__part-1,\n.intro-text__part-2,\n.intro-text__part-3 {\n display: block;\n font-family: 'Fira Mono', monospace;\n text-align: left;\n margin: 0;\n padding: 0;\n color: #ffffff;\n\n span {\n position: relative;\n\n &:before {\n content: attr('data-text');\n position: absolute;\n top: 0;\n left: 0;\n }\n }\n}\n\n.intro-text__part-1 {\n font-size: 13.5vw;\n margin-bottom: 2vw;\n text-align: center;\n\n @media screen and (min-width: 720px) {\n font-size: 100px;\n margin-bottom: 0.10em;\n }\n}\n\n.intro-text__part-2 {\n font-size: 8.2vw;\n margin-bottom: 2vw;\n text-align: center;\n color: #44f5f3;\n\n @media screen and (min-width: 720px) {\n font-size: 60.8px;\n margin-bottom: 0.2em;\n }\n}\n\n.intro-text__part-3 {\n font-size: 5.9vw;\n color: #f639ed;\n text-align: center;\n line-height: 1.1em;\n\n @media screen and (min-width: 720px) {\n font-size: 42.5px;\n }\n}\n\n.intro-text-wrapper {\n position: absolute;\n top: 50%;\n width: 100%;\n transform: translateY(-50%);\n text-align: center;\n}\n\n.intro-text {\n display: block;\n margin: auto;\n max-width: 668px;\n}\n</style>\n","import { render } from \"./Intro.vue?vue&type=template&id=e014bca4\"\nimport script from \"./Intro.vue?vue&type=script&lang=js\"\nexport * from \"./Intro.vue?vue&type=script&lang=js\"\n\nimport \"./Intro.vue?vue&type=style&index=0&id=e014bca4&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <section class=\"lights bgc-purple neo\">\n <canvas id=\"lightsApp\"></canvas>\n <div class=\"about-text\">\n <h3>\n <span class=\"color-purple\">Digital</span> <span>is a canvas for</span><br>\n <span class=\"color-purple\">expressing</span> <span>ideas</span><br>\n <span>convey</span> <span class=\"color-purple\">emotions</span><br>\n <span class=\"color-purple\">pushing</span> <span>bounderies</span><br>\n <span>and</span> <span class=\"color-purple\">change</span> <span>minds</span>\n </h3>\n </div>\n </section>\n</template>\n\n<script>\nimport lights from '@/lib/lights';\n\nexport default {\n name: 'LightsSection',\n mounted() {\n lights.init(document.getElementById('lightsApp'));\n },\n beforeUnmount() {\n console.log('beforeUnmount lights');\n lights.destroy();\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@import '../scss/common';\n\n.lights {\n position: relative;\n padding: 0 !important;\n}\n\n#lightsApp {\n display: block !important;\n width: 100%;\n height: 100%;\n image-rendering: pixelated;\n}\n\n.about {\n height: 100%;\n min-height: 500px;\n // background-size: contain;\n // padding-bottom: 10px;\n}\n\n.about-text {\n position: absolute;\n transform: translate(0, -50%);\n top: 50%;\n left: 10%;\n right: 10%;\n color: #ffffff;\n\n @media screen and (min-width: 641px) {\n right: 15vh;\n }\n\n h3 {\n margin: 0;\n text-align: right;\n font-size: 11vw;\n\n @media screen and (min-width: 641px) {\n font-size: 60px;\n }\n }\n\n span span {\n opacity: 0;\n }\n\n span.glitch {\n &:nth-child(1) {\n &:before,\n &:after {\n animation-delay: 0s;\n opacity: inherit;\n }\n }\n &:nth-child(2) {\n &:before,\n &:after {\n animation-delay: 5s;\n }\n }\n &:nth-child(3) {\n &:before,\n &:after {\n animation-delay: 3s;\n }\n }\n &:nth-child(4) {\n &:before,\n &:after {\n animation-delay: 7s;\n }\n }\n &:nth-child(5) {\n &:before,\n &:after {\n animation-delay: 1s;\n }\n }\n &:nth-child(6) {\n &:before,\n &:after {\n animation-delay: 8s;\n }\n }\n &:nth-child(7) {\n &:before,\n &:after {\n animation-delay: 2s;\n }\n }\n &:nth-child(8) {\n &:before,\n &:after {\n animation-delay: 4s;\n }\n }\n }\n}\n</style>\n","/* eslint-disable */\nlet canvasElement;\nlet context;\nconst fps = 60;\nlet fpsTimmer = 0;\nlet fadeTime = 0;\nlet matrixSize = [18, 10];\nlet vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\nlet vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\nlet screenSize = [vw, vh];\nlet enableAnimation = true;\nlet changePatternInterval = null;\nconst lightPatterns = [\n lightPattern1,\n lightPattern2,\n lightPattern3,\n strobe1,\n strobe2,\n];\n\nlet currenLightPattern = 0;\nlet matrix = null;\nlet colors = [\n [246, 57, 237], //purple\n [68, 245, 243], //teal\n]\n\nfunction randomnumber(max, min) {\n if (typeof min === 'undefined') {\n min = 0;\n }\n\n return Math.floor(Math.random() * max) + min;\n}\n\nfunction init(el) {\n enableAnimation = true;\n\n canvasElement = el;\n context = canvasElement.getContext('2d');\n\n //build matrix\n matrix = new Array(matrixSize[0]); // create an empty array of length n\n for (let y = 0; y < matrixSize[1]; y++) {\n matrix[y] = new Array(matrixSize[1]); // make each element an array\n for (let x = 0; x < matrixSize[0]; x++) {\n matrix[y][x] = [0, 0, 0];\n }\n }\n\n window.addEventListener('resize', screenResize);\n screenResize();\n\n // Loop\n window.requestAnimationFrame(loop);\n\n changePatternInterval = setInterval(function () {\n let random_number = randomnumber(lightPatterns.length);\n while (lightPatterns.length > 1 && currenLightPattern === random_number) {\n random_number = randomnumber(lightPatterns.length);\n }\n\n console.log(`lightPatterns: ${random_number}`);\n\n // let random_number = randomnumber(3);\n currenLightPattern = random_number;\n }, 2000);\n}\n\nfunction destroy() {\n clearInterval(changePatternInterval);\n window.removeEventListener('resize', screenResize);\n enableAnimation = false;\n}\n\nfunction loop() {\n let now = Date.now();\n if (now >= fpsTimmer) {\n lightPatterns[currenLightPattern]();\n render();\n now = Date.now();\n fpsTimmer = now + 1000 / fps;\n }\n\n if (enableAnimation) {\n requestAnimationFrame(loop);\n } else {\n context = null;\n matrix = null;\n }\n}\n\nfunction render() {\n let pixelWidth = screenSize[0] / matrixSize[0];\n let pixelHeight = screenSize[1] / matrixSize[1];\n\n for (let y = 0; y < matrixSize[1]; y++) {\n for (let x = 0; x < matrixSize[0]; x++) {\n let color = matrix[y][x];\n if (color instanceof Array) {\n context.fillStyle = 'rgb(' + color[0] + ', ' + color[1] + ', ' + color[2] + ')';\n context.fillRect(x, y, x + 1, y + 1);\n //console.log(pixelWidth * x, pixelWidth * y, pixelWidth * (x+1), pixelWidth * (y+1));\n }\n }\n }\n}\n\nfunction resize() {\n context.canvas.width = matrixSize[0];\n context.canvas.height = matrixSize[1];\n}\n\nfunction lightPattern1() {\n for (let y = 0; y < matrixSize[1]; y++) {\n for (let x = 0; x < matrixSize[0]; x++) {\n let tigger = randomnumber(18) === 0;\n // New pixel\n if (tigger) {\n let colorIndex = randomnumber(colors.length);\n matrix[y][x] = [\n colors[colorIndex][0],\n colors[colorIndex][1],\n colors[colorIndex][2]\n ];\n } else {\n matrix[y][x][0] = Math.floor(matrix[y][x][0] * 0.85);\n matrix[y][x][1] = Math.floor(matrix[y][x][1] * 0.85);\n matrix[y][x][2] = Math.floor(matrix[y][x][2] * 0.85);\n }\n }\n }\n}\n\nlet lightPattern2lastIndex = 0;\nlet lightPattern2Index = 0;\nlet lightPattern2IndexSpacing = matrixSize[1] + 10;\n\nfunction lightPattern2() {\n for (let y = 0; y < matrixSize[1]; y++) {\n for (let x = 0; x < matrixSize[0]; x++) {\n let tigger = ((lightPattern2Index + x + y * matrixSize[1]) % lightPattern2IndexSpacing) === 0;\n if (tigger) {\n lightPattern2lastIndex++\n let colorIndex = Math.floor(lightPattern2lastIndex / ((matrixSize[0] * matrixSize[1]))) % colors.length;\n matrix[y][x] = [\n colors[colorIndex][0],\n colors[colorIndex][1],\n colors[colorIndex][2]\n ];\n } else {\n matrix[y][x][0] = Math.floor(matrix[y][x][0] * 0.85);\n matrix[y][x][1] = Math.floor(matrix[y][x][1] * 0.85);\n matrix[y][x][2] = Math.floor(matrix[y][x][2] * 0.85);\n }\n }\n }\n\n lightPattern2Index++;\n}\n\nfunction lightPattern3() {\n\n // Sprites\n const sprites = [\n [\n [0, 1, 1, 0, 0, 1, 1, 0],\n [1, 1, 1, 1, 1, 0, 0, 1],\n [1, 1, 1, 1, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1, 1],\n [0, 1, 1, 1, 1, 1, 1, 0],\n [0, 1, 1, 1, 1, 1, 1, 0],\n [0, 0, 1, 1, 1, 1, 0, 0],\n [0, 0, 0, 1, 1, 0, 0, 0],\n ], [\n [1, 0, 0, 0, 1, 0, 0, 0],\n [1, 1, 1, 1, 1, 0, 1, 0],\n [1, 1, 1, 1, 1, 0, 0, 1],\n [0, 1, 1, 0, 1, 0, 0, 1],\n [1, 0, 1, 1, 1, 0, 1, 0],\n [0, 1, 1, 1, 1, 1, 1, 0],\n [0, 1, 1, 1, 1, 1, 1, 0],\n [0, 1, 0, 1, 0, 0, 1, 0],\n ], [\n [1, 0, 0, 0, 0, 0, 0, 1],\n [0, 1, 0, 0, 0, 0, 1, 0],\n [0, 0, 1, 1, 1, 1, 0, 0],\n [0, 1, 0, 1, 1, 0, 1, 0],\n [0, 0, 1, 1, 1, 1, 0, 0],\n [1, 1, 1, 1, 1, 1, 1, 1],\n [1, 0, 1, 0, 0, 1, 0, 1],\n [1, 0, 1, 1, 1, 1, 0, 1],\n ], [\n [0, 0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 1, 0, 0, 0, 0],\n [0, 0, 1, 0, 1, 0, 0, 0],\n [0, 1, 0, 1, 0, 1, 0, 0],\n [1, 0, 1, 0, 1, 0, 1, 0],\n [0, 1, 1, 1, 1, 1, 0, 0],\n [0, 0, 1, 0, 1, 0, 0, 0],\n [0, 0, 0, 1, 0, 0, 0, 0],\n ], [\n [0, 0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 1, 1, 0],\n [0, 1, 1, 1, 1, 1, 1, 1],\n [0, 1, 0, 0, 1, 0, 0, 1],\n [0, 1, 1, 0, 1, 0, 1, 1],\n [0, 1, 1, 1, 1, 1, 1, 1],\n [0, 1, 1, 1, 1, 1, 1, 1],\n [0, 1, 0, 1, 0, 1, 0, 1],\n ],\n ];\n\n for (let y = 0; y < matrixSize[1]; y++) {\n for (let x = 0; x < matrixSize[0]; x++) {\n matrix[y][x][0] = Math.floor(matrix[y][x][0] * 0.85);\n matrix[y][x][1] = Math.floor(matrix[y][x][1] * 0.85);\n matrix[y][x][2] = Math.floor(matrix[y][x][2] * 0.85);\n }\n }\n\n // print sprite\n const skip = 10 * Math.random() > 2;\n const sprite = Math.floor(sprites.length * Math.random());\n const startX = Math.floor(matrixSize[0] * Math.random() - 4);\n const startY = Math.floor(matrixSize[1] * Math.random() - 4);\n const colorIndex = randomnumber(colors.length);\n const flip = Math.round(Math.random()) === 1;\n\n if (!skip){\n for (let y = 0; y < 8; y++) {\n for (let x = 0; x < 8; x++) {\n const currentX = startX + x;\n const currentY = startY + y;\n \n if (currentX >= 0 && currentY >= 0 && currentX < matrixSize[0] && currentY < matrixSize[1]) {\n if (flip){\n if (sprites[sprite][y][7 - x] > 0) {\n matrix[currentY][currentX][0] = colors[colorIndex][0] * sprites[sprite][y][7 - x];\n matrix[currentY][currentX][1] = colors[colorIndex][1] * sprites[sprite][y][7 - x];\n matrix[currentY][currentX][2] = colors[colorIndex][2] * sprites[sprite][y][7 - x];\n }\n } else {\n if (sprites[sprite][y][x] > 0) {\n matrix[currentY][currentX][0] = colors[colorIndex][0] * sprites[sprite][y][x];\n matrix[currentY][currentX][1] = colors[colorIndex][1] * sprites[sprite][y][x];\n matrix[currentY][currentX][2] = colors[colorIndex][2] * sprites[sprite][y][x];\n }\n }\n }\n }\n }\n }\n}\n\nfunction strobe1() {\n let colorIndex = randomnumber(colors.length);\n let tigger = randomnumber(5) === 0;\n\n for (let y = 0; y < matrixSize[1]; y++) {\n for (let x = 0; x < matrixSize[0]; x++) {\n if (tigger) {\n matrix[y][x] = [\n colors[colorIndex][0],\n colors[colorIndex][1],\n colors[colorIndex][2]\n ];\n } else {\n matrix[y][x][0] = Math.floor(matrix[y][x][0] * 0.6);\n matrix[y][x][1] = Math.floor(matrix[y][x][1] * 0.6);\n matrix[y][x][2] = Math.floor(matrix[y][x][2] * 0.6);\n }\n }\n }\n}\n\nfunction strobe2() {\n let colorIndex = randomnumber(colors.length);\n let tigger = randomnumber(8) === 0;\n let horizontal = randomnumber(2);\n let isHorizontal = horizontal === 1;\n let divider = randomnumber(8) + 1;\n let slice = Math.floor(matrixSize[horizontal] / divider);\n let start = randomnumber(divider) * slice;\n let end = start + slice;\n\n for (let y = 0; y < matrixSize[1]; y++) {\n for (let x = 0; x < matrixSize[0]; x++) {\n if (isHorizontal && tigger && x >= start && x <= end) {\n matrix[y][x] = [\n colors[colorIndex][0],\n colors[colorIndex][1],\n colors[colorIndex][2]\n ];\n } else if (!isHorizontal && tigger && y >= start && y <= end) {\n matrix[y][x] = [\n colors[colorIndex][0],\n colors[colorIndex][1],\n colors[colorIndex][2]\n ];\n } else {\n matrix[y][x][0] = Math.floor(matrix[y][x][0] * 0.8);\n matrix[y][x][1] = Math.floor(matrix[y][x][1] * 0.8);\n matrix[y][x][2] = Math.floor(matrix[y][x][2] * 0.8);\n }\n }\n }\n}\n\nfunction screenResize() {\n let matrixSizeWidth,\n matrixSizeHeight;\n\n vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n\n screenSize = [vw, vh];\n\n if (vw > vh) {\n if (vw > 1000) {\n matrixSizeWidth = Math.round(vw / 80);\n matrixSizeHeight = Math.round(vh / 80);\n } else {\n matrixSizeWidth = Math.round(vw / 40);\n matrixSizeHeight = Math.round(vh / 40);\n }\n } else {\n if (vh > 1000) {\n matrixSizeWidth = Math.round(vw / 80);\n matrixSizeHeight = Math.round(vh / 80);\n } else {\n matrixSizeWidth = Math.round(vw / 40);\n matrixSizeHeight = Math.round(vh / 40);\n }\n }\n\n matrixSize = [matrixSizeWidth, matrixSizeHeight];\n\n //rebuild matrix\n for (let y = 0; y < matrixSize[1]; y++) {\n if (!Array.isArray(matrix[y])) {\n matrix[y] = new Array(matrixSize[1]);\n for (let x = 0; x < matrixSize[0]; x++) {\n matrix[y][x] = [0, 0, 0];\n }\n } else {\n for (let x = 0; x < matrixSize[0]; x++) {\n if (!Array.isArray(matrix[y][x])) {\n matrix[y][x] = [0, 0, 0];\n }\n }\n }\n }\n\n resize();\n console.log('resize');\n}\n\nexport default {\n init: init,\n destroy: destroy\n};","import { render } from \"./Lights.vue?vue&type=template&id=23e438b0\"\nimport script from \"./Lights.vue?vue&type=script&lang=js\"\nexport * from \"./Lights.vue?vue&type=script&lang=js\"\n\nimport \"./Lights.vue?vue&type=style&index=0&id=23e438b0&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <section class=\"about bgc-black light neo padded\">\n <h2>About</h2>\n <p>\n Kent Widman is a Technical Director at Cramer-Krasselt, the Second-largest\n independent advertising agency in the United States.\n Born and raised in a ski-town in northern Sweden, music, art, and computers,\n have always been a big part of his life and identity.\n Today Kent provides web consulting, codes full-stack websites, and web applications\n while mentoring developers, recording music at his home studio, play and go to shows, and photography.\n </p>\n <h2>Skills</h2>\n <div class=\"skills\">\n <div>\n <h3>Front-End</h3>\n <ul>\n <li>HTML5</li>\n <li>CSS3, SASS/SCSS</li>\n <li>JavaScript(ES6)</li>\n <li>Worpress, CraftCMS theming</li>\n <li>Vue.js, React</li>\n <li>Canvas</li>\n </ul>\n </div>\n <div>\n <h3>Back-End</h3>\n <ul>\n <li>PHP Frameworks (Custom Worpress Plugins, CraftCMS, Laravel, Code Igniter)</li>\n <li>Node.js</li>\n <li>MySQL</li>\n <li>MongoDB</li>\n <li>Mongoose</li>\n <li>Express</li>\n </ul>\n </div>\n <div>\n <h3>Infrastructure</h3>\n <ul>\n <li>Centos/Redhat server admin</li>\n <li>Apache Web Server Configuration</li>\n <li>Server Hardening</li>\n <li>Web Aplication Firewall</li>\n </ul>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nexport default {\n name: 'AboutSection',\n};\n</script>\n\n<style lang=\"scss\">\n@import '../scss/common';\n\n.about {\n background-position: top center;\n background-attachment: fixed;\n text-align: center;\n height: auto;\n}\n\n.skills {\n max-width: 800px;\n margin-top: 50px;\n margin-left: auto;\n margin-right: auto;\n display: grid;\n column-gap: 30px;\n text-align: left;\n\n @media screen and (min-width: 700px) {\n grid-template-columns: 1fr 1fr 1fr;\n }\n\n ul {\n list-style: none;\n padding-left: 0;\n\n font-size: 20px;\n line-height: 1.6;\n\n @media screen and (min-width: 480px) {\n font-size: 18px;\n }\n }\n}\n</style>\n","import { render } from \"./About.vue?vue&type=template&id=00bf1ae3\"\nimport script from \"./About.vue?vue&type=script&lang=js\"\nexport * from \"./About.vue?vue&type=script&lang=js\"\n\nimport \"./About.vue?vue&type=style&index=0&id=00bf1ae3&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <section id=\"code\" class=\"houndini light bgc-purple neo padded\">\n <h2>Houndini Chrome Plugin</h2>\n <h3 class=\"tag-line\">Now you see it, now you don't.</h3>\n <div class=\"houndini-video\">\n <video preload=\"auto\" playsinline autoplay muted loop>\n <source src=\"/videos/houndini.mp4\" type=\"video/mp4\" />\n </video>\n </div>\n <div>\n <p>Escape the Interruption: Say Goodbye to Pre-Roll Video Ads</p>\n <p>Imagine enjoying your favorite shows without pesky pre-roll video ads. With Houndini, a simple click or keyboard shortcut(Ctrl + B (Windows) or Command + B (Mac)) skips the ads, giving you uninterrupted viewing across various streaming platforms.</p>\n <p>Elevate your streaming experience with Houndini – because your time is too valuable to be interrupted.</p>\n </div>\n <p class=\"links\">\n <a class=\"btn btn-purple\" href=\"https://chrome.google.com/webstore/detail/houndini/immldcpimndbobdcmdanpoojgeinpioi\" target=\"_blank\">\n Download free from chrome webstore\n </a>\n <a btn btn-purple href=\"https://github.com/kentwidman/houndini\">Github</a>\n </p>\n </section>\n</template>\n\n<script>\nexport default {\n name: 'CodeSection',\n data() {\n return {\n email: '',\n time: 10,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import '../scss/common';\n\n.tag-line {\n text-align: center;\n}\n\n.houndini-video video {\n display: block;\n margin: 3em auto;;\n}\n\n.links{\n display: flexbox;\n flex-wrap: wrap;\n justify-content: center;\n\n a + a {\n margin-left: 2em;\n }\n}\n</style>\n","import { render } from \"./Houndini.vue?vue&type=template&id=bf66eba2\"\nimport script from \"./Houndini.vue?vue&type=script&lang=js\"\nexport * from \"./Houndini.vue?vue&type=script&lang=js\"\n\nimport \"./Houndini.vue?vue&type=style&index=0&id=bf66eba2&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <section id=\"code\" class=\"code dark bgc-turquoise neo padded\">\n <h2>Code Examples</h2>\n <p>\n Check out some of my coding demos, and samples from past projects.\n </p>\n\n <div class=\"code-examples\">\n <div class=\"code-example\">\n <img src=\"../assets/code/kentris/title_bg.gif\" alt=\"\">\n <div>\n <h3>Kentris</h3>\n <p>\n A Tetris clone of the orginal NES release.\n Coded in ES6 javascript, html5 canvas, and spitemaps graphics from the orginal game.\n It has most features coded such as gameplay and highscore.\n </p>\n <router-link to=\"/code/kentris\" class=\"button button-white-hover-red\">Play Kentris</router-link>\n </div>\n </div>\n <div class=\"code-example\">\n <img src=\"../assets/code/elevator-simulator/elevator-simulator.png\" alt=\"\">\n <div>\n <h3>Elevator Simulator</h3>\n <p>\n The elevator simulator presents a charming 8-bit world bustling with activity across various floors.\n Characters patiently queue on different floors, some eager to board and others disembarking. <b>In progress.</b>\n </p>\n <router-link to=\"/code/elevator-simulator\" class=\"button button-white-hover-red\">\n View Elevator Simulator</router-link>\n </div>\n </div>\n <div class=\"code-example\">\n <img src=\"../assets/code/product-filtering/product-filtering.jpg\" alt=\"\">\n <div>\n <h3>Product Finder Demo</h3>\n <p>\n This demonstration showcases a system for filtering products by multiple tags and categories.\n The resulting products are displayed in the a hierarchical tree structure.\n </p>\n <router-link to=\"/code/product-filtering\" class=\"button button-white-hover-red\">View Coding Example</router-link>\n </div>\n </div>\n <div class=\"code-example\">\n <img src=\"../assets/code/mustache-loadbar/screen-shoot.gif\" alt=\"\">\n <div>\n <h3>Mustache-Loadbar</h3>\n <p>\n Imagine a shady character on your screen, a clean-shaven individual with an empty space above their lips.\n As the site loads the mushtash grows as a progress bar.\n </p>\n <router-link to=\"/code/mustache-loadbar\" class=\"button button-white-hover-red\">Watch that mustache grow.</router-link>\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nexport default {\n name: 'CodeSection',\n data() {\n return {\n email: '',\n time: 10,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import '../scss/common';\n.code {\n background-position: top center;\n background-attachment: fixed;\n height: auto !important;\n\n h1 {\n padding-top: 50px;\n margin-bottom: 10px;\n font-size: 20vw;\n\n @media screen and (min-width: 480px) {\n font-size: 150px;\n }\n }\n\n .email {\n font-size: 24px;\n text-decoration: none;\n color: #fff;\n width: 100%;\n text-align: center;\n }\n\n a {\n color: #fff;\n &:hover {\n color: #fff;\n }\n }\n}\n\n.code-examples {\n max-width: 800px;\n margin-top: 80px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.code-example {\n display: flex;\n justify-content: space-around;\n align-items: flex-start;\n\n > img {\n width: calc(30% - 30px);\n }\n\n > div {\n width: calc(70% - 30px);\n }\n}\n\n.code-example + .code-example {\n margin-top: 80px;\n}\n\n.info,\n.social-links {\n text-align: left;\n max-width: 600px;\n font-size: 1.4em;\n margin: 60px auto;\n\n @media screen and (min-width: 480px) {\n font-size: 40px;\n }\n\n & > * {\n display: flex;\n justify-content: space-between;\n margin: 15px 0;\n }\n}\n\n.social-links__icon {\n width: calc(15% - 15px);\n text-align: right;\n\n @media screen and (min-width: 480px) {\n width: calc(15% - 15px);\n }\n}\n\n.social-links__text {\n width: calc(85% - 15px);\n\n @media screen and (min-width: 480px) {\n width: calc(85% - 15px);\n }\n\n &-small {\n @media screen and (min-width: 480px) {\n font-size: 28px;\n }\n\n @media screen and (min-width: 480px) {\n font-size: 28px;\n }\n }\n}\n</style>\n","import { render } from \"./Code.vue?vue&type=template&id=4bd50198\"\nimport script from \"./Code.vue?vue&type=script&lang=js\"\nexport * from \"./Code.vue?vue&type=script&lang=js\"\n\nimport \"./Code.vue?vue&type=style&index=0&id=4bd50198&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <section id=\"home-photography\" class=\"home-photography neo light padded\">\n <h2>Photography</h2>\n <div class=\"blurb\">\n <p>Explore Chicago's vibrant music scene through my lens.</p>\n <router-link class=\"button button-red\" to=\"/photography\">View Show Photos</router-link>\n </div>\n </section>\n</template>\n\n<script>\n// import swapText from '../lib/swap-text.js';\nexport default {\n name: 'HomePhotography',\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@import '../scss/common';\n\n.home-photography {\n max-height: 40vw;\n min-height: 500px;\n background-image: url('~@/assets/photography_bg.jpg');\n background-repeat: no-repeat;\n background-size: cover;\n background-position: 50% 80%;\n\n h2 {\n color: $color-white;\n font-size: 12vw;\n margin: 0;\n\n @media screen and (min-width: 1200px) {\n font-size: 145px;\n margin-bottom: 0.5em;\n }\n }\n\n p {\n color: $color-white;\n line-height: 1.75;\n }\n\n .button {\n font-size: 1.2em;\n }\n\n .blurb {\n max-width: 400px;\n margin: 0 auto;;\n }\n}\n</style>\n","import { render } from \"./HomePhotography.vue?vue&type=template&id=32dfbc8d\"\nimport script from \"./HomePhotography.vue?vue&type=script&lang=js\"\nexport * from \"./HomePhotography.vue?vue&type=script&lang=js\"\n\nimport \"./HomePhotography.vue?vue&type=style&index=0&id=32dfbc8d&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <section class=\"contact light bgc-purple neo padded\">\n <h2>contact</h2>\n <div class=\"social-links\">\n <div>\n <span class=\"social-links__icon\"><font-awesome-icon :icon=\"['fas', 'envelope']\" /></span>\n <span class=\"social-links__text social-links__text-small\">{{ email }}</span>\n </div>\n <a href=\"https://www.linkedin.com/in/kent-widman/\">\n <span class=\"social-links__icon\"><font-awesome-icon :icon=\"['fab', 'linkedin']\" /></span>\n <span class=\"social-links__text\">@kent-widman</span>\n </a>\n <a href=\"https://www.instagram.com/eightbitkent/\">\n <span class=\"social-links__icon\"><font-awesome-icon :icon=\"['fab', 'instagram']\" /></span>\n <span class=\"social-links__text\">@eightbitkent</span>\n </a>\n <a href=\"https://open.spotify.com/artist/4lcGOrD8Lve5FVMYhnezkp\">\n <span class=\"social-links__icon\"><font-awesome-icon :icon=\"['fab', 'spotify']\" /></span>\n <span class=\"social-links__text\">Love in October</span>\n </a>\n <a href=\"https://open.spotify.com/artist/4lcGOrD8Lve5FVMYhnezkp\">\n <span class=\"social-links__icon\"><font-awesome-icon :icon=\"['fab', 'spotify']\" /></span>\n <span class=\"social-links__text\">Eight Bit Tiger</span>\n </a>\n </div>\n </section>\n</template>\n\n<script>\nexport default {\n name: 'ContactSection',\n data() {\n return {\n email: '',\n time: 10,\n };\n },\n mounted() {\n const timer = setInterval(\n () => {\n this.time -= 1;\n if (this.time > 0) {\n this.email = this.time;\n } else {\n clearInterval(timer);\n this.email = 'kentwidman@gmail.com';\n }\n },\n 1000,\n );\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import '../scss/common';\n.contact {\n background-position: top center;\n background-attachment: fixed;\n text-align: center;\n height: 100vh;\n min-height: 800px;\n\n .email {\n font-size: 24px;\n text-decoration: none;\n color: #fff;\n width: 100%;\n text-align: center;\n }\n\n a {\n color: #fff;\n &:hover {\n color: #fff;\n }\n }\n}\n\n.info,\n.social-links {\n text-align: left;\n max-width: 380px;\n font-size: 2.0em;\n margin: 60px auto;\n\n @media screen and (min-width: 640px) {\n font-size: 40px;\n max-width: 400px;\n }\n\n & > * {\n display: flex;\n justify-content: space-between;\n margin: 15px 0;\n }\n}\n\n.social-links__icon {\n width: calc(15% - 15px);\n text-align: right;\n\n @media screen and (min-width: 640px) {\n width: calc(15% - 15px);\n }\n}\n\n.social-links__text {\n width: calc(85% - 15px);\n\n @media screen and (min-width: 640px) {\n width: calc(85% - 15px);\n }\n\n &-small {\n font-size: 18px;\n\n @media screen and (min-width: 640px) {\n font-size: 28px;\n }\n }\n}\n</style>\n","import { render } from \"./Contact.vue?vue&type=template&id=837e5504\"\nimport script from \"./Contact.vue?vue&type=script&lang=js\"\nexport * from \"./Contact.vue?vue&type=script&lang=js\"\n\nimport \"./Contact.vue?vue&type=style&index=0&id=837e5504&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n<footer class=\"footer\">\n <div class=\"footer-lower footer-wrapper\">\n <p class=\"footer-copyright\">© <span>{{ year }}</span> KentWidman.com</p>\n </div>\n</footer>\n</template>\n\n<script>\nexport default {\n name: 'FooterSection',\n data() {\n return {\n year: new Date().getFullYear(),\n };\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@import '../scss/common';\n\n.footer {\n color: $color-white;\n background-color: $color-black;\n margin: 0 auto 0;\n max-width: 1440px;\n position: relative;\n z-index: 0;\n overflow: hidden;\n}\n\n.padding {\n padding: 20px;\n}\n\n.footer-buttons {\n margin-top: 64px;\n text-align: center;\n}\n\n.footer-lower {\n padding: 48px 20px 65px;\n}\n\n.footer-copyright {\n text-align: center;\n}\n\n.footer-links {\n text-align: center;\n}\n</style>\n","import { render } from \"./SiteFooter.vue?vue&type=template&id=e93e46c4\"\nimport script from \"./SiteFooter.vue?vue&type=script&lang=js\"\nexport * from \"./SiteFooter.vue?vue&type=script&lang=js\"\n\nimport \"./SiteFooter.vue?vue&type=style&index=0&id=e93e46c4&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./HomeView.vue?vue&type=template&id=6bf28441\"\nimport script from \"./HomeView.vue?vue&type=script&lang=js\"\nexport * from \"./HomeView.vue?vue&type=script&lang=js\"\n\nimport \"./HomeView.vue?vue&type=style&index=0&id=6bf28441&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createRouter, createWebHistory } from 'vue-router';\nimport HomeView from '../views/HomeView.vue';\n\nconst routes = [\n {\n path: '/',\n name: 'HomeView',\n component: HomeView,\n },\n {\n path: '/about',\n name: 'AboutView',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/AboutView.vue'),\n },\n {\n path: '/code',\n name: 'CodeView',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/CodeView.vue'),\n },\n {\n path: '/work',\n name: 'WorkView',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/WorkView.vue'),\n },\n {\n path: '/photography',\n name: 'Photography',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/PhotographyView.vue'),\n },\n {\n path: '/gallery/:id',\n name: 'GalleryView',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/GalleryView.vue'),\n },\n {\n path: '/code/product-filtering',\n name: 'ProductFilteringView',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../code/product-filtering/products.vue'),\n },\n {\n path: '/code/mustache-loadbar',\n name: 'MustacheLoadbar',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../code/mustache-loadbar/mustache-loadbar.vue'),\n },\n {\n path: '/code/kentris',\n name: 'Kentris',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../code/kentris/kentris.vue'),\n },\n {\n path: '/code/elevator-simulator',\n name: 'ElevatorSimulator',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../code/elevator-simulator/elevator-simulator.vue'),\n },\n {\n path: '/code/porsche-racer',\n name: 'PorscheRacer',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../code/porsche-racer/porsche-racer.vue'),\n },\n];\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n scrollBehavior(to, from, savedPosition) {\n console.log({ to, from, savedPosition });\n\n if (to.path === from.path) {\n return {};\n }\n\n // always scroll to top\n return { top: 0 };\n },\n});\n\nexport default router;\n","import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\nimport { library } from '@fortawesome/fontawesome-svg-core';\n\n/*\nName | Free | Paid | Prefix | NPM Package (free) | NPM package (paid)\n---------------------------------------------------------------------------------------------------------\nSolid | Yes | Yes | fas | @fortawesome/free-solid-svg-icons | @fortawesome/pro-solid-svg-icons\nRegular | Yes | Yes | far | @fortawesome/free-regular-svg-icons | @fortawesome/pro-regular-svg-icons\nLight | No | Yes | fal | | @fortawesome/pro-light-svg-icons\nBrands | Yes | No | fab | @fortawesome/free-brands-svg-icons |\n*/\n\nimport { faEnvelope } from '@fortawesome/free-solid-svg-icons';\nimport {\n faLinkedin,\n faSpotify,\n faInstagram,\n faStackOverflow,\n faGithub,\n} from '@fortawesome/free-brands-svg-icons';\n\n/*\n['far', 'envelope']\n['fab', 'linkedin-in']\n['fab', 'instagram']\n['fab', 'spotify']\n['fab', 'spotify']\n*/\n\nlibrary.add(\n faEnvelope,\n faLinkedin,\n faSpotify,\n faInstagram,\n faStackOverflow,\n faGithub,\n);\n\nexport default FontAwesomeIcon;\n","import { createApp } from 'vue';\nimport App from './App.vue';\nimport router from './router';\nimport FontAwesomeIcon from './lib/fontawesome-icons';\n\nwindow.vm = createApp(App)\n .use(router)\n .component('font-awesome-icon', FontAwesomeIcon)\n .mount('#app');\n","<template>\n <section class=\"work light bgc-black neo padded\">\n <h2 class=\"work-title\">Digital Work</h2>\n <Project\n v-for=\"(workitem, workitemIndex) in work\"\n :key=\"workitemIndex\"\n class=\"workitem\"\n :data=\"workitem\"\n />\n </section>\n</template>\n\n<script>\nimport Project from './Project.vue';\n\nconst data = require('../data/work.json');\n\nexport default {\n name: 'WorkSection',\n components: {\n Project,\n },\n data() {\n return {\n work: data,\n };\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@import '../scss/common';\n\n.work {\n background-position: top center;\n background-attachment: fixed;\n height: auto;\n padding-bottom: 10px;\n overflow: hidden;\n}\n\n.work-title {\n margin-bottom: 1.0em !important;\n}\n</style>\n","<template>\n<article class=\"work-project\">\n <h1 class=\"work-project-title\">{{title}}</h1>\n <div class=\"awards\">\n <div class=\"award\" v-for=\"award in awards\" :key=\"award\" >\n <svg class=\"awwwards\" v-if=\"award === 'awwwards'\" width=\"141\" height=\"22.3\" viewBox=\"0 0 280 44.3\">\n <path class=\"logo-fill\" id=\"logo-a1\" d=\"M1.2,20.8c1-5.1,5.5-8.7,11.9-8.7c7.4,0,13.1,3.1,13.1,13.1v18.6h-6.3l-0.8-4c-2.2,2.7-5.1,4.5-9.6,4.5 C4.2,44.3,0,41,0,34.8s5.5-10.2,13.3-10.2h5.2v-1.4c0-3.5-2.6-4.6-5.5-4.6c-2.2,0-4.4,0.7-5.4,3.6L1.2,20.8z M11.3,37.8 c3.5,0,7.2-2.4,7.2-6.4v-0.6h-5.1c-3.3-0.1-5.3,1.2-5.3,3.9C8.1,36.2,9.2,37.8,11.3,37.8z\"></path>\n <path class=\"logo-fill\" id=\"logo-a2\" d=\"M151,20.8c1-5.1,5.5-8.7,11.9-8.7c7.4,0,13.1,3.1,13.1,13.1v18.6h-6.3l-0.8-4c-2.2,2.7-5.1,4.5-9.6,4.5 c-5.3,0-9.5-3.3-9.5-9.5s5.5-10.2,13.3-10.2h5.2v-1.4c0-3.5-2.6-4.6-5.5-4.6c-2.2,0-4.4,0.7-5.4,3.6L151,20.8z M161.1,37.8 c3.5,0,7.2-2.4,7.2-6.4v-0.6h-5.1c-3.3,0-5.3,1.2-5.3,4C157.9,36.2,159,37.8,161.1,37.8z\"></path>\n <path class=\"logo-fill\" id=\"logo-r\" d=\"M183,43.9V12.6h7.7v5.1c2.2-3.7,5.7-5.6,9.2-5.6c1.4,0,2.5,0.2,3.8,0.6l-1.4,7.1c-0.9-0.6-1.9-0.9-3.2-0.9 c-4.5,0-8.4,3.7-8.4,13.8v11.1L183,43.9L183,43.9z\"></path>\n <path class=\"logo-fill\" id=\"logo-d\" d=\"M220.1,12.1c3.2,0,6.2,1.6,7.6,3.3V0h7.7v43.9h-7.7v-3.2c-0.9,1.6-3.7,3.7-7.6,3.7c-9.4,0-14.2-6.5-14.2-16.1 S210.7,12.1,220.1,12.1z M221.2,37.8c4,0,7.2-3.3,7.2-9.5s-3.2-9.5-7.2-9.5s-7.2,3.3-7.2,9.5S217.2,37.8,221.2,37.8z\"></path>\n <path class=\"logo-fill\" id=\"logo-s\" d=\"M263.2,17.1l-4.6,4.2c-1.4-1.9-3.5-2.7-5.2-2.7c-1.5,0-2.9,0.9-2.9,2.6c0,1.4,1.1,2.4,3,3 c4.3,1.6,11.3,2.9,11.3,9.6c0,5.7-4.3,10.4-11.1,10.4c-6.5,0-10.9-4.6-12.4-8.4l6.1-3.3c1.1,3,3.2,5.2,6.3,5.2 c2.4,0,3.9-1.1,3.9-3.4c0-2.6-4-3.2-7.8-4.8c-3.4-1.4-6.3-3.6-6.3-8.4s3.9-9.1,10-9.1C257.6,12,261.3,14.1,263.2,17.1z\"></path>\n <polygon class=\"logo-fill\" id=\"logo-w2\" points=\"103,12.6 97.5,34.1 92.2,12.6 85,12.6 79.8,34.1 75.4,21.6 74.9,23.1 72.4,31.1 76.4,43.9 83.2,43.9 88.6,23.7 94,43.9 100.8,43.9 110.8,12.6\"></polygon>\n <polygon class=\"logo-fill\" id=\"logo-w3\" points=\"140.2,12.6 134.6,34.1 129.3,12.6 122.1,12.6 116.9,34.1 112.5,21.6 112,23.1 109.5,31.1 113.5,43.9 120.3,43.9 125.7,23.7 131.1,43.9 137.9,43.9 147.9,12.6\"></polygon>\n <path class=\"logo-fill\" id=\"logo-w1\" d=\"M73.7,12.6l-10,31.2h-6.8l-5.4-20.2l-5.4,20.3h-6.8l-10-31.2h7.8l5.6,21.4L48,12.7h7.1l5.3,21.4L66,12.7 L73.7,12.6L73.7,12.6z\"></path>\n <path class=\"logo-fill\" id=\"logo-p\" d=\"M274.8,33.8c3,0,5.2,2.2,5.2,5.2s-2.2,5.2-5.2,5.2s-5.2-2.2-5.2-5.2S271.9,33.8,274.8,33.8z\"></path>\n </svg>\n </div>\n </div>\n <p>{{description}}</p>\n <div :class=\"['pictures', 'images', mobileLayout]\">\n <!-- <a :href=\"'work/'+slug\">See Work</a> -->\n <div :class=\"['pictures-wrapper', pictureClass]\" >\n <button v-for=\"image in images\" :key=\"image.title\" @click=\"rotateLeft\" @keydown.left=rotateLeft @keydown.right=rotateRight class=\"work-image\">\n <picture>\n <source media=\"(min-width: 850px)\" :srcset=\"image.srcDesktop\">\n <source media=\"(min-width: 650px)\" :srcset=\"image.srcTable\">\n <source media=\"(min-width: 465px)\" :srcset=\"image.srcMobile\">\n <img :width=\"image.width\" :height=\"image.height\" :src=\"image.srcDesktop\" :alt=\"image.title\" loading=\"lazy\">\n </picture>\n </button>\n </div>\n </div>\n <div v-if=\"videos\" class=\"video-wrapper\">\n <video muted autoplay v-for=\"video in videos\" :key=\"video.srcDesktop\">\n <source media=\"min-width: 850px\" :src=\"video.srcDesktop\">\n </video>\n </div>\n <div class=\"work-details\">\n <div class=\"links\" v-if=\"links\">\n <p v-for=\"link in links\" :key=\"link.url\" class=\"btn-center\">\n <a class=\"btn btn-black\" :href=\"link.url\">{{link.name}}</a>\n </p>\n </div>\n </div>\n</article>\n</template>\n\n<script>\nexport default {\n name: 'ProjectSection',\n props: {\n data: Object,\n },\n data() {\n console.log(this.data);\n const data = { ...this.data };\n data.currentImage = 0;\n return data;\n },\n computed: {\n pictureClass() {\n const index = (this.currentImage % 3) + 1;\n return `select-${index}`;\n },\n },\n methods: {\n rotateLeft() {\n this.currentImage += 1;\n },\n rotateRight() {\n this.currentImage -= 1;\n },\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\">\n@import '../scss/common';\n\n.work-project {\n margin: 0 auto 10vw auto;\n max-width: 1200px;\n\n @media screen and (min-width: 1200px) {\n margin: 0 auto 120px auto;\n }\n}\n\n.work-project-title {\n font-size: 12vw !important;\n margin: 0;\n\n @media screen and (min-width: 1200px) {\n font-size: 145px !important;\n }\n}\n\n.work-details {\n a {\n color: #fff;\n }\n}\n\n.work-image {\n padding: 0;\n margin-bottom: 30px;\n}\n\n.pictures {\n display: block;\n position: relative;\n max-width: 1400px;\n width: calc(100% + 60px);\n margin-left: -30px;\n margin-right: -30px;\n\n @media screen and (min-width: 480px) {\n width: 100%;\n margin-left: 0;\n margin-right: 0;\n }\n\n .pictures-wrapper {\n @media screen and (min-width: 480px) {\n display: flex;\n flex-wrap: wrap;\n }\n }\n\n &.scroll {\n @media screen and (max-width: 479px) {\n overflow: auto;\n width: calc(100% + 60px);\n margin-left: -30px;\n margin-right: -30px;\n\n .pictures-wrapper {\n width: calc(300% - 120px);\n display: flex;\n padding-left: 30px;\n padding-right: 30px;\n }\n\n picture {\n max-width: calc(100% - 90px);\n margin-right: 30px;\n\n &:last-child {\n margin-right: 0;\n }\n }\n }\n }\n\n &.stacked {\n @media screen and (max-width: 479px) {\n picture {\n margin-bottom: 30px;\n }\n }\n }\n}\n\n@media screen and (min-width: 480px) {\n .work-image {\n display: block;\n height: auto;\n position: absolute;\n z-index: 1;\n transform: scale(1, 1) translate(0, 0);\n transition: all ease-in-out 300ms;\n box-shadow: rgba(0, 0, 0, 0.21) 10px 10px 10px;\n border: 2px solid white;\n cursor: pointer;\n box-sizing: border-box;\n\n img {\n display: block;\n height: auto\n }\n\n &:nth-child(2) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(-50% - 60px), 135%);\n }\n\n &:nth-child(3) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(50% + 60px), 135%);\n }\n }\n\n .pictures-wrapper {\n position: relative;\n height: 0;\n padding-bottom: 92%;\n\n &.select-1 {\n .work-image {\n &:nth-child(1) {\n z-index: 1;\n transform: scale(1, 1) translate(0, 0);\n }\n\n &:nth-child(2) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(-50% - 60px), 135%);\n }\n\n &:nth-child(3) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(50% + 60px), 135%);\n }\n }\n }\n\n &.select-2 {\n .work-image {\n &:nth-child(1) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(50% + 60px), 135%);\n }\n\n &:nth-child(2) {\n z-index: 1;\n transform: scale(1, 1) translate(0, 0);\n }\n\n &:nth-child(3) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(-50% - 60px), 135%);\n }\n }\n }\n\n &.select-3 {\n .work-image {\n &:nth-child(1) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(-50% - 60px), 135%);\n }\n\n &:nth-child(2) {\n z-index: 2;\n transform: scale(0.5, 0.5) translate(calc(50% + 60px), 135%);\n }\n\n &:nth-child(3) {\n z-index: 1;\n transform: scale(1, 1) translate(0, 0);\n }\n }\n }\n }\n}\n\npicture {\n display: block;\n max-width: 100%;\n width: 100%;\n height: auto;\n\n > img {\n display: block;\n max-width: 100%;\n width: 100%;\n height: auto;\n }\n}\n\n.awwwards {\n fill: #FFF;\n z-index: 0;\n transition: all 0.3s;\n}\n</style>\n","import { render } from \"./Project.vue?vue&type=template&id=0692e064\"\nimport script from \"./Project.vue?vue&type=script&lang=js\"\nexport * from \"./Project.vue?vue&type=script&lang=js\"\n\nimport \"./Project.vue?vue&type=style&index=0&id=0692e064&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Work.vue?vue&type=template&id=2e92f2c6\"\nimport script from \"./Work.vue?vue&type=script&lang=js\"\nexport * from \"./Work.vue?vue&type=script&lang=js\"\n\nimport \"./Work.vue?vue&type=style&index=0&id=2e92f2c6&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + \"about\" + \".\" + \"fccca7e6\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + \"about\" + \".\" + \"621ba3e9\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"website:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"443\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwebsite\"] = self[\"webpackChunkwebsite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(5388); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_createVNode","_component_Navigation","_component_router_view","id","class","role","ref","_createElementVNode","_hoisted_6","_createElementBlock","_hoisted_1","_hoisted_2","type","_normalizeClass","$data","isMenuOpen","onClick","_cache","args","$options","toggleMenu","onFocus","_hoisted_4","_hoisted_5","_component_router_link","closeMenu","to","_hoisted_8","name","data","didScroll","lastScrollTop","delta","navbarHeight","ft","mounted","this","setup","focusTrap","$refs","navFocusTrap","watch","val","htmlEl","document","getElementsByTagName","classList","add","hideContentForScreenReaders","activate","remove","showContentForScreenReaders","setTimeout","navOverlay","scrollTo","deactivate","methods","openMenu","addEventListener","onScroll","setInterval","checkInterval","navControls","hasScrolled","st","window","scrollY","Math","abs","windowHeight","innerHeight","documentHeight","body","scrollHeight","elementsToHide","querySelectorAll","forEach","e","setAttribute","elementsToShow","destoyed","__exports__","components","Navigation","render","_component_Intro","_component_Lights","_component_About","_component_Houndini","_component_Code","_component_Work","_component_HomePhotography","_component_Contact","_component_SiteFooter","_hoisted_3","canvasElement","context","fps","fpsTimmer","matrixSize","vw","max","documentElement","clientWidth","innerWidth","vh","clientHeight","screenSize","enableAnimation","changePatternInterval","lightPatterns","lightPattern1","lightPattern2","lightPattern3","strobe1","strobe2","currenLightPattern","matrix","colors","randomnumber","min","floor","random","init","el","getContext","Array","y","x","screenResize","requestAnimationFrame","loop","random_number","length","console","log","destroy","clearInterval","removeEventListener","now","Date","color","fillStyle","fillRect","resize","canvas","width","height","tigger","colorIndex","lightPattern2lastIndex","lightPattern2Index","lightPattern2IndexSpacing","sprites","skip","sprite","startX","startY","flip","round","currentX","currentY","horizontal","isHorizontal","divider","slice","start","end","matrixSizeWidth","matrixSizeHeight","isArray","lights","getElementById","beforeUnmount","preload","playsinline","autoplay","muted","src","href","target","btn","_hoisted_7","email","time","_imports_0","alt","_imports_1","_imports_2","_imports_3","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_component_font_awesome_icon","icon","_toDisplayString","timer","year","getFullYear","Intro","Lights","About","Houndini","Code","Work","Contact","HomePhotography","SiteFooter","metaInfo","title","titleTemplate","routes","path","component","HomeView","router","createRouter","history","createWebHistory","process","scrollBehavior","from","savedPosition","top","library","faEnvelope","faLinkedin","faSpotify","faInstagram","faStackOverflow","faGithub","FontAwesomeIcon","vm","createApp","App","use","mount","_Fragment","_renderList","work","workitem","workitemIndex","_createBlock","_component_Project","key","viewBox","_ctx","awards","award","description","mobileLayout","pictureClass","images","image","rotateLeft","onKeydown","rotateRight","media","srcset","srcDesktop","srcTable","srcMobile","loading","videos","video","_hoisted_21","links","_hoisted_22","link","url","_hoisted_23","props","Object","currentImage","computed","index","require","Project","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","push","script","needAttach","scripts","s","getAttribute","createElement","charset","timeout","nc","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","p","createStylesheet","fullhref","oldTag","resolve","reject","linkTag","rel","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","then","installedChunks","installedChunkData","promise","error","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}