constructor() {
		this.#defaultSettings = {
			animation: "system",
			appTheme: "dark",
			autosave: 0,
			fileBrowser: this.#fileBrowserSettings,
			formatter: {},
			maxFileSize: 12,
			serverPort: constants.SERVER_PORT,
			previewPort: constants.PREVIEW_PORT,
			showConsoleToggler: true,
			previewMode: this.PREVIEW_MODE_INAPP,
			disableCache: false,
			useCurrentFileForPreview: false,
			host: "localhost",
			search: this.#searchSettings,
			lang: "en-us",
			fontSize: "12px",
			editorTheme: "ace/theme/nord_dark",
			textWrap: true,
			softTab: true,
			tabSize: 2,
			retryRemoteFsAfterFail: true,
			linenumbers: true,
			formatOnSave: false,
			fadeFoldWidgets: false,
			autoCorrect: true,
			openFileListPos: this.OPEN_FILE_LIST_POS_HEADER,
			quickTools: this.#IS_TABLET ? 0 : 1,
			quickToolsTriggerMode: this.QUICKTOOLS_TRIGGER_MODE_TOUCH,
			editorFont: "Roboto Mono",
			vibrateOnTap: true,
			fullscreen: false,
			floatingButton: !this.#IS_TABLET,
			liveAutoCompletion: true,
			showPrintMargin: false,
			printMargin: 80,
			scrollbarSize: 20,
			showSpaces: false,
			confirmOnExit: true,
			lineHeight: 2,
			leftMargin: 50,
			checkFiles: true,
			desktopMode: false,
			console: this.CONSOLE_LEGACY,
			keyboardMode: this.KEYBOARD_MODE_NO_SUGGESTIONS_AGGRESSIVE,
			rememberFiles: true,
			rememberFolders: true,
			diagonalScrolling: false,
			reverseScrolling: false,
			teardropTimeout: 3000,
			teardropSize: 30,
			scrollSpeed: constants.SCROLL_SPEED_NORMAL,
			customTheme: this.#customTheme,
			relativeLineNumbers: false,
			elasticTabstops: false,
			rtlText: false,
			hardWrap: false,
			useTextareaForIME: false,
			touchMoveThreshold: Math.round((1 / devicePixelRatio) * 10) / 20,
			quicktoolsItems: [...Array(this.#QUICKTOOLS_SIZE).keys()],
			excludeFolders: this.#excludeFolders,
			defaultFileEncoding: "UTF-8",
			inlineAutoCompletion: true,
			colorPreview: true,
			maxRetryCount: 3,
			showRetryToast: false,
			showSideButtons: true,
			showAnnotations: false,
		};
		this.value = structuredClone(this.#defaultSettings);
	}
",
	];
	#IS_TABLET = innerWidth > 768;

	QUICKTOOLS_ROWS = 2;
	QUICKTOOLS_GROUP_CAPACITY = 8;
	QUICKTOOLS_GROUPS = 2;
	#QUICKTOOLS_SIZE =
		this.QUICKTOOLS_GROUP_CAPACITY * // items per group
		this.QUICKTOOLS_GROUPS * // number of groups
		this.QUICKTOOLS_ROWS; // number of rows

	QUICKTOOLS_TRIGGER_MODE_TOUCH = "touch";
	QUICKTOOLS_TRIGGER_MODE_CLICK = "click";
	OPEN_FILE_LIST_POS_HEADER = "header";
	OPEN_FILE_LIST_POS_SIDEBAR = "sidebar";
	OPEN_FILE_LIST_POS_BOTTOM = "bottom";
	KEYBOARD_MODE_NO_SUGGESTIONS = "NO_SUGGESTIONS";
	KEYBOARD_MODE_NO_SUGGESTIONS_AGGRESSIVE = "NO_SUGGESTIONS_AGGRESSIVE";
	KEYBOARD_MODE_NORMAL = "NORMAL";
	CONSOLE_ERUDA = "eruda";
	CONSOLE_LEGACY = "legacy";
	PREVIEW_MODE_INAPP = "inapp";
	PREVIEW_MODE_BROWSER = "browser";

	/**@type {{[key: string]: import('components/settingsPage').SettingsPage}}