\n \n \n \n
\n\n\n\n\n\n","import { render } from \"./copy-url.vue?vue&type=template&id=626beffa&scoped=true\"\nimport script from \"./copy-url.vue?vue&type=script&lang=js\"\nexport * from \"./copy-url.vue?vue&type=script&lang=js\"\n\nimport \"./copy-url.vue?vue&type=style&index=0&id=626beffa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-626beffa\"]])\n\nexport default __exports__","import ajax from '@/helpers/ajax'\nimport { objectKeysToCamelCase } from '@/helpers/transform-object-keys'\nimport { trackShareOpen } from '@/analytics/track'\nimport { v4 as uuid } from 'uuid'\n\nconst WEB_SHARE_MEDIUM = 'web_share'\n\nexport default {\n props: {\n sharingOptions: {\n type: Object,\n required: true\n }\n },\n\n data() {\n return {\n sharingOptionsCaseConverted: objectKeysToCamelCase(this.sharingOptions),\n shareClickCreated: false,\n shareClickToken: uuid()\n }\n },\n\n computed: {\n urlWithShareClickToken() {\n const urlObj = new URL(this.sharingOptionsCaseConverted.shareUrl)\n urlObj.searchParams.append('share', this.shareClickToken)\n return urlObj.toString()\n }\n },\n\n methods: {\n launchShare() {\n this.trackShareClick()\n\n navigator.share({\n url: this.urlWithShareClickToken,\n text: this.sharingOptionsCaseConverted.shareText\n }).catch((error) => {\n if (error.name === 'AbortError') {\n // This means the user cancelled the share. This is not a problem we need to handle.\n } else {\n // Something else went wrong. Treat this as an error.\n throw error\n }\n })\n },\n\n trackShareClick() {\n if (!this.shareClickCreated) {\n ajax.post({\n url: this.sharingOptionsCaseConverted.shareClicksPath,\n data: {\n token: this.shareClickToken,\n medium: WEB_SHARE_MEDIUM\n },\n successHandler: () => {\n trackShareOpen(WEB_SHARE_MEDIUM, this.sharingOptionsCaseConverted.entityType, this.sharingOptionsCaseConverted.entitySlug)\n this.shareClickCreated = true\n }\n })\n }\n }\n }\n}\n","