diff --git a/404.html b/404.html new file mode 120000 index 0000000..64233a9 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +index.html \ No newline at end of file diff --git a/Alameda-South-Shore-Beach.a682d7f2.webp b/Alameda-South-Shore-Beach.a682d7f2.webp new file mode 100644 index 0000000..c220048 Binary files /dev/null and b/Alameda-South-Shore-Beach.a682d7f2.webp differ diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..0979398 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +seankrail.dev \ No newline at end of file diff --git a/Mission-Dolores-Park.f6b361f6.webp b/Mission-Dolores-Park.f6b361f6.webp new file mode 100644 index 0000000..5ccbf00 Binary files /dev/null and b/Mission-Dolores-Park.f6b361f6.webp differ diff --git a/Mount-Diablo-Bay-View.1e5928ef.webp b/Mount-Diablo-Bay-View.1e5928ef.webp new file mode 100644 index 0000000..205bcb0 Binary files /dev/null and b/Mount-Diablo-Bay-View.1e5928ef.webp differ diff --git a/favicon-16x16.9e4d1077.png b/favicon-16x16.9e4d1077.png new file mode 100644 index 0000000..8a6d795 Binary files /dev/null and b/favicon-16x16.9e4d1077.png differ diff --git a/favicon-32x32.8c69bfca.png b/favicon-32x32.8c69bfca.png new file mode 100644 index 0000000..cf1ffe1 Binary files /dev/null and b/favicon-32x32.8c69bfca.png differ diff --git a/favicon.f033801f.ico b/favicon.f033801f.ico new file mode 100644 index 0000000..561fa03 Binary files /dev/null and b/favicon.f033801f.ico differ diff --git a/index.21b2c8c3.js b/index.21b2c8c3.js new file mode 100644 index 0000000..e6cee40 --- /dev/null +++ b/index.21b2c8c3.js @@ -0,0 +1,2 @@ +function e(e,t,n,o){Object.defineProperty(e,t,{get:n,set:o,enumerable:!0,configurable:!0})}function t(e){return e&&e.__esModule?e.default:e}var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},o={},r={},i=n.parcelRequireefef;null==i&&((i=function(e){if(e in o)return o[e].exports;if(e in r){var t=r[e];delete r[e];var n={id:e,exports:{}};return o[e]=n,t.call(n.exports,n,n.exports),n.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){r[e]=t},n.parcelRequireefef=i),i.register("hR6pF",function(t,n){"use strict";e(t.exports,"register",function(){return o},function(e){return o=e}),e(t.exports,"resolve",function(){return r},function(e){return r=e});var o,r,i={};o=function(e){for(var t=Object.keys(e),n=0;n{d?(d=!1,s=!0):s?(s=!1,u=!0):u?(u=!1,f=!0):(f=!1,d=!0),m()},3219)}async function p(){l.addEventListener("mouseout",()=>g()),l.addEventListener("mouseup",()=>g()),l.addEventListener("mousemove",e=>{clearInterval(c);let t=l.getBoundingClientRect(),n=e.clientX-t.left,o=e.clientY-t.top,r=t.width,i=t.height,a=0+(0+i)/2;d=!1,s=!1,u=!1,f=!1,n<0+(0+r)/2?oe.loaded);if(e.length>1){let t=e.indexOf(E);(t+=1)===e.length&&(t=0),k(e[t])}}function I(e){e.matches&&w.forEach(e=>{if(!e.element){let t=new Image;t.onload=()=>{e.loaded=!0,0===R&&(k(e),setInterval(L,15e3)),R+=1},t.src=e.src,e.element=t}})}async function S(){let e=window.matchMedia("(min-width: 1000px)");I(e),e.addEventListener("change",I)}const _="https://api.seankrail.dev/count/likes",x=document.getElementById("likes-container"),F=document.getElementById("likes-thumb"),H=document.getElementById("likes-count");let B=!1,O=0,P=0;function A(e){x.style.visibility="visible",H.innerHTML=`${e}`,x.style.opacity="1",B=!0}async function M(){let e=await window.fetch(_,{method:"GET"});return O=Number(await e.text())}async function T(){B&&(P<3&&(window.fetch(_,{method:"POST"}),F.style.fontVariationSettings="'FILL' 1"),P+=1,A(O+=1))}async function N(){A(await M()),x.addEventListener("click",()=>T())}(async()=>{S()})(),(async()=>{p()})(),(async()=>{N()})(); +//# sourceMappingURL=index.21b2c8c3.js.map diff --git a/index.21b2c8c3.js.br b/index.21b2c8c3.js.br new file mode 100644 index 0000000..8cb52db Binary files /dev/null and b/index.21b2c8c3.js.br differ diff --git a/index.21b2c8c3.js.gz b/index.21b2c8c3.js.gz new file mode 100644 index 0000000..a99f54a Binary files /dev/null and b/index.21b2c8c3.js.gz differ diff --git a/index.21b2c8c3.js.map b/index.21b2c8c3.js.map new file mode 100644 index 0000000..20cade9 --- /dev/null +++ b/index.21b2c8c3.js.map @@ -0,0 +1 @@ +{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,e,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,S,E,C,E,O,G,E,W,E,Q,C,C,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,Q,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,K,E,Q,E,E,S,E,O,C,I,E,A,M,uB,E,I,O,E,K,mB,C,C,E,S,S,C,C,C,E,C,C,E,C,C,E,E,kB,G,E,S,Q,S,C,C,C,ECAA,a,E,E,Q,W,W,O,C,E,S,C,E,O,E,C,G,E,E,Q,U,W,O,C,E,S,C,E,O,E,C,GAEA,IAcA,EACA,EAfI,EAAU,CAAC,EAcf,EAbA,SAAkB,CAAK,EAErB,IAAK,IADD,EAAO,OAAO,KAAK,GACd,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,CAAO,CAAC,CAAI,CAAC,EAAE,CAAC,CAAG,CAAK,CAAC,CAAI,CAAC,EAAE,CAAC,AAErC,EASA,EARA,SAAiB,CAAE,EACjB,IAAI,EAAW,CAAO,CAAC,EAAG,CAC1B,GAAI,AAAY,MAAZ,EACF,MAAM,AAAI,MAAM,oCAAsC,GAExD,OAAO,CACT,C,GCfA,AAAA,EAAA,SAAA,SAA8C,KAAK,MAAM,mPGAzD,MAAM,EAAoB,SAAS,eAAe,oBAC5C,EAAU,SAAS,eAAe,UAExC,IAAI,EAAa,GACb,EAAW,CAAA,EACX,EAAc,CAAA,EACd,EAAa,CAAA,EACb,EAAU,CAAA,EAEd,SAAS,IACP,IAAI,EAAY,GAIhB,GAHa,CAAA,EAAW,aAAe,EAAvC,EACa,CAAA,EAAc,gBAAkB,EAA7C,EACa,CAAA,EAAa,eAAiB,EAA3C,EACa,CAAA,EAAU,WAAa,EAApC,EACA,EAAQ,UAAY,CACtB,CAEA,SAAS,IACP,cAAc,GACd,EAAa,YAAY,KACnB,GACF,EAAW,CAAA,EACX,EAAc,CAAA,GACL,GACT,EAAc,CAAA,EACd,EAAa,CAAA,GACJ,GACT,EAAa,CAAA,EACb,EAAU,CAAA,IAGV,EAAU,CAAA,EACV,EAAW,CAAA,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","sources":["",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-58a56efccdb51554.js","src/index.ts","src/features/index.ts","src/features/animate-border.ts","src/features/slideshow-background.ts",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-b3e4bc55e41a5ec4.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-b8e2430c4e41e7b4.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-b41e544d1ce00161.js","src/features/likes-counter.ts"],"sourcesContent":["function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequireefef\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequireefef\"] = parcelRequire;\n}\nparcelRequire.register(\"hR6pF\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $cffc5c68c02d7d6a$export$6503ec6e8aabbaf; }, function (v) { return $cffc5c68c02d7d6a$export$6503ec6e8aabbaf = v; });\n$parcel$export(module.exports, \"resolve\", function () { return $cffc5c68c02d7d6a$export$f7ad0328861e2f03; }, function (v) { return $cffc5c68c02d7d6a$export$f7ad0328861e2f03 = v; });\nvar $cffc5c68c02d7d6a$export$6503ec6e8aabbaf;\nvar $cffc5c68c02d7d6a$export$f7ad0328861e2f03;\n\"use strict\";\nvar $cffc5c68c02d7d6a$var$mapping = {};\nfunction $cffc5c68c02d7d6a$var$register(pairs) {\n var keys = Object.keys(pairs);\n for(var i = 0; i < keys.length; i++)$cffc5c68c02d7d6a$var$mapping[keys[i]] = pairs[keys[i]];\n}\nfunction $cffc5c68c02d7d6a$var$resolve(id) {\n var resolved = $cffc5c68c02d7d6a$var$mapping[id];\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return resolved;\n}\n$cffc5c68c02d7d6a$export$6503ec6e8aabbaf = $cffc5c68c02d7d6a$var$register;\n$cffc5c68c02d7d6a$export$f7ad0328861e2f03 = $cffc5c68c02d7d6a$var$resolve;\n\n});\n\nvar $a7176866ca784895$exports = {};\n\n(parcelRequire(\"hR6pF\")).register(JSON.parse('{\"dlQAm\":\"index.21b2c8c3.js\",\"kgv3l\":\"Mount-Diablo-Bay-View.1e5928ef.webp\",\"hkHP6\":\"Mission-Dolores-Park.f6b361f6.webp\",\"1vL1P\":\"Alameda-South-Shore-Beach.a682d7f2.webp\"}'));\n\nconst $5832eb44668bdb9f$var$MY_FACE_CONTAINER = document.getElementById(\"myface-container\");\nconst $5832eb44668bdb9f$var$MY_FACE = document.getElementById(\"myface\");\nlet $5832eb44668bdb9f$var$intervalId = -1;\nlet $5832eb44668bdb9f$var$topRight = false;\nlet $5832eb44668bdb9f$var$bottomRight = true;\nlet $5832eb44668bdb9f$var$bottomLeft = false;\nlet $5832eb44668bdb9f$var$topLeft = false;\nfunction $5832eb44668bdb9f$var$updateBorderRadius() {\n let className = \"\";\n className += $5832eb44668bdb9f$var$topRight ? \"top-right \" : \"\";\n className += $5832eb44668bdb9f$var$bottomRight ? \"bottom-right \" : \"\";\n className += $5832eb44668bdb9f$var$bottomLeft ? \"bottom-left \" : \"\";\n className += $5832eb44668bdb9f$var$topLeft ? \"top-left\" : \"\";\n $5832eb44668bdb9f$var$MY_FACE.className = className;\n}\nfunction $5832eb44668bdb9f$var$startLoop() {\n clearInterval($5832eb44668bdb9f$var$intervalId);\n $5832eb44668bdb9f$var$intervalId = setInterval(()=>{\n if ($5832eb44668bdb9f$var$topRight) {\n $5832eb44668bdb9f$var$topRight = false;\n $5832eb44668bdb9f$var$bottomRight = true;\n } else if ($5832eb44668bdb9f$var$bottomRight) {\n $5832eb44668bdb9f$var$bottomRight = false;\n $5832eb44668bdb9f$var$bottomLeft = true;\n } else if ($5832eb44668bdb9f$var$bottomLeft) {\n $5832eb44668bdb9f$var$bottomLeft = false;\n $5832eb44668bdb9f$var$topLeft = true;\n } else {\n // topLeft\n $5832eb44668bdb9f$var$topLeft = false;\n $5832eb44668bdb9f$var$topRight = true;\n }\n $5832eb44668bdb9f$var$updateBorderRadius();\n }, 3219);\n}\nasync function $5832eb44668bdb9f$export$b18aab2d2b6b171() {\n $5832eb44668bdb9f$var$MY_FACE_CONTAINER.addEventListener(\"mouseout\", ()=>$5832eb44668bdb9f$var$startLoop());\n $5832eb44668bdb9f$var$MY_FACE_CONTAINER.addEventListener(\"mouseup\", ()=>$5832eb44668bdb9f$var$startLoop());\n $5832eb44668bdb9f$var$MY_FACE_CONTAINER.addEventListener(\"mousemove\", (e)=>{\n // Pause the border radius loop while mouse is in this element\n clearInterval($5832eb44668bdb9f$var$intervalId);\n /*\n (x0,y0)------+\n | |\n | (x,y) |\n | |\n +------(x1,y1)\n */ const rect = $5832eb44668bdb9f$var$MY_FACE_CONTAINER.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const x0 = 0;\n const y0 = 0;\n const x1 = rect.width;\n const y1 = rect.height;\n // console.log(\"x:\", x, \", y:\", y, \", x0:\", x0, \", y0\", y0, \", x1:\", x1, \", y1:\", y1);\n /*\n (x0,y0)---------xHalf------------+\n | top-left | top-right |\n yHalf----------(x,y)----------yHalf\n | bottom-left | bottom-right |\n +------------xHalf---------(x1,y1)\n */ const xHalf = x0 + (x0 + x1) / 2;\n const yHalf = y0 + (y0 + y1) / 2;\n $5832eb44668bdb9f$var$topRight = false;\n $5832eb44668bdb9f$var$bottomRight = false;\n $5832eb44668bdb9f$var$bottomLeft = false;\n $5832eb44668bdb9f$var$topLeft = false;\n if (x < xHalf) {\n if (y < yHalf) $5832eb44668bdb9f$var$topLeft = true;\n else $5832eb44668bdb9f$var$bottomLeft = true;\n } else if (y < yHalf) $5832eb44668bdb9f$var$topRight = true;\n else $5832eb44668bdb9f$var$bottomRight = true;\n $5832eb44668bdb9f$var$updateBorderRadius();\n });\n $5832eb44668bdb9f$var$startLoop();\n}\n\n\nvar $50e230c9c1f85f74$exports = {};\n\n$50e230c9c1f85f74$exports = new URL((parcelRequire(\"hR6pF\")).resolve(\"kgv3l\"), import.meta.url).toString();\n\n\nvar $ea261065879e5c41$exports = {};\n\n$ea261065879e5c41$exports = new URL((parcelRequire(\"hR6pF\")).resolve(\"hkHP6\"), import.meta.url).toString();\n\n\nvar $a06e9ed884fc49a0$exports = {};\n\n$a06e9ed884fc49a0$exports = new URL((parcelRequire(\"hR6pF\")).resolve(\"1vL1P\"), import.meta.url).toString();\n\n\nconst $4c7c619664a416e1$var$BACKGROUND_IMAGES = [\n {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($50e230c9c1f85f74$exports))),\n loaded: false\n },\n {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($ea261065879e5c41$exports))),\n loaded: false\n },\n {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($a06e9ed884fc49a0$exports))),\n loaded: false\n }\n];\nconst $4c7c619664a416e1$var$BACKGROUND_ELEMENT = document.getElementById(\"background\");\nlet $4c7c619664a416e1$var$backgroundImage = $4c7c619664a416e1$var$BACKGROUND_IMAGES[0];\nlet $4c7c619664a416e1$var$numLoaded = 0;\nfunction $4c7c619664a416e1$var$setBackgroundImage(image) {\n $4c7c619664a416e1$var$backgroundImage = image;\n $4c7c619664a416e1$var$BACKGROUND_ELEMENT.style.backgroundImage = `url(${image.src})`;\n $4c7c619664a416e1$var$BACKGROUND_ELEMENT.style.opacity = \"1\";\n}\nfunction $4c7c619664a416e1$var$changeImage() {\n const images = $4c7c619664a416e1$var$BACKGROUND_IMAGES.filter((image)=>image.loaded);\n if (images.length > 1) {\n let index = images.indexOf($4c7c619664a416e1$var$backgroundImage);\n index += 1;\n if (index === images.length) index = 0;\n $4c7c619664a416e1$var$setBackgroundImage(images[index]);\n }\n}\nfunction $4c7c619664a416e1$var$startSlideshow(mediaQuery) {\n if (mediaQuery.matches) $4c7c619664a416e1$var$BACKGROUND_IMAGES.forEach((image)=>{\n if (!image.element) {\n const element = new Image();\n element.onload = ()=>{\n image.loaded = true;\n if ($4c7c619664a416e1$var$numLoaded === 0) {\n $4c7c619664a416e1$var$setBackgroundImage(image);\n setInterval($4c7c619664a416e1$var$changeImage, 15000);\n }\n $4c7c619664a416e1$var$numLoaded += 1;\n };\n element.src = image.src;\n image.element = element;\n }\n });\n}\nasync function $4c7c619664a416e1$export$17916ffb303dab95() {\n const mediaQuery = window.matchMedia(\"(min-width: 1000px)\");\n $4c7c619664a416e1$var$startSlideshow(mediaQuery);\n mediaQuery.addEventListener(\"change\", $4c7c619664a416e1$var$startSlideshow);\n}\n\n\nconst $e6a02e8e5b462043$var$LIKES_COUNTER_URL = \"https://api.seankrail.dev/count/likes\";\nconst $e6a02e8e5b462043$var$MAX_LIKES_PER_SESSION = 3;\nconst $e6a02e8e5b462043$var$LIKES_CONTAINER = document.getElementById(\"likes-container\");\nconst $e6a02e8e5b462043$var$LIKES_THUMB = document.getElementById(\"likes-thumb\");\nconst $e6a02e8e5b462043$var$LIKES_COUNT = document.getElementById(\"likes-count\");\nlet $e6a02e8e5b462043$var$isLikeEnabled = false;\nlet $e6a02e8e5b462043$var$totalLikes = 0;\nlet $e6a02e8e5b462043$var$likesThisSession = 0;\nfunction $e6a02e8e5b462043$var$setLikesCount(likes) {\n $e6a02e8e5b462043$var$LIKES_CONTAINER.style.visibility = \"visible\";\n $e6a02e8e5b462043$var$LIKES_COUNT.innerHTML = `${likes}`;\n $e6a02e8e5b462043$var$LIKES_CONTAINER.style.opacity = \"1\";\n $e6a02e8e5b462043$var$isLikeEnabled = true;\n}\nasync function $e6a02e8e5b462043$var$getLikes() {\n const response = await window.fetch($e6a02e8e5b462043$var$LIKES_COUNTER_URL, {\n method: \"GET\"\n });\n $e6a02e8e5b462043$var$totalLikes = Number(await response.text());\n return $e6a02e8e5b462043$var$totalLikes;\n}\nasync function $e6a02e8e5b462043$var$like() {\n if ($e6a02e8e5b462043$var$isLikeEnabled) {\n if ($e6a02e8e5b462043$var$likesThisSession < $e6a02e8e5b462043$var$MAX_LIKES_PER_SESSION) {\n window.fetch($e6a02e8e5b462043$var$LIKES_COUNTER_URL, {\n method: \"POST\"\n });\n $e6a02e8e5b462043$var$LIKES_THUMB.style.fontVariationSettings = \"'FILL' 1\";\n }\n $e6a02e8e5b462043$var$likesThisSession += 1;\n $e6a02e8e5b462043$var$totalLikes += 1;\n $e6a02e8e5b462043$var$setLikesCount($e6a02e8e5b462043$var$totalLikes);\n }\n}\nasync function $e6a02e8e5b462043$export$71f7d6ce0daffb8a() {\n $e6a02e8e5b462043$var$setLikesCount(await $e6a02e8e5b462043$var$getLikes());\n $e6a02e8e5b462043$var$LIKES_CONTAINER.addEventListener(\"click\", ()=>$e6a02e8e5b462043$var$like());\n}\n\n\n\n\n(async ()=>{\n (0, $4c7c619664a416e1$export$17916ffb303dab95)();\n})();\n(async ()=>{\n (0, $5832eb44668bdb9f$export$b18aab2d2b6b171)();\n})();\n(async ()=>{\n (0, $e6a02e8e5b462043$export$71f7d6ce0daffb8a)();\n})();\n\n\n//# sourceMappingURL=index.21b2c8c3.js.map\n","\"use strict\";\n\nvar mapping = {};\nfunction register(pairs) {\n var keys = Object.keys(pairs);\n for (var i = 0; i < keys.length; i++) {\n mapping[keys[i]] = pairs[keys[i]];\n }\n}\nfunction resolve(id) {\n var resolved = mapping[id];\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return resolved;\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","require('./helpers/bundle-manifest').register(JSON.parse(\"{\\\"dlQAm\\\":\\\"index.21b2c8c3.js\\\",\\\"kgv3l\\\":\\\"Mount-Diablo-Bay-View.1e5928ef.webp\\\",\\\"hkHP6\\\":\\\"Mission-Dolores-Park.f6b361f6.webp\\\",\\\"1vL1P\\\":\\\"Alameda-South-Shore-Beach.a682d7f2.webp\\\"}\"));","import {\n animateBorder,\n loadLikesCounter,\n slideshowBackground,\n} from \"./features\";\n\n(async () => {\n slideshowBackground();\n})();\n\n(async () => {\n animateBorder();\n})();\n\n(async () => {\n loadLikesCounter();\n})();\n","export * from \"./animate-border\";\nexport * from \"./slideshow-background\";\nexport * from \"./likes-counter\";\n","const MY_FACE_CONTAINER = document.getElementById(\"myface-container\");\nconst MY_FACE = document.getElementById(\"myface\");\n\nlet intervalId = -1;\nlet topRight = false;\nlet bottomRight = true;\nlet bottomLeft = false;\nlet topLeft = false;\n\nfunction updateBorderRadius() {\n let className = \"\";\n className += topRight ? \"top-right \" : \"\";\n className += bottomRight ? \"bottom-right \" : \"\";\n className += bottomLeft ? \"bottom-left \" : \"\";\n className += topLeft ? \"top-left\" : \"\";\n MY_FACE.className = className;\n}\n\nfunction startLoop() {\n clearInterval(intervalId);\n intervalId = setInterval(() => {\n if (topRight) {\n topRight = false;\n bottomRight = true;\n } else if (bottomRight) {\n bottomRight = false;\n bottomLeft = true;\n } else if (bottomLeft) {\n bottomLeft = false;\n topLeft = true;\n } else {\n // topLeft\n topLeft = false;\n topRight = true;\n }\n updateBorderRadius();\n }, 3219);\n}\n\nexport async function animateBorder() {\n MY_FACE_CONTAINER.addEventListener(\"mouseout\", () => startLoop());\n MY_FACE_CONTAINER.addEventListener(\"mouseup\", () => startLoop());\n\n MY_FACE_CONTAINER.addEventListener(\"mousemove\", (e) => {\n // Pause the border radius loop while mouse is in this element\n clearInterval(intervalId);\n\n /*\n (x0,y0)------+\n | |\n | (x,y) |\n | |\n +------(x1,y1)\n */\n const rect = MY_FACE_CONTAINER.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const x0 = 0;\n const y0 = 0;\n const x1 = rect.width;\n const y1 = rect.height;\n // console.log(\"x:\", x, \", y:\", y, \", x0:\", x0, \", y0\", y0, \", x1:\", x1, \", y1:\", y1);\n\n /*\n (x0,y0)---------xHalf------------+\n | top-left | top-right |\n yHalf----------(x,y)----------yHalf\n | bottom-left | bottom-right |\n +------------xHalf---------(x1,y1)\n */\n const xHalf = x0 + (x0 + x1) / 2;\n const yHalf = y0 + (y0 + y1) / 2;\n topRight = false;\n bottomRight = false;\n bottomLeft = false;\n topLeft = false;\n if (x < xHalf) {\n if (y < yHalf) {\n topLeft = true;\n } else {\n bottomLeft = true;\n }\n } else if (y < yHalf) {\n topRight = true;\n } else {\n bottomRight = true;\n }\n updateBorderRadius();\n });\n\n startLoop();\n}\n","import mountDiablo from \"url:../images/Mount-Diablo-Bay-View.jpg?as=webp\";\nimport doloresPark from \"url:../images/Mission-Dolores-Park.jpg?as=webp\";\nimport alamedaSouthShore from \"url:../images/Alameda-South-Shore-Beach.jpg?as=webp\";\n\ntype Image = {\n src: string;\n loaded: boolean;\n element?: HTMLImageElement;\n};\n\nconst BACKGROUND_IMAGES: Image[] = [\n { src: mountDiablo, loaded: false },\n { src: doloresPark, loaded: false },\n { src: alamedaSouthShore, loaded: false },\n];\nconst BACKGROUND_ELEMENT = document.getElementById(\"background\");\n\nlet backgroundImage = BACKGROUND_IMAGES[0];\nlet numLoaded = 0;\n\nfunction setBackgroundImage(image: Image) {\n backgroundImage = image;\n BACKGROUND_ELEMENT.style.backgroundImage = `url(${image.src})`;\n BACKGROUND_ELEMENT.style.opacity = \"1\";\n}\n\nfunction changeImage() {\n const images = BACKGROUND_IMAGES.filter((image) => image.loaded);\n if (images.length > 1) {\n let index = images.indexOf(backgroundImage);\n index += 1;\n if (index === images.length) {\n index = 0;\n }\n setBackgroundImage(images[index]);\n }\n}\n\nfunction startSlideshow(mediaQuery: MediaQueryList | MediaQueryListEvent) {\n if (mediaQuery.matches) {\n BACKGROUND_IMAGES.forEach((image) => {\n if (!image.element) {\n const element = new Image();\n element.onload = () => {\n image.loaded = true;\n if (numLoaded === 0) {\n setBackgroundImage(image);\n setInterval(changeImage, 15000);\n }\n numLoaded += 1;\n };\n element.src = image.src;\n image.element = element;\n }\n });\n }\n}\n\nexport async function slideshowBackground() {\n const mediaQuery = window.matchMedia(\"(min-width: 1000px)\");\n startSlideshow(mediaQuery);\n mediaQuery.addEventListener(\"change\", startSlideshow);\n}\n","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"kgv3l\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"hkHP6\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"1vL1P\")).toString();","const LIKES_COUNTER_URL = \"https://api.seankrail.dev/count/likes\";\nconst MAX_LIKES_PER_SESSION = 3;\nconst LIKES_CONTAINER = document.getElementById(\"likes-container\");\nconst LIKES_THUMB = document.getElementById(\"likes-thumb\");\nconst LIKES_COUNT = document.getElementById(\"likes-count\");\n\nlet isLikeEnabled = false;\nlet totalLikes = 0;\nlet likesThisSession = 0;\n\nfunction setLikesCount(likes: number) {\n LIKES_CONTAINER.style.visibility = \"visible\";\n LIKES_COUNT.innerHTML = `${likes}`;\n LIKES_CONTAINER.style.opacity = \"1\";\n isLikeEnabled = true;\n}\n\nasync function getLikes(): Promise {\n const response = await window.fetch(LIKES_COUNTER_URL, { method: \"GET\" });\n totalLikes = Number(await response.text());\n return totalLikes;\n}\n\nasync function like() {\n if (isLikeEnabled) {\n if (likesThisSession < MAX_LIKES_PER_SESSION) {\n window.fetch(LIKES_COUNTER_URL, { method: \"POST\" });\n LIKES_THUMB.style.fontVariationSettings = \"'FILL' 1\";\n }\n likesThisSession += 1;\n totalLikes += 1;\n setLikesCount(totalLikes);\n }\n}\n\nexport async function loadLikesCounter() {\n setLikesCount(await getLikes());\n\n LIKES_CONTAINER.addEventListener(\"click\", () => like());\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$cffc5c68c02d7d6a$export$6503ec6e8aabbaf","$cffc5c68c02d7d6a$export$f7ad0328861e2f03","$cffc5c68c02d7d6a$var$mapping","pairs","keys","i","length","resolved","JSON","parse","$5832eb44668bdb9f$var$MY_FACE_CONTAINER","document","getElementById","$5832eb44668bdb9f$var$MY_FACE","$5832eb44668bdb9f$var$intervalId","$5832eb44668bdb9f$var$topRight","$5832eb44668bdb9f$var$bottomRight","$5832eb44668bdb9f$var$bottomLeft","$5832eb44668bdb9f$var$topLeft","$5832eb44668bdb9f$var$updateBorderRadius","className","$5832eb44668bdb9f$var$startLoop","clearInterval","setInterval","$5832eb44668bdb9f$export$b18aab2d2b6b171","addEventListener","rect","getBoundingClientRect","x","clientX","left","y","clientY","top","x1","width","y1","height","yHalf","y0","x0","$50e230c9c1f85f74$exports","URL","resolve","url","toString","$ea261065879e5c41$exports","$a06e9ed884fc49a0$exports","$4c7c619664a416e1$var$BACKGROUND_IMAGES","src","loaded","$4c7c619664a416e1$var$BACKGROUND_ELEMENT","$4c7c619664a416e1$var$backgroundImage","$4c7c619664a416e1$var$numLoaded","$4c7c619664a416e1$var$setBackgroundImage","image","style","backgroundImage","opacity","$4c7c619664a416e1$var$changeImage","images","filter","index","indexOf","$4c7c619664a416e1$var$startSlideshow","mediaQuery","matches","forEach","element","Image","onload","$4c7c619664a416e1$export$17916ffb303dab95","matchMedia","$e6a02e8e5b462043$var$LIKES_COUNTER_URL","$e6a02e8e5b462043$var$LIKES_CONTAINER","$e6a02e8e5b462043$var$LIKES_THUMB","$e6a02e8e5b462043$var$LIKES_COUNT","$e6a02e8e5b462043$var$isLikeEnabled","$e6a02e8e5b462043$var$totalLikes","$e6a02e8e5b462043$var$likesThisSession","$e6a02e8e5b462043$var$setLikesCount","likes","visibility","innerHTML","$e6a02e8e5b462043$var$getLikes","response","fetch","method","Number","text","$e6a02e8e5b462043$var$like","fontVariationSettings","$e6a02e8e5b462043$export$71f7d6ce0daffb8a"],"version":3,"file":"index.21b2c8c3.js.map"} \ No newline at end of file diff --git a/index.21b2c8c3.js.map.br b/index.21b2c8c3.js.map.br new file mode 100644 index 0000000..80758ab Binary files /dev/null and b/index.21b2c8c3.js.map.br differ diff --git a/index.21b2c8c3.js.map.gz b/index.21b2c8c3.js.map.gz new file mode 100644 index 0000000..79c55ed Binary files /dev/null and b/index.21b2c8c3.js.map.gz differ diff --git a/index.2d67d0ff.js b/index.2d67d0ff.js new file mode 100644 index 0000000..7f75ce7 --- /dev/null +++ b/index.2d67d0ff.js @@ -0,0 +1,2 @@ +!function(){function e(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}function t(e){return e&&e.__esModule?e.default:e}var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},r={},i={},o=n.parcelRequireefef;function u(e,t,n,r,i,o,u){try{var c=e[o](u),a=c.value}catch(e){n(e);return}c.done?t(a):Promise.resolve(a).then(r,i)}function c(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function c(e){u(o,r,i,c,a,"next",e)}function a(e){u(o,r,i,c,a,"throw",e)}c(void 0)})}}null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in i){var t=i[e];delete i[e];var n={id:e,exports:{}};return r[e]=n,t.call(n.exports,n,n.exports),n.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){i[e]=t},n.parcelRequireefef=o),o.register("6pZIW",function(t,n){"use strict";e(t.exports,"register",function(){return r},function(e){return r=e}),e(t.exports,"resolve",function(){return i},function(e){return i=e});var r,i,o={};r=function(e){for(var t=Object.keys(e),n=0;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){u=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]1){var t=e.indexOf(k);(t+=1)===e.length&&(t=0),B(e[t])}}function S(e){e.matches&&E.forEach(function(e){if(!e.element){var t=new Image;t.onload=function(){e.loaded=!0,0===R&&(B(e),setInterval(L,15e3)),R+=1},t.src=e.src,e.element=t}})}function _(){return(_=c(function(){var e;return a(this,function(t){return S(e=window.matchMedia("(min-width: 1000px)")),e.addEventListener("change",S),[2]})})).apply(this,arguments)}var O="https://api.seankrail.dev/count/likes",H=document.getElementById("likes-container"),F=document.getElementById("likes-thumb"),U=document.getElementById("likes-count"),N=!1,T=0,M=0;function A(e){H.style.visibility="visible",U.innerHTML="".concat(e),H.style.opacity="1",N=!0}function P(){return(P=c(function(){return a(this,function(e){switch(e.label){case 0:return[4,window.fetch(O,{method:"GET"})];case 1:return[4,e.sent().text()];case 2:return[2,T=Number.apply(void 0,[e.sent()])]}})})).apply(this,arguments)}function W(){return(W=c(function(){return a(this,function(e){return N&&(M<3&&(window.fetch(O,{method:"POST"}),F.style.fontVariationSettings="'FILL' 1"),M+=1,A(T+=1)),[2]})})).apply(this,arguments)}function Y(){return(Y=c(function(){return a(this,function(e){switch(e.label){case 0:return[4,function(){return P.apply(this,arguments)}()];case 1:return A.apply(void 0,[e.sent()]),H.addEventListener("click",function(){return function(){return W.apply(this,arguments)}()}),[2]}})})).apply(this,arguments)}c(function(){return a(this,function(e){return function(){_.apply(this,arguments)}(),[2]})})(),c(function(){return a(this,function(e){return function(){b.apply(this,arguments)}(),[2]})})(),c(function(){return a(this,function(e){return function(){Y.apply(this,arguments)}(),[2]})})()}(); +//# sourceMappingURL=index.2d67d0ff.js.map diff --git a/index.2d67d0ff.js.br b/index.2d67d0ff.js.br new file mode 100644 index 0000000..16ea625 Binary files /dev/null and b/index.2d67d0ff.js.br differ diff --git a/index.2d67d0ff.js.gz b/index.2d67d0ff.js.gz new file mode 100644 index 0000000..c02f32f Binary files /dev/null and b/index.2d67d0ff.js.gz differ diff --git a/index.2d67d0ff.js.map b/index.2d67d0ff.js.map new file mode 100644 index 0000000..62113be --- /dev/null +++ b/index.2d67d0ff.js.map @@ -0,0 +1 @@ +{"mappings":"C,A,W,S,E,C,C,C,C,C,C,C,E,O,e,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,S,E,C,E,O,G,E,W,E,Q,C,C,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,kBKAA,SAAS,EAAmB,CAAG,CAAE,CAAO,CAAE,CAAM,CAAE,CAAK,CAAE,CAAM,CAAE,CAAG,CAAE,CAAG,EACrE,GAAI,CACA,IAAI,EAAO,CAAG,CAAC,EAAI,CAAC,GAChB,EAAQ,EAAK,KACrB,CAAE,MAAO,EAAO,CACZ,EAAO,GACP,MACJ,CACI,EAAK,KAAM,EAAQ,GAClB,QAAQ,QAAQ,GAAO,KAAK,EAAO,EAC5C,CACO,SAAS,EAAoB,CAAE,EAClC,OAAO,WACH,IAAI,EAAO,IAAI,CAAE,EAAO,UAExB,OAAO,IAAI,QAAQ,SAAS,CAAO,CAAE,CAAM,EACvC,IAAI,EAAM,EAAG,MAAM,EAAM,GAEzB,SAAS,EAAM,CAAK,EAChB,EAAmB,EAAK,EAAS,EAAQ,EAAO,EAAQ,OAAQ,EACpE,CAEA,SAAS,EAAO,CAAG,EACf,EAAmB,EAAK,EAAS,EAAQ,EAAO,EAAQ,QAAS,EACrE,CAEA,EAAM,KAAA,EACV,EACJ,CACJ,C,M,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,Q,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,K,E,Q,E,E,S,E,O,C,I,E,A,M,uB,E,I,O,E,K,mB,C,C,E,S,S,C,C,C,E,C,C,E,C,C,E,E,kB,G,E,S,Q,S,C,C,C,EJ7BA,a,E,E,Q,W,W,O,C,E,S,C,E,O,E,C,G,E,E,Q,U,W,O,C,E,S,C,E,O,E,C,GAEA,IAcA,EACA,EAfI,EAAU,CAAC,EAcf,EAbA,SAAkB,CAAK,EAErB,IAAK,IADD,EAAO,OAAO,KAAK,GACd,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,CAAO,CAAC,CAAI,CAAC,EAAE,CAAC,CAAG,CAAK,CAAC,CAAI,CAAC,EAAE,CAAC,AAErC,EASA,EARA,SAAiB,CAAE,EACjB,IAAI,EAAW,CAAO,CAAC,EAAG,CAC1B,GAAI,A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","sources":["",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/helpers/bundle-url.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-fb80218fba505360.js","src/index.ts",".yarn/cache/@swc-helpers-npm-0.5.1-424376f311-71e0e27234.zip/node_modules/@swc/helpers/esm/_async_to_generator.js",".yarn/cache/tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip/node_modules/tslib/tslib.es6.js","src/features/index.ts","src/features/animate-border.ts","src/features/slideshow-background.ts",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-031360602ffcba11.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-08020e7167d95cf0.js",".yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/lib/runtime-c850f42e1038e1f5.js","src/features/likes-counter.ts"],"sourcesContent":["(function () {\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequireefef\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequireefef\"] = parcelRequire;\n}\nparcelRequire.register(\"6pZIW\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $4ac4f4f40fcc32da$export$6503ec6e8aabbaf; }, function (v) { return $4ac4f4f40fcc32da$export$6503ec6e8aabbaf = v; });\n$parcel$export(module.exports, \"resolve\", function () { return $4ac4f4f40fcc32da$export$f7ad0328861e2f03; }, function (v) { return $4ac4f4f40fcc32da$export$f7ad0328861e2f03 = v; });\nvar $4ac4f4f40fcc32da$export$6503ec6e8aabbaf;\nvar $4ac4f4f40fcc32da$export$f7ad0328861e2f03;\n\"use strict\";\nvar $4ac4f4f40fcc32da$var$mapping = {};\nfunction $4ac4f4f40fcc32da$var$register(pairs) {\n var keys = Object.keys(pairs);\n for(var i = 0; i < keys.length; i++)$4ac4f4f40fcc32da$var$mapping[keys[i]] = pairs[keys[i]];\n}\nfunction $4ac4f4f40fcc32da$var$resolve(id) {\n var resolved = $4ac4f4f40fcc32da$var$mapping[id];\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return resolved;\n}\n$4ac4f4f40fcc32da$export$6503ec6e8aabbaf = $4ac4f4f40fcc32da$var$register;\n$4ac4f4f40fcc32da$export$f7ad0328861e2f03 = $4ac4f4f40fcc32da$var$resolve;\n\n});\n\nparcelRequire.register(\"4RY3h\", function(module, exports) {\n\n$parcel$export(module.exports, \"getBundleURL\", function () { return $38bab1bbef0c12de$export$bdfd709ae4826697; }, function (v) { return $38bab1bbef0c12de$export$bdfd709ae4826697 = v; });\nvar $38bab1bbef0c12de$export$bdfd709ae4826697;\nvar $38bab1bbef0c12de$export$c9e73fbda7da57b6;\nvar $38bab1bbef0c12de$export$5a759dc7a1cfb72a;\n\"use strict\";\nvar $38bab1bbef0c12de$var$bundleURL = {};\nfunction $38bab1bbef0c12de$var$getBundleURLCached(id) {\n var value = $38bab1bbef0c12de$var$bundleURL[id];\n if (!value) {\n value = $38bab1bbef0c12de$var$getBundleURL();\n $38bab1bbef0c12de$var$bundleURL[id] = value;\n }\n return value;\n}\nfunction $38bab1bbef0c12de$var$getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = (\"\" + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return $38bab1bbef0c12de$var$getBaseURL(matches[2]);\n }\n return \"/\";\n}\nfunction $38bab1bbef0c12de$var$getBaseURL(url) {\n return (\"\" + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, \"$1\") + \"/\";\n}\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction $38bab1bbef0c12de$var$getOrigin(url) {\n var matches = (\"\" + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) throw new Error(\"Origin not found\");\n return matches[0];\n}\n$38bab1bbef0c12de$export$bdfd709ae4826697 = $38bab1bbef0c12de$var$getBundleURLCached;\n$38bab1bbef0c12de$export$c9e73fbda7da57b6 = $38bab1bbef0c12de$var$getBaseURL;\n$38bab1bbef0c12de$export$5a759dc7a1cfb72a = $38bab1bbef0c12de$var$getOrigin;\n\n});\n\nvar $d4492341aecb5750$exports = {};\n\n(parcelRequire(\"6pZIW\")).register(JSON.parse('{\"f5rI7\":\"index.2d67d0ff.js\",\"dcNSI\":\"Mount-Diablo-Bay-View.1e5928ef.webp\",\"dFO4U\":\"Mission-Dolores-Park.f6b361f6.webp\",\"i3Idz\":\"Alameda-South-Shore-Beach.a682d7f2.webp\"}'));\n\nfunction $2917cda7208ba2e4$var$asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction $2917cda7208ba2e4$export$7c398597f8905a1(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n $2917cda7208ba2e4$var$asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n $2917cda7208ba2e4$var$asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\n\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */ /* global Reflect, Promise */ var $5a9c5054fa520326$var$extendStatics = function extendStatics1(d, b) {\n $5a9c5054fa520326$var$extendStatics = Object.setPrototypeOf || ({\n __proto__: []\n }) instanceof Array && function(d, b) {\n d.__proto__ = b;\n } || function(d, b) {\n for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return $5a9c5054fa520326$var$extendStatics(d, b);\n};\nfunction $5a9c5054fa520326$export$a8ba968b8961cb8a(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n $5a9c5054fa520326$var$extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar $5a9c5054fa520326$export$18ce0697a983be9b = function __assign1() {\n $5a9c5054fa520326$export$18ce0697a983be9b = Object.assign || function __assign(t) {\n for(var s, i = 1, n = arguments.length; i < n; i++){\n s = arguments[i];\n for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return $5a9c5054fa520326$export$18ce0697a983be9b.apply(this, arguments);\n};\nfunction $5a9c5054fa520326$export$3c9a16f847548506(s, e) {\n var t = {};\n for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") {\n for(var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nfunction $5a9c5054fa520326$export$29e00dfd3077644b(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nfunction $5a9c5054fa520326$export$d5ad3fd78186038f(paramIndex, decorator) {\n return function(target, key) {\n decorator(target, key, paramIndex);\n };\n}\nfunction $5a9c5054fa520326$export$f1db080c865becb9(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nfunction $5a9c5054fa520326$export$1050f835b63b671e(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function(resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction $5a9c5054fa520326$export$67ebef60e6f28a6(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, f, y, t, g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nvar $5a9c5054fa520326$export$45d3717a4c69092e = Object.create ? function __createBinding(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nfunction $5a9c5054fa520326$export$f33643c0debef087(m, o) {\n for(var p in m)if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) $5a9c5054fa520326$export$45d3717a4c69092e(o, m, p);\n}\nfunction $5a9c5054fa520326$export$19a8beecd37a4c45(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction $5a9c5054fa520326$export$8d051b38c9118094(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while((n === void 0 || n-- > 0) && !(r = i.next()).done)ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally{\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally{\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction $5a9c5054fa520326$export$afc72e2116322959() {\n for(var ar = [], i = 0; i < arguments.length; i++)ar = ar.concat($5a9c5054fa520326$export$8d051b38c9118094(arguments[i]));\n return ar;\n}\nfunction $5a9c5054fa520326$export$6388937ca91ccae8() {\n for(var s = 0, i = 0, il = arguments.length; i < il; i++)s += arguments[i].length;\n for(var r = Array(s), k = 0, i = 0; i < il; i++)for(var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)r[k] = a[j];\n return r;\n}\nfunction $5a9c5054fa520326$export$1216008129fb82ed(to, from, pack) {\n if (pack || arguments.length === 2) {\n for(var i = 0, l = from.length, ar; i < l; i++)if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nfunction $5a9c5054fa520326$export$10c90e4f7922046c(v) {\n return this instanceof $5a9c5054fa520326$export$10c90e4f7922046c ? (this.v = v, this) : new $5a9c5054fa520326$export$10c90e4f7922046c(v);\n}\nfunction $5a9c5054fa520326$export$e427f37a30a4de9b(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function(v) {\n return new Promise(function(a, b) {\n q.push([\n n,\n v,\n a,\n b\n ]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof $5a9c5054fa520326$export$10c90e4f7922046c ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nfunction $5a9c5054fa520326$export$bbd80228419bb833(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function(e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function() {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function(v) {\n return (p = !p) ? {\n value: $5a9c5054fa520326$export$10c90e4f7922046c(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nfunction $5a9c5054fa520326$export$e3b29a3d6162315f(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof $5a9c5054fa520326$export$19a8beecd37a4c45 === \"function\" ? $5a9c5054fa520326$export$19a8beecd37a4c45(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function(v) {\n return new Promise(function(resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function(v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nfunction $5a9c5054fa520326$export$4fb47efe1390b86f(cooked, raw) {\n if (Object.defineProperty) Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n else cooked.raw = raw;\n return cooked;\n}\nvar $5a9c5054fa520326$var$__setModuleDefault = Object.create ? function __setModuleDefault(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n};\nfunction $5a9c5054fa520326$export$c21735bcef00d192(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) $5a9c5054fa520326$export$45d3717a4c69092e(result, mod, k);\n }\n $5a9c5054fa520326$var$__setModuleDefault(result, mod);\n return result;\n}\nfunction $5a9c5054fa520326$export$da59b14a69baef04(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nfunction $5a9c5054fa520326$export$d5dcaf168c640c35(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction $5a9c5054fa520326$export$d40a35129aaff81f(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nfunction $5a9c5054fa520326$export$81fdc39f203e4e04(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\n\n\n\nvar $5bd5fe660794965b$var$MY_FACE_CONTAINER = document.getElementById(\"myface-container\");\nvar $5bd5fe660794965b$var$MY_FACE = document.getElementById(\"myface\");\nvar $5bd5fe660794965b$var$intervalId = -1;\nvar $5bd5fe660794965b$var$topRight = false;\nvar $5bd5fe660794965b$var$bottomRight = true;\nvar $5bd5fe660794965b$var$bottomLeft = false;\nvar $5bd5fe660794965b$var$topLeft = false;\nfunction $5bd5fe660794965b$var$updateBorderRadius() {\n var className = \"\";\n className += $5bd5fe660794965b$var$topRight ? \"top-right \" : \"\";\n className += $5bd5fe660794965b$var$bottomRight ? \"bottom-right \" : \"\";\n className += $5bd5fe660794965b$var$bottomLeft ? \"bottom-left \" : \"\";\n className += $5bd5fe660794965b$var$topLeft ? \"top-left\" : \"\";\n $5bd5fe660794965b$var$MY_FACE.className = className;\n}\nfunction $5bd5fe660794965b$var$startLoop() {\n clearInterval($5bd5fe660794965b$var$intervalId);\n $5bd5fe660794965b$var$intervalId = setInterval(function() {\n if ($5bd5fe660794965b$var$topRight) {\n $5bd5fe660794965b$var$topRight = false;\n $5bd5fe660794965b$var$bottomRight = true;\n } else if ($5bd5fe660794965b$var$bottomRight) {\n $5bd5fe660794965b$var$bottomRight = false;\n $5bd5fe660794965b$var$bottomLeft = true;\n } else if ($5bd5fe660794965b$var$bottomLeft) {\n $5bd5fe660794965b$var$bottomLeft = false;\n $5bd5fe660794965b$var$topLeft = true;\n } else {\n // topLeft\n $5bd5fe660794965b$var$topLeft = false;\n $5bd5fe660794965b$var$topRight = true;\n }\n $5bd5fe660794965b$var$updateBorderRadius();\n }, 3219);\n}\nfunction $5bd5fe660794965b$export$b18aab2d2b6b171() {\n return $5bd5fe660794965b$var$_animateBorder.apply(this, arguments);\n}\nfunction $5bd5fe660794965b$var$_animateBorder() {\n $5bd5fe660794965b$var$_animateBorder = (0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n $5bd5fe660794965b$var$MY_FACE_CONTAINER.addEventListener(\"mouseout\", function() {\n return $5bd5fe660794965b$var$startLoop();\n });\n $5bd5fe660794965b$var$MY_FACE_CONTAINER.addEventListener(\"mouseup\", function() {\n return $5bd5fe660794965b$var$startLoop();\n });\n $5bd5fe660794965b$var$MY_FACE_CONTAINER.addEventListener(\"mousemove\", function(e) {\n // Pause the border radius loop while mouse is in this element\n clearInterval($5bd5fe660794965b$var$intervalId);\n /*\n (x0,y0)------+\n | |\n | (x,y) |\n | |\n +------(x1,y1)\n */ var rect = $5bd5fe660794965b$var$MY_FACE_CONTAINER.getBoundingClientRect();\n var x = e.clientX - rect.left;\n var y = e.clientY - rect.top;\n var x0 = 0;\n var y0 = 0;\n var x1 = rect.width;\n var y1 = rect.height;\n // console.log(\"x:\", x, \", y:\", y, \", x0:\", x0, \", y0\", y0, \", x1:\", x1, \", y1:\", y1);\n /*\n (x0,y0)---------xHalf------------+\n | top-left | top-right |\n yHalf----------(x,y)----------yHalf\n | bottom-left | bottom-right |\n +------------xHalf---------(x1,y1)\n */ var xHalf = x0 + (x0 + x1) / 2;\n var yHalf = y0 + (y0 + y1) / 2;\n $5bd5fe660794965b$var$topRight = false;\n $5bd5fe660794965b$var$bottomRight = false;\n $5bd5fe660794965b$var$bottomLeft = false;\n $5bd5fe660794965b$var$topLeft = false;\n if (x < xHalf) {\n if (y < yHalf) $5bd5fe660794965b$var$topLeft = true;\n else $5bd5fe660794965b$var$bottomLeft = true;\n } else if (y < yHalf) $5bd5fe660794965b$var$topRight = true;\n else $5bd5fe660794965b$var$bottomRight = true;\n $5bd5fe660794965b$var$updateBorderRadius();\n });\n $5bd5fe660794965b$var$startLoop();\n return [\n 2\n ];\n });\n });\n return $5bd5fe660794965b$var$_animateBorder.apply(this, arguments);\n}\n\n\n\n\nvar $d8ccc17ac4b598a2$exports = {};\n\n\n$d8ccc17ac4b598a2$exports = (parcelRequire(\"4RY3h\")).getBundleURL(\"f5rI7\") + (parcelRequire(\"6pZIW\")).resolve(\"dcNSI\");\n\n\nvar $a441d9357a3aa931$exports = {};\n\n\n$a441d9357a3aa931$exports = (parcelRequire(\"4RY3h\")).getBundleURL(\"f5rI7\") + (parcelRequire(\"6pZIW\")).resolve(\"dFO4U\");\n\n\nvar $bcabb19de68ec9ff$exports = {};\n\n\n$bcabb19de68ec9ff$exports = (parcelRequire(\"4RY3h\")).getBundleURL(\"f5rI7\") + (parcelRequire(\"6pZIW\")).resolve(\"i3Idz\");\n\n\nvar $bb17da59bc779618$var$BACKGROUND_IMAGES = [\n {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($d8ccc17ac4b598a2$exports))),\n loaded: false\n },\n {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($a441d9357a3aa931$exports))),\n loaded: false\n },\n {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($bcabb19de68ec9ff$exports))),\n loaded: false\n }\n];\nvar $bb17da59bc779618$var$BACKGROUND_ELEMENT = document.getElementById(\"background\");\nvar $bb17da59bc779618$var$backgroundImage = $bb17da59bc779618$var$BACKGROUND_IMAGES[0];\nvar $bb17da59bc779618$var$numLoaded = 0;\nfunction $bb17da59bc779618$var$setBackgroundImage(image) {\n $bb17da59bc779618$var$backgroundImage = image;\n $bb17da59bc779618$var$BACKGROUND_ELEMENT.style.backgroundImage = \"url(\".concat(image.src, \")\");\n $bb17da59bc779618$var$BACKGROUND_ELEMENT.style.opacity = \"1\";\n}\nfunction $bb17da59bc779618$var$changeImage() {\n var images = $bb17da59bc779618$var$BACKGROUND_IMAGES.filter(function(image) {\n return image.loaded;\n });\n if (images.length > 1) {\n var index = images.indexOf($bb17da59bc779618$var$backgroundImage);\n index += 1;\n if (index === images.length) index = 0;\n $bb17da59bc779618$var$setBackgroundImage(images[index]);\n }\n}\nfunction $bb17da59bc779618$var$startSlideshow(mediaQuery) {\n if (mediaQuery.matches) $bb17da59bc779618$var$BACKGROUND_IMAGES.forEach(function(image) {\n if (!image.element) {\n var element = new Image();\n element.onload = function() {\n image.loaded = true;\n if ($bb17da59bc779618$var$numLoaded === 0) {\n $bb17da59bc779618$var$setBackgroundImage(image);\n setInterval($bb17da59bc779618$var$changeImage, 15000);\n }\n $bb17da59bc779618$var$numLoaded += 1;\n };\n element.src = image.src;\n image.element = element;\n }\n });\n}\nfunction $bb17da59bc779618$export$17916ffb303dab95() {\n return $bb17da59bc779618$var$_slideshowBackground.apply(this, arguments);\n}\nfunction $bb17da59bc779618$var$_slideshowBackground() {\n $bb17da59bc779618$var$_slideshowBackground = (0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n var mediaQuery;\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n mediaQuery = window.matchMedia(\"(min-width: 1000px)\");\n $bb17da59bc779618$var$startSlideshow(mediaQuery);\n mediaQuery.addEventListener(\"change\", $bb17da59bc779618$var$startSlideshow);\n return [\n 2\n ];\n });\n });\n return $bb17da59bc779618$var$_slideshowBackground.apply(this, arguments);\n}\n\n\n\n\nvar $f6e64a82cb308cb5$var$LIKES_COUNTER_URL = \"https://api.seankrail.dev/count/likes\";\nvar $f6e64a82cb308cb5$var$MAX_LIKES_PER_SESSION = 3;\nvar $f6e64a82cb308cb5$var$LIKES_CONTAINER = document.getElementById(\"likes-container\");\nvar $f6e64a82cb308cb5$var$LIKES_THUMB = document.getElementById(\"likes-thumb\");\nvar $f6e64a82cb308cb5$var$LIKES_COUNT = document.getElementById(\"likes-count\");\nvar $f6e64a82cb308cb5$var$isLikeEnabled = false;\nvar $f6e64a82cb308cb5$var$totalLikes = 0;\nvar $f6e64a82cb308cb5$var$likesThisSession = 0;\nfunction $f6e64a82cb308cb5$var$setLikesCount(likes) {\n $f6e64a82cb308cb5$var$LIKES_CONTAINER.style.visibility = \"visible\";\n $f6e64a82cb308cb5$var$LIKES_COUNT.innerHTML = \"\".concat(likes);\n $f6e64a82cb308cb5$var$LIKES_CONTAINER.style.opacity = \"1\";\n $f6e64a82cb308cb5$var$isLikeEnabled = true;\n}\nfunction $f6e64a82cb308cb5$var$getLikes() {\n return $f6e64a82cb308cb5$var$_getLikes.apply(this, arguments);\n}\nfunction $f6e64a82cb308cb5$var$_getLikes() {\n $f6e64a82cb308cb5$var$_getLikes = (0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n var response;\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.fetch($f6e64a82cb308cb5$var$LIKES_COUNTER_URL, {\n method: \"GET\"\n })\n ];\n case 1:\n response = _state.sent();\n return [\n 4,\n response.text()\n ];\n case 2:\n $f6e64a82cb308cb5$var$totalLikes = Number.apply(void 0, [\n _state.sent()\n ]);\n return [\n 2,\n $f6e64a82cb308cb5$var$totalLikes\n ];\n }\n });\n });\n return $f6e64a82cb308cb5$var$_getLikes.apply(this, arguments);\n}\nfunction $f6e64a82cb308cb5$var$like() {\n return $f6e64a82cb308cb5$var$_like.apply(this, arguments);\n}\nfunction $f6e64a82cb308cb5$var$_like() {\n $f6e64a82cb308cb5$var$_like = (0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n if ($f6e64a82cb308cb5$var$isLikeEnabled) {\n if ($f6e64a82cb308cb5$var$likesThisSession < $f6e64a82cb308cb5$var$MAX_LIKES_PER_SESSION) {\n window.fetch($f6e64a82cb308cb5$var$LIKES_COUNTER_URL, {\n method: \"POST\"\n });\n $f6e64a82cb308cb5$var$LIKES_THUMB.style.fontVariationSettings = \"'FILL' 1\";\n }\n $f6e64a82cb308cb5$var$likesThisSession += 1;\n $f6e64a82cb308cb5$var$totalLikes += 1;\n $f6e64a82cb308cb5$var$setLikesCount($f6e64a82cb308cb5$var$totalLikes);\n }\n return [\n 2\n ];\n });\n });\n return $f6e64a82cb308cb5$var$_like.apply(this, arguments);\n}\nfunction $f6e64a82cb308cb5$export$71f7d6ce0daffb8a() {\n return $f6e64a82cb308cb5$var$_loadLikesCounter.apply(this, arguments);\n}\nfunction $f6e64a82cb308cb5$var$_loadLikesCounter() {\n $f6e64a82cb308cb5$var$_loadLikesCounter = (0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n $f6e64a82cb308cb5$var$getLikes()\n ];\n case 1:\n $f6e64a82cb308cb5$var$setLikesCount.apply(void 0, [\n _state.sent()\n ]);\n $f6e64a82cb308cb5$var$LIKES_CONTAINER.addEventListener(\"click\", function() {\n return $f6e64a82cb308cb5$var$like();\n });\n return [\n 2\n ];\n }\n });\n });\n return $f6e64a82cb308cb5$var$_loadLikesCounter.apply(this, arguments);\n}\n\n\n\n\n(0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n (0, $bb17da59bc779618$export$17916ffb303dab95)();\n return [\n 2\n ];\n });\n})();\n(0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n (0, $5bd5fe660794965b$export$b18aab2d2b6b171)();\n return [\n 2\n ];\n });\n})();\n(0, $2917cda7208ba2e4$export$7c398597f8905a1)(function() {\n return (0, $5a9c5054fa520326$export$67ebef60e6f28a6)(this, function(_state) {\n (0, $f6e64a82cb308cb5$export$71f7d6ce0daffb8a)();\n return [\n 2\n ];\n });\n})();\n\n})();\n//# sourceMappingURL=index.2d67d0ff.js.map\n","\"use strict\";\n\nvar mapping = {};\nfunction register(pairs) {\n var keys = Object.keys(pairs);\n for (var i = 0; i < keys.length; i++) {\n mapping[keys[i]] = pairs[keys[i]];\n }\n}\nfunction resolve(id) {\n var resolved = mapping[id];\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return resolved;\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","\"use strict\";\n\nvar bundleURL = {};\nfunction getBundleURLCached(id) {\n var value = bundleURL[id];\n if (!value) {\n value = getBundleURL();\n bundleURL[id] = value;\n }\n return value;\n}\nfunction getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) {\n // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return getBaseURL(matches[2]);\n }\n }\n return '/';\n}\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction getOrigin(url) {\n var matches = ('' + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) {\n throw new Error('Origin not found');\n }\n return matches[0];\n}\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\nexports.getOrigin = getOrigin;","require('./helpers/bundle-manifest').register(JSON.parse(\"{\\\"f5rI7\\\":\\\"index.2d67d0ff.js\\\",\\\"dcNSI\\\":\\\"Mount-Diablo-Bay-View.1e5928ef.webp\\\",\\\"dFO4U\\\":\\\"Mission-Dolores-Park.f6b361f6.webp\\\",\\\"i3Idz\\\":\\\"Alameda-South-Shore-Beach.a682d7f2.webp\\\"}\"));","import {\n animateBorder,\n loadLikesCounter,\n slideshowBackground,\n} from \"./features\";\n\n(async () => {\n slideshowBackground();\n})();\n\n(async () => {\n animateBorder();\n})();\n\n(async () => {\n loadLikesCounter();\n})();\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nexport function _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export * from \"./animate-border\";\nexport * from \"./slideshow-background\";\nexport * from \"./likes-counter\";\n","const MY_FACE_CONTAINER = document.getElementById(\"myface-container\");\nconst MY_FACE = document.getElementById(\"myface\");\n\nlet intervalId = -1;\nlet topRight = false;\nlet bottomRight = true;\nlet bottomLeft = false;\nlet topLeft = false;\n\nfunction updateBorderRadius() {\n let className = \"\";\n className += topRight ? \"top-right \" : \"\";\n className += bottomRight ? \"bottom-right \" : \"\";\n className += bottomLeft ? \"bottom-left \" : \"\";\n className += topLeft ? \"top-left\" : \"\";\n MY_FACE.className = className;\n}\n\nfunction startLoop() {\n clearInterval(intervalId);\n intervalId = setInterval(() => {\n if (topRight) {\n topRight = false;\n bottomRight = true;\n } else if (bottomRight) {\n bottomRight = false;\n bottomLeft = true;\n } else if (bottomLeft) {\n bottomLeft = false;\n topLeft = true;\n } else {\n // topLeft\n topLeft = false;\n topRight = true;\n }\n updateBorderRadius();\n }, 3219);\n}\n\nexport async function animateBorder() {\n MY_FACE_CONTAINER.addEventListener(\"mouseout\", () => startLoop());\n MY_FACE_CONTAINER.addEventListener(\"mouseup\", () => startLoop());\n\n MY_FACE_CONTAINER.addEventListener(\"mousemove\", (e) => {\n // Pause the border radius loop while mouse is in this element\n clearInterval(intervalId);\n\n /*\n (x0,y0)------+\n | |\n | (x,y) |\n | |\n +------(x1,y1)\n */\n const rect = MY_FACE_CONTAINER.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const x0 = 0;\n const y0 = 0;\n const x1 = rect.width;\n const y1 = rect.height;\n // console.log(\"x:\", x, \", y:\", y, \", x0:\", x0, \", y0\", y0, \", x1:\", x1, \", y1:\", y1);\n\n /*\n (x0,y0)---------xHalf------------+\n | top-left | top-right |\n yHalf----------(x,y)----------yHalf\n | bottom-left | bottom-right |\n +------------xHalf---------(x1,y1)\n */\n const xHalf = x0 + (x0 + x1) / 2;\n const yHalf = y0 + (y0 + y1) / 2;\n topRight = false;\n bottomRight = false;\n bottomLeft = false;\n topLeft = false;\n if (x < xHalf) {\n if (y < yHalf) {\n topLeft = true;\n } else {\n bottomLeft = true;\n }\n } else if (y < yHalf) {\n topRight = true;\n } else {\n bottomRight = true;\n }\n updateBorderRadius();\n });\n\n startLoop();\n}\n","import mountDiablo from \"url:../images/Mount-Diablo-Bay-View.jpg?as=webp\";\nimport doloresPark from \"url:../images/Mission-Dolores-Park.jpg?as=webp\";\nimport alamedaSouthShore from \"url:../images/Alameda-South-Shore-Beach.jpg?as=webp\";\n\ntype Image = {\n src: string;\n loaded: boolean;\n element?: HTMLImageElement;\n};\n\nconst BACKGROUND_IMAGES: Image[] = [\n { src: mountDiablo, loaded: false },\n { src: doloresPark, loaded: false },\n { src: alamedaSouthShore, loaded: false },\n];\nconst BACKGROUND_ELEMENT = document.getElementById(\"background\");\n\nlet backgroundImage = BACKGROUND_IMAGES[0];\nlet numLoaded = 0;\n\nfunction setBackgroundImage(image: Image) {\n backgroundImage = image;\n BACKGROUND_ELEMENT.style.backgroundImage = `url(${image.src})`;\n BACKGROUND_ELEMENT.style.opacity = \"1\";\n}\n\nfunction changeImage() {\n const images = BACKGROUND_IMAGES.filter((image) => image.loaded);\n if (images.length > 1) {\n let index = images.indexOf(backgroundImage);\n index += 1;\n if (index === images.length) {\n index = 0;\n }\n setBackgroundImage(images[index]);\n }\n}\n\nfunction startSlideshow(mediaQuery: MediaQueryList | MediaQueryListEvent) {\n if (mediaQuery.matches) {\n BACKGROUND_IMAGES.forEach((image) => {\n if (!image.element) {\n const element = new Image();\n element.onload = () => {\n image.loaded = true;\n if (numLoaded === 0) {\n setBackgroundImage(image);\n setInterval(changeImage, 15000);\n }\n numLoaded += 1;\n };\n element.src = image.src;\n image.element = element;\n }\n });\n }\n}\n\nexport async function slideshowBackground() {\n const mediaQuery = window.matchMedia(\"(min-width: 1000px)\");\n startSlideshow(mediaQuery);\n mediaQuery.addEventListener(\"change\", startSlideshow);\n}\n","module.exports = require('./helpers/bundle-url').getBundleURL('f5rI7') + require('./helpers/bundle-manifest').resolve(\"dcNSI\");","module.exports = require('./helpers/bundle-url').getBundleURL('f5rI7') + require('./helpers/bundle-manifest').resolve(\"dFO4U\");","module.exports = require('./helpers/bundle-url').getBundleURL('f5rI7') + require('./helpers/bundle-manifest').resolve(\"i3Idz\");","const LIKES_COUNTER_URL = \"https://api.seankrail.dev/count/likes\";\nconst MAX_LIKES_PER_SESSION = 3;\nconst LIKES_CONTAINER = document.getElementById(\"likes-container\");\nconst LIKES_THUMB = document.getElementById(\"likes-thumb\");\nconst LIKES_COUNT = document.getElementById(\"likes-count\");\n\nlet isLikeEnabled = false;\nlet totalLikes = 0;\nlet likesThisSession = 0;\n\nfunction setLikesCount(likes: number) {\n LIKES_CONTAINER.style.visibility = \"visible\";\n LIKES_COUNT.innerHTML = `${likes}`;\n LIKES_CONTAINER.style.opacity = \"1\";\n isLikeEnabled = true;\n}\n\nasync function getLikes(): Promise {\n const response = await window.fetch(LIKES_COUNTER_URL, { method: \"GET\" });\n totalLikes = Number(await response.text());\n return totalLikes;\n}\n\nasync function like() {\n if (isLikeEnabled) {\n if (likesThisSession < MAX_LIKES_PER_SESSION) {\n window.fetch(LIKES_COUNTER_URL, { method: \"POST\" });\n LIKES_THUMB.style.fontVariationSettings = \"'FILL' 1\";\n }\n likesThisSession += 1;\n totalLikes += 1;\n setLikesCount(totalLikes);\n }\n}\n\nexport async function loadLikesCounter() {\n setLikesCount(await getLikes());\n\n LIKES_CONTAINER.addEventListener(\"click\", () => like());\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","$2917cda7208ba2e4$var$asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","$2917cda7208ba2e4$export$7c398597f8905a1","fn","args","arguments","apply","err","undefined","id","exports","init","module","call","Error","code","register","$4ac4f4f40fcc32da$export$6503ec6e8aabbaf","$4ac4f4f40fcc32da$export$f7ad0328861e2f03","$4ac4f4f40fcc32da$var$mapping","pairs","keys","i","length","resolved","$38bab1bbef0c12de$export$bdfd709ae4826697","$38bab1bbef0c12de$var$bundleURL","$38bab1bbef0c12de$var$getBundleURL","matches","stack","match","replace","JSON","parse","$5a9c5054fa520326$export$67ebef60e6f28a6","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","Symbol","iterator","step","op","TypeError","pop","push","$5bd5fe660794965b$var$MY_FACE_CONTAINER","document","getElementById","$5bd5fe660794965b$var$MY_FACE","$5bd5fe660794965b$var$intervalId","$5bd5fe660794965b$var$topRight","$5bd5fe660794965b$var$bottomRight","$5bd5fe660794965b$var$bottomLeft","$5bd5fe660794965b$var$topLeft","$5bd5fe660794965b$var$updateBorderRadius","className","$5bd5fe660794965b$var$startLoop","clearInterval","setInterval","$5bd5fe660794965b$var$_animateBorder","_state","addEventListener","rect","getBoundingClientRect","x","clientX","left","clientY","top","x1","width","yHalf","y0","height","x0","$d8ccc17ac4b598a2$exports","getBundleURL","$a441d9357a3aa931$exports","$bcabb19de68ec9ff$exports","$bb17da59bc779618$var$BACKGROUND_IMAGES","src","loaded","$bb17da59bc779618$var$BACKGROUND_ELEMENT","$bb17da59bc779618$var$backgroundImage","$bb17da59bc779618$var$numLoaded","$bb17da59bc779618$var$setBackgroundImage","image","style","backgroundImage","concat","opacity","$bb17da59bc779618$var$changeImage","images","filter","index","indexOf","$bb17da59bc779618$var$startSlideshow","mediaQuery","forEach","element","Image","onload","$bb17da59bc779618$var$_slideshowBackground","matchMedia","$f6e64a82cb308cb5$var$LIKES_COUNTER_URL","$f6e64a82cb308cb5$var$LIKES_CONTAINER","$f6e64a82cb308cb5$var$LIKES_THUMB","$f6e64a82cb308cb5$var$LIKES_COUNT","$f6e64a82cb308cb5$var$isLikeEnabled","$f6e64a82cb308cb5$var$totalLikes","$f6e64a82cb308cb5$var$likesThisSession","$f6e64a82cb308cb5$var$setLikesCount","likes","visibility","innerHTML","$f6e64a82cb308cb5$var$_getLikes","fetch","method","response","text","Number","$f6e64a82cb308cb5$var$_like","fontVariationSettings","$f6e64a82cb308cb5$var$_loadLikesCounter","$f6e64a82cb308cb5$var$getLikes","$f6e64a82cb308cb5$var$like"],"version":3,"file":"index.2d67d0ff.js.map"} \ No newline at end of file diff --git a/index.2d67d0ff.js.map.br b/index.2d67d0ff.js.map.br new file mode 100644 index 0000000..998bccb Binary files /dev/null and b/index.2d67d0ff.js.map.br differ diff --git a/index.2d67d0ff.js.map.gz b/index.2d67d0ff.js.map.gz new file mode 100644 index 0000000..b766c1a Binary files /dev/null and b/index.2d67d0ff.js.map.gz differ diff --git a/index.b00ea67f.css b/index.b00ea67f.css new file mode 100644 index 0000000..bd59b53 --- /dev/null +++ b/index.b00ea67f.css @@ -0,0 +1,2 @@ +html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;max-width:100%;white-space:normal;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template,[hidden]{display:none}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:400;src:url(lato-latin-400-normal.e6d78644.woff2)format("woff2"),url(lato-latin-400-normal.d3c2a81b.woff)format("woff")}@font-face{font-family:Raleway;font-style:normal;font-display:swap;font-weight:400;src:url(raleway-latin-400-normal.19704ef8.woff2)format("woff2"),url(raleway-latin-400-normal.652c6839.woff)format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(roboto-mono-latin-400-normal.7b49cb08.woff2)format("woff2"),url(roboto-mono-latin-400-normal.46565364.woff)format("woff")}@font-face{font-family:Material Icons Outlined;font-style:normal;font-display:swap;font-weight:400;src:url(material-icons-outlined-latin-400-normal.af2186d9.woff2)format("woff2"),url(material-icons-outlined-latin-400-normal.25bc5969.woff)format("woff")}:root{--background-color:white;--text-color:black;--anchor-text-color:#0969da;--focus-text-color:black;--hover-text-color:black;--active-text-color:black;--primary-color:#ff8c00;--secondary-color:#ff8200;--card-box-shadow:0 4px 8px 0 rgba(255,255,255,.3),0 4px 20px 0 rgba(255,255,255,.2);--button-box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 4px 20px 0 rgba(0,0,0,.1);--inner-button-box-shadow:inset 0 4px 8px 0 rgba(0,0,0,.2),inset 0 4px 20px 0 rgba(0,0,0,.1);--myface-side-length:150px;--fontsource-display:block;--dark-mode-display:none;--light-mode-display:block}[data-theme=dark]{--background-color:#333;--text-color:white;--anchor-text-color:#58a6ff;--focus-text-color:white;--hover-text-color:black;--active-text-color:black;--card-box-shadow:0 4px 8px 0 rgba(51,51,51,.2),0 4px 20px 0 rgba(51,51,51,.1);--dark-mode-display:block;--light-mode-display:none}.material-icons-outlined{text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";font-family:Material Icons Outlined;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.gentle-flex{flex-direction:column;justify-content:center;align-items:center;gap:1ch;display:flex}html{width:100%;height:100%;font-family:Lato,sans-serif}body{width:100%;height:100%;background-color:var(--background-color);color:var(--text-color);transition:color .25s ease-in-out,background-color .25s ease-in-out}.dark-light-theme-selector-container{background-color:var(--background-color);box-sizing:border-box;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;border-radius:25px;transition:background-color .25s ease-in-out;position:fixed;top:25px;right:25px}.dark-theme-selector,.light-theme-selector{padding:10px}.dark-theme-selector{display:var(--dark-mode-display)}.light-theme-selector{display:var(--light-mode-display)}#card{background-color:var(--background-color);text-align:center;transition:background-color .25s ease-in-out}#likes-container{visibility:hidden;opacity:0;color:var(--anchor-text-color);cursor:pointer;padding:5px 10px;text-decoration:none;transition:opacity 1s ease-in-out}#likes-container:hover #likes-count{text-decoration:underline}#myface-and-text{gap:3ch}#myface-container,#myface{width:var(--myface-side-length);height:var(--myface-side-length)}#myface-container{-webkit-user-select:none;-ms-user-select:none;user-select:none}#myface{border-radius:var(--myface-side-length);will-change:transform;pointer-events:none;transition:border-radius .25s ease-in-out}#myface.top-right{border-top-right-radius:10px}#myface.bottom-right{border-bottom-right-radius:10px}#myface.bottom-left{border-bottom-left-radius:10px}#myface.top-left{border-top-left-radius:10px}h1,p{margin:0}h1{color:var(--primary-color);font-family:Raleway,sans-serif}a{color:var(--anchor-text-color);text-decoration:none;transition:color .25s ease-in-out}a:hover{text-decoration:underline}code{font-family:Roboto Mono,monospace;font-size:.9em}ul{padding:0;list-style-type:none}ul.gentle-flex{gap:3ch}li{width:200px;height:40px;background-color:var(--background-color);border-radius:40px;transition:background-color .25s ease-in-out}li a{width:100%;height:100%;box-sizing:border-box;color:var(--text-color);box-shadow:var(--button-box-shadow);border-radius:25px;transition:box-shadow .25s ease-in-out}li a:focus{color:var(--focus-text-color);border:3px solid var(--primary-color);outline:none}li a:hover{color:var(--hover-text-color);background-color:var(--primary-color);cursor:pointer;text-decoration:none}li a:active{color:var(--active-text-color);background-color:var(--secondary-color);box-shadow:var(--inner-button-box-shadow);border:none}#background{display:none}@media (orientation:portrait){.gentle-flex.landscape-row-portrait-column{gap:1ch}}@media (orientation:landscape){.gentle-flex.landscape-row-portrait-column{flex-direction:row;gap:6ch}ul.gentle-flex{height:100%;justify-content:space-evenly;gap:1ch}}@media only screen and (min-width:1000px){#background{display:initial;opacity:0;filter:blur();z-index:-1;background-position:50%;background-repeat:no-repeat;background-size:cover;transition:filter 1s ease-in-out,opacity 2s ease-in-out,background-image 2s ease-in-out;position:absolute;top:0;bottom:0;left:0;right:0}#card:hover+#background{filter:blur(2px)}#card{box-shadow:var(--card-box-shadow);border-radius:50px 50px 15px;padding:50px;transition:background-color .25s ease-in-out,box-shadow .25s ease-in-out}@media (orientation:portrait){#card{padding-left:75px;padding-right:75px}}} +/*# sourceMappingURL=index.b00ea67f.css.map */ diff --git a/index.b00ea67f.css.br b/index.b00ea67f.css.br new file mode 100644 index 0000000..e38b742 Binary files /dev/null and b/index.b00ea67f.css.br differ diff --git a/index.b00ea67f.css.gz b/index.b00ea67f.css.gz new file mode 100644 index 0000000..9eee82a Binary files /dev/null and b/index.b00ea67f.css.gz differ diff --git a/index.b00ea67f.css.map b/index.b00ea67f.css.map new file mode 100644 index 0000000..4cb18ce --- /dev/null +++ b/index.b00ea67f.css.map @@ -0,0 +1 @@ +{"mappings":"ACUA,oDAYA,cAQA,mBASA,gCAaA,oDAWA,wCAYA,+BASA,yGAUA,4BAUA,kDAWA,oBASA,8EAQA,kBAIA,cAWA,sBAYA,mGAgBA,8BAUA,kCASA,0EAWA,oJAYA,0IAWA,oCAWA,qGAaA,iCAQA,uBASA,6DAUA,8FAUA,+DASA,iEASA,oEAYA,sBAQA,0BAWA,+BCjVA,sOCAA,+OCAA,2PCAA,+RCKA,mjBAqBA,wSAYA,iXAyBA,kGAQA,wDAMA,iKAQA,qRAWA,wDAIA,sDAGA,wDAIA,8GAMA,mKASA,8DAWA,yBAIA,2FAKA,iFAGA,oIAMA,+CAGA,qDAGA,mDAGA,6CAIA,cAIA,6DAIA,wFAKA,kCAGA,sDAIA,kCAIA,uBAGA,oIAOA,wKASA,4FAKA,mHAMA,yIAOA,yBAIA,8BACE,oDAIF,+BACE,sEAIA,iEAOF,0CACE,iRAiBA,yCAIA,2JAUA,8BACE","sources":["index.b00ea67f.css",".yarn/cache/normalize.css-npm-8.0.1-6124fb39b6-4698cae88e.zip/node_modules/normalize.css/normalize.css",".yarn/cache/@fontsource-lato-npm-5.0.3-c4df87051c-f379566828.zip/node_modules/@fontsource/lato/latin-400.css",".yarn/cache/@fontsource-raleway-npm-5.0.3-6589f445ec-c1bf205d5b.zip/node_modules/@fontsource/raleway/latin-400.css",".yarn/cache/@fontsource-roboto-mono-npm-5.0.3-73c675fe56-e18b7ccadc.zip/node_modules/@fontsource/roboto-mono/latin-400.css",".yarn/cache/@fontsource-material-icons-outlined-npm-5.0.3-1faaa5b10f-9e5a523b30.zip/node_modules/@fontsource/material-icons-outlined/index.css","src/index.css"],"sourcesContent":["html {\n -webkit-text-size-adjust: 100%;\n line-height: 1.15;\n}\n\nbody {\n margin: 0;\n}\n\nmain {\n display: block;\n}\n\nh1 {\n margin: .67em 0;\n font-size: 2em;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace;\n font-size: 1em;\n}\n\na {\n background-color: rgba(0, 0, 0, 0);\n}\n\nabbr[title] {\n border-bottom: none;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\nb, strong {\n font-weight: bolder;\n}\n\ncode, kbd, samp {\n font-family: monospace;\n font-size: 1em;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\nimg {\n border-style: none;\n}\n\nbutton, input, optgroup, select, textarea {\n margin: 0;\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n}\n\nbutton, input {\n overflow: visible;\n}\n\nbutton, select {\n text-transform: none;\n}\n\nbutton, [type=\"button\"], [type=\"reset\"], [type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner, [type=\"button\"]::-moz-focus-inner, [type=\"reset\"]::-moz-focus-inner, [type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring, [type=\"button\"]:-moz-focusring, [type=\"reset\"]:-moz-focusring, [type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n padding: .35em .75em .625em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n max-width: 100%;\n white-space: normal;\n padding: 0;\n display: table;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"], [type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button, [type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate, [hidden] {\n display: none;\n}\n\n@font-face {\n font-family: Lato;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"lato-latin-400-normal.e6d78644.woff2\") format(\"woff2\"), url(\"lato-latin-400-normal.d3c2a81b.woff\") format(\"woff\");\n}\n\n@font-face {\n font-family: Raleway;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"raleway-latin-400-normal.19704ef8.woff2\") format(\"woff2\"), url(\"raleway-latin-400-normal.652c6839.woff\") format(\"woff\");\n}\n\n@font-face {\n font-family: Roboto Mono;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"roboto-mono-latin-400-normal.7b49cb08.woff2\") format(\"woff2\"), url(\"roboto-mono-latin-400-normal.46565364.woff\") format(\"woff\");\n}\n\n@font-face {\n font-family: Material Icons Outlined;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"material-icons-outlined-latin-400-normal.af2186d9.woff2\") format(\"woff2\"), url(\"material-icons-outlined-latin-400-normal.25bc5969.woff\") format(\"woff\");\n}\n\n:root {\n --background-color: white;\n --text-color: black;\n --anchor-text-color: #0969da;\n --focus-text-color: black;\n --hover-text-color: black;\n --active-text-color: black;\n --primary-color: #ff8c00;\n --secondary-color: #ff8200;\n --card-box-shadow: 0 4px 8px 0 rgba(255, 255, 255, .3), 0 4px 20px 0 rgba(255, 255, 255, .2);\n --button-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .2), 0 4px 20px 0 rgba(0, 0, 0, .1);\n --inner-button-box-shadow: inset 0 4px 8px 0 rgba(0, 0, 0, .2), inset 0 4px 20px 0 rgba(0, 0, 0, .1);\n --myface-side-length: 150px;\n --fontsource-display: block;\n --dark-mode-display: none;\n --light-mode-display: block;\n}\n\n[data-theme=\"dark\"] {\n --background-color: #333;\n --text-color: white;\n --anchor-text-color: #58a6ff;\n --focus-text-color: white;\n --hover-text-color: black;\n --active-text-color: black;\n --card-box-shadow: 0 4px 8px 0 rgba(51, 51, 51, .2), 0 4px 20px 0 rgba(51, 51, 51, .1);\n --dark-mode-display: block;\n --light-mode-display: none;\n}\n\n.material-icons-outlined {\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizelegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: \"liga\";\n font-family: Material Icons Outlined;\n font-size: 24px;\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n display: inline-block;\n}\n\n.gentle-flex {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 1ch;\n display: flex;\n}\n\nhtml {\n width: 100%;\n height: 100%;\n font-family: Lato, sans-serif;\n}\n\nbody {\n width: 100%;\n height: 100%;\n background-color: var(--background-color);\n color: var(--text-color);\n transition: color .25s ease-in-out, background-color .25s ease-in-out;\n}\n\n.dark-light-theme-selector-container {\n background-color: var(--background-color);\n box-sizing: border-box;\n cursor: pointer;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border-radius: 25px;\n transition: background-color .25s ease-in-out;\n position: fixed;\n top: 25px;\n right: 25px;\n}\n\n.dark-theme-selector, .light-theme-selector {\n padding: 10px;\n}\n\n.dark-theme-selector {\n display: var(--dark-mode-display);\n}\n\n.light-theme-selector {\n display: var(--light-mode-display);\n}\n\n#card {\n background-color: var(--background-color);\n text-align: center;\n transition: background-color .25s ease-in-out;\n}\n\n#likes-container {\n visibility: hidden;\n opacity: 0;\n color: var(--anchor-text-color);\n cursor: pointer;\n padding: 5px 10px;\n text-decoration: none;\n transition: opacity 1s ease-in-out;\n}\n\n#likes-container:hover #likes-count {\n text-decoration: underline;\n}\n\n#myface-and-text {\n gap: 3ch;\n}\n\n#myface-container, #myface {\n width: var(--myface-side-length);\n height: var(--myface-side-length);\n}\n\n#myface-container {\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n#myface {\n border-radius: var(--myface-side-length);\n will-change: transform;\n pointer-events: none;\n transition: border-radius .25s ease-in-out;\n}\n\n#myface.top-right {\n border-top-right-radius: 10px;\n}\n\n#myface.bottom-right {\n border-bottom-right-radius: 10px;\n}\n\n#myface.bottom-left {\n border-bottom-left-radius: 10px;\n}\n\n#myface.top-left {\n border-top-left-radius: 10px;\n}\n\nh1, p {\n margin: 0;\n}\n\nh1 {\n color: var(--primary-color);\n font-family: Raleway, sans-serif;\n}\n\na {\n color: var(--anchor-text-color);\n text-decoration: none;\n transition: color .25s ease-in-out;\n}\n\na:hover {\n text-decoration: underline;\n}\n\ncode {\n font-family: Roboto Mono, monospace;\n font-size: .9em;\n}\n\nul {\n padding: 0;\n list-style-type: none;\n}\n\nul.gentle-flex {\n gap: 3ch;\n}\n\nli {\n width: 200px;\n height: 40px;\n background-color: var(--background-color);\n border-radius: 40px;\n transition: background-color .25s ease-in-out;\n}\n\nli a {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n color: var(--text-color);\n box-shadow: var(--button-box-shadow);\n border-radius: 25px;\n transition: box-shadow .25s ease-in-out;\n}\n\nli a:focus {\n color: var(--focus-text-color);\n border: 3px solid var(--primary-color);\n outline: none;\n}\n\nli a:hover {\n color: var(--hover-text-color);\n background-color: var(--primary-color);\n cursor: pointer;\n text-decoration: none;\n}\n\nli a:active {\n color: var(--active-text-color);\n background-color: var(--secondary-color);\n box-shadow: var(--inner-button-box-shadow);\n border: none;\n}\n\n#background {\n display: none;\n}\n\n@media (orientation: portrait) {\n .gentle-flex.landscape-row-portrait-column {\n gap: 1ch;\n }\n}\n\n@media (orientation: landscape) {\n .gentle-flex.landscape-row-portrait-column {\n flex-direction: row;\n gap: 6ch;\n }\n\n ul.gentle-flex {\n height: 100%;\n justify-content: space-evenly;\n gap: 1ch;\n }\n}\n\n@media only screen and (min-width: 1000px) {\n #background {\n display: initial;\n opacity: 0;\n filter: blur();\n z-index: -1;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n transition: filter 1s ease-in-out, opacity 2s ease-in-out, background-image 2s ease-in-out;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n #card:hover + #background {\n filter: blur(2px);\n }\n\n #card {\n box-shadow: var(--card-box-shadow);\n border-radius: 50px 50px 15px;\n padding: 50px;\n transition: background-color .25s ease-in-out, box-shadow .25s ease-in-out;\n }\n\n @media (orientation: portrait) {\n #card {\n padding-left: 75px;\n padding-right: 75px;\n }\n }\n}\n\n/*# sourceMappingURL=index.b00ea67f.css.map */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","/* lato-latin-400-normal */\n@font-face {\n font-family: 'Lato';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/lato-latin-400-normal.woff2) format('woff2'), url(./files/lato-latin-400-normal.woff) format('woff');\n}","/* raleway-latin-400-normal */\n@font-face {\n font-family: 'Raleway';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/raleway-latin-400-normal.woff2) format('woff2'), url(./files/raleway-latin-400-normal.woff) format('woff');\n}","/* roboto-mono-latin-400-normal */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/roboto-mono-latin-400-normal.woff2) format('woff2'), url(./files/roboto-mono-latin-400-normal.woff) format('woff');\n}","/* material-icons-outlined-latin-400-normal */\n@font-face {\n font-family: 'Material Icons Outlined';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/material-icons-outlined-latin-400-normal.woff2) format('woff2'), url(./files/material-icons-outlined-latin-400-normal.woff) format('woff');\n}","@import \"npm:normalize.css/normalize.css\";\n@import \"npm:@fontsource/lato/latin-400.css\";\n@import \"npm:@fontsource/raleway/latin-400.css\";\n@import \"npm:@fontsource/roboto-mono/latin-400.css\";\n@import \"npm:@fontsource/material-icons-outlined\";\n\n:root {\n --background-color: white;\n --text-color: black;\n --anchor-text-color: #0969da;\n --focus-text-color: black;\n --hover-text-color: black;\n --active-text-color: black;\n --primary-color: rgb(255, 140, 0);\n --secondary-color: rgb(255, 130, 0);\n --card-box-shadow: 0 4px 8px 0 rgba(255, 255, 255, 0.3),\n 0 4px 20px 0 rgba(255, 255, 255, 0.2);\n --button-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2),\n 0 4px 20px 0 rgba(0, 0, 0, 0.1);\n --inner-button-box-shadow: inset 0 4px 8px 0 rgba(0, 0, 0, 0.2),\n inset 0 4px 20px 0 rgba(0, 0, 0, 0.1);\n --myface-side-length: 150px;\n --fontsource-display: block;\n --dark-mode-display: none;\n --light-mode-display: block;\n}\n\n[data-theme=\"dark\"] {\n --background-color: #333;\n --text-color: white;\n --anchor-text-color: #58a6ff;\n --focus-text-color: white;\n --hover-text-color: black;\n --active-text-color: black;\n --card-box-shadow: 0 4px 8px 0 #33333333, 0 4px 20px 0 #3333331a;\n --dark-mode-display: block;\n --light-mode-display: none;\n}\n\n.material-icons-outlined {\n font-family: \"Material Icons Outlined\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px; /* Preferred icon size */\n display: inline-block;\n line-height: 1;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n\n /* Support for IE. */\n font-feature-settings: \"liga\";\n}\n\n.gentle-flex {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 1ch;\n}\n\nhtml {\n font-family: \"Lato\", sans-serif;\n width: 100%;\n height: 100%;\n}\n\nbody {\n width: 100%;\n height: 100%;\n background-color: var(--background-color);\n color: var(--text-color);\n transition: color 0.25s ease-in-out, background-color 0.25s ease-in-out;\n}\n\n.dark-light-theme-selector-container {\n position: fixed;\n top: 25px;\n right: 25px;\n background-color: var(--background-color);\n box-sizing: border-box;\n border-radius: 25px;\n cursor: pointer;\n user-select: none;\n transition: background-color 0.25s ease-in-out;\n}\n.dark-theme-selector,\n.light-theme-selector {\n padding: 10px;\n}\n.dark-theme-selector {\n display: var(--dark-mode-display);\n}\n.light-theme-selector {\n display: var(--light-mode-display);\n}\n\n#card {\n background-color: var(--background-color);\n text-align: center;\n transition: background-color 0.25s ease-in-out;\n}\n\n#likes-container {\n visibility: hidden;\n opacity: 0;\n color: var(--anchor-text-color);\n text-decoration: none;\n padding: 5px 10px;\n cursor: pointer;\n transition: opacity 1s ease-in-out;\n}\n#likes-container:hover #likes-count {\n text-decoration: underline;\n}\n/* .likes-container:hover {\n color: var(--primary-color);\n text-decoration: none;\n} */\n/* .likes-container:active {\n color: var(--secondary-color);\n} */\n\n#myface-and-text {\n gap: 3ch;\n}\n\n#myface-container,\n#myface {\n width: var(--myface-side-length);\n height: var(--myface-side-length);\n}\n#myface-container {\n user-select: none;\n}\n#myface {\n border-radius: var(--myface-side-length);\n will-change: transform;\n transition: border-radius 0.25s ease-in-out;\n pointer-events: none;\n}\n#myface.top-right {\n border-top-right-radius: 10px;\n}\n#myface.bottom-right {\n border-bottom-right-radius: 10px;\n}\n#myface.bottom-left {\n border-bottom-left-radius: 10px;\n}\n#myface.top-left {\n border-top-left-radius: 10px;\n}\n\nh1,\np {\n margin: 0;\n}\nh1 {\n font-family: \"Raleway\", sans-serif;\n color: var(--primary-color);\n}\na {\n color: var(--anchor-text-color);\n text-decoration: none;\n transition: color 0.25s ease-in-out;\n}\na:hover {\n text-decoration: underline;\n}\ncode {\n font-family: \"Roboto Mono\", monospace;\n font-size: 0.9em;\n}\nul {\n list-style-type: none;\n padding: 0;\n}\nul.gentle-flex {\n gap: 3ch;\n}\nli {\n width: 200px;\n height: 40px;\n border-radius: 40px;\n background-color: var(--background-color);\n transition: background-color 0.25s ease-in-out;\n}\nli a {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n border-radius: 25px;\n color: var(--text-color);\n box-shadow: var(--button-box-shadow);\n transition: box-shadow 0.25s ease-in-out;\n}\nli a:focus {\n color: var(--focus-text-color);\n outline: none;\n border: 3px solid var(--primary-color);\n}\nli a:hover {\n color: var(--hover-text-color);\n background-color: var(--primary-color);\n cursor: pointer;\n text-decoration: none;\n}\nli a:active {\n color: var(--active-text-color);\n background-color: var(--secondary-color);\n border: none;\n box-shadow: var(--inner-button-box-shadow);\n}\n\n#background {\n display: none;\n}\n\n@media (orientation: portrait) {\n .gentle-flex.landscape-row-portrait-column {\n gap: 1ch;\n }\n}\n@media (orientation: landscape) {\n .gentle-flex.landscape-row-portrait-column {\n flex-direction: row;\n gap: 6ch;\n }\n ul.gentle-flex {\n height: 100%;\n justify-content: space-evenly;\n gap: 1ch;\n }\n}\n\n@media only screen and (min-width: 1000px) {\n #background {\n display: initial;\n opacity: 0;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n filter: blur(0px);\n z-index: -1;\n transition: filter 1s ease-in-out, opacity 2s ease-in-out,\n background-image 2s ease-in-out;\n }\n\n #card:hover + #background {\n filter: blur(2px);\n }\n\n #card {\n padding: 50px;\n border-top-left-radius: 50px;\n border-top-right-radius: 50px;\n border-bottom-right-radius: 15px;\n border-bottom-left-radius: 50px;\n box-shadow: var(--card-box-shadow);\n transition: background-color 0.25s ease-in-out, box-shadow 0.25s ease-in-out;\n }\n\n @media (orientation: portrait) {\n #card {\n padding-left: 75px;\n padding-right: 75px;\n }\n }\n}\n"],"names":[],"version":3,"file":"index.b00ea67f.css.map"} \ No newline at end of file diff --git a/index.b00ea67f.css.map.br b/index.b00ea67f.css.map.br new file mode 100644 index 0000000..2fda27d Binary files /dev/null and b/index.b00ea67f.css.map.br differ diff --git a/index.b00ea67f.css.map.gz b/index.b00ea67f.css.map.gz new file mode 100644 index 0000000..ed0c177 Binary files /dev/null and b/index.b00ea67f.css.map.gz differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..c8e6a1f --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Sean Krail - Software Engineer light_mode dark_mode Sean Krail Engineer at AmazonWriting Backend Software Philadelphia, PA thumb_up 40 Likes Resume Email GitHub LinkedIn \ No newline at end of file diff --git a/index.html.br b/index.html.br new file mode 100644 index 0000000..1e633b1 Binary files /dev/null and b/index.html.br differ diff --git a/index.html.gz b/index.html.gz new file mode 100644 index 0000000..7882280 Binary files /dev/null and b/index.html.gz differ diff --git a/lato-latin-400-normal.d3c2a81b.woff b/lato-latin-400-normal.d3c2a81b.woff new file mode 100644 index 0000000..13e0e25 Binary files /dev/null and b/lato-latin-400-normal.d3c2a81b.woff differ diff --git a/lato-latin-400-normal.e6d78644.woff2 b/lato-latin-400-normal.e6d78644.woff2 new file mode 100644 index 0000000..ff60934 Binary files /dev/null and b/lato-latin-400-normal.e6d78644.woff2 differ diff --git a/log b/log new file mode 100644 index 0000000..7dd32f2 --- /dev/null +++ b/log @@ -0,0 +1,678 @@ +commit 59eba2c98ed26e2d2bff903e4b2d16fbbeaf933d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Oct 19 08:59:20 2023 +0000 + + build(deps): bump @babel/traverse from 7.22.5 to 7.23.2 + + Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.5 to 7.23.2. + - [Release notes](https://github.com/babel/babel/releases) + - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) + - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) + + --- + updated-dependencies: + - dependency-name: "@babel/traverse" + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit a24485c1fc49942f18626bab8ff56adf2eb8cb8d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Sat Oct 7 21:15:37 2023 +0000 + + build(deps-dev): bump postcss from 8.4.24 to 8.4.31 + + Bumps [postcss](https://github.com/postcss/postcss) from 8.4.24 to 8.4.31. + - [Release notes](https://github.com/postcss/postcss/releases) + - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) + - [Commits](https://github.com/postcss/postcss/compare/8.4.24...8.4.31) + + --- + updated-dependencies: + - dependency-name: postcss + dependency-type: direct:development + ... + + Signed-off-by: dependabot[bot] + +commit 720ebc331b639e618fcff46f116d49ce25da40cd +Author: Sean Krail +Date: Wed Aug 30 17:20:49 2023 -0400 + + feat: update resume + +commit efdfa37bff5a05b258facdf6a9793e961276f846 +Author: Sean Krail +Date: Fri Aug 25 16:16:40 2023 -0400 + + fix: make updateTheme function name static + +commit bfe67743da00f89e0e84be9cc57c5d8f38d61d91 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Jul 19 16:24:47 2023 +0000 + + build(deps): bump word-wrap from 1.2.3 to 1.2.4 + + Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. + - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) + - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) + + --- + updated-dependencies: + - dependency-name: word-wrap + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 9395027e0caedd9b79ba975fce35104f4e85761b +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jul 11 02:02:11 2023 +0000 + + build(deps): bump semver from 5.7.1 to 5.7.2 + + Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2. + - [Release notes](https://github.com/npm/node-semver/releases) + - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) + - [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2) + + --- + updated-dependencies: + - dependency-name: semver + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 1cddc346076c2ea5c6761c55abcc97c71fc94674 +Author: Sean Krail +Date: Tue Jun 20 01:13:49 2023 -0400 + + feat: update resume (#62) + +commit a7224afa0e695ccdcb2d61ef077e3e342ad26642 +Author: Sean Krail +Date: Tue May 30 01:59:02 2023 -0400 + + feat: add like button (#61) + +commit 66b76b5bb8856ec983683d4b4e8c93335cc806c0 +Author: Sean Krail +Date: Mon May 29 11:46:08 2023 -0400 + + feat: smooth out dark/light theme transition and preload icon font (#60) + +commit 6b2bd973347e11dcca10c7cac599f8e68586486a +Author: Sean Krail +Date: Mon May 29 02:47:10 2023 -0400 + + chore: minor changes while bootstrapping website-backend (#59) + +commit 1f9cb20c8cc79d5db4dbc7eb801f8373787d2879 +Author: Sean Krail +Date: Wed May 24 23:51:28 2023 -0400 + + feat: add button to switch between dark and light theme (#58) + +commit bcb1c37dc7c76b65323d2ec8ac0d8b6eadc9a439 +Author: Sean Krail +Date: Tue May 23 19:19:44 2023 -0400 + + feat: use fontsource v5 and make myface non-selectable/draggable (#57) + +commit 8db0a4851cc7845fdb2c2b7168b045d96f6dc5a0 +Author: Sean Krail +Date: Sat May 20 16:46:02 2023 -0400 + + feat: updated color theme, about text, and lighthouse suggestions (#56) + +commit 9d8e1b6debd2941a62933ee565c1a77cc071e7f8 +Author: Sean Krail +Date: Sat May 20 14:35:52 2023 -0400 + + feat: precompress with both gzip and brotli (#55) + +commit 177935f9ffce52295cd90542d35ffb4e7ce33f1f +Author: Sean Krail +Date: Sat May 20 14:27:59 2023 -0400 + + feat: control light/dark color theme from JavaScript (#54) + +commit 38a963e7348ef29d5e018f5ca2172c2b7db51711 +Author: Sean Krail +Date: Thu May 18 21:07:08 2023 -0400 + + fix: animate border on mobile (#53) + +commit aeb8ca7964c1bc529699df8ce9ee9e68c61ced26 +Author: Sean Krail +Date: Thu May 18 00:06:53 2023 -0400 + + feat: prefer FOIT over FOUT + +commit 58ad6db437f1c949b10ea7c1ce9201d3e66f0af3 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu May 18 00:42:41 2023 +0000 + + build(deps): bump terser from 5.14.1 to 5.17.4 + + Bumps [terser](https://github.com/terser/terser) from 5.14.1 to 5.17.4. + - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) + - [Commits](https://github.com/terser/terser/compare/v5.14.1...v5.17.4) + + --- + updated-dependencies: + - dependency-name: terser + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit ad65db45e75a12b5601a7e94cd8eec6d980e6aee +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu May 18 00:42:38 2023 +0000 + + build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 + + Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1. + - [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1) + + --- + updated-dependencies: + - dependency-name: http-cache-semantics + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 1819895f6bb57f945e23301620021d30e43f430d +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu May 18 00:42:38 2023 +0000 + + build(deps): bump json5 from 1.0.1 to 1.0.2 + + Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. + - [Release notes](https://github.com/json5/json5/releases) + - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) + - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) + + --- + updated-dependencies: + - dependency-name: json5 + dependency-type: indirect + ... + + Signed-off-by: dependabot[bot] + +commit 6775f54b8bf0048275397d785e0a0a6264e169ee +Author: Sean Krail +Date: Wed May 17 21:04:29 2023 -0400 + + feat: preload fonts + +commit 2839f906ca03d6fb926d7dd0edf3f69cffa992c1 +Author: Sean Krail +Date: Wed May 17 20:38:23 2023 -0400 + + feat: update dark/light color theme + +commit b42136131e5b8c65dd16152c19ee2d4dd0d0d5c5 +Author: Sean Krail +Date: Wed May 17 20:37:41 2023 -0400 + + chore: cleanup slideshow background logic + +commit 20b409a3bba927e879341b44d1f1a5c36672ef57 +Author: Sean Krail +Date: Wed May 17 20:37:13 2023 -0400 + + fix: increase resolution of myface + +commit a7950c80246a61857f858f921797856a2eb6c472 +Author: Sean Krail +Date: Wed May 17 20:34:53 2023 -0400 + + feat: add custom font + +commit ae49dc23e2cceb308361974e9000f67c3e6c073f +Author: Sean Krail +Date: Wed May 17 20:32:34 2023 -0400 + + feat: update resume + +commit 04cb991c194ccf6d5436e9e1b9f465a9ec5a7cad +Author: Sean Krail +Date: Sat May 13 23:41:13 2023 -0400 + + feat: restart setInterval on mouseout of animateBorder (#46) + +commit fe1850bcf43eedf91ebafd2a72e861dc091a8ffb +Author: Sean Krail +Date: Sat May 13 22:54:29 2023 -0400 + + feat: redirect /resume to resume pdf (#45) + +commit 2512ce39338f0ce7e65eeedc9d89d9ffd044b7d4 +Author: Sean Krail +Date: Sat May 13 17:30:14 2023 -0400 + + feat: rewrite following responsive web design best practices (#44) + +commit 98a3f8de9d9a7be432e719f103151eccd0b3b1cb +Author: Sean Krail +Date: Sat May 13 13:39:50 2023 -0400 + + chore: upgrade ghaction-github-pages action (#43) + +commit bbba14cb79dff8630601709d24fb302ee111f24b +Author: Sean Krail +Date: Sun Apr 30 15:50:26 2023 -0400 + + feat: track clicks (#41) + +commit 54132eecca826c23aa379d64572ee6d9ffb85868 +Author: Sean Krail +Date: Fri Apr 21 18:36:05 2023 -0400 + + fix: deploy to GitHub Pages on push to main (#40) + +commit cf85bc93df9d92a3dad738b88c7527ab0d85b463 +Author: Sean Krail +Date: Fri Apr 21 18:19:12 2023 -0400 + + feat: add analytics tracking (#39) + +commit 5871daa3f515c80d687028a24a28b9e2d5ecbc7f +Author: Sean Krail +Date: Sat Apr 15 15:23:20 2023 -0400 + + chore: upgrade npm packages (#37) + +commit e6c03907a5ed37f37433ed1fa3a95eceeab70a9f +Author: Sean Krail +Date: Sat Apr 15 15:04:07 2023 -0400 + + chore: adjust color palette (#36) + +commit e2e4e2ff21137330af6d2ebed86fe70b4f8906d4 +Author: Sean Krail +Date: Sat Apr 15 14:49:52 2023 -0400 + + fix: remove outline on focused buttons (#35) + +commit 74f8f4244be356b298dd1ac8344151ffcf9231d9 +Author: Sean Krail +Date: Mon Jan 16 23:25:55 2023 -0500 + + chore: upload latest resume (#34) + +commit 9b846bb35a52ac4b36deacf141525b51496a19c8 +Author: Sean Krail +Date: Mon Jan 16 23:18:04 2023 -0500 + + feat: order cities and strikethrough past ones (#33) + +commit 1f15bfa6a3157b34c04b326888f02725e091e4c7 +Author: Sean Krail +Date: Mon Jan 16 22:55:54 2023 -0500 + + fix: use node v14 until ESM loader issue is fixed (#31) + +commit db454d5af956369054294edd3441a0f351a7d120 +Author: Sean Krail +Date: Mon Jan 16 21:46:02 2023 -0500 + + feat: upload new profile pic and temporary resume (#30) + +commit a1c69acb8ad20caaf622c2512cf4ce1244200830 +Author: Sean Krail +Date: Sat Jun 11 12:43:30 2022 -0700 + + ci: build on every PR (#29) + +commit 2af3dc24d0883a1cd43b3cbf628148a738eef291 +Author: Sean Krail +Date: Sat Jun 11 12:17:39 2022 -0700 + + revert: sharp upgrade broke parcel, also upgrade packages (#28) + +commit 15876a1fd1721384a77a0c8ae68a77731cc76788 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jun 7 17:44:24 2022 -0700 + + build(deps-dev): bump sharp from 0.29.3 to 0.30.5 (#27) + +commit bf3180937013effa0a3e7090abd8ce228d9c1185 +Author: Sean Krail +Date: Sun May 29 15:45:27 2022 -0700 + + fix: update GitHub Pages' FQDN (#26) + +commit 5b10dc8f8dcf789592447053c7bb887086a18179 +Author: Sean Krail +Date: Sun May 29 15:41:11 2022 -0700 + + fix: remove scrollbars (#25) + +commit e441646f700377dc8cfcfa260b8dc4e64ff8fbaa +Author: Sean Krail +Date: Sun May 29 15:37:56 2022 -0700 + + fix: setup husky pre-commit hook (#24) + +commit c8f65d4e5245f19f444106ddfe9bbd27eb2ea49f +Author: Sean Krail +Date: Sun May 29 15:07:59 2022 -0700 + + fix: GitHub Pages build was failing for legitimate reasons (#23) + +commit 1f38972e414c900252166de6a43039d92a04658b +Author: Sean Krail +Date: Sun May 29 14:46:28 2022 -0700 + + feat: improve slideshow background, css, and other minor tweaks (#22) + +commit e38cf4ecab8f00795318f4f65fbdf649baaa825d +Author: Sean Krail +Date: Sun Jul 18 20:13:01 2021 -0700 + + ci: workaround for failed build + +commit 3c46d6e3923ebaad06f3964444322c5267d2b055 +Author: Sean Krail +Date: Sun Jul 18 18:40:03 2021 -0700 + + fix: need to version more yarn files + +commit 3a5c85b417a65b365e0f830323f9fb812a1bbd90 +Author: Sean Krail +Date: Sun Jul 18 18:31:31 2021 -0700 + + feat: replace webpack with parcel + +commit 6ed7ba62bce2c2dc5e2154456c9f25864b99141a +Author: Sean Krail +Date: Sun Jul 18 15:33:23 2021 -0700 + + ci: build and deploy mainline branch + +commit fedeabf1e19bad70c49bc1303d887d27f6813ac6 +Author: Sean Krail +Date: Sun Jul 18 15:15:47 2021 -0700 + + chore: upgrade to yarn v2 + +commit c6322c63d23ac94878518dc0d77f0861ed4efcec +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Thu Mar 18 22:45:47 2021 -0700 + + Bump elliptic from 6.5.3 to 6.5.4 (#15) + + Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. + - [Release notes](https://github.com/indutny/elliptic/releases) + - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4) + + Signed-off-by: dependabot[bot] + + Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +commit 295842f22eb12cb020daac1ac42a2ee20cb0b7e4 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Fri Dec 11 19:48:44 2020 -0800 + + Bump ini from 1.3.5 to 1.3.8 (#14) + + Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8. + - [Release notes](https://github.com/isaacs/ini/releases) + - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8) + + Signed-off-by: dependabot[bot] + + Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +commit 2126dc8b8810c8fa3f58bac98cd3d63f3b1b4786 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Sun Sep 20 18:19:31 2020 -0700 + + Bump http-proxy from 1.18.0 to 1.18.1 (#13) + + Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1. + - [Release notes](https://github.com/http-party/node-http-proxy/releases) + - [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md) + - [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1) + + Signed-off-by: dependabot[bot] + + Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +commit 03993e5546aad4b79a20bb7e69f96bfb60739a96 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Wed Aug 12 21:38:15 2020 -0700 + + Bump elliptic from 6.5.2 to 6.5.3 (#12) + + Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3. + - [Release notes](https://github.com/indutny/elliptic/releases) + - [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3) + + Signed-off-by: dependabot[bot] + + Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +commit c6fc0cd926bda89daed9a53f254b3a5d9d75e144 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Tue Jul 28 18:53:36 2020 -0400 + + Bump lodash from 4.17.15 to 4.17.19 (#11) + + Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. + - [Release notes](https://github.com/lodash/lodash/releases) + - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) + + Signed-off-by: dependabot[bot] + + Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +commit 14a246bff57aa3214af2cbf651a61201702de6f5 +Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Date: Mon Jun 8 15:37:47 2020 -0700 + + Bump websocket-extensions from 0.1.3 to 0.1.4 (#10) + + Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4. + - [Release notes](https://github.com/faye/websocket-extensions-node/releases) + - [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md) + - [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4) + + Signed-off-by: dependabot[bot] + + Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +commit 036ce5998ba5de8b0c97155b6b28ef45dcc23638 +Author: Sean Krail +Date: Thu Mar 19 12:04:14 2020 -0700 + + chore: update yarn.lock + +commit 906412ae728edc664e8074e7912cf875cc89a7a8 +Author: Sean Krail +Date: Thu Mar 19 11:42:32 2020 -0700 + + upgrade: fix ESLint's security vulnerabilities + +commit 754f6b946dfe7c30085b46f105284aff2c49c9e8 +Author: Sean Krail +Date: Tue Dec 17 00:07:27 2019 -0800 + + simplify favicons + +commit ed93053cd4a61c77bb565b5dcfa73c741ceebfc6 +Author: Sean Krail +Date: Sun Dec 15 22:44:11 2019 -0800 + + convert webpack config to typescript + +commit b1f49108f3fbe3028d3ad64069cf2e54e02796dc +Author: Sean Krail +Date: Sun Dec 15 13:30:16 2019 -0800 + + move source map to its own file + +commit ff81dcd2b4b57f13b61101ce8474248d47e32a64 +Author: Sean Krail +Date: Sun Dec 15 00:11:35 2019 -0800 + + fix action + +commit 28ee26d2550477e96cf410d5e0f734eec04b1791 +Author: Sean Krail +Date: Sun Dec 15 00:01:52 2019 -0800 + + add typescript and webpack + +commit 787dec3a7c112fc4f80e9384b3b84b3aa704e0bc +Author: Sean Krail +Date: Tue Dec 3 22:51:56 2019 -0800 + + rename resume file + +commit 1e1d605f683c74b9561388685f02860a193bb498 +Author: Sean Krail +Date: Tue Dec 3 00:49:02 2019 -0800 + + fix error message and update border radius animation + +commit 865b0c8b2309893147a30212fa3ddd5b96af54ac +Author: Sean Krail +Date: Mon Dec 2 23:44:01 2019 -0800 + + minor fixes + +commit 15ce5244a90768952e5da395676391b246623b0a +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Mon Dec 2 23:26:48 2019 -0800 + + make 404.html a symlink to index.html + +commit aff53178d0a2666415553c7d5236057dad3744c0 +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Mon Dec 2 22:52:15 2019 -0800 + + test 404.html + +commit cfbf5d5714267b752a6f0af3c48195697194ca43 +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Mon Dec 2 15:24:24 2019 -0800 + + update resume + +commit 86985836cf7b6e45123c2e01c3901ed1fdc880f8 +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Sun Dec 1 21:42:04 2019 -0800 + + Create README.md + +commit e1661ade70d57bc550f01bf18bd3c8df87c76d18 +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Tue Nov 26 19:54:38 2019 -0800 + + Update deploy-gh-pages.yml + +commit 614353b30bd16427a41ec7be88810a05ebdbbb16 +Author: Sean Krail +Date: Mon Nov 25 22:42:36 2019 -0800 + + ghaction-github-pages is broken + +commit 50047d8c7846e5c6429a18f0d48d38982c89e909 +Author: Sean Krail +Date: Mon Nov 25 22:34:56 2019 -0800 + + update actions + +commit 9052c834854408537406da14239293bde505e925 +Author: Sean Krail +Date: Mon Nov 25 22:33:21 2019 -0800 + + fix issue with CNAME getting removed with each deploy + +commit dcce59f7286d1a91280cbd7480cf42fc687543cd +Merge: dd13042 e9f8357 +Author: Sean Krail +Date: Mon Nov 25 22:28:50 2019 -0800 + + Merge branch 'master' of https://github.com/sean-krail/website + +commit dd130428733820ff82b7a212b785994b7ecbbc3b +Author: Sean Krail +Date: Mon Nov 25 22:28:44 2019 -0800 + + add favicons (fixes #8) + +commit e9f83570c489e3252da78929f508d0cdb354431b +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Mon Nov 25 22:11:40 2019 -0800 + + fix github actions bug + +commit 2631e8d87e592591062fd32db842f6a234ff2ed8 +Author: Sean Krail +Date: Mon Nov 25 21:56:39 2019 -0800 + + added interactive border radius animation + +commit 09dab205ad27498bf746ed5d21db239b9b88d126 +Merge: 1fa4306 4208a14 +Author: Sean Krail +Date: Sun Nov 17 15:27:05 2019 -0800 + + Merge branch 'master' of https://github.com/sean-krail/website + +commit 1fa4306b207e11c3f281259f778e7675b9ff44fb +Author: Sean Krail +Date: Sun Nov 17 15:26:30 2019 -0800 + + fix pdf link + +commit 4208a14d1e2ed2f13632760769c160b533bad685 +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Sun Nov 17 15:22:24 2019 -0800 + + [actions] rename job and step + +commit 041adabd77c02dbe4d5febe3fc76efc3ccebacf0 +Author: Sean Krail +Date: Sun Nov 17 15:17:47 2019 -0800 + + [actions] update github pages on push to master + +commit e430b2bcfe4ca505bbff688839e1adf769633bb8 +Author: Sean Krail +Date: Sun Nov 17 15:11:08 2019 -0800 + + move public/static to public/assets + +commit b2ba09d7a44b13c2f8d679fefc6516e4f6cf26c6 +Author: Sean Krail +Date: Sun Nov 17 15:09:47 2019 -0800 + + public/static to public/assets + +commit 70174e90a1b76ba2c6c89cb15bb75b6d119e3848 +Author: Sean Krail +Date: Sun Nov 17 15:08:00 2019 -0800 + + move src to public + +commit 1a72cf9c0cba17fd5b4e3c30fdf4b7bfb51151c6 +Author: Sean Krail <21267343+sean-krail@users.noreply.github.com> +Date: Sun Nov 17 14:58:28 2019 -0800 + + first commit (#7) + +commit f8b0ef4d0154b05038da087d32a148447f6db31e +Author: Sean Krail +Date: Mon Apr 30 17:04:02 2018 -0700 + + documentation diff --git a/material-icons-outlined-latin-400-normal.25bc5969.woff b/material-icons-outlined-latin-400-normal.25bc5969.woff new file mode 100644 index 0000000..edeb9df Binary files /dev/null and b/material-icons-outlined-latin-400-normal.25bc5969.woff differ diff --git a/material-icons-outlined-latin-400-normal.af2186d9.woff2 b/material-icons-outlined-latin-400-normal.af2186d9.woff2 new file mode 100644 index 0000000..d44b948 Binary files /dev/null and b/material-icons-outlined-latin-400-normal.af2186d9.woff2 differ diff --git a/myface.01d7ee26.avif b/myface.01d7ee26.avif new file mode 100644 index 0000000..eee7735 Binary files /dev/null and b/myface.01d7ee26.avif differ diff --git a/myface.b5cb8ccd.jpeg b/myface.b5cb8ccd.jpeg new file mode 100644 index 0000000..470e129 Binary files /dev/null and b/myface.b5cb8ccd.jpeg differ diff --git a/myface.c9a94b3d.webp b/myface.c9a94b3d.webp new file mode 100644 index 0000000..2fdf8e5 Binary files /dev/null and b/myface.c9a94b3d.webp differ diff --git a/raleway-latin-400-normal.19704ef8.woff2 b/raleway-latin-400-normal.19704ef8.woff2 new file mode 100644 index 0000000..eec1e74 Binary files /dev/null and b/raleway-latin-400-normal.19704ef8.woff2 differ diff --git a/raleway-latin-400-normal.652c6839.woff b/raleway-latin-400-normal.652c6839.woff new file mode 100644 index 0000000..cef4299 Binary files /dev/null and b/raleway-latin-400-normal.652c6839.woff differ diff --git a/resume.pdf b/resume.pdf new file mode 120000 index 0000000..57ced78 --- /dev/null +++ b/resume.pdf @@ -0,0 +1 @@ +seankrail-resume.pdf \ No newline at end of file diff --git a/roboto-mono-latin-400-normal.46565364.woff b/roboto-mono-latin-400-normal.46565364.woff new file mode 100644 index 0000000..60cf13b Binary files /dev/null and b/roboto-mono-latin-400-normal.46565364.woff differ diff --git a/roboto-mono-latin-400-normal.7b49cb08.woff2 b/roboto-mono-latin-400-normal.7b49cb08.woff2 new file mode 100644 index 0000000..f8894ba Binary files /dev/null and b/roboto-mono-latin-400-normal.7b49cb08.woff2 differ diff --git a/seankrail-resume.pdf b/seankrail-resume.pdf new file mode 100644 index 0000000..5a88ce0 Binary files /dev/null and b/seankrail-resume.pdf differ
Engineer at AmazonWriting Backend Software
Writing Backend Software
Philadelphia, PA
thumb_up 40 Likes