Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function(){
- if (typeof self === 'undefined' || !self.Prism || !self.document) {
- return;
- }
- if (!Prism.plugins.toolbar) {
- console.warn('Copy to Clipboard plugin loaded before Toolbar plugin.');
- return;
- }
- var Clipboard = window.Clipboard || undefined;
- if (!Clipboard && typeof require === 'function') {
- Clipboard = require('clipboard');
- }
- var callbacks = [];
- if (!Clipboard) {
- var script = document.createElement('script');
- var head = document.querySelector('head');
- script.onload = function() {
- Clipboard = window.Clipboard;
- if (Clipboard) {
- while (callbacks.length) {
- callbacks.pop()();
- }
- }
- };
- script.src = 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.8/clipboard.min.js';
- head.appendChild(script);
- }
- Prism.plugins.toolbar.registerButton('copy-to-clipboard', function (env) {
- var linkCopy = document.createElement('a');
- linkCopy.textContent = 'Copy';
- if (!Clipboard) {
- callbacks.push(registerClipboard);
- } else {
- registerClipboard();
- }
- return linkCopy;
- function registerClipboard() {
- var clip = new Clipboard(linkCopy, {
- 'text': function () {
- return env.code;
- }
- });
- clip.on('success', function() {
- linkCopy.textContent = 'Copied!';
- resetText();
- });
- clip.on('error', function () {
- linkCopy.textContent = 'Press Ctrl+C to copy';
- resetText();
- });
- }
- function resetText() {
- setTimeout(function () {
- linkCopy.textContent = 'Copy';
- }, 5000);
- }
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement