index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import Clipboard from 'clipboard';
  2. export default (opts) => {
  3. // default appendToBody true
  4. const appendToBody = (opts === null || opts === void 0 ? void 0 : opts.appendToBody) === undefined ? true : opts.appendToBody;
  5. return {
  6. toClipboard(text, container) {
  7. return new Promise((resolve, reject) => {
  8. // make fake element
  9. const fakeEl = document.createElement('button');
  10. // setup a new Clipboard.js
  11. const clipboard = new Clipboard(fakeEl, {
  12. text: () => text,
  13. action: () => 'copy',
  14. container: container !== undefined ? container : document.body
  15. });
  16. clipboard.on('success', (e) => {
  17. clipboard.destroy();
  18. resolve(e);
  19. });
  20. clipboard.on('error', (e) => {
  21. clipboard.destroy();
  22. reject(e);
  23. });
  24. // appendToBody fixes IE
  25. if (appendToBody)
  26. document.body.appendChild(fakeEl);
  27. // simulate click
  28. fakeEl.click();
  29. // remove from body if appended
  30. if (appendToBody)
  31. document.body.removeChild(fakeEl);
  32. });
  33. }
  34. };
  35. };
  36. //# sourceMappingURL=index.js.map