xref: /plugin/copy2clipboard/script.js (revision 4a4767308717c14f451352ab8371333d3ed9479e)
1*4a476730SSchplurtz le DéboulonnéjQuery(function() {
2*4a476730SSchplurtz le Déboulonné  // Copyright (C) 2020 Schplurtz le Déboulonné.
3*4a476730SSchplurtz le Déboulonné  // Free to use for any purpose except dismantle the sky.
4*4a476730SSchplurtz le Déboulonné  if(!navigator.clipboard)
5*4a476730SSchplurtz le Déboulonné    return;
6*4a476730SSchplurtz le Déboulonné  var messageBox=function( id, txt ) {
7*4a476730SSchplurtz le Déboulonné    const body=document.getElementsByTagName('body')[0];
8*4a476730SSchplurtz le Déboulonné    const msg=document.createElement('div');
9*4a476730SSchplurtz le Déboulonné    msg.setAttribute('id', id );
10*4a476730SSchplurtz le Déboulonné    msg.classList.add('cp2clipmsg');
11*4a476730SSchplurtz le Déboulonné    const content = document.createTextNode(txt);
12*4a476730SSchplurtz le Déboulonné    msg.appendChild(content);
13*4a476730SSchplurtz le Déboulonné    body.appendChild(msg);
14*4a476730SSchplurtz le Déboulonné    window.setTimeout(function() {
15*4a476730SSchplurtz le Déboulonné        jQuery("#"+id).fadeTo(500, 0).slideUp(500, function(){
16*4a476730SSchplurtz le Déboulonné            jQuery(this).remove();
17*4a476730SSchplurtz le Déboulonné        });
18*4a476730SSchplurtz le Déboulonné    }, 1500);
19*4a476730SSchplurtz le Déboulonné  }
20*4a476730SSchplurtz le Déboulonné  document.querySelectorAll('pre.code,pre.file').forEach(function(elem) {
21*4a476730SSchplurtz le Déboulonné    elem.classList.add('cp2clip');
22*4a476730SSchplurtz le Déboulonné    let cp = document.createElement('button');
23*4a476730SSchplurtz le Déboulonné    cp.setAttribute( 'title', LANG.plugins.copy2clipboard.title);
24*4a476730SSchplurtz le Déboulonné    //cp.appendChild(document.createTextNode('Copy to clipboard')) ;
25*4a476730SSchplurtz le Déboulonné    cp.classList.add('cp2clip');
26*4a476730SSchplurtz le Déboulonné    elem.appendChild(cp); // pre.appendChild
27*4a476730SSchplurtz le Déboulonné    cp.addEventListener('click', async event => {
28*4a476730SSchplurtz le Déboulonné      try {
29*4a476730SSchplurtz le Déboulonné        const text = event.target.parentElement.textContent;
30*4a476730SSchplurtz le Déboulonné        await navigator.clipboard.writeText(text);
31*4a476730SSchplurtz le Déboulonné        // event.target.textContent = 'Copied to clipboard'
32*4a476730SSchplurtz le Déboulonné        // console.log( "copié >>>" + text + "<<<" );
33*4a476730SSchplurtz le Déboulonné        messageBox('cp2clipok', LANG.plugins.copy2clipboard.copied);
34*4a476730SSchplurtz le Déboulonné      } catch (err) {
35*4a476730SSchplurtz le Déboulonné        console.error('Failed to copy!', err);
36*4a476730SSchplurtz le Déboulonné        messageBox('cp2clipnok', LANG.plugins.copy2clipboard.error);
37*4a476730SSchplurtz le Déboulonné      }
38*4a476730SSchplurtz le Déboulonné    })
39*4a476730SSchplurtz le Déboulonné  })
40*4a476730SSchplurtz le Déboulonné})
41*4a476730SSchplurtz le Déboulonné
42