-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnativeCopy.min.js
8 lines (8 loc) · 2.07 KB
/
nativeCopy.min.js
1
2
3
4
5
6
7
8
/*!
* NativeCopy
* native copy to clipboard
*
* author: Stefan Benicke <[email protected]>
* version: 2.1.0
*/
!function(t,c,a,e){var n,l={text:"",beforeCopy:d,onSuccess:d,onError:d},u="clipboardData"in c&&i(c.clipboardData,"DataTransfer"),p="clipboard"in navigator&&i(navigator.clipboard,"Clipboard")&&"function"==typeof navigator.clipboard.writeText;function o(t,e){var o,n,r=this,i=a.querySelector(t);if(null===i)throw new TypeError("Invalid trigger element: "+t);n=r,o=function(){(u?function(){var t,e=this,o=s(e),n=e.options;!1!==n.beforeCopy.call(e,o)&&(!1===(t=c.clipboardData.setData("Text",o))&&f(o),n[t?"onSuccess":"onError"].call(e,o))}:function(){var e,t=this,o=s(t),n=t.options;if(!1!==n.beforeCopy.call(t,o)){if(p)return navigator.clipboard.writeText(o).then(function(){n.onSuccess.call(t,o)},function(){f(o),n.onError.call(t,o)});f(o);try{e=a.execCommand("copy")}catch(t){e=!1}n[e?"onSuccess":"onError"].call(t,o)}}).call(n)},i.addEventListener("click",o,!1),r.options=function(t){var e,o,n,r,i=Object(t);for(e=1,o=arguments.length;e<o;++e)if("object"==typeof(n=arguments[e])&&null!==n)for(r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);return i}({},l,e),r.button=i,r.clickHandler=o}function r(){n&&(n.blur(),a.body.removeChild(n),n=e)}function f(t){var e,o;n?n.style.top=(c.pageYOffset||a.documentElement.scrollTop)+"px":(e="rtl"===a.documentElement.getAttribute("dir"),(n=a.createElement("textarea")).setAttribute("readonly",""),(o=n.style).fontSize="12pt",o.border="0",o.padding="0",o.margin="0",o.position="fixed",o[e?"right":"left"]="-9999px",o.top=(c.pageYOffset||a.documentElement.scrollTop)+"px",a.body.appendChild(n)),n.value=t,n.focus(),n.select()}function s(t){var e=t.options.text;return i(e,"String")?e:i(e,"Function")?e.call(this):""}function i(t,e){return Object.prototype.toString.call(t)==="[object "+e+"]"}function d(){}o.prototype.clearSelection=function(){return r(),this},o.prototype.destroy=function(){var t=this;return r(),t.button&&t.clickHandler&&(t.button.removeEventListener("click",t.clickHandler,!1),t.button=e,t.clickHandler=e),t},t.NativeCopy=o}(this,window,document);