Initial commit: Klammertext source distribution
Curated source subset assembled by klammertext-dev's doc/make_dist.sh: the Klammermachine (mac), the Standard Klammer Set (sks), the commands (com), editor plugins and install guides (doc), a test subset (tst), and lib/bin placeholders. Builds with 'make -C com'. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
129
sks/document/js/resize_text.js
Normal file
129
sks/document/js/resize_text.js
Normal file
@@ -0,0 +1,129 @@
|
||||
/* 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");
|
||||
});
|
||||
Reference in New Issue
Block a user