UNPKG

@europeana/portal

Version:
1,009 lines (826 loc) 34.2 kB
exports.ids = [75,102,103]; exports.modules = { /***/ 209: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(URL) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return urlIsContentfulAsset; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return optimisedSrcForContentfulAsset; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return responsiveImageSrcset; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return responsiveBackgroundImageCSSVars; }); function urlIsContentfulAsset(url) { return new URL(url).host === 'images.ctfassets.net'; } function optimisedSrcForContentfulAsset(asset, params = {}) { if (!(asset !== null && asset !== void 0 && asset.url)) { return null; } const imageUrl = new URL(asset.url); // TODO: are optimisations possible on any other content types? if (asset.contentType === 'image/jpeg') { params['fm'] = 'jpg'; params['fl'] = 'progressive'; if (!params.q) { params.q = 80; } } for (const key in params) { imageUrl.searchParams.set(key, params[key]); } return imageUrl.toString(); } function responsiveImageSrcset(image, params) { if (image !== null && image !== void 0 && image.url && urlIsContentfulAsset(image.url) && params) { return [`${optimisedSrcForContentfulAsset(image, params.small)} ${params.small.w}w`, `${optimisedSrcForContentfulAsset(image, params.medium)} ${params.medium.w}w`, `${optimisedSrcForContentfulAsset(image, params.large)} ${params.large.w}w`, `${optimisedSrcForContentfulAsset(image, params.xl)} ${params.xl.w}w`, `${optimisedSrcForContentfulAsset(image, params.xxl)} ${params.xxl.w}w`, `${optimisedSrcForContentfulAsset(image, params.xxxl)} ${params.xxxl.w}w`, `${optimisedSrcForContentfulAsset(image, params.wqhd)} ${params.wqhd.w}w`, `${optimisedSrcForContentfulAsset(image, params['4k'])} ${params['4k'].w}w`].join(','); } else if (image !== null && image !== void 0 && image.url) { return image.url; } else { return null; } } function responsiveBackgroundImageCSSVars(image, params) { if (image.url && urlIsContentfulAsset(image.url) && params) { return { '--bg-img-small': `url('${optimisedSrcForContentfulAsset(image, params.small)}')`, '--bg-img-medium': `url('${optimisedSrcForContentfulAsset(image, params.medium)}')`, '--bg-img-large': `url('${optimisedSrcForContentfulAsset(image, params.large)}')`, '--bg-img-xl': `url('${optimisedSrcForContentfulAsset(image, params.xl)}')`, '--bg-img-xxl': `url('${optimisedSrcForContentfulAsset(image, params.xxl)}')`, '--bg-img-xxxl': `url('${optimisedSrcForContentfulAsset(image, params.xxxl)}')`, '--bg-img-wqhd': `url('${optimisedSrcForContentfulAsset(image, params.wqhd)}')`, '--bg-img-4k': `url('${optimisedSrcForContentfulAsset(image, params['4k'])}')` }; } else if (image.url) { return { '--bg-img-small': `url('${image.url}')` }; } else { return null; } } /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)["URL"])) /***/ }), /***/ 218: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; const ICON_CLASS_BY = 'icon-license-by'; const ICON_CLASS_CC = 'icon-license-cc'; const ICON_CLASS_COPYRIGHT_NOT_EVALUATED = 'icon-license-rs-unknown'; const ICON_CLASS_IN_COPYRIGHT = 'icon-license-rs-yes'; const ICON_CLASS_NC = 'icon-license-nc'; const ICON_CLASS_ND = 'icon-license-nd'; const ICON_CLASS_NO_COPYRIGHT = 'icon-license-rs-no'; const ICON_CLASS_PUBLIC_DOMAIN = 'icon-license-pd'; const ICON_CLASS_RIGHTS_RESERVED = 'icon-license-rr'; const ICON_CLASS_SA = 'icon-license-sa'; const ICON_CLASS_ZERO = 'icon-license-zero'; /* harmony default export */ __webpack_exports__["a"] = ({ methods: { rightsNameAndIcon(rightsStatementUrl) { const rights = {}; switch (true) { case new RegExp('https?://creativecommons.org/(licenses/)?publicdomain/mark').test(rightsStatementUrl): rights.name = 'Public Domain'; rights.iconClass = [ICON_CLASS_PUBLIC_DOMAIN]; break; case new RegExp('https?://creativecommons.org/(licenses/)?publicdomain/zero').test(rightsStatementUrl): rights.name = 'CC0'; rights.iconClass = [ICON_CLASS_ZERO]; break; case new RegExp('https?://creativecommons.org/licenses/by/').test(rightsStatementUrl): rights.name = 'CC BY'; rights.iconClass = [ICON_CLASS_CC, ICON_CLASS_BY]; break; case new RegExp('https?://creativecommons.org/licenses/by-sa/').test(rightsStatementUrl): rights.name = 'CC BY-SA'; rights.iconClass = [ICON_CLASS_CC, ICON_CLASS_BY, ICON_CLASS_SA]; break; case new RegExp('https?://creativecommons.org/licenses/by-nc/').test(rightsStatementUrl): rights.name = 'CC BY-NC'; rights.iconClass = [ICON_CLASS_CC, ICON_CLASS_BY, ICON_CLASS_NC]; break; case new RegExp('https?://creativecommons.org/licenses/by-nc-sa/').test(rightsStatementUrl): rights.name = 'CC BY-NC-SA'; rights.iconClass = [ICON_CLASS_CC, ICON_CLASS_BY, ICON_CLASS_NC, ICON_CLASS_SA]; break; case new RegExp('https?://creativecommons.org/licenses/by-nc-nd/').test(rightsStatementUrl): rights.name = 'CC BY-NC-ND'; rights.iconClass = [ICON_CLASS_CC, ICON_CLASS_BY, ICON_CLASS_NC, ICON_CLASS_ND]; break; case new RegExp('https?://creativecommons.org/licenses/by-nd/').test(rightsStatementUrl): rights.name = 'CC BY-ND'; rights.iconClass = [ICON_CLASS_CC, ICON_CLASS_BY, ICON_CLASS_ND]; break; case new RegExp('https?://rightsstatements.org/(vocab|page)/InC-EDU/').test(rightsStatementUrl): rights.name = 'In Copyright - Educational Use Permitted'; rights.iconClass = [ICON_CLASS_IN_COPYRIGHT]; break; case new RegExp('https?://rightsstatements.org/(vocab|page)/NoC-NC/').test(rightsStatementUrl): case new RegExp('https?://www.europeana.eu/rights/out-of-copyright-non-commercial/').test(rightsStatementUrl): rights.name = 'No Copyright - Non-Commercial Use Only'; rights.iconClass = [ICON_CLASS_NO_COPYRIGHT]; break; case new RegExp('https?://rightsstatements.org/(vocab|page)/NoC-OKLR/').test(rightsStatementUrl): rights.name = 'No Copyright - Other Known Legal Restrictions'; rights.iconClass = [ICON_CLASS_NO_COPYRIGHT]; break; case new RegExp('https?://www.europeana.eu/rights/rr-f/').test(rightsStatementUrl): rights.name = 'Rights Reserved - Free Access'; rights.iconClass = [ICON_CLASS_RIGHTS_RESERVED]; break; case new RegExp('https?://www.europeana.eu/rights/rr-p/').test(rightsStatementUrl): rights.name = 'Rights Reserved - Paid Access'; rights.iconClass = [ICON_CLASS_RIGHTS_RESERVED]; break; case new RegExp('https?://www.europeana.eu/rights/rr-r/').test(rightsStatementUrl): rights.name = 'Rights Reserved - Restricted Access'; rights.iconClass = [ICON_CLASS_RIGHTS_RESERVED]; break; case new RegExp('https?://www.europeana.eu/rights/unknown/').test(rightsStatementUrl): rights.name = 'Unknown copyright status'; rights.iconClass = []; break; case new RegExp('https?://rightsstatements.org/(vocab|page)/InC/').test(rightsStatementUrl): rights.name = 'In Copyright'; rights.iconClass = [ICON_CLASS_IN_COPYRIGHT]; break; case new RegExp('https?://rightsstatements.org/(vocab|page)/InC-OW-EU/').test(rightsStatementUrl): rights.name = 'In Copyright - EU Orphan Work'; rights.iconClass = [ICON_CLASS_IN_COPYRIGHT]; break; case new RegExp('https?://rightsstatements.org/(vocab|page)/CNE/').test(rightsStatementUrl): rights.name = 'Copyright Not Evaluated'; rights.iconClass = [ICON_CLASS_COPYRIGHT_NOT_EVALUATED]; break; default: rights.name = rightsStatementUrl; break; } return rights; } } }); /***/ }), /***/ 225: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/RightsStatement.vue?vue&type=template&id=488721ec& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:"license-label d-inline-flex align-items-center",class:{ 'text-uppercase': _vm.variant === 'simple' },attrs:{"data-qa":"rights statement"}},[_vm._ssrNode(((_vm.variant === 'icons')?((_vm._ssrList((_vm.rightsNameAndIcon(_vm.rightsStatementUrl).iconClass),function(icon){return ("<span"+(_vm._ssrClass("license",icon))+"></span>")}))):("<span class=\"icon-license\"></span>"))+" <span class=\"license-label-text\">"+_vm._ssrEscape("\n "+_vm._s(_vm.rightsNameAndIcon(_vm.rightsStatementUrl).name)+"\n ")+"</span>")])} var staticRenderFns = [] // CONCATENATED MODULE: ./src/components/generic/RightsStatement.vue?vue&type=template&id=488721ec& // EXTERNAL MODULE: ./src/mixins/rightsStatement.js var rightsStatement = __webpack_require__(218); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/RightsStatement.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var RightsStatementvue_type_script_lang_js_ = ({ mixins: [rightsStatement["a" /* default */]], props: { rightsStatementUrl: { type: String, required: true }, /** * Style variant to use * @values icons, simple */ variant: { type: String, default: 'icons' } } }); // CONCATENATED MODULE: ./src/components/generic/RightsStatement.vue?vue&type=script&lang=js& /* harmony default export */ var generic_RightsStatementvue_type_script_lang_js_ = (RightsStatementvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(3); // CONCATENATED MODULE: ./src/components/generic/RightsStatement.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( generic_RightsStatementvue_type_script_lang_js_, render, staticRenderFns, false, null, null, "65327e37" ) /* harmony default export */ var RightsStatement = __webpack_exports__["default"] = (component.exports); /***/ }), /***/ 232: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/CiteAttribution.vue?vue&type=template&id=fddd3be8& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.extended)?_c('cite',[(_vm.name)?_vm._ssrNode("<p>","</p>",[_vm._ssrNode(_vm._ssrEscape(_vm._s(_vm.$t('attribution.title'))+"\n ")),(_vm.url)?_c('SmartLink',{attrs:{"destination":_vm.url}},[_vm._v("\n "+_vm._s(_vm.name)+"\n ")]):_c('span',[_vm._v("\n "+_vm._s(_vm.name)+"\n ")])],2):_vm._e(),_vm._ssrNode(" "),(_vm.creator)?_vm._ssrNode("<p>","</p>",[_vm._ssrNode(_vm._ssrEscape(_vm._s(_vm.$t('attribution.creator'))+"\n ")),(_vm.url)?_c('SmartLink',{attrs:{"destination":_vm.url}},[_vm._v("\n "+_vm._s(_vm.creator)+"\n ")]):_c('span',[_vm._v("\n "+_vm._s(_vm.creator)+"\n ")])],2):_vm._e(),_vm._ssrNode(" "),(_vm.provider)?_vm._ssrNode("<p>","</p>",[_vm._ssrNode(_vm._ssrEscape(_vm._s(_vm.$t('attribution.institution'))+"\n ")),(_vm.url)?_c('SmartLink',{attrs:{"destination":_vm.url}},[_vm._v("\n "+_vm._s(_vm.provider)+"\n ")]):_c('span',[_vm._v("\n "+_vm._s(_vm.provider)+"\n ")])],2):_vm._e(),_vm._ssrNode(" "),_vm._ssrNode("<p>","</p>",[_c('SmartLink',{attrs:{"destination":_vm.rightsStatement,"link-class":"attribution"}},[(_vm.rightsStatement)?_c('RightsStatement',{attrs:{"rights-statement-url":_vm.rightsStatement}}):_vm._e()],1)],1)],2):_c('cite',[_c('SmartLink',{attrs:{"destination":_vm.url,"link-class":"attribution"}},[_vm._v("\n "+_vm._s(_vm.linkText)+"\n "),(_vm.rightsStatement)?_c('RightsStatement',{attrs:{"rights-statement-url":_vm.rightsStatement}}):_vm._e()],1)],1)} var staticRenderFns = [] // CONCATENATED MODULE: ./src/components/generic/CiteAttribution.vue?vue&type=template&id=fddd3be8& // EXTERNAL MODULE: ./src/components/generic/RightsStatement.vue + 4 modules var RightsStatement = __webpack_require__(225); // EXTERNAL MODULE: ./src/components/generic/SmartLink.vue + 3 modules var SmartLink = __webpack_require__(26); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/CiteAttribution.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /** * Attribution for a cited resource */ /* harmony default export */ var CiteAttributionvue_type_script_lang_js_ = ({ name: 'CiteAttribution', components: { RightsStatement: RightsStatement["default"], SmartLink: SmartLink["a" /* default */] }, props: { /** * Name of the cited resource */ name: { type: String, default: null }, /** * Creator of the cited resource */ creator: { type: String, default: null }, /** * Provider of the cited resource */ provider: { type: String, default: null }, /** * Rights statement URL of the cited resource */ rightsStatement: { type: String, required: true }, /** * URL of the cited resource */ url: { type: String, default: null }, /** * If `true`, use the extended format */ extended: { type: Boolean, default: false } }, computed: { linkText() { return [this.name, this.creator, this.provider].filter(Boolean).join(', '); } } }); // CONCATENATED MODULE: ./src/components/generic/CiteAttribution.vue?vue&type=script&lang=js& /* harmony default export */ var generic_CiteAttributionvue_type_script_lang_js_ = (CiteAttributionvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(3); // EXTERNAL MODULE: ./src/components/generic/CiteAttribution.vue?vue&type=custom&index=0&blockType=docs&lang=md var CiteAttributionvue_type_custom_index_0_blockType_docs_lang_md = __webpack_require__(233); var CiteAttributionvue_type_custom_index_0_blockType_docs_lang_md_default = /*#__PURE__*/__webpack_require__.n(CiteAttributionvue_type_custom_index_0_blockType_docs_lang_md); // CONCATENATED MODULE: ./src/components/generic/CiteAttribution.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( generic_CiteAttributionvue_type_script_lang_js_, render, staticRenderFns, false, null, null, "3da4c0f2" ) /* custom blocks */ if (typeof CiteAttributionvue_type_custom_index_0_blockType_docs_lang_md_default.a === 'function') CiteAttributionvue_type_custom_index_0_blockType_docs_lang_md_default()(component) /* harmony default export */ var CiteAttribution = __webpack_exports__["a"] = (component.exports); /***/ }), /***/ 233: /***/ (function(module, exports) { /***/ }), /***/ 253: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/OptimisedImage.vue?vue&type=template&id=2bfc3fc3& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.lazy)?_c('b-img-lazy',{attrs:{"src":_vm.optimisedSrc,"blank-color":"#fff","blank-width":_vm.optimisedWidth,"blank-height":_vm.optimisedHeight,"alt":_vm.alt}}):_c('b-img',{attrs:{"src":_vm.optimisedSrc,"width":_vm.optimisedWidth,"height":_vm.optimisedHeight,"alt":_vm.alt}})} var staticRenderFns = [] // CONCATENATED MODULE: ./src/components/generic/OptimisedImage.vue?vue&type=template&id=2bfc3fc3& // EXTERNAL MODULE: ./src/plugins/contentful-utils.js var contentful_utils = __webpack_require__(209); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/OptimisedImage.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // /* harmony default export */ var OptimisedImagevue_type_script_lang_js_ = ({ name: 'OptimisedImage', props: { src: { type: String, required: true }, width: { type: Number, required: true }, height: { type: Number, required: true }, alt: { type: String, default: '' }, contentType: { // TODO: required? type: String, default: null }, quality: { type: Number, default: 80 }, maxWidth: { type: Number, default: null }, lazy: { type: Boolean, default: true } }, computed: { aspectRatio() { return this.width / this.height; }, optimisedWidth() { return this.maxWidth === null || this.width <= this.maxWidth ? this.width : this.maxWidth; }, optimisedHeight() { return Math.round(this.optimisedWidth / this.aspectRatio); }, optimisedSrc() { if (typeof this.contentType !== 'string' || !Object(contentful_utils["d" /* urlIsContentfulAsset */])(this.src)) { return this.src; } return Object(contentful_utils["a" /* optimisedSrcForContentfulAsset */])({ url: this.src, contentType: this.contentType }, { w: this.maxWidth, q: this.quality }); } } }); // CONCATENATED MODULE: ./src/components/generic/OptimisedImage.vue?vue&type=script&lang=js& /* harmony default export */ var generic_OptimisedImagevue_type_script_lang_js_ = (OptimisedImagevue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(3); // CONCATENATED MODULE: ./src/components/generic/OptimisedImage.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( generic_OptimisedImagevue_type_script_lang_js_, render, staticRenderFns, false, null, null, "1ab8704c" ) /* harmony default export */ var OptimisedImage = __webpack_exports__["default"] = (component.exports); /***/ }), /***/ 347: /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a <style> tag // load the styles var content = __webpack_require__(454); if(content.__esModule) content = content.default; if(typeof content === 'string') content = [[module.i, content, '']]; if(content.locals) module.exports = content.locals; // add CSS to SSR context var add = __webpack_require__(13).default module.exports.__inject__ = function (context) { add("75f9cd27", content, true, context) }; /***/ }), /***/ 453: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompareImageSlider_vue_vue_type_style_index_0_id_a8dbc07c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(347); /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompareImageSlider_vue_vue_type_style_index_0_id_a8dbc07c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompareImageSlider_vue_vue_type_style_index_0_id_a8dbc07c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__); /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompareImageSlider_vue_vue_type_style_index_0_id_a8dbc07c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompareImageSlider_vue_vue_type_style_index_0_id_a8dbc07c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__)); /***/ }), /***/ 454: /***/ (function(module, exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(12); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false); // Module ___CSS_LOADER_EXPORT___.push([module.i, "figure[data-v-a8dbc07c]{display:inline-block}.compare-image[data-v-a8dbc07c]{position:relative;overflow:hidden}.compare-image img[data-v-a8dbc07c]{width:auto}.compare-image img[data-v-a8dbc07c]:nth-child(1){position:absolute;top:0;left:0}.compare-image .slider[data-v-a8dbc07c]{width:48px;height:100%;position:absolute;top:0;align-items:center;display:flex}.compare-image .slider .slider-handle[data-v-a8dbc07c]{position:absolute;background:rgba(255,255,255,.5);width:48px;height:48px;border:0;border-radius:50%;box-shadow:0 0 6px rgba(0,0,0,0)}.compare-image .slider .slider-handle.is-active[data-v-a8dbc07c]{background:rgba(255,255,255,.85)}.compare-image .slider .slider-handle[data-v-a8dbc07c]::before,.compare-image .slider .slider-handle[data-v-a8dbc07c]::after{content:\"\";position:absolute;width:10px;height:10px;top:50%;border-top:solid 2px;border-left:solid 2px;transform-origin:0 0}.compare-image .slider .slider-handle[data-v-a8dbc07c]::before{left:10px;transform:rotate(-45deg)}.compare-image .slider .slider-handle[data-v-a8dbc07c]::after{right:0;transform:rotate(135deg)}.compare-image .slider .slider-handle[data-v-a8dbc07c]:hover{box-shadow:0 0 3px rgba(0,0,0,.4)}.compare-image .slider .slider-handle[data-v-a8dbc07c]:hover::before{left:9px}.compare-image .slider .slider-handle[data-v-a8dbc07c]:hover::after{right:-1px}.compare-image+figcaption cite[data-v-a8dbc07c]{display:block;margin:0;position:static}.compare-image+figcaption cite[data-v-a8dbc07c]::before{content:attr(data-prefix);font-style:normal}@media(min-width: 992px){.compare-image+figcaption cite[data-v-a8dbc07c]{max-width:45%;position:absolute;transition:opacity .2s ease-out}.compare-image+figcaption cite[data-v-a8dbc07c]::before{display:none}.compare-image+figcaption cite[data-v-a8dbc07c]:nth-child(2){left:auto;margin-left:1rem;margin-right:0;right:1rem}.compare-image+figcaption .cite-hidden[data-v-a8dbc07c]{opacity:0}}", ""]); // Exports module.exports = ___CSS_LOADER_EXPORT___; /***/ }), /***/ 455: /***/ (function(module, exports) { /***/ }), /***/ 579: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/CompareImageSlider.vue?vue&type=template&id=a8dbc07c&scoped=true& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('figure',{ref:"container",staticClass:"compare-image-wrapper"},[_vm._ssrNode("<div data-qa=\"compare image\" class=\"compare-image\" data-v-a8dbc07c>","</div>",[_c('OptimisedImage',{ref:"leftImage",style:(_vm.leftImageClip),attrs:{"src":_vm.leftImageSrc,"width":_vm.leftImageWidth,"height":_vm.leftImageHeight,"content-type":_vm.leftImageContentType,"max-width":1100,"lazy":_vm.lazy,"data-qa":"compare image left image"}}),_vm._ssrNode(" "),_c('OptimisedImage',{ref:"rightImage",attrs:{"src":_vm.rightImageSrc,"width":_vm.rightImageWidth,"height":_vm.rightImageHeight,"content-type":_vm.rightImageContentType,"max-width":1100,"lazy":_vm.lazy,"data-qa":"compare image right image"}}),_vm._ssrNode(" <div data-qa=\"compare image slider\" class=\"slider\""+(_vm._ssrStyle(null,_vm.sliderBarPosition, null))+" data-v-a8dbc07c><span class=\"slider-bar\" data-v-a8dbc07c></span> <button data-qa=\"compare image slider handler\""+(_vm._ssrClass("slider-handle",{ 'is-active' : _vm.dragging }))+" data-v-a8dbc07c><span class=\"sr-only\" data-v-a8dbc07c>"+_vm._ssrEscape(_vm._s(_vm.$t('imageSlider.handle')))+"</span></button></div>")],2),_vm._ssrNode(" "),_vm._ssrNode("<figcaption data-v-a8dbc07c>","</figcaption>",[_c('CiteAttribution',{class:_vm.hideAttribution === 'left' && 'cite-hidden',attrs:{"name":_vm.leftImageAttribution.name,"creator":_vm.leftImageAttribution.creator,"provider":_vm.leftImageAttribution.provider,"rights-statement":_vm.leftImageAttribution.rightsStatement,"url":_vm.leftImageAttribution.url,"data-qa":"compare image left attribution","data-prefix":_vm.$t('directions.left')}}),_vm._ssrNode(" "),_c('CiteAttribution',{class:_vm.hideAttribution === 'right' && 'cite-hidden',attrs:{"name":_vm.rightImageAttribution.name,"creator":_vm.rightImageAttribution.creator,"provider":_vm.rightImageAttribution.provider,"rights-statement":_vm.rightImageAttribution.rightsStatement,"url":_vm.rightImageAttribution.url,"data-qa":"compare image right attribution","data-prefix":_vm.$t('directions.right')}})],2)],2)} var staticRenderFns = [] // CONCATENATED MODULE: ./src/components/generic/CompareImageSlider.vue?vue&type=template&id=a8dbc07c&scoped=true& // EXTERNAL MODULE: ./src/components/generic/CiteAttribution.vue + 4 modules var CiteAttribution = __webpack_require__(232); // EXTERNAL MODULE: ./src/components/generic/OptimisedImage.vue + 4 modules var OptimisedImage = __webpack_require__(253); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/generic/CompareImageSlider.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /** * Slider to compare two images side-by-side */ /* harmony default export */ var CompareImageSlidervue_type_script_lang_js_ = ({ name: 'CompareImageSlider', components: { CiteAttribution: CiteAttribution["a" /* default */], OptimisedImage: OptimisedImage["default"] }, props: { /** * URL of the left image */ leftImageSrc: { type: String, required: true }, /** * Content type of the left image */ leftImageContentType: { type: String, default: null }, /** * Width of the left image */ leftImageWidth: { type: Number, required: true }, /** * Height of the left image */ leftImageHeight: { type: Number, required: true }, /** * Attribution for the left image * * Properties are passed as props to CiteAttribution */ leftImageAttribution: { type: Object, required: true }, /** * URL of the right image */ rightImageSrc: { type: String, required: true }, /** * Content type of the right image */ rightImageContentType: { type: String, default: null }, /** * Width of the right image */ rightImageWidth: { type: Number, required: true }, /** * Height of the right image */ rightImageHeight: { type: Number, required: true }, /** * Attribution for the right image * * Properties are passed as props to CiteAttribution */ rightImageAttribution: { type: Object, required: true }, /** * If `true`, lazy-load the images */ lazy: { type: Boolean, default: true } }, data() { return { dragging: false, imageWidth: 0, sliderWidth: 0, sliderPosition: 0.5, hideAttribution: null }; }, computed: { leftImageClip() { const rightLength = this.imageWidth * this.sliderPosition; return { clip: `rect(auto, ${rightLength}px, auto, auto)` }; }, sliderBarPosition() { const leftPosition = this.imageWidth * this.sliderPosition - this.sliderWidth / 2; return { left: `${leftPosition}px` }; } }, beforeDestroy() { window.removeEventListener('touchmove', this.stopDrag); window.removeEventListener('mousemove', this.drag); }, mounted() { this.setSliderWidth(); window.addEventListener('resize', this.resize); window.addEventListener('mousemove', this.mousemove); window.addEventListener('mouseup', this.mouseup); window.addEventListener('touchmove', this.mousemove); window.addEventListener('touchend', this.mouseup); this.$refs.rightImage.$el.addEventListener('load', this.setImageWidth); }, methods: { resize() { this.setImageWidth(); }, mousemove(event) { this.drag(event); }, mouseup() { this.stopDrag(); }, setImageWidth() { this.imageWidth = this.$refs.rightImage.$el.getBoundingClientRect().width; }, setSliderWidth() { this.sliderWidth = this.$refs.slider.getBoundingClientRect().width; }, initDrag() { this.dragging = true; }, stopDrag() { this.dragging = false; }, showHideAttribution() { if (this.sliderPosition < 0.2) { this.hideAttribution = 'left'; } else if (this.sliderPosition > 0.8) { this.hideAttribution = 'right'; } else { this.hideAttribution = ''; } }, drag(event) { if (!this.dragging) { return; } // Calc Cursor Position from the left edge of the viewport const cursorXfromViewport = event.touches ? event.touches[0].pageX : event.pageX; // Calc Cursor Position from the left edge of the window (consider any page scrolling) const cursorXfromWindow = cursorXfromViewport - window.pageXOffset; // Calc Cursor Position from the left edge of the image const imagePosition = this.$refs.rightImage.$el.getBoundingClientRect(); let pos = cursorXfromWindow - imagePosition.left; const minPos = 0 + this.sliderWidth / 2; const maxPos = this.imageWidth - this.sliderWidth / 2; if (pos < minPos) { pos = minPos; } if (pos > maxPos) { pos = maxPos; } this.sliderPosition = pos / this.imageWidth; this.showHideAttribution(); } } }); // CONCATENATED MODULE: ./src/components/generic/CompareImageSlider.vue?vue&type=script&lang=js& /* harmony default export */ var generic_CompareImageSlidervue_type_script_lang_js_ = (CompareImageSlidervue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(3); // EXTERNAL MODULE: ./src/components/generic/CompareImageSlider.vue?vue&type=custom&index=0&blockType=docs&lang=md var CompareImageSlidervue_type_custom_index_0_blockType_docs_lang_md = __webpack_require__(455); var CompareImageSlidervue_type_custom_index_0_blockType_docs_lang_md_default = /*#__PURE__*/__webpack_require__.n(CompareImageSlidervue_type_custom_index_0_blockType_docs_lang_md); // CONCATENATED MODULE: ./src/components/generic/CompareImageSlider.vue function injectStyles (context) { var style0 = __webpack_require__(453) if (style0.__inject__) style0.__inject__(context) } /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( generic_CompareImageSlidervue_type_script_lang_js_, render, staticRenderFns, false, injectStyles, "a8dbc07c", "1a8b4f68" ) /* custom blocks */ if (typeof CompareImageSlidervue_type_custom_index_0_blockType_docs_lang_md_default.a === 'function') CompareImageSlidervue_type_custom_index_0_blockType_docs_lang_md_default()(component) /* harmony default export */ var CompareImageSlider = __webpack_exports__["default"] = (component.exports); /***/ }) };; //# sourceMappingURL=75.js.map