UNPKG

@dracoui/ember

Version:

Draco Design System for Ember

3 lines (2 loc) 2.05 kB
import{modifier as e}from"ember-modifier";import{assert as t,warn as r}from"@ember/debug";const o=e=>{let r="";return"string"==typeof e?r=e:"number"==typeof e||"bigint"==typeof e?r=e.toString():t("`draco-clipboard` modifier - `text` argument must be a string or number - provided: "+typeof e),r},i=e=>{if("string"==typeof e){const t=document.querySelector(e);return t||void console.error("`draco-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string",e)}if(e instanceof HTMLElement)return e;e instanceof NodeList?t("`draco-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes"):t("`draco-clipboard` modifier - `target` argument must be a string or a DOM node - provided: "+typeof e)},n=e=>e instanceof HTMLElement?e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?e.value:e.innerText:"",a=async e=>{try{return await navigator.clipboard.writeText(e),!0}catch(t){if(!navigator.clipboard)try{const t=await import("clipboard-polyfill");return await t.writeText(e),!0}catch(e){return r(`copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(e)}`,{id:"draco-clipboard.write-text-to-clipboard.catch-error"}),!1}return!1}},c=async(e,r)=>{let c="";if(void 0!==e)c=o(e);else if(r){const e=i(r);e&&(c=n(e))}else t("`draco-clipboard` modifier - either a `text` or a `target` argument is required");return await a(c)};var d=e(((e,r,{text:o,target:i,onSuccess:n,onError:a})=>{t("`draco-clipboard` modifier - the modifier must be applied to an element",e);const d=async e=>{const t=e.currentTarget;await c(o,i)?"function"==typeof n&&n({trigger:t,text:o,target:i}):"function"==typeof a&&a({trigger:t,text:o,target:i})};return e.addEventListener("click",d),()=>{e.removeEventListener("click",d)}}));export{c as copyToClipboard,d as default,i as getTargetElement,o as getTextToCopy,n as getTextToCopyFromTargetElement,a as writeTextToClipboard}; //# sourceMappingURL=draco-clipboard.js.map