{"version":3,"file":"AppLink.vue.mjs","sources":["../../lib/widgets/AppLink.vue"],"sourcesContent":["<!-- This component should be used for every link that is present in our application (internal & external)  -->\n\n/**\nVue router does not support external links yet and will only append a url to its current root path.\nYou can/should replace the usage of this component when Vue Router supports external links by itself.\n13.06.18\n**/\n\n<template>\n  <a @click=\"trackLink\" @mousedown.middle=\"trackLink\" :download=\"download\" :href=\"url\" :rel=\"rel\" :target=\"target\" :type=\"type\" v-if=\"isExternal\">\n    <slot></slot>\n    <svg\n        v-if=\"showExternalLinkIcon && isExternal && !isTooltip\"\n        class=\"external-icon\"\n        viewBox=\"0 0 24 24\"\n        width=\"14\"\n        height=\"14\"\n    >\n      <path d=\"M14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"/>\n      <path d=\"M5 3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7H5V5h7V3H5z\"/>\n    </svg>\n  </a>\n\n  <router-link :to=\"to\" :rel=\"rel\" v-else :exact=\"exact\">\n    <slot></slot>\n\n  </router-link>\n\n</template>\n\n<script>\n  export default {\n    props: {\n      to: {\n        default: '',\n        required: false,\n      },\n      path: {\n        default: '',\n        required: false,\n      },\n      query: {\n        default: '',\n        required: false,\n      },\n      fragment: {\n        default: '',\n        required: false,\n      },\n      type: {\n        default: null,\n        required: false,\n      },\n      target: {\n        default: '_self',\n        required: false,\n      },\n      exact: {\n        default: false,\n        required: false,\n      },\n      rel: {\n        default: 'noopener',\n        required: false,\n      },\n      download: {\n        default: null,\n        required: false,\n      },\n      // Use this if you want to track a link explicitly as download instead of an external link.\n      matomoTrackDownload: [Boolean, Object],\n      // Use this to manually report clicked links to Matomo\n      // Useful for URL destinations, that are on the same domain but not inside this application, so that Matomo is unable to track page views (e.g. RSS feed).\n      matomoTrackPageView: [Boolean, Object],\n\n      isTooltip: {\n        default: false,\n        required: false,\n      },\n    },\n    computed: {\n      readPath: {\n        get() {\n          return (this.path && typeof this.path === 'string') ? this.path : '';\n        },\n      },\n      readQuery: {\n        get() {\n          if (!this.query) return '';\n          if (typeof this.query === 'object') return `?${Object.keys(this.query).map(key => `${key}=${this.query[key]}`).join('&')}`;\n          if (typeof this.query === 'string') return /^\\?([a-zA-Z]+[=].*)([&][a-zA-Z]+[=].*)*$/.test(this.query) ? this.query : '';\n          return '';\n        },\n      },\n      readFragment: {\n        get() {\n          return (this.fragment && typeof this.fragment === 'string') ? `${this.fragment}` : '';\n        },\n      },\n      isExternal: {\n        get() {\n          return !(typeof this.to === 'object') && (/^(http(s)?|ftp|mailto|tel):/.test(this.to) || /^\\//.test(this.readPath) || /^\\?/.test(this.readQuery) || /^#/.test(this.readFragment));\n        },\n      },\n      url: {\n        get() {\n          return `${this.to}${this.readPath}${this.readQuery}${this.readFragment}`;\n        },\n      },\n    },\n    methods: {\n      trackLink() {\n        /* eslint-disable */\n        if (this.matomoTrackPageView) {\n          this.$piwik.trackPageView(`${window.location.origin}${this.path}`, '', {});\n          /* eslint-disable */\n         return;\n        }\n        // Do not track links as external when navigating within the same domain.\n        if (!this.isExternal) return;\n        if (this.to === '') return;\n\n        if (this.matomoTrackDownload) {\n          // window._paq.push(['trackLink', this.url, 'download']);\n          this.$piwik.trackDownload(\n            this.url,\n            typeof this.matomoTrackDownload === 'object'\n              ? this.matomoTrackDownload\n              : undefined,\n          );\n        } else {\n          // window._paq.push(['trackLink', this.url, 'link']);\n          this.$piwik.trackOutlink(\n            this.url,\n            typeof this.matomoTrackPageView === 'object'\n              ? this.matomoTrackPageView\n              : undefined,\n          );\n        }\n        // Create custom click event\n        this.$emit('after-click');\n      },\n    },\n    data() {\n      return {\n        showExternalLinkIcon: this.$env.content.datasets.facets.showExternalLinkIcon,\n\n      };\n    },\n  };\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n"],"names":["_sfc_main","key","$options","_createElementBlock","args","$props","_renderSlot","_ctx","$data","_openBlock","_hoisted_2","_cache","_createElementVNode","_createBlock","_component_router_link"],"mappings":"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"}