generated from DNDs/dnd-template
puahing movule
This commit is contained in:
commit
2fd1a5e902
14
.obsidian/app.json
vendored
14
.obsidian/app.json
vendored
@ -1,15 +1,21 @@
|
|||||||
{
|
{
|
||||||
"legacyEditor": false,
|
"legacyEditor": false,
|
||||||
"livePreview": true,
|
"livePreview": true,
|
||||||
"attachmentFolderPath": "attachment",
|
"attachmentFolderPath": "Attachment",
|
||||||
"trashOption": "local",
|
"trashOption": "local",
|
||||||
"promptDelete": false,
|
"promptDelete": false,
|
||||||
"alwaysUpdateLinks": true,
|
"alwaysUpdateLinks": true,
|
||||||
"showLineNumber": true,
|
"showLineNumber": true,
|
||||||
"spellcheck": true,
|
"spellcheck": true,
|
||||||
"spellcheckLanguages": [
|
"spellcheckLanguages": [
|
||||||
"en-GB",
|
"de",
|
||||||
"de"
|
"de-DE"
|
||||||
],
|
],
|
||||||
"showUnsupportedFiles": true
|
"showUnsupportedFiles": true,
|
||||||
|
"pdfExportSettings": {
|
||||||
|
"pageSize": "A4",
|
||||||
|
"landscape": false,
|
||||||
|
"margin": "0",
|
||||||
|
"downscalePercent": 90
|
||||||
|
}
|
||||||
}
|
}
|
6
.obsidian/appearance.json
vendored
6
.obsidian/appearance.json
vendored
@ -1,3 +1,7 @@
|
|||||||
{
|
{
|
||||||
"translucency": true
|
"translucency": false,
|
||||||
|
"cssTheme": "Deep Work",
|
||||||
|
"theme": "obsidian",
|
||||||
|
"baseFontSize": 14,
|
||||||
|
"enabledCssSnippets": []
|
||||||
}
|
}
|
3
.obsidian/command-palette.json
vendored
Normal file
3
.obsidian/command-palette.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"pinned": null
|
||||||
|
}
|
13
.obsidian/community-plugins.json
vendored
13
.obsidian/community-plugins.json
vendored
@ -1,6 +1,15 @@
|
|||||||
[
|
[
|
||||||
"obsidian-git",
|
|
||||||
"table-editor-obsidian",
|
"table-editor-obsidian",
|
||||||
|
"obsidian-auto-link-title",
|
||||||
|
"calendar",
|
||||||
|
"obsidian-dialogue-plugin",
|
||||||
|
"obsidian-discordrpc",
|
||||||
|
"obsidian-reading-time",
|
||||||
|
"periodic-notes",
|
||||||
|
"obsidian-pandoc",
|
||||||
"obsidian-image-toolkit",
|
"obsidian-image-toolkit",
|
||||||
"obsidian-folder-index"
|
"obsidian-icons-plugin",
|
||||||
|
"obsidian-style-settings",
|
||||||
|
"obsidian-git",
|
||||||
|
"advanced-cursors"
|
||||||
]
|
]
|
6
.obsidian/core-plugins.json
vendored
6
.obsidian/core-plugins.json
vendored
@ -1,20 +1,18 @@
|
|||||||
[
|
[
|
||||||
"file-explorer",
|
"file-explorer",
|
||||||
"global-search",
|
"global-search",
|
||||||
"switcher",
|
|
||||||
"graph",
|
"graph",
|
||||||
"backlink",
|
"backlink",
|
||||||
"outgoing-link",
|
"outgoing-link",
|
||||||
"tag-pane",
|
"tag-pane",
|
||||||
"page-preview",
|
"page-preview",
|
||||||
|
"templates",
|
||||||
"note-composer",
|
"note-composer",
|
||||||
"command-palette",
|
"command-palette",
|
||||||
"slash-command",
|
"slash-command",
|
||||||
"editor-status",
|
"editor-status",
|
||||||
"starred",
|
"starred",
|
||||||
"markdown-importer",
|
|
||||||
"outline",
|
"outline",
|
||||||
"word-count",
|
"word-count",
|
||||||
"open-with-default-app",
|
"open-with-default-app"
|
||||||
"file-recovery"
|
|
||||||
]
|
]
|
6
.obsidian/daily-notes.json
vendored
Normal file
6
.obsidian/daily-notes.json
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"folder": "Daily",
|
||||||
|
"format": "DD.MM.YYYY",
|
||||||
|
"autorun": true,
|
||||||
|
"template": "Templates/t_DailyNote"
|
||||||
|
}
|
26
.obsidian/graph.json
vendored
26
.obsidian/graph.json
vendored
@ -1,22 +1,22 @@
|
|||||||
{
|
{
|
||||||
"collapse-filter": true,
|
"collapse-filter": true,
|
||||||
"search": "",
|
"search": "",
|
||||||
"showTags": false,
|
"showTags": true,
|
||||||
"showAttachments": false,
|
"showAttachments": true,
|
||||||
"hideUnresolved": false,
|
"hideUnresolved": false,
|
||||||
"showOrphans": true,
|
"showOrphans": true,
|
||||||
"collapse-color-groups": true,
|
"collapse-color-groups": true,
|
||||||
"colorGroups": [],
|
"colorGroups": [],
|
||||||
"collapse-display": true,
|
"collapse-display": false,
|
||||||
"showArrow": false,
|
"showArrow": true,
|
||||||
"textFadeMultiplier": 0,
|
"textFadeMultiplier": -0.9,
|
||||||
"nodeSizeMultiplier": 1,
|
"nodeSizeMultiplier": 1.05487179487179,
|
||||||
"lineSizeMultiplier": 1,
|
"lineSizeMultiplier": 3.6996583143508,
|
||||||
"collapse-forces": true,
|
"collapse-forces": false,
|
||||||
"centerStrength": 0.518713248970312,
|
"centerStrength": 0.570543849658314,
|
||||||
"repelStrength": 10,
|
"repelStrength": 20,
|
||||||
"linkStrength": 1,
|
"linkStrength": 1,
|
||||||
"linkDistance": 250,
|
"linkDistance": 315,
|
||||||
"scale": 1,
|
"scale": 0.3496597027216647,
|
||||||
"close": false
|
"close": true
|
||||||
}
|
}
|
103
.obsidian/hotkeys.json
vendored
103
.obsidian/hotkeys.json
vendored
@ -1 +1,102 @@
|
|||||||
{}
|
{
|
||||||
|
"templater-obsidian:templates/New Problem.md": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "P"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"obsidian-timestamper:obsidian-fast-timestamp": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "T"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"obsidian-timestamper:obsidian-fast-datestamp": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "D"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"templater-obsidian:Templates/New Problem Template.md": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "P"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"templater-obsidian:templates/New Problem Template.md": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "P"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"insert-current-date": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "D"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"insert-current-time": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "T"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"insert-template": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "P"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"table-editor-obsidian:move-row-down": [],
|
||||||
|
"table-editor-obsidian:move-row-up": [],
|
||||||
|
"editor:swap-line-up": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "ArrowUp"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"editor:swap-line-down": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "ArrowDown"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"advanced-cursors:add-cursor-above": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "ArrowUp"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"advanced-cursors:add-cursor-below": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "ArrowDown"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
4506
.obsidian/plugins/advanced-cursors/main.js
vendored
Normal file
4506
.obsidian/plugins/advanced-cursors/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/advanced-cursors/manifest.json
vendored
Normal file
10
.obsidian/plugins/advanced-cursors/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "advanced-cursors",
|
||||||
|
"name": "Advanced Cursors",
|
||||||
|
"version": "0.5.1",
|
||||||
|
"minAppVersion": "0.12.18",
|
||||||
|
"description": "Use multiple cursors even more powerfully.",
|
||||||
|
"author": "SkepticMystic",
|
||||||
|
"authorUrl": "https://github.com/SkepticMystic/advanced-cursors",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
60
.obsidian/plugins/advanced-cursors/styles.css
vendored
Normal file
60
.obsidian/plugins/advanced-cursors/styles.css
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/* Sets all the text color to red! */
|
||||||
|
.savedQ {
|
||||||
|
padding: 5px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.savedQ-name {
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.savedQ-view-q {
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.editQButton,
|
||||||
|
.deleteQButton {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.savedQ-name:hover,
|
||||||
|
.editQButton:hover,
|
||||||
|
.deleteQButton:hover,
|
||||||
|
.savedQ-query:hover,
|
||||||
|
.AC-submit-button:hover,
|
||||||
|
.savedQ-view-q:hover {
|
||||||
|
background-color: var(--interactive-accent) !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AC-submit-button:focus {
|
||||||
|
background-color: var(--interactive-accent) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.savedQ-query {
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AC-flashNewSel {
|
||||||
|
animation: flashNewSel 1.5s 1;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes flashNewSel {
|
||||||
|
0% {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
10% {
|
||||||
|
background-color: var(--text-highlight-bg);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
background-color: var(--text-highlight-bg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
10
.obsidian/plugins/calendar/data.json
vendored
Normal file
10
.obsidian/plugins/calendar/data.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"shouldConfirmBeforeCreate": true,
|
||||||
|
"weekStart": "locale",
|
||||||
|
"wordsPerDot": 250,
|
||||||
|
"showWeeklyNote": true,
|
||||||
|
"weeklyNoteFormat": "",
|
||||||
|
"weeklyNoteTemplate": "",
|
||||||
|
"weeklyNoteFolder": "",
|
||||||
|
"localeOverride": "system-default"
|
||||||
|
}
|
4457
.obsidian/plugins/calendar/main.js
vendored
Normal file
4457
.obsidian/plugins/calendar/main.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
.obsidian/plugins/calendar/manifest.json
vendored
Normal file
10
.obsidian/plugins/calendar/manifest.json
vendored
Normal 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"
|
||||||
|
}
|
440
.obsidian/plugins/obsidian-auto-link-title/main.js
vendored
Normal file
440
.obsidian/plugins/obsidian-auto-link-title/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-auto-link-title/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-auto-link-title/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-auto-link-title",
|
||||||
|
"name": "Auto Link Title",
|
||||||
|
"version": "1.2.5",
|
||||||
|
"minAppVersion": "0.12.17",
|
||||||
|
"description": "This plugin automatically fetches the titles of links from the web",
|
||||||
|
"author": "Matt Furden",
|
||||||
|
"authorUrl": "https://github.com/zolrath",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
1
.obsidian/plugins/obsidian-auto-link-title/styles.css
vendored
Normal file
1
.obsidian/plugins/obsidian-auto-link-title/styles.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* no styles */
|
7
.obsidian/plugins/obsidian-dialogue-plugin/data.json
vendored
Normal file
7
.obsidian/plugins/obsidian-dialogue-plugin/data.json
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"defaultLeftTitle": "User",
|
||||||
|
"defaultRightTitle": "Jesse James Isler",
|
||||||
|
"defaultTitleMode": "first",
|
||||||
|
"defaultMessageMaxWidth": "60%",
|
||||||
|
"defaultCommentMaxWidth": "60%"
|
||||||
|
}
|
340
.obsidian/plugins/obsidian-dialogue-plugin/main.js
vendored
Normal file
340
.obsidian/plugins/obsidian-dialogue-plugin/main.js
vendored
Normal file
@ -0,0 +1,340 @@
|
|||||||
|
/*
|
||||||
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||||
|
if you want to view the source, please visit the github repository of this plugin
|
||||||
|
*/
|
||||||
|
|
||||||
|
var __create = Object.create;
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
||||||
|
var __export = (target, all) => {
|
||||||
|
__markAsModule(target);
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __reExport = (target, module2, desc) => {
|
||||||
|
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
||||||
|
for (let key of __getOwnPropNames(module2))
|
||||||
|
if (!__hasOwnProp.call(target, key) && key !== "default")
|
||||||
|
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
var __toModule = (module2) => {
|
||||||
|
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
||||||
|
};
|
||||||
|
var __async = (__this, __arguments, generator) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
var fulfilled = (value) => {
|
||||||
|
try {
|
||||||
|
step(generator.next(value));
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var rejected = (value) => {
|
||||||
|
try {
|
||||||
|
step(generator.throw(value));
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||||||
|
step((generator = generator.apply(__this, __arguments)).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
__export(exports, {
|
||||||
|
default: () => DialoguePlugin
|
||||||
|
});
|
||||||
|
var import_obsidian2 = __toModule(require("obsidian"));
|
||||||
|
|
||||||
|
// src/types/dialogueTitleMode.ts
|
||||||
|
var DialogueTitleMode;
|
||||||
|
(function(DialogueTitleMode2) {
|
||||||
|
DialogueTitleMode2["Disabled"] = "disabled";
|
||||||
|
DialogueTitleMode2["First"] = "first";
|
||||||
|
DialogueTitleMode2["All"] = "all";
|
||||||
|
})(DialogueTitleMode || (DialogueTitleMode = {}));
|
||||||
|
|
||||||
|
// src/constants/classes.ts
|
||||||
|
var CLASSES = class {
|
||||||
|
};
|
||||||
|
CLASSES.DIALOGUE_WRAPPER = "dialogue-plugin-wrapper";
|
||||||
|
CLASSES.BLOCK_WRAPPER = "dialogue-plugin-block-wrapper";
|
||||||
|
CLASSES.MESSAGE_WRAPPER_LEFT = "dialogue-plugin-message-wrapper-left";
|
||||||
|
CLASSES.MESSAGE_WRAPPER_RIGHT = "dialogue-plugin-message-wrapper-right";
|
||||||
|
CLASSES.MESSAGE = "dialogue-plugin-message";
|
||||||
|
CLASSES.MESSAGE_TITLE = "dialogue-plugin-message-title";
|
||||||
|
CLASSES.MESSAGE_CONTENT = "dialogue-plugin-message-content";
|
||||||
|
CLASSES.DELIMITER_WRAPPER = "dialogue-plugin-delimiter-wrapper";
|
||||||
|
CLASSES.DELIMITER = "dialogue-plugin-delimiter";
|
||||||
|
CLASSES.DELIMITER_DOT = "dialogue-plugin-delimiter-dot";
|
||||||
|
CLASSES.COMMENT_WRAPPER = "dialogue-plugin-comment-wrapper";
|
||||||
|
CLASSES.COMMENT = "dialogue-plugin-comment";
|
||||||
|
|
||||||
|
// src/components/message.ts
|
||||||
|
var SIDES = class {
|
||||||
|
};
|
||||||
|
SIDES.LEFT = "left";
|
||||||
|
SIDES.RIGHT = "right";
|
||||||
|
var Message = class {
|
||||||
|
constructor(content, side, dialogueSettings) {
|
||||||
|
this.content = content;
|
||||||
|
this.side = side;
|
||||||
|
this.dialogueSettings = dialogueSettings;
|
||||||
|
this.participant = this.side == SIDES.LEFT ? this.dialogueSettings.leftParticipant : this.dialogueSettings.rightParticipant;
|
||||||
|
this.renderMessage();
|
||||||
|
}
|
||||||
|
renderMessage() {
|
||||||
|
const messageEl = this.createMessageEl();
|
||||||
|
if (this.titleShouldRender()) {
|
||||||
|
messageEl.createDiv({ cls: CLASSES.MESSAGE_TITLE, text: this.participant.title });
|
||||||
|
}
|
||||||
|
messageEl.createDiv({ cls: CLASSES.MESSAGE_CONTENT, text: this.content });
|
||||||
|
}
|
||||||
|
createMessageEl() {
|
||||||
|
var _a;
|
||||||
|
const sideClass = this.side == SIDES.LEFT ? CLASSES.MESSAGE_WRAPPER_LEFT : CLASSES.MESSAGE_WRAPPER_RIGHT;
|
||||||
|
const messageWrapperEl = this.dialogueSettings.parent.createDiv({
|
||||||
|
cls: `${CLASSES.BLOCK_WRAPPER} ${sideClass}`
|
||||||
|
});
|
||||||
|
return messageWrapperEl.createDiv({
|
||||||
|
cls: CLASSES.MESSAGE,
|
||||||
|
attr: {
|
||||||
|
style: `max-width: ${this.dialogueSettings.messageMaxWidth};`,
|
||||||
|
"data-participant-name": this.participant.title,
|
||||||
|
"data-participant-id": (_a = this.participant.enforcedId) != null ? _a : this.dialogueSettings.participants.get(this.participant.title)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
titleShouldRender() {
|
||||||
|
if (this.participant.title.length < 1)
|
||||||
|
return false;
|
||||||
|
switch (this.dialogueSettings.titleMode) {
|
||||||
|
case DialogueTitleMode.Disabled:
|
||||||
|
return false;
|
||||||
|
case DialogueTitleMode.All:
|
||||||
|
return true;
|
||||||
|
case DialogueTitleMode.First: {
|
||||||
|
if (this.participant.renderedOnce)
|
||||||
|
return false;
|
||||||
|
this.participant.renderedOnce = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/components/delimiter.ts
|
||||||
|
var Delimiter = class {
|
||||||
|
constructor(dialogueSettings) {
|
||||||
|
this.dialogueSettings = dialogueSettings;
|
||||||
|
this.renderDelimiter();
|
||||||
|
}
|
||||||
|
renderDelimiter() {
|
||||||
|
const delimiterWrapperEl = this.dialogueSettings.parent.createDiv({
|
||||||
|
cls: `${CLASSES.BLOCK_WRAPPER} ${CLASSES.DELIMITER_WRAPPER}`
|
||||||
|
});
|
||||||
|
const delimiterEl = delimiterWrapperEl.createDiv({ cls: CLASSES.DELIMITER });
|
||||||
|
delimiterEl.createEl("div", { cls: CLASSES.DELIMITER_DOT });
|
||||||
|
delimiterEl.createEl("div", { cls: CLASSES.DELIMITER_DOT });
|
||||||
|
delimiterEl.createEl("div", { cls: CLASSES.DELIMITER_DOT });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/components/comment.ts
|
||||||
|
var Comment = class {
|
||||||
|
constructor(content, dialogueSettings) {
|
||||||
|
this.content = content;
|
||||||
|
this.dialogueSettings = dialogueSettings;
|
||||||
|
this.renderComment();
|
||||||
|
}
|
||||||
|
renderComment() {
|
||||||
|
const commentEl = this.dialogueSettings.parent.createDiv({
|
||||||
|
cls: `${CLASSES.BLOCK_WRAPPER} ${CLASSES.COMMENT_WRAPPER}`
|
||||||
|
});
|
||||||
|
return commentEl.createDiv({
|
||||||
|
cls: CLASSES.COMMENT,
|
||||||
|
text: this.content,
|
||||||
|
attr: {
|
||||||
|
style: `max-width: ${this.dialogueSettings.commentMaxWidth};`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/dialogue.ts
|
||||||
|
var KEYWORDS = class {
|
||||||
|
};
|
||||||
|
KEYWORDS.LEFT_PATTERN = /^l(?:eft)?(?:-(\d+))?:/i;
|
||||||
|
KEYWORDS.RIGHT_PATTERN = /^r(?:ight)?(?:-(\d+))?:/i;
|
||||||
|
KEYWORDS.TITLE_MODE = "titleMode:";
|
||||||
|
KEYWORDS.MESSAGE_MAX_WIDTH = "messageMaxWidth:";
|
||||||
|
KEYWORDS.COMMENT_MAX_WIDTH = "commentMaxWidth:";
|
||||||
|
KEYWORDS.DELIMITER = /^-|delimiter/;
|
||||||
|
KEYWORDS.COMMENT = "#";
|
||||||
|
KEYWORDS.MESSAGE_LEFT = "<";
|
||||||
|
KEYWORDS.MESSAGE_RIGHT = ">";
|
||||||
|
var DialogueRenderer = class {
|
||||||
|
constructor(src, parent, settings) {
|
||||||
|
this.src = src;
|
||||||
|
this.dialogueWrapperEl = parent.createDiv({ cls: CLASSES.DIALOGUE_WRAPPER });
|
||||||
|
this.dialogueSettings = {
|
||||||
|
parent: this.dialogueWrapperEl,
|
||||||
|
leftParticipant: {
|
||||||
|
title: settings.defaultLeftTitle,
|
||||||
|
renderedOnce: false,
|
||||||
|
enforcedId: null
|
||||||
|
},
|
||||||
|
rightParticipant: {
|
||||||
|
title: settings.defaultRightTitle,
|
||||||
|
renderedOnce: false,
|
||||||
|
enforcedId: null
|
||||||
|
},
|
||||||
|
titleMode: settings.defaultTitleMode,
|
||||||
|
messageMaxWidth: settings.defaultMessageMaxWidth,
|
||||||
|
commentMaxWidth: settings.defaultCommentMaxWidth,
|
||||||
|
participants: new Map()
|
||||||
|
};
|
||||||
|
this.renderDialogue();
|
||||||
|
}
|
||||||
|
registerParticipant(participant) {
|
||||||
|
if (!this.dialogueSettings.participants.has(participant)) {
|
||||||
|
this.dialogueSettings.participants.set(participant, this.dialogueSettings.participants.size + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getEnforcedId(pattern, line) {
|
||||||
|
let enforcedId = null;
|
||||||
|
const result = pattern.exec(line);
|
||||||
|
if (result != null && result.length > 1) {
|
||||||
|
enforcedId = result[1];
|
||||||
|
}
|
||||||
|
return enforcedId;
|
||||||
|
}
|
||||||
|
renderDialogue() {
|
||||||
|
const lines = this.src.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
||||||
|
for (const line of lines) {
|
||||||
|
if (KEYWORDS.LEFT_PATTERN.test(line)) {
|
||||||
|
this.dialogueSettings.leftParticipant.title = line.split(":").splice(1).join(":").trim();
|
||||||
|
this.dialogueSettings.leftParticipant.renderedOnce = false;
|
||||||
|
this.dialogueSettings.leftParticipant.enforcedId = this.getEnforcedId(KEYWORDS.LEFT_PATTERN, line);
|
||||||
|
} else if (KEYWORDS.RIGHT_PATTERN.test(line)) {
|
||||||
|
this.dialogueSettings.rightParticipant.title = line.split(":").splice(1).join(":").trim();
|
||||||
|
this.dialogueSettings.rightParticipant.renderedOnce = false;
|
||||||
|
this.dialogueSettings.rightParticipant.enforcedId = this.getEnforcedId(KEYWORDS.RIGHT_PATTERN, line);
|
||||||
|
} else if (line.startsWith(KEYWORDS.TITLE_MODE)) {
|
||||||
|
const modeName = line.substr(KEYWORDS.TITLE_MODE.length).trim().toLowerCase();
|
||||||
|
if (Object.values(DialogueTitleMode).some((mode) => mode == modeName)) {
|
||||||
|
this.dialogueSettings.titleMode = modeName;
|
||||||
|
}
|
||||||
|
} else if (line.startsWith(KEYWORDS.MESSAGE_MAX_WIDTH)) {
|
||||||
|
this.dialogueSettings.messageMaxWidth = line.substr(KEYWORDS.MESSAGE_MAX_WIDTH.length).trim();
|
||||||
|
} else if (line.startsWith(KEYWORDS.COMMENT_MAX_WIDTH)) {
|
||||||
|
this.dialogueSettings.commentMaxWidth = line.substr(KEYWORDS.COMMENT_MAX_WIDTH.length).trim();
|
||||||
|
} else if (KEYWORDS.DELIMITER.test(line)) {
|
||||||
|
new Delimiter(this.dialogueSettings);
|
||||||
|
} else if (line.startsWith(KEYWORDS.COMMENT)) {
|
||||||
|
const content = line.substr(KEYWORDS.COMMENT.length);
|
||||||
|
new Comment(content, this.dialogueSettings);
|
||||||
|
} else if (line.startsWith(KEYWORDS.MESSAGE_LEFT)) {
|
||||||
|
const content = line.substr(KEYWORDS.MESSAGE_LEFT.length);
|
||||||
|
this.registerParticipant(this.dialogueSettings.leftParticipant.title);
|
||||||
|
new Message(content, SIDES.LEFT, this.dialogueSettings);
|
||||||
|
} else if (line.startsWith(KEYWORDS.MESSAGE_RIGHT)) {
|
||||||
|
const content = line.substr(KEYWORDS.MESSAGE_RIGHT.length);
|
||||||
|
this.registerParticipant(this.dialogueSettings.rightParticipant.title);
|
||||||
|
new Message(content, SIDES.RIGHT, this.dialogueSettings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/settings.ts
|
||||||
|
var import_obsidian = __toModule(require("obsidian"));
|
||||||
|
var DEFAULT_SETTINGS = {
|
||||||
|
defaultLeftTitle: "",
|
||||||
|
defaultRightTitle: "",
|
||||||
|
defaultTitleMode: DialogueTitleMode.First,
|
||||||
|
defaultMessageMaxWidth: "60%",
|
||||||
|
defaultCommentMaxWidth: "60%"
|
||||||
|
};
|
||||||
|
var DialogueSettingTab = class extends import_obsidian.PluginSettingTab {
|
||||||
|
constructor(app, plugin) {
|
||||||
|
super(app, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
const { containerEl } = this;
|
||||||
|
containerEl.empty();
|
||||||
|
containerEl.createEl("h2", { text: "Dialogue Settings" });
|
||||||
|
const coffeeEl = containerEl.createEl("div", {
|
||||||
|
attr: {
|
||||||
|
style: "text-align: center; margin-bottom: 10px;"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const coffeeLinkEl = coffeeEl.createEl("a", { href: "https://www.buymeacoffee.com/holubj" });
|
||||||
|
coffeeLinkEl.createEl("img", {
|
||||||
|
attr: {
|
||||||
|
src: "https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png",
|
||||||
|
alt: "Buy Me A Coffee",
|
||||||
|
style: "height: 60px; width: 217px;"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
new import_obsidian.Setting(containerEl).setName("Default left title").setDesc("Default value for left title in all dialogues.").addText((text) => text.setPlaceholder("Enter default left title").setValue(this.plugin.settings.defaultLeftTitle).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.defaultLeftTitle = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
})));
|
||||||
|
new import_obsidian.Setting(containerEl).setName("Default right title").setDesc("Default value for right title in all dialogues.").addText((text) => text.setPlaceholder("Enter default right title").setValue(this.plugin.settings.defaultRightTitle).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.defaultRightTitle = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
})));
|
||||||
|
new import_obsidian.Setting(containerEl).setName("Default title mode").setDesc("Default title mode in all dialogues.").addDropdown((cb) => {
|
||||||
|
Object.values(DialogueTitleMode).forEach((titleMode) => {
|
||||||
|
const mode = titleMode.toString();
|
||||||
|
cb.addOption(mode, mode.charAt(0).toUpperCase() + mode.slice(1));
|
||||||
|
});
|
||||||
|
cb.setValue(this.plugin.settings.defaultTitleMode).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.defaultTitleMode = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
new import_obsidian.Setting(containerEl).setName("Default max message width").setDesc("Default max message width in all dialogues.").addText((text) => text.setPlaceholder("Enter default max message width").setValue(this.plugin.settings.defaultMessageMaxWidth).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.defaultMessageMaxWidth = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
})));
|
||||||
|
new import_obsidian.Setting(containerEl).setName("Default max comment width").setDesc("Default max comment width in all dialogues.").addText((text) => text.setPlaceholder("Enter default max comment width").setValue(this.plugin.settings.defaultCommentMaxWidth).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.defaultCommentMaxWidth = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var DialoguePlugin = class extends import_obsidian2.Plugin {
|
||||||
|
onload() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
yield this.loadSettings();
|
||||||
|
this.registerMarkdownCodeBlockProcessor(`dialogue`, (src, el, ctx) => {
|
||||||
|
new DialogueRenderer(src, el, this.settings);
|
||||||
|
});
|
||||||
|
this.addSettingTab(new DialogueSettingTab(this.app, this));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
loadSettings() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
saveSettings() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
yield this.saveData(this.settings);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
10
.obsidian/plugins/obsidian-dialogue-plugin/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-dialogue-plugin/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-dialogue-plugin",
|
||||||
|
"name": "Dialogue",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"minAppVersion": "0.12.0",
|
||||||
|
"description": "Create dialogues in Markdown.",
|
||||||
|
"author": "Jakub Holub",
|
||||||
|
"authorUrl": "https://github.com/holubj",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
58
.obsidian/plugins/obsidian-dialogue-plugin/styles.css
vendored
Normal file
58
.obsidian/plugins/obsidian-dialogue-plugin/styles.css
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
.dialogue-plugin-wrapper {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-block-wrapper {
|
||||||
|
display: flex;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-message-wrapper-left {
|
||||||
|
justify-content: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-message-wrapper-right {
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-message {
|
||||||
|
overflow: hidden;
|
||||||
|
max-width: 60%;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-message-title {
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-message-content {
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-delimiter-wrapper {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-delimiter {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-delimiter-dot {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
margin: 0 3px;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-comment-wrapper {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogue-plugin-comment {
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
10
.obsidian/plugins/obsidian-discordrpc/data.json
vendored
Normal file
10
.obsidian/plugins/obsidian-discordrpc/data.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"showVaultName": true,
|
||||||
|
"showCurrentFileName": true,
|
||||||
|
"showPopups": true,
|
||||||
|
"customVaultName": "",
|
||||||
|
"showFileExtension": true,
|
||||||
|
"useLoadedTime": true,
|
||||||
|
"connectOnStart": true,
|
||||||
|
"autoHideStatusBar": true
|
||||||
|
}
|
1771
.obsidian/plugins/obsidian-discordrpc/main.js
vendored
Normal file
1771
.obsidian/plugins/obsidian-discordrpc/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
.obsidian/plugins/obsidian-discordrpc/manifest.json
vendored
Normal file
9
.obsidian/plugins/obsidian-discordrpc/manifest.json
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-discordrpc",
|
||||||
|
"name": "Discord Rich Presence",
|
||||||
|
"version": "1.5.0",
|
||||||
|
"description": "Update your Discord Status to show your friends what you are working on in Obsidian. With Discord Rich Presence.",
|
||||||
|
"author": "Luke Leppan",
|
||||||
|
"authorUrl": "https://lukeleppan.com",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"skipFirstHeadline": true,
|
|
||||||
"disableHeadlines": false,
|
|
||||||
"graphOverwrite": true,
|
|
||||||
"rootIndexFile": "Dashboard.md",
|
|
||||||
"autoCreateIndexFile": true,
|
|
||||||
"autoRenameIndexFile": true,
|
|
||||||
"hideIndexFiles": false,
|
|
||||||
"indexFileInitText": "```folder-index-content\n```"
|
|
||||||
}
|
|
622
.obsidian/plugins/obsidian-folder-index/main.js
vendored
622
.obsidian/plugins/obsidian-folder-index/main.js
vendored
@ -1,622 +0,0 @@
|
|||||||
/*
|
|
||||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
||||||
if you want to view the source, please visit the github repository of this plugin
|
|
||||||
*/
|
|
||||||
|
|
||||||
var __create = Object.create;
|
|
||||||
var __defProp = Object.defineProperty;
|
|
||||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
||||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
||||||
var __getProtoOf = Object.getPrototypeOf;
|
|
||||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
||||||
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
||||||
var __export = (target, all) => {
|
|
||||||
__markAsModule(target);
|
|
||||||
for (var name in all)
|
|
||||||
__defProp(target, name, { get: all[name], enumerable: true });
|
|
||||||
};
|
|
||||||
var __reExport = (target, module2, desc) => {
|
|
||||||
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
||||||
for (let key of __getOwnPropNames(module2))
|
|
||||||
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
||||||
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
||||||
}
|
|
||||||
return target;
|
|
||||||
};
|
|
||||||
var __toModule = (module2) => {
|
|
||||||
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
||||||
};
|
|
||||||
var __async = (__this, __arguments, generator) => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
var fulfilled = (value) => {
|
|
||||||
try {
|
|
||||||
step(generator.next(value));
|
|
||||||
} catch (e) {
|
|
||||||
reject(e);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var rejected = (value) => {
|
|
||||||
try {
|
|
||||||
step(generator.throw(value));
|
|
||||||
} catch (e) {
|
|
||||||
reject(e);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
||||||
step((generator = generator.apply(__this, __arguments)).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// src/main.ts
|
|
||||||
__export(exports, {
|
|
||||||
default: () => FolderIndexPlugin
|
|
||||||
});
|
|
||||||
var import_obsidian5 = __toModule(require("obsidian"));
|
|
||||||
|
|
||||||
// src/modules/IndexContentRenderer.ts
|
|
||||||
var import_obsidian = __toModule(require("obsidian"));
|
|
||||||
|
|
||||||
// src/models/FileHeader.ts
|
|
||||||
var FileHeader = class {
|
|
||||||
constructor(cached) {
|
|
||||||
this.cached = cached;
|
|
||||||
}
|
|
||||||
get level() {
|
|
||||||
return this.cached.level;
|
|
||||||
}
|
|
||||||
get rawHeading() {
|
|
||||||
return this.cached.heading;
|
|
||||||
}
|
|
||||||
get isLink() {
|
|
||||||
return /\[\[(.*?)\]\]/.test(this.cached.heading);
|
|
||||||
}
|
|
||||||
get href() {
|
|
||||||
if (!this.isLink)
|
|
||||||
return null;
|
|
||||||
const value = this.parseMarkdownLink(this.rawHeading);
|
|
||||||
const parts = value.split("|");
|
|
||||||
return `#${parts.join(" ")}`;
|
|
||||||
}
|
|
||||||
get markdownHref() {
|
|
||||||
if (!this.isLink)
|
|
||||||
return `[[#${this.rawHeading}]]`;
|
|
||||||
const value = this.parseMarkdownLink(this.rawHeading);
|
|
||||||
const parts = value.split("|");
|
|
||||||
const hasAlias = parts.length > 1;
|
|
||||||
if (!hasAlias) {
|
|
||||||
return `[[#${parts[0]}]]`;
|
|
||||||
}
|
|
||||||
const link = parts.join(" ");
|
|
||||||
return `[[#${link}|${parts[1]}]]`;
|
|
||||||
}
|
|
||||||
parseMarkdownLink(link) {
|
|
||||||
const [, base] = link.match(/\[\[(.*?)]\]/) || [];
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// src/modules/IndexContentRenderer.ts
|
|
||||||
var IndexContentRenderer = class extends import_obsidian.MarkdownRenderChild {
|
|
||||||
constructor(app, plugin, filePath, container) {
|
|
||||||
super(container);
|
|
||||||
this.app = app;
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.filePath = filePath;
|
|
||||||
this.container = container;
|
|
||||||
}
|
|
||||||
onload() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
yield this.render();
|
|
||||||
this.plugin.eventManager.on("settingsUpdate", this.onSettingsUpdate.bind(this));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onunload() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
this.plugin.eventManager.off("settingsUpdate", this.onSettingsUpdate.bind(this));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onSettingsUpdate(settings) {
|
|
||||||
this.render().then();
|
|
||||||
}
|
|
||||||
render() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
this.container.empty();
|
|
||||||
const parent = this.app.vault.getAbstractFileByPath(this.filePath).parent;
|
|
||||||
const files = parent.children;
|
|
||||||
yield import_obsidian.MarkdownRenderer.renderMarkdown(this.buildMarkdownText(files), this.container, this.filePath, this);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
buildMarkdownText(filtered_files) {
|
|
||||||
const list = [];
|
|
||||||
filtered_files.forEach((value) => {
|
|
||||||
if (value instanceof import_obsidian.TFile) {
|
|
||||||
if (value.basename == value.parent.name) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const headings = this.app.metadataCache.getFileCache(value).headings;
|
|
||||||
const fileLink = this.app.metadataCache.fileToLinktext(value, this.filePath);
|
|
||||||
list.push(`1. [[${fileLink}|${value.basename}]]`);
|
|
||||||
if (headings != null && !this.plugin.settings.disableHeadlines) {
|
|
||||||
for (let i = this.plugin.settings.skipFirstHeadline ? 1 : 0; i < headings.length; i++) {
|
|
||||||
const heading = new FileHeader(headings[i]);
|
|
||||||
const numIndents = new Array(Math.max(1, heading.level - headings[0].level));
|
|
||||||
const indent = numIndents.fill(" ").join("");
|
|
||||||
list.push(`${indent}1. [[${fileLink}#${heading.rawHeading}|${heading.rawHeading}]]`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return list.join("\n");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// src/modules/GraphManipulatorModule.ts
|
|
||||||
var import_obsidian2 = __toModule(require("obsidian"));
|
|
||||||
var GraphManipulatorModule = class {
|
|
||||||
constructor(app, plugin) {
|
|
||||||
this.app = app;
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.load();
|
|
||||||
}
|
|
||||||
onLayoutChange() {
|
|
||||||
this.graphsLeafs = this.app.workspace.getLeavesOfType("graph");
|
|
||||||
this.plugin.eventManager.emit("graphLeafUpdate", this.graphsLeafs);
|
|
||||||
}
|
|
||||||
onLeafUpdate(leaves) {
|
|
||||||
leaves.forEach((value) => {
|
|
||||||
const engine = this.getEngine(value);
|
|
||||||
if (engine.oldRender == null) {
|
|
||||||
engine.oldRender = engine.render;
|
|
||||||
engine.render = () => {
|
|
||||||
if (this.plugin.settings.graphOverwrite) {
|
|
||||||
this.render(engine);
|
|
||||||
} else {
|
|
||||||
engine.oldRender();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (this.plugin.settings.graphOverwrite) {
|
|
||||||
this.clearGraph(engine);
|
|
||||||
this.render(engine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onSettingsUpdate() {
|
|
||||||
if (this.oldGraphOverwrite != this.plugin.settings.graphOverwrite) {
|
|
||||||
this.redrawAllGraphs();
|
|
||||||
this.oldGraphOverwrite = this.plugin.settings.graphOverwrite;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
load() {
|
|
||||||
this.oldGraphOverwrite = this.plugin.settings.graphOverwrite;
|
|
||||||
this.plugin.eventManager.on("onLayoutChange", this.onLayoutChange.bind(this));
|
|
||||||
this.plugin.eventManager.on("graphLeafUpdate", this.onLeafUpdate.bind(this));
|
|
||||||
this.plugin.eventManager.on("settingsUpdate", this.onSettingsUpdate.bind(this));
|
|
||||||
this.onLayoutChange();
|
|
||||||
if (this.plugin.settings.graphOverwrite) {
|
|
||||||
this.clearAllGraphs();
|
|
||||||
this.redrawAllGraphs();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unload() {
|
|
||||||
this.graphsLeafs.forEach((value) => {
|
|
||||||
const engine = this.getEngine(value);
|
|
||||||
if (engine.oldRender != null) {
|
|
||||||
engine.render = engine.oldRender;
|
|
||||||
delete engine.oldRender;
|
|
||||||
this.clearGraph(engine);
|
|
||||||
engine.render();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
render(engine) {
|
|
||||||
const renderSettings = engine.getOptions();
|
|
||||||
const graph = {};
|
|
||||||
this.app.vault.getFiles().forEach((file) => __async(this, null, function* () {
|
|
||||||
if (Object.keys(engine.fileFilter).length > 0 && !engine.fileFilter[file.path]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const edges = {};
|
|
||||||
const cache = this.app.metadataCache.getFileCache(file);
|
|
||||||
if (file.parent.name + ".md" == file.name || file.name == this.plugin.settings.rootIndexFile) {
|
|
||||||
file.parent.children.forEach((otherFile) => {
|
|
||||||
if (otherFile instanceof import_obsidian2.TFile && file.path != otherFile.path) {
|
|
||||||
edges[otherFile.path] = true;
|
|
||||||
}
|
|
||||||
if (otherFile instanceof import_obsidian2.TFolder) {
|
|
||||||
const subIndex = otherFile.children.find((value) => value.name == otherFile.name + ".md");
|
|
||||||
if (subIndex != null) {
|
|
||||||
edges[subIndex.path] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (cache != null) {
|
|
||||||
if (cache.links != null) {
|
|
||||||
cache.links.forEach((link) => {
|
|
||||||
if (link.link.contains("#")) {
|
|
||||||
link.link = link.link.split(/#/)[0];
|
|
||||||
}
|
|
||||||
const linkedFile = this.app.metadataCache.getFirstLinkpathDest(link.link, file.path);
|
|
||||||
if (linkedFile == null) {
|
|
||||||
edges[link.link] = true;
|
|
||||||
if (!renderSettings.hideUnresolved) {
|
|
||||||
graph[link.link] = {
|
|
||||||
links: {},
|
|
||||||
type: "unresolved"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
edges[linkedFile.path] = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (cache.frontmatter != null) {
|
|
||||||
const frontMatterTags = (0, import_obsidian2.parseFrontMatterTags)(cache.frontmatter);
|
|
||||||
if (frontMatterTags != null && renderSettings.showTags == true) {
|
|
||||||
frontMatterTags.forEach((tag) => {
|
|
||||||
graph[tag] = {
|
|
||||||
links: {},
|
|
||||||
type: "tag"
|
|
||||||
};
|
|
||||||
edges[tag] = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cache.tags != null && renderSettings.showTags == true) {
|
|
||||||
cache.tags.forEach((tag) => {
|
|
||||||
graph[tag.tag] = {
|
|
||||||
links: {},
|
|
||||||
type: "tag"
|
|
||||||
};
|
|
||||||
edges[tag.tag] = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (cache.embeds != null) {
|
|
||||||
cache.embeds.forEach((embed) => {
|
|
||||||
const linkedFile = this.app.metadataCache.getFirstLinkpathDest(embed.link, file.path);
|
|
||||||
if (linkedFile == null) {
|
|
||||||
edges[embed.link] = true;
|
|
||||||
graph[embed.link] = {
|
|
||||||
links: {},
|
|
||||||
type: "unresolved"
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
edges[linkedFile.path] = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let type = "";
|
|
||||||
if (this.app.workspace.getActiveFile() != null && this.app.workspace.getActiveFile().path == file.path) {
|
|
||||||
type = "focused";
|
|
||||||
} else if (file.extension != "md") {
|
|
||||||
type = "attachment";
|
|
||||||
}
|
|
||||||
if (type == "attachment" && !renderSettings.showAttachments) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
graph[file.path] = {
|
|
||||||
links: edges,
|
|
||||||
type
|
|
||||||
};
|
|
||||||
}));
|
|
||||||
if (!renderSettings.showOrphans) {
|
|
||||||
let allLinks = [];
|
|
||||||
for (const graphKey in graph) {
|
|
||||||
if (Object.keys(graph[graphKey]["links"]).length > 0) {
|
|
||||||
allLinks.push(graphKey);
|
|
||||||
}
|
|
||||||
allLinks = allLinks.concat(Object.keys(graph[graphKey]["links"]));
|
|
||||||
}
|
|
||||||
for (const graphKey in graph) {
|
|
||||||
if (!allLinks.includes(graphKey)) {
|
|
||||||
delete graph[graphKey];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function AddColorTag(filePath, nodeType) {
|
|
||||||
const searchQueries = engine.searchQueries;
|
|
||||||
const engineOptions = engine.options;
|
|
||||||
const fileFilter = engine.fileFilter;
|
|
||||||
return !searchQueries || (nodeType === "" ? filePath === engineOptions.localFile || (fileFilter.hasOwnProperty(filePath) ? fileFilter[filePath] : !engine.hasFilter) : nodeType === "tag" ? searchQueries.every(function(e) {
|
|
||||||
return !!e.color || !!e.query.matchTag(filePath);
|
|
||||||
}) : nodeType !== "attachment" || searchQueries.every(function(e) {
|
|
||||||
return !!e.color || !!e.query.matchFilepath(filePath);
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
for (const graphKey in graph) {
|
|
||||||
const returnValue = AddColorTag(graphKey, graph[graphKey].type);
|
|
||||||
if (returnValue === true)
|
|
||||||
continue;
|
|
||||||
graph[graphKey].color = returnValue;
|
|
||||||
}
|
|
||||||
engine.renderer.setData({
|
|
||||||
nodes: graph
|
|
||||||
});
|
|
||||||
}
|
|
||||||
redrawAllGraphs() {
|
|
||||||
this.clearAllGraphs();
|
|
||||||
this.graphsLeafs.forEach((value) => this.getEngine(value).render());
|
|
||||||
}
|
|
||||||
clearAllGraphs() {
|
|
||||||
this.graphsLeafs.forEach((value) => this.getEngine(value).renderer.setData({
|
|
||||||
nodes: {}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
getEngine(leaf) {
|
|
||||||
return leaf.view.dataEngine;
|
|
||||||
}
|
|
||||||
clearGraph(engine) {
|
|
||||||
engine.renderer.setData({
|
|
||||||
nodes: {}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// src/main.ts
|
|
||||||
var import_events = __toModule(require("events"));
|
|
||||||
|
|
||||||
// src/models/PluginSettingsTab.ts
|
|
||||||
var import_obsidian3 = __toModule(require("obsidian"));
|
|
||||||
var DEFAULT_SETTINGS = {
|
|
||||||
skipFirstHeadline: true,
|
|
||||||
disableHeadlines: false,
|
|
||||||
graphOverwrite: false,
|
|
||||||
rootIndexFile: "Dashboard.md",
|
|
||||||
autoCreateIndexFile: true,
|
|
||||||
autoRenameIndexFile: true,
|
|
||||||
hideIndexFiles: false,
|
|
||||||
indexFileInitText: "```folder-index-content\n```"
|
|
||||||
};
|
|
||||||
var PluginSettingsTab = class extends import_obsidian3.PluginSettingTab {
|
|
||||||
constructor(app, plugin) {
|
|
||||||
super(app, plugin);
|
|
||||||
this.plugin = plugin;
|
|
||||||
}
|
|
||||||
display() {
|
|
||||||
const { containerEl } = this;
|
|
||||||
containerEl.empty();
|
|
||||||
containerEl.createEl("h2", { text: "Graph Settings" });
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Overwrite Graph View").setDesc("This will overwrite the default graph view and link files based on their index as well as their normal links").addToggle((component) => component.setValue(this.plugin.settings.graphOverwrite).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.graphOverwrite = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})));
|
|
||||||
containerEl.createEl("h2", { text: "Index File Settings" });
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Root Index File").setDesc("The File that is used for the Root Index File").addText((component) => component.setValue(this.plugin.settings.rootIndexFile).setPlaceholder("dashboard.md").onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.rootIndexFile = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})));
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Initial Content").setDesc("Set the initial content for new folder indexes.").addTextArea((component) => {
|
|
||||||
component.setPlaceholder("About the folder.").setValue(this.plugin.settings.indexFileInitText).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.indexFileInitText = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
}));
|
|
||||||
component.inputEl.rows = 8;
|
|
||||||
component.inputEl.cols = 50;
|
|
||||||
});
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Auto create IndexFile").setDesc("This will automatically create an IndexFile when you create a new folder").addToggle((component) => component.setValue(this.plugin.settings.autoCreateIndexFile).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.autoCreateIndexFile = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})));
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Automatically Rename IndexFile").setDesc("This will automatically rename the folders index file as you rename folders").addToggle((component) => component.setValue(this.plugin.settings.autoRenameIndexFile).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.autoRenameIndexFile = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})));
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Hide IndexFile").setDesc("This will hide IndexFiles from the file explorer (Disabled as it causes bugs right now)").addToggle((component) => component.setValue(this.plugin.settings.hideIndexFiles).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.hideIndexFiles = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})).setDisabled(true));
|
|
||||||
containerEl.createEl("h2", { text: "Content Renderer Settings" });
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Skip First Headline").setDesc("This will skip the first h1 header to prevent duplicate entries.").addToggle((component) => component.setValue(this.plugin.settings.skipFirstHeadline).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.skipFirstHeadline = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})));
|
|
||||||
new import_obsidian3.Setting(containerEl).setName("Disable Headlines").setDesc("This will disable listing headlines within the index file").addToggle((component) => component.setValue(this.plugin.settings.disableHeadlines).onChange((value) => __async(this, null, function* () {
|
|
||||||
this.plugin.settings.disableHeadlines = value;
|
|
||||||
yield this.plugin.saveSettings();
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// src/modules/FolderNoteModule.ts
|
|
||||||
var import_obsidian4 = __toModule(require("obsidian"));
|
|
||||||
var FolderNoteModule = class {
|
|
||||||
constructor(app, plugin) {
|
|
||||||
this.app = app;
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.load();
|
|
||||||
}
|
|
||||||
load() {
|
|
||||||
this.app.workspace.onLayoutReady(() => {
|
|
||||||
this.plugin.registerEvent(this.app.vault.on("create", this.onFileCreate.bind(this)));
|
|
||||||
});
|
|
||||||
this.plugin.registerEvent(this.app.vault.on("rename", this.onFileRename.bind(this)));
|
|
||||||
this.plugin.eventManager.on("fileExplorerFolderClick", this.onFolderClick.bind(this));
|
|
||||||
this.plugin.eventManager.on("settingsUpdate", this.onSettingsUpdate.bind(this));
|
|
||||||
this.plugin.registerDomEvent(document, "click", (evt) => {
|
|
||||||
let folderPath = "";
|
|
||||||
let folderName = "";
|
|
||||||
if (!(evt.target instanceof HTMLElement)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const elemTarget = evt.target;
|
|
||||||
let folderElem = elemTarget;
|
|
||||||
const className = elemTarget.className.toString();
|
|
||||||
if (elemTarget.parentElement.className.contains("mod-root"))
|
|
||||||
return;
|
|
||||||
if (elemTarget.parentElement.parentElement.className.contains("mod-root"))
|
|
||||||
return;
|
|
||||||
if (className.contains("nav-folder-title-content")) {
|
|
||||||
folderName = folderElem.getText();
|
|
||||||
folderElem = elemTarget.parentElement;
|
|
||||||
folderPath = folderElem.attributes.getNamedItem("data-path").textContent;
|
|
||||||
this.plugin.eventManager.emit("fileExplorerFolderClick", elemTarget, folderPath, folderName);
|
|
||||||
} else if (className.contains("nav-folder-title")) {
|
|
||||||
folderPath = elemTarget.attributes.getNamedItem("data-path").textContent;
|
|
||||||
folderName = elemTarget.lastElementChild.getText();
|
|
||||||
this.plugin.eventManager.emit("fileExplorerFolderClick", elemTarget, folderPath, folderName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (this.plugin.settings.hideIndexFiles) {
|
|
||||||
FolderNoteModule.hideAllIndexFiles();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unload() {
|
|
||||||
this.plugin.eventManager.off("fileExplorerFolderClick", this.onFolderClick.bind(this));
|
|
||||||
FolderNoteModule.showAllIndexFiles();
|
|
||||||
}
|
|
||||||
onSettingsUpdate(settings) {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
if (!this.plugin.settings.hideIndexFiles) {
|
|
||||||
FolderNoteModule.showAllIndexFiles();
|
|
||||||
} else {
|
|
||||||
FolderNoteModule.hideAllIndexFiles();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static hideAllIndexFiles() {
|
|
||||||
const modRoot = document.getElementsByClassName("nav-folder mod-root")[0];
|
|
||||||
const allFiles = modRoot.getElementsByClassName("nav-file");
|
|
||||||
for (let i = allFiles.length - 1; i >= 0; i--) {
|
|
||||||
const file = allFiles[i];
|
|
||||||
const dataPath = file.getElementsByClassName("nav-file-title")[0].getAttribute("data-path");
|
|
||||||
const pathParts = dataPath.split(/\//);
|
|
||||||
const parentFolder = pathParts.at(-2);
|
|
||||||
if (parentFolder + ".md" == pathParts.at(-1)) {
|
|
||||||
file.addClass("hide-index-folder-note");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static showAllIndexFiles() {
|
|
||||||
}
|
|
||||||
onFolderClick(target, path, name) {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
console.log("Path: " + path + " | Name: " + name);
|
|
||||||
let indexFile = this.app.vault.getAbstractFileByPath(path + "/" + name + ".md");
|
|
||||||
if (indexFile != null) {
|
|
||||||
yield this.app.workspace.getLeaf().openFile(indexFile);
|
|
||||||
} else if (this.plugin.settings.autoCreateIndexFile) {
|
|
||||||
indexFile = yield this.createIndexFile(path, name);
|
|
||||||
new import_obsidian4.Notice("Created IndexFile for: " + name);
|
|
||||||
yield this.app.workspace.getLeaf().openFile(indexFile);
|
|
||||||
}
|
|
||||||
if (this.plugin.settings.hideIndexFiles) {
|
|
||||||
FolderNoteModule.hideAllIndexFiles();
|
|
||||||
} else {
|
|
||||||
FolderNoteModule.showAllIndexFiles();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
createIndexFile(path, name) {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
return yield this.app.vault.create(`${path}/${name}.md`, this.plugin.settings.indexFileInitText);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onFileCreate(file) {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
if (file instanceof import_obsidian4.TFolder) {
|
|
||||||
if (this.plugin.settings.autoCreateIndexFile) {
|
|
||||||
yield this.createIndexFile(file.path, file.name);
|
|
||||||
new import_obsidian4.Notice("Created IndexFile for: " + file.name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onFileRename(file, oldPath) {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
if (file instanceof import_obsidian4.TFolder && this.plugin.settings.autoRenameIndexFile) {
|
|
||||||
const indexFile = file.children.find((value) => {
|
|
||||||
return value instanceof import_obsidian4.TFile && value.basename == oldPath.split(/\//).last();
|
|
||||||
});
|
|
||||||
if (indexFile == null) {
|
|
||||||
if (this.plugin.settings.autoCreateIndexFile) {
|
|
||||||
yield this.createIndexFile(file.path, file.name + ".md");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (indexFile.basename == file.name) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
indexFile.path = file.path + "/" + indexFile.name;
|
|
||||||
const newFilePath = file.path + "/" + file.name + "." + indexFile.extension;
|
|
||||||
const conflictingFile = file.children.find((value) => {
|
|
||||||
return value instanceof import_obsidian4.TFile && value.basename == file.name;
|
|
||||||
});
|
|
||||||
if (conflictingFile != null) {
|
|
||||||
new import_obsidian4.Notice(`Could not Automatically rename IndexFile because there already is a file with this name! This file will now be used!`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
yield this.app.fileManager.renameFile(indexFile, newFilePath);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// src/main.ts
|
|
||||||
var FolderIndexPlugin = class extends import_obsidian5.Plugin {
|
|
||||||
constructor() {
|
|
||||||
super(...arguments);
|
|
||||||
this.oldGraphSetting = false;
|
|
||||||
}
|
|
||||||
onload() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
console.log("Loading FolderTableContent");
|
|
||||||
this.eventManager = new import_events.EventEmitter();
|
|
||||||
yield this.loadSettings();
|
|
||||||
this.settings.hideIndexFiles = false;
|
|
||||||
yield this.saveSettings();
|
|
||||||
this.oldGraphSetting = this.settings.graphOverwrite;
|
|
||||||
this.addSettingTab(new PluginSettingsTab(this.app, this));
|
|
||||||
this.app.workspace.onLayoutReady(this.onLayoutReady.bind(this));
|
|
||||||
this.registerEvent(this.app.workspace.on("layout-change", this.onLayoutChange.bind(this)));
|
|
||||||
this.eventManager.on("settingsUpdate", this.onSettingsUpdate.bind(this));
|
|
||||||
this.registerMarkdownCodeBlockProcessor("folder-index-content", (source, el, ctx) => {
|
|
||||||
ctx.addChild(new IndexContentRenderer(this.app, this, ctx.sourcePath, el));
|
|
||||||
});
|
|
||||||
this.folderNodeModule = new FolderNoteModule(this.app, this);
|
|
||||||
if (this.settings.graphOverwrite) {
|
|
||||||
this.graphManipulator = new GraphManipulatorModule(this.app, this);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onSettingsUpdate() {
|
|
||||||
if (this.settings.graphOverwrite != this.oldGraphSetting) {
|
|
||||||
if (this.settings.graphOverwrite) {
|
|
||||||
this.graphManipulator = new GraphManipulatorModule(this.app, this);
|
|
||||||
} else {
|
|
||||||
this.graphManipulator.unload();
|
|
||||||
}
|
|
||||||
this.oldGraphSetting = this.settings.graphOverwrite;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onLayoutChange() {
|
|
||||||
this.eventManager.emit("onLayoutChange");
|
|
||||||
}
|
|
||||||
onLayoutReady() {
|
|
||||||
this.eventManager.emit("onLayoutReady");
|
|
||||||
}
|
|
||||||
onunload() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
console.log("Unloading FolderTableContent");
|
|
||||||
this.eventManager.removeAllListeners();
|
|
||||||
if (this.graphManipulator != null) {
|
|
||||||
this.graphManipulator.unload();
|
|
||||||
}
|
|
||||||
this.folderNodeModule.unload();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
loadSettings() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
saveSettings() {
|
|
||||||
return __async(this, null, function* () {
|
|
||||||
yield this.saveData(this.settings);
|
|
||||||
this.eventManager.emit("settingsUpdate", this.settings);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-folder-index",
|
|
||||||
"name": "Folder Index",
|
|
||||||
"version": "v1.0.4",
|
|
||||||
"minAppVersion": "0.12.0",
|
|
||||||
"description": "This Plugin will automatically generate a TOC for the current Folder.",
|
|
||||||
"author": "turulix",
|
|
||||||
"authorUrl": "https://turulix.de/",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
/*Idk maybe this fixes it?*/
|
|
||||||
div.hide-index-folder-note {
|
|
||||||
display: none;
|
|
||||||
}
|
|
6
.obsidian/plugins/obsidian-git/data.json
vendored
6
.obsidian/plugins/obsidian-git/data.json
vendored
@ -2,9 +2,9 @@
|
|||||||
"commitMessage": "vault backup: {{date}}",
|
"commitMessage": "vault backup: {{date}}",
|
||||||
"autoCommitMessage": "vault auto-backup: {{date}}",
|
"autoCommitMessage": "vault auto-backup: {{date}}",
|
||||||
"commitDateFormat": "DD.MM.YYYY - HH:mm:ss",
|
"commitDateFormat": "DD.MM.YYYY - HH:mm:ss",
|
||||||
"autoSaveInterval": 3,
|
"autoSaveInterval": 15,
|
||||||
"autoPushInterval": 10,
|
"autoPushInterval": 0,
|
||||||
"autoPullInterval": 5,
|
"autoPullInterval": 0,
|
||||||
"autoPullOnBoot": true,
|
"autoPullOnBoot": true,
|
||||||
"disablePush": false,
|
"disablePush": false,
|
||||||
"pullBeforePush": true,
|
"pullBeforePush": true,
|
||||||
|
26325
.obsidian/plugins/obsidian-icons-plugin/main.js
vendored
Normal file
26325
.obsidian/plugins/obsidian-icons-plugin/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-icons-plugin/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-icons-plugin/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-icons-plugin",
|
||||||
|
"name": "Icons",
|
||||||
|
"version": "0.3.0",
|
||||||
|
"minAppVersion": "0.10.7",
|
||||||
|
"description": "Add icons to your Obsidian notes.",
|
||||||
|
"author": "Camillo Visini",
|
||||||
|
"authorUrl": "https://github.com/visini",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
16
.obsidian/plugins/obsidian-icons-plugin/styles.css
vendored
Normal file
16
.obsidian/plugins/obsidian-icons-plugin/styles.css
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
.obsidian-icon {
|
||||||
|
font-size: inherit;
|
||||||
|
display: inline-block;
|
||||||
|
width: 2rem !important;
|
||||||
|
text-align: center;
|
||||||
|
/* margin-right: -0.5rem !important; */
|
||||||
|
}
|
||||||
|
|
||||||
|
p .obsidian-icon {
|
||||||
|
width: 1.75rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-icon.react-icon > svg {
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
"viewImageInCPB": true,
|
"viewImageInCPB": true,
|
||||||
"viewImageWithALink": true,
|
"viewImageWithALink": true,
|
||||||
"viewImageOther": true,
|
"viewImageOther": true,
|
||||||
"pinMode": true,
|
"pinMode": false,
|
||||||
"pinMaximum": 3,
|
"pinMaximum": 3,
|
||||||
"pinCoverMode": true,
|
"pinCoverMode": true,
|
||||||
"imageMoveSpeed": 10,
|
"imageMoveSpeed": 10,
|
||||||
|
15
.obsidian/plugins/obsidian-pandoc/data.json
vendored
Normal file
15
.obsidian/plugins/obsidian-pandoc/data.json
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"showCLICommands": false,
|
||||||
|
"addExtensionsToInternalLinks": "html",
|
||||||
|
"injectAppCSS": "current",
|
||||||
|
"injectThemeCSS": false,
|
||||||
|
"customCSSFile": null,
|
||||||
|
"displayYAMLFrontmatter": false,
|
||||||
|
"linkStrippingBehaviour": "link",
|
||||||
|
"highDPIDiagrams": true,
|
||||||
|
"pandoc": null,
|
||||||
|
"pdflatex": null,
|
||||||
|
"outputFolder": null,
|
||||||
|
"extraArguments": "",
|
||||||
|
"exportFrom": "md"
|
||||||
|
}
|
11327
.obsidian/plugins/obsidian-pandoc/main.js
vendored
Normal file
11327
.obsidian/plugins/obsidian-pandoc/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-pandoc/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-pandoc/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-pandoc",
|
||||||
|
"name": "Pandoc Plugin",
|
||||||
|
"version": "0.2.5",
|
||||||
|
"minAppVersion": "0.12.5",
|
||||||
|
"description": "This is a Pandoc export plugin for Obsidian. It provides commands to export to formats like DOCX, ePub and PDF.",
|
||||||
|
"author": "Oliver Balfour",
|
||||||
|
"authorUrl": "https://github.com/OliverBalfour/obsidian-pandoc",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
4
.obsidian/plugins/obsidian-pandoc/styles.css
vendored
Normal file
4
.obsidian/plugins/obsidian-pandoc/styles.css
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
.pandoc-plugin-error {
|
||||||
|
color: red;
|
||||||
|
}
|
5
.obsidian/plugins/obsidian-reading-time/data.json
vendored
Normal file
5
.obsidian/plugins/obsidian-reading-time/data.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"readingSpeed": 200,
|
||||||
|
"format": "simple",
|
||||||
|
"appendText": "to read"
|
||||||
|
}
|
365
.obsidian/plugins/obsidian-reading-time/main.js
vendored
Normal file
365
.obsidian/plugins/obsidian-reading-time/main.js
vendored
Normal file
@ -0,0 +1,365 @@
|
|||||||
|
/*
|
||||||
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||||
|
if you want to view the source, please visit the github repository of this plugin
|
||||||
|
*/
|
||||||
|
|
||||||
|
var __create = Object.create;
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
||||||
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
|
return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
|
};
|
||||||
|
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());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// node_modules/parse-ms/index.js
|
||||||
|
var require_parse_ms = __commonJS({
|
||||||
|
"node_modules/parse-ms/index.js"(exports, module2) {
|
||||||
|
"use strict";
|
||||||
|
module2.exports = (milliseconds) => {
|
||||||
|
if (typeof milliseconds !== "number") {
|
||||||
|
throw new TypeError("Expected a number");
|
||||||
|
}
|
||||||
|
const roundTowardsZero = milliseconds > 0 ? Math.floor : Math.ceil;
|
||||||
|
return {
|
||||||
|
days: roundTowardsZero(milliseconds / 864e5),
|
||||||
|
hours: roundTowardsZero(milliseconds / 36e5) % 24,
|
||||||
|
minutes: roundTowardsZero(milliseconds / 6e4) % 60,
|
||||||
|
seconds: roundTowardsZero(milliseconds / 1e3) % 60,
|
||||||
|
milliseconds: roundTowardsZero(milliseconds) % 1e3,
|
||||||
|
microseconds: roundTowardsZero(milliseconds * 1e3) % 1e3,
|
||||||
|
nanoseconds: roundTowardsZero(milliseconds * 1e6) % 1e3
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// node_modules/pretty-ms/index.js
|
||||||
|
var require_pretty_ms = __commonJS({
|
||||||
|
"node_modules/pretty-ms/index.js"(exports, module2) {
|
||||||
|
"use strict";
|
||||||
|
var parseMilliseconds = require_parse_ms();
|
||||||
|
var pluralize = (word, count) => count === 1 ? word : `${word}s`;
|
||||||
|
var SECOND_ROUNDING_EPSILON = 1e-7;
|
||||||
|
module2.exports = (milliseconds, options = {}) => {
|
||||||
|
if (!Number.isFinite(milliseconds)) {
|
||||||
|
throw new TypeError("Expected a finite number");
|
||||||
|
}
|
||||||
|
if (options.colonNotation) {
|
||||||
|
options.compact = false;
|
||||||
|
options.formatSubMilliseconds = false;
|
||||||
|
options.separateMilliseconds = false;
|
||||||
|
options.verbose = false;
|
||||||
|
}
|
||||||
|
if (options.compact) {
|
||||||
|
options.secondsDecimalDigits = 0;
|
||||||
|
options.millisecondsDecimalDigits = 0;
|
||||||
|
}
|
||||||
|
const result = [];
|
||||||
|
const floorDecimals = (value, decimalDigits) => {
|
||||||
|
const flooredInterimValue = Math.floor(value * 10 ** decimalDigits + SECOND_ROUNDING_EPSILON);
|
||||||
|
const flooredValue = Math.round(flooredInterimValue) / 10 ** decimalDigits;
|
||||||
|
return flooredValue.toFixed(decimalDigits);
|
||||||
|
};
|
||||||
|
const add = (value, long, short, valueString) => {
|
||||||
|
if ((result.length === 0 || !options.colonNotation) && value === 0 && !(options.colonNotation && short === "m")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
valueString = (valueString || value || "0").toString();
|
||||||
|
let prefix;
|
||||||
|
let suffix;
|
||||||
|
if (options.colonNotation) {
|
||||||
|
prefix = result.length > 0 ? ":" : "";
|
||||||
|
suffix = "";
|
||||||
|
const wholeDigits = valueString.includes(".") ? valueString.split(".")[0].length : valueString.length;
|
||||||
|
const minLength = result.length > 0 ? 2 : 1;
|
||||||
|
valueString = "0".repeat(Math.max(0, minLength - wholeDigits)) + valueString;
|
||||||
|
} else {
|
||||||
|
prefix = "";
|
||||||
|
suffix = options.verbose ? " " + pluralize(long, value) : short;
|
||||||
|
}
|
||||||
|
result.push(prefix + valueString + suffix);
|
||||||
|
};
|
||||||
|
const parsed = parseMilliseconds(milliseconds);
|
||||||
|
add(Math.trunc(parsed.days / 365), "year", "y");
|
||||||
|
add(parsed.days % 365, "day", "d");
|
||||||
|
add(parsed.hours, "hour", "h");
|
||||||
|
add(parsed.minutes, "minute", "m");
|
||||||
|
if (options.separateMilliseconds || options.formatSubMilliseconds || !options.colonNotation && milliseconds < 1e3) {
|
||||||
|
add(parsed.seconds, "second", "s");
|
||||||
|
if (options.formatSubMilliseconds) {
|
||||||
|
add(parsed.milliseconds, "millisecond", "ms");
|
||||||
|
add(parsed.microseconds, "microsecond", "\xB5s");
|
||||||
|
add(parsed.nanoseconds, "nanosecond", "ns");
|
||||||
|
} else {
|
||||||
|
const millisecondsAndBelow = parsed.milliseconds + parsed.microseconds / 1e3 + parsed.nanoseconds / 1e6;
|
||||||
|
const millisecondsDecimalDigits = typeof options.millisecondsDecimalDigits === "number" ? options.millisecondsDecimalDigits : 0;
|
||||||
|
const roundedMiliseconds = millisecondsAndBelow >= 1 ? Math.round(millisecondsAndBelow) : Math.ceil(millisecondsAndBelow);
|
||||||
|
const millisecondsString = millisecondsDecimalDigits ? millisecondsAndBelow.toFixed(millisecondsDecimalDigits) : roundedMiliseconds;
|
||||||
|
add(Number.parseFloat(millisecondsString, 10), "millisecond", "ms", millisecondsString);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const seconds = milliseconds / 1e3 % 60;
|
||||||
|
const secondsDecimalDigits = typeof options.secondsDecimalDigits === "number" ? options.secondsDecimalDigits : 1;
|
||||||
|
const secondsFixed = floorDecimals(seconds, secondsDecimalDigits);
|
||||||
|
const secondsString = options.keepDecimalsOnWholeSeconds ? secondsFixed : secondsFixed.replace(/\.0+$/, "");
|
||||||
|
add(Number.parseFloat(secondsString, 10), "second", "s", secondsString);
|
||||||
|
}
|
||||||
|
if (result.length === 0) {
|
||||||
|
return "0" + (options.verbose ? " milliseconds" : "ms");
|
||||||
|
}
|
||||||
|
if (options.compact) {
|
||||||
|
return result[0];
|
||||||
|
}
|
||||||
|
if (typeof options.unitCount === "number") {
|
||||||
|
const separator = options.colonNotation ? "" : " ";
|
||||||
|
return result.slice(0, Math.max(options.unitCount, 1)).join(separator);
|
||||||
|
}
|
||||||
|
return options.colonNotation ? result.join("") : result.join(" ");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// node_modules/reading-time/lib/reading-time.js
|
||||||
|
var require_reading_time = __commonJS({
|
||||||
|
"node_modules/reading-time/lib/reading-time.js"(exports, module2) {
|
||||||
|
"use strict";
|
||||||
|
function codeIsInRanges(number, arrayOfRanges) {
|
||||||
|
return arrayOfRanges.some(([lowerBound, upperBound]) => lowerBound <= number && number <= upperBound);
|
||||||
|
}
|
||||||
|
function isCJK(c) {
|
||||||
|
if (typeof c !== "string") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const charCode = c.charCodeAt(0);
|
||||||
|
return codeIsInRanges(charCode, [
|
||||||
|
[12352, 12447],
|
||||||
|
[19968, 40959],
|
||||||
|
[44032, 55203],
|
||||||
|
[131072, 191456]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
function isAnsiWordBound(c) {
|
||||||
|
return " \n\r ".includes(c);
|
||||||
|
}
|
||||||
|
function isPunctuation(c) {
|
||||||
|
if (typeof c !== "string") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const charCode = c.charCodeAt(0);
|
||||||
|
return codeIsInRanges(charCode, [
|
||||||
|
[33, 47],
|
||||||
|
[58, 64],
|
||||||
|
[91, 96],
|
||||||
|
[123, 126],
|
||||||
|
[12288, 12351],
|
||||||
|
[65280, 65519]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
function readingTime2(text, options = {}) {
|
||||||
|
let words = 0, start = 0, end = text.length - 1;
|
||||||
|
const wordsPerMinute = options.wordsPerMinute || 200;
|
||||||
|
const isWordBound = options.wordBound || isAnsiWordBound;
|
||||||
|
while (isWordBound(text[start]))
|
||||||
|
start++;
|
||||||
|
while (isWordBound(text[end]))
|
||||||
|
end--;
|
||||||
|
const normalizedText = `${text}
|
||||||
|
`;
|
||||||
|
for (let i = start; i <= end; i++) {
|
||||||
|
if (isCJK(normalizedText[i]) || !isWordBound(normalizedText[i]) && (isWordBound(normalizedText[i + 1]) || isCJK(normalizedText[i + 1]))) {
|
||||||
|
words++;
|
||||||
|
}
|
||||||
|
if (isCJK(normalizedText[i])) {
|
||||||
|
while (i <= end && (isPunctuation(normalizedText[i + 1]) || isWordBound(normalizedText[i + 1]))) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const minutes = words / wordsPerMinute;
|
||||||
|
const time = Math.round(minutes * 60 * 1e3);
|
||||||
|
const displayed = Math.ceil(minutes.toFixed(2));
|
||||||
|
return {
|
||||||
|
text: displayed + " min read",
|
||||||
|
minutes,
|
||||||
|
time,
|
||||||
|
words
|
||||||
|
};
|
||||||
|
}
|
||||||
|
module2.exports = readingTime2;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
__export(exports, {
|
||||||
|
default: () => ReadingTime
|
||||||
|
});
|
||||||
|
var import_obsidian2 = __toModule(require("obsidian"));
|
||||||
|
|
||||||
|
// src/settings.ts
|
||||||
|
var import_obsidian = __toModule(require("obsidian"));
|
||||||
|
var RT_DEFAULT_SETTINGS = {
|
||||||
|
readingSpeed: 200,
|
||||||
|
format: "default",
|
||||||
|
appendText: "read"
|
||||||
|
};
|
||||||
|
var ReadingTimeSettingsTab = class extends import_obsidian.PluginSettingTab {
|
||||||
|
constructor(app, plugin) {
|
||||||
|
super(app, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
const { containerEl } = this;
|
||||||
|
containerEl.empty();
|
||||||
|
new import_obsidian.Setting(containerEl).setName("Reading speed").setDesc("Words per minute used for reading speed (default: 200).").addText((text) => {
|
||||||
|
text.setPlaceholder("Example: 200").setValue(this.plugin.settings.readingSpeed.toString()).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.readingSpeed = parseInt(value.trim());
|
||||||
|
yield this.plugin.saveSettings().then(this.plugin.calculateReadingTime);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
new import_obsidian.Setting(this.containerEl).setName("Format").setDesc("Choose the output format").addDropdown((dropdown) => dropdown.addOption("default", "Default (10 min)").addOption("compact", "Compact (10m)").addOption("simple", "Simple (10m 4s)").addOption("verbose", "Verbose (10 minutes 4 seconds)").addOption("digital", "Colon Notation (10:04)").setValue(this.plugin.settings.format).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.format = value;
|
||||||
|
yield this.plugin.saveSettings().then(this.plugin.calculateReadingTime);
|
||||||
|
})));
|
||||||
|
new import_obsidian.Setting(this.containerEl).setName("Append Text").setDesc("Append 'read' to formatted string.").addText((text) => text.setValue(this.plugin.settings.appendText).onChange((value) => __async(this, null, function* () {
|
||||||
|
this.plugin.settings.appendText = value.trim();
|
||||||
|
yield this.plugin.saveSettings().then(this.plugin.calculateReadingTime);
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/helpers.ts
|
||||||
|
var import_pretty_ms = __toModule(require_pretty_ms());
|
||||||
|
var ReadTime = require_reading_time();
|
||||||
|
function readingTimeText(text, plugin) {
|
||||||
|
const result = ReadTime(text, {
|
||||||
|
wordsPerMinute: plugin.settings.readingSpeed
|
||||||
|
});
|
||||||
|
let options = {
|
||||||
|
secondsDecimalDigits: 0
|
||||||
|
};
|
||||||
|
switch (plugin.settings.format) {
|
||||||
|
case "simple":
|
||||||
|
break;
|
||||||
|
case "compact":
|
||||||
|
if (result.time > 36e5) {
|
||||||
|
options.unitCount = 2;
|
||||||
|
} else {
|
||||||
|
options.compact = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "verbose":
|
||||||
|
options.verbose = true;
|
||||||
|
break;
|
||||||
|
case "digital":
|
||||||
|
options.colonNotation = true;
|
||||||
|
break;
|
||||||
|
case "default":
|
||||||
|
return plugin.settings.appendText ? result.text : result.text.replace(" read", "");
|
||||||
|
}
|
||||||
|
let output = (0, import_pretty_ms.default)(result.time, options);
|
||||||
|
return plugin.settings.appendText ? `${output} ${plugin.settings.appendText}` : output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var ReadingTime = class extends import_obsidian2.Plugin {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
this.calculateReadingTime = () => {
|
||||||
|
const mdView = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
|
||||||
|
if (mdView && mdView.getViewData()) {
|
||||||
|
const result = readingTimeText(mdView.getViewData(), this);
|
||||||
|
this.statusBar.setText(`${result}`);
|
||||||
|
} else {
|
||||||
|
this.statusBar.setText("0 min read");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
onload() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
yield this.loadSettings();
|
||||||
|
this.statusBar = this.addStatusBarItem();
|
||||||
|
this.statusBar.setText("");
|
||||||
|
this.addSettingTab(new ReadingTimeSettingsTab(this.app, this));
|
||||||
|
this.addCommand({
|
||||||
|
id: "reading-time-editor-command",
|
||||||
|
name: "Selected Text",
|
||||||
|
editorCallback: (editor, view) => {
|
||||||
|
new ReadingTimeModal(this.app, editor, this).open();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.registerEvent(this.app.workspace.on("file-open", this.calculateReadingTime));
|
||||||
|
this.registerEvent(this.app.workspace.on("editor-change", (0, import_obsidian2.debounce)(this.calculateReadingTime, 1e3)));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
loadSettings() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
this.settings = Object.assign({}, RT_DEFAULT_SETTINGS, yield this.loadData());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
saveSettings() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
|
yield this.saveData(this.settings);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var ReadingTimeModal = class extends import_obsidian2.Modal {
|
||||||
|
constructor(app, editor, plugin) {
|
||||||
|
super(app);
|
||||||
|
this.editor = editor;
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
onOpen() {
|
||||||
|
const { contentEl, titleEl } = this;
|
||||||
|
titleEl.setText("Reading Time of Selected Text");
|
||||||
|
const stats = readingTime(this.editor.getSelection(), this.plugin);
|
||||||
|
contentEl.setText(`${stats} (at ${this.plugin.settings.readingSpeed} wpm)`);
|
||||||
|
}
|
||||||
|
onClose() {
|
||||||
|
const { contentEl } = this;
|
||||||
|
contentEl.empty();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/*!
|
||||||
|
* reading-time
|
||||||
|
* Copyright (c) Nicolas Gryman <ngryman@gmail.com>
|
||||||
|
* MIT Licensed
|
||||||
|
*/
|
10
.obsidian/plugins/obsidian-reading-time/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-reading-time/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-reading-time",
|
||||||
|
"name": "Reading Time",
|
||||||
|
"description": "Add the current note's reading time to Obsidian's status bar.",
|
||||||
|
"version": "1.1.1",
|
||||||
|
"minAppVersion": "0.12.17",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"author": "avr",
|
||||||
|
"authorUrl": "https://github.com/avr"
|
||||||
|
}
|
8
.obsidian/plugins/obsidian-style-settings/data.json
vendored
Normal file
8
.obsidian/plugins/obsidian-style-settings/data.json
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"blue-topaz-theme@@hide-vault-name": false,
|
||||||
|
"minimal-style@@active-line-on": true,
|
||||||
|
"things-style@@default-font-color": false,
|
||||||
|
"things-style@@accent-h": 215,
|
||||||
|
"things-style@@cursor": "default",
|
||||||
|
"blue-topaz-theme@@plain-file-title": false
|
||||||
|
}
|
8825
.obsidian/plugins/obsidian-style-settings/main.js
vendored
Normal file
8825
.obsidian/plugins/obsidian-style-settings/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-style-settings/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-style-settings/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-style-settings",
|
||||||
|
"name": "Style Settings",
|
||||||
|
"version": "0.4.10",
|
||||||
|
"minAppVersion": "0.11.5",
|
||||||
|
"description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.",
|
||||||
|
"author": "mgmeyers",
|
||||||
|
"authorUrl": "https://github.com/mgmeyers/obsidian-style-settings",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
214
.obsidian/plugins/obsidian-style-settings/styles.css
vendored
Normal file
214
.obsidian/plugins/obsidian-style-settings/styles.css
vendored
Normal file
File diff suppressed because one or more lines are too long
33
.obsidian/plugins/periodic-notes/data.json
vendored
Normal file
33
.obsidian/plugins/periodic-notes/data.json
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"showGettingStartedBanner": false,
|
||||||
|
"hasMigratedDailyNoteSettings": true,
|
||||||
|
"hasMigratedWeeklyNoteSettings": false,
|
||||||
|
"daily": {
|
||||||
|
"format": "DD.MM.YYYY",
|
||||||
|
"folder": "Periodische Notizen/Täglich",
|
||||||
|
"template": "Templates/t_DailyNote",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"weekly": {
|
||||||
|
"format": "[KW]ww-yyyy",
|
||||||
|
"template": "",
|
||||||
|
"folder": "Periodische Notizen/Wöchentlich",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"monthly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": "",
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"quarterly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": ""
|
||||||
|
},
|
||||||
|
"yearly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": ""
|
||||||
|
}
|
||||||
|
}
|
5559
.obsidian/plugins/periodic-notes/main.js
vendored
Normal file
5559
.obsidian/plugins/periodic-notes/main.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
.obsidian/plugins/periodic-notes/manifest.json
vendored
Normal file
10
.obsidian/plugins/periodic-notes/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "periodic-notes",
|
||||||
|
"name": "Periodic Notes",
|
||||||
|
"description": "Create/manage your daily, weekly, and monthly notes",
|
||||||
|
"version": "0.0.17",
|
||||||
|
"author": "Liam Cain",
|
||||||
|
"authorUrl": "https://github.com/liamcain/",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"minAppVersion": "0.10.11"
|
||||||
|
}
|
30
.obsidian/plugins/periodic-notes/styles.css
vendored
Normal file
30
.obsidian/plugins/periodic-notes/styles.css
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
.periodic-modal {
|
||||||
|
min-width: 40vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-banner {
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-top: 1em;
|
||||||
|
padding: 1.5em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-banner h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-banner h4 {
|
||||||
|
margin-bottom: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
input.has-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
border-color: var(--text-error);
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"formatType": "normal",
|
"formatType": "normal",
|
||||||
"showRibbonIcon": true,
|
"showRibbonIcon": false,
|
||||||
"bindEnter": true,
|
"bindEnter": true,
|
||||||
"bindTab": true
|
"bindTab": true
|
||||||
}
|
}
|
14
.obsidian/starred.json
vendored
Normal file
14
.obsidian/starred.json
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"title": "dokumentationRTM",
|
||||||
|
"path": "Firmen/Steinemann Technology/dokumentationRTM.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"title": "Änderungen",
|
||||||
|
"path": "Firmen/Steinemann Technology/Notes/Penta/Penta Übersicht.md"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
5
.obsidian/templates.json
vendored
Normal file
5
.obsidian/templates.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"dateFormat": "DD.MM.YY",
|
||||||
|
"timeFormat": "hh:mm",
|
||||||
|
"folder": "Templates"
|
||||||
|
}
|
1166
.obsidian/themes/Deep Work.css
vendored
Normal file
1166
.obsidian/themes/Deep Work.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
128
.obsidian/workspace
vendored
128
.obsidian/workspace
vendored
@ -4,12 +4,12 @@
|
|||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "1caf41d3ec6d93b4",
|
"id": "624fc6cedfec68e9",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "atom/atom.md",
|
"file": "Periodische Notizen/Täglich/05.07.2022.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
}
|
||||||
@ -34,21 +34,6 @@
|
|||||||
"state": {}
|
"state": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "cf8612b561ea8d18",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "search",
|
|
||||||
"state": {
|
|
||||||
"query": "_index_of_",
|
|
||||||
"matchingCase": false,
|
|
||||||
"explainSearch": false,
|
|
||||||
"collapseAll": false,
|
|
||||||
"extraContext": false,
|
|
||||||
"sortOrder": "alphabetical"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "8bcd1b2b7f874b35",
|
"id": "8bcd1b2b7f874b35",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
@ -57,11 +42,26 @@
|
|||||||
"state": {}
|
"state": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "07d7f0c152a15b7e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "39650d5b939ff18b",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "calendar",
|
||||||
|
"state": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 300
|
"width": 326
|
||||||
},
|
},
|
||||||
"right": {
|
"right": {
|
||||||
"id": "a54ca124d2689b37",
|
"id": "a54ca124d2689b37",
|
||||||
@ -77,7 +77,7 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "backlink",
|
"type": "backlink",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "atom/atom.md",
|
"file": "Periodische Notizen/Täglich/05.07.2022.md",
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
@ -88,6 +88,33 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "0ad8b5a5ec67ae37",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Periodische Notizen/Täglich/05.07.2022.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cf8612b561ea8d18",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": true,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "3e4f1e1a80e2d042",
|
"id": "3e4f1e1a80e2d042",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
@ -99,46 +126,57 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "0ad8b5a5ec67ae37",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "outgoing-link",
|
|
||||||
"state": {
|
|
||||||
"file": "atom/atom.md",
|
|
||||||
"linksCollapsed": false,
|
|
||||||
"unlinkedCollapsed": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "1a2599660c2f0844",
|
"id": "1a2599660c2f0844",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "atom/atom.md"
|
"file": "Periodische Notizen/Täglich/05.07.2022.md"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "073d6445c4950019",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "Saved Queries View",
|
||||||
|
"state": {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 2
|
"currentTab": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7804475bf051d7e7",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e48062180002319b",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "graph",
|
||||||
|
"state": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 300
|
"width": 303,
|
||||||
|
"collapsed": true
|
||||||
},
|
},
|
||||||
"active": "1caf41d3ec6d93b4",
|
"active": "624fc6cedfec68e9",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"atom/atom.md",
|
"Periodische Notizen/Täglich/05.07.2022.md",
|
||||||
"attachment/attachment.md",
|
"Periodische Notizen/Täglich/12.07.2022.md",
|
||||||
"Firmen/Firmen.md",
|
"Firmen/Steinemann Technology/Notes/Penta/Penta Übersicht.md",
|
||||||
"rapha/rapha.md",
|
"Firmen/Steinemann Technology/Tickets/Monica Garcia/Erstellung der Penta Belege.md",
|
||||||
"Dashboard.md",
|
"Firmen/Steinemann Technology/Notes/Penta/toimprove.md",
|
||||||
"Firmen/Bewerbungen/Bewerbungen.md",
|
"Private/Atom/atom.md",
|
||||||
"Firmen/Bewerbungen/bewerbung 22/bewerbung 22.md",
|
"Private/Rapha/Aufgabenteilung.md",
|
||||||
"Firmen/Bewerbungen/bewerbung 22/firm/firm.md",
|
"Firmen/Steinemann Technology/Tickets/Monica Garcia/Penta Belege termin definieren.md",
|
||||||
"Firmen/steinemann technology/steinemann technology.md",
|
"Periodische Notizen/Täglich/04.07.2022.md",
|
||||||
"Firmen/steinemann technology/K2H/K2H.md"
|
"Firmen/Steinemann Technology/tickets/Monica Garcia/Erstellung der Penta Belege.md"
|
||||||
]
|
]
|
||||||
}
|
}
|
BIN
Attachment/BELEGE .msg
Normal file
BIN
Attachment/BELEGE .msg
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/datenTypen.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/datenTypen.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/dropdownEigenschaften.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/dropdownEigenschaften.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/feldVerschiebung.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/feldVerschiebung.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/klasseBearbeiten.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/klasseBearbeiten.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/klassenDefinition.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/klassenDefinition.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/neueFeldDefinition.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/neueFeldDefinition.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/neueKlasseErstellen.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/neueKlasseErstellen.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/uebersicht.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/uebersicht.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/variablenInFelder.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/variablenInFelder.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/HighsystemsCM/vorlagen.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/HighsystemsCM/vorlagen.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/Keeper/keeperKontoUebertragen.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/Keeper/keeperKontoUebertragen.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/Mails/Spammails/teamsInviteFake.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/Mails/Spammails/teamsInviteFake.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/Mails/Spammails/teamsInviteFakeMarkup.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/Mails/Spammails/teamsInviteFakeMarkup.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/auftragwechsel.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/auftragwechsel.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/buchungen.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/buchungen.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/einsatzplan.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/einsatzplan.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/gehen.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/gehen.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/info.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/info.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/kommen.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/kommen.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/mengen.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/mengen.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/pause.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/pause.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/planung.jpg
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/planung.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/qrCodeRTMAndroid.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/qrCodeRTMAndroid.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/qrCodeRTMIPhone.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/qrCodeRTMIPhone.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/sso.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/sso.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/terminals/Opera.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/terminals/Opera.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/terminals/Sonata.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/terminals/Sonata.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTM.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTM.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeader.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeader.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderDateTime.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderDateTime.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderEreignisse.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderEreignisse.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderKommenGehen.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderKommenGehen.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderZusammenfassung.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMHeaderZusammenfassung.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobile.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobile.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileAuftragszeit.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileAuftragszeit.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileBuchungen.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileBuchungen.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileEinsatzplan.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileEinsatzplan.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileGehen.png
(Stored with Git LFS)
Normal file
BIN
Attachment/Steinemann Technology/RTM Dokumentation/webOberflächeRTMMobileGehen.png
(Stored with Git LFS)
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user