parent
f7903bc8e5
commit
32831cdc95
@ -0,0 +1,345 @@
|
|||||||
|
/*
|
||||||
|
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: () => ShortcutLauncherPlugin
|
||||||
|
});
|
||||||
|
var import_obsidian3 = __toModule(require("obsidian"));
|
||||||
|
|
||||||
|
// src/SettingsTab.ts
|
||||||
|
var import_obsidian2 = __toModule(require("obsidian"));
|
||||||
|
|
||||||
|
// src/LauncherModal.ts
|
||||||
|
var import_obsidian = __toModule(require("obsidian"));
|
||||||
|
var LauncherModal = class extends import_obsidian.Modal {
|
||||||
|
constructor(app, isEditing, commandName, shortcutName, inputTypes, separator, onSave) {
|
||||||
|
super(app);
|
||||||
|
this.isEditing = isEditing;
|
||||||
|
this.commandName = commandName;
|
||||||
|
this.shortcutName = shortcutName;
|
||||||
|
this.inputTypes = inputTypes;
|
||||||
|
this.separator = separator;
|
||||||
|
this.onSave = onSave;
|
||||||
|
}
|
||||||
|
onOpen() {
|
||||||
|
const { contentEl } = this;
|
||||||
|
contentEl.empty();
|
||||||
|
contentEl.createEl("h2", {
|
||||||
|
text: this.isEditing ? "Edit Launcher" : "New Launcher"
|
||||||
|
});
|
||||||
|
new import_obsidian.Setting(contentEl).setName("Command Name").setDesc("The Obsidian command name.").addText((text) => text.setPlaceholder("Command Name").setValue(this.commandName).onChange((value) => this.commandName = value));
|
||||||
|
new import_obsidian.Setting(contentEl).setName("Shortcut Name").setDesc("The name of the shortcut to launch.").addText((text) => text.setPlaceholder("Shortcut Name").setValue(this.shortcutName).onChange((value) => this.shortcutName = value));
|
||||||
|
new import_obsidian.Setting(contentEl).setName("Input Type").setDesc("The initial input into the shortcut.").addDropdown((dropdown) => dropdown.addOptions({
|
||||||
|
"Selected Text": "Selected Text",
|
||||||
|
"Selected Link/Embed Contents": "Selected Link/Embed Contents",
|
||||||
|
"Current Paragraph": "Current Paragraph",
|
||||||
|
"Entire Document": "Entire Document",
|
||||||
|
"Link to Document": "Link to Document",
|
||||||
|
"Document Name": "Document Name",
|
||||||
|
"Document Path": "Document Path",
|
||||||
|
Multiple: "Multiple"
|
||||||
|
}).setValue(this.inputTypes[0]).onChange((value) => {
|
||||||
|
if (value == "Multiple") {
|
||||||
|
this.inputTypes = [
|
||||||
|
"Multiple",
|
||||||
|
"Document Name",
|
||||||
|
"Selected Text"
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
this.inputTypes = [value];
|
||||||
|
}
|
||||||
|
this.onOpen();
|
||||||
|
}));
|
||||||
|
if (this.inputTypes.length > 1) {
|
||||||
|
this.inputTypes.filter((_, index) => index > 0).forEach((inputType, index) => {
|
||||||
|
let setting = new import_obsidian.Setting(contentEl).setName(`Input Type #${index + 1}`).addDropdown((dropdown) => dropdown.addOptions({
|
||||||
|
"Selected Text": "Selected Text",
|
||||||
|
"Selected Link/Embed Contents": "Selected Link/Embed Contents",
|
||||||
|
"Current Paragraph": "Current Paragraph",
|
||||||
|
"Entire Document": "Entire Document",
|
||||||
|
"Link to Document": "Link to Document",
|
||||||
|
"Document Name": "Document Name",
|
||||||
|
"Document Path": "Document Path"
|
||||||
|
}).setValue(inputType).onChange((value) => {
|
||||||
|
this.inputTypes[index + 1] = value;
|
||||||
|
}));
|
||||||
|
if (index > 1) {
|
||||||
|
setting.addButton((button) => button.setIcon("trash").setWarning().onClick(() => {
|
||||||
|
this.inputTypes.splice(index + 1, 1);
|
||||||
|
this.onOpen();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
new import_obsidian.Setting(contentEl).addButton((button) => button.setButtonText("Add Input").onClick(() => {
|
||||||
|
this.inputTypes.push("Selected Text");
|
||||||
|
this.onOpen();
|
||||||
|
}));
|
||||||
|
new import_obsidian.Setting(contentEl).setName("Separator").setDesc("The separator to insert between input types.").addText((text) => text.setValue(",").onChange((value) => this.separator = value));
|
||||||
|
}
|
||||||
|
new import_obsidian.Setting(contentEl).addButton((button) => button.setButtonText("Save").setCta().onClick(() => {
|
||||||
|
if (!this.commandName || this.commandName.length == 0) {
|
||||||
|
return new import_obsidian.Notice("Specify a command name.");
|
||||||
|
}
|
||||||
|
if (!this.shortcutName || this.shortcutName.length == 0) {
|
||||||
|
return new import_obsidian.Notice("Specify a shortcut name.");
|
||||||
|
}
|
||||||
|
this.onSave(this.commandName, this.shortcutName, this.inputTypes, this.separator);
|
||||||
|
this.close();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
onClose() {
|
||||||
|
const { contentEl } = this;
|
||||||
|
contentEl.empty();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/SettingsTab.ts
|
||||||
|
var SettingsTab = class extends import_obsidian2.PluginSettingTab {
|
||||||
|
constructor(app, plugin) {
|
||||||
|
super(app, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
const { containerEl } = this;
|
||||||
|
containerEl.empty();
|
||||||
|
containerEl.createEl("h2", { text: "Shortcut Launchers" });
|
||||||
|
new import_obsidian2.Setting(containerEl).addButton((button) => button.setButtonText("New").setCta().onClick(() => {
|
||||||
|
new LauncherModal(this.app, false, "", "", ["Selected Text"], ",", (commandName, shortcutName, inputTypes, separator) => {
|
||||||
|
this.plugin.settings.launchers.splice(0, 0, {
|
||||||
|
commandName,
|
||||||
|
shortcutName,
|
||||||
|
inputTypes,
|
||||||
|
separator
|
||||||
|
});
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
this.display();
|
||||||
|
}).open();
|
||||||
|
}));
|
||||||
|
this.plugin.settings.launchers.forEach((launcher, index) => {
|
||||||
|
new import_obsidian2.Setting(containerEl).setName(launcher.commandName).setDesc(`${launcher.shortcutName} < ${launcher.inputTypes[0]}`).addButton((button) => button.setIcon("pencil").onClick((event) => {
|
||||||
|
new LauncherModal(this.app, true, launcher.commandName, launcher.shortcutName, launcher.inputTypes, launcher.separator, (commandName, shortcutName, inputTypes, separator) => {
|
||||||
|
this.plugin.settings.launchers[index].commandName = commandName;
|
||||||
|
this.plugin.settings.launchers[index].shortcutName = shortcutName;
|
||||||
|
this.plugin.settings.launchers[index].inputTypes = inputTypes;
|
||||||
|
this.plugin.settings.launchers[index].separator = separator;
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
this.display();
|
||||||
|
}).open();
|
||||||
|
})).addButton((button) => button.setIcon("trash").setWarning().onClick(() => {
|
||||||
|
this.plugin.settings.launchers.splice(index, 1);
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
this.display();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var DEFAULT_SETTINGS = {
|
||||||
|
launchers: []
|
||||||
|
};
|
||||||
|
var ShortcutLauncherPlugin = class extends import_obsidian3.Plugin {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
this.registeredCommands = [];
|
||||||
|
}
|
||||||
|
onload() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
yield this.loadSettings();
|
||||||
|
this.addSettingTab(new SettingsTab(this.app, this));
|
||||||
|
yield this.createCommands();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
createCommands() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
this.registeredCommands = [];
|
||||||
|
this.settings.launchers.forEach((launcher) => {
|
||||||
|
this.registeredCommands.push(this.addCommand({
|
||||||
|
id: launcher.commandName.replace(/\s+/g, "-").toLowerCase(),
|
||||||
|
name: launcher.commandName,
|
||||||
|
checkCallback: (checking) => {
|
||||||
|
if (checking) {
|
||||||
|
return this.check(launcher);
|
||||||
|
}
|
||||||
|
var inputs = [];
|
||||||
|
launcher.inputTypes.filter((inputType) => inputType != "Multiple").reduce((promise, inputType) => __async(this, null, function* () {
|
||||||
|
var _a, _b;
|
||||||
|
yield promise;
|
||||||
|
var text = "";
|
||||||
|
if (inputType == "Selected Text") {
|
||||||
|
let view = this.app.workspace.activeLeaf.view;
|
||||||
|
if (view.getSelection) {
|
||||||
|
text = view.getSelection();
|
||||||
|
}
|
||||||
|
} else if (inputType == "Selected Link/Embed Contents") {
|
||||||
|
let metadataCache = this.app.metadataCache.getFileCache(this.app.workspace.getActiveFile());
|
||||||
|
let linksAndEmbeds = ((_a = metadataCache.links) != null ? _a : []).concat((_b = metadataCache.embeds) != null ? _b : []);
|
||||||
|
let mdView = this.app.workspace.getActiveViewOfType(import_obsidian3.MarkdownView);
|
||||||
|
let cursorOffset = mdView.editor.posToOffset(mdView.editor.getCursor());
|
||||||
|
let matchingLinkOrEmbed = linksAndEmbeds.filter((cached) => cached.position.start.offset <= cursorOffset && cached.position.end.offset >= cursorOffset);
|
||||||
|
if (matchingLinkOrEmbed.length > 0) {
|
||||||
|
let linkpath = (0, import_obsidian3.getLinkpath)(matchingLinkOrEmbed[0].link);
|
||||||
|
let linkedFile = this.app.metadataCache.getFirstLinkpathDest(linkpath, this.app.workspace.getActiveFile().path);
|
||||||
|
if (!matchingLinkOrEmbed[0].link.contains(".") || linkpath.endsWith(".md") || linkpath.endsWith("txt")) {
|
||||||
|
text = yield this.app.vault.read(linkedFile);
|
||||||
|
} else {
|
||||||
|
let binary = yield this.app.vault.readBinary(linkedFile);
|
||||||
|
text = arrayBufferToBase64(binary);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
new import_obsidian3.Notice("Could not find current link or embed");
|
||||||
|
}
|
||||||
|
} else if (inputType == "Current Paragraph") {
|
||||||
|
let metadataCache = this.app.metadataCache.getFileCache(this.app.workspace.getActiveFile());
|
||||||
|
if (!metadataCache.sections) {
|
||||||
|
new import_obsidian3.Notice("Could not find current paragraph");
|
||||||
|
}
|
||||||
|
let mdView = this.app.workspace.getActiveViewOfType(import_obsidian3.MarkdownView);
|
||||||
|
let cursorOffset = mdView.editor.posToOffset(mdView.editor.getCursor());
|
||||||
|
let matchingSection = metadataCache.sections.filter((section) => section.position.start.offset <= cursorOffset && section.position.end.offset >= cursorOffset);
|
||||||
|
if (matchingSection.length > 0) {
|
||||||
|
let documentContents = yield this.app.vault.read(this.app.workspace.getActiveFile());
|
||||||
|
text = documentContents.substring(matchingSection[0].position.start.offset, matchingSection[0].position.end.offset);
|
||||||
|
} else {
|
||||||
|
new import_obsidian3.Notice("Could not find current paragraph");
|
||||||
|
}
|
||||||
|
} else if (inputType == "Entire Document") {
|
||||||
|
text = yield this.app.vault.read(this.app.workspace.getActiveFile());
|
||||||
|
} else if (inputType == "Link to Document") {
|
||||||
|
text = `obsidian://open?vault=${encodeURIComponent(this.app.vault.getName())}&file=${encodeURIComponent(this.app.workspace.getActiveFile().path)}`;
|
||||||
|
} else if (inputType == "Document Name") {
|
||||||
|
text = this.app.workspace.getActiveFile().basename;
|
||||||
|
} else if (inputType == "Document Path") {
|
||||||
|
text = this.app.workspace.getActiveFile().path;
|
||||||
|
}
|
||||||
|
inputs.push(text);
|
||||||
|
}), Promise.resolve()).then(() => {
|
||||||
|
if (import_obsidian3.Platform.isMobileApp) {
|
||||||
|
window.open(`shortcuts://run-shortcut?name=${encodeURIComponent(launcher.shortcutName)}&input=text&text=${encodeURIComponent(inputs.join(launcher.separator))}`);
|
||||||
|
} else {
|
||||||
|
let tempFilePath = require("path").join(require("os").tmpdir(), "obsidian-shortcut-launcher-temp-input");
|
||||||
|
let escapedShortcutName = launcher.shortcutName.replace(/["\\]/g, "\\$&");
|
||||||
|
let fs = require("fs");
|
||||||
|
fs.writeFile(tempFilePath, inputs.join(launcher.separator), () => {
|
||||||
|
require("child_process").exec(`shortcuts run "${escapedShortcutName}" -i ${tempFilePath}`, () => __async(this, null, function* () {
|
||||||
|
fs.unlink(tempFilePath, () => {
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
check(launcher) {
|
||||||
|
var _a, _b;
|
||||||
|
if (launcher.inputTypes.contains("Selected Text")) {
|
||||||
|
let view = this.app.workspace.activeLeaf.view;
|
||||||
|
if (!view.getSelection) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (launcher.inputTypes.contains("Selected Link/Embed Contents")) {
|
||||||
|
let mdView = this.app.workspace.getActiveViewOfType(import_obsidian3.MarkdownView);
|
||||||
|
if (!mdView || mdView.getMode() !== "source") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
let metadataCache = this.app.metadataCache.getFileCache(this.app.workspace.getActiveFile());
|
||||||
|
let linksAndEmbeds = ((_a = metadataCache.links) != null ? _a : []).concat((_b = metadataCache.embeds) != null ? _b : []);
|
||||||
|
if (typeof mdView.editor == "undefined") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
let cursorOffset = mdView.editor.posToOffset(mdView.editor.getCursor());
|
||||||
|
let matchingLinkOrEmbed = linksAndEmbeds.filter((cached) => cached.position.start.offset <= cursorOffset && cached.position.end.offset >= cursorOffset);
|
||||||
|
if (matchingLinkOrEmbed.length == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (launcher.inputTypes.contains("Current Paragraph")) {
|
||||||
|
let mdView = this.app.workspace.getActiveViewOfType(import_obsidian3.MarkdownView);
|
||||||
|
if (!mdView || mdView.getMode() !== "source") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (launcher.inputTypes.contains("Entire Document") || launcher.inputTypes.contains("Link to Document") || launcher.inputTypes.contains("Document Name") || launcher.inputTypes.contains("Document Path")) {
|
||||||
|
if (!this.app.workspace.getActiveFile()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
this.registeredCommands.forEach((command) => {
|
||||||
|
this.app.commands.removeCommand(command.id);
|
||||||
|
});
|
||||||
|
this.registeredCommands = [];
|
||||||
|
yield this.createCommands();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function arrayBufferToBase64(buffer) {
|
||||||
|
var binary = "";
|
||||||
|
var bytes = new Uint8Array(buffer);
|
||||||
|
var len = bytes.byteLength;
|
||||||
|
for (var i = 0; i < len; i++) {
|
||||||
|
binary += String.fromCharCode(bytes[i]);
|
||||||
|
}
|
||||||
|
return window.btoa(binary);
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-shortcut-launcher",
|
||||||
|
"name": "Shortcut Launcher",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"minAppVersion": "0.13.0",
|
||||||
|
"description": "Trigger shortcuts in Apple's Shortcuts app from Obsidian with custom commands.",
|
||||||
|
"author": "MacStories",
|
||||||
|
"authorUrl": "https://www.macstories.net",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
Not Found
|
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"readme": "Do NOT modify this manually. It's generated automatically.",
|
||||||
|
"d": "Qfx0iOiMHZu92YlNXasxWaNlnclZXRuVnUvRXdhJCLiMER3NXTTZFdmFma3FWUhF3T5h2VsJiOiQUSt9GZuFmU0xWdhZnIsIybm5WaiojIsVmdlx0ZvxkcyV3YiwiI2FGZiV2diojIlBXeUV2YpZnclNnIsIiI6ICZy92dzNXYwJCL9BjOiUWbpRFdBRWZ0VGblRUZCRGb19GaTNHbhlGduVGZlJ3YiwiIiojIl1WYuJXZzVnIsIiI6IyaulGThRHblRmIsAjOiUWbpRFdBNXZylGc4Vkblt2bUN3clN2YhJCLwojIzRmbvNWZT5WSzVmcpBHeF5WZr9GVzNXZjNWYiwiIiojIuV2avRFazVmcmVmciwiIu9Wbt92Yv02bj5SZulGbu9Gdm92cvJ3Yp1mLul2Zvx2LvozcwRHdoJiOikHdpJ3boRXdhJCLiYDM4YmZwYGNjF2Nk1iN3MTOtMWZiRTLyYWYw0yYxMmZ5IzNzIiOiQUS05WZpx2YiwiIiojIuV2avR1czV2YjFmI7pjIlZXayRWZu9mIs0HM6ISZtlGV0FEZlRXZsVGRlJEZsV3boN1csFWa05WZkVmcjJCLiIiOiUWbh5mclNXdiwiIiojIElEduV3bjNWYiwCM6ISZtlGV0F0clJXawhXRuV2avR1czV2YjFmIsAjOiMHZu92YlNlbJNXZylGc4Vkblt2bUN3clN2YhJCLiIiOi4WZr9GVoNXZyZWZyJCLiYme6RzYtJ3am9GN2h3d1JiOiQUS05WZpx2YiwiIiojIuV2avR1czV2YjFmI7pjI49mYw9mckJCL9V2csFmZ6ISZ2l2cyV3YlJFbhVnbh1mIsIyYpNXYiJiOiUGc5RFa0VXYiwiIiojIkJ3b3N3chBnIsIiI6ISZtFmbyV2c1JCLiIiOiM3clJHZkFmI7pjI2FGZiV2diwSfiIiOiUWbh5Edlt2Y1J0MzJCLiIiOikXZLN3clN2YBRXZyNWZTNzciwiIiojIElUelt0czV2YjF0MzJCLiIiOi42bpdWZSNzciwiIiojI05WavBHZuV0MzJye6IyMzJye"
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "remotely-save",
|
||||||
|
"name": "Remotely Save",
|
||||||
|
"version": "0.2.13",
|
||||||
|
"minAppVersion": "0.12.15",
|
||||||
|
"description": "Yet another unofficial plugin allowing users to synchronize notes between local device and the cloud service.",
|
||||||
|
"author": "fyears",
|
||||||
|
"authorUrl": "https://github.com/fyears",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
/* set the styles */
|
||||||
|
|
||||||
|
.password-second-confirm {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s3-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.s3-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropbox-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.dropbox-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropbox-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropbox-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrive-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.onedrive-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrive-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrive-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webdav-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.webdav-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode-img {
|
||||||
|
width: 350px;
|
||||||
|
height: 350px;
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,101 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
Date: 2022-01-29
|
||||||
|
DocType: Note
|
||||||
|
Hierarchy:
|
||||||
|
TimeStamp:
|
||||||
|
location:
|
||||||
|
CollapseMetaTable: Yes
|
||||||
|
Sleep: 8
|
||||||
|
Stress: 40
|
||||||
|
FrontHeadBar: 10
|
||||||
|
EarHeadBar: 20
|
||||||
|
BackHeadBar: 40
|
||||||
|
Water: 1.85
|
||||||
|
Coffee: 0
|
||||||
|
Steps: 10344
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
%% Parent:: [[Life Admin]] %%
|
||||||
|
[[2022-01-28|<< Previous]]         [[@Main Dashboard|Back]]         [[2022-01-30|Next >>]]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
```button
|
||||||
|
name Record today's health
|
||||||
|
type command
|
||||||
|
action MetaEdit: Run MetaEdit
|
||||||
|
id EditMetaData
|
||||||
|
```
|
||||||
|
^button-2022-01-29Edit
|
||||||
|
|
||||||
|
```button
|
||||||
|
name Save
|
||||||
|
type command
|
||||||
|
action Save current file
|
||||||
|
id Save
|
||||||
|
```
|
||||||
|
^button-2022-01-29NSave
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
# 2022-01-29
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
```ad-abstract
|
||||||
|
title: Summary
|
||||||
|
collapse: open
|
||||||
|
Note Description
|
||||||
|
```
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
```toc
|
||||||
|
style: number
|
||||||
|
```
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
### Memos of the day
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
This section does serve for quick memos.
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
#### Memos
|
||||||
|
|
||||||
|
|
||||||
|
 
|
||||||
|
- [x] 09:12 [[Life Admin]], [[2022-01-29|Memo]]: Book plane tickets for Valentine's weekend 📅 2022-01-30 ✅ 2022-01-29
|
||||||
|
- [ ] 09:13 [[Life Admin]], [[2022-01-29|Memo]]: Book tickets to London for B's birthday 📆2022-01-30
|
||||||
|
- [ ] 09:35 [[Lifestyle]], [[2022-01-29|Memo]]: check made.com and where furnitures are at 📆2022-02-06
|
||||||
|
- 10:56 ![[Pasted Image 20220129105544.jpeg]]<br>1st Zürich haircut #zürich #everydaylife
|
||||||
|
|
||||||
|
#### Sub-header 2
|
||||||
|
|
||||||
|
Loret ipsum
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
### Header 2
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
Loret ipsum
|
||||||
|
|
||||||
|
 
|
||||||
|
 
|
After Width: | Height: | Size: 2.3 MiB |
Loading…
Reference in new issue