summaryrefslogtreecommitdiffstats
path: root/docusaurus/static/ajax/libs/wolfree/23.7.8/js
diff options
context:
space:
mode:
authorname <email@example.com>2023-08-11 07:09:24 +0200
committername <email@example.com>2023-08-11 07:09:24 +0200
commitb6ebc5f88ffe9fb442238f160879ad47dd713d11 (patch)
treecbceadf88ea0fc58299b1efb6b43a0e8eeaf50bf /docusaurus/static/ajax/libs/wolfree/23.7.8/js
downloadwolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.tar
wolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.tar.gz
wolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.tar.bz2
wolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.tar.lz
wolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.tar.xz
wolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.tar.zst
wolfree-dockerfile-b6ebc5f88ffe9fb442238f160879ad47dd713d11.zip
Diffstat (limited to '')
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js56
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js57
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js26
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js69
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js56
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js201
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js63
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js29
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js54
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js44
-rw-r--r--docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js51
11 files changed, 706 insertions, 0 deletions
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js
new file mode 100644
index 0000000..465787d
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AJAX.js
@@ -0,0 +1,56 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+import SearchParams from "./SearchParams.js";
+
+export default class AJAX {
+ ajax = async ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ } = {}) => {
+ try {
+ const data = new SearchParams().getSearchParams({
+ input,
+ extraPodstates,
+ i2d,
+ });
+
+ const options = {
+ url: "https://api.wolframalpha.com/v2/query",
+ dataType: "jsonp",
+ traditional: true,
+ data,
+ };
+
+ try {
+ /**
+ * https://www.npmjs.com/package/@types/jquery
+ * @type {import('jQuery')}
+ */
+ const response = await jQuery.ajax(options);
+ return (
+ console.assert(response instanceof Object),
+ console.assert(response.hasOwnProperty("queryresult")),
+ { response }
+ );
+ } catch (error) {
+ return (
+ console.error(
+ { error },
+ "We encountered an issue while attempting to retrieve a response from the Wolfram Alpha API using the jQuery library."
+ ),
+ { error }
+ );
+ }
+ } catch (error) {
+ return console.error({ error }), { error };
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js
new file mode 100644
index 0000000..070e4e1
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/AppID.js
@@ -0,0 +1,57 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+// To generate a new AppID:
+// 1. Open Tor Browser and go to: https://products.wolframalpha.com/api/
+// 2. Click the orangish "Get API Access" button. You will go to: https://account.wolfram.com/login/oauth2/sign-in
+// 3. Click the reddish "Create one" hyperlink to create a new Wolfram ID. You will go to: https://account.wolfram.com/login/create
+// 4. Fill out the form using random alphanumeric characters.
+// 5. Click the reddish "Create Wolfram ID" button. You will go to: https://developer.wolframalpha.com/portal/myapps/index.html
+// 6. Click the orangish "Sign up to get your first AppID" button.
+// 7. Fill out the form using random alphanumeric characters.
+// 8. Click the orangish "Sign up" button.
+// 9. Click the orangish "Get an AppID" button.
+// 10. Fill out the form using random alphanumeric characters.
+// 11. Click the orangish "Get AppID" button.
+
+export default class AppID {
+ appIDArray = Array();
+
+ constructor(
+ appIDArray = ["H9V325-HTALUWHKGK", "AKJTJT-LR5LL8WTG6", "LKY83U-XW6ATU9URU"]
+ ) {
+ (this.appIDArray = appIDArray),
+ Array.from(this.appIDArray).forEach(
+ (appID) => (
+ console.assert(17 === appID.length),
+ console.assert(/[0-9A-Z]{6}-[0-9A-Z]{10}/.test(appID))
+ )
+ );
+ }
+
+ getAppID = ({
+ appID = this.appIDArray[this.getRandomInt() % this.appIDArray.length],
+ } = {}) => {
+ try {
+ return appID;
+ } catch (error) {
+ return console.error({ error }), String();
+ }
+ };
+
+ getRandomInt = ({
+ randomInt = crypto.getRandomValues(new Uint32Array(1))[0],
+ } = {}) => {
+ try {
+ return randomInt;
+ } catch (error) {
+ return console.error({ error }), Number();
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js
new file mode 100644
index 0000000..0fe9d31
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Entrypoint.js
@@ -0,0 +1,26 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+import Processor from "./Processor.js";
+import Preprocessor from "./Preprocessor.js";
+import PostProcessor from "./PostProcessor.js";
+
+export default async ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+} = {}) => {
+ try {
+ new Preprocessor().process();
+ await new Processor().process({ input, i2d, extraPodstates });
+ new PostProcessor().process({ input, i2d });
+ } catch (error) {
+ console.error({ error });
+ }
+};
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js
new file mode 100644
index 0000000..d5b45a6
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Placeholder.js
@@ -0,0 +1,69 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+export default class Placeholder {
+ className = "wolfree-placeholder";
+
+ placeholderHTML = `
+ <div class="${this.className}">
+ <div>
+ <div>
+ <div><div></div></div>
+ <div><div></div></div>
+ <div><div></div></div>
+ </div>
+ </div>
+ </div>
+ `;
+
+ insert = ({
+ container = document.querySelector(
+ "html > body > #__next > div > main > main > div:nth-of-type(1)"
+ ),
+ } = {}) => {
+ try {
+ return (
+ container instanceof HTMLDivElement
+ ? container.insertAdjacentHTML("afterend", this.placeholderHTML)
+ : console.error({ container }),
+ { container }
+ );
+ } catch (error) {
+ return (
+ console.error(
+ { error },
+ "Fail to insert the skeleton placeholder components."
+ ),
+ { error }
+ );
+ }
+ };
+
+ remove = ({
+ allPlaceholders = document.querySelectorAll(
+ `html > body > #__next > div > main > main > div.${this.className}`
+ ),
+ } = {}) => {
+ try {
+ return (
+ console.assert(allPlaceholders.length === 1),
+ allPlaceholders.forEach((placeholder) => placeholder.remove()),
+ { allPlaceholders }
+ );
+ } catch (error) {
+ return (
+ console.error(
+ { error },
+ "Fail to remove the skeleton placeholder components."
+ ),
+ { error }
+ );
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js
new file mode 100644
index 0000000..7b31e48
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Pods.js
@@ -0,0 +1,56 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+export default class Pods {
+ insert = ({
+ container = document.querySelector("main > div:nth-of-type(1)"),
+ html = String(),
+ } = {}) => {
+ try {
+ /**
+ * https://www.npmjs.com/package/@types/dompurify
+ * @type {import('DOMPurify')}
+ */
+ return (
+ container instanceof HTMLDivElement
+ ? container.insertAdjacentHTML(
+ "afterend",
+ globalThis.DOMPurify.sanitize(html)
+ )
+ : console.error({ container }),
+ { container, html }
+ );
+ } catch (error) {
+ return (
+ console.error(
+ { error },
+ "Fail to insert the results of the calculation."
+ ),
+ { error }
+ );
+ }
+ };
+
+ remove = ({
+ pods = document.querySelectorAll("main > div.wolfree-pods"),
+ } = {}) => {
+ try {
+ pods.forEach((element) => {
+ element.remove();
+ });
+ return { pods };
+ } catch (error) {
+ console.error(
+ "Fail to remove the results of the previous calculation.",
+ error
+ );
+ return { error };
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js
new file mode 100644
index 0000000..bfb0ab0
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js
@@ -0,0 +1,201 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+export default class PodsParser {
+ parse = ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ response = { queryresult: { pods: Array() } },
+ } = {}) => {
+ try {
+ return { html: this.buildHTML({ input, i2d, extraPodstates, response }) };
+ } catch (error) {
+ return console.error({ error }), { error };
+ }
+ };
+
+ buildHTML = ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ response = { queryresult: { pods: Array() } },
+ } = {}) => {
+ return `
+ <div class="wolfree-pods">
+ <div>
+ <div>
+ <section>
+ ${this.parseQueryResult({ response })}
+ ${this.buildTechnicalInfo({
+ input,
+ i2d,
+ extraPodstates,
+ response,
+ })}
+ </section>
+ </div>
+ </div>
+ </div>
+ `;
+ };
+
+ parseQueryResult = ({ response = { queryresult: { pods: Array() } } }) => {
+ const { queryresult } = response;
+ const { pods } = queryresult;
+ if (pods) {
+ return pods.map(this.parsePod).join("");
+ }
+ return "";
+ };
+
+ parsePod = (
+ pod = {
+ title: String(),
+ states: Array(),
+ subpods: Array(),
+ }
+ ) => {
+ return `
+ <section>
+ ${this.buildPodHeader(pod)}
+ <div></div>
+ ${pod.subpods.map(this.buildSubpod).join("")}
+ </section>
+ `;
+ };
+
+ buildPodHeader = (pod = { title: String(), states: Array() }) => {
+ return `
+ <div>
+ <h2>${this.escapeHTML(pod.title)}</h2>
+ ${pod.states ? pod.states.map(this.buildSelectElement).join("") : ""}
+ </div>
+ `;
+ };
+
+ buildSubpod = (
+ subpod = { img: { src: String(), alt: String() }, plaintext: String() }
+ ) => {
+ return `
+ <div><div>
+ <img
+ src="${this.escapeHTML(subpod.img.src)}"
+ alt="${this.escapeHTML(subpod.img.alt)}"
+ >
+ </div></div>
+ <div style="font-family: monospace; overflow: auto;">
+ <div><div>${this.buildSubpodDetails(subpod)}</div></div>
+ </div>
+ `;
+ };
+
+ buildSubpodDetails = (subpod = { plaintext: String() }) => {
+ return `
+ <details>
+ <summary style="direction: rtl;"></summary>
+ <div><pre>${this.escapeHTML(subpod.plaintext)}</pre></div>
+ <br>
+ </details>
+ `;
+ };
+
+ buildSelectElement = (state = { value: String(), states: Array() }) => {
+ if (state.states) {
+ return `
+ <select name="pod-states">
+ <option>${this.escapeHTML(state.value)}</option>
+ ${state.states.map(this.buildOption).join("")}
+ </select>
+ `;
+ }
+ return "";
+ };
+
+ buildOption = (state = { name: String() }) => {
+ return `
+ <option>${this.escapeHTML(state.name)}</option>
+ `;
+ };
+
+ buildTechnicalInfo = ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ response = { queryresult: { pods: Array() } },
+ }) => {
+ return `
+ <section>
+ <div><h2>Technical information</h2></div>
+ <div></div>
+ <div><div><div>${this.buildTechnicalInfoDetails({
+ input,
+ i2d,
+ extraPodstates,
+ response,
+ })}</div></div></div>
+ <div></div>
+ </section>
+ `;
+ };
+
+ buildTechnicalInfoDetails = ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ response = { queryresult: { pods: Array() } },
+ }) => {
+ return `
+ <details>
+ <div>
+ If you have programming knowledge, feel free to explore the technical information provided below:
+ </div>
+ ${this.buildTextarea({ input, i2d, extraPodstates, response })}
+ </details>
+ `;
+ };
+
+ buildTextarea = ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ response = { queryresult: { pods: Array() } },
+ }) => {
+ return `
+ <textarea name="technical-information">${this.escapeHTML(
+ JSON.stringify(
+ {
+ document,
+ input,
+ i2d,
+ extraPodstates,
+ response,
+ },
+ null,
+ 4
+ )
+ )}</textarea>
+ `;
+ };
+
+ escapeHTML = (unsafe = String()) => {
+ return unsafe
+ .replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;")
+ .replace(/>/g, "&gt;")
+ .replace(/"/g, "&quot;")
+ .replace(/'/g, "&#039;");
+ };
+}
+
+// Can I escape HTML special chars in JavaScript? - Stack Overflow
+// https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript
+
+// test case:
+// https://www.wolframalpha.com/input?i=solve+%7By%27%28x%29+%3D+-2+y%2C+y%280%29%3D1%7D+from+0+to+10+using+r+k+f+algorithm
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js
new file mode 100644
index 0000000..1061d8a
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PostProcessor.js
@@ -0,0 +1,63 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+import Placeholder from "./Placeholder.js";
+import Entrypoint from "./Entrypoint.js";
+
+export default class PostProcessor {
+ process = ({ input = String(), i2d = Boolean() } = {}) => {
+ try {
+ new Placeholder().remove();
+
+ try {
+ document
+ .querySelectorAll(
+ "html > body > div#__next > div > main > main > div.wolfree-pods > div > div > section > section > div > div > div > details > div"
+ )
+ .forEach((element = new HTMLElement()) =>
+ element.setAttribute("contenteditable", "")
+ );
+ } catch (error) {
+ console.error(
+ "Fail to make the plaintext in details tags easy to copy.",
+ error
+ );
+ }
+
+ try {
+ document
+ .querySelectorAll(
+ "html > body > div#__next > div > main > main > div.wolfree-pods > div > div > section > section > div:is(:first-child) > select"
+ )
+ .forEach((element = new HTMLSelectElement()) =>
+ element.addEventListener(
+ "change",
+ async (event = new Event(String())) =>
+ Entrypoint({
+ input,
+ i2d,
+ extraPodstates: [
+ event.target instanceof HTMLSelectElement
+ ? event.target.value
+ : (console.error({ event }), String()),
+ ],
+ })
+ )
+ );
+ } catch (error) {
+ console.error(
+ "Fail to set up the drop-down menu for problem-solving strategies.",
+ error
+ );
+ }
+ } catch (error) {
+ console.error({ error });
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js
new file mode 100644
index 0000000..5d88bbc
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Preprocessor.js
@@ -0,0 +1,29 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+import Placeholder from "./Placeholder.js";
+import Pods from "./Pods.js";
+
+export default class Preprocessor {
+ process = () => {
+ try {
+ try {
+ window.scroll(0, 0);
+ } catch (error) {
+ console.error({ error }, "Fail to scroll to the top of the webpage.");
+ }
+
+ new Placeholder().insert();
+
+ new Pods().remove();
+ } catch (error) {
+ console.error({ error });
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js
new file mode 100644
index 0000000..eaf9c2a
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/Processor.js
@@ -0,0 +1,54 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+import AJAX from "./AJAX.js";
+import PodsParser from "./PodsParser.js";
+import Pods from "./Pods.js";
+
+export default class Processor {
+ process = async ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ } = {}) => {
+ try {
+ const { response } = await new AJAX().ajax({
+ input,
+ i2d,
+ extraPodstates,
+ });
+
+ try {
+ const { html } = new PodsParser().parse({
+ input,
+ i2d,
+ extraPodstates,
+ /** @type {any} */
+ response,
+ });
+
+ try {
+ new Pods().remove();
+ } catch (error) {
+ console.error(error);
+ }
+
+ try {
+ new Pods().insert({ html });
+ } catch (error) {
+ console.error(error);
+ }
+ } catch (error) {
+ console.error(error);
+ }
+ } catch (error) {
+ console.error(error);
+ }
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js
new file mode 100644
index 0000000..828d06f
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/SearchParams.js
@@ -0,0 +1,44 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+import AppID from "./AppID.js";
+
+export default class SearchParams {
+ constructor({ getAppID = new AppID().getAppID } = {}) {
+ this.getAppID = getAppID;
+ }
+
+ getSearchParams = ({
+ input = String(),
+ i2d = Boolean(),
+ extraPodstates = Array(),
+ } = {}) => {
+ const appid = this.getAppID();
+ return {
+ ...(appid && { appid }),
+ ...(input && { input }),
+ ...(i2d && { i2d }),
+ podstate: [
+ "Step-by-step solution",
+ "Step-by-step",
+ "Show all steps",
+ ...extraPodstates,
+ // Note: extraPodstates must be the last item in the array.
+ // Otherwise, the Wolfram Alpha API may ignore the pod states in extraPodstates.
+ ],
+ output: "json",
+ reinterpret: true,
+ podtimeout: 30,
+ scantimeout: 30,
+ parsetimeout: 30,
+ totaltimeout: 30,
+ formattimeout: 30,
+ };
+ };
+}
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js
new file mode 100644
index 0000000..5767c4e
--- /dev/null
+++ b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/onload.js
@@ -0,0 +1,51 @@
+/**
+ * @license
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ * This file is part of Wolfree.
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ */
+
+// @ts-check
+
+export default addEventListener(
+ "load",
+ () => (
+ setTimeout(
+ () =>
+ document
+ .querySelectorAll(
+ "html > body > #__next > div > main > main > div > div > section > form > div > div > input"
+ )
+ .forEach((input) =>
+ input instanceof HTMLInputElement
+ ? input.focus()
+ : console.error({ input })
+ ),
+ 1000
+ ),
+ [
+ () =>
+ document
+ .querySelectorAll(
+ 'html > body > #__next > div > main > main > div > div > div > section > section > div:is(:first-child) > ul > li'
+ )
+ .forEach(
+ (li) =>
+ li.innerHTML.includes("Step-by-step") &&
+ (li instanceof HTMLElement
+ ? (li.style.display = "none")
+ : console.error({ li }))
+ ),
+ () =>
+ (document.title = document.title.replace(
+ "- Wolfram|Alpha",
+ "- Free Wolfram|Alpha Step-by-step Solution - Wolfree"
+ )),
+ ].forEach(
+ (callback) => (
+ setInterval(callback, 2000), addEventListener("click", callback)
+ )
+ ),
+ scroll(0, 0)
+ )
+);