Oscar Plaisant 9662f353ee update
2024-03-28 23:43:36 +01:00

236 lines
7.3 KiB
JavaScript

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// main.ts
__export(exports, {
default: () => PersistentGraphPlugin
});
var import_obsidian = __toModule(require("obsidian"));
var DEFAULT_SETTINGS = {
nodePositions: [],
automaticallyRestoreNodePositions: false
};
var PersistentGraphPlugin = class extends import_obsidian.Plugin {
findGraphLeaf() {
let activeLeaf = this.app.workspace.activeLeaf;
if (activeLeaf.view.getViewType() === "graph") {
return activeLeaf;
}
let graphLeaves = this.app.workspace.getLeavesOfType("graph");
if (graphLeaves.length != 1) {
if (graphLeaves.length < 1) {
new import_obsidian.Notice("No graph view open");
} else {
new import_obsidian.Notice("More than one graph view open, please choose an active one");
}
return;
}
return graphLeaves[0];
}
saveNodePositions() {
let graphLeaf = this.findGraphLeaf();
if (!graphLeaf)
return;
return graphLeaf.view.renderer.nodes.map((node) => {
return {
id: node.id,
x: node.x,
y: node.y
};
});
}
restoreNodePositions(nodePositions, graphLeaf) {
if (graphLeaf === void 0) {
graphLeaf = this.findGraphLeaf();
}
if (!graphLeaf)
return;
nodePositions.forEach((node) => {
graphLeaf.view.renderer.worker.postMessage({
forceNode: node
});
});
graphLeaf.view.renderer.worker.postMessage({
run: true,
alpha: 0.1
});
setTimeout(() => {
nodePositions.forEach((node) => {
if (!graphLeaf)
return;
graphLeaf.view.renderer.worker.postMessage({
forceNode: {
id: node.id,
x: null,
y: null
}
});
});
}, 1e3);
}
runGraphSimlation() {
let graphLeaf = this.findGraphLeaf();
if (!graphLeaf)
return;
graphLeaf.view.renderer.worker.postMessage({
run: true,
alpha: 1,
alphaTarget: 1
});
}
stopGraphSimulation() {
let graphLeaf = this.findGraphLeaf();
if (!graphLeaf)
return;
graphLeaf.view.renderer.worker.postMessage({
run: true,
alpha: 0,
alphaTarget: 0
});
}
onLayoutChange() {
const activeLeaf = this.app.workspace.activeLeaf;
if (activeLeaf.view.getViewType() != "graph" || activeLeaf.view.renderer.autoRestored) {
return;
}
activeLeaf.view.renderer.autoRestored = true;
setTimeout(() => {
this.restoreOnceNodeCountStable(activeLeaf, 0, 0, 0);
}, 1e3);
}
restoreOnceNodeCountStable(leaf, nodeCount, iterations, totalIterations) {
if (!leaf || !leaf.view || !leaf.view.renderer) {
return;
}
if (totalIterations > 20) {
return;
}
if (this.settings.automaticallyRestoreNodePositions) {
const currentNodeCount = leaf.view.renderer.nodes.length;
if (currentNodeCount === nodeCount) {
if (iterations >= 3) {
this.restoreNodePositions(this.settings.nodePositions, leaf);
new import_obsidian.Notice("Automatically restored node positions");
} else {
setTimeout(() => {
this.restoreOnceNodeCountStable(leaf, currentNodeCount, iterations + 1, totalIterations + 1);
}, 200);
}
} else {
setTimeout(() => {
this.restoreOnceNodeCountStable(leaf, currentNodeCount, 0, totalIterations + 1);
}, 200);
}
}
}
onload() {
return __async(this, null, function* () {
yield this.loadSettings();
this.addCommand({
id: "save-node-positions",
name: "Save graph node positions",
callback: () => __async(this, null, function* () {
this.settings.nodePositions = this.saveNodePositions();
yield this.saveSettings();
})
});
this.addCommand({
id: "restore-node-positions",
name: "Restore graph node positions",
callback: () => {
this.restoreNodePositions(this.settings.nodePositions);
}
});
this.addCommand({
id: "run-graph-simulation",
name: "Run graph simulation",
callback: () => {
this.runGraphSimlation();
}
});
this.addCommand({
id: "stop-graph-simulation",
name: "Stop graph simulation",
callback: () => {
this.stopGraphSimulation();
}
});
this.addSettingTab(new PersistentGraphSettingTab(this.app, this));
this.registerEvent(this.app.workspace.on("layout-change", this.onLayoutChange.bind(this)));
});
}
onunload() {
}
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
};
var PersistentGraphSettingTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Settings for PersistentGraphPlugin" });
new import_obsidian.Setting(containerEl).setName("Automatically restore node positions").setDesc("Restore node positions every time a graph view is opened").addToggle((toggle) => toggle.setValue(this.plugin.settings.automaticallyRestoreNodePositions).onChange((value) => {
this.plugin.settings.automaticallyRestoreNodePositions = value;
this.plugin.saveSettings();
}));
}
};