Files

46 lines
1.4 KiB
JavaScript

import { config } from "./textbox/state.js";
import { enhanceTextarea, syncText } from "./textbox/textareaManager.js";
import { setOverlayStyle } from "./textbox/styleUtils.js";
import { api } from "../../../scripts/api.js";
import { settingsHelper } from "./settings.js";
config.init();
api.addEventListener("update_text_highlight", async () => {
document.querySelectorAll("textarea").forEach((textarea) => {
const overlay = textarea.previousSibling;
if (overlay && overlay.classList.contains("input-overlay")) {
setOverlayStyle(textarea, overlay);
syncText(textarea, overlay);
}
});
});
settingsHelper.addReloadSettingsListener(() => {
config.init();
});
const textareaObserver = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === 1) {
if (node.tagName === "TEXTAREA") {
enhanceTextarea(node);
}
node.querySelectorAll("textarea").forEach((textarea) => {
enhanceTextarea(textarea);
});
}
});
});
});
textareaObserver.observe(document.body, {
childList: true,
subtree: true,
});
document.querySelectorAll("textarea").forEach((textarea) => {
enhanceTextarea(textarea);
});