(function(F){ const D = F.dom; F.copyButton = function f(e, opt){ if('string'===typeof e){ e = document.querySelector(e); } opt = F.mergeLastWins(f.defaultOptions, opt); if(opt.cssClass){ D.addClass(e, opt.cssClass); } var srcId, srcElem; if(opt.copyFromElement){ srcElem = opt.copyFromElement; }else if((srcId = opt.copyFromId || e.dataset.copyFromId)){ srcElem = document.querySelector('#'+srcId); } const extract = opt.extractText || ( undefined===srcElem.value ? ()=>srcElem.innerText : ()=>srcElem.value ); D.copyStyle(e, opt.style); e.addEventListener( 'click', function(ev){ ev.preventDefault(); ev.stopPropagation(); if(e.classList.contains('disabled')) return; const txt = extract.call(opt); if(txt && D.copyTextToClipboard(txt)){ e.dispatchEvent(new CustomEvent('text-copied',{ detail: {text: txt} })); } }, false ); if('function' === typeof opt.oncopy){ e.addEventListener('text-copied', opt.oncopy, false); } return e; }; F.copyButton.defaultOptions = { cssClass: 'copy-button', oncopy: D.flashOnce.eventHandler, style: {} }; })(window.fossil);