chore: first commit
This commit is contained in:
commit
008389d312
242 changed files with 27381 additions and 0 deletions
4
.obsidian/plugins/obsidian-scroll-offset/data.json
vendored
Normal file
4
.obsidian/plugins/obsidian-scroll-offset/data.json
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"percentageMode": false,
|
||||
"offset": "15"
|
||||
}
|
||||
200
.obsidian/plugins/obsidian-scroll-offset/main.js
vendored
Normal file
200
.obsidian/plugins/obsidian-scroll-offset/main.js
vendored
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
/*
|
||||
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());
|
||||
});
|
||||
};
|
||||
|
||||
// src/main.ts
|
||||
__export(exports, {
|
||||
default: () => ScrollOffset
|
||||
});
|
||||
var import_obsidian = __toModule(require("obsidian"));
|
||||
|
||||
// src/ScrollOffsetCM6.ts
|
||||
var import_view = __toModule(require("@codemirror/view"));
|
||||
var import_state = __toModule(require("@codemirror/state"));
|
||||
var eventHandlers = {
|
||||
mousedown(event, view) {
|
||||
this.switch = false;
|
||||
},
|
||||
keydown(event, view) {
|
||||
this.switch = true;
|
||||
}
|
||||
};
|
||||
function generateScrollOffsetCM6Plugin(calcRequiredOffset) {
|
||||
return import_state.Prec.highest(import_view.ViewPlugin.fromClass(class {
|
||||
constructor(_view) {
|
||||
this.margin = 200;
|
||||
this.switch = true;
|
||||
}
|
||||
update(_update) {
|
||||
if (!_update.selectionSet)
|
||||
return;
|
||||
const view = _update.view;
|
||||
view.requestMeasure({
|
||||
read: () => {
|
||||
return {
|
||||
cursor: view.coordsAtPos(view.state.selection.main.head)
|
||||
};
|
||||
},
|
||||
write: ({ cursor }) => {
|
||||
if (!cursor)
|
||||
return;
|
||||
if (this.switch) {
|
||||
const cursorHeight = cursor.bottom - cursor.top + 5;
|
||||
const requiredOffset = calcRequiredOffset(view.dom, cursorHeight);
|
||||
this.margin = requiredOffset;
|
||||
} else {
|
||||
this.margin = 0;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, {
|
||||
eventHandlers,
|
||||
provide: (plugin) => import_view.EditorView.scrollMargins.of((view) => {
|
||||
const value = view.plugin(plugin);
|
||||
return {
|
||||
top: value.margin,
|
||||
bottom: value.margin
|
||||
};
|
||||
})
|
||||
}));
|
||||
}
|
||||
var ScrollOffsetCM6_default = generateScrollOffsetCM6Plugin;
|
||||
|
||||
// src/main.ts
|
||||
var DEFAULT_SETTINGS = {
|
||||
percentageMode: true,
|
||||
offset: "25"
|
||||
};
|
||||
var ScrollOffset = class extends import_obsidian.Plugin {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.clickSwitch = true;
|
||||
this.mouseDownHandler = () => {
|
||||
this.clickSwitch = false;
|
||||
};
|
||||
this.cursorActiveHandler = (cm) => {
|
||||
if (!this.clickSwitch) {
|
||||
this.clickSwitch = true;
|
||||
return;
|
||||
}
|
||||
this.scrollLaunch(cm);
|
||||
};
|
||||
this.calcRequiredOffset = (container, cursorHeight) => {
|
||||
const { settings } = this;
|
||||
const maxOffset = (container.offsetHeight - cursorHeight) / 2;
|
||||
let requiredOffset = settings.percentageMode ? container.offsetHeight * +settings.offset / 100 : +settings.offset;
|
||||
requiredOffset = Math.min(requiredOffset, maxOffset);
|
||||
return requiredOffset;
|
||||
};
|
||||
this.scrollLaunch = (cm) => {
|
||||
const cursor = cm.charCoords(cm.getCursor());
|
||||
const cursorHeight = cursor.bottom - cursor.top + 5;
|
||||
const container = cm.getWrapperElement();
|
||||
const requiredOffset = this.calcRequiredOffset(container, cursorHeight);
|
||||
cm.scrollIntoView(null, requiredOffset);
|
||||
};
|
||||
this.enableScrollOffset = () => {
|
||||
this.registerCodeMirror((cm) => {
|
||||
cm.on("mousedown", this.mouseDownHandler);
|
||||
cm.on("cursorActivity", this.cursorActiveHandler);
|
||||
});
|
||||
this.registerEditorExtension(ScrollOffsetCM6_default(this.calcRequiredOffset));
|
||||
};
|
||||
this.disableScrollOffset = () => {
|
||||
this.app.workspace.iterateCodeMirrors((cm) => {
|
||||
cm.off("mousedown", this.mouseDownHandler);
|
||||
cm.off("cursorActivity", this.cursorActiveHandler);
|
||||
});
|
||||
};
|
||||
}
|
||||
onload() {
|
||||
return __async(this, null, function* () {
|
||||
console.log("Loading Scroll Offset.");
|
||||
yield this.loadSettings();
|
||||
this.addSettingTab(new ScrollOffsetSettingTab(this.app, this));
|
||||
this.enableScrollOffset();
|
||||
});
|
||||
}
|
||||
onunload() {
|
||||
this.disableScrollOffset();
|
||||
console.log("Scroll Offset unloaded.");
|
||||
}
|
||||
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 ScrollOffsetSettingTab = class extends import_obsidian.PluginSettingTab {
|
||||
constructor(app, plugin) {
|
||||
super(app, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
display() {
|
||||
const { containerEl } = this;
|
||||
containerEl.empty();
|
||||
containerEl.createEl("h2", { text: "Scroll Offset Settings." });
|
||||
new import_obsidian.Setting(containerEl).setName("Use percentage offset").setDesc("Use percentage offset, or use fixed number of distance instead").addToggle((comp) => comp.setValue(this.plugin.settings.percentageMode).onChange((value) => {
|
||||
this.plugin.settings.percentageMode = value;
|
||||
this.plugin.saveSettings();
|
||||
}));
|
||||
new import_obsidian.Setting(containerEl).setName("Distance").setDesc('unit in "px", or "%" if using percentage offset, 0 to disable this plugin').addText((text) => text.setValue(this.plugin.settings.offset).onChange((value) => {
|
||||
this.plugin.settings.offset = value;
|
||||
this.plugin.saveSettings();
|
||||
}));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* nosourcemap */
|
||||
10
.obsidian/plugins/obsidian-scroll-offset/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-scroll-offset/manifest.json
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-scroll-offset",
|
||||
"name": "Scroll Offset",
|
||||
"version": "1.0.4",
|
||||
"minAppVersion": "0.12.0",
|
||||
"description": "Preserve minmium distances before and after cursor.",
|
||||
"author": "Lijyze",
|
||||
"authorUrl": "https://github.com/lijyze",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue