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");
}