46 lines
1.4 KiB
JavaScript
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);
|
|
});
|