diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 7e2695f..8dae000 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -33,7 +33,7 @@ module.exports = {
"no-dupe-else-if": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
- "no-duplicate-imports": "error",
+ // "no-duplicate-imports": "error",
"no-empty-character-class": "error",
"no-empty-pattern": "error",
"no-ex-assign": "error",
diff --git a/src-runtime/TypePanel.js b/src-runtime/TypePanel.js
index b2fb766..088bb7a 100644
--- a/src-runtime/TypePanel.js
+++ b/src-runtime/TypePanel.js
@@ -1,7 +1,9 @@
-import {assertMode } from "./assertMode.js";
-import {options } from "./options.js";
-import {warnedTable} from "./warnedTable.js";
-import {Warning } from "./Warning.js";
+import {assertMode } from "./assertMode.js";
+import {options } from "./options.js";
+import {disableTypeChecking} from "./validateType.js";
+import {enableTypeChecking } from "./validateType.js";
+import {warnedTable } from "./warnedTable.js";
+import {Warning } from "./Warning.js";
/**
* @param {HTMLDivElement} div - The
.
*/
@@ -39,8 +41,13 @@ function niceDiv(div) {
div.classList.add('rti');
document.head.appendChild(rule);
}
+function isEnabled() {
+ const tmp = localStorage.getItem('rti-enabled');
+ return tmp === null || tmp === 'true';
+}
class TypePanel {
div = document.createElement('div');
+ inputEnable = document.createElement('input');
spanErrors = document.createElement('span');
span = document.createElement('span');
select = document.createElement('select');
@@ -51,12 +58,22 @@ class TypePanel {
buttonLoadState = document.createElement('button');
buttonSaveState = document.createElement('button');
constructor() {
- const {div, spanErrors, span, select, option_spam, option_once, option_never, buttonHide, buttonLoadState, buttonSaveState} = this;
+ const {div, inputEnable, spanErrors, span, select, option_spam, option_once, option_never, buttonHide, buttonLoadState, buttonSaveState} = this;
div.style.position = "absolute";
div.style.bottom = "0px";
div.style.right = "0px";
div.style.zIndex = "10";
niceDiv(div);
+ inputEnable.checked = isEnabled();
+ inputEnable.type = "checkbox";
+ inputEnable.onchange = (e) => {
+ if (inputEnable.checked) {
+ enableTypeChecking();
+ } else {
+ disableTypeChecking();
+ }
+ };
+ inputEnable.onchange();
span.innerText = " Type report mode:";
option_spam.text = 'spam';
option_once.text = 'once';
@@ -83,7 +100,7 @@ class TypePanel {
buttonLoadState.onclick = () => this.loadState();
buttonSaveState.textContent = 'Save state';
buttonSaveState.onclick = () => this.saveState();
- div.append(spanErrors, span, select, buttonHide, buttonLoadState, buttonSaveState, warnedTable);
+ div.append(inputEnable, spanErrors, span, select, buttonHide, buttonLoadState, buttonSaveState, warnedTable);
div.style.maxHeight = '200px';
div.style.overflow = 'scroll';
const finalFunc = () => document.body.append(div);
diff --git a/src-runtime/validateType.js b/src-runtime/validateType.js
index b1ce3ff..08eecfd 100644
--- a/src-runtime/validateType.js
+++ b/src-runtime/validateType.js
@@ -17,9 +17,11 @@ import {validateUnion } from "./validateUnion.js";
export let enabled = true;
export function disableTypeChecking() {
enabled = false;
+ localStorage.setItem('rti-enabled', 'false');
}
export function enableTypeChecking() {
enabled = true;
+ localStorage.setItem('rti-enabled', 'true');
}
/**
* @typedef {object} TypeObject