This commit is contained in:
oscar.plaisant@icloud.com
2023-10-23 23:30:51 +02:00
parent f5b9c3d02c
commit 03ecc4a65b
3433 changed files with 1756195 additions and 0 deletions

47
.obsidian/plugins/3d-graph/data.json vendored Normal file
View File

@@ -0,0 +1,47 @@
{
"filters": {
"doShowOrphans": true
},
"groups": {
"groups": [
{
"query": "tag:#not-done",
"color": "#878787"
},
{
"query": "tag:#MOC",
"color": "#e16613"
},
{
"query": "tag:#excalidraw",
"color": "#7a5cff"
},
{
"query": "tag:#PKM OR tag:#obsidian",
"color": "#4a37a0"
},
{
"query": "tag:#flashcards",
"color": "#4a37a0"
},
{
"query": "tag:#gists",
"color": "#682d93"
},
{
"query": "tag:#CV",
"color": "#a80089"
},
{
"query": "tag:#maths",
"color": "#2a9e00"
}
]
},
"display": {
"nodeSize": 4,
"linkThickness": 5,
"particleSize": 6,
"particleCount": 4
}
}

31211
.obsidian/plugins/3d-graph/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
{
"id": "3d-graph",
"name": "3D Graph",
"version": "1.0.3",
"description": "A 3D Graph for Obsidian",
"author": "Alexander Weichart",
"authorUrl": "https://github.com/AlexW00",
"isDesktopOnly": false
}

57
.obsidian/plugins/3d-graph/styles.css vendored Normal file
View File

@@ -0,0 +1,57 @@
.graph-3d-view .tree-item.is-collapsed > .tree-item-children {
display: none;
visibility: hidden;
}
.graph-3d-view {
padding: 0 !important;
position: relative;
overflow: hidden !important;
}
.graph-3d-view .graph-controls.is-collapsed > .graph-control-section {
display: none;
visibility: hidden;
}
.graph-3d-view .graph-controls:hover > .control-buttons {
opacity: 0.5;
}
.graph-3d-view .graph-controls > .control-buttons:hover {
opacity: 1;
}
.graph-3d-view .graph-controls > .control-buttons {
float: right;
margin-right: 0;
opacity: 0;
}
.graph-3d-view .hidden {
display: none;
visibility: hidden;
}
.graph-3d-view .control-buttons {
display: block;
}
.graph-3d-view .control-buttons > * {
display: inline-block;
margin: 0;
}
.graph-3d-view .graph-settings-view > .clickable-icon {
position: absolute;
top: 8px;
right: 8px;
}
.graph-3d-view .node-label {
color: var(--text-normal);
}
.graph-3d-view .scene-nav-info {
display: none;
visibility: hidden;
}

View File

@@ -0,0 +1,167 @@
/*
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 __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// main.ts
var main_exports = {};
__export(main_exports, {
default: () => ActivityWatchPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian = require("obsidian");
var os = __toESM(require("os"));
var AWrequest = class {
constructor(url, body) {
this.contentType = "application/json";
this.headers = { "Content-type": "application/json", "charset": "utf-8" };
this.method = "post";
this.throw = true;
this.url = url;
this.body = body;
}
};
var DEFAULT_SETTINGS = {
devServer: false
};
var ActivityWatchPlugin = class extends import_obsidian.Plugin {
constructor() {
super(...arguments);
this.hostname = os.hostname();
this.watcher_name = "aw-watcher-obsidian";
this.sleeptime = 5;
}
async init() {
this.statusBarItemEl.setText("ActivityWatch initializing...");
const port = this.settings.devServer ? 5666 : 5600;
this.bucket_id = `${this.watcher_name}_${this.hostname}`;
this.endpoint_url = `http://127.0.0.1:${port}/api/0/`;
if (this.settings.devServer) {
console.log(`sleeptime is ${this.sleeptime}` + (this.sleeptime <= 0 ? ", skipping any timed heartbeats" : ""));
console.log(`watcher_name is ${this.watcher_name}`);
console.log(`port is ${port}`);
console.log(`bucket_id is ${this.bucket_id}`);
console.log(`endpoint_url is ${this.endpoint_url}`);
}
await this.createBucket(this.bucket_id, "app.editor.activity");
this.statusBarItemEl.setText("ActivityWatch active");
}
async post(endpoint, data) {
const r = new AWrequest(this.endpoint_url + endpoint, JSON.stringify(data));
try {
await (0, import_obsidian.request)(r);
} catch (e) {
console.log(`Request to URL [${r.url}] using [${r.method}], Header [${r.headers}], Body [${r.body}] failed!`);
throw e;
}
}
async createBucket(id, event_type) {
const data = {
"client": this.watcher_name,
"hostname": this.hostname,
"type": event_type
};
await this.post(`buckets/${id}`, data);
}
async sendData(id, heartbeat_data, pulsetime) {
const endpoint = `buckets/${id}/heartbeat?pulsetime=${pulsetime}`;
await this.post(endpoint, { "timestamp": new Date().toISOString(), "duration": 0, "data": heartbeat_data });
}
async sendAbstractFileEvent(file, extraData, pulseTime) {
if (file) {
await this.sendData(this.bucket_id, {
"file": "/" + file.path,
"project": file.vault.getName(),
"language": "Markdown",
"projectPath": file.vault.adapter instanceof import_obsidian.FileSystemAdapter ? file.vault.adapter.getBasePath() : "unknown vault path",
"editor": "Obsidian",
"editorVersion": import_obsidian.apiVersion,
...extraData ? extraData : {}
}, pulseTime);
}
}
async sendFileHeartbeatEvent(file) {
await this.sendAbstractFileEvent(file, {
"eventType": "obsidian.activeFileHeartbeatEvent"
}, this.sleeptime + 1);
}
async sendFileRenameEvent(file, oldPath) {
await this.sendAbstractFileEvent(file, {
"eventType": "obsidian.renameFileEvent",
"oldPath": oldPath
}, 0);
}
async sendFileDeleteEvent(oldPath) {
await this.sendAbstractFileEvent(oldPath, {
"eventType": "obsidian.deleteFileEvent"
}, 0);
}
async sendFileCreateEvent(path) {
await this.sendAbstractFileEvent(path, {
"eventType": "obsidian.createFileEvent"
}, 0);
}
async onload() {
this.statusBarItemEl = this.addStatusBarItem();
await this.loadSettings();
await this.init();
this.registerEvent(this.app.vault.on("rename", (file, oldPath) => this.sendFileRenameEvent(file, oldPath)));
this.registerEvent(this.app.vault.on("delete", this.sendFileDeleteEvent));
this.app.workspace.onLayoutReady(() => {
this.registerEvent(this.app.vault.on("create", (f) => this.sendFileCreateEvent(f)));
});
this.addSettingTab(new ObsidianWatcherSettingTab(this.app, this));
if (this.sleeptime > 0) {
this.registerInterval(window.setInterval(() => {
this.sendFileHeartbeatEvent(this.app.workspace.getActiveFile());
}, this.sleeptime * 1e3));
}
}
onunload() {
this.statusBarItemEl.remove();
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
}
};
var ObsidianWatcherSettingTab = 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 ActivityWatch plugin" });
new import_obsidian.Setting(containerEl).setName("ActivityWatch development server").setDesc("If enabled, uses development server for ActivityWatch instead of production. Default off.").addToggle((t) => t.setValue(this.plugin.settings.devServer).onChange(async (value) => {
console.log(`switching plugin to use ${value ? "development" : "production"} backend`);
this.plugin.settings.devServer = value;
await this.plugin.saveSettings();
await this.plugin.init();
}));
}
};

View File

@@ -0,0 +1,10 @@
{
"id": "aw-watcher-obsidian",
"name": "ActivityWatch",
"version": "1.3.0",
"minAppVersion": "0.15.0",
"description": "This is a plugin bridging compatibility between ActivityWatch and Obsidian.",
"author": "Grimmauld",
"authorUrl": "https://github.com/LordGrimmauld",
"isDesktopOnly": true
}

181
.obsidian/plugins/breadcrumbs/data.json vendored Normal file
View File

@@ -0,0 +1,181 @@
{
"addDendronNotes": true,
"addDateNotes": true,
"aliasesInIndex": false,
"alphaSortAsc": false,
"altLinkFields": [
"alias"
],
"CSVPaths": "",
"createIndexIndent": " ",
"dateFormat": "YYYY-MM-DD",
"dateNoteFormat": "yyyy-MM-dd",
"dateNoteField": "next",
"dataviewNoteField": "up",
"dateNoteAddMonth": "",
"dateNoteAddYear": "",
"debugMode": "WARN",
"dendronNoteDelimiter": ".",
"dendronNoteField": "up",
"dvWaitTime": 5000,
"enableAlphaSort": true,
"enableRelationSuggestor": true,
"fieldSuggestor": false,
"filterImpliedSiblingsOfDifferentTypes": false,
"jugglLayout": "hierarchy",
"limitWriteBCCheckboxes": [
"up",
"next",
"prev",
"author",
"source"
],
"CHECKBOX_STATES_OVERWRITTEN": false,
"gridDefaultDepth": 25,
"hierarchyNotes": [
""
],
"hierarchyNoteIsParent": false,
"HNUpField": "",
"indexNotes": [],
"namingSystemField": "",
"namingSystemRegex": "",
"namingSystemSplit": ".",
"namingSystemEndsWithDelimiter": false,
"refreshOnNoteChange": false,
"useAllMetadata": true,
"openMatrixOnLoad": true,
"openDuckOnLoad": false,
"openDownOnLoad": true,
"parseJugglLinksWithoutJuggl": false,
"showNameOrType": true,
"showRelationType": true,
"regexNoteField": "",
"relSuggestorTrigger": "@@",
"rlLeaf": false,
"showAllPathsIfNoneToIndexNote": false,
"showAllAliases": false,
"showBCs": true,
"showBCsInEditLPMode": true,
"showRefreshNotice": false,
"showImpliedRelations": true,
"showTrail": false,
"showGrid": true,
"showJuggl": false,
"showPrevNext": true,
"sortByNameShowAlias": false,
"squareDirectionsOrder": [
0,
1,
2,
3,
4
],
"limitTrailCheckboxes": [
"up",
"author",
"supports"
],
"limitJumpToFirstFields": [
"up",
"sibling",
"down",
"next",
"prev",
"same_author",
"extercept",
"includes",
"supports",
"supported_by",
"refutes",
"refuted_by"
],
"showAll": "All",
"noPathMessage": "",
"tagNoteField": "up",
"threadIntoNewPane": true,
"threadingTemplate": "{{field}} of {{current}}",
"threadingDirTemplates": {
"up": "",
"same": "",
"down": "",
"next": "",
"prev": ""
},
"threadUnderCursor": false,
"trailSeperator": "→",
"treatCurrNodeAsImpliedSibling": false,
"trimDendronNotes": true,
"respectReadableLineLength": false,
"userHiers": [
{
"up": [
"up"
],
"same": [
"sibling"
],
"down": [
"down"
],
"next": [
"next"
],
"prev": [
"prev"
]
},
{
"up": [
"author",
"source"
],
"same": [
"same_author",
"same_source"
],
"down": [
"wrote",
"excerpt",
"includes"
],
"next": [],
"prev": []
},
{
"up": [
"supports"
],
"same": [],
"down": [
"supported_by"
],
"next": [
"refutes"
],
"prev": [
"refuted_by"
]
}
],
"writeBCsInline": true,
"showWriteAllBCsCmd": false,
"visGraph": "Force Directed Graph",
"visRelation": "Parent",
"visClosed": "Closed",
"visAll": "All",
"wikilinkIndex": true,
"impliedRelations": {
"siblingIdentity": false,
"sameParentIsSibling": true,
"siblingsSiblingIsSibling": true,
"siblingsParentIsParent": false,
"parentsSiblingsIsParents": false,
"parentsParentsIsParent": false,
"cousinsIsSibling": false
},
"refreshOnNoteSave": true,
"showUpInJuggl": false,
"gridHeatmap": true,
"heatmapColour": "#3b3b3b"
}

31658
.obsidian/plugins/breadcrumbs/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "breadcrumbs",
"name": "Breadcrumbs",
"version": "3.6.4",
"minAppVersion": "0.15.2",
"description": "Visualise & navigate your vault's structure",
"author": "SkepticMystic",
"authorUrl": "https://github.com/SkepticMystic/breadcrumbs",
"isDesktopOnly": false
}

113
.obsidian/plugins/breadcrumbs/styles.css vendored Normal file
View File

@@ -0,0 +1,113 @@
.BC-trail {
border: 1px solid var(--background-modifier-border);
border-radius: 5px;
padding: 5px;
margin-bottom: 5px !important;
}
/* completely hides the trail when "no path found message" is left empty and no path is found */
.BC-trail:empty {
display: none;
}
.BC-matrix-square li {
text-align: left;
}
/* ensure empty headers not leaving an element */
.BC-Matrix .BC-Matrix-square .BC-Matrix-header:empty {
display: none;
}
.internal-link.BC-Link {
color: var(--text-accent);
}
.internal-link.BC-Link:hover {
color: var(--text-accent-hover, var(--text-accent));
}
.vis-view-options > * {
padding: 5px;
}
/* Source: https://svelte.dev/repl/3153faf7584d40bd8ddebecf39f24ac1?version=3.41.0 */
[data-tooltip] {
position: relative;
/* z-index: 2; */
/* display: block; */
}
[data-tooltip]:before,
[data-tooltip]:after {
visibility: hidden;
opacity: 0;
pointer-events: none;
transition: 0.2s ease-out;
transform: translate(-50%, 5px);
}
[data-tooltip]:before {
position: absolute;
top: 80%;
/* bottom: 100%; */
left: 50%;
margin-bottom: 5px;
padding: 7px;
width: fit-content;
height: fit-content;
min-width: 200px;
min-height: 200px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
background-color: var(--background-primary);
color: var(--text-normal);
content: attr(data-tooltip);
text-align: center;
font-size: var(--font-medium);
line-height: 1.2;
transition: 0.2s ease-out;
white-space: pre-line;
z-index: 100;
}
/* [data-tooltip]:after {
position: absolute;
top: 80%;
left: 50%;
width: 0;
border-top: 5px solid #000;
border-top: 5px solid hsla(0, 0%, 20%, 0.9);
border-right: 5px solid transparent;
border-left: 5px solid transparent;
background-color: red;
content: " ";
font-size: 0;
line-height: 0;
} */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
visibility: visible;
opacity: 1;
transform: translate(-50%, 0);
}
[data-tooltip="false"]:hover:before,
[data-tooltip="false"]:hover:after {
visibility: hidden;
opacity: 0;
}
.thread-dir-templates .setting-item-control {
display: flex;
flex-direction: column;
}
.juggl-hide {
display: none;
}
[data-type="BC-matrix"] div.view-content {
overflow: hidden !important;
}

10
.obsidian/plugins/calendar/data.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"shouldConfirmBeforeCreate": true,
"weekStart": "locale",
"wordsPerDot": 250,
"showWeeklyNote": false,
"weeklyNoteFormat": "",
"weeklyNoteTemplate": "",
"weeklyNoteFolder": "",
"localeOverride": "system-default"
}

4457
.obsidian/plugins/calendar/main.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "calendar",
"name": "Calendar",
"description": "Calendar view of your daily notes",
"version": "1.5.10",
"author": "Liam Cain",
"authorUrl": "https://github.com/liamcain/",
"isDesktopOnly": false,
"minAppVersion": "0.9.11"
}

View File

@@ -0,0 +1,306 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// canvasPresentationIndex.ts
var canvasPresentationIndex_exports = {};
__export(canvasPresentationIndex_exports, {
default: () => CanvasPresentation
});
module.exports = __toCommonJS(canvasPresentationIndex_exports);
var import_obsidian = require("obsidian");
var CanvasPresentation = class extends import_obsidian.Plugin {
constructor() {
super(...arguments);
this.currentSlide = [];
this.currentSlideNum = 0;
this.direction = "next";
this.selectedNodeSet = /* @__PURE__ */ new Set();
}
async onload() {
this.addCommand({
id: "next-group-in-viewport",
name: "Next Group In ViewPort",
checkCallback: (checking) => {
const canvasView = this.app.workspace.getActiveViewOfType(import_obsidian.ItemView);
if ((canvasView == null ? void 0 : canvasView.getViewType()) === "canvas") {
if (!checking) {
const canvas = canvasView.canvas;
const groups = this.getAllGroupNodeInViewPort(canvasView);
if (canvas.selection.size === 0) {
canvas.deselectAll();
canvas.select(groups[0]);
canvas.zoomToSelection();
return;
}
const selectedNode = canvas.selection.entries().next().value[1];
const restGroups = groups.filter((group) => {
return group.x >= selectedNode.x && group.id !== selectedNode.id;
});
if (restGroups.length === 0) {
canvas.deselectAll();
canvas.select(groups[0]);
canvas.zoomToSelection();
return;
}
canvas.deselectAll();
canvas.select(restGroups[0]);
canvas.zoomToSelection();
return;
}
return true;
}
}
});
this.addCommand({
id: "previous-group-in-viewport",
name: "Previous Group In ViewPort",
checkCallback: (checking) => {
const canvasView = this.app.workspace.getActiveViewOfType(import_obsidian.ItemView);
if ((canvasView == null ? void 0 : canvasView.getViewType()) === "canvas") {
if (!checking) {
const canvas = canvasView.canvas;
const groups = this.getAllGroupNodeInViewPort(canvasView);
if (canvas.selection.size === 0) {
canvas.deselectAll();
canvas.select(groups[groups.length - 1]);
canvas.zoomToSelection();
return;
}
const selectedNode = canvas.selection.entries().next().value[1];
const restGroups = groups.filter((group) => {
return group.x <= selectedNode.x && group.id !== selectedNode.id;
});
if (restGroups.length === 0) {
canvas.deselectAll();
canvas.select(groups[groups.length - 1]);
canvas.zoomToSelection();
return;
}
canvas.deselectAll();
canvas.select(restGroups[restGroups.length - 1]);
canvas.zoomToSelection();
return;
}
return true;
}
}
});
this.addCommand({
id: "mark-slide-number",
name: "Mark Slide Number",
checkCallback: (checking) => {
const canvasView = this.app.workspace.getActiveViewOfType(import_obsidian.ItemView);
const findNode = (map) => {
for (const value of map) {
if ((value == null ? void 0 : value.type) === "text" && (value == null ? void 0 : value.text.startsWith("Slide:\n"))) {
return value;
}
}
return false;
};
if ((canvasView == null ? void 0 : canvasView.getViewType()) === "canvas") {
if (!checking) {
const canvas = canvasView.canvas;
if (!canvas)
return;
const nodes = canvas.getData().nodes;
if (this.currentView !== canvasView)
this.currentView = canvasView;
if (Array.from(canvas.selection).length === 0) {
new import_obsidian.Notice("Please select at least one node");
return;
}
let node = findNode(nodes);
if (!node) {
let selectionArray = Array.from(canvas.selection);
if (!(0, import_obsidian.requireApiVersion)("1.1.10"))
node = canvas.createTextNode({ x: -200, y: -200 }, { height: 200, width: 200 }, true);
else {
node = canvas.createTextNode({
pos: {
x: -200,
y: -200,
height: 200,
width: 200
},
text: "",
focus: false,
save: true,
size: {
height: 200,
width: 200,
x: -200,
y: -200
}
});
}
canvas.deselectAll();
selectionArray.forEach((item) => {
const node2 = canvas.nodes.get(item.id);
if (node2)
canvas.select(node2);
});
}
const slideNode = canvas.nodes.get(node.id);
if (!(node == null ? void 0 : node.text.contains("Slide:\n"))) {
slideNode.setText("Slide:\n");
canvas.requestSave();
}
const nodesArray = Array.from(canvas.selection);
if (nodesArray.length > 0) {
let currentString = "- ";
nodesArray.forEach((nodeItem) => {
currentString += (nodeItem == null ? void 0 : nodeItem.id) + ", ";
});
currentString = currentString.slice(0, -2);
slideNode.setText((slideNode == null ? void 0 : slideNode.text) + currentString + "\n");
canvas.requestSave();
}
}
return true;
}
}
});
this.addCommand({
id: "next-slide",
name: "Next Slide",
checkCallback: (checking) => {
var _a;
const canvasView = this.app.workspace.getActiveViewOfType(import_obsidian.ItemView);
const findSlideNode = (map) => {
for (const value of map) {
if ((value == null ? void 0 : value.type) === "text" && (value == null ? void 0 : value.text.startsWith("Slide:\n"))) {
return value;
}
}
return false;
};
if ((canvasView == null ? void 0 : canvasView.getViewType()) === "canvas") {
if (!checking) {
const canvas = canvasView.canvas;
if (!canvas)
return;
const nodes = canvas.getData().nodes;
const slideNode = canvas.nodes.get(findSlideNode(nodes).id);
if (!slideNode) {
new import_obsidian.Notice("No slide node found, mark any node as slide before");
return;
}
const slideText = slideNode == null ? void 0 : slideNode.text;
this.currentSlide = slideText.split("\n").filter((i) => i && i.trim());
this.currentSlide.shift();
canvas.deselectAll();
if (this.currentSlideNum === this.currentSlide.length)
this.currentSlideNum = 0;
const slideNodes = (_a = this.currentSlide[this.direction === "next" ? this.currentSlideNum : this.currentSlideNum + 1 === this.currentSlide.length ? 0 : this.currentSlideNum + 1]) == null ? void 0 : _a.slice(2).split(", ");
slideNodes.forEach((id) => {
const node = canvas.nodes.get(id);
if (node)
canvas.select(node);
});
this.direction = "next";
canvas.zoomToSelection();
if (!(this.currentSlideNum === 0 && this.currentSlide.length === 1))
this.currentSlideNum = this.currentSlideNum + 1;
}
return true;
}
}
});
this.addCommand({
id: "previous-slide",
name: "Previous Slide",
checkCallback: (checking) => {
var _a;
const canvasView = this.app.workspace.getActiveViewOfType(import_obsidian.ItemView);
const findSlideNode = (map) => {
for (const value of map) {
if ((value == null ? void 0 : value.type) === "text" && (value == null ? void 0 : value.text.startsWith("Slide:\n"))) {
return value;
}
}
return false;
};
if ((canvasView == null ? void 0 : canvasView.getViewType()) === "canvas") {
if (!checking) {
const canvas = canvasView.canvas;
if (!canvas)
return;
const nodes = canvas.getData().nodes;
const slideNode = canvas.nodes.get(findSlideNode(nodes).id);
if (!slideNode) {
new import_obsidian.Notice("No slide node found, mark any node as slide before");
return;
}
const slideText = slideNode == null ? void 0 : slideNode.text;
this.currentSlide = slideText.split("\n").filter((i) => i && i.trim());
this.currentSlide.shift();
canvas.deselectAll();
let currentSlideNum = this.currentSlideNum === 0 ? this.currentSlide.length - 1 : this.currentSlideNum - 1;
if (this.currentSlideNum === this.currentSlide.length && this.direction !== "previous")
currentSlideNum = this.currentSlide.length - 2;
const slideNodes = (_a = this.currentSlide[currentSlideNum]) == null ? void 0 : _a.slice(2).split(", ");
slideNodes.forEach((id) => {
const node = canvas.nodes.get(id);
if (node)
canvas.select(node);
});
this.direction = "previous";
canvas.zoomToSelection();
if (this.currentSlideNum === 0)
this.currentSlideNum = this.currentSlide.length - 1;
else
this.currentSlideNum = this.currentSlideNum - 1;
}
return true;
}
}
});
}
getAllGroupNode(canvasView) {
const canvas = canvasView.canvas;
const groups = Array.from(canvas.nodes);
const groupsArray = [];
groups.forEach((group) => {
var _a;
if (((_a = group[1]) == null ? void 0 : _a.renderedZIndex) === -1)
groupsArray.push(group[1]);
});
groupsArray.sort((a, b) => a.x - b.x);
return groupsArray;
}
getAllGroupNodeInViewPort(canvasView) {
const canvas = canvasView.canvas;
const groups = canvas.getViewportNodes();
const groupsArray = [];
groups.forEach((group) => {
if ((group == null ? void 0 : group.renderedZIndex) === -1)
groupsArray.push(group);
});
console.log(groupsArray);
groupsArray.sort((a, b) => a.x - b.x);
return groupsArray;
}
onunload() {
}
};

View File

@@ -0,0 +1,15 @@
{
"id": "canvas-presentation",
"name": "Canvas Presentation",
"version": "0.0.3",
"minAppVersion": "1.1.0",
"description": "A plugin to help you display cards based on sequence.",
"author": "Boninall",
"authorUrl": "https://github.com/quorafind",
"fundingUrl": {
"Buy Me a Coffee": "https://www.buymeacoffee.com/boninall",
"爱发电": "https://afdian.net/a/boninall",
"支付宝": "https://cdn.jsdelivr.net/gh/Quorafind/.github@main/IMAGE/%E6%94%AF%E4%BB%98%E5%AE%9D%E4%BB%98%E6%AC%BE%E7%A0%81.jpg"
},
"isDesktopOnly": false
}

View File

@@ -0,0 +1,8 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/

38
.obsidian/plugins/card-board/data.json vendored Normal file
View File

@@ -0,0 +1,38 @@
{
"version": "0.7.0",
"data": {
"boardConfigs": [
{
"tag": "tagBoardConfig",
"data": {
"columns": [
{
"tag": "task",
"displayTitle": "Task"
}
],
"showColumnTags": true,
"completedCount": 10,
"filters": [],
"filterPolarity": "Allow",
"showFilteredTags": true,
"includeOthers": false,
"includeUntagged": false,
"title": "test"
}
}
],
"globalSettings": {
"taskCompletionFormat": "ObsidianCardBoard",
"columnNames": {
"today": "",
"tomorrow": "",
"future": "",
"undated": "",
"others": "",
"untagged": "",
"completed": ""
}
}
}
}

1
.obsidian/plugins/card-board/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "card-board",
"name": "CardBoard",
"description": "Display markdown tasks on kanban style boards.",
"version": "0.7.2",
"author": "roovo",
"authorUrl": "https://github.com/roovo",
"minAppVersion": "0.12.13",
"isDesktopOnly": false
}

558
.obsidian/plugins/card-board/styles.css vendored Normal file
View File

@@ -0,0 +1,558 @@
:root {
--font-normal:16px;
--font-small:13px;
--font-smaller:12px;
--normal-weight:400; /* Switch to 300 if you want thinner default text */
--bold-weight:600; /* Switch to 700 if you want thicker bold text */
--border-width:1px;
--text-title-h1: var(--text-normal);
}
.workspace-leaf-content[data-type='card-board-view'] .view-content {
padding: 0;
overflow: hidden;
}
.card-board-container .modal.mod-settings .vertical-tab-header::after {
display: none;
content: "";
}
.card-board-view {
height: 100%;
background-color: var(--background-primary);
padding: var(--file-margins);
font-size: var(--font-normal);
}
ul.card-board-tab-list {
display: flex;
list-style-type: none;
margin: 0;
padding: 0;
}
ul.card-board-tab-list > li::before {
content: "";
}
ul.card-board-column-list > li.card-board-card::before {
content: "";
}
li.card-board-pre-tabs, li.card-board-post-tabs {
background-color: var(--background-secondary-alt);
}
li.card-board-pre-tabs .card-board-tabs-inner, li.card-board-post-tabs .card-board-tabs-inner {
width: 20px;
height:100%
}
li.card-board-pre-tabs .card-board-tabs-inner,
li.card-board-post-tabs .card-board-tabs-inner,
li.card-board-tab-title .card-board-tabs-inner {
background-color: var(--background-primary);
}
li.card-board-pre-tabs .card-board-tabs-inner {
padding: 3px 7px;
width: 30px;
}
.card-board-tabs-inner {
padding: 3px 1em;
}
li.is-before-active .card-board-tabs-inner {
border-bottom-right-radius: 10px;
}
li.is-after-active .card-board-tabs-inner {
border-bottom-left-radius: 10px;
}
.card-board-tab-title {
background-color: var(--background-secondary-alt);
border-radius: 5px 5px 0 0 ;
color: var(--text-muted);
cursor: pointer;
}
.card-board-tab-icon {
cursor: pointer;
}
.card-board-tab-title.is-active .card-board-tabs-inner {
background-color: var(--background-secondary-alt);
border-radius: 5px 5px 0 0 ;
color: var(--text-normal);
}
.card-board-boards {
display: grid;
padding: 1em;
padding-bottom: 0.5em;
background-color: var(--background-secondary-alt);
border-radius: 5px;
overflow-x: auto;
}
.card-board-board {
grid-column-start: 1;
grid-row-start: 1;
}
.card-board-columns {
display: flex;
}
.card-board-columns::after {
content: "";
flex: 0 0 1em;
}
.card-board-column {
flex: 0 0 auto;
padding: 0.6em 1em 1em 1em;
margin-right: 15px;
width: 20em;
background-color: var(--background-secondary);
border-radius: 3px;
border: var(--border-width) solid var(--background-modifier-border);
}
div[dir=rtl] .card-board-column {
margin-left: 15px;
margin-right: 0;
}
.card-board-column.collapsed {
width: 2em;
min-width: 2em;
flex-grow: 0;
overflow: visible;
margin: 0;
margin-right: 15px;
padding: 0.6em 0 0 0.3em;
}
div[dir=rtl] .card-board-column.collapsed {
margin-left: 15px;
margin-right: 0;
padding: 0.6em 0.3em 0 0;
}
.card-board-column-header {
font-weight: var(--bold-weight);
margin-bottom: 0.6em;
display: flex;
align-items: center;
}
div[dir=ltr] .card-board-column.collapsed .card-board-column-header {
writing-mode: vertical-lr;
}
div[dir=rtl] .card-board-column.collapsed .card-board-column-header {
writing-mode: vertical-rl;
}
.card-board-column.collapsed .card-board-column-header .sub-text {
font-weight: var(--normal-weight);
margin-top: 0.3em;
margin-bottom: 0.3em;
}
.arrow-down {
width: 0;
height: 0;
border-left: 0.4em solid transparent;
border-right: 0.4em solid transparent;
border-top: 0.4em solid var(--text-normal);
margin: 0.5em 0 0.5em 0;
cursor: pointer;
}
div[dir=rtl] .arrow-down {
order: 3;
}
div[dir=ltr] .arrow-right {
width: 0;
height: 0;
border-top: 0.4em solid transparent;
border-bottom: 0.4em solid transparent;
border-left: 0.4em solid var(--text-normal);
margin: 0 0.4em 0 -0.2em;
cursor: pointer;
}
div[dir=rtl] .arrow-right {
width: 0;
height: 0;
border-top: 0.4em solid transparent;
border-bottom: 0.4em solid transparent;
border-right: 0.4em solid var(--text-normal);
margin: 0 -0.2em 0 0.4em;
cursor: pointer;
}
ul.card-board-column-list {
display: grid;
grid-gap: 0.5em;
max-height: calc(100vh - 16em);
list-style-type: none;
margin: 0;
padding: 0;
overflow-y: auto;
}
ul.card-board-column-list > li.card-board-card::before {
content: "";
}
.card-board-column.collapsed .card-board-card {
display: none;
}
.card-board-card {
border-radius: 3px;
border: var(--border-width) solid var(--background-modifier-border);
background-color: var(--background-primary);
padding: 0;
user-select: text;
-webkit-user-select: text;
grid-column-gap: 0.25em;
display: grid;
grid: "mark contents"
/ 5px auto;
}
.card-board-card-highlight-area {
grid-area: mark;
}
.card-board-card-highlight-area.critical {
background-color: var(--text-error);
}
.card-board-card-highlight-area.good {
background-color: var(--text-success);
}
.card-board-card-highlight-area.important {
background-color: var(--text-accent);
}
.card-board-card-content-area {
grid-area: contents;
display: grid;
padding: 0.5em 0;
grid: "tags tags"
"checkbox title"
"subtasks subtasks"
"notes notes"
"footer footer"
/ auto minmax(0, 1fr);
}
.card-board-card-tag-area {
grid-area: tags;
margin: 0 0.2em 0.5em 0.2em;
}
.card-board-card input.task-list-item-checkbox {
grid-area: checkbox;
align-self: top;
margin: 0.2em;
width: 1em;
height: 1em;
font-size: 1em;
}
.card-board-card input.task-list-item-checkbox:after {
width: 1em;
height: 1em;
font-size: 1em;
}
.checkbox-container.is-mid-enabled {
background-color: var(--interactive-accent-hover);
}
.checkbox-container.is-mid-enabled:after {
transform: translate3d(calc((var(--toggle-width) - var(--toggle-thumb-width) - var(--toggle-border-width)) / 2), 0, 0);
}
.checkbox-container.is-mid-enabled:active:after {
left: -4px;
}
.card-board-card-title {
grid-area: title;
margin: 0 0.2em;
font-weight: var(--bold-weight);
display: -webkit-box;
color: var(--text-title-h1);
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
.card-board-card-tag-area p {
display: inline;
}
.card-board-card-title p {
display: inline;
}
.card-board-card-subtasks-area {
grid-area: subtasks;
font-size: var(--font-small);
margin-top: 0.5em;
}
/* fixes an issue with themes showing border on the left of lists */
.card-board-card-subtasks-area > ul::before {
border-style: none;
}
.card-board-card-subtask {
display: grid;
grid: "checkbox title"
/ auto minmax(0, 1fr);
}
.card-board-card-subtask .task-list-item-checkbox {
font-size: var(--font-small);
}
.card-board-card-subtask .card-board-card-title {
font-weight: var(--normal-weight);
font-size: var(--font-small);
}
.card-board-card-notes-area {
grid-area: notes;
font-size: var(--font-small);
margin: 0 0.2em;
}
.card-board-card-notes-area > ul::before {
border-style: none;
}
.card-board-card-notes-area button {
font-size: var(--font-small);
padding: 0.5em 0.5em;
line-height: 1em;
height: auto;
}
.card-board-card-footer-area {
grid-area: footer;
display: grid;
grid: "due actions"
/ minmax(0, 1fr) auto;
font-size: var(--font-small);
margin: 0.5em 0.2em 0 0.2em;
}
.card-board-card-action-area-due {
grid-area: due;
color: var(--text-faint);
}
.card-board-card-action-area-buttons {
grid-area: actions;
display: grid;
grid-auto-flow: column;
grid-gap: 0.5em;
margin: 0 0.2em;
}
.card-board-card-action-area-button {
cursor: pointer;
}
.card-board-view .modal-content {
display: grid;
grid: "select form"
/ 200px auto;
overflow: hidden;
margin-top: 0;
}
.setting-items-inner {
position: relative;
height: auto;
}
.vertical-tab-header-group-title-icon {
justify-self: end;
cursor: pointer;
float: right;
}
.modal.mod-settings {
width: 80%;
}
.card-board-view .vertical-tab-nav-item {
padding-right: 1.5em;
}
.modal-form {
display: grid;
grid-gap: 1.5em;
padding-top: 1.3em;
}
.form-item {
display: grid;
grid: "words control";
}
.form-item-name {
grid-area: words;
}
.form-item-control {
grid-area: control;
justify-self: end;
}
.dialog-buttons {
display: grid;
grid-auto-flow: column;
justify-content: center;
padding-top: 2em;
}
.modal-form .dialog-buttons {
border-top: 1px solid var(--background-modifier-border);
}
.setting-item-control textarea {
min-height: 10em;
min-width: 22em;
}
.multiselect-items {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
background: var(--background-modifier-form-field);
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
color: var(--text-normal);
padding: 4px 5px;
font-size: var(--font-small);
min-width: 217px;
max-width: 417px;
overflow-x: auto;
gap: 3px;
}
.multiselect-items input.multiselect-input {
border: 0;
min-width: 100px;
font-size: var(--font-small);
}
.multiselect-items input.multiselect-input:focus {
border: 0;
box-shadow: none;
}
.multiselect-item {
white-space: nowrap;
}
.multiselect-item.selected {
cursor: pointer;
vertical-align: middle;
}
.multiselect-item-key {
background-color: var(--background-secondary-alt);
border: 1px solid var(--background-modifier-border);
border-right: 0px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
padding-left: 4px;
padding-right: 4px;
padding-bottom: 2px;
line-height: 1.5em;
vertical-align: middle;
}
.multiselect-item.selected .multiselect-item-key {
background-color: var(--text-muted);
color: var(--text-on-accent);
border-right: 0.5px solid var(--text-on-accent);
}
.multiselect-item.selected .multiselect-item-value {
background-color: var(--text-muted);
color: var(--text-on-accent);
}
.multiselect-items input.multiselect-input {
padding: 2px;
}
.multiselect-item-value {
background-color: var(--background-primary-alt);
border: 1px solid var(--background-modifier-border);
border-left: 0px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
padding-left: 4px;
padding-right: 4px;
padding-bottom: 2px;
line-height: 1.5em;
vertical-align: middle;
}
.card-board-view .suggestion-container {
display: grid;
grid-auto-flow: row;
grid-gap: 0.5em;
padding: 5px 8px;
font-size: var(--font-small);
text-align: left;
line-height: 1em;
}
.card-board-view .suggestion-section {
border-top: 1px solid var(--background-modifier-border);
padding-top: 0.5em;
}
.card-board-view .suggestion-section:first-child {
border-top: none;
}
.card-board-view .suggestion-section-heading {
color: var(--text-faint);
font-size: var(--font-smaller);
font-weight: var(--bold-weight);
margin-bottom: 3px;
}
.card-board-view .suggestion-item {
padding-left: 5px;
font-size: var(--font-small);
line-height: 1.3em;
}
.setting-item-control .suggestion-item:hover {
background-color: var(--background-secondary);
}

View File

@@ -0,0 +1,42 @@
{
"enabledButtons": [
{
"id": "file-explorer:reveal-active-file",
"icon": "folder",
"name": "File explorer: Reveal active file in navigation",
"showButtons": "both"
},
{
"id": "obsidian-excalidraw-plugin:excalidraw-autocreate-and-embed",
"icon": "image-file",
"name": "Excalidraw: Create a new drawing - IN A NEW PANE - and embed into active document",
"showButtons": "both"
}
],
"desktop": true,
"titleLeft": [
{
"id": "obsidian-spaced-repetition:srs-note-review-open-note",
"icon": "sheets-in-box",
"name": "Spaced Repetition: Open a note for review"
},
{
"id": "obsidian-spaced-repetition:srs-note-review-hard",
"icon": "cross",
"name": "Spaced Repetition: Review note as hard"
},
{
"id": "obsidian-spaced-repetition:srs-note-review-good",
"icon": "plus-minus-glyph",
"name": "Spaced Repetition: Review note as good"
},
{
"id": "obsidian-spaced-repetition:srs-note-review-easy",
"icon": "checkmark",
"name": "Spaced Repetition: Review note as easy"
}
],
"titleRight": [],
"titleCenter": [],
"paneRelief": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "customizable-page-header-buttons",
"name": "Customizable Page Header and Title Bar",
"version": "4.6.2",
"minAppVersion": "0.15.4",
"description": "This plugin lets you add buttons for executing commands to the page header and on desktop to the title bar.",
"author": "kometenstaub",
"authorUrl": "https://github.com/kometenstaub",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,50 @@
/*
MIT License
Copyright (c) 2021-2022 kometenstaub and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/* @settings
name: Customizable Page Header and Title Bar
id: customizable-page-header-buttons
settings:
-
id: page-header-spacing-mobile
title: Page Header Button Spacing (mobile)
type: variable-number-slider
default: 12
min: 0
max: 30
step: 1
format: px
-
id: page-header-spacing-desktop
title: Page Header Button Spacing (desktop)
type: variable-number-slider
default: 8
min: 0
max: 30
step: 1
format: px
*/
.page-header-button.titlebar-center{flex-grow:1;font-size:12px;height:100%;left:0;letter-spacing:.05em;opacity:.8;position:absolute;text-align:center;top:0;width:100%}body:not(.is-mobile) .view-actions{align-items:center}body:not(.is-mobile) .view-action,body:not(.is-mobile) .view-action.pane-relief{display:flex;position:unset}body:not(.is-mobile) .view-action.pane-relief.app\:go-back:before,body:not(.is-mobile) .view-action.pane-relief.app\:go-forward:after{display:inline;font-size:1em;line-height:1;vertical-align:text-top}body:not(.is-mobile) .view-action.pane-relief.app\:go-forward:after{content:var(--pane-relief-forward-count);padding-left:.4em}body:not(.is-mobile) .view-action.pane-relief.app\:go-back:before{content:var(--pane-relief-backward-count);padding-right:.4em}body:not(.is-mobile) .view-action:not(:last-child){margin-right:var(--page-header-spacing-desktop)}body:not(.is-mobile) .pane-relief body:not(.no-svg-replace) svg{vertical-align:top}.is-mobile .view-actions{align-items:center}.is-mobile .view-action:not(:last-child){margin-right:var(--page-header-spacing-mobile)}

View File

@@ -0,0 +1,93 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// main.ts
var main_exports = {};
__export(main_exports, {
default: () => CycleInSidebarPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian = require("obsidian");
var CycleInSidebarPlugin = class extends import_obsidian.Plugin {
getLeavesOfSidebar(split) {
const oneSideSplitRoot = split.getRoot();
const leaves = [];
this.app.workspace.iterateAllLeaves((l) => {
leaves.push(l);
});
return leaves.filter((l) => l.getRoot() === oneSideSplitRoot).filter((l) => l.view.getViewType() !== "empty");
}
isSidebarOpen(split) {
return this.getLeavesOfSidebar(split).some((l) => l.view.containerEl.clientHeight > 0);
}
cycleInSideBar(split, offset) {
const leaves = this.getLeavesOfSidebar(split);
var currentIndex = 0;
for (; currentIndex < leaves.length; currentIndex++) {
if (leaves[currentIndex].view.containerEl.clientHeight > 0)
break;
}
if (currentIndex == leaves.length)
return;
const nextIndex = (currentIndex + offset < 0 ? leaves.length - 1 : currentIndex + offset) % leaves.length;
this.app.workspace.revealLeaf(leaves[nextIndex]);
}
async cycleRightSideBar(offset) {
this.cycleInSideBar(this.app.workspace.rightSplit, offset);
}
async cycleLeftSideBar(offset) {
this.cycleInSideBar(this.app.workspace.leftSplit, offset);
}
async onload() {
this.addCommand({
id: "cycle-right-sidebar",
name: "Cycle tabs of right sidebar",
callback: () => {
this.cycleRightSideBar(1);
}
});
this.addCommand({
id: "cycle-right-sidebar-reverse",
name: "Cycle tabs of right sidebar in reverse",
callback: () => {
this.cycleRightSideBar(-1);
}
});
this.addCommand({
id: "cycle-left-sidebar",
name: "Cycle tabs of left sidebar",
callback: () => {
this.cycleLeftSideBar(1);
}
});
this.addCommand({
id: "cycle-left-sidebar-reverse",
name: "Cycle tabs of left sidebar in reverse",
callback: () => {
this.cycleLeftSideBar(-1);
}
});
}
onunload() {
}
};

View File

@@ -0,0 +1,10 @@
{
"id": "cycle-in-sidebar",
"name": "Cycle In Sidebar",
"version": "1.0.2",
"minAppVersion": "0.15.0",
"description": "This a plugin provides hotkeys to cycle through tabs in the left or right sidebars.",
"author": "Houcheng",
"authorUrl": "https://www.flickr.com/photos/houcheng_tw/",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,8 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/

View File

@@ -0,0 +1,267 @@
{
"version": "1.0.0",
"onOpenPreferNewTab": false,
"alwaysNewTabForSymbols": false,
"useActiveTabForSymbolsOnMobile": false,
"symbolsInLineOrder": true,
"editorListCommand": "go ",
"symbolListCommand": "@",
"symbolListActiveEditorCommand": "$ ",
"workspaceListCommand": "+",
"headingsListCommand": "#",
"bookmarksListCommand": "'",
"commandListCommand": ">",
"relatedItemsListCommand": "~",
"relatedItemsListActiveEditorCommand": "^ ",
"strictHeadingsOnly": false,
"searchAllHeadings": true,
"headingsSearchDebounceMilli": 250,
"excludeViewTypes": [
"empty"
],
"referenceViews": [
"backlink",
"localgraph",
"outgoing-link",
"outline"
],
"limit": 50,
"includeSidePanelViewTypes": [
"backlink",
"calendar",
"canvas",
"image",
"markdown",
"pdf",
"BC-matrix",
"BC-tree",
"sekund-main-view",
"custom-frames-detexify",
"localgraph",
"tags"
],
"enabledSymbolTypes": {
"1": true,
"2": true,
"4": true,
"8": true,
"16": true
},
"selectNearestHeading": true,
"excludeFolders": [],
"excludeLinkSubTypes": 0,
"excludeRelatedFolders": [
""
],
"excludeOpenRelatedFiles": false,
"excludeObsidianIgnoredFiles": false,
"shouldSearchFilenames": false,
"pathDisplayFormat": 3,
"hidePathIfRoot": true,
"enabledRelatedItems": [
"disk-location",
"backlink"
],
"showOptionalIndicatorIcons": true,
"overrideStandardModeBehaviors": true,
"enabledRibbonCommands": [
"HeadingsList",
"SymbolList"
],
"fileExtAllowList": [
"canvas"
],
"enableMatchPriorityAdjustments": false,
"matchPriorityAdjustments": {
"isOpenInEditor": 0,
"isBookmarked": 0,
"isRecent": 0,
"file": 0,
"alias": 0,
"h1": 0
},
"quickFilters": {
"resetKey": "0",
"keyList": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"modifiers": [
"Ctrl",
"Alt"
],
"facetList": [
{
"id": "Heading",
"mode": 4,
"label": "headings",
"isActive": false,
"isAvailable": true
},
{
"id": "Tag",
"mode": 4,
"label": "tags",
"isActive": false,
"isAvailable": true
},
{
"id": "Callout",
"mode": 4,
"label": "callouts",
"isActive": false,
"isAvailable": true
},
{
"id": "Link",
"mode": 4,
"label": "links",
"isActive": false,
"isAvailable": true
},
{
"id": "Embed",
"mode": 4,
"label": "embeds",
"isActive": false,
"isAvailable": true
},
{
"id": "canvas-node-file",
"mode": 4,
"label": "file cards",
"isActive": false,
"isAvailable": true
},
{
"id": "canvas-node-text",
"mode": 4,
"label": "text cards",
"isActive": false,
"isAvailable": true
},
{
"id": "canvas-node-link",
"mode": 4,
"label": "link cards",
"isActive": false,
"isAvailable": true
},
{
"id": "canvas-node-group",
"mode": 4,
"label": "groups",
"isActive": false,
"isAvailable": true
},
{
"id": "backlink",
"mode": 128,
"label": "backlinks",
"isActive": false,
"isAvailable": true
},
{
"id": "outgoing-link",
"mode": 128,
"label": "outgoing links",
"isActive": false,
"isAvailable": true
},
{
"id": "disk-location",
"mode": 128,
"label": "disk location",
"isActive": false,
"isAvailable": true
},
{
"id": "bookmarks-file",
"mode": 32,
"label": "files",
"isActive": false,
"isAvailable": true
},
{
"id": "bookmarks-folder",
"mode": 32,
"label": "folders",
"isActive": false,
"isAvailable": true
},
{
"id": "bookmarks-search",
"mode": 32,
"label": "searches",
"isActive": false,
"isAvailable": true
}
],
"shouldResetActiveFacets": false,
"shouldShowFacetInstructions": true
},
"preserveCommandPaletteLastInput": false,
"preserveQuickSwitcherLastInput": false,
"shouldCloseModalOnBackspace": false,
"maxRecentFileSuggestionsOnInit": 25,
"orderEditorListByAccessTime": true,
"insertLinkInEditor": {
"isEnabled": true,
"keymap": {
"modifiers": [
"Mod"
],
"key": "i",
"purpose": "insert in editor"
},
"insertableEditorTypes": [
"markdown"
],
"useBasenameAsAlias": true,
"useHeadingAsAlias": true
},
"removeDefaultTabBinding": true,
"navigationKeys": {
"nextKeys": [
{
"modifiers": [
"Ctrl"
],
"key": "n"
},
{
"modifiers": [
"Ctrl"
],
"key": "j"
}
],
"prevKeys": [
{
"modifiers": [
"Ctrl"
],
"key": "p"
},
{
"modifiers": [
"Ctrl"
],
"key": "k"
}
]
},
"closeWhenEmptyKeys": [
{
"modifiers": null,
"key": "Backspace"
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "darlal-switcher-plus",
"name": "Quick Switcher++",
"version": "3.3.7",
"minAppVersion": "1.4.5",
"description": "Enhanced Quick Switcher, search open panels, and symbols.",
"author": "darlal",
"authorUrl": "https://github.com/darlal/obsidian-switcher-plus",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,154 @@
:root {
--symbol-base-padding: 0px;
--symbol-indent-padding: 12px;
}
.qsp-filter-active {
color: var(--text-accent);
}
/* suggestion file path icon */
.qsp-path-indicator {
margin-right: 4px;
vertical-align: middle;
}
/* symbol suggestion, symbol type icon */
.qsp-symbol-indicator {
width: 2em;
text-align: center;
float: left;
font-weight: 800;
}
.qsp-symbol-indicator.callout {
background-color:inherit;
padding: inherit;
}
/* warning/error text */
.qsp-warning {
color: var(--text-error);
}
/* settings panel, indent setting to create visual hierarchy */
.qsp-setting-item-indent {
border: 0px;
padding-left: 36px;
}
/* symbol suggestion should align to the left */
.suggestion-item.qsp-suggestion-symbol {
justify-content: left;
}
/* highlight recently used file suggestions */
.suggestion-item.qsp-recent-file .qsp-title {
text-decoration: underline dotted var(--text-muted);
}
/* highlight currently open editor suggestions */
.suggestion-item.qsp-open-editor .qsp-title {
text-decoration: underline var(--text-accent);
}
/* highlight the open editor flair icon */
.suggestion-item.qsp-open-editor .qsp-editor-indicator {
color: var(--text-accent);
}
/* symbol suggestion display the icon first (on the left side) */
.qsp-suggestion-symbol > .qsp-aux {
order: -1;
}
/* symbol suggestion indentation when in outline mode */
.qsp-symbol-l0 {
padding-left: var(--symbol-base-padding);
}
.qsp-symbol-l1 {
padding-left: calc(var(--symbol-base-padding) + var(--symbol-indent-padding));
}
.qsp-symbol-l2 {
padding-left: calc(var(--symbol-base-padding) + (2 * var(--symbol-indent-padding)));
}
.qsp-symbol-l3 {
padding-left: calc(var(--symbol-base-padding) + (3 * var(--symbol-indent-padding)));
}
.qsp-symbol-l4 {
padding-left: calc(var(--symbol-base-padding) + (4 * var(--symbol-indent-padding)));
}
.qsp-symbol-l5 {
padding-left: calc(var(--symbol-base-padding) + (5 * var(--symbol-indent-padding)));
}
.qsp-symbol-l6 {
padding-left: calc(var(--symbol-base-padding) + (6 * var(--symbol-indent-padding)));
}
/* command suggestion item */
.qsp-suggestion-command {}
/* editor suggestion item */
.qsp-suggestion-editor {}
/* heading suggestion item */
.qsp-suggestion-headings {}
/* related item suggestion */
.qsp-suggestion-related {}
/* symbol suggestion item */
.qsp-suggestion-symbol {}
/* workspace suggestion item */
.qsp-suggestion-workspace {}
/* file suggestion when not in standard mode */
.qsp-suggestion-file {}
/* alias suggestion when not in standard mode */
.qsp-suggestion-alias {}
/* suggestion primary content container */
.qsp-content {}
/* suggestion title element */
.qsp-title {}
/* suggestion secondary information element (like file path information) */
.qsp-note {}
/* suggestion flair/icon container */
.qsp-aux {}
/* suggestion file path element */
.qsp-path {}
/* headings suggestion, heading level (H1, H2, etc..) icon */
.qsp-headings-indicator {}
/* flair icon for suggestions that represent a recent file */
.qsp-recent-indicator {}
/* flair icon for suggestion that represent a file currently opened in an editor */
.qsp-editor-indicator {}
/* flair icon for suggestions that represent a related file */
.qsp-related-indicator {}
/* flair icon for suggestions that represent an alias */
.qsp-alias-indicator {}
/* headings level */
.qsp-headings-l1 {}
.qsp-headings-l2 {}
.qsp-headings-l3 {}
.qsp-headings-l4 {}
.qsp-headings-l5 {}
.qsp-headings-l6 {}

22
.obsidian/plugins/dataview/data.json vendored Normal file
View File

@@ -0,0 +1,22 @@
{
"renderNullAs": "\\-",
"taskCompletionTracking": true,
"taskCompletionUseEmojiShorthand": true,
"taskCompletionText": "completion",
"taskCompletionDateFormat": "dd-MM-YYY",
"warnOnEmptyResult": true,
"refreshEnabled": true,
"refreshInterval": 2500,
"defaultDateFormat": "yyyy-MM-dd",
"defaultDateTimeFormat": "yyyy-MM-dd HH:mm",
"maxRecursiveRenderDepth": 4,
"tableIdColumnName": "File",
"tableGroupColumnName": "Group",
"allowHtml": true,
"inlineQueryPrefix": "=",
"inlineJsQueryPrefix": "$=",
"inlineQueriesInCodeblocks": true,
"enableDataviewJs": true,
"enableInlineDataviewJs": true,
"prettyRenderInlineFields": true
}

20105
.obsidian/plugins/dataview/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "dataview",
"name": "Dataview",
"version": "0.5.58",
"minAppVersion": "0.13.11",
"description": "Complex data views for the data-obsessed.",
"author": "Michael Brenan <blacksmithgu@gmail.com>",
"authorUrl": "https://github.com/blacksmithgu",
"isDesktopOnly": false
}

146
.obsidian/plugins/dataview/styles.css vendored Normal file
View File

@@ -0,0 +1,146 @@
/** Live Preview padding fixes, specifically for DataviewJS custom HTML elements. */
.is-live-preview .block-language-dataviewjs > p, .is-live-preview .block-language-dataviewjs > span {
line-height: 1.0;
}
.block-language-dataview {
overflow-y: auto;
}
/*****************/
/** Table Views **/
/*****************/
/* List View Default Styling; rendered internally as a table. */
.table-view-table {
width: 100%;
}
.table-view-table > thead > tr, .table-view-table > tbody > tr {
margin-top: 1em;
margin-bottom: 1em;
text-align: left;
}
.table-view-table > tbody > tr:hover {
background-color: var(--table-row-background-hover);
}
.table-view-table > thead > tr > th {
font-weight: 700;
font-size: larger;
border-top: none;
border-left: none;
border-right: none;
border-bottom: solid;
max-width: 100%;
}
.table-view-table > tbody > tr > td {
text-align: left;
border: none;
font-weight: 400;
max-width: 100%;
}
.table-view-table ul, .table-view-table ol {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Rendered value styling for any view. */
.dataview-result-list-root-ul {
padding: 0em !important;
margin: 0em !important;
}
.dataview-result-list-ul {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Generic grouping styling. */
.dataview.result-group {
padding-left: 8px;
}
/*******************/
/** Inline Fields **/
/*******************/
.dataview.inline-field-key {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-primary-alt);
color: var(--text-nav-selected);
}
.dataview.inline-field-value {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-secondary-alt);
color: var(--text-nav-selected);
}
.dataview.inline-field-standalone-value {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-secondary-alt);
color: var(--text-nav-selected);
}
/***************/
/** Task View **/
/***************/
.dataview.task-list-item, .dataview.task-list-basic-item {
margin-top: 3px;
margin-bottom: 3px;
transition: 0.4s;
}
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
background-color: var(--text-selection);
box-shadow: -40px 0 0 var(--text-selection);
cursor: pointer;
}
/*****************/
/** Error Views **/
/*****************/
div.dataview-error-box {
width: 100%;
min-height: 150px;
display: flex;
align-items: center;
justify-content: center;
border: 4px dashed var(--background-secondary);
}
.dataview-error-message {
color: var(--text-muted);
text-align: center;
}
/*************************/
/** Additional Metadata **/
/*************************/
.dataview.small-text {
font-size: smaller;
color: var(--text-muted);
margin-left: 3px;
}
.dataview.small-text::before {
content: "(";
}
.dataview.small-text::after {
content: ")";
}

View File

@@ -0,0 +1,10 @@
{
"welcomeComplete": true,
"theme": {
"dark": null,
"layout": "full"
},
"drawing": {
"sketch": false
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "drawio-obsidian",
"name": "Diagrams",
"version": "1.5.0",
"minAppVersion": "0.9.12",
"description": "Draw.io diagrams for Obsidian. This plugin introduces diagrams that can be included within notes or as stand-alone files. Diagrams are created as SVG files (although .drawio extensions are also supported).",
"author": "Sam Greenhalgh",
"authorUrl": "https://www.radicalresearch.co.uk/",
"isDesktopOnly": true
}

View File

@@ -0,0 +1,28 @@
.progress-bar-line {
width: 100%;
left: 0;
}
.progress-bar-indicator {
width: 90%;
margin: 0 10%;
}
.diagram-view svg {
max-width: 100%;
max-height: 100%;
display: block;
}
.diagram-view svg a:link,
.diagram-view svg a:visited {
color: var(--interactive-accent, #00f);
filter: drop-shadow(
0 0 3px rgba(var(--interactive-accent-rgb, "0, 0, 255"), 0.5)
);
}
.diagram-view svg a:hover {
color: var(--interactive-accent-hover, #00f);
filter: drop-shadow(0 0 3px var(--interactive-accent-hover, #00f));
}

268
.obsidian/plugins/excalibrain/data.json vendored Normal file
View File

@@ -0,0 +1,268 @@
{
"compactView": true,
"compactingFactor": 1.5,
"minLinkLength": 18,
"excalibrainFilepath": "excalibrain.md",
"indexUpdateInterval": 5000,
"hierarchy": {
"parents": [
"author",
"u",
"up"
],
"children": [
"d",
"down"
],
"friends": [
"Friend",
"Friends",
"j",
"Jump",
"Jumps"
],
"exclusions": [
"excalidraw-border-color",
"excalidraw-css",
"excalidraw-default-mode",
"excalidraw-export-dark",
"excalidraw-export-pngscale",
"excalidraw-export-svgpadding",
"excalidraw-export-transparent",
"excalidraw-font",
"excalidraw-font-color",
"excalidraw-link-brackets",
"excalidraw-link-prefix",
"excalidraw-linkbutton-opacity",
"excalidraw-onload-script",
"excalidraw-plugin",
"excalidraw-url-prefix",
"kanban-plugin"
],
"leftFriends": [
"j",
"jump",
"supports",
"voir"
],
"rightFriends": [
"cons",
"disadvantages",
"missing",
"opposes",
"refutes"
],
"previous": [
"Before",
"prev",
"Previous",
"w",
"West"
],
"next": [
"After",
"e",
"East",
"n",
"next"
]
},
"inferAllLinksAsFriends": false,
"inverseInfer": false,
"inverseArrowDirection": true,
"renderAlias": true,
"nodeTitleScript": "",
"backgroundColor": "#262626ff",
"excludeFilepaths": [],
"autoOpenCentralDocument": true,
"toggleEmbedTogglesAutoOpen": true,
"showInferredNodes": true,
"showAttachments": true,
"showURLNodes": true,
"showVirtualNodes": true,
"showFolderNodes": false,
"showTagNodes": true,
"showPageNodes": true,
"showNeighborCount": true,
"showFullTagName": false,
"maxItemCount": 5,
"renderSiblings": true,
"baseNodeStyle": {
"prefix": "",
"backgroundColor": "#00000066",
"fillStyle": "solid",
"textColor": "#1b9419ff",
"borderColor": "#000000ff",
"fontSize": 50,
"fontFamily": 4,
"maxLabelLength": 50,
"roughness": 0,
"strokeShaprness": "round",
"strokeWidth": 1,
"strokeStyle": "solid",
"padding": 5,
"gateRadius": 4,
"gateOffset": 15,
"gateStrokeColor": "#ffffffff",
"gateBackgroundColor": "#ffffffff",
"gateFillStyle": "solid"
},
"centralNodeStyle": {
"backgroundColor": "#1d60107f",
"textColor": "#ffffffff",
"fillStyle": "solid"
},
"inferredNodeStyle": {
"backgroundColor": "#000000b2"
},
"urlNodeStyle": {
"prefix": "🌐 "
},
"virtualNodeStyle": {
"fillStyle": "hachure",
"textColor": "#1b9419b2",
"backgroundColor": "#26262666"
},
"siblingNodeStyle": {
"fontSize": 40
},
"attachmentNodeStyle": {
"prefix": "📎 "
},
"folderNodeStyle": {
"prefix": "📂 ",
"strokeShaprness": "sharp",
"borderColor": "#ffd700ff",
"textColor": "#ffd700ff"
},
"tagNodeStyle": {
"prefix": "#",
"strokeShaprness": "sharp",
"borderColor": "#4682b4ff",
"textColor": "#4682b4ff"
},
"tagNodeStyles": {},
"tagStyleList": [],
"baseLinkStyle": {
"strokeColor": "#1c5d0fff",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"startArrowHead": "none",
"endArrowHead": "none",
"showLabel": false,
"fontSize": 10,
"fontFamily": 3,
"textColor": "#ffffffff"
},
"inferredLinkStyle": {
"strokeStyle": "dashed",
"strokeColor": "#1c5e0f7f"
},
"folderLinkStyle": {
"strokeColor": "#ffd700ff"
},
"tagLinkStyle": {
"strokeColor": "#4682b4ff"
},
"hierarchyLinkStyles": {
"u": {},
"up": {},
"d": {},
"down": {},
"j": {},
"cons": {},
"disadvantages": {},
"missing": {},
"opposes": {},
"Before": {},
"Previous": {},
"w": {},
"West": {},
"After": {},
"e": {},
"East": {},
"n": {},
"author": {
"strokeColor": "#658cacff",
"roughness": 0,
"strokeWidth": 5
},
"prev": {},
"next": {},
"jump": {},
"voir": {},
"supports": {},
"refutes": {}
},
"navigationHistory": [
"livres prêtés.md",
"a lire.md",
"analyse.md",
"obsidian syntaxe.md",
"identités.md",
"démocratisation de l'éducation.md",
"Logique séquentielle.md",
"Excalidraw/SR-Enable latch 2022-11-17 22.21.45.excalidraw.md",
"SR-Enable latch.md",
"digital logic sim computer.md",
"Untitled 1.md",
"groupe linéaire des matrices inversibles.md",
"groupe.md",
"groupe linéaire d'un espace vectoriel.md",
"musiques à écouter.md",
"daily/2023-01-11.md",
"algèbre SPC.md",
"logique.md",
"daily/2023-06-28.md",
"John Von Neumann.md",
"division euclidienne.md",
"informatique/projets/L2/genie_logiciel_et_OOP/obsidian/daily notes/2022-09-21.md",
"structure d'algèbre.md",
"structure algébrique.md",
"quaternions.md",
"famille.md",
"construction de C.md",
"nombre complexe.md",
"ensembles de nombres.md",
"algèbre.md",
"mathématiques.md",
"forme quadratique.md",
"blog/posts/autres/Untitled.md",
"Excalidraw/ExcaliBrain Snapshot - mythe de la méritocratie.excalidraw.md",
"différence entre l'éducation et l'instruction",
"éducation et démocratie.md",
"mythe de la méritocratie.md",
"bourgeoisie.md",
"mythe du self made man.md",
"les riches salariés paient pour les riches frodeurs.md",
"classes sociales.héritiers.md",
"blog/posts/autres/apprentissage et motivation.md",
"qualification.md",
"sociologie",
"travail.md",
"compétence.md",
"matrice.md",
"Excalidraw/cathédrale de chartres 2023-06-30 19.03.52.excalidraw.md",
"devoirs à faire.md",
"Excalidraw/Drawing 2023-08-27 15.35.26.excalidraw.md"
],
"allowOntologySuggester": false,
"ontologySuggesterParentTrigger": "::p",
"ontologySuggesterChildTrigger": "::c",
"ontologySuggesterLeftFriendTrigger": "::l",
"ontologySuggesterRightFriendTrigger": "::r",
"ontologySuggesterPreviousTrigger": "::e",
"ontologySuggesterNextTrigger": "::n",
"ontologySuggesterTrigger": ":::",
"ontologySuggesterMidSentenceTrigger": "(",
"boldFields": false,
"allowAutozoom": false,
"maxZoom": 1,
"allowAutofocuOnSearch": true,
"defaultAlwaysOnTop": false,
"embedCentralNode": false,
"centerEmbedWidth": 550,
"centerEmbedHeight": 700,
"ontologySuggesterFriendTrigger": "::f"
}

3
.obsidian/plugins/excalibrain/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "excalibrain",
"name": "ExcaliBrain",
"version": "0.2.9",
"minAppVersion": "1.1.6",
"description": "A clean, intuitive and editable graph view for Obsidian",
"author": "Zsolt Viczian",
"authorUrl": "https://zsolt.blog",
"isDesktopOnly": false
}

349
.obsidian/plugins/excalibrain/styles.css vendored Normal file
View File

@@ -0,0 +1,349 @@
/* Sets all the text color to red! */
.excalibrain-warning {
background-color: var(--text-highlight-bg);
color: var(--text-normal);
}
.excalibrain-prompt-center {
text-align: center;
}
.excalibrain-contentEl div.Island,
.excalibrain-contentEl button.help-icon {
display:none;
}
.excalibrain-contentEl {
overflow: hidden !important;
position: relative;
}
/* -----------
TOOLS PANEL
------------ */
.excalibrain-toolspanel-wrapper {
z-index: 3;
position: absolute;
top: 0.6em;
padding-left: 0.6em;
/* Set width to auto to fit its content */
width: 100%;
padding-right: 0.6em;
pointer-events: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.excalibrain-dropdown-wrapper,
.excalibrain-buttons {
pointer-events: none;
margin-top: 0.3em;
max-width: 37em;
justify-content: space-between;
}
.excalibrain-searchinput {
width: 26em;
vertical-align: middle;
pointer-events: all;
}
.excalibrain-buttons {
margin-left: -0.3em;
display: flex;
float: right;
flex: 1 0 30em;
}
.excalibrain-toolspanel-divider {
width: 0.15em;
background-color: var(--default-border-color);
margin-left: 0.5em;
margin-right: 0.2em;
}
.excalibrain-button {
pointer-events: all;
vertical-align: middle;
padding-left: 0.3em;
padding-right: 0.3em;
margin-left: 0.3em !important;
margin-right: 0px !important;
width: 2.4em !important;
justify-content: center !important;
box-shadow: none;
transition: box-shadow 0.3s ease;
}
.excalibrain-button.off {
background-color: var(--island-bg-color);
}
.excalibrain-button.on {
background-color: var(--color-primary-darker);
}
.excalibrain-button:hover {
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4);
}
.excalibrain-button:active {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.6);
}
.excalibrain-button.disabled {
background-color: var(--island-bg-color);
pointer-events: none;
opacity: 0.5;
cursor: not-allowed;
}
/* -----------
HISTORY
------------ */
.excalibrain-history-wrapper {
z-index: 3;
position: absolute;
bottom: 0px;
padding-left: 7rem;
padding-bottom: 10px;
width: 100%;
padding-right: 10px;
overflow: hidden;
}
.excalibrain-history-container {
overflow-y: hidden;
display: -webkit-box;
overflow-x: scroll;
padding-left: 0.5em;
background-color: #00000030;
}
.excalibrain-history-divider {
color: gold;
margin-left: 5px;
margin-right: 5px;
font-size: smaller;
}
.excalibrain-history-item {
cursor: pointer;
color: silver;
font-size: smaller;
}
/* -----------
SETTINGS
------------ */
.excalibrain-settings-folding-L1 {
font-size: large;
font-weight: bold;
color: var(--text-title-h3);
}
.excalibrain-settings-h1 {
color: var(--text-title-h1);
}
.excalibrain-setting-style-section {
padding-left: 30px;
border-left: 10px solid var(--background-modifier-border);
}
.excalibrain-settings-demoimg {
max-width: 400px;
}
.excalibrain-setting-nameEl {
min-width: 10em;
max-width: 20em;
}
.excalibrain-setting-descEl {
min-width: 10em;
max-width: 20em;
}
.excalibrain-setting-controlEl {
width: 90%;
}
.excalibrain-settings-colorlabel {
padding-right: 5px;
min-width: 3em;
}
.excalibrain-settings-colorpicker {
max-width: 32px;
min-width: 32px;
width: 32px !important;
}
.excalibrain-settings-opacitylabel {
padding-right: 5px;
padding-left: 10px;
min-width: 5em;
}
.excalibrain-settings-sliderlabel {
min-width: 2em;
text-align: right;
}
.excalibrain-settings-toggle {
min-width: 2em;
margin-right: 5px;
}
.excalibrain-dropdown-wrapper {
display: inline-flex;
}
/* -----------
MULTISELECT
------------ */
.multiselect-container {
padding-left: 0.3em;
width:14.2em;
pointer-events: all;
}
.multiselect-container * {
box-sizing:border-box;
}
.multiselect-container .multiselect-header {
width:100%;
margin-bottom:6px;
}
.multiselect-container .multiselect-wrapper {
position:relative;
width:100%;
height:30px;
background: var(--island-bg-color); /*var(--background-modifier-form-field);*/
border:1px solid var(--background-modifier-border);
display:flex;
align-items:center;
padding:0 8px;
cursor:pointer
}
.multiselect-container .multiselect-wrapper:after {
content:"";
position:absolute;
width:8px;
height:8px;
right:12px;
top:8px;
border-right:2px solid var(--text-normal);
border-top:2px solid var(--text-normal);
transform:rotate(135deg);
transform-origin:center center;
transition:all .2s ease-in-out;
}
.multiselect-container .multiselect-wrapper .selected-value {
padding-right:30px;
text-overflow:ellipsis;
overflow:hidden;
white-space:nowrap;
}
.multiselect-container .multiselect-wrapper .options-wrapper {
position:absolute;
top:100%;
left:0;
width:100%;
max-height:300px;
overflow:auto;
background-color:var(--background-secondary);
border:1px solid var(--background-modifier-border);
display:none;
flex-direction:column;
}
.multiselect-container .multiselect-wrapper .option:hover {
cursor:pointer;
background-color:rgba(0,0,0,0.1);
}
.multiselect-container .multiselect-wrapper .option-text {
display:none;
padding:6px 12px;
}
.multiselect-container .multiselect-wrapper .checkbox-wrapper {
display:flex;
align-items:center;min-height:19px;
position:relative;
padding:6px 12px 6px 36px;
cursor:pointer;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
}
.multiselect-container .multiselect-wrapper .checkbox-wrapper .checkbox-checkmark {
position:absolute;
top:6px;
left:6px;
height:19px;
width:19px;
background-color:#eee;
border-radius:4px;
border:1px solid #000;
}
.multiselect-container .multiselect-wrapper .checkbox-wrapper .checkbox-checkmark:after {
content:'';
position:absolute;display:none;
left:6px;
top:2px;
width:4px;
height:8px;
border:solid white;
border-width:0 2px 2px 0;
transform:rotate(45deg);
}
.multiselect-container .multiselect-wrapper .checkbox-wrapper input {
position:absolute;
opacity:0;
cursor:pointer;
height:0;
width:0;
}
.multiselect-container .multiselect-wrapper .checkbox-wrapper input:checked ~ .checkbox-checkmark {
background-color:#2196F3;
}
.multiselect-container .multiselect-wrapper .checkbox-wrapper input:checked ~ .checkbox-checkmark:after {
display:block;
}
.multiselect-container .multiselect-wrapper.single-select .checkbox-wrapper {
display:none;
}
.multiselect-container .multiselect-wrapper.single-select .option-text {
display:block;
}
.multiselect-container .multiselect-wrapper.single-select .option-text.selected {
background-color:#2196F3;
}
.multiselect-container .multiselect-wrapper.opened:after {
top:12px;
transform:rotate(315deg);
}
.multiselect-container .multiselect-wrapper.opened .options-wrapper {
display:flex;
}

71
.obsidian/plugins/garble-text/main.js vendored Normal file
View File

@@ -0,0 +1,71 @@
/*
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 GarbleText extends obsidian.Plugin {
constructor() {
super(...arguments);
this.isGarbled = false;
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
console.log('loading Garble Text plugin');
this.addCommand({
id: "toggle-garble-text",
name: "Toggle Garble Text",
callback: () => {
if (this.isGarbled)
this.ungarble();
else
this.garble();
this.isGarbled = !this.isGarbled;
}
});
//TODO: garble with regex
});
}
onunload() {
this.isGarbled = false;
this.ungarble();
console.log('Garble Text unloaded');
}
garble() {
this.app.garbleText();
}
ungarble() {
this.app.dom.appContainerEl.removeClass('is-text-garbled');
}
}
module.exports = GarbleText;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUDs7TUN6RXFCLFVBQVcsU0FBUUEsZUFBTTtJQUE5Qzs7UUFDUyxjQUFTLEdBQVksS0FBSyxDQUFDO0tBZ0NuQztJQTlCTSxNQUFNOztZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUUxQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNmLEVBQUUsRUFBRSxvQkFBb0I7Z0JBQ3hCLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLFFBQVEsRUFBRTtvQkFDVCxJQUFJLElBQUksQ0FBQyxTQUFTO3dCQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7d0JBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFFbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7aUJBQ2pDO2FBQ0QsQ0FBQyxDQUFDOztTQUdIO0tBQUE7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQUNwQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBQ3RCO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUMzRDs7Ozs7In0=

View File

@@ -0,0 +1,9 @@
{
"id": "garble-text",
"name": "Garble Text",
"version": "1.2.0",
"minAppVersion": "0.12.10",
"description": "Garbling text in Obsidian turns all content in the entire app (notes, sidebar, etc) into lines so you can take screenshots without exposing sensitive data.",
"author": "kurakart",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,23 @@
/*
CSS part developed by Matthias C. Hormann (aka Moonbase59) 2021-08-22
*/
.app-container.is-text-garbled img {
filter: blur(10px) !important;
-webkit-filter: blur(10px) !important;
transition: all 0.3s;
}
/*
CSS part developed by Matthias C. Hormann (aka Moonbase59) 2021-08-22
*/
.app-container.is-text-garbled *:hover {
font-family: unset !important;
transition: all 0.3s;
}
.app-container.is-text-garbled img:hover {
filter: unset !important;
-webkit-filter: unset !important;
transition: all 0.3s;
}

View File

@@ -0,0 +1,26 @@
{
"noInfinity": true,
"noZero": true,
"allFileExtensions": true,
"showImgThumbnails": true,
"addUnresolved": true,
"coTags": true,
"defaultSubtypeType": "Co-Citations",
"debugMode": false,
"superDebugMode": false,
"exclusionRegex": "",
"exclusionTags": [],
"algsToShow": [
"Co-Citations",
"HITS",
"Adamic Adar",
"Jaccard",
"Overlap",
"Label Propagation",
"Louvain",
"Clustering Coefficient",
"BoW",
"Otsuka-Chiai",
"Sentiment"
]
}

36162
.obsidian/plugins/graph-analysis/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "graph-analysis",
"name": "Graph Analysis",
"version": "0.15.4",
"minAppVersion": "0.12.10",
"description": "Analyse your Obsidian graph.",
"author": "SkepticMystic",
"authorUrl": "https://github.com/SkepticMystic/graph-analysis",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,126 @@
td.internal-link,
div.internal-link,
span.internal-link {
color: var(--text-accent);
text-decoration-line: none !important;
}
td.internal-link:hover,
div.internal-link:hover,
span.internal-link:hover {
color: var(--text-accent-hover, var(--text-accent));
}
tr.GA-linked td:first-child::before,
span.GA-linked::before,
div.GA-linked::before {
}
tr.GA-not-linked,
span.GA-not-linked {
/* background-color: yellow; */
}
.GA-icon {
color: var(--text-normal);
width: 13px;
height: 13px;
display: inline-block;
padding-top: 2px !important;
}
.GA-Global {
color: red;
}
.GA-Global::before {
content: '🌍';
}
td.GA-measure {
/* display:none */
}
td.GA-node {
/* background-color: yellow */
}
select.dropdown.GA-DD {
line-height: normal;
padding: 0.2em 1.9em 0.2em 0.4em;
width: fit-content;
}
button.GA-Refresh-Button {
margin-left: 5px;
padding: 3px;
}
body.is-mobile .GA-details,
body.is-mobile .GA-details::before {
font-size: larger;
}
.GA-highlight-sentence {
animation: highlightSentence 1.5s 1;
border-radius: 3px;
}
@keyframes highlightSentence {
0% {
background-color: transparent;
}
10% {
background-color: var(--text-highlight-bg);
}
80% {
background-color: var(--text-highlight-bg);
}
100% {
background-color: transparent;
}
}
.GA-View ::-webkit-scrollbar {
width: 1em;
height: 0px;
border-radius: 10px;
background-color: var(--scrollbar-bg);
}
.scrollContainer {
padding: 0px 0px 4px 0px;
}
.scrollContainer:hover {
padding: 0px;
}
.GA-View .scrollContainer:hover ::-webkit-scrollbar {
height: 4px;
}
.GA-View ::-webkit-scrollbar-track {
border-radius: 10px;
}
.GA-View ::-webkit-scrollbar-thumb {
border-radius: 10px;
background-color: var(--scrollbar-thumb-bg);
}
div.CC-sentence > ul,
div.CC-sentence > ol,
div.CC-sentence > p {
margin-block-start: 0;
margin-block-end: 0;
}
mark.CC-mark {
color: var(--text-normal);
background-color: var(--text-highlight-bg);
}
.CC-edit {
margin-block-start: 0;
margin-block-end: 0;
}
.CC-hr {
margin-block-start: 0.3em;
margin-block-end: 0.3em;
}

View File

@@ -0,0 +1,129 @@
{
"year": 2023,
"colors": {
"default": [
"#c6e48b",
"#7bc96f",
"#49af5d",
"#2e8840",
"#196127"
],
"dark_green": [
"#030",
"#040",
"#050",
"#060",
"#070",
"#080",
"#090",
"#0A0",
"#0B0",
"#0C0",
"#0D0",
"#0E0",
"#0F0"
],
"dark_red": [
"#300",
"#400",
"#500",
"#600",
"#700",
"#800",
"#900",
"#A00",
"#B00",
"#C00",
"#D00",
"#E00",
"#F00"
],
"dark_blue": [
"#003",
"#004",
"#005",
"#006",
"#007",
"#008",
"#009",
"#00A",
"#00B",
"#00C",
"#00D",
"#00E",
"#00F"
],
"dark_yellow": [
"#330",
"#440",
"#550",
"#660",
"#770",
"#880",
"#990",
"#AA0",
"#BB0",
"#CC0",
"#DD0",
"#EE0",
"#FF0"
],
"dark_cyan": [
"#033",
"#044",
"#055",
"#066",
"#077",
"#088",
"#099",
"#0AA",
"#0BB",
"#0CC",
"#0DD",
"#0EE",
"#0FF"
],
"dark_purple": [
"#303",
"#404",
"#505",
"#606",
"#707",
"#808",
"#909",
"#A0A",
"#B0B",
"#C0C",
"#D0D",
"#E0E",
"#F0F"
],
"grey": [
"#333",
"#444",
"#555",
"#666",
"#777",
"#888",
"#999",
"#AAA",
"#BBB",
"#CCC",
"#DDD",
"#EEE",
"#FFF"
]
},
"entries": [
{
"date": "1900-01-01",
"color": "#7bc96f",
"intensity": 5,
"content": ""
}
],
"showCurrentDayBorder": true,
"defaultEntryIntensity": 4,
"intensityScaleStart": 1,
"intensityScaleEnd": 5
}

View File

@@ -0,0 +1,349 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
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
var main_exports = {};
__export(main_exports, {
default: () => HeatmapCalendar
});
module.exports = __toCommonJS(main_exports);
var import_obsidian2 = require("obsidian");
// settings.ts
var import_obsidian = require("obsidian");
var HeatmapCalendarSettingsTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
addColorMap(color) {
return __async(this, null, function* () {
const isValid = { key: true, value: true };
if (!color.key)
isValid.key = false;
const validatedArray = this.validateColorInput(color.value);
if (!validatedArray)
isValid.value = false;
if (isValid.key && isValid.value) {
this.plugin.settings.colors[color.key] = validatedArray;
yield this.plugin.saveSettings();
this.display();
}
return isValid;
});
}
deleteColorMap(key) {
return __async(this, null, function* () {
delete this.plugin.settings.colors[key];
yield this.plugin.saveSettings();
this.display();
});
}
displayColorSettings() {
const { containerEl } = this;
containerEl.createEl("h3", { text: "Colors" });
this.displayColorHelp(containerEl);
for (const [key, colors] of Object.entries(this.plugin.settings.colors)) {
const colorEntryContainer = containerEl.createDiv({
cls: "heatmap-calendar-settings-colors__container"
});
const colorDataContainer = colorEntryContainer.createDiv({
cls: "heatmap-calendar-settings-colors__data-container"
});
colorDataContainer.createEl("h4", { text: key });
const colorRow = colorDataContainer.createDiv({ cls: "heatmap-calendar-settings-colors__row" });
const colorsContainer = colorRow.createDiv({ cls: "heatmap-calendar-settings-colors__color-container" });
for (const color of colors) {
colorsContainer.createEl("div", {
cls: "heatmap-calendar-settings-colors__color-box",
attr: {
style: `background-color: ${color}`
}
});
colorsContainer.createEl("pre", {
cls: "heatmap-calendar-settings-colors__color-name",
text: color
});
}
if (key !== "default") {
const deleteColorButton = colorEntryContainer.createEl("button", {
cls: "mod-warning heatmap-calendar-settings-colors__delete"
});
(0, import_obsidian.setIcon)(deleteColorButton, "trash");
deleteColorButton.addEventListener("click", () => this.deleteColorMap(key));
}
}
this.displayColorInput(containerEl);
}
displayColorInput(parent) {
const inputContainer = parent.createDiv({ cls: "heatmap-calendar-settings-colors__new-color-input-container" });
const colorNameInput = inputContainer.createEl("input", {
cls: "heatmap-calendar-settings-colors__new-color-input-name",
attr: { placeholder: "Color name", type: "text" }
});
const colorValueInput = inputContainer.createEl("input", {
cls: "heatmap-calendar-settings-colors__new-color-input-value",
attr: { placeholder: "Colors array", type: "text" }
});
const addColorButton = inputContainer.createEl("button", {
cls: "mod-cta heatmap-calendar-settings-colors__new-color-button"
});
(0, import_obsidian.setIcon)(addColorButton, "plus");
addColorButton.addEventListener("click", () => __async(this, null, function* () {
const isValid = yield this.addColorMap({
key: colorNameInput.value,
value: colorValueInput.value
});
this.reportInputValidity(colorNameInput, isValid.key, "Please input a name for your color");
this.reportInputValidity(colorValueInput, isValid.value, "Color is not a valid JSON array of colors");
}));
}
displayColorHelp(parent) {
parent.createEl("p", {
text: "Add lists of colors which will be globally available on your heatmaps."
});
parent.createEl("p", {
text: "You can use those colors by referencing their name in your heatmap render settings."
});
}
reportInputValidity(input, isValid, msg) {
if (!isValid) {
input.classList.add("has-error");
input.setCustomValidity(msg);
} else
input.setCustomValidity("");
input.reportValidity();
}
validateColorInput(value) {
const colorRegex = /^(#[0-9a-f]{3,6}|rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(,\s*\d+(\.\d+)?%?)?\s*\))$/i;
try {
const data = JSON.parse(value);
if (!Array.isArray(data))
return false;
return data.every((color) => colorRegex.test(color)) ? data : false;
} catch (e) {
return false;
}
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Heatmap Calendar Settings" });
this.displayColorSettings();
console.log("settings", this.plugin.settings);
}
};
// main.ts
var DEFAULT_SETTINGS = {
year: new Date().getFullYear(),
colors: {
default: ["#c6e48b", "#7bc96f", "#49af5d", "#2e8840", "#196127"]
},
entries: [{ date: "1900-01-01", color: "#7bc96f", intensity: 5, content: "" }],
showCurrentDayBorder: true,
defaultEntryIntensity: 4,
intensityScaleStart: 1,
intensityScaleEnd: 5
};
var HeatmapCalendar = class extends import_obsidian2.Plugin {
getHowManyDaysIntoYear(date) {
return (Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()) - Date.UTC(date.getUTCFullYear(), 0, 0)) / 24 / 60 / 60 / 1e3;
}
getHowManyDaysIntoYearLocal(date) {
return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(date.getFullYear(), 0, 0)) / 24 / 60 / 60 / 1e3;
}
removeHtmlElementsNotInYear(entries, year) {
var _a;
const calEntriesNotInDisplayedYear = (_a = entries.filter((e) => new Date(e.date).getFullYear() !== year)) != null ? _a : this.settings.entries;
calEntriesNotInDisplayedYear.forEach((e) => e.content instanceof HTMLElement && e.content.remove());
}
clamp(input, min, max) {
return input < min ? min : input > max ? max : input;
}
map(current, inMin, inMax, outMin, outMax) {
const mapped = (current - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
return this.clamp(mapped, outMin, outMax);
}
onload() {
return __async(this, null, function* () {
yield this.loadSettings();
this.addSettingTab(new HeatmapCalendarSettingsTab(this.app, this));
window.renderHeatmapCalendar = (el, calendarData) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
const year = (_a = calendarData.year) != null ? _a : this.settings.year;
const colors = typeof calendarData.colors === "string" ? this.settings.colors[calendarData.colors] ? { [calendarData.colors]: this.settings.colors[calendarData.colors] } : this.settings.colors : (_b = calendarData.colors) != null ? _b : this.settings.colors;
this.removeHtmlElementsNotInYear(calendarData.entries, year);
const calEntries = (_c = calendarData.entries.filter((e) => new Date(e.date + "T00:00").getFullYear() === year)) != null ? _c : this.settings.entries;
const showCurrentDayBorder = (_d = calendarData.showCurrentDayBorder) != null ? _d : this.settings.showCurrentDayBorder;
const defaultEntryIntensity = (_e = calendarData.defaultEntryIntensity) != null ? _e : this.settings.defaultEntryIntensity;
const intensities = calEntries.filter((e) => e.intensity).map((e) => e.intensity);
const minimumIntensity = intensities.length ? Math.min(...intensities) : this.settings.intensityScaleStart;
const maximumIntensity = intensities.length ? Math.max(...intensities) : this.settings.intensityScaleEnd;
const intensityScaleStart = (_f = calendarData.intensityScaleStart) != null ? _f : minimumIntensity;
const intensityScaleEnd = (_g = calendarData.intensityScaleEnd) != null ? _g : maximumIntensity;
const mappedEntries = [];
calEntries.forEach((e) => {
var _a2;
const newEntry = __spreadValues({
intensity: defaultEntryIntensity
}, e);
const colorIntensities = typeof colors === "string" ? this.settings.colors[colors] : (_a2 = colors[e.color]) != null ? _a2 : colors[Object.keys(colors)[0]];
const numOfColorIntensities = Object.keys(colorIntensities).length;
if (minimumIntensity === maximumIntensity && intensityScaleStart === intensityScaleEnd)
newEntry.intensity = numOfColorIntensities;
else
newEntry.intensity = Math.round(this.map(newEntry.intensity, intensityScaleStart, intensityScaleEnd, 1, numOfColorIntensities));
mappedEntries[this.getHowManyDaysIntoYear(new Date(e.date))] = newEntry;
});
const firstDayOfYear = new Date(Date.UTC(year, 0, 1));
let numberOfEmptyDaysBeforeYearBegins = (firstDayOfYear.getUTCDay() + 6) % 7;
const boxes = [];
while (numberOfEmptyDaysBeforeYearBegins) {
boxes.push({ backgroundColor: "transparent" });
numberOfEmptyDaysBeforeYearBegins--;
}
const lastDayOfYear = new Date(Date.UTC(year, 11, 31));
const numberOfDaysInYear = this.getHowManyDaysIntoYear(lastDayOfYear);
const todaysDayNumberLocal = this.getHowManyDaysIntoYearLocal(new Date());
for (let day = 1; day <= numberOfDaysInYear; day++) {
const box = {
classNames: []
};
if (day === todaysDayNumberLocal && showCurrentDayBorder)
(_h = box.classNames) == null ? void 0 : _h.push("today");
if (mappedEntries[day]) {
(_i = box.classNames) == null ? void 0 : _i.push("hasData");
const entry = mappedEntries[day];
box.date = entry.date;
if (entry.content)
box.content = entry.content;
const currentDayColors = entry.color ? colors[entry.color] : colors[Object.keys(colors)[0]];
box.backgroundColor = currentDayColors[entry.intensity - 1];
} else
(_j = box.classNames) == null ? void 0 : _j.push("isEmpty");
boxes.push(box);
}
const heatmapCalendarGraphDiv = createDiv({
cls: "heatmap-calendar-graph",
parent: el
});
createDiv({
cls: "heatmap-calendar-year",
text: String(year).slice(2),
parent: heatmapCalendarGraphDiv
});
const heatmapCalendarMonthsUl = createEl("ul", {
cls: "heatmap-calendar-months",
parent: heatmapCalendarGraphDiv
});
createEl("li", { text: "Jan", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Feb", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Mar", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Apr", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "May", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Jun", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Jul", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Aug", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Sep", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Oct", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Nov", parent: heatmapCalendarMonthsUl });
createEl("li", { text: "Dec", parent: heatmapCalendarMonthsUl });
const heatmapCalendarDaysUl = createEl("ul", {
cls: "heatmap-calendar-days",
parent: heatmapCalendarGraphDiv
});
createEl("li", { text: "Mon", parent: heatmapCalendarDaysUl });
createEl("li", { text: "Tue", parent: heatmapCalendarDaysUl });
createEl("li", { text: "Wed", parent: heatmapCalendarDaysUl });
createEl("li", { text: "Thu", parent: heatmapCalendarDaysUl });
createEl("li", { text: "Fri", parent: heatmapCalendarDaysUl });
createEl("li", { text: "Sat", parent: heatmapCalendarDaysUl });
createEl("li", { text: "Sun", parent: heatmapCalendarDaysUl });
const heatmapCalendarBoxesUl = createEl("ul", {
cls: "heatmap-calendar-boxes",
parent: heatmapCalendarGraphDiv
});
boxes.forEach((e) => {
const entry = createEl("li", {
attr: __spreadValues(__spreadValues({}, e.backgroundColor && { style: `background-color: ${e.backgroundColor};` }), e.date && { "data-date": e.date }),
cls: e.classNames,
parent: heatmapCalendarBoxesUl
});
createSpan({
cls: "heatmap-calendar-content",
parent: entry,
text: e.content
});
});
};
});
}
onunload() {
}
loadSettings() {
return __async(this, null, function* () {
console.log("heyoh", yield this.loadData());
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
};

View File

@@ -0,0 +1,10 @@
{
"id": "heatmap-calendar",
"name": "Heatmap Calendar",
"version": "0.6.0",
"minAppVersion": "0.12.0",
"description": "Activity Year Overview for DataviewJS, Github style Track Goals, Progress, Habits, Tasks, Exercise, Finances, \"Dont Break the Chain\" etc.",
"author": "Richard Slettevoll",
"authorUrl": "https://richard.sl",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,132 @@
/* Obsidian/DataviewJS Github inspired calendar by Richard Slettevoll - https://richard.sl/ */
.heatmap-calendar-graph>* {
padding: 0px;
margin: 0px;
list-style: none;
}
.heatmap-calendar-graph {
font-size: 0.65em;
display: grid;
grid-template-columns: auto 1fr;
grid-template-areas:
'year months'
'days boxes';
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,
Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol';
width: 100%;
}
.heatmap-calendar-months {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
grid-area: months;
margin-top: 0.1em;
margin-bottom: 0.3em;
grid-gap: 0.3em;
}
.heatmap-calendar-days {
grid-area: days;
margin-left: 0.1em;
margin-right: 0.3em;
white-space: nowrap;
}
.heatmap-calendar-boxes {
grid-auto-flow: column;
grid-template-columns: repeat(53, minmax(0, 1fr));
grid-area: boxes;
}
.heatmap-calendar-days,
.heatmap-calendar-boxes {
display: grid;
grid-gap: 0.3em;
grid-template-rows: repeat(7, minmax(0, 1fr));
}
.heatmap-calendar-year {
grid-area: year;
font-weight: bold;
font-size: 1.2em;
}
/* only label three days of the week */
.heatmap-calendar-days li:nth-child(odd) {
visibility: hidden;
}
.heatmap-calendar-boxes li {
position: relative;
font-size: 0.75em;
background-color: #ebedf0;
}
.theme-dark .heatmap-calendar-boxes .isEmpty {
background: #333;
}
.heatmap-calendar-boxes li:not(.task-list-item)::before {
content: unset;
}
.heatmap-calendar-boxes .internal-link {
text-decoration: none;
position: absolute;
width: 100%;
height: 100%;
text-align: center;
}
.heatmap-calendar-boxes .today {
border: solid 1px rgb(61, 61, 61);
}
/* Settings */
.heatmap-calendar-settings-colors__color-box {
width: 10px;
height: 10px;
display: inline-block;
margin: 0 5px;
}
.heatmap-calendar-settings-colors__color-box:first-child {
margin-left: 0;
}
.heatmap-calendar-settings-colors__color-name {
display: inline-block;
}
.heatmap-calendar-settings-colors__container {
align-items: center;
border-top: 1px solid var(--background-modifier-border);
display: flex;
justify-content: space-between;
padding: 0.5em 0;
}
.heatmap-calendar-settings-colors__container h4 {
margin: 0.5em 0;
}
.heatmap-calendar-settings-colors__new-color-input-container {
display: flex;
justify-content: space-between;
}
.heatmap-calendar-settings-colors__new-color-input-container input {
margin-right: 1em;
}
.heatmap-calendar-settings-colors__new-color-input-container input {
margin-right: 1em;
}
.heatmap-calendar-settings-colors__new-color-input-value {
flex-grow: 1;
}

View File

@@ -0,0 +1,98 @@
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: () => ImprovedVimCursor
});
var import_obsidian = __toModule(require("obsidian"));
var ImprovedVimCursor = class extends import_obsidian.Plugin {
onload() {
return __async(this, null, function* () {
this.setup();
this.registerEvent(this.app.workspace.on("file-open", () => {
this.setup();
}));
});
}
setup() {
let view = this.app.workspace.getActiveViewOfType(import_obsidian.MarkdownView);
if (!view) {
return;
}
CodeMirror.Vim.defineEx("g0", false, (cm) => {
cm.execCommand("goLineLeftSmart");
});
CodeMirror.Vim.defineEx("gDollar", false, (cm) => {
cm.execCommand("goLineRight");
});
CodeMirror.Vim.defineEx("pHead", false, (cm) => {
const { line } = cm.getCursor();
const text = cm.getValue();
const split = text.split("\n");
let last = 0;
for (let i = 0; i < line; i++) {
const text2 = split[i];
if (text2.match(/^#{1,6} /)) {
last = i;
}
}
cm.setCursor(last, 0);
});
CodeMirror.Vim.defineEx("nHead", false, (cm) => {
const { line } = cm.getCursor();
const text = cm.getValue();
const split = text.split("\n");
let last = split.length - 1;
for (let i = last; i > line; i--) {
const text2 = split[i];
if (text2.match(/^#{1,6} /)) {
last = i;
}
}
cm.setCursor(last, 0);
});
}
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtNYXJrZG93blZpZXcsIFBsdWdpbn0gZnJvbSAnb2JzaWRpYW4nO1xyXG5cclxuZGVjbGFyZSBjb25zdCBDb2RlTWlycm9yOiBhbnk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbXByb3ZlZFZpbUN1cnNvciBleHRlbmRzIFBsdWdpbiB7XHJcbiAgYXN5bmMgb25sb2FkKCkge1xyXG4gICAgdGhpcy5zZXR1cCgpXHJcblxyXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignZmlsZS1vcGVuJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldHVwKCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBzZXR1cCgpIHtcclxuICAgIGxldCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KVxyXG4gICAgaWYoIXZpZXcpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgQ29kZU1pcnJvci5WaW0uZGVmaW5lRXgoXCJnMFwiLCBmYWxzZSwgKGNtOiBDb2RlTWlycm9yLkVkaXRvcikgPT4ge1xyXG4gICAgICBjbS5leGVjQ29tbWFuZChcImdvTGluZUxlZnRTbWFydFwiKTtcclxuICAgIH0pXHJcblxyXG4gICAgQ29kZU1pcnJvci5WaW0uZGVmaW5lRXgoXCJnRG9sbGFyXCIsIGZhbHNlLCAoY206IENvZGVNaXJyb3IuRWRpdG9yKSA9PiB7XHJcbiAgICAgIGNtLmV4ZWNDb21tYW5kKFwiZ29MaW5lUmlnaHRcIik7XHJcbiAgICB9KVxyXG5cclxuICAgIENvZGVNaXJyb3IuVmltLmRlZmluZUV4KFwicEhlYWRcIiwgZmFsc2UsIChjbTogQ29kZU1pcnJvci5FZGl0b3IpID0+IHtcclxuICAgICAgY29uc3QgeyBsaW5lIH0gPSAgY20uZ2V0Q3Vyc29yKClcclxuICAgICAgY29uc3QgdGV4dCA9IGNtLmdldFZhbHVlKClcclxuICAgICAgY29uc3Qgc3BsaXQgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICAgICAgbGV0IGxhc3QgPSAwO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmU7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRleHQgPSBzcGxpdFtpXTtcclxuICAgICAgICBpZiAodGV4dC5tYXRjaCgvXiN7MSw2fSAvKSkge1xyXG4gICAgICAgICAgbGFzdCA9IGk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNtLnNldEN1cnNvcihsYXN0LCAwKTtcclxuICAgIH0pXHJcblxyXG4gICAgQ29kZU1pcnJvci5WaW0uZGVmaW5lRXgoXCJuSGVhZFwiLCBmYWxzZSwgKGNtOiBDb2RlTWlycm9yLkVkaXRvcikgPT4ge1xyXG4gICAgICBjb25zdCB7IGxpbmUgfSA9ICBjbS5nZXRDdXJzb3IoKVxyXG4gICAgICBjb25zdCB0ZXh0ID0gY20uZ2V0VmFsdWUoKVxyXG4gICAgICBjb25zdCBzcGxpdCA9IHRleHQuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gICAgICBsZXQgbGFzdCA9IHNwbGl0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIGZvciAobGV0IGkgPSBsYXN0OyBpID4gbGluZTsgaS0tKSB7XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHNwbGl0W2ldO1xyXG4gICAgICAgIGlmICh0ZXh0Lm1hdGNoKC9eI3sxLDZ9IC8pKSB7XHJcbiAgICAgICAgICBsYXN0ID0gaTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY20uc2V0Q3Vyc29yKGxhc3QsIDApO1xyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQW1DO0FBSW5DLHNDQUErQyx1QkFBTztBQUFBLEVBQzlDLFNBQVM7QUFBQTtBQUNiLFdBQUs7QUFFTCxXQUFLLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxhQUFhLE1BQU07QUFDMUQsYUFBSztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSVQsUUFBUTtBQUNOLFFBQUksT0FBTyxLQUFLLElBQUksVUFBVSxvQkFBb0I7QUFDbEQsUUFBRyxDQUFDLE1BQU07QUFDUjtBQUFBO0FBR0YsZUFBVyxJQUFJLFNBQVMsTUFBTSxPQUFPLENBQUMsT0FBMEI7QUFDOUQsU0FBRyxZQUFZO0FBQUE7QUFHakIsZUFBVyxJQUFJLFNBQVMsV0FBVyxPQUFPLENBQUMsT0FBMEI7QUFDbkUsU0FBRyxZQUFZO0FBQUE7QUFHakIsZUFBVyxJQUFJLFNBQVMsU0FBUyxPQUFPLENBQUMsT0FBMEI7QUFDakUsWUFBTSxFQUFFLFNBQVUsR0FBRztBQUNyQixZQUFNLE9BQU8sR0FBRztBQUNoQixZQUFNLFFBQVEsS0FBSyxNQUFNO0FBRXpCLFVBQUksT0FBTztBQUNYLGVBQVMsSUFBSSxHQUFHLElBQUksTUFBTSxLQUFLO0FBQzdCLGNBQU0sUUFBTyxNQUFNO0FBQ25CLFlBQUksTUFBSyxNQUFNLGFBQWE7QUFDMUIsaUJBQU87QUFBQTtBQUFBO0FBR1gsU0FBRyxVQUFVLE1BQU07QUFBQTtBQUdyQixlQUFXLElBQUksU0FBUyxTQUFTLE9BQU8sQ0FBQyxPQUEwQjtBQUNqRSxZQUFNLEVBQUUsU0FBVSxHQUFHO0FBQ3JCLFlBQU0sT0FBTyxHQUFHO0FBQ2hCLFlBQU0sUUFBUSxLQUFLLE1BQU07QUFFekIsVUFBSSxPQUFPLE1BQU0sU0FBUztBQUMxQixlQUFTLElBQUksTUFBTSxJQUFJLE1BQU0sS0FBSztBQUNoQyxjQUFNLFFBQU8sTUFBTTtBQUNuQixZQUFJLE1BQUssTUFBTSxhQUFhO0FBQzFCLGlCQUFPO0FBQUE7QUFBQTtBQUdYLFNBQUcsVUFBVSxNQUFNO0FBQUE7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=

View File

@@ -0,0 +1,10 @@
{
"id": "improved-vimcursor",
"name": "Improved VimCursor",
"version": "0.0.1",
"minAppVersion": "0.12.0",
"description": "An improved experience with the cursor in obsidian",
"author": "hhhapz",
"authorUrl": "https://github.com/hhhapz",
"isDesktopOnly": true
}

169
.obsidian/plugins/juggl/data.json vendored Normal file
View File

@@ -0,0 +1,169 @@
{
"splitDirection": "vertical",
"typedLinkPrefix": "-",
"useImgServer": false,
"imgServerPort": 3837,
"debug": false,
"globalStyleGroups": [
{
"filter": "tag:#flashcards",
"color": "#c06c36",
"shape": "ellipse",
"icon": {
"name": "No icon",
"path": "",
"color": "white"
},
"showInPane": true,
"show": true,
"size": 1
},
{
"filter": "tag:#informatique",
"color": "#1b6a75",
"shape": "ellipse",
"icon": {
"name": "No icon",
"path": "",
"color": "white"
},
"showInPane": true,
"show": true,
"size": 1
},
{
"filter": "tag:#logique",
"color": "#2b48a8",
"shape": "ellipse",
"icon": {
"name": "No icon",
"path": "",
"color": "white"
},
"showInPane": true,
"show": true,
"size": 1
},
{
"filter": "tag:#maths",
"color": "#126006",
"shape": "ellipse",
"icon": {
"name": "No icon",
"path": "",
"color": "white"
},
"showInPane": true,
"show": true,
"size": 1
},
{
"filter": "tag:#personne",
"color": "#696969",
"shape": "ellipse",
"icon": {
"name": "No icon",
"path": "",
"color": "white"
},
"showInPane": true,
"show": true,
"size": 1
},
{
"filter": "file:excalidraw",
"color": "#7524f0",
"shape": "ellipse",
"icon": {
"name": "No icon",
"path": "",
"color": "white"
},
"showInPane": true,
"show": true,
"size": 1
}
],
"globalGraphRibbon": true,
"graphSettings": {
"animateLayout": true,
"autoAddNodes": true,
"autoExpand": false,
"autoZoom": true,
"coreStore": "Obsidian",
"expandInitial": true,
"fdgdLayout": "d3-force",
"filter": "",
"height": "100%",
"hoverEdges": false,
"layout": {
"name": "dagre",
"animate": true,
"animationDuration": 500,
"spacingFactor": 0.5,
"fit": false,
"padding": 30,
"nodeDimensionsIncludeLabels": true,
"avoidOverlap": true
},
"limit": 10000,
"mergeEdges": true,
"metaKeyHover": true,
"mode": "local",
"navigator": true,
"openWithShift": false,
"readContent": true,
"styleGroups": [],
"toolbar": true,
"width": "100%",
"zoomSpeed": 1
},
"embedSettings": {
"animateLayout": true,
"autoAddNodes": false,
"autoExpand": false,
"autoZoom": false,
"coreStore": "Obsidian",
"expandInitial": true,
"fdgdLayout": "cola",
"filter": "",
"height": "400px",
"hoverEdges": false,
"layout": "force-directed",
"limit": 1000,
"mergeEdges": true,
"metaKeyHover": true,
"mode": "local",
"navigator": false,
"openWithShift": false,
"readContent": true,
"styleGroups": [],
"toolbar": false,
"width": "100%",
"zoomSpeed": 1
},
"globalGraphSettings": {
"animateLayout": true,
"autoAddNodes": true,
"autoExpand": false,
"autoZoom": true,
"coreStore": "Obsidian",
"expandInitial": false,
"fdgdLayout": "cola",
"filter": "-class:dangling -class:file",
"height": "100%",
"width": "100%",
"limit": 10000,
"hoverEdges": false,
"layout": "force-directed",
"mergeEdges": true,
"metaKeyHover": true,
"mode": "workspace",
"navigator": true,
"openWithShift": false,
"readContent": false,
"styleGroups": [],
"toolbar": true,
"zoomSpeed": 1
}
}

2
.obsidian/plugins/juggl/graph.css vendored Normal file
View File

@@ -0,0 +1,2 @@
/* For a full overview of styling options, see https://js.cytoscape.org/#style */

15
.obsidian/plugins/juggl/main.js vendored Normal file

File diff suppressed because one or more lines are too long

10
.obsidian/plugins/juggl/manifest.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"id": "juggl",
"name": "Juggl",
"version": "1.4.0",
"minAppVersion": "0.11.5",
"description": "Adds a completely interactive, stylable and expandable graph view to Obsidian.",
"author": "Emile",
"authorUrl": "https://twitter.com/emilevankrieken",
"isDesktopOnly": false
}

210
.obsidian/plugins/juggl/styles.css vendored Normal file
View File

@@ -0,0 +1,210 @@
div.neovis_setting {
width: content-box;
}
div.cxtmenu-item {
opacity: 0.8;
}
/*.cytoscape-navigatorView,*/
div.cy-navigator {
width: 150px;
height: 150px;
position: fixed;
z-index: 3;
bottom: 10px;
right: 27px;
border: #828282 1px solid;
border-radius: 2px;
background-color: rgba(130, 130, 130, 0.1);
cursor: default;
overflow: hidden;
}
div.juggl-error {
background-color: red;
}
.cy-navigator > img{
position: relative;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
opacity: 0.8;
}
.cytoscape-navigatorView{
position: relative;
top: 0;
left: 0;
cursor: move;
background: #828282;
-moz-opacity: 0.20;
opacity: 0.20;
width: 50%;
height: 50%;
z-index: 0;
}
.cytoscape-navigatorOverlay{
position: relative;
top: 0;
left: 0;
z-index: 103;
width: 100%;
height: 100%;
}
.juggl-hover.is-loaded.hover-popover.popover {
opacity: 0.9;
height: max-content;
}
.juggl-preview-edge {
height: 140px !important;
}
.cy-content {
padding: 0 !important;
}
.cy-toolbar {
position: relative;
left: 8px;
top: 8px;
width: fit-content;
max-width: inherit;
height: 0;
margin: 2px;
margin-block-start: 0;
margin-block-end: 0;
z-index: 1000;
background-color: rgba(0, 0, 0, 0);
}
.cy-toolbar-section {
width: fit-content;
text-align: center;
background-color: var(--background-primary);
display: inline-block;
margin: 1px;
padding: 1px;
border-color: var(--background-modifier-border);
border-radius: 4px;
border-width: 1px;
border-style: solid;
opacity: 1;
}
.cy-toolbar > input[type='text'] {
font-size: var(--font-small);
background-color: var(--background-secondary);
height: 30px;
padding: 5px 7px;
}
button.juggl-button {
width: 27px;
height: 27px;
text-align: center;
background-color: var(--background-secondary);
padding: 0 !important;
margin: 1px;
}
.cy-toolbar-section > button:disabled {
background: var(--background-primary);
cursor: not-allowed;
}
button.juggl-button > svg > path {
fill: var(--text-muted);
opacity: 0.6;
}
button.juggl-button:hover > svg > path {
opacity: 1;
}
button.juggl-button:disabled > svg > path {
opacity: 0.3;
}
button.juggl-button-pane {
background: none;
margin: 0;
padding: 0;
width: 15px;
height: 15px;
}
div.juggl-list-text {
font-size: var(--font-small);
word-break: break-word;
}
div.juggl-style-group {
position: relative;
display: flex;
flex-wrap: wrap;
align-items: center;
padding-bottom: 6px;
padding-top: 6px;
border-bottom: 1px solid var(--background-modifier-border-focus);
}
div.juggl-style-group-hidden {
width: auto;
display: inline;
}
div.juggl-nodes-pane,
div.juggl-style-pane {
overflow-y: auto;
padding: 0 10px;
font-size: 14px;
}
.break {
flex-basis: 100%;
height: 3px;
}
/* Use a collapsed column to break to a new column */
.break-column {
flex-basis: 100%;
width: 0;
}
.react-icon {
display: inline-flex;
width: 24px;
box-sizing: content-box;
height: 24px;
stroke-width: 0;
}
.react-icon > svg {
vertical-align: top;
line-height: 0;
font-size: 0;
margin-bottom: 3px;
}
.juggl-icon-picker > .suggestion-item {
height: auto;
min-height: 24px;
}
button.juggl-icon-button {
height: 30px;
}
.juggl-style-pane-left {
display: inline-flex;
width: 50px;
justify-content: center;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "koncham-workspace",
"name": "koncham workspace",
"author": "mano",
"version": "0.0.3",
"description": "obsidian workspace enhancements: vertical tabs, and more...",
"minAppVersion": "0.11.13",
"authorUrl": "https://manogna4.github.io",
"isDesktopOnly": true
}

View File

@@ -0,0 +1,4 @@
.koncham-workspace-root-panes>.nav-folder-children>.nav-file>.nav-file-title {
padding-left: 2px;
padding-right: 2px;
}

4510
.obsidian/plugins/latex-to-unicode/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "latex-to-unicode",
"name": "LaTeX to Unicode converter",
"version": "1.0.0",
"minAppVersion": "0.15.0",
"description": "Convert LaTeX commands into unicode sqeuences",
"author": "fjdu",
"authorUrl": "https://fjdu.github.io",
"fundingUrl": "https://www.buymeacoffee.com/fjdu",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,11 @@
table.latexInputTable, #userInput, #resDisp {
width: 100%;
}
.latexInputTable td:first-child {
width: 30%;
}
.latexInputTable td:last-child {
width: 70%;
}

25
.obsidian/plugins/metaedit/data.json vendored Normal file
View File

@@ -0,0 +1,25 @@
{
"ProgressProperties": {
"enabled": false,
"properties": []
},
"IgnoredProperties": {
"enabled": false,
"properties": []
},
"AutoProperties": {
"enabled": false,
"properties": []
},
"EditMode": {
"mode": "All Single",
"properties": []
},
"KanbanHelper": {
"enabled": false,
"boards": []
},
"UIElements": {
"enabled": true
}
}

5538
.obsidian/plugins/metaedit/main.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "metaedit",
"name": "MetaEdit",
"version": "1.8.2",
"minAppVersion": "1.4.1",
"description": "MetaEdit helps you manage your metadata.",
"author": "Christian B. B. Houmann",
"authorUrl": "https://bagerbach.com",
"isDesktopOnly": false
}

15
.obsidian/plugins/metaedit/styles.css vendored Normal file
View File

@@ -0,0 +1,15 @@
.centerSettingContent {
display: grid;
align-items: center;
justify-content: center;
}
.not-a-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit;
}

View File

@@ -0,0 +1,5 @@
{
"letters": "euioqsdfjkl:wxm,",
"jumpToAnywhereRegex": "\\b\\w{3,}\\b",
"lightspeedCaseSensitive": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "mrj-jump-to-link",
"name": "Jump to link",
"version": "0.4.4",
"description": "This plugin allows open a link in current document or regex based navigation in editor mode using hotkey",
"isDesktopOnly": false,
"author": "MrJackphil",
"authorUrl": "https://mrjackphil.com",
"minAppVersion": "0.15.0"
}

View File

@@ -0,0 +1,18 @@
.jl.popover {
position: absolute;
display: block;
z-index: 10000;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 186, 133, 0.8)), to(rgba(255, 186, 66, 0.8)));
border-width: 1px;
border-style: solid;
border-color: rgb(227, 157, 35);
font-size: 12px;
font-weight: 700;
line-height: 12px;
color: black;
padding: 1px 3px;
border-radius: 3px;
}
.theme-dark, .theme-light {
--jump-to-link-lightspeed-color: var(--text-muted);
}

4
.obsidian/plugins/nlp/data.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"customEntityFilePath": "",
"refreshDocsOnLoad": true
}

215397
.obsidian/plugins/nlp/main.js vendored Normal file

File diff suppressed because one or more lines are too long

1
.obsidian/plugins/nlp/manifest.json vendored Normal file
View File

@@ -0,0 +1 @@
{"id":"nlp","name":"NLP","version":"0.1.3","minAppVersion":"0.12.19","description":"","author":"SkepticMystic","authorUrl":"https://github.com/SkepticMystic/nlp","isDesktopOnly":false}

173
.obsidian/plugins/nlp/styles.css vendored Normal file
View File

@@ -0,0 +1,173 @@
/* iA Writer Syntax Highlighting */
.theme-light {
--verb: hsl(220 100% 40%);
--adjective: hsl(38 100% 35%);
--adverb: hsl(303 100% 32%);
--conjunction: hsl(120 100% 25%);
--noun: hsl(0 80% 40%);
}
.theme-dark {
--verb: hsl(220 100% 60%);
--adjective: hsl(38 100% 50%);
--adverb: hsl(303 80% 45%);
--conjunction: hsl(120 100% 35%);
--noun: hsl(0 70% 55%);
}
body:not(.no-verbs) .Verb {
color: var(--verb);
}
body:not(.no-adjectives) .Adjective {
color: var(--adjective);
}
body:not(.no-adverbs) .Adverb {
color: var(--adverb);
}
body:not(.no-conjunctions) .Conjunction {
color: var(--conjunction);
}
body:not(.no-nouns) .Noun {
color: var(--noun);
}
/* Toggles for `Parts of Speech` when using the Style Settings Plugin */
/* @settings
name: 'NLP Plugin: Syntax Highlighting'
id: nlp-linguistic-syntax-highlighting
settings:
-
id: no-nouns
title: Do not highlight nouns.
type: class-toggle
default: false
-
id: no-verbs
title: Do not highlight verbs.
type: class-toggle
default: false
-
id: no-adjectives
title: Do not highlight adjectives.
type: class-toggle
default: false
-
id: no-adverbs
title: Do not highlight adverbs.
type: class-toggle
default: false
-
id: no-conjunctions
title: Do not highlight conjunctions.
type: class-toggle
default: false
-
*/
/* Highlighting every other sentence */
.Sentence:nth-child(even) {
color: var(--text-faint);
}
/* Things */
.Person {
}
.Duration {
}
.Date {
}
.WeekDay {
}
.Month {
}
.Year {
}
/* Numbers */
.Cardinal {
}
.Ordinal {
}
.NumericValue {
/* e.g. "fifth" */
}
.TextValue {
}
/* Count */
.Singular {
}
.Plural {
}
/* Tenses */
.PastTense {
}
.PresentTense {
}
.FutureTense {
}
/* Names */
.MaleName {
}
.FemaleName {
}
.FirstName {
}
.LastName {
}
/* Parts of Speech */
.Noun {
}
.Verb {
}
.Adjective {
}
.Gerund {
}
.ProperNoun {
}
.Conjunction {
}
.Article {
}
.Adverb {
}
.Preposition {
}
.Possessive {
}
.Copula {
}
.Determiner {
}
.Demonym {
}
.Infinitive {
}
.Comparable {
}
.Auxiliary {
}
.Superlative {
}
.Modal {
}
.Uncountable {
}
.PhrasalVerb {
}
.Particle {
}
.Negative {
}
.Imperative {
}
.Expression {
}
.QuestionWord {
}

235
.obsidian/plugins/note-aliases/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "note-aliases",
"name": "Note aliases",
"version": "1.2.0",
"minAppVersion": "0.12.0",
"description": "This plugin manage aliases of notes in Obsidian.",
"author": "Pulsovi",
"fundingUrl": "https://www.buymeacoffee.com/pulsovi",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "number-headings-obsidian",
"name": "Number Headings",
"version": "1.14.0",
"minAppVersion": "1.4.0",
"description": "Automatically number or re-number headings in an Obsidian document",
"author": "Kevin Albrecht (onlyafly@gmail.com)",
"authorUrl": "https://www.kevinalbrecht.com",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,8 @@
div.number-headings-button-container > button {
font-weight: normal;
}
div.number-headings-question {
font-weight: bold;
margin-bottom: 10px;
}

View File

@@ -0,0 +1,3 @@
{
"enableFloatingToolBar": true
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{"id":"ob-table-enhancer","name":"Table Enhancer","version":"0.5.10","minAppVersion":"0.15.0","description":"Manipulate markdown tables without touching the source code in Obsidian.","author":"Stardust","authorUrl":"https://obsidian.md","fundingUrl":"https://github.com/Stardusten/ob-table-enhancer","isDesktopOnly":false}

View File

@@ -0,0 +1,88 @@
.ob-table-enhancer-row-bar {
display: flex;
position: absolute;
width: fit-content;
max-width: 3em;
flex-wrap: wrap;
transition: opacity 200ms ease-in-out;
}
.ob-table-enhancer-col-bar {
display: flex;
position: absolute;
height: fit-content;
padding-bottom: 3px;
transition: opacity 200ms ease-in-out;
}
.ob-table-enhancer-row-bar-button {
display: flex;
width: fit-content;
height: fit-content;
padding: 0 2px;
margin: 0;
filter: brightness(0.5);
transition: all 200ms ease-in-out;
}
.ob-table-enhancer-row-bar-button:hover, .ob-table-enhancer-col-bar-button:hover {
filter: brightness(1);
}
.ob-table-enhancer-col-bar-button {
display: flex;
width: fit-content;
height: fit-content;
padding: 5px 2px 0 0;
margin: 0;
filter: brightness(0.5);
transition: all 200ms ease-in-out;
}
div.ob-table-enhancer.button-menu {
display: flex;
flex-wrap: wrap;
max-width: 180px;
}
div.ob-table-enhancer.button-menu > button {
width: 30px;
height: 26px;
padding: 0;
}
.table-generator-container {
display: flex;
flex-flow: row wrap;
max-width: 150px;
align-content: flex-start;
padding-top: 5px;
padding-left: 3px;
}
.table-generator-grid {
width: 15px;
height: 15px;
background-color: var(--interactive-normal);
margin: 3px;
border-radius: 3px;
}
.table-generator-grid.select {
background-color: var(--interactive-accent);
opacity: 1;
}
.table-generator-counter {
display: block;
text-align: center;
}
.table-height-adjust th, .table-height-adjust tr {
/** 防止单元格太窄不方便点击 */
height: 1.5em !important;
}
body {
--layer-tooltip: 2000;
}

View File

@@ -0,0 +1,24 @@
{
"userAdmonitions": {},
"syntaxHighlight": false,
"copyButton": false,
"version": "10.0.1",
"autoCollapse": false,
"defaultCollapseType": "open",
"injectColor": true,
"parseTitles": true,
"dropShadow": true,
"hideEmpty": false,
"open": {
"admonitions": true,
"icons": true,
"other": true,
"advanced": false
},
"icons": [],
"useFontAwesome": true,
"rpgDownloadedOnce": false,
"msDocConverted": false,
"useSnippet": false,
"snippetPath": "custom-admonitions.1b06d8"
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-admonition",
"name": "Admonition",
"version": "10.1.1",
"minAppVersion": "1.1.0",
"description": "Enhanced callouts for Obsidian.md",
"author": "Jeremy Valentine",
"authorUrl": "",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,637 @@
@charset "UTF-8";
:root {
--split-div-size: 0;
--split-gap-size: 0;
}
split {
display: flex;
gap: unset;
flex-flow: row wrap;
align-content: center;
}
split[even] > * {
flex: 1;
}
split[no-margin] > * {
--r-block-margin: 0;
}
split[wrap="1"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (1 - 1))) - (calc(var(--dbg-size) * 1 * 2))) / 1);
}
split[wrap="2"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (2 - 1))) - (calc(var(--dbg-size) * 2 * 2))) / 2);
}
split[wrap="3"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (3 - 1))) - (calc(var(--dbg-size) * 3 * 2))) / 3);
}
split[wrap="4"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (4 - 1))) - (calc(var(--dbg-size) * 4 * 2))) / 4);
}
split[wrap="5"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (5 - 1))) - (calc(var(--dbg-size) * 5 * 2))) / 5);
}
split[wrap="6"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (6 - 1))) - (calc(var(--dbg-size) * 6 * 2))) / 6);
}
split[wrap="7"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (7 - 1))) - (calc(var(--dbg-size) * 7 * 2))) / 7);
}
split[wrap="8"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (8 - 1))) - (calc(var(--dbg-size) * 8 * 2))) / 8);
}
split[wrap="9"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (9 - 1))) - (calc(var(--dbg-size) * 9 * 2))) / 9);
}
split[wrap="10"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (10 - 1))) - (calc(var(--dbg-size) * 10 * 2))) / 10);
}
split[wrap="11"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (11 - 1))) - (calc(var(--dbg-size) * 11 * 2))) / 11);
}
split[wrap="12"] > * {
flex: 1 1 calc((100% - (calc(var(--split-gap-size) * (12 - 1))) - (calc(var(--dbg-size) * 12 * 2))) / 12);
}
split[gap="0"] {
--split-gap-size: 0;
gap: unset;
}
split[gap="1"] {
--split-gap-size: 1em;
gap: 1em;
}
split[gap="2"] {
--split-gap-size: 2em;
gap: 2em;
}
split[gap="3"] {
--split-gap-size: 3em;
gap: 3em;
}
split[gap="4"] {
--split-gap-size: 4em;
gap: 4em;
}
split[gap="5"] {
--split-gap-size: 5em;
gap: 5em;
}
split[left="1"] > *:first-child {
flex: 1;
}
split[middle="1"] > *:nth-child(2) {
flex: 1 !important;
}
split[right="1"] > *:nth-child(2) {
flex: 1;
}
split[right="1"] > *:nth-child(3) {
flex: 1;
}
split[left="2"] > *:first-child {
flex: 2;
}
split[middle="2"] > *:nth-child(2) {
flex: 2 !important;
}
split[right="2"] > *:nth-child(2) {
flex: 2;
}
split[right="2"] > *:nth-child(3) {
flex: 2;
}
split[left="3"] > *:first-child {
flex: 3;
}
split[middle="3"] > *:nth-child(2) {
flex: 3 !important;
}
split[right="3"] > *:nth-child(2) {
flex: 3;
}
split[right="3"] > *:nth-child(3) {
flex: 3;
}
split[left="4"] > *:first-child {
flex: 4;
}
split[middle="4"] > *:nth-child(2) {
flex: 4 !important;
}
split[right="4"] > *:nth-child(2) {
flex: 4;
}
split[right="4"] > *:nth-child(3) {
flex: 4;
}
split[left="5"] > *:first-child {
flex: 5;
}
split[middle="5"] > *:nth-child(2) {
flex: 5 !important;
}
split[right="5"] > *:nth-child(2) {
flex: 5;
}
split[right="5"] > *:nth-child(3) {
flex: 5;
}
split[left="6"] > *:first-child {
flex: 6;
}
split[middle="6"] > *:nth-child(2) {
flex: 6 !important;
}
split[right="6"] > *:nth-child(2) {
flex: 6;
}
split[right="6"] > *:nth-child(3) {
flex: 6;
}
split[left="7"] > *:first-child {
flex: 7;
}
split[middle="7"] > *:nth-child(2) {
flex: 7 !important;
}
split[right="7"] > *:nth-child(2) {
flex: 7;
}
split[right="7"] > *:nth-child(3) {
flex: 7;
}
split[left="8"] > *:first-child {
flex: 8;
}
split[middle="8"] > *:nth-child(2) {
flex: 8 !important;
}
split[right="8"] > *:nth-child(2) {
flex: 8;
}
split[right="8"] > *:nth-child(3) {
flex: 8;
}
split[left="9"] > *:first-child {
flex: 9;
}
split[middle="9"] > *:nth-child(2) {
flex: 9 !important;
}
split[right="9"] > *:nth-child(2) {
flex: 9;
}
split[right="9"] > *:nth-child(3) {
flex: 9;
}
split[left="10"] > *:first-child {
flex: 10;
}
split[middle="10"] > *:nth-child(2) {
flex: 10 !important;
}
split[right="10"] > *:nth-child(2) {
flex: 10;
}
split[right="10"] > *:nth-child(3) {
flex: 10;
}
split[left="11"] > *:first-child {
flex: 11;
}
split[middle="11"] > *:nth-child(2) {
flex: 11 !important;
}
split[right="11"] > *:nth-child(2) {
flex: 11;
}
split[right="11"] > *:nth-child(3) {
flex: 11;
}
.align-left {
display: flex;
align-items: flex-start;
}
.align-left p {
text-align: left;
}
.align-center {
display: flex;
align-items: center;
}
.align-center p {
text-align: center;
}
.align-right {
display: flex;
align-items: flex-end;
}
.align-right p {
text-align: right;
}
h1.align-left,
h2.align-left,
h3.align-left,
h4.align-left,
h5.align-left,
h6.align-left,
p.align-left {
text-align: left;
align-self: flex-start;
}
h1.align-right,
h2.align-right,
h3.align-right,
h4.align-right,
h5.align-right,
h6.align-right,
p.align-right {
text-align: right;
align-self: flex-end;
}
h1.align-center,
h2.align-center,
h3.align-center,
h4.align-center,
h5.align-center,
h6.align-center,
p.align-center {
text-align: center;
align-self: center;
}
:root {
--animation-duration: 0.7s;
}
.slower {
--animation-duration: 1.3s;
}
.faster {
--animation-duration: 0.35s;
}
@keyframes fadeIn {
from {
opacity: 0;
animation-timing-function: cubic-bezier(0.1, 0.25, 0.75, 0.9);
}
to {
opacity: 1;
}
}
.fadeIn {
animation-name: fadeIn;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes slideRightIn {
from {
transform: translate3d(-200px, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideRightIn {
animation-name: fadeIn, slideRightIn;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes slideLeftIn {
from {
transform: translate3d(200px, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideLeftIn {
animation-name: fadeIn, slideLeftIn;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes slideUpIn {
from {
transform: translate3d(0, 150px, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideUpIn {
animation-name: fadeIn, slideUpIn;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.5, 1);
animation-fill-mode: both;
}
@keyframes slideDownIn {
from {
transform: translate3d(0, -150px, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideDownIn {
animation-name: fadeIn, slideDownIn;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.5, 1);
animation-fill-mode: both;
}
@keyframes fadeOut {
from {
opacity: 1;
animation-timing-function: cubic-bezier(0.1, 0.25, 0.75, 0.9);
}
to {
opacity: 0;
}
}
.fadeOut {
animation-name: fadeOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes slideRightOut {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(200px, 0, 0);
}
}
.slideRightOut {
animation-name: fadeOut, slideRightOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes slideLeftOut {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(-200px, 0, 0);
}
}
.slideLeftOut {
animation-name: fadeOut, slideLeftOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes slideUpOut {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, -150px, 0);
}
}
.slideUpOut {
animation-name: fadeOut, slideUpOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.5, 1);
animation-fill-mode: both;
}
@keyframes slideDownOut {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, 150px, 0);
}
}
.slideDownOut {
animation-name: fadeOut, slideDownOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.5, 1);
animation-fill-mode: both;
}
@keyframes scaleUp {
from {
transform: scale3d(0.78, 0.78, 1);
}
to {
transform: scale3d(1, 1, 1);
}
}
.scaleUp {
animation-name: fadeIn, scaleUp;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes scaleUpOut {
from {
transform: scale3d(1, 1, 1);
}
to {
transform: scale3d(1.23, 1.23, 1);
}
}
.scaleUpOut {
animation-name: fadeOut, scaleUpOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.5, 1);
animation-fill-mode: both;
}
@keyframes scaleDown {
from {
transform: scale3d(1.23, 1.23, 1);
}
to {
transform: scale3d(1, 1, 1);
}
}
.scaleDown {
animation-name: fadeIn, scaleDown;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
animation-fill-mode: both;
}
@keyframes scaleDownOut {
from {
transform: scale3d(1, 1, 1);
}
to {
transform: scale3d(0.78, 0.78, 1);
}
}
.scaleDownOut {
animation-name: fadeOut, scaleDownOut;
animation-duration: var(--animation-duration);
animation-timing-function: cubic-bezier(0.1, 0.5, 1);
animation-fill-mode: both;
}
:root {
--callout-background-color:
255,
255,
255;
}
.callout-color1 {
--callout-color:
108,
192,
245;
}
.callout-color2 {
--callout-color:
109,
197,
217;
}
.callout-color3 {
--callout-color:
113,
208,
136;
}
.callout-color4 {
--callout-color:
160,
224,
107;
}
.callout-color5 {
--callout-color:
238,
177,
91;
}
.callout-color6 {
--callout-color:
234,
136,
133;
}
.callout-color7 {
--callout-color:
230,
98,
121;
}
.callout-color8 {
--callout-color:
152,
126,
243;
}
.callout-color9 {
--callout-color:
182,
182,
182;
}
.callout-color-default {
--callout-color:
129,
167,
244;
}
.has-light-background {
--callout-background-color:
160,
160,
160;
}
.callout {
border-left: 4px solid rgb(var(--callout-color));
border-radius: 2px;
background-color: rgba(var(--callout-background-color), 0.2);
margin: 1em 0;
}
.callout-title {
padding: 10px;
display: flex;
gap: 10px;
background-color: rgba(var(--callout-color), 0.3);
}
.callout-icon {
flex: 0 0 auto;
display: flex;
align-self: center;
color: rgb(var(--callout-color));
}
.callout-title-inner {
flex: 1 1 0;
font-weight: 700;
}
.callout-content {
overflow-x: auto;
padding: 5px 15px;
}
.stretch-column > * {
flex: 1;
height: 1%;
width: 100%;
}
.stretch-row > * {
flex: 1;
height: 100%;
width: 1%;
}
.stretch-column > * > p > img,
.stretch-row > * > p > img,
.stretch-column > * > p > video,
.stretch-row > * > p > video,
.stretch-column > * > p > iframe,
.stretch-row > * > p > iframe {
height: 100%;
width: 100%;
max-width: 100% !important;
max-height: 100% !important;
object-fit: cover;
}
.stretch-column > * > .image-paragraph {
height: 100%;
width: 100%;
}
.arrowList ul {
margin: 0;
}
.arrowList li {
display: grid;
grid-template-columns: 1em auto;
align-items: center;
padding: 0;
}
.arrowList li:first-child {
padding-top: 0.5em;
}
.arrowList li:last-child {
padding-bottom: 0.5em;
}
.arrowList li:before {
content: "\25b6";
font-size: 0.75em;
color: var(--r-main-color);
top: 0.1em;
position: relative;
}
.wideTable,
.wideTable > table {
width: 100%;
}
.noBorder td,
.noBorder th {
border: none !important;
}
:root {
--dbg-size: 0;
}
.dbg,
.dbg * {
--dbg-size: 1px;
border: 1px solid red;
}
.reset-margin,
.reset-margin > * {
--r-block-margin: 0;
--r-heading-margin: 0;
}
.flex-even > * {
flex: 1;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1e1e1e;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta .hljs-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}

View File

@@ -0,0 +1,17 @@
{
"port": "",
"autoReload": true,
"exportDirectory": "/presentations",
"enableChalkboard": true,
"enableOverview": true,
"enableMenu": true,
"theme": "black",
"highlightTheme": "zenburn",
"transition": "fade",
"transitionSpeed": "normal",
"controls": false,
"progress": true,
"slideNumber": true,
"showGrid": false,
"autoComplete": "inPreview"
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,30 @@
/* http://meyerweb.com/eric/tools/css/reset/
v4.0 | 20180602
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
main, menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, main, menu, nav, section {
display: block;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More