{"version":3,"sources":["webpack:///src/components/UI/ImageViewer.vue","webpack:///./src/components/UI/ImageViewer.vue","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./src/components/UI/ImageViewer.vue?cb79","webpack:///./src/components/UI/ImageViewer.vue?15dd","webpack:///./src/components/UI/ImageViewer.vue?3c1b","webpack:///./src/components/UI/ImageViewer.vue?7aed","webpack:///./src/components/UI/ImageViewer.vue?19b4","webpack:///./src/components/UI/ImageViewer.vue?7d26"],"names":["name","props","type","String","default","imageSrc","itemName","required","itemId","Number","imageSize","aspectRatio","data","mImageSrc","chosenRandomColor","randomBgColor","watch","immediate","handler","getImageSource","methods","generateAvatar","source","$options","filters","getLocationImage","getEventImage","getGroupImage","getArticleImage","performance","now","handleError","el","target","src","text","toUpperCase","width","height","canvas","document","createElement","ctx","getContext","beginPath","rect","closePath","fillStyle","fill","font","textAlign","wrapText","toDataURL","arrColors","Math","floor","random","length","context","x","y","maxWidth","lineHeight","words","split","line","n","testLine","metrics","measureText","testWidth","fillText","render","_vm","_c","_self","staticClass","style","backgroundColor","attrs","alt","loading","on","error","staticRenderFns","_withStripped"],"mappings":"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","file":"js/221.js?id=5bd313876a18e384fa96","sourcesContent":["<template>\n  <figure class=\"image\">\n    <img\n      :src=\"mImageSrc\"\n      :style=\"{ backgroundColor: chosenRandomColor }\"\n      :alt=\"itemName\"\n      loading=\"lazy\"\n      @error=\"handleError\"\n    />\n  </figure>\n</template>\n\n<script>\nexport default {\n  name: 'ImageViewer',\n\n  props: {\n    type: {\n      type: String,\n      default: ''\n    },\n    imageSrc: {\n      type: String,\n      default: ''\n    },\n    itemName: {\n      type: String,\n      required: true\n    },\n    itemId: {\n      type: Number,\n      default: 0\n    },\n    imageSize: {\n      type: Number,\n      default: 0\n    },\n    aspectRatio: {\n      type: Number,\n      default: 4 / 3\n    }\n  },\n\n  data() {\n    return {\n      mImageSrc: '',\n      chosenRandomColor: this.randomBgColor()\n    }\n  },\n\n  watch: {\n    imageSrc: {\n      immediate: true,\n      handler: function name() {\n        this.mImageSrc = this.getImageSource()\n      }\n    }\n  },\n\n  methods: {\n    getImageSource() {\n      if (!this.imageSrc) { return this.generateAvatar() }\n      let source = ''\n      switch (this.type) {\n        case 'location':\n          source = this.$options.filters.getLocationImage(\n            this.imageSrc,\n            this.itemId,\n            this.imageSize\n          )\n          break\n\n        case 'event':\n          source = this.$options.filters.getEventImage(\n            this.imageSrc,\n            this.imageSize\n          )\n          break\n\n        case 'group':\n          source = this.$options.filters.getGroupImage(\n            this.imageSrc,\n            this.itemId,\n            this.imageSize\n          )\n          break\n\n        case 'article':\n          source = this.$options.filters.getArticleImage(\n            this.imageSrc,\n            this.itemId,\n            this.imageSize\n          )\n          break\n\n        default: {\n          source = this.imageSrc\n        }\n      }\n\n      return source + '?v=' + performance.now()\n    },\n\n    handleError(el) {\n      el.target.src = this.generateAvatar()\n    },\n\n    generateAvatar() {\n      let text = this.itemName.toUpperCase()\n      let width = this.imageSize !== 0 ? this.imageSize : 1280\n      let height = width / this.aspectRatio\n\n      var canvas = document.createElement('canvas');\n      canvas.width = width;\n      canvas.height = height;\n\n      // Get the drawing context\n      var ctx = canvas.getContext('2d');\n      ctx.beginPath();\n      ctx.rect(0, 0, width, height)\n      ctx.closePath();\n      ctx.fillStyle = this.chosenRandomColor\n      ctx.fill();\n      ctx.fillStyle = \"white\";\n      ctx.font = \"bold 26px Arial\";\n      ctx.textAlign = 'center';\n      this.wrapText(ctx, text, width / 2, height / 2 + 13, width - 20, 36)\n      return canvas.toDataURL();\n    },\n\n    randomBgColor() {\n      const arrColors = ['#4C9B9B', '#0B757A', '#CFE4E5', '#78FFDA', '#95c11e', '#fec632', '#fec632', '#00baff', '#ff6600']\n      return arrColors[Math.floor(Math.random() * arrColors.length)]\n    },\n\n    wrapText(context, text, x, y, maxWidth, lineHeight) {\n      var words = text.split(' ');\n      var line = '';\n\n      for (var n = 0; n < words.length; n++) {\n        var testLine = line + words[n] + ' ';\n        var metrics = context.measureText(testLine);\n        var testWidth = metrics.width;\n        if (testWidth > maxWidth && n > 0) {\n          context.fillText(line, x, y);\n          line = words[n] + ' ';\n          y += lineHeight;\n        }\n        else {\n          line = testLine;\n        }\n      }\n      context.fillText(line, x, y);\n    }\n  }\n}\n</script>\n\n<style lang=\"sass\" scoped>\n.image\n  position: relative\n  img\n    object-fit: cover\n</style>","var render = function render() {\n  var _vm = this,\n    _c = _vm._self._c\n  return _c(\"figure\", { staticClass: \"image\" }, [\n    _c(\"img\", {\n      style: { backgroundColor: _vm.chosenRandomColor },\n      attrs: { src: _vm.mImageSrc, alt: _vm.itemName, loading: \"lazy\" },\n      on: { error: _vm.handleError },\n    }),\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\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* Colors\\n*/\\n/**\\n* Text sizes\\n*/\\n/**\\n* Column settings\\n*/\\n/**\\n* Font properties\\n*/\\n.image[data-v-58c55d7c] {\\n  position: relative;\\n}\\n.image img[data-v-58c55d7c] {\\n  -o-object-fit: cover;\\n     object-fit: cover;\\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--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=style&index=0&id=58c55d7c&lang=sass&scoped=true\");\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(\"5666ae20\", 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--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=style&index=0&id=58c55d7c&lang=sass&scoped=true\", function() {\n     var newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=style&index=0&id=58c55d7c&lang=sass&scoped=true\");\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 \"./ImageViewer.vue?vue&type=template&id=58c55d7c&scoped=true\"\nimport script from \"./ImageViewer.vue?vue&type=script&lang=js\"\nexport * from \"./ImageViewer.vue?vue&type=script&lang=js\"\nimport style0 from \"./ImageViewer.vue?vue&type=style&index=0&id=58c55d7c&lang=sass&scoped=true\"\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  \"58c55d7c\",\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('58c55d7c')) {\n      api.createRecord('58c55d7c', component.options)\n    } else {\n      api.reload('58c55d7c', component.options)\n    }\n    module.hot.accept(\"./ImageViewer.vue?vue&type=template&id=58c55d7c&scoped=true\", function () {\n      api.rerender('58c55d7c', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/components/UI/ImageViewer.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!./ImageViewer.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!./ImageViewer.vue?vue&type=script&lang=js\"","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=style&index=0&id=58c55d7c&lang=sass&scoped=true\"","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!./ImageViewer.vue?vue&type=template&id=58c55d7c&scoped=true\""],"sourceRoot":""}