{"version":3,"file":"static/js/2841.8e2b3602.js","mappings":"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","sources":["webpack://finnish-art/./src/components/Base/SocialMixin.js","webpack://finnish-art/./src/components/Social/Follow.vue","webpack://finnish-art/./src/components/Social/Follow.vue?853a","webpack://finnish-art/src/components/Social/Follow.vue","webpack://finnish-art/./src/components/Social/Follow.vue?d6c0"],"sourcesContent":["/**\n * This mixin handles social actions (like, save, follow, share).\n * Works with Social/Button.pug template.\n */\nexport default {\n\n props: {\n item: { type: Object },\n resource: { type: String }, // resource type: actors, artworks etc\n className: { type: String },\n withTooltip: { type: Boolean, default: false },\n disabled: { type: Boolean }\n },\n\n components: {\n // DxTooltip: () => import('devextreme-vue/tooltip')\n },\n\n data: function () {\n return {\n operation: '', // override (save, like, follow, share)\n undoable: true,\n active: false,\n isAllowed: false,\n busy: false,\n showModalLogin: false,\n showTooltip: false,\n tooltipMessage: null,\n isAuthenticated: false,\n error: null\n };\n },\n\n watch: {\n item: function () {\n this.update();\n }\n },\n\n beforeMount: function () {\n this.isAuthenticated = !!this.$store.getters['user/isAuthenticated'];\n this.$eventBus.$on('auth-change', this.onAuthChange);\n },\n\n mounted: function () {\n this.update();\n },\n\n beforeDestroy: function () {\n this.$eventBus.$off('auth-change', this.onAuthChange);\n },\n\n methods: {\n onAuthChange: function (auth) {\n this.isAuthenticated = auth?.authenticated === true;\n this.isAllowed = !!this.isAuthenticated;\n },\n\n update: function () {\n this.active = this.isActive(this.item);\n this.isAllowed = !!this.isAuthenticated;\n },\n\n isActive: function (item) {\n if (!item) {\n return false;\n }\n let items = [];\n switch (this.operation) {\n case 'save':\n items = this.$store.getters['user/getSaved'];\n break;\n case 'heart':\n items = this.$store.getters['user/getLiked'];\n break;\n case 'follow':\n items = this.$store.getters['user/getFollowed'];\n break;\n case 'share':\n items = this.$store.getters['user/getShared'];\n break;\n default:\n return false;\n }\n\n // Followed items contains a wrapper for Actor, Collection, Organization etc\n const key = this.$helpers.getResourceKey(this.resource);\n const value = _.chain(items).map(key).compact().find({Id: item.Id}).value();\n return !!value;\n },\n\n /**\n * Adds `item` to stored profile items.\n * Stored profile items are keyed as {Actor: item}, {Event: item} etc\n */\n addProfileItem: function (item) {\n const storeItem = {};\n storeItem[this.$helpers.getResourceKey(this.resource)] = item;\n switch (this.operation) {\n case 'save':\n this.$store.commit('user/addSavedItem', storeItem);\n break;\n case 'heart':\n this.$store.commit('user/addLikedItem', storeItem);\n break;\n case 'follow':\n this.$store.commit('user/addFollowedItem', storeItem);\n break;\n case 'share':\n this.$store.commit('user/addSharedItem', storeItem);\n break;\n default:\n return false;\n }\n },\n\n /**\n * Removes `item` from stored profile items.\n * Stored profile items are keyed as {Actor: item}, {Event: item} etc\n */\n removeProfileItem: function (item) {\n const storeItem = {};\n storeItem[this.$helpers.getResourceKey(this.resource)] = item;\n switch (this.operation) {\n case 'save':\n this.$store.commit('user/removeSavedItem', storeItem);\n break;\n case 'heart':\n this.$store.commit('user/removeLikedItem', storeItem);\n break;\n case 'follow':\n this.$store.commit('user/removeFollowedItem', storeItem);\n break;\n case 'share':\n this.$store.commit('user/removeSharedItem', storeItem);\n break;\n default:\n return false;\n }\n },\n\n /**\n * Tooltip, default text item TagLine.\n */\n getTooltipText: function () {\n return this.item && this.item.TagLine;\n },\n\n onMouseEnter: function () {\n this.tooltipMessage = this.getTooltipText();\n this.showTooltip = true;\n this.error = null; // will enable onMouseLeave to hide tooltip\n },\n\n onMouseLeave: function () {\n if (!this.error) {\n this.showTooltip = false;\n }\n },\n\n onClick: function () {\n // preconditions\n if (this.busy || this.disabled || !this.resource || !this.item || !this.isAllowed) {\n return false;\n }\n\n // display busy spinner\n this.busy = true;\n this.error = null;\n // do operation if feature is not active (not liked, not followed) or is fire-and-forget (share)\n if (!this.active || !this.undoable) {\n this.$SVC.putOperation(this.resource, this.item.Id, this.operation)\n .then((response) => {\n // console.log(response);\n this.addProfileItem(this.item);\n this.active = true;\n this.$emit('change', 1);\n })\n .catch(this.handleError)\n .finally(() => {\n this.busy = false;\n });\n }\n // else undo\n else if (this.undoable) {\n this.$SVC.putOperation(this.resource, this.item.Id, `un${this.operation}`)\n .then((response) => {\n // console.log(response);\n this.removeProfileItem(this.item);\n this.active = false;\n this.$emit('change', -1);\n })\n .catch(this.handleError)\n .finally(() => {\n this.busy = false;\n });\n }\n },\n\n /**\n * Handle request error.\n * Show generic \"network error\" message in the tooltip.\n */\n handleError: function (error) {\n this.tooltipMessage = this.$t('common.networkError');\n this.showTooltip = true;\n this.error = error;\n },\n\n // toggleModalLogin: function (error) {\n // this.$eventBus.$emit('login-required', error);\n // },\n\n getClassName: function () {\n return [\n this.className,\n `do-${this.operation}`,\n this.active ? 'active' : '',\n this.disabled ? 'disabled' : '',\n this.busy ? 'busy' : '',\n !this.isAllowed ? 'help-cursor' : '' // affects css cursor property!\n ].join(' ');\n }\n }\n};\n","var render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"div\",\n { staticClass: \"social-button-wrapper\" },\n [\n _c(\n \"div\",\n {\n ref: \"button\",\n staticClass: \"social\",\n class: _vm.getClassName(),\n on: {\n mouseenter: _vm.onMouseEnter,\n mouseleave: _vm.onMouseLeave,\n click: function ($event) {\n $event.stopPropagation()\n $event.preventDefault()\n return _vm.onClick.apply(null, arguments)\n },\n },\n },\n [\n _vm.busy\n ? _c(\"div\", { staticClass: \"is-loading button\" })\n : _c(\"div\", [\n !_vm.active\n ? _c(\"span\", [_vm._v(_vm._s(_vm.$t(\"social.follow\")))])\n : _c(\"span\", [\n _vm._v(\" \" + _vm._s(_vm.$t(\"social.followed\"))),\n ]),\n ]),\n ]\n ),\n (_vm.withTooltip && _vm.tooltipMessage) || _vm.error\n ? _c(\n \"dx-tooltip\",\n {\n attrs: { visible: _vm.showTooltip, target: _vm.$refs.button },\n on: {\n \"update:visible\": function ($event) {\n _vm.showTooltip = $event\n },\n },\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"social-tooltip\",\n class: _vm.error ? \"error\" : \"\",\n },\n [\n _vm.error\n ? _c(\"icon-alert-decagram\", { attrs: { title: \"\" } })\n : _vm._e(),\n _c(\"span\", [_vm._v(_vm._s(_vm.tooltipMessage))]),\n ],\n 1\n ),\n ]\n )\n : _vm._e(),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Follow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Follow.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Follow.vue?vue&type=template&id=4addb32a&lang=pug&\"\nimport script from \"./Follow.vue?vue&type=script&lang=js&\"\nexport * from \"./Follow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Follow.vue?vue&type=style&index=0&id=4addb32a&prod&lang=scss&\"\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"],"names":["props","item","type","Object","resource","String","className","withTooltip","Boolean","default","disabled","components","data","operation","undoable","active","isAllowed","busy","showModalLogin","showTooltip","tooltipMessage","isAuthenticated","error","watch","this","update","beforeMount","$store","getters","$eventBus","$on","onAuthChange","mounted","beforeDestroy","$off","methods","auth","authenticated","isActive","items","key","$helpers","getResourceKey","_","chain","map","compact","find","Id","value","addProfileItem","storeItem","commit","removeProfileItem","getTooltipText","TagLine","onMouseEnter","onMouseLeave","onClick","$SVC","putOperation","then","response","$emit","catch","handleError","finally","$t","getClassName","join","render","_vm","_c","_self","staticClass","ref","class","on","mouseenter","mouseleave","click","$event","stopPropagation","preventDefault","apply","arguments","_v","_s","attrs","visible","target","$refs","button","title","_e","_withStripped","name","mixins"],"sourceRoot":""}