forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathThemeSettings.js
More file actions
1 lines (1 loc) · 4.48 KB
/
Copy pathThemeSettings.js
File metadata and controls
1 lines (1 loc) · 4.48 KB
1
define(function(require,exports,module){let _=require("thirdparty/lodash"),Mustache=require("thirdparty/mustache/mustache"),Dialogs=require("widgets/Dialogs"),Strings=require("strings"),ViewCommandHandlers=require("view/ViewCommandHandlers"),settingsTemplate=require("text!htmlContent/themes-settings.html"),PreferencesManager=require("preferences/PreferencesManager"),CommandManager=require("command/CommandManager"),Commands=require("command/Commands"),prefs=PreferencesManager.getExtensionPrefs("themes");const MOUSE_WHEEL_SCROLL_SENSITIVITY="mouseWheelScrollSensitivity";let loadedThemes={};const SYSTEM_DEFAULT_THEME="system-default",DEFAULTS={themeScrollbars:!0,theme:SYSTEM_DEFAULT_THEME,lightTheme:"light-theme",darkTheme:"dark-theme",editorLineHeight:1.5};var $settings=$(settingsTemplate).addClass("themeSettings");function getValues(){var result={};return Object.keys(DEFAULTS).forEach(function(key){result[key]=prefs.get(key)}),result.fontFamily=ViewCommandHandlers.getFontFamily(),result.fontSize=ViewCommandHandlers.getFontSize(),result.validFontSizeRegExp=ViewCommandHandlers.validFontSizeRegExp,result.scrollSensitivity=PreferencesManager.get(MOUSE_WHEEL_SCROLL_SENSITIVITY),result}function showDialog(){const currentSettings=getValues(),newSettings={},themes=_.map(loadedThemes,function(theme){return theme});themes.unshift({displayName:Strings.SYSTEM_DEFAULT,name:SYSTEM_DEFAULT_THEME});const template=$("<div>").append($settings).html(),$template=$(Mustache.render(template,{settings:currentSettings,themes:themes,Strings:Strings}));var $currentThemeOption=$template.find("[value='"+currentSettings.theme+"']");0===$currentThemeOption.length&&($currentThemeOption=$template.find("[value='"+DEFAULTS.theme+"']")),$currentThemeOption.attr("selected","selected"),$template.find("[data-toggle=tab].default").tab("show"),$template.on("change","[data-target]:checkbox",function(){var $target=$(this),attr=$target.attr("data-target");newSettings[attr]=$target.is(":checked")}).on("input","[data-target='fontSize']",function(){var target=this,targetValue=$(this).val(),$btn=$("#theme-settings-done-btn")[0];!0===this.checkValidity()?($btn.disabled=!1,newSettings.fontSize=targetValue):$btn.disabled=!0}).on("input","[data-target='fontFamily']",function(){var targetValue=$(this).val();newSettings.fontFamily=targetValue}).on("input",".fontLineHeightSlider",function(){const targetValue=$(this).val();$template.find(".fontLineHeightValue").text(targetValue),newSettings.editorLineHeight=targetValue,prefs.set("editorLineHeight",targetValue+"")}).on("input",".scrollSensitivitySlider",function(){const targetValue=parseFloat($(this).val());$template.find(".scrollSensitivityValue").text(targetValue),newSettings.scrollSensitivity=targetValue,PreferencesManager.set(MOUSE_WHEEL_SCROLL_SENSITIVITY,targetValue)}).on("change","select",function(){var $target=$(":selected",this),attr=$target.attr("data-target");attr&&prefs.set(attr,$target.val())});const dialog=Dialogs.showModalDialogUsingTemplate($template);dialog.done(function(id){var setterFn;"save"===id?Object.keys(newSettings).forEach(function(setting){DEFAULTS.hasOwnProperty(setting)?prefs.set(setting,newSettings[setting]):(setterFn="set"+setting[0].toLocaleUpperCase()+setting.substr(1),"function"==typeof ViewCommandHandlers[setterFn]&&ViewCommandHandlers[setterFn](newSettings[setting]))}):"cancel"===id&&(prefs.set("theme",currentSettings.theme),prefs.set("editorLineHeight",currentSettings.editorLineHeight),PreferencesManager.set(MOUSE_WHEEL_SCROLL_SENSITIVITY,currentSettings.scrollSensitivity))}),$template.find(".get-more-themes").click(function(event){event.preventDefault(),event.stopPropagation(),dialog.close(),CommandManager.execute(Commands.FILE_EXTENSION_MANAGER,"themes")})}function setThemes(themes){loadedThemes=themes}function restore(){prefs.set("theme",DEFAULTS.theme),prefs.set("themeScrollbars",DEFAULTS.themeScrollbars)}prefs.definePreference("theme","string",DEFAULTS.theme,{description:Strings.DESCRIPTION_THEME}),prefs.definePreference("themeScrollbars","boolean",DEFAULTS.themeScrollbars,{description:Strings.DESCRIPTION_USE_THEME_SCROLLBARS}),prefs.definePreference("editorLineHeight","number",DEFAULTS.editorLineHeight,{description:Strings.DESCRIPTION_EDITOR_LINE_HEIGHT}),prefs.on("change","editorLineHeight",function(){const lineHeight=prefs.get("editorLineHeight")+"",$phoenixMain=$("#Phoenix-Main");$phoenixMain[0].style.setProperty("--editor-line-height",lineHeight)}),exports.DEFAULTS=DEFAULTS,exports._setThemes=setThemes,exports.restore=restore,exports.showDialog=showDialog});