File: plugin-clipboard.js

package info (click to toggle)
r-cran-bookdown 0.42%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,752 kB
  • sloc: javascript: 11,343; makefile: 21; sh: 20
file content (33 lines) | stat: -rw-r--r-- 1,113 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
gitbook.require(["gitbook", "jQuery"], function(gitbook, $) {

  var copyButton = '<button type="button" class="copy-to-clipboard-button" title="Copy to clipboard" aria-label="Copy to clipboard"><i class="fa fa-copy"></i></button>';
  var clipboard;

  gitbook.events.bind("page.change", function() {

    if (!ClipboardJS.isSupported()) return;

    // the page.change event is thrown twice: before and after the page changes
    if (clipboard) {
      // clipboard is already defined but we are on the same page
      if (clipboard._prevPage === window.location.pathname) return;
      // clipboard is already defined and url path change
      // we can deduct that we are before page changes
      clipboard.destroy(); // destroy the previous events listeners
      clipboard = undefined; // reset the clipboard object
      return;
    }

    $(copyButton).prependTo("div.sourceCode");

    clipboard = new ClipboardJS(".copy-to-clipboard-button", {
      text: function(trigger) {
        return trigger.parentNode.textContent;
      }
    });

    clipboard._prevPage = window.location.pathname

  });

});