547 lines
100 KiB
JavaScript
547 lines
100 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var obsidian = require('obsidian');
|
||
|
|
||
|
/*! *****************************************************************************
|
||
|
Copyright (c) Microsoft Corporation.
|
||
|
|
||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||
|
purpose with or without fee is hereby granted.
|
||
|
|
||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
|
PERFORMANCE OF THIS SOFTWARE.
|
||
|
***************************************************************************** */
|
||
|
/* global Reflect, Promise */
|
||
|
|
||
|
var extendStatics = function(d, b) {
|
||
|
extendStatics = Object.setPrototypeOf ||
|
||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
|
return extendStatics(d, b);
|
||
|
};
|
||
|
|
||
|
function __extends(d, b) {
|
||
|
extendStatics(d, b);
|
||
|
function __() { this.constructor = d; }
|
||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
|
}
|
||
|
|
||
|
function __awaiter(thisArg, _arguments, P, generator) {
|
||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function __generator(thisArg, body) {
|
||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
|
function step(op) {
|
||
|
if (f) throw new TypeError("Generator is already executing.");
|
||
|
while (_) try {
|
||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
|
switch (op[0]) {
|
||
|
case 0: case 1: t = op; break;
|
||
|
case 4: _.label++; return { value: op[1], done: false };
|
||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
|
default:
|
||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
|
if (t[2]) _.ops.pop();
|
||
|
_.trys.pop(); continue;
|
||
|
}
|
||
|
op = body.call(thisArg, _);
|
||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var MinimalTheme = /** @class */ (function (_super) {
|
||
|
__extends(MinimalTheme, _super);
|
||
|
function MinimalTheme() {
|
||
|
return _super !== null && _super.apply(this, arguments) || this;
|
||
|
}
|
||
|
MinimalTheme.prototype.onload = function () {
|
||
|
return __awaiter(this, void 0, void 0, function () {
|
||
|
var _a, media, callback, lightStyles, darkStyles, theme;
|
||
|
var _this = this;
|
||
|
return __generator(this, function (_b) {
|
||
|
switch (_b.label) {
|
||
|
case 0:
|
||
|
_a = this;
|
||
|
return [4 /*yield*/, this.loadData()];
|
||
|
case 1:
|
||
|
_a.settings = (_b.sent()) || new MinimalSettings();
|
||
|
this.addSettingTab(new MinimalSettingTab(this.app, this));
|
||
|
this.addStyle();
|
||
|
media = window.matchMedia('(prefers-color-scheme: dark)');
|
||
|
callback = function () {
|
||
|
if (media.matches) {
|
||
|
console.log('Dark mode active');
|
||
|
_this.updateDarkStyle();
|
||
|
}
|
||
|
else {
|
||
|
console.log('Light mode active');
|
||
|
_this.updateLightStyle();
|
||
|
}
|
||
|
};
|
||
|
media.addEventListener('change', callback);
|
||
|
// Remove listener when we unload
|
||
|
this.register(function () { return media.removeEventListener('change', callback); });
|
||
|
lightStyles = ['minimal-light', 'minimal-light-tonal', 'minimal-light-contrast', 'minimal-light-white'];
|
||
|
darkStyles = ['minimal-dark', 'minimal-dark-tonal', 'minimal-dark-black'];
|
||
|
theme = ['theme-light', 'theme-dark'];
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-dark-cycle',
|
||
|
name: 'Cycle between dark mode styles',
|
||
|
callback: function () {
|
||
|
_this.settings.darkStyle = darkStyles[(darkStyles.indexOf(_this.settings.darkStyle) + 1) % darkStyles.length];
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateDarkStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-light-cycle',
|
||
|
name: 'Cycle between light mode styles',
|
||
|
callback: function () {
|
||
|
_this.settings.lightStyle = lightStyles[(lightStyles.indexOf(_this.settings.lightStyle) + 1) % lightStyles.length];
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateLightStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-hidden-borders',
|
||
|
name: 'Toggle sidebar borders',
|
||
|
callback: function () {
|
||
|
_this.settings.bordersToggle = !_this.settings.bordersToggle;
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.refresh();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-switch',
|
||
|
name: 'Switch between light and dark mode',
|
||
|
callback: function () {
|
||
|
_this.settings.theme = theme[(theme.indexOf(_this.settings.theme) + 1) % theme.length];
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateTheme();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-light-default',
|
||
|
name: 'Use light mode (default)',
|
||
|
callback: function () {
|
||
|
_this.settings.lightStyle = 'minimal-light';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateLightStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-light-white',
|
||
|
name: 'Use light mode (all white)',
|
||
|
callback: function () {
|
||
|
_this.settings.lightStyle = 'minimal-light-white';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateLightStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-light-tonal',
|
||
|
name: 'Use light mode (low contrast)',
|
||
|
callback: function () {
|
||
|
_this.settings.lightStyle = 'minimal-light-tonal';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateLightStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-light-contrast',
|
||
|
name: 'Use light mode (high contrast)',
|
||
|
callback: function () {
|
||
|
_this.settings.lightStyle = 'minimal-light-contrast';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateLightStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-dark-default',
|
||
|
name: 'Use dark mode (default)',
|
||
|
callback: function () {
|
||
|
_this.settings.darkStyle = 'minimal-dark';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateDarkStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-dark-tonal',
|
||
|
name: 'Use dark mode (low contrast)',
|
||
|
callback: function () {
|
||
|
_this.settings.darkStyle = 'minimal-dark-tonal';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateDarkStyle();
|
||
|
}
|
||
|
});
|
||
|
this.addCommand({
|
||
|
id: 'toggle-minimal-dark-black',
|
||
|
name: 'Use dark mode (true black)',
|
||
|
callback: function () {
|
||
|
_this.settings.darkStyle = 'minimal-dark-black';
|
||
|
_this.saveData(_this.settings);
|
||
|
_this.updateDarkStyle();
|
||
|
}
|
||
|
});
|
||
|
this.refresh();
|
||
|
if (this.settings.useSystemTheme) {
|
||
|
this.enableSystemTheme();
|
||
|
}
|
||
|
return [2 /*return*/];
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
// refresh function for when we change settings
|
||
|
MinimalTheme.prototype.refresh = function () {
|
||
|
// re-load the style
|
||
|
this.updateStyle();
|
||
|
};
|
||
|
// add the styling elements we need
|
||
|
MinimalTheme.prototype.addStyle = function () {
|
||
|
// add a css block for our settings-dependent styles
|
||
|
var css = document.createElement('style');
|
||
|
css.id = 'minimal-theme';
|
||
|
document.getElementsByTagName("head")[0].appendChild(css);
|
||
|
// add the main class
|
||
|
document.body.classList.add('minimal-theme');
|
||
|
// update the style with the settings-dependent styles
|
||
|
this.updateStyle();
|
||
|
};
|
||
|
// update the styles (at the start, or as the result of a settings change)
|
||
|
MinimalTheme.prototype.updateStyle = function () {
|
||
|
this.removeStyle();
|
||
|
document.body.classList.toggle('borders-none', !this.settings.bordersToggle);
|
||
|
document.body.classList.toggle('fancy-cursor', this.settings.fancyCursor);
|
||
|
document.body.classList.toggle('focus-mode', this.settings.focusMode);
|
||
|
document.body.classList.toggle('links-int-on', this.settings.underlineInternal);
|
||
|
document.body.classList.toggle('links-ext-on', this.settings.underlineExternal);
|
||
|
document.body.classList.toggle('system-shade', this.settings.useSystemTheme);
|
||
|
// get the custom css element
|
||
|
var el = document.getElementById('minimal-theme');
|
||
|
if (!el)
|
||
|
throw "minimal-theme element not found!";
|
||
|
else {
|
||
|
// set the settings-dependent css
|
||
|
el.innerText = "\n body.minimal-theme{\n --font-normal:" + this.settings.textNormal + "px;\n --font-small:" + this.settings.textSmall + "px;\n --line-width:" + this.settings.lineWidth + "rem;\n --font-monospace:" + this.settings.monoFont + ";\n --text:" + this.settings.textFont + ";\n --text-editor:" + this.settings.editorFont + ";\n --accent-h:" + this.settings.accentHue + ";\n --accent-s:" + this.settings.accentSat + "%;}\n ";
|
||
|
}
|
||
|
};
|
||
|
MinimalTheme.prototype.enableSystemTheme = function () {
|
||
|
this.app.workspace.layoutReady ? this.refreshSystemTheme() : this.app.workspace.on('layout-ready', this.refreshSystemTheme);
|
||
|
};
|
||
|
MinimalTheme.prototype.refreshSystemTheme = function () {
|
||
|
var isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
|
if (isDarkMode && this.settings.useSystemTheme) {
|
||
|
console.log('Dark mode active');
|
||
|
this.updateDarkStyle();
|
||
|
}
|
||
|
else if (this.settings.useSystemTheme) {
|
||
|
console.log('Light mode active');
|
||
|
this.updateLightStyle();
|
||
|
}
|
||
|
};
|
||
|
MinimalTheme.prototype.updateDarkStyle = function () {
|
||
|
document.body.removeClass('theme-light', 'minimal-dark', 'minimal-dark-tonal', 'minimal-dark-black');
|
||
|
document.body.addClass('theme-dark', this.settings.darkStyle);
|
||
|
this.app.workspace.trigger('css-change');
|
||
|
};
|
||
|
MinimalTheme.prototype.updateLightStyle = function () {
|
||
|
document.body.removeClass('theme-dark', 'minimal-light', 'minimal-light-tonal', 'minimal-light-contrast', 'minimal-light-white');
|
||
|
document.body.addClass('theme-light', this.settings.lightStyle);
|
||
|
this.app.workspace.trigger('css-change');
|
||
|
};
|
||
|
MinimalTheme.prototype.updateTheme = function () {
|
||
|
document.body.removeClass('theme-dark', 'theme-light');
|
||
|
document.body.addClass(this.settings.theme);
|
||
|
this.app.workspace.trigger('css-change');
|
||
|
};
|
||
|
MinimalTheme.prototype.removeStyle = function () {
|
||
|
document.body.removeClass('minimal-light', 'minimal-light-tonal', 'minimal-light-contrast', 'minimal-light-white', 'minimal-dark', 'minimal-dark-tonal', 'minimal-dark-black');
|
||
|
document.body.addClass(this.settings.lightStyle, this.settings.darkStyle);
|
||
|
};
|
||
|
return MinimalTheme;
|
||
|
}(obsidian.Plugin));
|
||
|
var MinimalSettings = /** @class */ (function () {
|
||
|
function MinimalSettings() {
|
||
|
this.theme = 'theme-light';
|
||
|
this.accentHue = 201;
|
||
|
this.accentSat = 17;
|
||
|
this.lightStyle = 'minimal-light';
|
||
|
this.darkStyle = 'minimal-dark';
|
||
|
this.textFont = '-apple-system,BlinkMacSystemFont,"Segoe UI Emoji","Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,sans-serif';
|
||
|
this.editorFont = '-apple-system,BlinkMacSystemFont,"Segoe UI Emoji","Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,sans-serif';
|
||
|
this.monoFont = 'Menlo,SFMono-Regular,Consolas,Roboto Mono,monospace';
|
||
|
this.bordersToggle = true;
|
||
|
this.fancyCursor = true;
|
||
|
this.focusMode = true;
|
||
|
this.lineWidth = 40;
|
||
|
this.textNormal = 16;
|
||
|
this.textSmall = 13;
|
||
|
this.underlineInternal = true;
|
||
|
this.underlineExternal = true;
|
||
|
this.useSystemTheme = false;
|
||
|
}
|
||
|
return MinimalSettings;
|
||
|
}());
|
||
|
var MinimalSettingTab = /** @class */ (function (_super) {
|
||
|
__extends(MinimalSettingTab, _super);
|
||
|
function MinimalSettingTab(app, plugin) {
|
||
|
var _this = _super.call(this, app, plugin) || this;
|
||
|
_this.plugin = plugin;
|
||
|
return _this;
|
||
|
}
|
||
|
MinimalSettingTab.prototype.display = function () {
|
||
|
var _this = this;
|
||
|
var containerEl = this.containerEl;
|
||
|
containerEl.empty();
|
||
|
containerEl.createEl('h3', { text: 'Minimal Theme Settings' });
|
||
|
containerEl.createEl('p', { text: 'If you notice any issues, update to the latest version of Minimal Theme and reload Obsidian. Download the Hider plugin for additional options to further simplify the Obsidian UI.' });
|
||
|
containerEl.createEl('a', { text: '⬤ Accent color' });
|
||
|
containerEl.createEl('h3');
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Accent color hue')
|
||
|
.setDesc('For links and interactive elements')
|
||
|
.addSlider(function (slider) { return slider
|
||
|
.setLimits(0, 360, 1)
|
||
|
.setValue(_this.plugin.settings.accentHue)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.accentHue = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Accent color saturation')
|
||
|
.setDesc('For links and interactive elements')
|
||
|
.addSlider(function (slider) { return slider
|
||
|
.setLimits(0, 100, 1)
|
||
|
.setValue(_this.plugin.settings.accentSat)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.accentSat = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Fancy cursor')
|
||
|
.setDesc('The editor cursor takes on your accent color')
|
||
|
.addToggle(function (toggle) { return toggle.setValue(_this.plugin.settings.fancyCursor)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.fancyCursor = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Use system-level setting for light or dark mode')
|
||
|
.setDesc('Automatically switch based on your operating system settings')
|
||
|
.addToggle(function (toggle) { return toggle.setValue(_this.plugin.settings.useSystemTheme)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.useSystemTheme = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refreshSystemTheme();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Light mode style')
|
||
|
.setDesc('Background colors in light mode')
|
||
|
.addDropdown(function (dropdown) { return dropdown
|
||
|
.addOption('minimal-light', 'Default')
|
||
|
.addOption('minimal-light-white', 'All white')
|
||
|
.addOption('minimal-light-tonal', 'Low contrast')
|
||
|
.addOption('minimal-light-contrast', 'High contrast')
|
||
|
.setValue(_this.plugin.settings.lightStyle)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.lightStyle = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.removeStyle();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Dark mode style')
|
||
|
.setDesc('Background colors in dark mode')
|
||
|
.addDropdown(function (dropdown) { return dropdown
|
||
|
.addOption('minimal-dark', 'Default')
|
||
|
.addOption('minimal-dark-tonal', 'Low contrast')
|
||
|
.addOption('minimal-dark-black', 'True black')
|
||
|
.setValue(_this.plugin.settings.darkStyle)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.darkStyle = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.removeStyle();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Toggle sidebar borders')
|
||
|
.setDesc('Hide or show sidebar borders')
|
||
|
.addToggle(function (toggle) { return toggle.setValue(_this.plugin.settings.bordersToggle)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.bordersToggle = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Focus mode')
|
||
|
.setDesc('When sidebars are collapsed hide action buttons (accessible by hovering)')
|
||
|
.addToggle(function (toggle) { return toggle.setValue(_this.plugin.settings.focusMode)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.focusMode = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Text font')
|
||
|
.setDesc('Used in preview mode — the font must also be installed on your computer')
|
||
|
.addDropdown(function (dropdown) { return dropdown
|
||
|
.addOption('-apple-system,BlinkMacSystemFont,"Segoe UI Emoji","Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,sans-serif', 'System font')
|
||
|
.addOption('Inter', 'Inter')
|
||
|
.addOption('iA Writer Mono S', 'iA Mono')
|
||
|
.addOption('iA Writer Duo S', 'iA Duo')
|
||
|
.addOption('iA Writer Quattro S', 'iA Quattro')
|
||
|
.addOption('SFMono-Regular', 'SF Mono')
|
||
|
.addOption('Consolas', 'Consolas')
|
||
|
.addOption('Roboto Mono', 'Roboto Mono')
|
||
|
.setValue(_this.plugin.settings.textFont)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.textFont = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Editor font')
|
||
|
.setDesc('Used in edit mode')
|
||
|
.addDropdown(function (dropdown) { return dropdown
|
||
|
.addOption('-apple-system,BlinkMacSystemFont,"Segoe UI Emoji","Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,sans-serif', 'System font')
|
||
|
.addOption('Inter', 'Inter')
|
||
|
.addOption('iA Writer Mono S', 'iA Mono')
|
||
|
.addOption('iA Writer Duo S', 'iA Duo')
|
||
|
.addOption('iA Writer Quattro S', 'iA Quattro')
|
||
|
.addOption('SFMono-Regular', 'SF Mono')
|
||
|
.addOption('Consolas', 'Consolas')
|
||
|
.addOption('Roboto Mono', 'Roboto Mono')
|
||
|
.setValue(_this.plugin.settings.editorFont)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.editorFont = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Monospace font')
|
||
|
.setDesc('Used for code blocks, front matter, etc')
|
||
|
.addDropdown(function (dropdown) { return dropdown
|
||
|
.addOption('Menlo,SFMono-Regular,Consolas,Roboto Mono,monospace', 'System font')
|
||
|
.addOption('iA Writer Mono S', 'iA Mono')
|
||
|
.addOption('iA Writer Duo S', 'iA Duo')
|
||
|
.addOption('iA Writer Quattro S', 'iA Quattro')
|
||
|
.addOption('SFMono-Regular', 'SF Mono')
|
||
|
.addOption('Consolas', 'Consolas')
|
||
|
.addOption('Roboto Mono', 'Roboto Mono')
|
||
|
.setValue(_this.plugin.settings.monoFont)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.monoFont = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Underline internal links')
|
||
|
.setDesc('Show underlines on internal links')
|
||
|
.addToggle(function (toggle) { return toggle.setValue(_this.plugin.settings.underlineInternal)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.underlineInternal = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Underline external links')
|
||
|
.setDesc('Show underlines on external links')
|
||
|
.addToggle(function (toggle) { return toggle.setValue(_this.plugin.settings.underlineExternal)
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.underlineExternal = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Line width')
|
||
|
.setDesc('The maximum number of characters per line (default 40)')
|
||
|
.addText(function (text) { return text.setPlaceholder('40')
|
||
|
.setValue((_this.plugin.settings.lineWidth || '') + '')
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.lineWidth = parseInt(value.trim());
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Body font size')
|
||
|
.setDesc('Used for the main text (default 16)')
|
||
|
.addText(function (text) { return text.setPlaceholder('16')
|
||
|
.setValue((_this.plugin.settings.textNormal || '') + '')
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.textNormal = parseInt(value.trim());
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Sidebar font size')
|
||
|
.setDesc('Used for text in the sidebars (default 13)')
|
||
|
.addText(function (text) { return text.setPlaceholder('13')
|
||
|
.setValue((_this.plugin.settings.textSmall || '') + '')
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.textSmall = parseInt(value.trim());
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
containerEl.createEl('br');
|
||
|
containerEl.createEl('h3');
|
||
|
containerEl.createEl('h3', { text: 'Custom fonts' });
|
||
|
containerEl.createEl('p', { text: 'These settings override the dropdowns above. Make sure to use the exact name of the font as it appears on your system.' });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Custom text font')
|
||
|
.setDesc('Used in preview mode')
|
||
|
.addText(function (text) { return text.setPlaceholder('')
|
||
|
.setValue((_this.plugin.settings.textFont || '') + '')
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.textFont = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Custom editor font')
|
||
|
.setDesc('Used in edit mode')
|
||
|
.addText(function (text) { return text.setPlaceholder('')
|
||
|
.setValue((_this.plugin.settings.editorFont || '') + '')
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.editorFont = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
new obsidian.Setting(containerEl)
|
||
|
.setName('Custom monospace font')
|
||
|
.setDesc('Used for code blocks, front matter, etc')
|
||
|
.addText(function (text) { return text.setPlaceholder('')
|
||
|
.setValue((_this.plugin.settings.monoFont || '') + '')
|
||
|
.onChange(function (value) {
|
||
|
_this.plugin.settings.monoFont = value;
|
||
|
_this.plugin.saveData(_this.plugin.settings);
|
||
|
_this.plugin.refresh();
|
||
|
}); });
|
||
|
};
|
||
|
return MinimalSettingTab;
|
||
|
}(obsidian.PluginSettingTab));
|
||
|
|
||
|
module.exports = MinimalTheme;
|
||
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmF
|