Files

130 lines
3.6 KiB
JavaScript
Raw Permalink Normal View History

/* Toggling between text with the table of contents and the text without it */
function resize_text_width(toc_width) {
const displayed = displayed_text();
const style = window.getComputedStyle(displayed, null);
const offset = parseInt(style.getPropertyValue("padding-left"))
+ parseInt(style.getPropertyValue("padding-right"));
if (toc_width !== undefined) {
K.width(displayed, K.width("#middle") - toc_width - offset);//Sec - K.width("#resizer"));
} else {
/*
const style = window.getComputedStyle(displayed, null);
const offset = parseInt(style.getPropertyValue("padding-left"))
+ parseInt(style.getPropertyValue("padding-right"));
*/
K.width(displayed, K.width("#middle") - offset);
}
}
function get_top_header() {
return header_in_window("#text > p, #text > div");
}
function set_top_pos(top_header, original_top_pos) {
const new_top_pos = top_header.getBoundingClientRect().top;
const offset = original_top_pos - new_top_pos;
if (offset !== 0) {
//const text = K.get("#text");
const text = displayed_text();
text.scrollTo({top : text.scrollTop - offset});
}
}
function maintain_text_position(func) {
//const text_rect = K.get("#text").getBoundingClientRect();
const text_rect = displayed_text().getBoundingClientRect();
const top = text_rect.top - 10;
let top_elt;
let elt;
//for (let elt of K.get("#text").children) {
for (elt of displayed_text().children) {
if (K.top(elt) >= top) {
top_elt = elt;
break;
}
}
if (top_elt) {
let current_top = top_elt.getBoundingClientRect().top;
func.call();
set_top_pos(top_elt, current_top);
} else {
func.call();
}
}
function set_buttons(mode) {
let button;
for (button of ["#next", "#previous", "#fit"]) {
K.visible(button, mode);
}
for (button of K.getv(".depthchoice")) {
K.visible(button, mode);
}
}
function textshow() {
if (K.visible("#toc")) {
save_position();
K.visible("#toc", "hide");
K.visible("#resizer", "hide");
K.text("#textshow", "Table of contents");
set_buttons("hide");
resize_text_width();
//resize_toc();
resize_images();
} else {
K.visible("#toc", "show");
K.visible("#resizer", "show");
K.text("#textshow", "Text only");
/*
let fit_active = K.attr("#fit_check", "active");
if (fit_active === "false") {
K.get("#fit_check").click();
}
*/
//resize_images();
restore_position();
set_buttons("show");
resize_toc();
resize_images();
// Restore previous state:
/*
if (fit_active === "false") {
K.get("#fit_check").click();
}
*/
}
//resize_images();
//adjust_widths();
//center_elements();
//set_code_comment_width();
//set_imagecode_width();
// adjust_footnotes();
}
window.addEventListener("load", function (event) {
K.get("#textshow").addEventListener(
"click",
function (event) {
event.preventDefault();
maintain_text_position(textshow);
});
window.addEventListener(
"resize",
function (event) {
maintain_text_position(
function () {
resize_text_width();
resize_toc();
//resize_images();
});
});
define_keypress("T", "#textshow");
});