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:
2026-07-18 18:48:23 +02:00
commit 2ba7ceee7a
272 changed files with 27634 additions and 0 deletions

135
sks/document/js/load.js Normal file
View File

@@ -0,0 +1,135 @@
function first_basename() {
let first = K.get(".navlink");
return first ? K.attr(first, "data-page") : null;
}
function scroll_to_target(target_name) {
var text = K.get("#text");
if (!text) return;
var folder_top = text.getBoundingClientRect().top;
var target = K.get(target_name);
if (target) {
var target_top = target.getBoundingClientRect().top;
var scroll_position = text.scrollTop + target_top - folder_top;
text.scrollTop = scroll_position;
}
highlight_visible_toc_sections();
}
function modify_links() {
var links = K.getv("#text a");
links.forEach(function(link) {
if (link.classList.contains("linkd") || link.querySelector("img")) {
return;
}
var href = link.getAttribute("href");
if (!href) return;
if (href.indexOf("http://") != -1 ||
href.indexOf("https://") != -1 ||
href.indexOf(".pdf") != -1 ||
href.indexOf("mailto:") != -1 ||
href.indexOf("/") == 0 ||
href.indexOf("#") != -1 ||
href.indexOf("..") == 0) {
return;
}
var parts = href.split('#');
var len = parts[0].length;
var page = parts[0].substring(0, len - 5);
var target = "#" + parts[1];
var span = document.createElement("span");
span.className = "panelink";
span.setAttribute("data-page", page);
span.setAttribute("data-target", target);
span.setAttribute("data-title", link.textContent);
span.textContent = link.textContent;
link.parentNode.replaceChild(span, link);
});
}
function show_text() {
K.visible("#search_page", "hide");
K.visible("#help_page", "hide");
K.visible("#text", "show");
K.style("#content", "background-color", "white");
K.text("#help", "Help");
highlight_visible_toc_sections();
}
function new_page_callback() {
show_text();
modify_links();
resize();
current_page_callback();
}
var image_timer;
var last_basename;
function current_page_callback() {
if (target_name == "#") {
return;
}
var selector = '.navlink[data-target="' + (target_name.split("#")[1] || "") + '"]';
var navlink = K.get(selector);
if (navlink) {
update_page_title(navlink);
}
resize();
scroll_to_target(target_name);
}
async function load_page_content(basename, new_page, callback) {
if (true || basename != current_basename()) {
var url = "pages/" + basename + ".html";
await K.load("#text", url);
callback();
}
else {
callback();
}
}
function load_page(basename, target, callback, push_state) {
var init_complete = false;
var push = typeof push_state !== "undefined";
var state, state_target;
if (init_complete) {
var parts = window.location.hash.toString().split("#");
state = {"basename" : parts[1], "target" : "#" + parts[2]};
state_target = "#" + basename + target;
if (push) {
history.pushState(state, "", state_target);
} else {
history.replaceState(state, "", state_target);
}
load_page_content(
basename, true,
function() {
target_name = target;
initialize = false;
callback(); } );
} else {
basename = first_basename();
state = {"basename" : basename, "target" : "#"};
state_target = "#" + basename + "#";
init_complete = true;
load_page_content(
basename, true,
function() {
target_name = target;
initialize = true;
callback(); } );
history.replaceState(state, "", state_target);
}
}