{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/components/ShareRow.js","webpack://@verndale/toolkit/./src/js/helpers/index.js"],"names":[],"mappings":"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","file":"scripts/4599.15fcf57e95152dd997ba.js","sourcesContent":["import { Component } from '@verndale/core';\nimport { keyCode } from '../helpers';\n\nclass ShareRow extends Component {\n setupDefaults() {\n this.dom = {\n trigger: this.el.querySelector('.share-row__icon-button[aria-controls]'),\n menu: this.el.querySelector('.share-row__menu'),\n link: this.el.querySelector(\n '.share-row__icon-button[data-service=\"copylink\"]'\n ),\n email: this.el.querySelector(\n '.share-row__icon-button[data-service=\"email\"]'\n ),\n facebook: this.el.querySelector(\n '.share-row__icon-button[data-service=\"facebook\"]'\n ),\n twitter: this.el.querySelector(\n '.share-row__icon-button[data-service=\"twitter\"]'\n ),\n linkedin: this.el.querySelector(\n '.share-row__icon-button[data-service=\"linkedin\"]'\n ),\n print: this.el.querySelector(\n '.share-row__icon-button[data-service=\"print\"]'\n )\n };\n\n this.url = window.location.href;\n this.openLabel = this.dom.trigger.getAttribute('aria-label');\n this.closeLabel = this.dom.trigger.dataset.closeLabel;\n }\n\n addListeners() {\n window.addEventListener('click', e => this.handleClick(e));\n window.addEventListener('keydown', e => this.handleKeydown(e));\n this.dom.trigger.addEventListener(\n 'click',\n this.handleOpenShareRow.bind(this)\n );\n\n if (this.dom.link) {\n this.dom.link.addEventListener('click', this.copyLink.bind(this));\n }\n\n if (this.dom.email) {\n this.dom.email.addEventListener('click', this.emailShare.bind(this));\n }\n\n if (this.dom.facebook) {\n this.dom.facebook.addEventListener(\n 'click',\n this.facebookShare.bind(this)\n );\n }\n\n if (this.dom.twitter) {\n this.dom.twitter.addEventListener('click', this.twitterShare.bind(this));\n }\n\n if (this.dom.linkedin) {\n this.dom.linkedin.addEventListener(\n 'click',\n this.linkedinShare.bind(this)\n );\n }\n if (this.dom.print) {\n this.dom.print.addEventListener('click', this.handlePrint.bind(this));\n }\n }\n\n handleOpenShareRow() {\n this.dom.menu.classList.toggle('share-row__menu--show');\n if (this.dom.menu.classList.contains('share-row__menu--show')) {\n this.dom.trigger.setAttribute('aria-expanded', 'true');\n this.dom.trigger.setAttribute('aria-label', this.closeLabel);\n } else {\n this.dom.trigger.setAttribute('aria-expanded', 'false');\n this.dom.trigger.setAttribute('aria-label', this.openLabel);\n }\n }\n\n handleKeydown(e) {\n if (\n e.keyCode === keyCode.ESC &&\n this.dom.menu.classList.contains('share-row__menu--show')\n ) {\n this.handleOpenShareRow();\n }\n }\n\n handleClick(e) {\n if (\n !e.target.closest('.share-row__menu') &&\n !e.target.closest('.share-row__icon-button') &&\n this.dom.menu.classList.contains('share-row__menu--show')\n ) {\n this.handleOpenShareRow();\n }\n }\n\n emailShare() {\n this.openModal(`mailto:?body=${this.url}`);\n }\n\n twitterShare() {\n this.openModal(`https://twitter.com/share?url=${this.url}`);\n }\n\n linkedinShare() {\n this.openModal(\n `https://www.linkedin.com/sharing/share-offsite/?url=${this.url}`\n );\n }\n\n facebookShare() {\n this.openModal(`https://www.facebook.com/share.php?u=${this.url}`);\n }\n\n copyLink() {\n navigator.clipboard.writeText(this.url);\n }\n\n scrollTo(offset, callback) {\n const fixedOffset = offset.toFixed();\n\n const onScroll = () => {\n if (window.pageYOffset.toFixed() === fixedOffset) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n }\n\n window.addEventListener('scroll', onScroll);\n onScroll();\n\n window.scrollTo({\n top: offset,\n behavior: 'smooth'\n });\n }\n\n printShare() {\n // Print for Safari and firefox\n try {\n const printed = document.execCommand('print', false, null);\n\n if (!printed) {\n window.print();\n }\n\n } catch {\n window.print();\n }\n }\n\n openModal(url) {\n const winTop = window.innerHeight / 3 - 200;\n const winLeft = window.innerWidth / 2 - 300;\n\n window.open(\n url,\n 'sharer',\n `top=${winTop}, left=${winLeft}, width=600, height=400, scrollbars=no`\n );\n }\n\n handlePrint() {\n this.scrollTo(0, this.printShare);\n }\n}\n\nexport default ShareRow;\n","// /**\n// * debounce function\n// * Delays the processing of the event\n// */\nexport const debounce = (callback, wait) => {\n let timerId;\n return (...args) => {\n clearTimeout(timerId);\n timerId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n\nexport const throttle = (callback, wait) => {\n let inThrottle;\n return (...args) => {\n if (!inThrottle) {\n callback(...args);\n inThrottle = true;\n setTimeout(() => {\n inThrottle = false;\n }, wait);\n }\n };\n};\n// /**\n// * Checks if an element is focusable\n// *\n// * @param {Object} el - HTML element you want to check if it's focusable\n// */\nexport const isFocusable = el => {\n if (\n el.tabIndex > 0 ||\n (el.tabIndex === 0 && el.getAttribute('tabIndex') !== null)\n ) {\n return true;\n }\n\n if (el.disabled) {\n return false;\n }\n\n /* eslint-disable indent */\n switch (el.nodeName) {\n case 'A':\n return !!el.href && el.rel !== 'ignore';\n case 'INPUT':\n return el.type !== 'hidden' && el.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n /* eslint-enable indent */\n};\n\n// /**\n// * Key code list object\n// */\nexport const keyCode = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n\n// /**\n// * Breakpoints list object\n// */\nexport const breakpoints = {\n mobile: 360,\n tablet: 768,\n tabletLandscape: 1024,\n desktop: 1280,\n wide: 1600\n};\n\n// /**\n// * Bicentennial Swiper Object\n// */\n\nexport const bicentennialSwiperConfig = {\n allowTouchMove: false,\n autoHeight: false,\n rewind: true,\n slidesPerView: 1,\n spaceBetween: 0,\n speed: 1000,\n watchOverflow: true,\n watchSlidesProgress: true\n}\n\n// /**\n// * Convert Unicode characters inside a string to their actual characters\n// */\n\nexport const convertUnicode = (input) => {\n if (typeof input === 'string') {\n return input.replace(/\\\\+u([0-9a-fA-F]{4})/g, (a, b) =>\n String.fromCharCode(parseInt(b, 16)))\n }\n return input;\n};\n"],"sourceRoot":""}