173 lines
13 KiB
JavaScript
173 lines
13 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: () => MyPlugin
|
|
});
|
|
var import_obsidian3 = __toModule(require("obsidian"));
|
|
|
|
// CreationModal.ts
|
|
var import_obsidian2 = __toModule(require("obsidian"));
|
|
|
|
// ErrorModal.ts
|
|
var import_obsidian = __toModule(require("obsidian"));
|
|
var ErrorModal = class extends import_obsidian.Modal {
|
|
constructor(app, error) {
|
|
super(app);
|
|
this.error = error;
|
|
}
|
|
onOpen() {
|
|
this.contentEl.createEl("h1", { text: this.error.message });
|
|
}
|
|
onClose() {
|
|
this.contentEl.empty();
|
|
}
|
|
};
|
|
|
|
// CreationModal.ts
|
|
var CreationModal = class extends import_obsidian2.Modal {
|
|
constructor(app) {
|
|
super(app);
|
|
this.matrixWidth = 2;
|
|
this.matrixHeight = 2;
|
|
}
|
|
onOpen() {
|
|
this.createHTML();
|
|
new import_obsidian2.Setting(this.settingsDiv).setName("Matrix width").addSlider((slider) => {
|
|
slider.setValue(2);
|
|
slider.setLimits(1, 10, 1);
|
|
slider.showTooltip();
|
|
slider.setDynamicTooltip();
|
|
slider.onChange((value) => {
|
|
this.matrixWidth = value;
|
|
this.regenerateMatrix();
|
|
});
|
|
});
|
|
new import_obsidian2.Setting(this.settingsDiv).setName("Matrix height").addSlider((slider) => {
|
|
slider.setValue(2);
|
|
slider.setLimits(1, 10, 1);
|
|
slider.showTooltip();
|
|
slider.setDynamicTooltip();
|
|
slider.onChange((value) => {
|
|
this.matrixHeight = value;
|
|
this.regenerateMatrix();
|
|
});
|
|
});
|
|
new import_obsidian2.Setting(this.settingsDiv).setName("Create").addButton((button) => {
|
|
button.setIcon("checkmark");
|
|
button.setCta();
|
|
button.onClick(() => {
|
|
let chunks = Array.from(this.matrixDiv.children).map((child) => {
|
|
return child.value;
|
|
}).reduce((resultArray, item, index) => {
|
|
const chunkIndex = Math.floor(index / this.matrixWidth);
|
|
if (!resultArray[chunkIndex]) {
|
|
resultArray[chunkIndex] = [];
|
|
}
|
|
resultArray[chunkIndex].push(item);
|
|
return resultArray;
|
|
}, []);
|
|
let latexString = chunks.map((chunk) => {
|
|
return chunk.join(" & ");
|
|
}).join(" \\\\\n");
|
|
this.writeAtCursor(`\\begin{pmatrix}
|
|
${latexString}
|
|
\\end{pmatrix}`);
|
|
this.close();
|
|
});
|
|
});
|
|
this.createInputs();
|
|
this.applyCorrectStyle();
|
|
}
|
|
onClose() {
|
|
this.contentEl.empty();
|
|
}
|
|
createHTML() {
|
|
this.parentDiv = this.contentEl.createEl("div", { cls: "parentDiv" });
|
|
this.settingsDiv = this.parentDiv.createEl("div", { cls: "settingsDiv" });
|
|
this.matrixDiv = this.parentDiv.createEl("div", { cls: "matrixDiv" });
|
|
}
|
|
applyCorrectStyle() {
|
|
this.matrixDiv.style.gridTemplateColumns = `repeat(${this.matrixWidth}, 1fr)`;
|
|
this.matrixDiv.style.gridTemplateRows = `repeat(${this.matrixHeight}, 1fr)`;
|
|
}
|
|
createInputs() {
|
|
for (let i = 0; i < this.matrixWidth * this.matrixHeight; i++) {
|
|
this.matrixDiv.createEl("input", { type: "text", cls: "matrixInput" });
|
|
}
|
|
}
|
|
regenerateMatrix() {
|
|
this.matrixDiv.empty();
|
|
this.createInputs();
|
|
this.applyCorrectStyle();
|
|
}
|
|
writeAtCursor(toWrite) {
|
|
const mdView = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
|
|
if (mdView) {
|
|
mdView.editor.replaceRange(toWrite, mdView.editor.getCursor());
|
|
} else {
|
|
this.close();
|
|
new ErrorModal(this.app, new Error("No markdown view open")).open();
|
|
}
|
|
}
|
|
};
|
|
|
|
// main.ts
|
|
var MyPlugin = class extends import_obsidian3.Plugin {
|
|
onload() {
|
|
return __async(this, null, function* () {
|
|
this.addRibbonIcon("pane-layout", "Obsidian Matrix", () => {
|
|
new CreationModal(this.app).open();
|
|
});
|
|
});
|
|
}
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyIsICJDcmVhdGlvbk1vZGFsLnRzIiwgIkVycm9yTW9kYWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7UGx1Z2lufSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCBDcmVhdGlvbk1vZGFsIGZyb20gXCIuL0NyZWF0aW9uTW9kYWxcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE15UGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcclxuXHJcblx0YXN5bmMgb25sb2FkKCkge1xyXG5cdFx0dGhpcy5hZGRSaWJib25JY29uKFwicGFuZS1sYXlvdXRcIiwgXCJPYnNpZGlhbiBNYXRyaXhcIiwgKCkgPT4ge1xyXG5cdFx0XHRuZXcgQ3JlYXRpb25Nb2RhbCh0aGlzLmFwcCkub3BlbigpXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwgImltcG9ydCB7QXBwLCBNYXJrZG93blZpZXcsIE1vZGFsLCBTZXR0aW5nfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBFcnJvck1vZGFsIGZyb20gXCIuL0Vycm9yTW9kYWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3JlYXRpb25Nb2RhbCBleHRlbmRzIE1vZGFsIHtcblxuXHRwcml2YXRlIG1hdHJpeFdpZHRoOiBudW1iZXIgPSAyO1xuXHRwcml2YXRlIG1hdHJpeEhlaWdodDogbnVtYmVyID0gMjtcblx0cHJpdmF0ZSBwYXJlbnREaXY6IEhUTUxEaXZFbGVtZW50O1xuXHRwcml2YXRlIHNldHRpbmdzRGl2OiBIVE1MRGl2RWxlbWVudDtcblx0cHJpdmF0ZSBtYXRyaXhEaXY6IEhUTUxEaXZFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHR0aGlzLmNyZWF0ZUhUTUwoKTtcblx0XHRuZXcgU2V0dGluZyh0aGlzLnNldHRpbmdzRGl2KS5zZXROYW1lKFwiTWF0cml4IHdpZHRoXCIpLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7XG5cdFx0XHRzbGlkZXIuc2V0VmFsdWUoMik7XG5cdFx0XHRzbGlkZXIuc2V0TGltaXRzKDEsIDEwLCAxKTtcblx0XHRcdHNsaWRlci5zaG93VG9vbHRpcCgpO1xuXHRcdFx0c2xpZGVyLnNldER5bmFtaWNUb29sdGlwKCk7XG5cdFx0XHRzbGlkZXIub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMubWF0cml4V2lkdGggPSB2YWx1ZTtcblx0XHRcdFx0dGhpcy5yZWdlbmVyYXRlTWF0cml4KCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyh0aGlzLnNldHRpbmdzRGl2KS5zZXROYW1lKFwiTWF0cml4IGhlaWdodFwiKS5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge1xuXHRcdFx0c2xpZGVyLnNldFZhbHVlKDIpO1xuXHRcdFx0c2xpZGVyLnNldExpbWl0cygxLCAxMCwgMSk7XG5cdFx0XHRzbGlkZXIuc2hvd1Rvb2x0aXAoKTtcblx0XHRcdHNsaWRlci5zZXREeW5hbWljVG9vbHRpcCgpO1xuXHRcdFx0c2xpZGVyLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aGlzLm1hdHJpeEhlaWdodCA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLnJlZ2VuZXJhdGVNYXRyaXgoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKHRoaXMuc2V0dGluZ3NEaXYpLnNldE5hbWUoXCJDcmVhdGVcIikuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiY2hlY2ttYXJrXCIpO1xuXHRcdFx0YnV0dG9uLnNldEN0YSgpO1xuXHRcdFx0YnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRsZXQgY2h1bmtzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IEFycmF5LmZyb20odGhpcy5tYXRyaXhEaXYuY2hpbGRyZW4pLm1hcCgoY2hpbGQpID0+IHtcblx0XHRcdFx0XHQvL0B0cy1pZ25vcmVcblx0XHRcdFx0XHRyZXR1cm4gY2hpbGQudmFsdWU7XG5cdFx0XHRcdH0pLnJlZHVjZSgocmVzdWx0QXJyYXksIGl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2h1bmtJbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyB0aGlzLm1hdHJpeFdpZHRoKTtcblx0XHRcdFx0XHRpZiAoIXJlc3VsdEFycmF5W2NodW5rSW5kZXhdKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRBcnJheVtjaHVua0luZGV4XSA9IFtdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXN1bHRBcnJheVtjaHVua0luZGV4XS5wdXNoKGl0ZW0pO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRBcnJheTtcblx0XHRcdFx0fSwgW10pO1xuXHRcdFx0XHRsZXQgbGF0ZXhTdHJpbmcgPSBjaHVua3MubWFwKChjaHVuaykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBjaHVuay5qb2luKFwiICYgXCIpO1xuXHRcdFx0XHR9KS5qb2luKFwiIFxcXFxcXFxcXFxuXCIpO1xuXHRcdFx0XHR0aGlzLndyaXRlQXRDdXJzb3IoYFxcXFxiZWdpbntwbWF0cml4fVxcbiR7bGF0ZXhTdHJpbmd9XFxuXFxcXGVuZHtwbWF0cml4fWApO1xuXHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHR0aGlzLmNyZWF0ZUlucHV0cygpO1xuXHRcdHRoaXMuYXBwbHlDb3JyZWN0U3R5bGUoKTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0dGhpcy5jb250ZW50RWwuZW1wdHkoKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlSFRNTCgpIHtcblx0XHR0aGlzLnBhcmVudERpdiA9IHRoaXMuY29udGVudEVsLmNyZWF0ZUVsKFwiZGl2XCIsIHtjbHM6IFwicGFyZW50RGl2XCJ9KTtcblx0XHR0aGlzLnNldHRpbmdzRGl2ID0gdGhpcy5wYXJlbnREaXYuY3JlYXRlRWwoXCJkaXZcIiwge2NsczogXCJzZXR0aW5nc0RpdlwifSk7XG5cdFx0dGhpcy5tYXRyaXhEaXYgPSB0aGlzLnBhcmVudERpdi5jcmVhdGVFbChcImRpdlwiLCB7Y2xzOiBcIm1hdHJpeERpdlwifSk7XG5cblx0fVxuXG5cdHByaXZhdGUgYXBwbHlDb3JyZWN0U3R5bGUoKSB7XG5cdFx0dGhpcy5tYXRyaXhEaXYuc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1ucyA9IGByZXBlYXQoJHt0aGlzLm1hdHJpeFdpZHRofSwgMWZyKWA7XG5cdFx0dGhpcy5tYXRyaXhEaXYuc3R5bGUuZ3JpZFRlbXBsYXRlUm93cyA9IGByZXBlYXQoJHt0aGlzLm1hdHJpeEhlaWdodH0sIDFmcilgO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVJbnB1dHMoKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hdHJpeFdpZHRoICogdGhpcy5tYXRyaXhIZWlnaHQ7IGkrKykge1xuXHRcdFx0dGhpcy5tYXRyaXhEaXYuY3JlYXRlRWwoXCJpbnB1dFwiLCB7dHlwZTogXCJ0ZXh0XCIsIGNsczogXCJtYXRyaXhJbnB1dFwifSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZWdlbmVyYXRlTWF0cml4KCkge1xuXHRcdHRoaXMubWF0cml4RGl2LmVtcHR5KCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dHMoKTtcblx0XHR0aGlzLmFwcGx5Q29ycmVjdFN0eWxlKCk7XG5cdH1cblxuXHRwcml2YXRlIHdyaXRlQXRDdXJzb3IodG9Xcml0ZTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgbWRWaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblx0XHRpZiAobWRWaWV3KSB7XG5cdFx0XHRtZFZpZXcuZWRpdG9yLnJlcGxhY2VSYW5nZSh0b1dyaXRlLCBtZFZpZXcuZWRpdG9yLmdldEN1cnNvcigpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jbG9zZSgpXG5cdFx0XHRuZXcgRXJyb3JNb2RhbCh0aGlzLmFwcCwgbmV3IEVycm9yKFwiTm8gbWFya2Rvd24gdmlldyBvcGVuXCIpKS5vcGVuKCk7XG5cdFx0fVxuXHR9XG59XG4iLCAiaW1wb3J0IHtBcHAsIE1vZGFsfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JNb2RhbCBleHRlbmRzIE1vZGFsIHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGVycm9yOiBFcnJvcjtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgZXJyb3I6IEVycm9yKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0XHR0aGlzLmVycm9yID0gZXJyb3I7XG5cdH1cblxuXHRvbk9wZW4oKSB7XG5cdFx0dGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IHRoaXMuZXJyb3IubWVzc2FnZSB9KTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0dGhpcy5jb250ZW50RWwuZW1wdHkoKTtcblx0fVxuXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUFxQjs7O0FDQXJCLHVCQUFnRDs7O0FDQWhELHNCQUF5QjtBQUV6QiwrQkFBd0Msc0JBQU07QUFBQSxFQUk3QyxZQUFZLEtBQVUsT0FBYztBQUNuQyxVQUFNO0FBQ04sU0FBSyxRQUFRO0FBQUE7QUFBQSxFQUdkLFNBQVM7QUFDUixTQUFLLFVBQVUsU0FBUyxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU07QUFBQTtBQUFBLEVBR2xELFVBQVU7QUFDVCxTQUFLLFVBQVU7QUFBQTtBQUFBOzs7QURiakIsa0NBQTJDLHVCQUFNO0FBQUEsRUFRaEQsWUFBWSxLQUFVO0FBQ3JCLFVBQU07QUFQQyx1QkFBc0I7QUFDdEIsd0JBQXVCO0FBQUE7QUFBQSxFQVMvQixTQUFTO0FBQ1IsU0FBSztBQUNMLFFBQUkseUJBQVEsS0FBSyxhQUFhLFFBQVEsZ0JBQWdCLFVBQVUsQ0FBQyxX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
|