{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./client/js/site/index.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/clipboard/dist/clipboard.js","webpack:///./client/js/utils/accordion.js","webpack:///./client/js/site/sticky.js","webpack:///./client/js/site/resizeListener.js","webpack:///./client/js/site/dataWrapperMessageListener.js","webpack:///./client/js/site/podcastTranscriptOpen.js","webpack:///./client/js/site/unmuteCustomHeaderVideo.js","webpack:///(webpack)/buildin/global.js","webpack:///./client/js/utils/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","document","addEventListener","setupFixedSidebar","fullHeader","querySelector","republishSticker","shareBarOffset","republishOffset","getBoundingClientRect","height","top","window","pageYOffset","lastScrollTop","removeClass","addStickyClass","scrollTopVal","documentElement","scrollTop","accordion","podcastTranscriptCheck","btns","querySelectorAll","ClipboardJS","forEach","each","onclick","anchorLinkHandler","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","objectToString","toString","nativeMax","Math","max","nativeMin","min","now","Date","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","arguments","this","toNumber","isObject","cancel","clearTimeout","flush","type","isObjectLike","isSymbol","other","valueOf","replace","isBinary","test","slice","factory","element","selectedText","nodeName","focus","isReadOnly","hasAttribute","setAttribute","select","setSelectionRange","length","removeAttribute","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","E","on","callback","ctx","e","push","fn","once","listener","off","_","emit","data","evtArr","len","evts","liveEvents","TinyEmitter","is","delegate","target","Error","string","node","destroy","removeEventListener","listenNode","nodeList","Array","listenNodeList","selector","body","listenSelector","HTMLElement","nodeType","String","closest","_delegate","useCapture","listenerFn","delegateTarget","elements","map","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","parentNode","__webpack_exports__","src_select","select_default","_typeof","iterator","obj","constructor","_createClass","defineProperties","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","clipboard_action","ClipboardAction","instance","_classCallCheck","resolveOptions","initSelection","action","container","emitter","text","trigger","selectFake","selectTarget","_this","isRTL","getAttribute","removeFake","fakeHandlerCallback","fakeHandler","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","appendChild","copyText","removeChild","succeeded","execCommand","err","handleResult","clearSelection","activeElement","blur","set","_action","_target","tiny_emitter","tiny_emitter_default","listen","listen_default","clipboard_typeof","clipboard_createClass","clipboard_Clipboard","_Emitter","Clipboard","clipboard_classCallCheck","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","listenClick","subClass","superClass","setPrototypeOf","_inherits","defaultAction","defaultTarget","defaultText","_this2","onClick","currentTarget","clipboardAction","getAttributeValue","actions","support","queryCommandSupported","a","suffix","attribute","wrapper","toggler","firstOpen","closeSibling","toggleList","index","parentToggler","parentElement","classList","add","toggle","children","child","contains","remove","elem","promoHeight","siteHeader","chlPromo","khnPromo","siteFooter","offsetHeight","className","offset","iframes","listeningFrames","getElementsByTagName","contentWindow","message","indexOf","source","keys","iframe","getElementById","checkbox","isChecked","checked","anchorLink","wp","customHeader","handlers","nativeVideo","videoContainer","l10n","settings","mute","unmute","button","innerHTML","video","muted","a11y","speak","muteSpeak","unmuteSpeak","g","toggleClass","toggleHandle","targetElement","distanceToTop","el","floor","preventDefault","targetID","match","targetAnchor","originalTop","scrollBy","left","behavior","checkIfDone","setInterval","atBottom","innerHeight","scrollY","tabIndex","history","pushState","clearInterval"],"mappings":"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","file":"js/global.bundle.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 117);\n","/**\n * Site-wide scripts.\n */\nimport throttle from 'lodash.throttle';\nimport ClipboardJS from 'clipboard';\nimport { anchorLinkHandler, removeClass } from '../utils';\nimport { accordion } from '../utils/accordion';\nimport { setupFixedSidebar, addStickyClass } from './sticky';\nimport resizeListener from './resizeListener';\nimport dataWrapperMessageListener from './dataWrapperMessageListener';\nimport podcastTranscriptOpen from './podcastTranscriptOpen';\nimport unmuteVideo from './unmuteCustomHeaderVideo';\n\nunmuteVideo();\n\n// Run site components\ndocument.addEventListener('DOMContentLoaded', () => {\n // call sidebar setup\n setupFixedSidebar('.left-sidebar');\n\n // Increase the share bar offset for articles with full width header images.\n const fullHeader = document.querySelector('.header-full-bg');\n const republishSticker = document.querySelector('.republish-sticker');\n let shareBarOffset = 40;\n let republishOffset = 40;\n\n if (fullHeader) {\n shareBarOffset += fullHeader.getBoundingClientRect().height;\n }\n\n if (republishSticker) {\n republishOffset = republishSticker\n .getBoundingClientRect().top - window.pageYOffset - 20;\n }\n\n /**\n * Sticky wrapper functions\n */\n let lastScrollTop = 0;\n const onScrollFunctions = () => {\n removeClass('.left-sidebar', 'not-top');\n addStickyClass('.share.vertical', 'sticky', shareBarOffset);\n addStickyClass('.republish-sticker', 'sticky', republishOffset);\n\n const scrollTopVal = window.pageYOffset\n || document.documentElement.scrollTop;\n // Enable special behavior for header on scroll up.\n // If user is scrolling down, handle sticky class.\n if (scrollTopVal > lastScrollTop) {\n addStickyClass('.header-site', 'scrolling', 120);\n // If user is scrolling up, restore the top scrolled state sooner.\n } else if (500 > scrollTopVal) {\n removeClass('.header-site', 'scrolling');\n }\n lastScrollTop = 0 >= scrollTopVal ? 0 : scrollTopVal; // For Mobile or negative scrolling\n };\n\n // throttle our scroll events here with lodash.throttle\n window.addEventListener('scroll', throttle(onScrollFunctions, 100), false);\n\n // accordion toggle for our newsletter index\n accordion('.article-list', '.header');\n\n resizeListener();\n\n dataWrapperMessageListener();\n\n const podcastTranscriptCheck = document.querySelector('#view-transcript');\n if (podcastTranscriptCheck) {\n podcastTranscriptOpen(podcastTranscriptCheck);\n }\n\n // clipboard button\n const btns = document.querySelectorAll('[data-clipboard-target]');\n const clipboard = new ClipboardJS(btns); // eslint-disable-line no-unused-vars\n\n const linksToAnchors = document.querySelectorAll('a[href^=\"#\"]');\n\n linksToAnchors.forEach((each) => (each.onclick = anchorLinkHandler)); // eslint-disable-line no-param-reassign, no-return-assign\n});\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /*/ (function(modules) { // webpackBootstrap\n/*/ \t// The module cache\n/*/ \tvar installedModules = {};\n/*/\n/*/ \t// The require function\n/*/ \tfunction __webpack_require__(moduleId) {\n/*/\n/*/ \t\t// Check if module is in cache\n/*/ \t\tif(installedModules[moduleId]) {\n/*/ \t\t\treturn installedModules[moduleId].exports;\n/*/ \t\t}\n/*/ \t\t// Create a new module (and put it into the cache)\n/*/ \t\tvar module = installedModules[moduleId] = {\n/*/ \t\t\ti: moduleId,\n/*/ \t\t\tl: false,\n/*/ \t\t\texports: {}\n/*/ \t\t};\n/*/\n/*/ \t\t// Execute the module function\n/*/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/*/\n/*/ \t\t// Flag the module as loaded\n/*/ \t\tmodule.l = true;\n/*/\n/*/ \t\t// Return the exports of the module\n/*/ \t\treturn module.exports;\n/*/ \t}\n/*/\n/*/\n/*/ \t// expose the modules object (__webpack_modules__)\n/*/ \t__webpack_require__.m = modules;\n/*/\n/*/ \t// expose the module cache\n/*/ \t__webpack_require__.c = installedModules;\n/*/\n/*/ \t// define getter function for harmony exports\n/*/ \t__webpack_require__.d = function(exports, name, getter) {\n/*/ \t\tif(!__webpack_require__.o(exports, name)) {\n/*/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/*/ \t\t}\n/*/ \t};\n/*/\n/*/ \t// define __esModule on exports\n/*/ \t__webpack_require__.r = function(exports) {\n/*/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/*/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/*/ \t\t}\n/*/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/*/ \t};\n/*/\n/*/ \t// create a fake namespace object\n/*/ \t// mode & 1: value is a module id, require it\n/*/ \t// mode & 2: merge all properties of value into the ns\n/*/ \t// mode & 4: return value when already ns object\n/*/ \t// mode & 8|1: behave like require\n/*/ \t__webpack_require__.t = function(value, mode) {\n/*/ \t\tif(mode & 1) value = __webpack_require__(value);\n/*/ \t\tif(mode & 8) return value;\n/*/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/*/ \t\tvar ns = Object.create(null);\n/*/ \t\t__webpack_require__.r(ns);\n/*/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/*/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/*/ \t\treturn ns;\n/*/ \t};\n/*/\n/*/ \t// getDefaultExport function for compatibility with non-harmony modules\n/*/ \t__webpack_require__.n = function(module) {\n/*/ \t\tvar getter = module && module.__esModule ?\n/*/ \t\t\tfunction getDefault() { return module['default']; } :\n/*/ \t\t\tfunction getModuleExports() { return module; };\n/*/ \t\t__webpack_require__.d(getter, 'a', getter);\n/*/ \t\treturn getter;\n/*/ \t};\n/*/\n/*/ \t// Object.prototype.hasOwnProperty.call\n/*/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/*/\n/*/ \t// __webpack_public_path__\n/*/ \t__webpack_require__.p = \"\";\n/*/\n/*/\n/*/ \t// Load entry module and return exports\n/*/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/*/ })\n/**/\n/*/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(3);\nvar delegate = __webpack_require__(4);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(5);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(0);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n\n// CONCATENATED MODULE: ./src/clipboard-action.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar clipboard_action_ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = select_default()(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = select_default()(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n document.activeElement.blur();\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\n/* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction);\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(1);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(2);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n\n// CONCATENATED MODULE: ./src/clipboard.js\nvar clipboard_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\nvar clipboard_Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n clipboard_classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n clipboard_createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new clipboard_action({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(tiny_emitter_default.a);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\n/* harmony default export */ var clipboard = __webpack_exports__[\"default\"] = (clipboard_Clipboard);\n\n/***/ })\n/*/ ])[\"default\"];\n});","/**\n * Accordion Function\n *\n * Takes a wrapper element and a toggler. The toggler will find the parent\n * element and toggle an open css class. This is best used in a ul > li\n * scenario where the li.header is the toggler and subsequent li.list-items\n * are being toggled.\n *\n * Basic Example:\n *\n * Script:\n * accordion('.wrapper', '.toggler');\n *\n * HTML:\n *
\n *
\n *

Toggle this

\n *
Contents to be toggled
\n *
\n *
...
\n *
\n *\n * @param {string} wrapper the element which wraps the accordion function\n * @param {string} toggler the toggler element used to toggle parent element\n * @param {bool} firstOpen whether to have the first accordion element open on load\n * @param {bool} closeSibling whether to close the sibling elements. Removes sibling open class\n * @return {void}\n */\nexport function accordion(wrapper, toggler, firstOpen = 1, closeSibling = 1) {\n const toggleList = [...document.querySelectorAll(`${wrapper} ${toggler}`)];\n\n if (toggleList) {\n toggleList.forEach((e, index) => {\n const parentToggler = e.parentElement;\n // Open the first element by default\n if (0 === index && firstOpen) {\n parentToggler.classList.add('open');\n }\n\n e.onclick = () => {\n parentToggler.classList.toggle('open');\n\n // close siblings\n if (closeSibling) {\n [...parentToggler.parentNode.children].forEach((child) => {\n if (child !== parentToggler && child.classList.contains('open')) {\n child.classList.remove('open');\n }\n });\n }\n };\n });\n }\n}\n\nexport default accordion;\n","/**\n * Setup the sticky sidebar the Data Attributes for the bootstrap affix feature,\n * offsets the top to window in the elements original position.\n * For this function to work the selector element needs to\n * have a data-spy=\"affix\" attribute added.\n *\n * @see: http://getbootstrap.com/javascript/#affix\n *\n * @param {string} selector the sidebar element to target\n */\nexport function setupFixedSidebar(selector) {\n const elem = document.querySelector(selector);\n\n if (! elem) {\n return;\n }\n\n let promoHeight = 0;\n\n const siteHeader = document.querySelector('.header-site');\n const chlPromo = document.querySelector('.chcf-promo');\n const khnPromo = document.querySelector('.promo-homepage');\n const siteFooter = document.querySelector('.footer-site');\n\n // add top offset data attribute\n elem.setAttribute(\n 'data-offset-top',\n (window.pageYOffset + (elem.getBoundingClientRect().top)) - 40\n );\n\n // if page is reloaded while scrolled down the page add a not-top class\n if (! siteHeader.classList.contains('scrolling')) {\n elem.classList.add('not-top');\n }\n\n // class used for CHL\n if (chlPromo) {\n promoHeight = chlPromo.offsetHeight + 45;\n }\n\n // class used for KHN\n if (khnPromo) {\n promoHeight = khnPromo.offsetHeight;\n }\n\n if (siteFooter) {\n elem.setAttribute(\n 'data-offset-bottom',\n (siteFooter.offsetHeight + promoHeight)\n );\n }\n}\n\n/**\n * Sticky function for adding a sticky class with an offset\n *\n * @param {string} selector the selector to target\n * @param {string} className the class name to toggle\n * @param {int} offset the offset from the top\n */\nexport function addStickyClass(selector, className, offset) {\n const elem = document.querySelector(selector);\n\n if (! elem) {\n return;\n }\n\n if (window.pageYOffset >= offset) {\n elem.classList.add(className);\n } else {\n elem.classList.remove(className);\n }\n}\n\nexport default {\n setupFixedSidebar,\n addStickyClass,\n};\n","/**\n * Listen for height changes reported by iframes.\n *\n * Example trigger:\n * setTimeout(function() {\n * if (window.parent) {\n * window.parent.postMessage( {\n * height: document.body.scrollHeight,\n * message: 'resize:height'\n * }, '*' );\n * }\n * }, 500);\n */\nexport default function iframeListener() {\n let iframes = [];\n\n const listeningFrames = [];\n\n const handleMessage = (e) => {\n if ('resize:height' === e.data.message && e.data.height) {\n const i = listeningFrames.indexOf(e.source);\n\n if (0 <= i && 'object' === typeof iframes[i]) {\n iframes[i].height = e.data.height;\n }\n }\n };\n\n // Map iframes to their content window objects.\n iframes = document.getElementsByTagName('iframe');\n for (let i = 0; i < iframes.length; i += 1) {\n listeningFrames.push(iframes[i].contentWindow);\n }\n\n // Listen for resize postMessages.\n window.addEventListener('message', handleMessage, false);\n}\n","export default function dataWrapperMessageListener() {\n window.addEventListener('message', (node) => {\n if ('undefined' !== typeof node.data['datawrapper-height']) {\n Object.keys(node.data['datawrapper-height']).forEach((key) => {\n const iframe = document.getElementById(`datawrapper-chart-${key}`);\n\n if (iframe) {\n iframe.style.height = `${node.data['datawrapper-height'][key]}px`;\n }\n });\n }\n });\n}\n","/**\n * Open Transcript block for Ñî¹óåú´«Ã½Ò•îl if the link is clicked.\n *\n */\nexport default function podcastTranscriptOpen(checkbox) {\n const isChecked = checkbox.checked;\n const anchorLink = document.querySelector('.view-transcript-anchor-link');\n\n const openTranscript = () => {\n if (! isChecked) {\n // eslint-disable-next-line no-param-reassign\n checkbox.checked = true;\n }\n };\n\n anchorLink.addEventListener('click', openTranscript());\n}\n","/**\n * Add mute/unmute button to custom header video.\n */\nexport default () => {\n document.addEventListener('wp-custom-header-video-loaded', () => {\n if (! window.wp.customHeader.handlers.nativeVideo) {\n return;\n }\n\n const videoContainer = window.wp.customHeader.handlers.nativeVideo.container;\n if (! videoContainer) {\n return;\n }\n\n const l10n = window.wp.customHeader.handlers.nativeVideo.settings.l10n;\n if (! l10n.mute || ! l10n.unmute) {\n return;\n }\n\n const button = document.createElement('button');\n button.innerHTML = l10n.unmute;\n button.classList.add('wp-custom-header-video-button');\n button.classList.add('wp-custom-header-video-mute');\n videoContainer.appendChild(button);\n\n const video = videoContainer.querySelector('video');\n button.onclick = () => {\n video.muted = ! video.muted;\n button.innerHTML = video.muted ? l10n.unmute : l10n.mute;\n if ('a11y' in window.wp) {\n if (video.muted) {\n window.wp.a11y.speak(l10n.muteSpeak);\n } else {\n window.wp.a11y.speak(l10n.unmuteSpeak);\n }\n }\n };\n });\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Safely removes a class name from an element\n */\nexport function removeClass(selector, className) {\n const elem = document.querySelector(selector);\n\n // check for element first\n if (! elem) {\n return;\n }\n\n if (elem.classList.contains(className)) {\n elem.classList.remove(className);\n }\n}\n\n/**\n * Toggle Function\n * @param {string} toggler The toggle handle\n * @param {string} target Element in which to toggle the class\n * @param {string} toggleClass Class name to toggle on or off\n */\nexport function toggle(toggler, target, toggleClass = 'toggled') {\n const toggleHandle = document.querySelector(toggler);\n const targetElement = document.querySelector(target);\n\n if (toggleHandle && targetElement) {\n toggleHandle.addEventListener('click', () => {\n targetElement.classList.toggle(toggleClass);\n });\n }\n}\n\nexport function anchorLinkHandler(e) {\n // Bail if no event is triggered.\n if (! e) {\n return;\n }\n\n // Return distance.\n const distanceToTop = (el) => Math.floor(el.getBoundingClientRect().top);\n // Prevent default.\n e.preventDefault();\n\n // Get target.\n const targetID = this.getAttribute('href');\n\n // Bail if no ID exists.\n // Verify that the target is a valid anchor reference.\n if (! targetID || ! targetID.match(/^#[^#]+$/)) {\n return;\n }\n\n // Bail if no anchor exists.\n const targetAnchor = document.querySelector(targetID);\n if (! targetAnchor) {\n return;\n }\n\n // Get anchor distance.\n const originalTop = distanceToTop(targetAnchor);\n\n window.scrollBy({ top: originalTop - 100, left: 0, behavior: 'smooth' });\n\n const checkIfDone = setInterval(() => {\n const atBottom = window.innerHeight + window.scrollY\n >= document.body.offsetHeight - 2;\n if (0 === distanceToTop(targetAnchor) || atBottom) {\n targetAnchor.tabIndex = '-1';\n targetAnchor.focus();\n window.history.pushState(', ', targetID);\n clearInterval(checkIfDone);\n }\n }, 100);\n}\n\nexport default {\n anchorLinkHandler,\n removeClass,\n toggle,\n};\n"],"sourceRoot":""}