From 72d8b4e6bee0ffac79e96dd649a9da2adb86b507 Mon Sep 17 00:00:00 2001 From: name Date: Wed, 27 Sep 2023 11:34:23 +0000 Subject: 2023-09-26 --- typescript/src/listenToChangeEvent.ts | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 typescript/src/listenToChangeEvent.ts (limited to 'typescript/src/listenToChangeEvent.ts') diff --git a/typescript/src/listenToChangeEvent.ts b/typescript/src/listenToChangeEvent.ts new file mode 100644 index 0000000..7f091a9 --- /dev/null +++ b/typescript/src/listenToChangeEvent.ts @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ + +import type EntrypointParameter from "./EntrypointParameter.js"; +import entrypoint from "./entrypoint.js"; +import podsClassName from "./podsClassName.js"; +import typescriptNever from "./typescriptNever.js"; + +export default (EntrypointParameter: EntrypointParameter): void => { + try { + Object.freeze(EntrypointParameter); + + Array.from( + document.querySelectorAll( + `html > body > div#__next > div > main > main > div.${podsClassName} > div > div > section > section > div:is(:first-child) > select` + ) + ) + .filter((element: Element): boolean => { + if (element instanceof HTMLSelectElement) { + return true; + } else if (element instanceof Element) { + console.warn({ element }); + } else { + typescriptNever(element); + } + + return false; + }) + .map((element: Element): void => { + element.addEventListener("change", async (event): Promise => { + if (event.target instanceof HTMLSelectElement) { + await entrypoint({ + ...EntrypointParameter, + podstate: [ + "Step-by-step solution", + "Step-by-step", + "Show all steps", + event.target.value, + ], + }); + } else if (event.target instanceof EventTarget) { + console.warn({ event }); + } else if (event.target === null) { + console.warn({ event }); + } else { + typescriptNever(event.target); + } + }); + }); + } catch (error) { + console.warn({ error }); + } +}; -- cgit v1.2.3