define()

in assets/js/mod/clippify.js [1:36]


define(['jquery', 'clipboard'], function($, Clipboard) {
    $('.code-block-caption').each(function() {
        var header = $(this);
        var wrapper = header.parent();
        var code = $('.highlight', wrapper);
        var btn = $('<span class="btn-clipboard" title="Copy this code">');
        btn.append('<i class="icon icon-clipboard">');
        btn.data('clipboard-text', $.trim(code.text()));
        header.append(btn);
    });
    $('.snippet').each(function() {
        var code = $('.highlight', this);
        var btn = $('<span class="btn-clipboard" title="Copy this code">');
        var header = $('.snippet-filename', this);

        btn.append('<i class="icon icon-clipboard">');
        btn.data('clipboard-text', $.trim(code.text()));
        header.append(btn);
    });
    var clip = new Clipboard('.btn-clipboard', {
        'text': function(trigger) {
            return $(trigger).data('clipboard-text');
        }
    });
    clip.on('success', function(e) {
        var success = $('<span class="clipboard-success">').text('Copied!')
        success.prependTo(e.trigger).delay(1000).fadeOut();
    });
    clip.on('error', function(e) {
        // Safari doesn't support the execCommand (yet) but because clipboardjs
        // also uses Selection API, we can instruct users to just press the keyboard shortcut
        // See https://clipboardjs.com/#browser-support
        var success = $('<span class="clipboard-success">').text('Press ⌘-C to copy');
        success.prependTo(e.trigger).delay(5000).fadeOut();
    });
});