Switch to unified view

a b/docs/site_libs/navigation-1.1/codefolding.js
1
2
window.initializeCodeFolding = function(show) {
3
4
  // handlers for show-all and hide all
5
  $("#rmd-show-all-code").click(function() {
6
    $('div.r-code-collapse').each(function() {
7
      $(this).collapse('show');
8
    });
9
  });
10
  $("#rmd-hide-all-code").click(function() {
11
    $('div.r-code-collapse').each(function() {
12
      $(this).collapse('hide');
13
    });
14
  });
15
16
  // index for unique code element ids
17
  var currentIndex = 1;
18
19
  // select all R code blocks
20
  var rCodeBlocks = $('pre.r, pre.python, pre.bash, pre.sql, pre.cpp, pre.stan, pre.julia, pre.foldable');
21
  rCodeBlocks.each(function() {
22
    // skip if the block has fold-none class
23
    if ($(this).hasClass('fold-none')) return;
24
25
    // create a collapsable div to wrap the code in
26
    var div = $('<div class="collapse r-code-collapse"></div>');
27
    var showThis = (show || $(this).hasClass('fold-show')) && !$(this).hasClass('fold-hide');
28
    var id = 'rcode-643E0F36' + currentIndex++;
29
    div.attr('id', id);
30
    $(this).before(div);
31
    $(this).detach().appendTo(div);
32
33
    // add a show code button right above
34
    var showCodeText = $('<span>' + (showThis ? 'Hide' : 'Show') + '</span>');
35
    var showCodeButton = $('<button type="button" class="btn btn-default btn-xs btn-secondary btn-sm code-folding-btn pull-right float-right"></button>');
36
    showCodeButton.append(showCodeText);
37
    showCodeButton
38
        .attr('data-toggle', 'collapse')
39
        .attr('data-bs-toggle', 'collapse') // BS5
40
        .attr('data-target', '#' + id)
41
        .attr('data-bs-target', '#' + id)   // BS5
42
        .attr('aria-expanded', showThis)
43
        .attr('aria-controls', id);
44
45
    var buttonRow = $('<div class="row"></div>');
46
    var buttonCol = $('<div class="col-md-12"></div>');
47
48
    buttonCol.append(showCodeButton);
49
    buttonRow.append(buttonCol);
50
51
    div.before(buttonRow);
52
53
    // show the div if necessary
54
    if (showThis) div.collapse('show');
55
56
    // update state of button on show/hide
57
    //   * Change text
58
    //   * add a class for intermediate states styling
59
    div.on('hide.bs.collapse', function () {
60
      showCodeText.text('Show');
61
      showCodeButton.addClass('btn-collapsing');
62
    });
63
    div.on('hidden.bs.collapse', function () {
64
      showCodeButton.removeClass('btn-collapsing');
65
    });
66
    div.on('show.bs.collapse', function () {
67
      showCodeText.text('Hide');
68
      showCodeButton.addClass('btn-expanding');
69
    });
70
    div.on('shown.bs.collapse', function () {
71
      showCodeButton.removeClass('btn-expanding');
72
    });
73
74
  });
75
76
}