{"version":3,"file":"/js/clipboard.js","mappings":"sBAKA,GAAuB,oBAAZA,UAA4BA,QAAQC,UAAUC,QAAS,CAC9D,IAAIC,EAAQH,QAAQC,UAEpBE,EAAMD,QAAUC,EAAMC,iBACND,EAAME,oBACNF,EAAMG,mBACNH,EAAMI,kBACNJ,EAAMK,sBAoB1BC,EAAOC,QAVP,SAAkBC,EAASC,GACvB,KAAOD,GAvBc,IAuBHA,EAAQE,UAAiC,CACvD,GAA+B,mBAApBF,EAAQT,SACfS,EAAQT,QAAQU,GAClB,OAAOD,EAETA,EAAUA,EAAQG,c,eC5B1B,IAAIC,EAAU,EAAQ,MAYtB,SAASC,EAAUL,EAASC,EAAUK,EAAMC,EAAUC,GAClD,IAAIC,EAAaC,EAASC,MAAMC,KAAMC,WAItC,OAFAb,EAAQc,iBAAiBR,EAAMG,EAAYD,GAEpC,CACHO,QAAS,WACLf,EAAQgB,oBAAoBV,EAAMG,EAAYD,KAgD1D,SAASE,EAASV,EAASC,EAAUK,EAAMC,GACvC,OAAO,SAASU,GACZA,EAAEC,eAAiBd,EAAQa,EAAEE,OAAQlB,GAEjCgB,EAAEC,gBACFX,EAASa,KAAKpB,EAASiB,IAKnCnB,EAAOC,QA3CP,SAAkBsB,EAAUpB,EAAUK,EAAMC,EAAUC,GAElD,MAAyC,mBAA9Ba,EAASP,iBACTT,EAAUM,MAAM,KAAME,WAIb,mBAATP,EAGAD,EAAUiB,KAAK,KAAMC,UAAUZ,MAAM,KAAME,YAI9B,iBAAbQ,IACPA,EAAWE,SAASC,iBAAiBH,IAIlCI,MAAMnC,UAAUoC,IAAIN,KAAKC,GAAU,SAAUrB,GAChD,OAAOK,EAAUL,EAASC,EAAUK,EAAMC,EAAUC,S,aChD5DT,EAAQ4B,KAAO,SAASC,GACpB,YAAiBC,IAAVD,GACAA,aAAiBE,aACE,IAAnBF,EAAM1B,UASjBH,EAAQgC,SAAW,SAASH,GACxB,IAAItB,EAAO0B,OAAO1C,UAAU2C,SAASb,KAAKQ,GAE1C,YAAiBC,IAAVD,IACU,sBAATtB,GAAyC,4BAATA,IAChC,WAAYsB,IACK,IAAjBA,EAAMM,QAAgBnC,EAAQ4B,KAAKC,EAAM,MASrD7B,EAAQoC,OAAS,SAASP,GACtB,MAAwB,iBAAVA,GACPA,aAAiBQ,QAS5BrC,EAAQsC,GAAK,SAAST,GAGlB,MAAgB,sBAFLI,OAAO1C,UAAU2C,SAASb,KAAKQ,K,eC7C9C,IAAIU,EAAK,EAAQ,MACbC,EAAW,EAAQ,MA6FvBzC,EAAOC,QAlFP,SAAgBoB,EAAQb,EAAMC,GAC1B,IAAKY,IAAWb,IAASC,EACrB,MAAM,IAAIiC,MAAM,8BAGpB,IAAKF,EAAGH,OAAO7B,GACX,MAAM,IAAImC,UAAU,oCAGxB,IAAKH,EAAGD,GAAG9B,GACP,MAAM,IAAIkC,UAAU,qCAGxB,GAAIH,EAAGX,KAAKR,GACR,OAsBR,SAAoBQ,EAAMrB,EAAMC,GAG5B,OAFAoB,EAAKb,iBAAiBR,EAAMC,GAErB,CACHQ,QAAS,WACLY,EAAKX,oBAAoBV,EAAMC,KA3B5BmC,CAAWvB,EAAQb,EAAMC,GAE/B,GAAI+B,EAAGP,SAASZ,GACjB,OAsCR,SAAwBY,EAAUzB,EAAMC,GAKpC,OAJAkB,MAAMnC,UAAUqD,QAAQvB,KAAKW,GAAU,SAASJ,GAC5CA,EAAKb,iBAAiBR,EAAMC,MAGzB,CACHQ,QAAS,WACLU,MAAMnC,UAAUqD,QAAQvB,KAAKW,GAAU,SAASJ,GAC5CA,EAAKX,oBAAoBV,EAAMC,QA9ChCqC,CAAezB,EAAQb,EAAMC,GAEnC,GAAI+B,EAAGH,OAAOhB,GACf,OA0DR,SAAwBlB,EAAUK,EAAMC,GACpC,OAAOgC,EAAShB,SAASsB,KAAM5C,EAAUK,EAAMC,GA3DpCuC,CAAe3B,EAAQb,EAAMC,GAGpC,MAAM,IAAIkC,UAAU,+E,SCO5B3C,EAAOC,QA1CP,SAAgBC,GACZ,IAAI+C,EAEJ,GAAyB,WAArB/C,EAAQgD,SACRhD,EAAQiD,QAERF,EAAe/C,EAAQ4B,WAEtB,GAAyB,UAArB5B,EAAQgD,UAA6C,aAArBhD,EAAQgD,SAAyB,CACtE,IAAIE,EAAalD,EAAQmD,aAAa,YAEjCD,GACDlD,EAAQoD,aAAa,WAAY,IAGrCpD,EAAQqD,SACRrD,EAAQsD,kBAAkB,EAAGtD,EAAQ4B,MAAMM,QAEtCgB,GACDlD,EAAQuD,gBAAgB,YAG5BR,EAAe/C,EAAQ4B,UAEtB,CACG5B,EAAQmD,aAAa,oBACrBnD,EAAQiD,QAGZ,IAAIO,EAAYC,OAAOC,eACnBC,EAAQpC,SAASqC,cAErBD,EAAME,mBAAmB7D,GACzBwD,EAAUM,kBACVN,EAAUO,SAASJ,GAEnBZ,EAAeS,EAAUvB,WAG7B,OAAOc,I,SCvCX,SAASiB,KAKTA,EAAE1E,UAAY,CACZ2E,GAAI,SAAUC,EAAM3D,EAAU4D,GAC5B,IAAIlD,EAAIL,KAAKK,IAAML,KAAKK,EAAI,IAO5B,OALCA,EAAEiD,KAAUjD,EAAEiD,GAAQ,KAAKE,KAAK,CAC/B/B,GAAI9B,EACJ4D,IAAKA,IAGAvD,MAGTyD,KAAM,SAAUH,EAAM3D,EAAU4D,GAC9B,IAAIG,EAAO1D,KACX,SAASF,IACP4D,EAAKC,IAAIL,EAAMxD,GACfH,EAASI,MAAMwD,EAAKtD,WAItB,OADAH,EAAS8D,EAAIjE,EACNK,KAAKqD,GAAGC,EAAMxD,EAAUyD,IAGjCM,KAAM,SAAUP,GAMd,IALA,IAAIQ,EAAO,GAAGC,MAAMvD,KAAKP,UAAW,GAChC+D,IAAWhE,KAAKK,IAAML,KAAKK,EAAI,KAAKiD,IAAS,IAAIS,QACjDE,EAAI,EACJC,EAAMF,EAAO1C,OAET2C,EAAIC,EAAKD,IACfD,EAAOC,GAAGxC,GAAG1B,MAAMiE,EAAOC,GAAGV,IAAKO,GAGpC,OAAO9D,MAGT2D,IAAK,SAAUL,EAAM3D,GACnB,IAAIU,EAAIL,KAAKK,IAAML,KAAKK,EAAI,IACxB8D,EAAO9D,EAAEiD,GACTc,EAAa,GAEjB,GAAID,GAAQxE,EACV,IAAK,IAAIsE,EAAI,EAAGC,EAAMC,EAAK7C,OAAQ2C,EAAIC,EAAKD,IACtCE,EAAKF,GAAGxC,KAAO9B,GAAYwE,EAAKF,GAAGxC,GAAGmC,IAAMjE,GAC9CyE,EAAWZ,KAAKW,EAAKF,IAY3B,OAJCG,EAAiB,OACd/D,EAAEiD,GAAQc,SACH/D,EAAEiD,GAENtD,OAIXd,EAAOC,QAAUiE,EACjBlE,EAAOC,QAAQkF,YAAcjB,ICjEzBkB,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBvD,IAAjBwD,EACH,OAAOA,EAAatF,QAGrB,IAAID,EAASoF,EAAyBE,GAAY,CAGjDrF,QAAS,IAOV,OAHAuF,EAAoBF,GAAUtF,EAAQA,EAAOC,QAASoF,GAG/CrF,EAAOC,QCpBfoF,EAAoBI,EAAKzF,IACxB,IAAI0F,EAAS1F,GAAUA,EAAO2F,WAC7B,IAAO3F,EAAiB,QACxB,IAAM,EAEP,OADAqF,EAAoBO,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRL,EAAoBO,EAAI,CAAC3F,EAAS6F,KACjC,IAAI,IAAIC,KAAOD,EACXT,EAAoBW,EAAEF,EAAYC,KAASV,EAAoBW,EAAE/F,EAAS8F,IAC5E7D,OAAO+D,eAAehG,EAAS8F,EAAK,CAAEG,YAAY,EAAMC,IAAKL,EAAWC,MCJ3EV,EAAoBW,EAAI,CAACI,EAAKC,IAAUnE,OAAO1C,UAAU8G,eAAehF,KAAK8E,EAAKC,G,gFC4NlF,QAtNA,MAIEE,YAAYC,GACV1F,KAAK2F,eAAeD,GACpB1F,KAAK4F,gBAOPD,eAAeD,EAAU,IACvB1F,KAAK6F,OAASH,EAAQG,OACtB7F,KAAK8F,UAAYJ,EAAQI,UACzB9F,KAAK+F,QAAUL,EAAQK,QACvB/F,KAAKO,OAASmF,EAAQnF,OACtBP,KAAKgG,KAAON,EAAQM,KACpBhG,KAAKiG,QAAUP,EAAQO,QAEvBjG,KAAKmC,aAAe,GAOtByD,gBACM5F,KAAKgG,KACPhG,KAAKkG,aACIlG,KAAKO,QACdP,KAAKmG,eAOTC,oBACE,MAAMC,EAAyD,QAAjD1F,SAAS2F,gBAAgBC,aAAa,OAEpDvG,KAAKwG,SAAW7F,SAAS8F,cAAc,YAEvCzG,KAAKwG,SAASE,MAAMC,SAAW,OAE/B3G,KAAKwG,SAASE,MAAME,OAAS,IAC7B5G,KAAKwG,SAASE,MAAMG,QAAU,IAC9B7G,KAAKwG,SAASE,MAAMI,OAAS,IAE7B9G,KAAKwG,SAASE,MAAMK,SAAW,WAC/B/G,KAAKwG,SAASE,MAAML,EAAQ,QAAU,QAAU,UAEhD,IAAIW,EAAYnE,OAAOoE,aAAetG,SAAS2F,gBAAgBY,UAM/D,OALAlH,KAAKwG,SAASE,MAAMS,IAAM,GAAGH,MAE7BhH,KAAKwG,SAAShE,aAAa,WAAY,IACvCxC,KAAKwG,SAASxF,MAAQhB,KAAKgG,KAEpBhG,KAAKwG,SAOdN,aACE,MAAMM,EAAWxG,KAAKoG,oBAEtBpG,KAAKoH,oBAAsB,IAAMpH,KAAKqH,aAEtCrH,KAAKsH,YACHtH,KAAK8F,UAAU5F,iBAAiB,QAASF,KAAKoH,uBAC9C,EAEFpH,KAAK8F,UAAUyB,YAAYf,GAE3BxG,KAAKmC,aAAe,IAAOqE,GAE3BxG,KAAKwH,WAELxH,KAAKqH,aAOPA,aACMrH,KAAKsH,cACPtH,KAAK8F,UAAU1F,oBAAoB,QAASJ,KAAKoH,qBACjDpH,KAAKsH,YAAc,KACnBtH,KAAKoH,oBAAsB,MAGzBpH,KAAKwG,WACPxG,KAAK8F,UAAU2B,YAAYzH,KAAKwG,UAChCxG,KAAKwG,SAAW,MAOpBL,eACEnG,KAAKmC,aAAe,IAAOnC,KAAKO,QAChCP,KAAKwH,WAMPA,WACE,IAAIE,EAEJ,IACEA,EAAY/G,SAASgH,YAAY3H,KAAK6F,QACtC,MAAO+B,GACPF,GAAY,EAGd1H,KAAK6H,aAAaH,GAOpBG,aAAaH,GACX1H,KAAK+F,QAAQlC,KAAK6D,EAAY,UAAY,QAAS,CACjD7B,OAAQ7F,KAAK6F,OACbG,KAAMhG,KAAKmC,aACX8D,QAASjG,KAAKiG,QACd6B,eAAgB9H,KAAK8H,eAAepH,KAAKV,QAO7C8H,iBACM9H,KAAKiG,SACPjG,KAAKiG,QAAQ5D,QAEf1B,SAASoH,cAAcC,OACvBnF,OAAOC,eAAeI,kBAOpB2C,WAAOA,EAAS,QAGlB,GAFA7F,KAAKiI,QAAUpC,EAEM,SAAjB7F,KAAKiI,SAAuC,QAAjBjI,KAAKiI,QAClC,MAAM,IAAIrG,MAAM,sDAQhBiE,aACF,OAAO7F,KAAKiI,QAQV1H,WAAOA,GACT,QAAeU,IAAXV,EAAsB,CACxB,IAAIA,GAA4B,iBAAXA,GAA2C,IAApBA,EAAOjB,SAkBjD,MAAM,IAAIsC,MAAM,+CAjBhB,GAAoB,SAAhB5B,KAAK6F,QAAqBtF,EAAOgC,aAAa,YAChD,MAAM,IAAIX,MACR,qFAIJ,GACkB,QAAhB5B,KAAK6F,SACJtF,EAAOgC,aAAa,aAAehC,EAAOgC,aAAa,aAExD,MAAM,IAAIX,MACR,0GAIJ5B,KAAKkI,QAAU3H,GAWjBA,aACF,OAAOP,KAAKkI,QAMd/H,UACEH,KAAKqH,eC/MT,SAASc,EAAkBC,EAAQhJ,GACjC,MAAMiJ,EAAY,kBAAkBD,IAEpC,GAAKhJ,EAAQmD,aAAa8F,GAI1B,OAAOjJ,EAAQmH,aAAa8B,GAO9B,MAAMC,UAAkB,KAKtB7C,YAAYQ,EAASP,GACnB6C,QAEAvI,KAAK2F,eAAeD,GACpB1F,KAAKwI,YAAYvC,GAQnBN,eAAeD,EAAU,IACvB1F,KAAK6F,OACuB,mBAAnBH,EAAQG,OACXH,EAAQG,OACR7F,KAAKyI,cACXzI,KAAKO,OACuB,mBAAnBmF,EAAQnF,OACXmF,EAAQnF,OACRP,KAAK0I,cACX1I,KAAKgG,KACqB,mBAAjBN,EAAQM,KAAsBN,EAAQM,KAAOhG,KAAK2I,YAC3D3I,KAAK8F,UAC0B,iBAAtBJ,EAAQI,UAAyBJ,EAAQI,UAAYnF,SAASsB,KAOzEuG,YAAYvC,GACVjG,KAAKF,SAAW,IAAOmG,EAAS,SAAU5F,GAAML,KAAK4I,QAAQvI,KAO/DuI,QAAQvI,GACN,MAAM4F,EAAU5F,EAAEC,gBAAkBD,EAAEwI,cAElC7I,KAAK8I,kBACP9I,KAAK8I,gBAAkB,MAGzB9I,KAAK8I,gBAAkB,IAAI,EAAgB,CACzCjD,OAAQ7F,KAAK6F,OAAOI,GACpB1F,OAAQP,KAAKO,OAAO0F,GACpBD,KAAMhG,KAAKgG,KAAKC,GAChBH,UAAW9F,KAAK8F,UAChBG,QAAAA,EACAF,QAAS/F,OAQbyI,cAAcxC,GACZ,OAAOkC,EAAkB,SAAUlC,GAOrCyC,cAAczC,GACZ,MAAM5G,EAAW8I,EAAkB,SAAUlC,GAE7C,GAAI5G,EACF,OAAOsB,SAASoI,cAAc1J,GASlC2J,mBAAmBnD,EAAS,CAAC,OAAQ,QACnC,MAAMoD,EAA4B,iBAAXpD,EAAsB,CAACA,GAAUA,EACxD,IAAIqD,IAAYvI,SAASwI,sBAMzB,OAJAF,EAAQlH,SAAS8D,IACfqD,EAAUA,KAAavI,SAASwI,sBAAsBtD,MAGjDqD,EAOTP,YAAY1C,GACV,OAAOkC,EAAkB,OAAQlC,GAMnC9F,UACEH,KAAKF,SAASK,UAEVH,KAAK8I,kBACP9I,KAAK8I,gBAAgB3I,UACrBH,KAAK8I,gBAAkB,OAK7B,UC3IAjG,OAAOuG,YAAcA,G","sources":["webpack://indoconnex/./node_modules/delegate/src/closest.js","webpack://indoconnex/./node_modules/delegate/src/delegate.js","webpack://indoconnex/./node_modules/good-listener/src/is.js","webpack://indoconnex/./node_modules/good-listener/src/listen.js","webpack://indoconnex/./node_modules/select/src/select.js","webpack://indoconnex/./node_modules/tiny-emitter/index.js","webpack://indoconnex/webpack/bootstrap","webpack://indoconnex/webpack/runtime/compat get default export","webpack://indoconnex/webpack/runtime/define property getters","webpack://indoconnex/webpack/runtime/hasOwnProperty shorthand","webpack://indoconnex/./node_modules/clipboard/src/clipboard-action.js","webpack://indoconnex/./node_modules/clipboard/src/clipboard.js","webpack://indoconnex/./resources/js/clipboard.js"],"sourcesContent":["var 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","var closest = require('./closest');\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 * 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","var is = require('./is');\nvar delegate = require('delegate');\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","function 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","function 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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import select from 'select';\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\nclass ClipboardAction {\n /**\n * @param {Object} options\n */\n constructor(options) {\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n resolveOptions(options = {}) {\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 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 */\n createFakeElement() {\n const isRTL = document.documentElement.getAttribute('dir') === 'rtl';\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 let 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 return this.fakeElem;\n }\n\n /**\n * Get's the value of fakeElem,\n * and makes a selection on it.\n */\n selectFake() {\n const fakeElem = this.createFakeElement();\n\n this.fakeHandlerCallback = () => this.removeFake();\n\n this.fakeHandler =\n this.container.addEventListener('click', this.fakeHandlerCallback) ||\n true;\n\n this.container.appendChild(fakeElem);\n\n this.selectedText = select(fakeElem);\n\n this.copyText();\n\n this.removeFake();\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 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 selectTarget() {\n this.selectedText = select(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n copyText() {\n let succeeded;\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 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 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 set action(action = 'copy') {\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 get action() {\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 set target(target) {\n if (target !== undefined) {\n if (target && typeof target === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error(\n 'Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute'\n );\n }\n\n if (\n this.action === 'cut' &&\n (target.hasAttribute('readonly') || target.hasAttribute('disabled'))\n ) {\n throw new Error(\n 'Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes'\n );\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 get target() {\n return this._target;\n }\n\n /**\n * Destroy lifecycle.\n */\n destroy() {\n this.removeFake();\n }\n}\n\nexport default ClipboardAction;\n","import Emitter from 'tiny-emitter';\nimport listen from 'good-listener';\nimport ClipboardAction from './clipboard-action';\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\nfunction getAttributeValue(suffix, element) {\n const attribute = `data-clipboard-${suffix}`;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\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 */\nclass Clipboard extends Emitter {\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n constructor(trigger, options) {\n super();\n\n this.resolveOptions(options);\n this.listenClick(trigger);\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 resolveOptions(options = {}) {\n this.action =\n typeof options.action === 'function'\n ? options.action\n : this.defaultAction;\n this.target =\n typeof options.target === 'function'\n ? options.target\n : this.defaultTarget;\n this.text =\n typeof options.text === 'function' ? options.text : this.defaultText;\n this.container =\n 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 listenClick(trigger) {\n this.listener = listen(trigger, 'click', (e) => this.onClick(e));\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n onClick(e) {\n const trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new ClipboardAction({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger,\n emitter: this,\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n defaultTarget(trigger) {\n const 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 static isSupported(action = ['copy', 'cut']) {\n const actions = typeof action === 'string' ? [action] : action;\n let support = !!document.queryCommandSupported;\n\n actions.forEach((action) => {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n}\n\nexport default Clipboard;\n","import ClipboardJS from 'clipboard/src/clipboard'\n\nwindow.ClipboardJS = ClipboardJS\n"],"names":["Element","prototype","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","module","exports","element","selector","nodeType","parentNode","closest","_delegate","type","callback","useCapture","listenerFn","listener","apply","this","arguments","addEventListener","destroy","removeEventListener","e","delegateTarget","target","call","elements","bind","document","querySelectorAll","Array","map","node","value","undefined","HTMLElement","nodeList","Object","toString","length","string","String","fn","is","delegate","Error","TypeError","listenNode","forEach","listenNodeList","body","listenSelector","selectedText","nodeName","focus","isReadOnly","hasAttribute","setAttribute","select","setSelectionRange","removeAttribute","selection","window","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","E","on","name","ctx","push","once","self","off","_","emit","data","slice","evtArr","i","len","evts","liveEvents","TinyEmitter","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","obj","prop","hasOwnProperty","constructor","options","resolveOptions","initSelection","action","container","emitter","text","trigger","selectFake","selectTarget","createFakeElement","isRTL","documentElement","getAttribute","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","pageYOffset","scrollTop","top","fakeHandlerCallback","removeFake","fakeHandler","appendChild","copyText","removeChild","succeeded","execCommand","err","handleResult","clearSelection","activeElement","blur","_action","_target","getAttributeValue","suffix","attribute","Clipboard","super","listenClick","defaultAction","defaultTarget","defaultText","onClick","currentTarget","clipboardAction","querySelector","static","actions","support","queryCommandSupported","ClipboardJS"],"sourceRoot":""}