summaryrefslogtreecommitdiffstats
path: root/typescript/src/listenToChangeEvent.ts
diff options
context:
space:
mode:
authorname <email@example.com>2023-09-27 13:34:23 +0200
committername <email@example.com>2023-09-27 13:34:23 +0200
commit72d8b4e6bee0ffac79e96dd649a9da2adb86b507 (patch)
tree8d1f37e5d88a598675b1a65128c35323c99825f5 /typescript/src/listenToChangeEvent.ts
parentMerge pull request 'Please consider adding my instance' (#2) from superprivacy/wolfree-dockerfile:main into main (diff)
downloadwolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.tar
wolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.tar.gz
wolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.tar.bz2
wolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.tar.lz
wolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.tar.xz
wolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.tar.zst
wolfree-dockerfile-72d8b4e6bee0ffac79e96dd649a9da2adb86b507.zip
Diffstat (limited to 'typescript/src/listenToChangeEvent.ts')
-rw-r--r--typescript/src/listenToChangeEvent.ts52
1 files changed, 52 insertions, 0 deletions
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<void> => {
+ 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 });
+ }
+};