{"version":3,"sources":["webpack:///./src/components/Spaces/ModalAddSpaceImage.vue","webpack:///src/components/Spaces/ModalAddSpaceImage.vue","webpack:///./src/components/Spaces/ModalAddSpaceImage.vue?9a13","webpack:///./src/components/Spaces/ModalAddSpaceImage.vue?cf97","webpack:///./src/utils/imageHelper.js","webpack:///./src/components/Spaces/ModalAddSpaceImage.vue?cb52","webpack:///./src/providers/upload.js"],"names":["render","_vm","this","_c","_self","attrs","$t","isSaving","isSavingSuccess","isSavingError","onClickCancel","saveSpaceImage","showModal","disableSaveButton","on","scopedSlots","_u","key","fn","staticClass","ref","val","newImageChosen","hasImageError","proxy","staticRenderFns","ImageCropper","components","props","meetingtypeId","default","type","Number","Boolean","Function","required","data","mSpace","spaceImage","computed","_objectSpread","mapState","created","cleanSource","space","methods","mapMutations","_this","_asyncToGenerator","_regenerator","m","_callee","NEW_IMAGE","responseImageUpload","saveSpaceImageResponse","t","w","_context","p","n","a","$refs","imageCropper","getCroppedCanvas","uploadProvider","locationImage","LocationId","v","status","Images","push","Id","SpaceId","IsDefault","length","MeetingtypeId","Image","spaceProvider","updateSpace","setSpace","setTimeout","clearTimeout","component","TRANSPARENCY_MIME_TYPES","mimeTypeCanHaveTransparency","mimeType","arguments","undefined","indexOf","String","toLowerCase","getMimeTypeFromDataUrl","dataUrl","match","exec","hasTransparentInteriorPixels","width","height","y","rowStart","x","canvasToUploadDataUrl","canvas","jpegQuality","canHaveTransparency","ctx","getContext","imageData","getImageData","toDataURL","globalCompositeOperation","fillStyle","fillRect","postArticleImage","_postArticleImage","articleId","base64Image","split","axios","post","concat","process","Base64Image","Type","ItemId","headers","apiToken","profileToken","store","getters","_x","_x2","apply","locationId","_callee2","img","response","_context2","resizeImage","Axios","locationHost","_this2","_callee3","_context3","locationLogo","_this3","_callee4","_context4","eventImage","eventId","_this4","_callee5","_context5","_arguments","_callee6","maxWidth","maxHeight","_context6","Promise","resolve","onload","document","createElement","ratio","imageSmoothingEnabled","imageSmoothingQuality","drawImage","src"],"mappings":"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","file":"js/chunk-ddd0dd7e.js?id=13edde2e3d9f2bcf4d2c","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ui-component-modal',{attrs:{\"modalTitle\":_vm.$t('Components.Spaces.ModalAddSpaceImage.Main_Title'),\"modalSize\":\"large\",\"isSaving\":_vm.isSaving,\"isSavingSuccess\":_vm.isSavingSuccess,\"isSavingError\":_vm.isSavingError,\"onClickCancel\":_vm.onClickCancel,\"onClickSave\":_vm.saveSpaceImage,\"showModal\":_vm.showModal,\"disableSaveButton\":_vm.disableSaveButton},on:{\"closeModal\":_vm.onClickCancel},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"columns is-mobile is-multiline is-vcentered\"},[_c('div',{staticClass:\"column is-7\"},[_c('ImageCropper',{ref:\"imageCropper\",attrs:{\"aspectRatio\":4/3,\"guides\":false,\"viewMode\":3,\"previewContainer\":\".imagePreview\",\"aspectRatioCssClass\":\"is-4by3\"},on:{\"callbackImageChosen\":val => { _vm.newImageChosen = val },\"errorCallbackInvalid\":val => { _vm.hasImageError = val }}})],1),_c('div',{staticClass:\"column is-5\"},[_c('div',{staticClass:\"wrapper-previews\"},[_c('div',{staticClass:\"imagePreview has-background-grey-light\"})])])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <ui-component-modal\n    :modalTitle=\"$t('Components.Spaces.ModalAddSpaceImage.Main_Title')\"\n    modalSize=\"large\"\n    :isSaving=\"isSaving\"\n    :isSavingSuccess=\"isSavingSuccess\"\n    :isSavingError=\"isSavingError\"\n    :onClickCancel=\"onClickCancel\"\n    :onClickSave=\"saveSpaceImage\"\n    :showModal=\"showModal\"\n    :disableSaveButton=\"disableSaveButton\"\n    @closeModal=\"onClickCancel\"\n  >\n    <template v-slot:content>\n      <div class=\"columns is-mobile is-multiline is-vcentered\">\n        <div class=\"column is-7\">\n          <ImageCropper\n            ref=\"imageCropper\"\n            :aspectRatio=\"4/3\"\n            :guides=\"false\"\n            :viewMode=\"3\"\n            previewContainer=\".imagePreview\"\n            @callbackImageChosen=\"val => { newImageChosen = val }\"\n            @errorCallbackInvalid=\"val => { hasImageError = val }\"\n            aspectRatioCssClass=\"is-4by3\"\n          />\n        </div>\n        <div class=\"column is-5\">\n          <div class=\"wrapper-previews\">\n            <div class=\"imagePreview has-background-grey-light\"></div>\n          </div>\n        </div>\n      </div>\n    </template>\n  </ui-component-modal>\n</template>\n\n<script>\nimport { mapState, mapMutations } from 'vuex'\nimport spaceProvider from '@/providers/space'\nimport uploadProvider from '@/providers/upload'\nimport { cleanSource } from '../../utils/objectHelper'\n\nconst ImageCropper = () => import('@/components/UI/ImageCropper')\n\nexport default {\n  components: {\n    ImageCropper,\n  },\n\n  props: {\n    meetingtypeId: {\n      default: 0,\n      type: Number,\n    },\n\n    showModal: {\n      type: Boolean,\n      default: false,\n    },\n\n    onClickCancel: {\n      type: Function,\n      required: true,\n    },\n  },\n\n  data() {\n    return {\n      isSavingError: false,\n      isSavingSuccess: false,\n      isSaving: false,\n      mSpace: null,\n      spaceImage: '',\n      newImageChosen: false,\n      hasImageError: false\n    }\n  },\n\n  computed: {\n    ...mapState('spaceStore', ['space']),\n\n    disableSaveButton() {\n      return this.isSaving || !this.newImageChosen || this.hasImageError\n    },\n  },\n\n  created() {\n    this.mSpace = cleanSource(this.space)\n  },\n\n  methods: {\n    ...mapMutations('spaceStore', ['setSpace']),\n\n    async saveSpaceImage() {\n      if (this.disableSaveButton) { return }\n      this.isSaving = true\n\n      try {\n        const NEW_IMAGE = this.$refs.imageCropper.getCroppedCanvas()\n        let responseImageUpload = await uploadProvider.methods.locationImage(this.space.LocationId, NEW_IMAGE)\n\n        if (responseImageUpload.status === 200) {\n          this.mSpace.Images.push({\n            Id: 0,\n            SpaceId: this.space.Id,\n            IsDefault: this.mSpace.Images.length === 0,\n            MeetingtypeId: this.meetingtypeId,\n            Image: responseImageUpload.data,\n          })\n          let saveSpaceImageResponse = await spaceProvider.methods.updateSpace(this.mSpace)\n          this.isSavingSuccess = true\n\n          this.setSpace(saveSpaceImageResponse.data)\n\n          let t = setTimeout(() => {\n            this.onClickCancel()\n            clearTimeout(t)\n          }, 2000)\n        }\n      } catch (error) {\n        this.isSaving = false\n        this.isSavingError = true\n      }\n    },\n  },\n}\n</script>\n\n<style lang=\"sass\" scoped>\n.wrapper-previews\n  display: flex\n  flex-grow: 1\n  .imagePreview\n    overflow: hidden\n    aspect-ratio: 4/3\n    &:nth-child(1)\n      max-width: 80%\n      width: 100%\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../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!./ModalAddSpaceImage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../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!./ModalAddSpaceImage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModalAddSpaceImage.vue?vue&type=template&id=0c3c078c&scoped=true\"\nimport script from \"./ModalAddSpaceImage.vue?vue&type=script&lang=js\"\nexport * from \"./ModalAddSpaceImage.vue?vue&type=script&lang=js\"\nimport style0 from \"./ModalAddSpaceImage.vue?vue&type=style&index=0&id=0c3c078c&prod&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  \"0c3c078c\",\n  null\n  \n)\n\nexport default component.exports","const TRANSPARENCY_MIME_TYPES = ['image/png', 'image/gif', 'image/webp']\n\n/**\n * Check if a MIME type is an image format that can contain transparency\n * @param {String} mimeType - e.g. 'image/png'\n * @returns {Boolean}\n */\nexport function mimeTypeCanHaveTransparency(mimeType = '') {\n  return TRANSPARENCY_MIME_TYPES.indexOf(String(mimeType || '').toLowerCase()) > -1\n}\n\n/**\n * Get the MIME type from a data URL prefix, e.g. 'data:image/png;base64,...' gives 'image/png'\n * @param {String} dataUrl\n * @returns {String}\n */\nexport function getMimeTypeFromDataUrl(dataUrl = '') {\n  const match = /^data:([^;,]+)[;,]/i.exec(dataUrl || '')\n\n  return match ? match[1].toLowerCase() : ''\n}\n\n/**\n * Check if image data contains at least one (semi-)transparent pixel\n * @param {Uint8ClampedArray} data - RGBA pixel data of an ImageData object\n * @returns {Boolean}\n */\nexport function hasTransparentPixels(data) {\n  for (let i = 3; i < data.length; i += 4) {\n    if (data[i] < 255) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Check if image data is really transparent, ignoring the outermost 1px border.\n * Cropping and resizing with sub-pixel boxes anti-aliases the edge pixels, which\n * makes the edge semi-transparent for an image that is opaque. Only a pixel that\n * is NOT in the outermost 1px border with an alpha below 255 counts as transparency.\n * @param {Uint8ClampedArray} data - RGBA pixel data of an ImageData object\n * @param {Number} width\n * @param {Number} height\n * @returns {Boolean}\n */\nexport function hasTransparentInteriorPixels(data, width, height) {\n  for (let y = 1; y < height - 1; y++) {\n    const rowStart = y * width * 4\n\n    for (let x = 1; x < width - 1; x++) {\n      if (data[rowStart + x * 4 + 3] < 255) {\n        return true\n      }\n    }\n  }\n\n  return false\n}\n\n/**\n * Export a canvas as a data URL that is suited for uploading.\n * Only when the source image can have transparency (PNG, GIF, WebP) the canvas is checked\n * and exported as PNG when it really is transparent, so the transparency is preserved.\n * Everything else (e.g. a JPEG photo) is exported as JPEG on a white background.\n * @param {HTMLCanvasElement} canvas\n * @param {Number} jpegQuality - JPEG quality between 0 and 1\n * @param {Boolean} canHaveTransparency - Source image is a format that can contain transparency\n * @returns {String}\n */\nexport function canvasToUploadDataUrl(canvas, jpegQuality = 0.92, canHaveTransparency = false) {\n  const ctx = canvas.getContext('2d')\n\n  if (canHaveTransparency) {\n    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)\n\n    if (hasTransparentInteriorPixels(imageData.data, canvas.width, canvas.height)) {\n      return canvas.toDataURL('image/png')\n    }\n  }\n\n  // Paint a white background behind the image so the JPEG never gets black corners or edges\n  ctx.globalCompositeOperation = 'destination-over'\n  ctx.fillStyle = '#fff'\n  ctx.fillRect(0, 0, canvas.width, canvas.height)\n  ctx.globalCompositeOperation = 'source-over'\n\n  return canvas.toDataURL('image/jpeg', jpegQuality)\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.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!./ModalAddSpaceImage.vue?vue&type=style&index=0&id=0c3c078c&prod&lang=sass&scoped=true\"","import Axios from 'axios'\nimport axios from 'axios'\nimport store from '../store'\nimport { canvasToUploadDataUrl, getMimeTypeFromDataUrl, mimeTypeCanHaveTransparency } from '@/utils/imageHelper'\n\nexport default {\n  methods: {\n    postArticleImage: async (articleId, base64Image) => {\n      base64Image = base64Image.split(',')[1]\n\n      return await axios.post(`${process.env.VUE_APP_API_BASE_URL}/api/v1/upload/image`, {\n          Base64Image: base64Image,\n          Type: 'Article',\n          ItemId: articleId,\n      },\n        {\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken']\n          }\n        })\n    },\n\n    /**\n     * Upload location image\n     * @param {Number} locationId\n     * @param {String} base64Image\n     */\n    async locationImage(locationId, base64Image) {\n      let img = await this.resizeImage(base64Image)\n      base64Image = img.split(',')[1]\n      const response = Axios.post(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/upload/image`,\n        {\n          Base64Image: base64Image,\n          Type: 'Location',\n          ItemId: locationId,\n        },\n        {\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n    /**\n     * Upload location image\n     * @param {Number} locationId\n     * @param {String} base64Image\n     */\n    async locationHost(locationId, base64Image) {\n      let img = await this.resizeImage(base64Image)\n      base64Image = img.split(',')[1]\n      const response = Axios.post(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/upload/image`,\n        {\n          Base64Image: base64Image,\n          Type: 'VirtualManager',\n          ItemId: locationId,\n        },\n        {\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n    /**\n     * Upload location logo\n     * @param {Number} locationId\n     * @param {String} base64Image\n     */\n    async locationLogo(locationId, base64Image) {\n      let img = await this.resizeImage(base64Image)\n      base64Image = img.split(',')[1]\n      const response = Axios.post(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/upload/image`,\n        {\n          Base64Image: base64Image,\n          Type: 'Logo',\n          ItemId: locationId,\n        },\n        {\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n    /**\n     * Upload event image\n     * @param {Number} eventId\n     * @param {String} base64Image\n     */\n    async eventImage(eventId, base64Image) {\n      let img = await this.resizeImage(base64Image)\n      base64Image = img.split(',')[1]\n\n      const response = Axios.post(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/upload/image`,\n        {\n          Base64Image: base64Image,\n          Type: 'Event',\n          ItemId: eventId,\n        },\n        {\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n    /**\n     * Resize images when needed\n     * @param {String} dataUrl\n     * @param {Number} maxWidth\n     * @param {Number} maxHeight\n     */\n    async resizeImage(dataUrl, maxWidth = 1920, maxHeight = 1920) {\n      return new Promise((resolve) => {\n        let img = new Image()\n        img.onload = (response) => {\n          if (img.width < maxWidth || img.height < maxHeight) {\n            resolve(dataUrl)\n          } else {\n            // Do resize\n            let canvas = document.createElement('canvas')\n\n            // let maxWidth = 1920 // Max width for the image\n            // let maxHeight = 1920 // Max height for the image\n            let ratio = 0 // Used for aspect ratio\n            let width = img.width // Current image width\n            let height = img.height // Current image height\n\n            // Check if the current width is larger than the max\n            if (width > maxWidth) {\n              ratio = maxWidth / width // get ratio for scaling image\n              height = height * ratio // Reset height to match scaled image\n              width = width * ratio // Reset width to match scaled image\n            }\n\n            // Check if current height is larger than max\n            if (height > maxHeight) {\n              ratio = maxHeight / height // get ratio for scaling image\n              width = width * ratio // Reset width to match scaled image\n            }\n            canvas.width = width\n            canvas.height = height\n\n            const ctx = canvas.getContext('2d')\n            ctx.imageSmoothingEnabled = true\n            ctx.imageSmoothingQuality = 'high'\n            ctx.drawImage(img, 0, 0, width, height)\n            resolve(canvasToUploadDataUrl(canvas, 1, mimeTypeCanHaveTransparency(getMimeTypeFromDataUrl(dataUrl))))\n          }\n        }\n        img.src = dataUrl\n      })\n    },\n  },\n}\n"],"sourceRoot":""}