{"version":3,"sources":["webpack:///./src/eventbus/event-bus.js","webpack:///./src/components/Settings/Location/Photos/LocationPhotos.vue?9dca","webpack:///./src/utils/imageHelper.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./src/components/UI/ImageViewer.vue?41cd","webpack:///./src/components/Settings/Location/Photos/LocationPhotos.vue","webpack:///./src/components/Settings/Location/Photos/ModalDeletePhoto.vue","webpack:///src/components/Settings/Location/Photos/ModalDeletePhoto.vue","webpack:///./src/components/Settings/Location/Photos/ModalDeletePhoto.vue?6cc6","webpack:///./src/components/Settings/Location/Photos/ModalDeletePhoto.vue?9795","webpack:///src/components/Settings/Location/Photos/LocationPhotos.vue","webpack:///./src/components/Settings/Location/Photos/LocationPhotos.vue?0e62","webpack:///./src/components/Settings/Location/Photos/LocationPhotos.vue?68af","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/components/UI/ImageViewer.vue","webpack:///src/components/UI/ImageViewer.vue","webpack:///./src/components/UI/ImageViewer.vue?389e","webpack:///./src/components/UI/ImageViewer.vue?3c1b","webpack:///./src/components/Settings/Location/Photos/LocationPhotos.vue?4412","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/providers/upload.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./src/components/ModalImagePreview.vue","webpack:///src/components/ModalImagePreview.vue","webpack:///./src/components/ModalImagePreview.vue?05a3","webpack:///./src/components/ModalImagePreview.vue?d9f6","webpack:///./src/components/UI/Message.vue","webpack:///src/components/UI/Message.vue","webpack:///./src/components/UI/Message.vue?5d20","webpack:///./src/components/UI/Message.vue?fb09"],"names":["EventBus","Vue","TRANSPARENCY_MIME_TYPES","mimeTypeCanHaveTransparency","mimeType","arguments","length","undefined","indexOf","String","toLowerCase","getMimeTypeFromDataUrl","dataUrl","match","exec","hasTransparentInteriorPixels","data","width","height","y","rowStart","x","canvasToUploadDataUrl","canvas","jpegQuality","canHaveTransparency","ctx","getContext","imageData","getImageData","toDataURL","globalCompositeOperation","fillStyle","fillRect","$","uncurryThis","notARegExp","requireObjectCoercible","toString","correctIsRegExpLogic","stringIndexOf","target","proto","forced","includes","searchString","this","render","_vm","_c","_self","fullSizePreview","attrs","hideFullSize","previewImage","_e","showDeleteImage","hideModal","selectedImage","hideTitle","$t","slot","locationRights","hasEditRights","staticClass","scopedSlots","_u","key","fn","domProps","_s","br","EM","endEM","proxy","ref","on","val","newImageChosen","hasImageError","$event","showFullSize","_v","class","isUploading","uploadAndSave","location","Images","_b","isDragging","model","value","draggableImages","callback","$$v","expression","dragOptions","_l","Id","IsDefault","Image","LocationId","$options","filters","getLocationImage","saveLocationDefaultImage","hasFullRights","setShowDeleteImage","staticRenderFns","isDeleting","isDeletingSuccess","isDeletingError","isDeleteConfirmed","onClickCancel","deleteImage","showModal","directives","name","rawName","Array","isArray","_i","type","_k","keyCode","ctrlKey","button","shiftKey","altKey","metaKey","apply","$$a","$$el","$$c","checked","$$i","concat","slice","components","props","image","Object","default","Boolean","Function","required","mLocation","computed","_objectSpread","mapState","created","cleanSource","methods","mapMutations","self","locationProvider","deleteLocationImage","then","response","status","index","findIndex","i","splice","setLocation","setTimeout","catch","e","finally","component","ImageCropper","ImageViewer","ModalImagePreview","Message","ModalDeletePhoto","draggable","isFirstRun","mapGetters","animation","ghostClass","get","set","setLocationImages","updateImageOrder","oldDefaultImg","newDefaultImg","_this","_asyncToGenerator","_regenerator","m","_callee","NEW_IMAGE","responseImageUpload","locationSaveResponse","w","_context","p","n","a","$emit","$refs","imageCropper","getCroppedCanvas","uploadProvider","locationImage","v","saveLocationImage","push","message","reset","f","imgSrc","isNewImage","isRegExp","$TypeError","TypeError","module","exports","it","style","backgroundColor","chosenRandomColor","mImageSrc","itemName","handleError","imageSrc","itemId","Number","imageSize","aspectRatio","randomBgColor","watch","immediate","handler","getImageSource","generateAvatar","source","getEventImage","getGroupImage","getArticleImage","performance","now","el","src","text","toUpperCase","document","createElement","beginPath","rect","closePath","fill","font","textAlign","wrapText","arrColors","Math","floor","random","context","maxWidth","lineHeight","words","split","line","testLine","metrics","measureText","testWidth","fillText","wellKnownSymbol","MATCH","METHOD_NAME","regexp","error1","error2","postArticleImage","_postArticleImage","articleId","base64Image","axios","post","process","Base64Image","Type","ItemId","headers","apiToken","profileToken","store","getters","_x","_x2","locationId","_callee2","img","_context2","resizeImage","Axios","locationHost","_this2","_callee3","_context3","locationLogo","_this3","_callee4","_context4","eventImage","eventId","_this4","_callee5","_context5","_arguments","_callee6","maxHeight","_context6","Promise","resolve","onload","ratio","imageSmoothingEnabled","imageSmoothingQuality","drawImage","addToUnscopables","modalSize","combindedClass","_t","size","c"],"mappings":"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","file":"js/manage-firstrun~settings-location.js?id=f428156cb11a545c3c0f","sourcesContent":["import Vue from 'vue'\nexport const EventBus = new Vue()\n\nexport default EventBus\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationPhotos.vue?vue&type=style&index=1&id=c4c2309c&prod&lang=scss&scoped=true\"","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","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\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!./ImageViewer.vue?vue&type=style&index=0&id=0581e4ae&prod&lang=sass&scoped=true\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.fullSizePreview)?_c('ModalImagePreview',{attrs:{\"showModal\":_vm.fullSizePreview,\"onClickCancel\":_vm.hideFullSize,\"image\":_vm.previewImage}}):_vm._e(),(_vm.showDeleteImage)?_c('ModalDeletePhoto',{attrs:{\"showModal\":_vm.showDeleteImage,\"onClickCancel\":_vm.hideModal,\"image\":_vm.selectedImage}}):_vm._e(),(_vm.hideTitle === false)?_c('ui-page-hero',{attrs:{\"id\":\"id_title_impressionphotos\",\"title\":_vm.$t('Components.Settings.Location.Photos.LocationPhotos.Main_Title')}},[_c('template',{slot:\"quickActions\"})],2):_vm._e(),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[(_vm.locationRights.hasEditRights)?_c('div',{staticClass:\"is-medium no-padding-top\"},[_c('div',{staticClass:\"columns is-multiline is-flex\"},[_c('div',{staticClass:\"column is-one-quarter has-margin-top\"},[_c('Message',{scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.$t('Components.FirstRun.Steps.LocationPhotos.Message_Image', {br: '<br>', EM: '<em>', endEM: '</em>'}))}})]},proxy:true}],null,false,2341141356)})],1),_c('div',{staticClass:\"column\"},[_c('div',{staticClass:\"columns is-mobile is-multiline is-vcentered\"},[_c('div',{staticClass:\"column is-6\"},[_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\"},[(_vm.newImageChosen)?[_c('div',{staticClass:\"wrapper-previews mb-6\"},[_c('div',{staticClass:\"imagePreview has-background-grey-light\"})]),_c('div',{staticClass:\"buttons\"},[_c('button',{staticClass:\"button-preview button is-outlined\",on:{\"click\":function($event){return _vm.showFullSize(null, true)}}},[_c('span',{staticClass:\"icon is-small\"},[_c('font-awesome-icon',{attrs:{\"icon\":['fa', 'expand-alt']}})],1),_c('span',[_vm._v(_vm._s(_vm.$t('Form.Control.Preview')))])]),_c('a',{staticClass:\"button is-primary\",class:{'is-loading': _vm.isUploading },attrs:{\"disabled\":_vm.isUploading || _vm.hasImageError},on:{\"click\":function($event){return _vm.uploadAndSave()}}},[_vm._v(\" \"+_vm._s(_vm.$t('Form.Control.Upload')))])])]:_vm._e()],2)])])])]):_vm._e(),_c('div',{staticClass:\"section-previews is-medium\"},[_c('div',{staticClass:\"columns is-mobile is-multiline\"},[_c('div',{staticClass:\"column is-full\"},[_c('div',{staticClass:\"title is-3\"},[_c('span',{attrs:{\"id\":\"id_title_uploadedimages\"},domProps:{\"textContent\":_vm._s(\n                  _vm.$t(\n                    'Components.Settings.Location.Photos.LocationPhotos.Title_UploadedPhotos'\n                  )\n                )}})]),(_vm.location.Images.length > 0)?_c('Message',{attrs:{\"message\":_vm.$t(\n                  'Components.Settings.Location.Photos.LocationPhotos.Message_PhotoGallery_Filled'\n                )}}):_vm._e(),(_vm.location.Images.length === 0)?_c('Message',{attrs:{\"message\":_vm.$t(\n                  'Components.Settings.Location.Photos.LocationPhotos.Message_PhotoGallery_Empty'\n                )}}):_vm._e()],1),_c('div',{staticClass:\"column is-full\"},[_c('draggable',_vm._b({staticClass:\"columns-uploadedImages columns is-multiline\",attrs:{\"sort\":true,\"disabled\":true},on:{\"start\":function($event){_vm.isDragging = true},\"end\":function($event){_vm.isDragging = false}},model:{value:(_vm.draggableImages),callback:function ($$v) {_vm.draggableImages=$$v},expression:\"draggableImages\"}},'draggable',_vm.dragOptions,false),_vm._l((_vm.draggableImages),function(imageData){return _c('div',{key:'image' + imageData.Id,staticClass:\"column is-one-third-tablet is-one-third-desktop is-one-quarter-widescreen\"},[_c('div',{staticClass:\"card\",class:{ 'is-active': imageData.IsDefault }},[_c('div',{staticClass:\"card-content\"},[_c('div',{staticClass:\"locationImageContainer mb-4\"},[_c('ImageViewer',{staticClass:\"is-4by3\",attrs:{\"type\":\"location\",\"imageSrc\":imageData.Image,\"itemName\":imageData.Image,\"itemId\":imageData.LocationId,\"imageSize\":640,\"aspectRatio\":4/3}}),_c('button',{staticClass:\"button is-small\",on:{\"click\":function($event){_vm.showFullSize(\n                            _vm.$options.filters.getLocationImage(\n                              imageData.Image,\n                              imageData.LocationId\n                            )\n                          )}}},[_c('span',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['fa', 'expand-alt']}})],1)])],1),_c('div',{staticClass:\"has-text-right\"},[(\n                          !imageData.IsDefault && _vm.locationRights.hasEditRights\n                        )?_c('a',{staticClass:\"has-text-info has-margin-right\",on:{\"click\":function($event){return _vm.saveLocationDefaultImage(imageData)}}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t( 'Components.Settings.Location.Photos.LocationPhotos.Link_SetAsDefault' ))+\" \")])]):_vm._e(),(\n                          _vm.locationRights.hasFullRights && !imageData.IsDefault\n                        )?_c('a',{staticClass:\"has-text-danger\",on:{\"click\":function($event){return _vm.setShowDeleteImage(imageData)}}},[_c('span',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['fa', 'trash-alt']}})],1)]):_vm._e()])])])])}),0)],1)])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ui-component-modal',{attrs:{\"modalTitle\":\"Delete photo\",\"buttonLabelConfirm\":'Delete',\"isSaving\":_vm.isDeleting,\"isSavingSuccess\":_vm.isDeletingSuccess,\"isSavingError\":_vm.isDeletingError,\"savingSuccessMessage\":_vm.$t('General.DeletedSuccesfully'),\"hideFooterButtons\":_vm.isDeletingError || _vm.isDeletingSuccess,\"disableSaveButton\":!_vm.isDeleteConfirmed,\"onClickCancel\":_vm.onClickCancel,\"onClickSave\":_vm.deleteImage,\"showModal\":_vm.showModal},on:{\"closeModal\":_vm.onClickCancel},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{staticClass:\"has-text-centered has-margin-bottom\"},[_vm._v(\" Are you sure you want to delete this image? \")]),_c('div',{staticClass:\"has-text-centered\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isDeleteConfirmed),expression:\"isDeleteConfirmed\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.isDeleteConfirmed)?_vm._i(_vm.isDeleteConfirmed,null)>-1:(_vm.isDeleteConfirmed)},on:{\"click\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"]))return null;if(!$event.ctrlKey)return null;if('button' in $event && $event.button !== 0)return null;if($event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.deleteImage.apply(null, arguments)},\"change\":function($event){var $$a=_vm.isDeleteConfirmed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.isDeleteConfirmed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.isDeleteConfirmed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.isDeleteConfirmed=$$c}}}}),_vm._v(\" \"+_vm._s(_vm.$t('Form.Label.Label_YesSure'))+\" \")])])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <ui-component-modal\n    modalTitle=\"Delete photo\"\n    :buttonLabelConfirm=\"'Delete'\"\n    :isSaving=\"isDeleting\"\n    :isSavingSuccess=\"isDeletingSuccess\"\n    :isSavingError=\"isDeletingError\"\n    :savingSuccessMessage=\"$t('General.DeletedSuccesfully')\"\n    :hideFooterButtons=\"isDeletingError || isDeletingSuccess\"\n    :disableSaveButton=\"!isDeleteConfirmed\"\n    :onClickCancel=\"onClickCancel\"\n    :onClickSave=\"deleteImage\"\n    :showModal=\"showModal\"\n    @closeModal=\"onClickCancel\"\n  >\n    <template v-slot:content>\n      <div>\n        <div class=\"has-text-centered has-margin-bottom\">\n          Are you sure you want to delete this image?\n        </div>\n        <div class=\"has-text-centered\">\n          <label class=\"checkbox\">\n            <input\n              type=\"checkbox\"\n              @click.ctrl.left.exact=\"deleteImage\"\n              v-model=\"isDeleteConfirmed\"\n            />\n            {{ $t('Form.Label.Label_YesSure') }}\n          </label>\n        </div>\n      </div>\n    </template>\n  </ui-component-modal>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport { mapState, mapMutations } from 'vuex'\nimport { EventBus } from '@/eventbus/event-bus'\nimport locationProvider from '@/providers/location'\nimport { cleanSource } from '../../../../utils/objectHelper';\n\nexport default {\n  components: {},\n\n  props: {\n    image: {\n      type: Object,\n      default: null,\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      isDeleteConfirmed: false,\n      isDeleting: false,\n      isDeletingSuccess: false,\n      isDeletingError: false,\n      mLocation: null,\n    }\n  },\n\n  computed: {\n    ...mapState('locationStore', ['location']),\n  },\n\n  created() {\n    this.mLocation = cleanSource(this.location)\n  },\n\n  methods: {\n    ...mapMutations('locationStore', ['setLocation']),\n\n    deleteImage() {\n      let self = this\n\n      if (!self.isDeleting) {\n        self.isDeleting = true\n\n        locationProvider.methods\n          .deleteLocationImage(self.image.Id)\n          .then((response) => {\n            if (response.status === 204) {\n              self.isDeletingSuccess = true\n\n              let index = self.mLocation.Images.findIndex(\n                (i) => i.Id === self.image.Id\n              )\n              if (index > -1) {\n                self.mLocation.Images.splice(index, 1)\n              }\n\n              self.setLocation(self.mLocation)\n\n              setTimeout(() => {\n                self.onClickCancel()\n              }, 1000)\n            }\n          })\n          .catch((e) => {\n            self.isDeletingError = true\n          })\n          .finally(() => {\n            self.isDeleting = false\n          })\n      }\n    },\n  },\n}\n</script>\n","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!./ModalDeletePhoto.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!./ModalDeletePhoto.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModalDeletePhoto.vue?vue&type=template&id=0d08ec61\"\nimport script from \"./ModalDeletePhoto.vue?vue&type=script&lang=js\"\nexport * from \"./ModalDeletePhoto.vue?vue&type=script&lang=js\"\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  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <ModalImagePreview\n      v-if=\"fullSizePreview\"\n      :showModal=\"fullSizePreview\"\n      :onClickCancel=\"hideFullSize\"\n      :image=\"previewImage\"\n    />\n    <ModalDeletePhoto\n      v-if=\"showDeleteImage\"\n      :showModal=\"showDeleteImage\"\n      :onClickCancel=\"hideModal\"\n      :image=\"selectedImage\"\n    />\n\n    <ui-page-hero\n      id=\"id_title_impressionphotos\"\n      :title=\"\n        $t('Components.Settings.Location.Photos.LocationPhotos.Main_Title')\n      \"\n      v-if=\"hideTitle === false\"\n    >\n      <template slot=\"quickActions\"></template>\n    </ui-page-hero>\n\n    <transition\n      name=\"fade\"\n      mode=\"out-in\"\n    >\n      <!-- Start of 'Impression Photos' column -->\n      <div>\n        <div\n          v-if=\"locationRights.hasEditRights\"\n          class=\"is-medium no-padding-top\"\n        >\n\n          <!-- Start of 'Choose Image' and 'Preview' column -->\n          <div class=\"columns is-multiline is-flex\">\n            <div class=\"column is-one-quarter has-margin-top\">\n              <Message>\n                <template v-slot:content>\n                  <div v-html=\"$t('Components.FirstRun.Steps.LocationPhotos.Message_Image', {br: '<br>', EM: '<em>', endEM: '</em>'})\">\n                  </div>\n                </template>\n              </Message>\n            </div>\n            <div class=\"column\">\n              <div class=\"columns is-mobile is-multiline is-vcentered\">\n                <div class=\"column is-6\">\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                  <template v-if=\"newImageChosen\">\n                    <div class=\"wrapper-previews mb-6\">\n                      <div class=\"imagePreview has-background-grey-light\"></div>\n                    </div>\n\n                    <div class=\"buttons\">\n                      <button\n                        @click=\"showFullSize(null, true)\"\n                        class=\"button-preview button is-outlined\"\n                      >\n                        <span class=\"icon is-small\">\n                          <font-awesome-icon :icon=\"['fa', 'expand-alt']\" /></span>\n                        <span>{{$t('Form.Control.Preview')}}</span>\n                      </button>\n                      <a\n                        @click=\"uploadAndSave()\"\n                        :class=\"{'is-loading': isUploading }\"\n                        :disabled=\"isUploading || hasImageError\"\n                        class=\"button is-primary\"\n                      >\n                        {{$t('Form.Control.Upload')}}</a>\n                    </div>\n                  </template>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <!-- Start of 'Photos' column -->\n        <div class=\"section-previews is-medium\">\n          <!-- start of photo dump section -->\n          <div class=\"columns is-mobile is-multiline\">\n            <div class=\"column is-full\">\n              <div class=\"title is-3\">\n                <span\n                  id=\"id_title_uploadedimages\"\n                  v-text=\"\n                    $t(\n                      'Components.Settings.Location.Photos.LocationPhotos.Title_UploadedPhotos'\n                    )\n                  \"\n                ></span>\n              </div>\n              <Message\n                v-if=\"location.Images.length > 0\"\n                :message=\"\n                  $t(\n                    'Components.Settings.Location.Photos.LocationPhotos.Message_PhotoGallery_Filled'\n                  )\n                \"\n              />\n              <Message\n                v-if=\"location.Images.length === 0\"\n                :message=\"\n                  $t(\n                    'Components.Settings.Location.Photos.LocationPhotos.Message_PhotoGallery_Empty'\n                  )\n                \"\n              />\n            </div>\n\n            <div class=\"column is-full\">\n              <draggable\n                v-model=\"draggableImages\"\n                @start=\"isDragging = true\"\n                @end=\"isDragging = false\"\n                v-bind=\"dragOptions\"\n                :sort=\"true\"\n                :disabled=\"true\"\n                class=\"columns-uploadedImages columns is-multiline\"\n              >\n                <div\n                  v-for=\"imageData in draggableImages\"\n                  :key=\"'image' + imageData.Id\"\n                  class=\"column is-one-third-tablet is-one-third-desktop is-one-quarter-widescreen\"\n                >\n                  <div\n                    class=\"card\"\n                    :class=\"{ 'is-active': imageData.IsDefault }\"\n                  >\n                    <div class=\"card-content\">\n                      <div class=\"locationImageContainer mb-4\">\n                        <ImageViewer\n                          class=\"is-4by3\"\n                          type=\"location\"\n                          :imageSrc=\"imageData.Image\"\n                          :itemName=\"imageData.Image\"\n                          :itemId=\"imageData.LocationId\"\n                          :imageSize=\"640\"\n                          :aspectRatio=\"4/3\"\n                        />\n                        <button\n                          @click=\"\n                            showFullSize(\n                              $options.filters.getLocationImage(\n                                imageData.Image,\n                                imageData.LocationId\n                              )\n                            )\n                          \"\n                          class=\"button is-small\"\n                        >\n                          <span class=\"icon\">\n                            <font-awesome-icon :icon=\"['fa', 'expand-alt']\" /></span>\n                        </button>\n                      </div>\n                      <div class=\"has-text-right\">\n                        <a\n                          @click=\"saveLocationDefaultImage(imageData)\"\n                          class=\"has-text-info has-margin-right\"\n                          v-if=\"\n                            !imageData.IsDefault && locationRights.hasEditRights\n                          \"\n                        >\n                          <span>\n                            {{\n                              $t(\n                                'Components.Settings.Location.Photos.LocationPhotos.Link_SetAsDefault'\n                              )\n                            }}\n                          </span>\n                        </a>\n                        <a\n                          v-if=\"\n                            locationRights.hasFullRights && !imageData.IsDefault\n                          \"\n                          @click=\"setShowDeleteImage(imageData)\"\n                          class=\"has-text-danger\"\n                        >\n                          <span class=\"icon\">\n                            <font-awesome-icon :icon=\"['fa', 'trash-alt']\" />\n                          </span>\n                        </a>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </draggable>\n            </div>\n          </div>\n        </div>\n      </div>\n    </transition>\n  </div>\n</template>\n\n<script>\nimport {\n  mapState,\n  mapGetters,\n  mapMutations\n} from 'vuex'\nimport EventBus from '@/eventbus/event-bus'\nimport uploadProvider from '@/providers/upload'\nimport locationProvider from '@/providers/location'\nimport draggable from 'vuedraggable'\nimport { cleanSource } from '../../../../utils/objectHelper'\nimport ImageCropper from '../../../UI/ImageCropper.vue'\nimport ModalImagePreview from '../../../ModalImagePreview.vue'\nimport Message from '../../../UI/Message.vue'\nimport ModalDeletePhoto from '../../../Settings/Location/Photos/ModalDeletePhoto.vue'\nimport ImageViewer from  '../../../UI/ImageViewer.vue'\n\nexport default {\n  components: {\n    ImageCropper,\n    ImageViewer,\n    ModalImagePreview,\n    Message,\n    ModalDeletePhoto,\n    draggable,\n  },\n  props: {\n    hideTitle: {\n      type: Boolean,\n      default: false,\n    },\n    isFirstRun: {\n      type: Boolean,\n      default: false,\n    },\n  },\n\n  data() {\n    return {\n      // isDragging: false,\n      fullSizePreview: false,\n      isUploading: false,\n      previewImage: '',\n      selectedImage: null,\n      showDeleteImage: false,\n      newImageChosen: false,\n      hasImageError: false\n    }\n  },\n\n  computed: {\n    ...mapState('locationStore', ['location']),\n    ...mapState('tutorialStore', ['showTutorial']),\n    ...mapGetters('locationStore', ['locationRights']),\n\n    dragOptions() {\n      return {\n        animation: 0,\n        ghostClass: 'ghost',\n      }\n    },\n\n    draggableImages: {\n      get() {\n        return this.location.Images\n      },\n      set(value) {\n        this.setLocationImages(value)\n        this.mLocation = this.location\n        this.mLocation.Images = value\n        this.updateImageOrder()\n      },\n    },\n  },\n\n  methods: {\n    ...mapMutations('locationStore', ['setLocation']),\n    ...mapMutations('locationStore', ['setLocationImages']),\n    ...mapMutations('tutorialStore', ['setTutorialItems', 'setShowTutorial']),\n\n    saveLocationDefaultImage(imageData) {\n      let self = this\n\n      let mLocation = cleanSource(self.location)\n\n      locationProvider.methods\n        .saveLocationDefaultImage(imageData.LocationId, imageData.Id)\n        .then((response) => {\n          let oldDefaultImg = mLocation.Images.findIndex((i) => i.IsDefault)\n          if (oldDefaultImg > -1) {\n            mLocation.Images[oldDefaultImg].IsDefault = false\n          }\n\n          let newDefaultImg = mLocation.Images.findIndex(\n            (i) => i.Id === imageData.Id\n          )\n          if (newDefaultImg > -1) {\n            mLocation.Images[newDefaultImg].IsDefault = true\n          }\n\n          self.setLocation(mLocation)\n        })\n        .catch((e) => { })\n        .finally(() => { })\n    },\n\n    /**\n     * Upload new image and add it to location images\n     */\n    async uploadAndSave() {\n      if (this.isUploading || !this.newImageChosen || this.hasImageError) { return }\n      this.isUploading = true\n      if (this.isFirstRun) {\n        this.$emit('saving-data')\n      }\n\n      let mLocation = cleanSource(this.location)\n\n      try {\n        const NEW_IMAGE = this.$refs.imageCropper.getCroppedCanvas()\n        let responseImageUpload = await uploadProvider.methods.locationImage(this.location.Id, NEW_IMAGE)\n\n        if (responseImageUpload.status === 200) {\n          // Save new image to location images\n          let locationSaveResponse = await locationProvider.methods.saveLocationImage(this.location.Id, responseImageUpload.data)\n          mLocation.Images.push(locationSaveResponse.data)\n          this.setLocation(mLocation)\n\n          if (mLocation.Images.length === 1) {\n            this.saveLocationDefaultImage(locationSaveResponse.data)\n          }\n\n          EventBus.$emit('showToast', {\n            type: 'is-success',\n            message: this.$t('Components.Settings.Location.Photos.LocationPhotos.Toast_PhotoUploaded'),\n          })\n\n          this.newImageChosen = false\n          this.$refs.imageCropper.reset()\n        }\n\n      } catch {\n        this.$refs.imageCropper.reset()\n        if (this.isFirstRun) {\n          this.$emit('not-saving-data')\n        }\n      }\n      finally {\n        this.isUploading = false\n      }\n    },\n\n    /**\n     * Show Modal\n     */\n    showFullSize(imgSrc = '', isNewImage = false) {\n      this.previewImage = !isNewImage ? imgSrc : this.$refs.imageCropper.getCroppedCanvas()\n      this.fullSizePreview = true\n    },\n\n    /**\n     * Hide modal\n     */\n    hideFullSize() {\n      this.fullSizePreview = false\n      this.previewImage = ''\n    },\n\n    setShowDeleteImage(image) {\n      this.selectedImage = image\n      this.showDeleteImage = true\n    },\n\n    hideModal() {\n      this.selectedImage = null\n      this.showDeleteImage = false\n    },\n  },\n}\n</script>\n\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: 60%\n      width: 100%\n\n.locationImageContainer\n  position: relative\n  .button\n    position: absolute\n    bottom: 0\n    left: 0\n</style>\n\n<style lang=\"scss\" scoped>\n\n.ghost {\n  opacity: 0.5;\n  background: #c8ebfb;\n}\n\n.image-layOut {\n  align-items: center;\n  justify-content: center;\n}\n\n.columns-uploadedImages {\n  .card {\n    height: 100%;\n\n    &.is-active {\n      background-color: lighten($green, 50%);\n    }\n\n    figure {\n      .button {\n        position: absolute;\n        bottom: 0;\n        right: 0;\n      }\n    }\n  }\n}\n</style>\n","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!./LocationPhotos.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!./LocationPhotos.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LocationPhotos.vue?vue&type=template&id=c4c2309c&scoped=true\"\nimport script from \"./LocationPhotos.vue?vue&type=script&lang=js\"\nexport * from \"./LocationPhotos.vue?vue&type=script&lang=js\"\nimport style0 from \"./LocationPhotos.vue?vue&type=style&index=0&id=c4c2309c&prod&lang=sass&scoped=true\"\nimport style1 from \"./LocationPhotos.vue?vue&type=style&index=1&id=c4c2309c&prod&lang=scss&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  \"c4c2309c\",\n  null\n  \n)\n\nexport default component.exports","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('figure',{staticClass:\"image\"},[_c('img',{style:({ backgroundColor: _vm.chosenRandomColor }),attrs:{\"src\":_vm.mImageSrc,\"alt\":_vm.itemName,\"loading\":\"lazy\"},on:{\"error\":_vm.handleError}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<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>","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!./ImageViewer.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!./ImageViewer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageViewer.vue?vue&type=template&id=0581e4ae&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=0581e4ae&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  \"0581e4ae\",\n  null\n  \n)\n\nexport default component.exports","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!./LocationPhotos.vue?vue&type=style&index=0&id=c4c2309c&prod&lang=sass&scoped=true\"","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","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","'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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ui-component-modal',{attrs:{\"showModal\":_vm.showModal,\"hideFooterButtons\":true,\"modalSize\":_vm.modalSize,\"onClickCancel\":_vm.onClickCancel},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('img',{attrs:{\"src\":_vm.image,\"alt\":\"\",\"title\":\"\"}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <ui-component-modal\n    :showModal=\"showModal\"\n    :hideFooterButtons=\"true\"\n    :modalSize=\"modalSize\"\n    :onClickCancel=\"onClickCancel\"\n  >\n    <template v-slot:content>\n      <img\n        :src=\"image\"\n        alt=\"\"\n        title=\"\"\n      />\n    </template>\n  </ui-component-modal>\n</template>\n\n<script>\nexport default {\n  name: 'modal-image-preview',\n  props: {\n    modalSize: {\n      type: String,\n      default: 'large'\n    },\n    onClickCancel: {\n      type: Function,\n      required: true\n    },\n    image: {\n      type: String,\n      default: '',\n      required: true\n    },\n    showModal: {\n      type: Boolean,\n      default: false\n    }\n  }\n}\n</script>\n\n<style></style>\n","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!./ModalImagePreview.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!./ModalImagePreview.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModalImagePreview.vue?vue&type=template&id=0e470897\"\nimport script from \"./ModalImagePreview.vue?vue&type=script&lang=js\"\nexport * from \"./ModalImagePreview.vue?vue&type=script&lang=js\"\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  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('article',{staticClass:\"message\",class:_vm.combindedClass},[_c('div',{staticClass:\"message-body\"},[(_vm.message)?[_vm._v(\" \"+_vm._s(_vm.message)+\" \")]:_vm._e(),_vm._t(\"content\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <article\n    class=\"message\"\n    :class=\"combindedClass\"\n  >\n    <div class=\"message-body\">\n      <template v-if=\"message\">\n        {{ message }}\n      </template>\n      <slot name=\"content\"></slot>\n    </div>\n  </article>\n</template>\n\n<script>\nexport default {\n  props: {\n    /**\n     * For what'll be shown inside of the message box.\n     */\n    message: {\n      type: String,\n      default: ''\n    },\n\n    size: {\n      type: String,\n      default: ''\n    },\n\n    /**\n     * type bepaalt het type weergave\n     * eq. is-info = for information style. It defines the style of the message\n     */\n    type: {\n      type: String,\n      default: 'is-info'\n    }\n  },\n  data() {\n    return {};\n  },\n\n  computed: {\n    combindedClass() {\n      let c = this.type;\n\n      if (this.size.length > 0) {\n        c = c + ' ' + this.size;\n      }\n\n      return c;\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","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!./Message.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!./Message.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Message.vue?vue&type=template&id=509443f1&scoped=true\"\nimport script from \"./Message.vue?vue&type=script&lang=js\"\nexport * from \"./Message.vue?vue&type=script&lang=js\"\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  \"509443f1\",\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}