const tExpand='Expand' const tCollapse='Shrink' function toggle_cs(eo) { const wrapper = $(eo.target).closest(".code_sample"); const code_el = wrapper.find("code"); code_el.toggleClass('expanded'); const placeholders = wrapper.find(".code-placeholder"); if (placeholders.length) { // collapsing placeholders.remove(); // This caused jumping around when code was closed. // $(window).scrollTop(code_el.offset().top - 124) } else { code_el.after("
 
"); } current_button_expanded = code_el.hasClass('expanded'); $(wrapper.find(".code_toggler")).html(current_button_expanded ? tCollapse : tExpand); } function has_scrollbars(e) { if ($(e).parents(".multicode").length > 0) { //TODO: figure out if we can detect scrollbars on non-default tabs of // multicode samples. For now, always consider multi-code sections to need // scrollbars. return true; } return (e.scrollHeight > e.clientHeight) || (e.scrollWidth > e.clientWidth); } function make_code_expandable() { var newid = 0; $(".content > pre > code").parent().wrap(function() { newid = newid+1; return "
"; }); // Multi code blocks var code_samples = $('.code_sample'); code_samples.find("code").each(function() { let jqThis = $(this); if (has_scrollbars(this)) { jqThis.dblclick(toggle_cs); jqThis.attr('title', 'Double-click to expand/collapse'); var newbtn = $(``); newbtn.appendTo(jqThis.parents(".codehilite").children(".btn-group")); } }); $(".code_toggler").click(toggle_cs); /* fix expand/collapse and tab click hierarchy */ code_samples.css("position","relative"); $(".multicode .code_sample").css("position","static"); }