123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /**
- * This JS file is for settings :
- * - Theme
- * - Script language
- * - Font size
- */
- /**
- * TO DO :
- * - Set the font in the localStorage
- */
- class SettingsPG {
- constructor(monacoCreator) {
- this.monacoCreator = monacoCreator;
- // The elements that will color with languages
- this.elementForscriptLanguage = [
- '#exampleList #exampleBanner',
- '.navbar',
- '.navbar .category',
- '.navbar .select .toDisplay',
- '.navbar .select .toDisplay .subSelect .toDisplaySub',
- '#fpsLabel',
- '.save-form',
- '#switchWrapper'
- ];
- // The elements that will color with theme
- this.elementToTheme = [
- '.wrapper #jsEditor',
- '.wrapper .gutter'
- ];
- // Editor font size
- this.fontSize = 14;
- // Editor theme
- this.vsTheme = localStorage.getItem("bjs-playground-theme") || 'light';
- // Editor language
- this.scriptLanguage = localStorage.getItem("bjs-playground-scriptLanguage") || 'JS';
- this.defaultScene = "scripts/basic scene.js";
- if(this.scriptLanguage == "JS") {
- this.defaultScene = "scripts/basic scene.js";
- monacoCreator.monacoMode = "javascript";
- }
- else if(this.scriptLanguage == "TS") {
- this.defaultScene = "scripts/basic scene.txt";
- monacoCreator.monacoMode = "typescript";
- }
- }
- get ScriptLanguage() {
- return this.scriptLanguage;
- };
- set ScriptLanguage(value) {
- localStorage.setItem("bjs-playground-scriptLanguage", value);
- this.scriptLanguage = value;
- };
- get DefaultScene() {
- return this.defaultScene;
- };
- /**
- * Change font size
- */
- setFontSize(size) {
- this.fontSize = size;
- this.monacoCreator.jsEditor.updateOptions({ fontSize: size });
- var array = document.getElementsByClassName("displayFontSize");
- for (var i = 0; i < array.length; i++) {
- var subArray = array[i].children;
- for (var j = 0; j < subArray.length; j++) {
- subArray[j].classList.remove("selected");
- if (subArray[j].innerText == size)
- subArray[j].classList.add("selected");
- }
- }
- };
- /**
- * Toggle Typescript / Javascript language
- */
- setScriptLanguage() {
- for (var index = 0; index < this.elementForscriptLanguage.length; index++) {
- var obj = this.elementForscriptLanguage[index];
- var domObjArr = document.querySelectorAll(obj);
- for (var domObjIndex = 0; domObjIndex < domObjArr.length; domObjIndex++) {
- var domObj = domObjArr[domObjIndex];
- domObj.classList.remove('languageJS');
- domObj.classList.remove('languageTS');
- domObj.classList.add("language" + this.scriptLanguage);
- }
- }
- if (this.scriptLanguage == "JS") {
- setToMultipleID("toJSbutton", "removeClass", "floatLeft");
- }
- else if (this.scriptLanguage == "TS") {
- setToMultipleID("toJSbutton", "addClass", "floatLeft");
- }
- };
- /**
- * Set the theme (dark / light)
- */
- setTheme(theme) {
- localStorage.setItem("bjs-playground-theme", theme);
- // Get the Monaco theme name.
- // Change the selected button style
- setToMultipleID("darkTheme", "removeClass", "selected");
- setToMultipleID("lightTheme", "removeClass", "selected");
- if (theme == 'dark') {
- this.vsTheme = 'vs-dark';
- setToMultipleID("darkTheme", "addClass", "selected");
- }
- else {
- this.vsTheme = 'vs';
- setToMultipleID("lightTheme", "addClass", "selected");
- }
- this.monacoCreator.createMonacoEditor();
- this.setFontSize(this.fontSize);
- // Color the elements to theme
- for (var index = 0; index < this.elementToTheme.length; index++) {
- var obj = this.elementToTheme[index];
- var domObjArr = document.querySelectorAll(obj);
- for (var domObjIndex = 0; domObjIndex < domObjArr.length; domObjIndex++) {
- var domObj = domObjArr[domObjIndex];
- domObj.classList.remove('light');
- domObj.classList.remove('dark');
- domObj.classList.add(theme);
- }
- }
- };
- restoreTheme(monacoCreator) {
- this.setTheme(this.vsTheme, monacoCreator);
- };
- };
|