{"version":3,"sources":["webpack:///src/components/Profiles/SkyLine.vue","webpack:///./src/components/Profiles/SkyLine.vue","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./src/components/Profiles/SkyLine.vue?7b52","webpack:///./src/components/Profiles/SkyLine.vue?1f9b","webpack:///./src/components/Profiles/SkyLine.vue?daf8","webpack:///./src/components/Profiles/SkyLine.vue?6fdf","webpack:///./src/components/Profiles/SkyLine.vue?5533","webpack:///./src/components/Profiles/SkyLine.vue?f964"],"names":["props","subTitle","type","String","required","title","currentTime","Date","data","now","timerId","stars","hourColors","created","computed","_objectSpread","mapState","gradient","h","getHours","m","getMinutes","getSeconds","c1","c2","mid","lerpColor","concat","starOpacity","t","sunOpacity","moonOpacity","sunStyle","Math","min","max","left","top","sin","PI","opacity","moonStyle","profile","profileState","Profile","greeting","hour","$t","mounted","_this","initStars","setInterval","beforeDestroy","clearInterval","methods","a","b","_a$match$map","match","map","x","parseInt","_a$match$map2","_slicedToArray","r1","g1","b1","_b$match$map","_b$match$map2","r2","g2","b2","mix","v1","v2","round","toHex","v","toString","padStart","count","arguments","length","undefined","Array","from","_","i","id","random","size","brightness","render","_vm","_c","_self","staticClass","style","backgroundImage","_l","star","key","width","height","_v","_s","FirstName","staticRenderFns","_withStripped"],"mappings":"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","file":"js/212.js?id=8902bed6380d602ebdcc","sourcesContent":["<template>\n  <div class=\"sky-container\">\n    <!-- Gradient background -->\n    <div\n      class=\"sky-gradient\"\n      :style=\"{ backgroundImage: gradient }\"\n    ></div>\n\n    <!-- 2) Star layer -->\n    <div\n      class=\"stars\"\n      :style=\"{ opacity: starOpacity }\"\n    >\n      <div\n        v-for=\"star in stars\"\n        :key=\"star.id\"\n        class=\"star\"\n        :style=\"{\n          top:    star.top  + '%',\n          left:   star.left + '%',\n          width:  star.size + 'px',\n          height: star.size + 'px',\n          opacity: star.brightness\n        }\"\n      ></div>\n    </div>\n\n    <!-- 3) Sun (always in DOM, but fades) -->\n    <div\n      class=\"sun\"\n      :style=\"sunStyle\"\n    ></div>\n\n    <!-- 4) Moon (always in DOM, but fades) -->\n    <div\n      class=\"moon\"\n      :style=\"moonStyle\"\n    ></div>\n\n    <!-- 5) Content slot -->\n    <div class=\"content\">\n      <div class=\"title\">{{ greeting }} {{ profile.FirstName }},</div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from 'vuex'\n\nexport default {\n  props: {\n    subTitle: {\n      type: String,\n      required: false\n    },\n    title: {\n      type: String,\n      required: false\n    },\n\n    currentTime: { \n      type: Date, \n      required: true \n    }\n\n  },\n\n  data() {\n    return {\n      now: new Date(),\n      timerId: null,\n      stars: [],\n      // One “sky” color for each hour 0→23\n      hourColors: [\n        '#0a0a2a', // 00:00\n        '#12123a', // 01:00\n        '#1a1a4a', // 02:00\n        '#22225a', // 03:00\n        '#2a2a6a', // 04:00\n        '#ffc88d', // 05:00 dawn glow\n        '#ffe4b5', // 06:00 sunrise\n        '#87ceeb', // 07:00 morning blue\n        '#b0e0e6', // 08:00\n        '#add8e6', // 09:00\n        '#87cefa', // 10:00\n        '#00bfff', // 11:00\n        '#87cefa', // 12:00\n        '#add8e6', // 13:00\n        '#b0e0e6', // 14:00\n        '#87ceeb', // 15:00\n        '#ffb347', // 16:00 late afternoon\n        '#ff8c00', // 17:00 dusk start\n        '#ff4500', // 18:00 sunset\n        '#2c3e50', // 19:00 evening\n        '#1f2833', // 20:00\n        '#18212a', // 21:00\n        '#0f1a22', // 22:00\n        '#0a0a2a'  // 23:00\n      ]\n    }\n  },\n\n  created() { },\n\n  computed: {\n    ...mapState('profileStore', ['profileState']),\n\n    // Build a top→bottom gradient by lerping between this hour and next\n    gradient() {\n      const now = this.currentTime;\n      const h = now.getHours();\n      const m = (now.getMinutes() + now.getSeconds() / 60) / 60;\n      const c1 = this.hourColors[h];\n      const c2 = this.hourColors[(h + 1) % 24];\n      const mid = this.lerpColor(c1, c2, m);\n\n      // top is mid-blend, bottom is the current hour base\n      return `linear-gradient(to bottom, ${mid} 0%, ${c1} 100%)`;\n    },\n\n    // Stars fade in from 17→19, full 19→5, fade out 5→7\n    starOpacity() {\n      const now = this.currentTime;\n      const t = now.getHours() + now.getMinutes() / 60;\n      if (t >= 19 || t < 5)      return 1;\n      if (t >= 17 && t < 19)     return (t - 17) / 2;\n      if (t >= 5  && t < 7)      return 1 - (t - 5) / 2;\n      return 0;\n    },\n\n    // -- sun & moon opacity ramps --\n    sunOpacity() {\n      const now = this.currentTime;\n      const h = now.getHours() + now.getMinutes()/60\n      if (h < 5.5 || h >= 18.5)  return 0\n      if (h >= 6   && h < 17)    return 1\n      if (h >= 5.5 && h < 6)     return (h - 5.5) / 0.5  // fade in 05:30–06:00\n      if (h >= 17  && h < 18.5)  return 1 - (h - 17) / 0.5 // fade out 17:00–18:30\n      return 0\n    },\n\n    moonOpacity() {\n      const now = this.currentTime;\n      const h = now.getHours() + now.getMinutes()/60\n      if (h < 4 || h >= 18.5)  return 1\n      if (h >= 6   && h < 18)    return 0\n      if (h >= 4 && h < 6)     return 1 - (h - 4) / 0.5 // fade out 04:00–06:00\n      if (h >= 18  && h < 18.5)  return (h - 18) / 0.5     // fade in 18:00–18:30\n      return 1\n    },\n\n    // -- sun & moon positions on their arcs --\n    sunStyle() {\n      const now = this.currentTime;\n      const t = Math.min(Math.max((now.getHours() + now.getMinutes()/60 - 6)/12, 0), 1)\n      const left = t * 100\n      const top  = (1 - Math.sin(Math.PI * t)) * 50\n      return {\n        left:    `${left}%`,\n        top:     `${top}%`,\n        opacity: this.sunOpacity\n      }\n    },\n\n    moonStyle() {\n      const now = this.currentTime;\n      let h = now.getHours() + now.getMinutes()/60\n      let t = h >= 18 \n        ? (h - 18)/12 \n        : (h + 6)/12\n      t = Math.min(Math.max(t, 0), 1)\n      const left = t * 100\n      const top  = (1 - Math.sin(Math.PI * t)) * 50\n      return {\n        left:    `${left}%`,\n        top:     `${top}%`,\n        opacity: this.moonOpacity\n      }\n    },\n\n    profile() {\n      let profile = null;\n\n      if (this.profileState) {\n        profile = this.profileState.Profile;\n      }\n\n      return profile\n    },\n\n    greeting() {\n      const hour = new Date().getHours()\n\n      if (hour >= 5 && hour < 12) {\n        return this.$t('Views.Locations.Label_GoodMorning');\n      }\n      else if (hour >= 12 && hour < 17) {\n        return this.$t('Views.Locations.Label_GoodAfternoon');\n      }\n      else if (hour >= 17 && hour < 21) {\n        return this.$t('Views.Locations.Label_GoodEvening');\n      }\n      else {\n        return this.$t('Views.Locations.Label_GoodNight');\n      }\n    }\n  },\n\n  mounted() {\n    this.initStars(200);\n    \n    this.timerId = setInterval(() => {\n      this.now = new Date()\n      // occasionally spawn shooting stars every 4–10s\n    }, 1000)\n\n  },\n\n  beforeDestroy() {\n    clearInterval(this.timerId)\n  },\n\n  methods: {\n    // Linear-interpolate between two hex colors\n    lerpColor(a, b, t) {\n      const [r1,g1,b1] = a.match(/\\w\\w/g).map(x => parseInt(x,16))\n      const [r2,g2,b2] = b.match(/\\w\\w/g).map(x => parseInt(x,16))\n      const mix = (v1,v2) => Math.round(v1 + (v2 - v1) * t)\n      const toHex = v => v.toString(16).padStart(2,'0')\n      return `#${toHex(mix(r1,r2))}${toHex(mix(g1,g2))}${toHex(mix(b1,b2))}`\n    },\n\n    // Generate random stars\n    initStars(count = 150) {\n      this.stars = Array.from({ length: count }, (_, i) => ({\n        id: i,\n        top:       Math.random() * 100,\n        left:      Math.random() * 100,\n        size:      1 + Math.random() * 2,\n        brightness: 0.4 + Math.random() * 0.6\n      }))\n    },\n    \n  },\n\n}\n</script>\n\n<style scoped>\n.sky-container {\n  position: relative;\n  width: 100vw; height: 200px;\n  overflow: hidden;\n}\n\n.sky-gradient {\n  position: absolute;\n  inset: 0;\n  transition: background 1s ease-out;\n  z-index: 0;\n}\n\n/* clouds sit above the gradient */\n.clouds {\n  position: absolute; inset: 0;\n  z-index: 1;\n  pointer-events: none;\n  overflow: hidden;\n}\n\n/* each cloud drifts left→right */\n.cloud {\n  position: absolute;\n  height: auto;\n  background-repeat: no-repeat;\n  background-size: contain;\n  opacity: 0.7;\n  animation-name: drift;\n  animation-timing-function: linear;\n  animation-iteration-count: infinite;\n}\n\n.stars {\n  position: absolute;\n  inset: 0;\n  transition: opacity 1s linear;\n  pointer-events: none;\n  z-index: 2;\n}\n\n.star {\n  position: absolute;\n  background: white;\n  border-radius: 50%;\n}\n\n.sun, .moon {\n  position: absolute;\n  transform: translate(-50%, -50%);\n  transition: opacity 1s ease-in-out;\n  z-index: 43;\n}\n.sun {\n  width: 80px; height: 80px;\n  background: radial-gradient(circle at 30% 30%, #fffacd, #ffdf40);\n  border-radius: 50%;\n  box-shadow: 0 0 40px rgba(255,223,64,0.7);\n}\n.moon {\n  width: 60px; height: 60px;\n  background: radial-gradient(circle at 30% 30%, #f0ede5, #cccab7);\n  border-radius: 50%;\n  box-shadow: 0 0 20px rgba(240,237,229,0.5);\n}\n\n.content {\n  position: relative;\n  z-index: 5;\n}\n\n/* cloud drift keyframes */\n@keyframes drift {\n  0%   { transform: translateX(-200px); }\n  100% { transform: translateX(110vw); }\n}\n\n\n</style>\n\n\n","var render = function render() {\n  var _vm = this,\n    _c = _vm._self._c\n  return _c(\"div\", { staticClass: \"sky-container\" }, [\n    _c(\"div\", {\n      staticClass: \"sky-gradient\",\n      style: { backgroundImage: _vm.gradient },\n    }),\n    _c(\n      \"div\",\n      { staticClass: \"stars\", style: { opacity: _vm.starOpacity } },\n      _vm._l(_vm.stars, function (star) {\n        return _c(\"div\", {\n          key: star.id,\n          staticClass: \"star\",\n          style: {\n            top: star.top + \"%\",\n            left: star.left + \"%\",\n            width: star.size + \"px\",\n            height: star.size + \"px\",\n            opacity: star.brightness,\n          },\n        })\n      }),\n      0\n    ),\n    _c(\"div\", { staticClass: \"sun\", style: _vm.sunStyle }),\n    _c(\"div\", { staticClass: \"moon\", style: _vm.moonStyle }),\n    _c(\"div\", { staticClass: \"content\" }, [\n      _c(\"div\", { staticClass: \"title\" }, [\n        _vm._v(\n          _vm._s(_vm.greeting) + \" \" + _vm._s(_vm.profile.FirstName) + \",\"\n        ),\n      ]),\n    ]),\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isObject(regexp) ? getMethod(regexp, MATCH) : undefined;\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      var flags = toString(getRegExpFlags(rx));\n\n      if (stringIndexOf(flags, 'g') === -1) return regExpExec(rx, S);\n\n      var fullUnicode = stringIndexOf(flags, 'u') !== -1;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.sky-container[data-v-06952fa0] {\\n  position: relative;\\n  width: 100vw; height: 200px;\\n  overflow: hidden;\\n}\\n.sky-gradient[data-v-06952fa0] {\\n  position: absolute;\\n  inset: 0;\\n  -webkit-transition: background 1s ease-out;\\n  transition: background 1s ease-out;\\n  z-index: 0;\\n}\\n\\n/* clouds sit above the gradient */\\n.clouds[data-v-06952fa0] {\\n  position: absolute; inset: 0;\\n  z-index: 1;\\n  pointer-events: none;\\n  overflow: hidden;\\n}\\n\\n/* each cloud drifts left→right */\\n.cloud[data-v-06952fa0] {\\n  position: absolute;\\n  height: auto;\\n  background-repeat: no-repeat;\\n  background-size: contain;\\n  opacity: 0.7;\\n  -webkit-animation-name: drift-06952fa0;\\n          animation-name: drift-06952fa0;\\n  -webkit-animation-timing-function: linear;\\n          animation-timing-function: linear;\\n  -webkit-animation-iteration-count: infinite;\\n          animation-iteration-count: infinite;\\n}\\n.stars[data-v-06952fa0] {\\n  position: absolute;\\n  inset: 0;\\n  -webkit-transition: opacity 1s linear;\\n  transition: opacity 1s linear;\\n  pointer-events: none;\\n  z-index: 2;\\n}\\n.star[data-v-06952fa0] {\\n  position: absolute;\\n  background: white;\\n  border-radius: 50%;\\n}\\n.sun[data-v-06952fa0], .moon[data-v-06952fa0] {\\n  position: absolute;\\n  -webkit-transform: translate(-50%, -50%);\\n          transform: translate(-50%, -50%);\\n  -webkit-transition: opacity 1s ease-in-out;\\n  transition: opacity 1s ease-in-out;\\n  z-index: 43;\\n}\\n.sun[data-v-06952fa0] {\\n  width: 80px; height: 80px;\\n  background: radial-gradient(circle at 30% 30%, #fffacd, #ffdf40);\\n  border-radius: 50%;\\n  -webkit-box-shadow: 0 0 40px rgba(255,223,64,0.7);\\n          box-shadow: 0 0 40px rgba(255,223,64,0.7);\\n}\\n.moon[data-v-06952fa0] {\\n  width: 60px; height: 60px;\\n  background: radial-gradient(circle at 30% 30%, #f0ede5, #cccab7);\\n  border-radius: 50%;\\n  -webkit-box-shadow: 0 0 20px rgba(240,237,229,0.5);\\n          box-shadow: 0 0 20px rgba(240,237,229,0.5);\\n}\\n.content[data-v-06952fa0] {\\n  position: relative;\\n  z-index: 5;\\n}\\n\\n/* cloud drift keyframes */\\n@-webkit-keyframes drift-06952fa0 {\\n0%   { -webkit-transform: translateX(-200px); transform: translateX(-200px);\\n}\\n100% { -webkit-transform: translateX(110vw); transform: translateX(110vw);\\n}\\n}\\n@keyframes drift-06952fa0 {\\n0%   { -webkit-transform: translateX(-200px); transform: translateX(-200px);\\n}\\n100% { -webkit-transform: translateX(110vw); transform: translateX(110vw);\\n}\\n}\\n\\n\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=style&index=0&id=06952fa0&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4bd8cd98\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=style&index=0&id=06952fa0&scoped=true&lang=css\", function() {\n     var newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=style&index=0&id=06952fa0&scoped=true&lang=css\");\n     if(newContent.__esModule) newContent = newContent.default;\n     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","import { render, staticRenderFns } from \"./SkyLine.vue?vue&type=template&id=06952fa0&scoped=true\"\nimport script from \"./SkyLine.vue?vue&type=script&lang=js\"\nexport * from \"./SkyLine.vue?vue&type=script&lang=js\"\nimport style0 from \"./SkyLine.vue?vue&type=style&index=0&id=06952fa0&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"06952fa0\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/github/workspace/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('06952fa0')) {\n      api.createRecord('06952fa0', component.options)\n    } else {\n      api.reload('06952fa0', component.options)\n    }\n    module.hot.accept(\"./SkyLine.vue?vue&type=template&id=06952fa0&scoped=true\", function () {\n      api.rerender('06952fa0', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/components/Profiles/SkyLine.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=script&lang=js\"","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=style&index=0&id=06952fa0&scoped=true&lang=css\"","export * from \"-!../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"381a4baa-vue-loader-template\\\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkyLine.vue?vue&type=template&id=06952fa0&scoped=true\""],"sourceRoot":""}