Files
journal/.obsidian/plugins/obsidian-focus-mode/main.js
Thaddeus Hughes 608c43a71f init
2025-10-09 20:43:40 -05:00

181 lines
15 KiB
JavaScript

/*
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
if you want to view the source visit the plugins github repository
*/
'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.
***************************************************************************** */
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());
});
}
class FocusMode extends obsidian.Plugin {
constructor() {
super(...arguments);
this.focusModeActive = false;
this.maximisedClass = "maximised";
this.focusModeClass = "focus-mode";
this.superFocusModeClass = "super-focus-mode";
}
storeSplitsValues() {
// @ts-ignore
this.leftSplitCollapsed = this.app.workspace.leftSplit.collapsed;
// @ts-ignore
this.rightSplitCollapsed = this.app.workspace.rightSplit.collapsed;
}
collapseSplits() {
// @ts-ignore
this.app.workspace.leftSplit.collapse();
// @ts-ignore
this.app.workspace.rightSplit.collapse();
}
restoreSplits() {
if (!this.leftSplitCollapsed) {
// @ts-ignore
this.app.workspace.leftSplit.expand();
}
if (!this.rightSplitCollapsed) {
// @ts-ignore
this.app.workspace.rightSplit.expand();
}
}
removeExtraneousClasses() {
if (
// @ts-ignore
this.app.workspace.rootSplit.containerEl.hasClass(this.maximisedClass)) {
// @ts-ignore
this.app.workspace.rootSplit.containerEl.removeClass(this.maximisedClass);
// @ts-ignore
this.app.workspace.onLayoutChange();
}
if (document.body.classList.contains(this.superFocusModeClass)) {
document.body.classList.remove(this.superFocusModeClass);
}
}
sharedFocusModeCommands() {
this.focusModeActive = true;
// @ts-ignore
this.app.on("active-leaf-change", () => {
try {
// @ts-ignore
this.app.workspace.activeLeaf.view.editor.blur();
// @ts-ignore
this.app.workspace.activeLeaf.view.editor.focus();
// @ts-ignore
this.app.workspace.activeLeaf.view.editor.refresh();
}
catch (ignore) { }
});
if (!document.body.classList.contains(this.focusModeClass)) {
this.storeSplitsValues();
}
this.collapseSplits();
}
enableSuperFocusMode() {
this.sharedFocusModeCommands();
// @ts-ignore
this.app.workspace.rootSplit.containerEl.toggleClass(this.maximisedClass,
// @ts-ignore
!this.app.workspace.rootSplit.containerEl.hasClass(this.maximisedClass));
document.body.classList.toggle(this.superFocusModeClass, !document.body.classList.contains(this.superFocusModeClass));
if (!document.body.classList.contains(this.focusModeClass)) {
document.body.classList.add(this.focusModeClass);
}
if (document.body.classList.contains(this.superFocusModeClass)) {
Array.from(document.querySelectorAll(`.${this.superFocusModeClass} .workspace-split`)).forEach((node) => {
const theNode = node;
const hasActiveKids = theNode.querySelector(".mod-active");
if (hasActiveKids) {
theNode.style.display = "flex";
}
else {
theNode.style.display = "none";
}
});
}
// @ts-ignore
this.app.workspace.onLayoutChange();
}
enableFocusMode() {
this.sharedFocusModeCommands();
this.removeExtraneousClasses();
document.body.classList.toggle(this.focusModeClass, !document.body.classList.contains(this.focusModeClass));
}
disableFocusMode() {
this.removeExtraneousClasses();
if (document.body.classList.contains(this.focusModeClass)) {
document.body.classList.remove(this.focusModeClass);
}
this.restoreSplits();
Array.from(document.querySelectorAll(".workspace-split")).forEach((node) => {
const theNode = node;
theNode.style.display = "flex";
});
this.focusModeActive = false;
}
toggleFocusMode(superFocus = false) {
if (superFocus) {
this.enableSuperFocusMode();
}
else if (this.focusModeActive) {
this.disableFocusMode();
}
else {
this.enableFocusMode();
}
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
console.log("Loading Focus Mode plugin ...");
this.addRibbonIcon("enter", "Toggle Focus Mode (Shift + Click to show active pane only)", (event) => {
this.toggleFocusMode(event.shiftKey);
});
this.addCommand({
id: "toggle-focus-mode",
name: "Toggle Focus Mode",
callback: () => {
this.toggleFocusMode();
},
hotkeys: [{ modifiers: ["Alt", "Mod"], key: "Z" }],
});
this.addCommand({
id: "toggle-super-focus-mode",
name: "Toggle Super Focus Mode (Active pane only)",
callback: () => {
this.toggleFocusMode(true);
},
hotkeys: [{ modifiers: ["Alt", "Mod", "Shift"], key: "Z" }],
});
});
}
onunload() {
console.log("Unloading Focus Mode plugin ...");
}
}
module.exports = FocusMode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxN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