1
0
Fork 0

Compare commits

...

13 commits

95 changed files with 15783 additions and 25185 deletions

3
.obsidian/app.json vendored
View file

@ -6,5 +6,6 @@
"useMarkdownLinks": true, "useMarkdownLinks": true,
"showUnsupportedFiles": true, "showUnsupportedFiles": true,
"defaultViewMode": "preview", "defaultViewMode": "preview",
"livePreview": false "livePreview": false,
"attachmentFolderPath": "./attachments"
} }

View file

@ -4,11 +4,11 @@
"note-gallery", "note-gallery",
"smart-random-note", "smart-random-note",
"tag-word-cloud", "tag-word-cloud",
"obsidian-sort-and-permute-lines",
"dashboard-navigator", "dashboard-navigator",
"automatic-table-of-contents", "automatic-table-of-contents",
"obsidian-advanced-uri", "obsidian-advanced-uri",
"table-editor-obsidian",
"folder-notes", "folder-notes",
"waypoint" "waypoint",
"consistent-attachments-and-links",
"obsidian-custom-attachment-location"
] ]

View file

@ -1,17 +1,30 @@
[ {
"file-explorer", "file-explorer": true,
"global-search", "global-search": true,
"graph", "switcher": false,
"backlink", "graph": true,
"canvas", "backlink": true,
"outgoing-link", "canvas": true,
"tag-pane", "outgoing-link": true,
"properties", "tag-pane": true,
"page-preview", "properties": true,
"command-palette", "page-preview": true,
"editor-status", "daily-notes": false,
"bookmarks", "templates": false,
"zk-prefixer", "note-composer": false,
"outline", "command-palette": true,
"file-recovery" "slash-command": false,
] "editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": true,
"random-note": false,
"outline": true,
"word-count": false,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": false
}

File diff suppressed because it is too large Load diff

View file

@ -1,10 +0,0 @@
{
"id": "attachment-management",
"name": "Attachment Management",
"version": "0.9.16",
"description": "Customize your attachment path of notes independently with variables and auto rename it on change.",
"author": "trganda",
"authorUrl": "https://github.com/trganda",
"fundingUrl": "https://paypal.me/trganda",
"isDesktopOnly": false
}

View file

@ -1,15 +0,0 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/
.attach_management_sub_setting {
padding-left: 2em;
}
.attach_management_sub_setting + .attach_management_sub_setting {
padding-left: 0;
margin-left: 2em;
}

View file

@ -0,0 +1,22 @@
{
"autoCollectAttachments": true,
"changeNoteBacklinksAlt": true,
"consistencyReportFile": "consistency-report.md",
"deleteAttachmentsWithNote": true,
"deleteEmptyFolders": true,
"deleteExistFilesWhenMoveNote": false,
"ignoreFiles": [
"consistency\\-report\\.md",
".*attachments\\.md",
".*Source\\ Materials\\.md"
],
"ignoreFolders": [
".git/",
".obsidian/",
"_Templates/",
"Attic/"
],
"moveAttachmentsWithNote": true,
"showWarning": false,
"updateLinks": true
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
{
"id": "consistent-attachments-and-links",
"name": "Consistent Attachments and Links",
"version": "3.21.10",
"minAppVersion": "1.7.7",
"description": "This plugin ensures the consistency of attachments and links",
"author": "Dmitry Savosh",
"authorUrl": "https://github.com/dy-sh/",
"isDesktopOnly": false,
"fundingUrl": "https://www.buymeacoffee.com/mnaoumov"
}

View file

@ -14,5 +14,12 @@
"color_audios": "#bfbf00", "color_audios": "#bfbf00",
"color_pdf": "#00a300", "color_pdf": "#00a300",
"color_other": "#828282", "color_other": "#828282",
"colored_files": false "colored_files": false,
"hide_ext": false,
"hide_path": false,
"hide_size": false,
"hide_date": false,
"hide_tags": false,
"hide_frontmatter": false,
"hide_columns": []
} }

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
{ {
"id": "dashboard-navigator", "id": "dashboard-navigator",
"name": "Dashboard navigator", "name": "Dashboard navigator",
"version": "2.0.0", "version": "5.2.0",
"minAppVersion": "1.1.0", "minAppVersion": "1.1.0",
"description": "Vault dashboard and navigator. Show recent files by type, files per day, week, month, search files by name, date, tags and more.", "description": "Vault dashboard and navigator. Show recent files by type, files per day, week, month, search files by name, date, tags and more.",
"author": "Bernardo Pires", "author": "Bernardo Pires",

View file

@ -5,6 +5,7 @@ body {
--dn-background-color: var(--background-secondary); --dn-background-color: var(--background-secondary);
--dn-foreground-color: var(--text-normal); --dn-foreground-color: var(--text-normal);
--dn-border-color: var(--background-modifier-border); --dn-border-color: var(--background-modifier-border);
--dn-border-color-hover: var(--background-modifier-border-hover);
--dn-file-property-color: #828282; --dn-file-property-color: #828282;
--dn-font-size: 16px; --dn-font-size: 16px;
@ -71,7 +72,7 @@ body {
margin-left: 0; margin-left: 0;
margin-right: 0; margin-right: 0;
margin-top: var(--size-4-1); margin-top: var(--size-4-1);
margin-bottom: var(--size-4-2); margin-bottom: var(--size-4-1);
flex-wrap: wrap; flex-wrap: wrap;
align-content: center; align-content: center;
} }
@ -251,6 +252,7 @@ body {
display: none; display: none;
} }
a.dn-ext,
a.dn-folder-path { a.dn-folder-path {
color: var(--text-muted); color: var(--text-muted);
} }
@ -280,57 +282,69 @@ table#dn-table td {
text-overflow: ellipsis; text-overflow: ellipsis;
padding: var(--size-4-1) var(--size-4-2); padding: var(--size-4-1) var(--size-4-2);
min-width: 50px; min-width: 50px;
width: clamp(50px, auto, unset);
font-size: var(--dn-font-size); font-size: var(--dn-font-size);
} }
table#dn-table th { table#dn-table th {
position: sticky;
top: 80px;
z-index: 901;
text-align: left; text-align: left;
font-weight: var(--font-semibold); font-weight: var(--font-semibold);
color: var(--text-normal); color: var(--text-normal);
border-bottom: 1px solid var(--dn-border-color);
cursor: pointer; cursor: pointer;
background-color: var(--background-primary);
} }
table#dn-table th:not(.sort-active, th:nth-child(5)):hover { table#dn-table th:not(th:nth-child(6), th:nth-child(7)):hover {
background-color: var(--tag-background); background-color: var(--background-secondary);
} }
table#dn-table th.sort-active { table#dn-table th.sort-active {
color: var(--text-normal); color: var(--text-normal);
background-color: var(--tag-background); background-color: var(--background-secondary);
} }
table#dn-table th.sort-active.sort-asc::before { table#dn-table th.sort-active.sort-asc::before {
content: " ↑"; content: " ↑";
color: var(--text-accent);
font-weight: var(--font-bold); font-weight: var(--font-bold);
color: var(--interactive-accent);
} }
table#dn-table th.sort-active.sort-desc::before { table#dn-table th.sort-active.sort-desc::before {
content: " ↓"; content: " ↓";
color: var(--text-accent);
font-weight: var(--font-bold); font-weight: var(--font-bold);
color: var(--interactive-accent);
} }
table#dn-table th:nth-child(1), table#dn-table th:nth-child(1),
table#dn-table th:nth-child(2), table#dn-table th:nth-child(2),
table#dn-table th:nth-child(3), table#dn-table th:nth-child(3),
table#dn-table th:nth-child(4) { table#dn-table th:nth-child(4),
table#dn-table th:nth-child(5),
table#dn-table th:nth-child(6) {
resize: horizontal; resize: horizontal;
} }
table#dn-table td:nth-child(3) { table#dn-table th:nth-child(2),
table#dn-table td:nth-child(2) {
width: 82px;
min-width: 82px;
}
table#dn-table td:nth-child(4) {
text-align: right; text-align: right;
padding-right: 1em; padding-right: 1em;
} }
table#dn-table th:nth-child(5) { table#dn-table th:nth-child(6),
table#dn-table th:nth-child(7) {
cursor: default; cursor: default;
} }
table#dn-table tr:hover td { table#dn-table tr:hover td {
background-color: var(--nav-item-background-hover); background-color: var(--nav-item-background-hover) !important;
} }
.dn-search-input-container { .dn-search-input-container {
@ -367,25 +381,17 @@ table#dn-table tr:hover td {
} }
.dn-pagination { .dn-pagination {
margin-bottom: var(--size-4-1); position: sticky;
display: flex;
top: 40px;
padding: var(--size-4-1) var(--size-4-2);
text-align: right; text-align: right;
font-size: .9em; font-size: .9em;
} background-color: var(--background-secondary);
z-index: 900;
.dn-pagination span { justify-content: space-between;
margin-right: 1em; border: 1px solid var(--dn-border-color);
} opacity: .9;
.dn-pagination span {
margin-right: 1em;
}
.dn-pagination-total-results {
float: left;
}
.dn-pagination-total-results::after {
clear: left;
} }
.dn-btn-prev:disabled, .dn-btn-prev:disabled,
@ -396,6 +402,7 @@ table#dn-table tr:hover td {
.dn-btn-prev, .dn-btn-prev,
.dn-btn-next { .dn-btn-next {
cursor: pointer; cursor: pointer;
margin-left: var(--size-4-1);
} }
/* File icons */ /* File icons */
@ -513,6 +520,7 @@ a.dn-f-other::before {
} }
.dn-no-results-found { .dn-no-results-found {
padding-left: var(--size-4-2);
color: var(--text-faint); color: var(--text-faint);
font-style: italic; font-style: italic;
} }
@ -522,12 +530,41 @@ a.dn-tag {
border-radius: var(--tag-radius); border-radius: var(--tag-radius);
margin-right: var(--size-4-1); margin-right: var(--size-4-1);
padding-inline-end: var(--tag-padding-x); padding-inline-end: var(--tag-padding-x);
font-size: var(--tag-size); font-size: var(--font-size);
background-color: var(--tag-background); background-color: var(--tag-background);
color: var(--tag-color); color: var(--tag-color);
text-decoration: none; text-decoration: none;
} }
a.dn-tag:hover {
color: var(--text-accent-hover);
}
a.dn-fproperties::before {
content: '•';
color: var(--dn-border-color);
}
a.dn-fproperties:hover::before {
content: '•';
color: var(--text-accent-hover);
}
a.dn-fproperties {
display: inline-block;
border-radius: var(--tag-radius);
margin-right: var(--size-4-1);
padding-inline-end: var(--tag-padding-x);
font-size: var(--font-size);
background-color: var(--tag-background);
color: var(--tag-color);
text-decoration: none;
}
a.dn-fproperties:hover {
color: var(--text-accent-hover);
}
#dn-other, #dn-other,
#dn-videos, #dn-videos,
#dn-audios, #dn-audios,
@ -535,7 +572,8 @@ a.dn-tag {
#dn-images, #dn-images,
#dn-canvas, #dn-canvas,
#dn-recent-notes, #dn-recent-notes,
#dn-recent-files { #dn-recent-files,
#dn-last-opened-files {
padding: var(--size-4-2); padding: var(--size-4-2);
background-color: var(--background-primary); background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border); border: 1px solid var(--background-modifier-border);
@ -553,8 +591,7 @@ table#dn-table.dn-tbl-row tbody tr:nth-child(even) {
background-color: var(--dn-even-background-color); background-color: var(--dn-even-background-color);
} }
table#dn-table.dn-tbl-column th:nth-child(even), table#dn-table.dn-tbl-column td:nth-child(even of :not(.dn-hidden)) {
table#dn-table.dn-tbl-column td:nth-child(even) {
background-color: var(--dn-even-background-color); background-color: var(--dn-even-background-color);
} }
@ -590,15 +627,60 @@ table#dn-table.dn-tbl-default td {
word-wrap: break-word; word-wrap: break-word;
} }
.dn-div-top-preview-btns {
text-align: left;
display: flex;
justify-content: left;
gap: 8px;
}
.dn-div-bottom-properties { .dn-div-bottom-properties {
text-align: center; text-align: left;
display: flex;
justify-content: space-between;
} }
.dn-btn-close-properties { .dn-div-top-preview-btns button,
width: 30%; .dn-div-bottom-properties button {
margin-top: var(--size-4-1);
cursor: pointer;
}
.dn-btn-properties-close {
width: 100px;
margin-left: 1em;
}
.dn-btn-properties-open-file {
width: 180px;
}
.dn-hidden {
display: none;
}
.dn-properties-frontmatter-modal,
.dn-properties-frontmatter {
overflow-y: auto;
resize: vertical;
min-height: 48px;
height: 120px;
border: 1px solid var(--dn-border-color);
padding: var(--size-4-1);
line-height: 1.8em;
font-size: 1em;
word-wrap: break-word;
word-break: break-word;
} }
.modal:has(.dn-properties-modal),
.modal:has(.dn-frontmatter-modal) {
min-width: 30%;
width: 60%;
max-width: 100%;
resize: both;
}
@media screen and (max-width: 1024px) { @media screen and (max-width: 1024px) {
.dn-flex { .dn-flex {
@ -621,10 +703,10 @@ table#dn-table.dn-tbl-default td {
width: 30%; width: 30%;
} }
table#dn-table th:nth-child(3), table#dn-table th:nth-child(4),
table#dn-table td:nth-child(3), table#dn-table td:nth-child(4),
table#dn-table th:nth-child(5), table#dn-table th:nth-child(6),
table#dn-table td:nth-child(5) { table#dn-table td:nth-child(6) {
display: none; display: none;
} }
@ -667,7 +749,11 @@ table#dn-table.dn-tbl-default td {
table#dn-table th:nth-child(4), table#dn-table th:nth-child(4),
table#dn-table td:nth-child(4), table#dn-table td:nth-child(4),
table#dn-table th:nth-child(5), table#dn-table th:nth-child(5),
table#dn-table td:nth-child(5) { table#dn-table td:nth-child(5),
table#dn-table th:nth-child(6),
table#dn-table td:nth-child(6),
table#dn-table th:nth-child(7),
table#dn-table td:nth-child(7) {
display: none; display: none;
} }
@ -677,3 +763,120 @@ table#dn-table.dn-tbl-default td {
} }
} }
.dn-preview {
display: none;
position: fixed;
min-width: 400px;
min-height: 300px;
width: 600px;
height: 480px;
max-width: 100%;
max-height: 100%;
overflow: auto;
border: 2px solid var(--dn-border-color);
background: var(--background-primary);
padding: 0;
z-index: 90000;
border-radius: var(--radius-m);
box-shadow: 0 0 1em #00000082;
resize: both;
}
.dn-preview:hover {
border: 2px solid var(--dn-border-color-hover);
}
.dn-preview-top-bar {
background-color: var(--background-primary);
position: sticky;
top: 0;
left: 0;
padding: var(--size-4-2);
z-index: 10;
}
.dn-preview-titlebar {
width: 90%;
cursor: move;
border-left: 4px solid var(--text-faint);
padding-left: 8px;
}
.dn-preview-titlebar:hover {
border-left: 4px solid var(--text-accent);
}
.dn-preview-titlebar .dn-property-value {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.dn-preview .dn-pr-file-name::before {
content: 'File: ';
color: var(--dn-file-property-color);
}
.dn-preview .dn-pr-file-path::before {
content: 'Path: ';
color: var(--dn-file-property-color);
}
.dn-preview .dn-pr-file-path {
padding: var(--size-4-1) 0;
border-bottom: 1px solid var(--dn-border-color);
}
.dn-preview .dn-pr-content {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr;
width: 100%;
background: var(--background-primary);
border-radius: var(--radius-s);
cursor: auto;
}
.dn-preview .dn-pr-content img {
width: 100%;
height: auto;
}
.dn-preview .markdown-embed-title {
display: none;
}
.dn-preview .markdown-embed {
border-inline-start: 0;
}
.dn-property-row {
display: flex;
margin-bottom: var(--size-4-1);
}
.dn-property-name-sm {
flex: 0 0 auto;
width: 62px;
text-align: left;
color: var(--dn-file-property-color);
}
.dn-property-name {
flex: 0 0 auto;
width: 108px;
text-align: left;
color: var(--dn-file-property-color);
}
.dn-property-value {
flex: 1;
padding-left: 0;
text-align: left;
}
.dn-property-value span.nav-file-tag {
margin: 0;
}

View file

@ -9,7 +9,7 @@
"excludeFolders": [ "excludeFolders": [
{ {
"type": "pattern", "type": "pattern",
"string": "*_attachment*", "string": "*attachment*",
"position": 0, "position": 0,
"subFolders": true, "subFolders": true,
"disableSync": true, "disableSync": true,
@ -62,7 +62,7 @@
"explorer": true, "explorer": true,
"path": true "path": true
}, },
"settingsTab": "file_explorer", "settingsTab": "general",
"supportedFileTypes": [ "supportedFileTypes": [
"md", "md",
"canvas" "canvas"

File diff suppressed because one or more lines are too long

View file

@ -1,10 +0,0 @@
{
"id": "line-arrange",
"name": "Line Arrange",
"version": "1.2.1",
"minAppVersion": "0.15.0",
"description": "Shuffle, reverse, or sort lines, using either visual width or lexical order.",
"author": "Chitwan Singh",
"authorUrl": "https://github.com/chitwan27",
"isDesktopOnly": false
}

View file

@ -1,214 +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 __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// main.ts
var main_exports = {};
__export(main_exports, {
default: () => LiteGallery
});
module.exports = __toCommonJS(main_exports);
var import_obsidian2 = require("obsidian");
// settingtab.ts
var import_obsidian = require("obsidian");
var LiteGallerySettingTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
let { containerEl } = this;
containerEl.empty();
new import_obsidian.Setting(containerEl).setName("Image folders").setDesc("Comma separated list of folders to search for images (in order of priority).").addText(
(text) => text.setPlaceholder("/").setValue(this.plugin.settings.image_folders.join(",")).onChange(async (value) => {
this.plugin.settings.image_folders = value.split(",");
await this.plugin.save_settings();
})
);
}
};
// main.ts
var DEFAULT_SETTINGS = {
image_folders: []
};
var LiteGallery = class extends import_obsidian2.Plugin {
async load_settings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async save_settings() {
await this.saveData(this.settings);
}
async onload() {
await this.load_settings();
this.addSettingTab(new LiteGallerySettingTab(this.app, this));
this.registerMarkdownCodeBlockProcessor("litegal", async (source, el, ctx) => {
let active_slide = 0;
let preview_scroll_speed = 0;
const image_list = source.split("\n").map((line) => line.replace(/!?\[\[/, "").replace("]]", "").trim()).filter((line) => line).map(
(image) => {
let image_exists = false;
let image_path = void 0;
let path_options = this.settings.image_folders.map((folder) => {
return `${folder.slice(-1) == "/" ? folder == "/" ? "" : folder : (
// If folder doesn't need a trailing slash, don't add it (if it's root dir should just be empty string)
`${folder}/`
)}${image}`;
});
for (const test_path of path_options) {
const file = this.app.vault.getAbstractFileByPath(test_path);
if (file instanceof import_obsidian2.TFile) {
image_exists = true;
image_path = this.app.vault.adapter.getResourcePath(test_path);
break;
}
}
if (image_path == void 0) {
new import_obsidian2.Notice(`LiteGallery: Image not found: ${image}`);
}
return image_path;
}
).filter((image_path) => image_path !== void 0);
const lightbox_container = document.body.createEl("div", {
cls: "litegal-lightbox-container hidden"
});
lightbox_container.onclick = () => {
lightbox_container.addClass("hidden");
};
const lightbox = lightbox_container.createEl("div");
lightbox.classList.add("litegal-lightbox");
lightbox.onclick = (event) => {
event.stopPropagation();
};
const gallery = el.createEl("div", { cls: "litegal" });
gallery.classList.add("litegal");
if (image_list.length > 0) {
const active_image_container = gallery.createEl("div", {
cls: "litegal-active"
});
const active_image_container_inner = active_image_container.createEl("div", {
cls: "litegal-active-inner"
});
const active_image = active_image_container_inner.createEl("img");
active_image.src = image_list[active_slide];
active_image.onclick = () => {
lightbox_container.removeClass("hidden");
lightbox_image.src = image_list[active_slide];
};
const larrow = active_image_container.createEl("div", {
text: "<",
cls: "litegal-arrow litegal-arrow-left"
});
larrow.onclick = () => {
active_slide = (active_slide - 1 + image_list.length) % image_list.length;
active_image.src = image_list[active_slide];
};
const rarrow = active_image_container.createEl("div", {
text: ">",
cls: "litegal-arrow litegal-arrow-right"
});
rarrow.onclick = () => {
active_slide = (active_slide + 1) % image_list.length;
active_image.src = image_list[active_slide];
};
const preview_outer_container = gallery.createEl("div", { cls: "litegal-preview-outer" });
const preview_larrow = preview_outer_container.createEl("div", {
text: "<",
cls: "litegal-arrow litegal-arrow-left"
});
preview_larrow.onmouseenter = () => {
preview_scroll_speed = -5;
};
preview_larrow.onmouseleave = () => {
preview_scroll_speed = 0;
};
const preview_rarrow = preview_outer_container.createEl("div", {
text: ">",
cls: "litegal-arrow litegal-arrow-right"
});
preview_rarrow.onmouseenter = () => {
preview_scroll_speed = 5;
};
preview_rarrow.onmouseleave = () => {
preview_scroll_speed = 0;
};
const preview_container = preview_outer_container.createEl("div", {
cls: "litegal-preview"
});
setInterval(() => {
preview_container.scrollLeft += preview_scroll_speed;
}, 10);
image_list.forEach(async (image_path, i) => {
const preview_elem = preview_container.createEl("img", {
cls: "litegal-preview-img"
});
preview_elem.src = image_path;
preview_elem.onclick = () => {
active_slide = i;
active_image.src = `${image_list[active_slide]}`;
};
});
const lightbox_larrow = lightbox.createEl("div", {
text: "<",
cls: "litegal-arrow litegal-arrow-left"
});
lightbox_larrow.onclick = () => {
active_slide = (active_slide - 1 + image_list.length) % image_list.length;
lightbox_image.src = image_list[active_slide];
active_image.src = image_list[active_slide];
};
const lightbox_rarrow = lightbox.createEl("div", {
text: ">",
cls: "litegal-arrow litegal-arrow-right"
});
lightbox_rarrow.onclick = () => {
active_slide = (active_slide + 1) % image_list.length;
lightbox_image.src = image_list[active_slide];
active_image.src = image_list[active_slide];
};
const lightbox_image = lightbox.createEl("img", {
cls: "litegal-lightbox-image"
});
const lightbox_exit = lightbox.createEl("div", {
text: "X",
cls: "litegal-lightbox-exit"
});
lightbox_exit.onclick = () => {
lightbox_container.addClass("hidden");
};
document.addEventListener("keydown", (event) => {
if (event.key === "Escape") {
lightbox_container.addClass("hidden");
}
});
} else {
gallery.createEl("p", {
text: 'No images found, please check your image list. If your images are not found, please check your "image folders" in settings.',
cls: "litegal-no-images"
});
}
});
}
onunload() {
}
};

View file

@ -1,10 +0,0 @@
{
"id": "litegallery",
"name": "Lite Gallery",
"version": "1.0.5",
"minAppVersion": "0.15.0",
"description": "Easily create carousel galleries to better organize/view images in your notes.",
"author": "Jordan Poles",
"authorUrl": "https://github.com/jpoles1/",
"isDesktopOnly": false
}

View file

@ -1,111 +0,0 @@
.litegal {
width: 100%;
cursor: default;
}
.litegal-preview-outer {
position: relative;
}
.litegal-preview {
display: flex;
align-items: space-around;
flex-wrap: nowrap;
margin: 0 30px 0 40px;
overflow: scroll;
}
.litegal-preview-img {
width: 100px;
height: 100px;
margin: 10px;
border: 1px solid #ccc;
border-radius: 5px;
overflow: hidden;
cursor: pointer;
flex-shrink: 0;
}
.litegal-active {
position: relative;
}
.litegal-active-inner {
display: flex;
justify-content: center;
}
.litegal-arrow {
cursor: pointer;
font-size: 30px;
margin: 0 10px;
color: #999;
background-color: rgba(0, 0, 0, 0.2);
border-radius: 5px;
padding: 5px;
position: absolute;
top: 50%;
transform: translate(0, -50%);
user-select: none;
}
.litegal-arrow:hover {
color: white;
background-color: rgba(0, 0, 0, 0.6);
}
.litegal-preview-outer .litegal-arrow {
font-size: 20px;
}
.litegal-arrow-right {
right: 0;
}
.litegal-lightbox-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 1000;
cursor: pointer;
}
.litegal-lightbox {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 90%;
max-height: 90%;
overflow: hidden;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
.litegal-lightbox-image {
max-width: 100%;
max-height: 100%;
}
.litegal-lightbox-exit {
position: absolute;
top: 0;
right: 0;
font-size: 30px;
color: white;
background-color: rgba(0, 0, 0, 0.6);
border-bottom-left-radius: 5px;
border-top-right-radius: 5px;
padding: 5px;
cursor: pointer;
user-select: none;
}
.hidden {
display: none;
}
.litegal-no-images {
text-align: center;
margin: 20px;
color: #999;
font-style: italic;
}

File diff suppressed because one or more lines are too long

View file

@ -1,11 +0,0 @@
{
"id": "multi-column-markdown",
"name": "Multi-Column Markdown",
"version": "0.9.1",
"minAppVersion": "1.5.3",
"description": "This plugin adds functionality to create markdown documents with multiple columns of content viewable within Obsidian's preview mode",
"author": "Cameron Robinson",
"fundingUrl": "https://www.buymeacoffee.com/ckrobinson",
"authorUrl": "https://portfolio.ckrobinson.net",
"isDesktopOnly": false
}

View file

@ -1,249 +0,0 @@
.mcm-single-column-layout-left {
left: 10px;
}
.mcm-single-column-layout-right {
right: 10px;
}
.mcm-single-column-small {
width: 25%;
}
.mcm-single-column-medium {
width: 50%;
}
.mcm-single-column-large {
width: 75%;
}
.mcm-single-column-full {
width: 100%;
}
/* ----------------------------------- */
.mcm-singlecol-layout-right {
justify-content: right;
}
.mcm-singlecol-layout-left {
justify-content: left;
}
.mcm-singlecol-layout-center {
justify-content: center;
}
/* ----------------------------------- */
.mcm-column-spacer {
margin-inline: 0.25%;
}
/* ----------------------------------- */
.mcm-two-equal-columns {
width: 49.75%;
}
.mcm-two-column-large {
width: 66.75%;
}
.mcm-two-column-small {
width: 32.75%;
}
/* ----------------------------------- */
.mcm-three-equal-columns {
width: 32.75%;
}
/* ----------------------------------- */
.mcm-three-column-large {
width: 49.75%;
}
.mcm-three-column-small {
width: 24.5%;
}
/* ----------------------------------- */
.mcm-column-div {
padding-inline: 10px;
}
.mcm-column-border {
border: grey;
border-style: solid;
border-width: 0.5px;
}
.mcm-column-shadow {
box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow);
}
.mcm-column-root-container {
margin: 1.5625em 0;
}
.mcm-column-parent-container {
padding: 0;
color: var(--text-normal);
page-break-inside: avoid;
border-radius: 0.1rem;
display:flex;
flex-direction:row;
}
.mcm-doc-reflow-container {
margin-top: 1.5625em;
}
.mcm-region-shadow {
box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow);
}
.mcm-column-end-tag-wrapper,
.mcm-column-break-tag-wrapper,
.mcm-column-settings-wrapper,
.mcm-column-content-wrapper {
opacity: 0;
}
.mcm-column-div .mcm-column-content-wrapper {
opacity: 100;
}
.markdown-preview-section > .mcm-column-content-wrapper,
.mcm-column-break-tag-wrapper,
.mcm-column-end-tag-wrapper,
.mcm-column-settings-wrapper {
height: 0px !important;
overflow: hidden;
}
.mcm-original-column-element + .mcm-cloned-column-element {
display: none;
}
.mcm-cm-preview {
line-height: var(--lh);
white-space: normal;
word-break: keep-all;
word-wrap: normal;
}
.mcm-no-flex-shrink {
flex-shrink: 0;
}
.mcm-col-settings-preview {
color: var(--text-normal);
}
.cm-preview-code-block.preivew-mcm-start-block {
height: 0pt !important;
padding: 0pt !important;
}
.mcm-content-overflow-hidden-x {
overflow-x: hidden;
}
.mcm-content-overflow-auto-scroll-x {
overflow-x: auto;
}
.mcm-content-overflow-auto-scroll-y {
overflow-x: auto;
}
.mcm-content-overflow-hidden-y {
overflow-y: hidden;
}
.mcm-content-alignment-left {
text-align: left;
}
.mcm-table-alignment.mcm-content-alignment-left table {
margin-right: auto;
margin-left: 0px;
}
.mcm-content-alignment-center {
text-align: center;
}
.mcm-table-alignment.mcm-content-alignment-center table {
margin-right: auto;
margin-left: auto;
}
.mcm-content-alignment-right {
text-align: right;
}
.mcm-table-alignment.mcm-content-alignment-right table {
margin-right: 0px;
margin-left: auto;
}
.mcm-span-content-alignment-center {
display: block;
text-align: center;
}
.mcm-small-font-message {
font-size: small
}
/* ----------------------------------- */
.mcm-message-region {
max-height: 0;
overflow: hidden;
font-size: small;
transition: max-height 0.2s ease-out;
}
.mcm-column-error-message {
color: var(--text-error);
}
.mcm-column-error-padding {
padding: 0 10px;
}
.mcm-error-heading {
background-color: var(--background-secondary);
user-select: none;
}
.mcm-error-heading:after {
content: '\002B';
color: white;
font-weight: bold;
float: right;
margin-left: 5px;
}
.mcm-error-heading:hover {
background-color: var(--interactive-hover);
}
.mcm-error-heading-open:after {
content: "\2212";
}
.mcm-error-message-color {
color: var(--text-error);
}
.mcm-error-icon {
font-size: large;
margin-inline-end: 5px;
color: var(--text-error);
}
.mcm-warning-icon {
font-size: large;
margin-inline-end: 5px;
color: var(--color-yellow)
}

File diff suppressed because one or more lines are too long

View file

@ -5,7 +5,7 @@
"isDesktopOnly": false, "isDesktopOnly": false,
"js": "main.js", "js": "main.js",
"fundingUrl": "https://ko-fi.com/vinzent", "fundingUrl": "https://ko-fi.com/vinzent",
"version": "1.44.1", "version": "1.44.2",
"author": "Vinzent", "author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03" "authorUrl": "https://github.com/Vinzent03"
} }

View file

@ -0,0 +1,18 @@
{
"attachmentFolderPath": "./attachments/${filename}",
"autoRenameFiles": false,
"autoRenameFolder": false,
"convertImagesOnDragAndDrop": false,
"convertImagesToJpeg": false,
"deleteOrphanAttachments": false,
"duplicateNameSeparator": " ",
"jpegQuality": 0.8,
"keepEmptyAttachmentFolders": false,
"pastedFileName": "file-${date:YYYYMMDDHHmmssSSS}",
"renameAttachmentsOnDragAndDrop": false,
"renameCollectedFiles": false,
"renameOnlyImages": false,
"renamePastedFilesWithKnownNames": false,
"replaceWhitespace": false,
"toLowerCase": false
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
{
"id": "obsidian-custom-attachment-location",
"name": "Custom Attachment Location",
"version": "4.28.3",
"minAppVersion": "1.7.7",
"description": "Customize attachment location with variables($filename, $data, etc) like typora.",
"author": "RainCat1998",
"authorUrl": "https://github.com/RainCat1998/",
"isDesktopOnly": false,
"fundingUrl": "https://www.buymeacoffee.com/mnaoumov"
}

File diff suppressed because one or more lines are too long

View file

@ -1,10 +0,0 @@
{
"id": "obsidian-sort-and-permute-lines",
"name": "Sort & Permute lines",
"version": "0.7.0",
"description": "",
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",
"fundingUrl": "https://ko-fi.com/vinzent",
"isDesktopOnly": false
}

View file

@ -1,6 +0,0 @@
{
"formatType": "normal",
"showRibbonIcon": true,
"bindEnter": true,
"bindTab": true
}

File diff suppressed because one or more lines are too long

View file

@ -1,17 +0,0 @@
{
"id": "table-editor-obsidian",
"name": "Advanced Tables",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"description": "Improved table navigation, formatting, manipulation, and formulas",
"isDesktopOnly": false,
"minAppVersion": "1.0.0",
"version": "0.22.0",
"js": "main.js",
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
},
"donation": "https://buymeacoffee.com/tgrosinger"
}

View file

@ -1,78 +0,0 @@
:root {
--advanced-tables-helper-size: 28px;
}
.HyperMD-table-row span.cm-inline-code {
font-size: 100%;
padding: 0px;
}
.advanced-tables-buttons>div>.title {
font-weight: var(--font-medium);
font-size: var(--nav-item-size);
color: var(--nav-item-color);
text-decoration: underline;
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
column-gap: 0.2rem;
margin: 0.2rem 0 0.2rem 0;
justify-content: start;
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container::before {
min-width: 2.6rem;
line-height: var(--advanced-tables-helper-size);
font-size: var(--nav-item-size);
font-weight: var(--nav-item-weight);
color: var(--nav-item-color);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container>* {
height: var(--advanced-tables-helper-size);
line-height: var(--advanced-tables-helper-size);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button {
width: var(--advanced-tables-helper-size);
height: var(--advanced-tables-helper-size);
display: flex;
justify-content: center;
align-items: center;
border-radius: var(--radius-s);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button:hover {
background-color: var(--nav-item-background-hover);
color: var(--nav-item-color-hover);
font-weight: var(--nav-item-weight-hover);
}
.advanced-tables-row-label {
width: 50px;
}
.widget-icon {
width: 20px;
height: 20px;
fill: var(--text-muted);
}
.widget-icon:hover {
fill: var(--text-normal);
}
.advanced-tables-csv-export textarea {
height: 200px;
width: 100%;
}
.advanced-tables-donation {
width: 70%;
margin: 0 auto;
text-align: center;
}
.advanced-tables-donate-button {
margin: 10px;
}

View file

@ -1,9 +0,0 @@
{
"tagPageDir": "_Tags/",
"frontmatterQueryProperty": "tag-page-query",
"nestedSeparator": "_",
"bulletedSubItems": true,
"includeLines": true,
"autoRefresh": true,
"fullLinkName": false
}

View file

@ -1,525 +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 __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// main.ts
var main_exports = {};
__export(main_exports, {
default: () => TagPagePlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian2 = require("obsidian");
// src/utils/obsidianApi.ts
var import_obsidian = require("obsidian");
var isTagPage = (app, tagPageFrontmatterKey, providedFile, tagOfInterest) => {
var _a, _b, _c;
const file = providedFile || ((_a = app.workspace.getActiveViewOfType(import_obsidian.MarkdownView)) == null ? void 0 : _a.file) || null;
if (!file)
return false;
const frontmatterValue = (_c = (_b = app.metadataCache.getFileCache(file)) == null ? void 0 : _b.frontmatter) == null ? void 0 : _c[tagPageFrontmatterKey];
if (tagOfInterest !== void 0) {
return frontmatterValue === tagOfInterest;
}
return !!frontmatterValue;
};
// src/utils/tagSearch.ts
var getIsWildCard = (tag) => {
const isWildCard = tag.endsWith("/*");
const cleanedTag = isWildCard ? tag.slice(0, -2) : tag;
return { isWildCard, cleanedTag };
};
var containsTag = (stringToSearch, tag) => {
const { isWildCard, cleanedTag } = getIsWildCard(tag);
const lowerStringToSearch = stringToSearch.toLowerCase();
const lowerCleanedTag = cleanedTag.toLowerCase();
if (isWildCard) {
return lowerStringToSearch.includes(lowerCleanedTag);
} else {
const regex = new RegExp(`${lowerCleanedTag}\\s`, "gi");
return regex.test(lowerStringToSearch);
}
};
var findSmallestUnitsContainingTag = (content, tag, excludeBullets = false) => {
const { isWildCard, cleanedTag } = getIsWildCard(tag);
const escapedSubstring = cleanedTag.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const wildcardPattern = isWildCard ? "(?:\\/[^\\s]*)?" : "";
const contentLines = content.split("\n").filter((line) => !(excludeBullets && line.trim().startsWith("-")));
const matchesMap = /* @__PURE__ */ new Map();
contentLines.forEach((line) => {
const regex = new RegExp(`${escapedSubstring}${wildcardPattern}`, "gi");
const matches = [...line.matchAll(regex)];
matches.forEach((match) => {
let key = match[0].toLowerCase();
if (isWildCard && key.endsWith("/*")) {
key = key.slice(0, -2);
}
if (!matchesMap.has(key)) {
matchesMap.set(key, [line.trim()]);
} else {
const existingLines = matchesMap.get(key);
if (!existingLines.includes(line.trim())) {
existingLines.push(line.trim());
}
}
});
});
return matchesMap;
};
var findBulletListsContainingTag = (content, tag) => {
const capturedBulletLists = /* @__PURE__ */ new Map();
const fileLines = content.split("\n").filter((line) => line.trim() !== "");
let currentBulletIndentation = 0;
const lastTagsAtCurrentIndentation = /* @__PURE__ */ new Set();
let capturingSubBullet = false;
fileLines.forEach((line) => {
const lineTrim = line.trim();
const startsWithBullet = lineTrim.startsWith("- ");
const lineIndentation = line.search(/\S/);
if (startsWithBullet) {
const { isWildCard, cleanedTag } = getIsWildCard(tag);
const tagRegex = isWildCard ? `${cleanedTag}(/[^\\s]+)?` : `${cleanedTag}(?![^\\s])`;
const regex = new RegExp(tagRegex, "gi");
const matches = line.match(regex);
if (startsWithBullet && (matches || lineIndentation <= currentBulletIndentation)) {
capturingSubBullet = false;
currentBulletIndentation = lineIndentation;
lastTagsAtCurrentIndentation.clear();
}
if (matches) {
capturingSubBullet = false;
matches.forEach((match) => {
var _a;
const trimmedMatch = isWildCard && match.endsWith("/") ? match.slice(0, -1) : match;
const trimmedMatchLowerCase = trimmedMatch.toLowerCase();
if (!capturedBulletLists.has(trimmedMatchLowerCase)) {
capturedBulletLists.set(trimmedMatchLowerCase, []);
}
(_a = capturedBulletLists.get(trimmedMatchLowerCase)) == null ? void 0 : _a.push(
lineIndentation > currentBulletIndentation && capturingSubBullet ? line : lineTrim
);
lastTagsAtCurrentIndentation.add(trimmedMatchLowerCase);
});
} else if (lineIndentation > currentBulletIndentation && lastTagsAtCurrentIndentation.size > 0) {
capturingSubBullet = true;
lastTagsAtCurrentIndentation.forEach((tag2) => {
var _a;
(_a = capturedBulletLists.get(tag2)) == null ? void 0 : _a.push(line);
});
}
}
});
return capturedBulletLists;
};
function consolidateTagInfo(fileLink, unitsContainingTag, bulletListsContainingTag) {
const consolidatedInfo = /* @__PURE__ */ new Map();
const addMatchesToConsolidatedInfo = (tag, matches) => {
const existingMatches = consolidatedInfo.get(tag) || [];
const newMatches = matches.map((matchString) => ({
stringContainingTag: matchString,
fileLink
}));
consolidatedInfo.set(tag, existingMatches.concat(newMatches));
};
unitsContainingTag == null ? void 0 : unitsContainingTag.forEach((matches, tag) => {
addMatchesToConsolidatedInfo(tag, matches);
});
bulletListsContainingTag == null ? void 0 : bulletListsContainingTag.forEach((matches, tag) => {
addMatchesToConsolidatedInfo(tag, matches);
});
return consolidatedInfo;
}
var processFile = async (vault, settings, file, tagOfInterest) => {
const fileContents = await vault.cachedRead(file);
if (!containsTag(fileContents, tagOfInterest))
return /* @__PURE__ */ new Map();
const fileLink = settings.fullLinkName ? `[[${file.basename}]]` : `[[${file.basename}|*]]`;
switch (true) {
case (settings.bulletedSubItems && settings.includeLines):
return consolidateTagInfo(
fileLink,
findSmallestUnitsContainingTag(
fileContents,
tagOfInterest,
true
),
findBulletListsContainingTag(fileContents, tagOfInterest)
);
case (settings.bulletedSubItems && !settings.includeLines):
return consolidateTagInfo(
fileLink,
void 0,
findBulletListsContainingTag(fileContents, tagOfInterest)
);
case (!settings.bulletedSubItems && settings.includeLines):
default:
return consolidateTagInfo(
fileLink,
findSmallestUnitsContainingTag(
fileContents,
tagOfInterest,
false
),
void 0
);
}
};
var fetchTagData = async (app, settings, tagOfInterest) => {
const vault = app.vault;
const allFiles = vault.getMarkdownFiles();
return await Promise.all(
allFiles.filter(
(file) => !isTagPage(app, settings.frontmatterQueryProperty, file)
).map((file) => processFile(vault, settings, file, tagOfInterest))
).then((tagInfos) => {
const consolidatedTagInfo = /* @__PURE__ */ new Map();
tagInfos.forEach((tagInfo) => {
tagInfo.forEach((details, tag) => {
const existingDetails = consolidatedTagInfo.get(tag) || [];
consolidatedTagInfo.set(tag, existingDetails.concat(details));
});
});
return consolidatedTagInfo;
});
};
// src/utils/pageContent.ts
var generateTagPageContent = async (app, settings, tagsInfo, tagOfInterest) => {
const tagPageContent = [];
tagPageContent.push(
`---
${settings.frontmatterQueryProperty}: "${tagOfInterest}"
---`
);
tagPageContent.push(`## Tag Content for ${tagOfInterest.replace("*", "")}`);
if (tagsInfo.size > 1) {
const sortedTagsInfo = Array.from(tagsInfo).sort((a, b) => {
return a[0].length - b[0].length;
});
sortedTagsInfo.forEach(([baseTag, details]) => {
tagPageContent.push(`### ${baseTag}`);
details.forEach(({ stringContainingTag, fileLink }) => {
processTagMatch(stringContainingTag, fileLink, tagPageContent);
});
});
} else {
tagsInfo.forEach((details) => {
details.forEach(({ stringContainingTag, fileLink }) => {
processTagMatch(stringContainingTag, fileLink, tagPageContent);
});
});
}
const filesWithFrontmatterTag = app.vault.getMarkdownFiles().filter((file) => {
var _a;
const metaMatter = (_a = app.metadataCache.getFileCache(file)) == null ? void 0 : _a.frontmatter;
return (metaMatter == null ? void 0 : metaMatter.tags) ? matchesTagOfInterest(metaMatter.tags, tagOfInterest) : false;
}).map((file) => `- [[${file.basename}]]`);
if (filesWithFrontmatterTag.length > 0) {
const { cleanedTag } = getIsWildCard(tagOfInterest);
tagPageContent.push(`## Files with ${cleanedTag} in frontmatter`);
tagPageContent.push(...filesWithFrontmatterTag);
}
return tagPageContent.join("\n");
};
var extractFrontMatterTagValue = (app, view, frontMatterTag) => {
var _a;
if (view.file) {
try {
const metaMatter = (_a = app.metadataCache.getFileCache(view.file)) == null ? void 0 : _a.frontmatter;
return metaMatter == null ? void 0 : metaMatter[frontMatterTag];
} catch (err) {
console.log(err);
return;
}
}
};
function processTagMatch(fullTag, fileLink, tagPageContent) {
if (fullTag.trim().startsWith("-")) {
const [firstBullet, ...bullets] = fullTag.split("\n");
const firstBulletWithLink = `${firstBullet} ${fileLink}`;
tagPageContent.push([firstBulletWithLink, ...bullets].join("\n"));
} else {
tagPageContent.push(`- ${fullTag} ${fileLink}`);
}
}
function matchesTagOfInterest(tags, tagOfInterest) {
const normalizedTags = Array.isArray(tags) ? tags : [tags];
const { isWildCard, cleanedTag: tagBase } = getIsWildCard(tagOfInterest);
if (isWildCard) {
return normalizedTags.some((tag) => {
const fullTag = `#${tag}`;
return fullTag === tagBase || fullTag.startsWith(`${tagBase}/`);
});
} else {
return normalizedTags.some((tag) => `#${tag}` === tagBase);
}
}
var swapPageContent = (activeLeaf, newPageContent) => {
var _a;
(_a = activeLeaf == null ? void 0 : activeLeaf.currentMode) == null ? void 0 : _a.set(newPageContent, true);
};
var generateFilename = (cleanedTag, isWildCard, nestedSeparator) => {
return `${cleanedTag.replace("#", "").replaceAll("/", nestedSeparator)}${isWildCard ? nestedSeparator + "nested" : ""}${nestedSeparator}Tags.md`;
};
// main.ts
var DEFAULT_SETTINGS = {
tagPageDir: "Tags/",
frontmatterQueryProperty: "tag-page-query",
nestedSeparator: "_",
bulletedSubItems: true,
includeLines: true,
autoRefresh: true,
fullLinkName: false
};
var TagPagePlugin = class extends import_obsidian2.Plugin {
async onload() {
await this.loadSettings();
this.addSettingTab(new TagPageSettingTab(this.app, this));
this.ribbonIcon = this.addRibbonIcon(
"tag-glyph",
"Refresh tag page",
() => {
this.refreshTagPageContent();
}
);
this.ribbonIcon.style.display = "none";
this.addCommand({
id: "create-tag-page",
name: "Create tag page",
callback: () => {
new CreateTagPageModal(this.app, this).open();
}
});
this.registerEvent(
this.app.workspace.on("layout-change", () => {
this.updateRibbonIconVisibility();
this.autoRefreshTagPage();
})
);
this.registerEvent(
this.app.workspace.on("file-open", () => {
this.updateRibbonIconVisibility();
this.autoRefreshTagPage();
})
);
this.updateRibbonIconVisibility();
await this.autoRefreshTagPage();
}
updateRibbonIconVisibility() {
this.ribbonIcon.style.display = isTagPage(
this.app,
this.settings.frontmatterQueryProperty
) ? "block" : "none";
}
async autoRefreshTagPage() {
if (this.settings.autoRefresh && isTagPage(this.app, this.settings.frontmatterQueryProperty)) {
await this.refreshTagPageContent();
}
}
onunload() {
}
async loadSettings() {
this.settings = Object.assign(
{},
DEFAULT_SETTINGS,
await this.loadData()
);
}
async saveSettings() {
await this.saveData(this.settings);
}
/**
* Refreshes the content of the active tag page based on the current settings.
*
* @returns {Promise<void>} - A promise that resolves when the operation is complete.
*/
async refreshTagPageContent() {
const activeLeaf = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
if (!activeLeaf)
return;
const tagOfInterest = extractFrontMatterTagValue(
this.app,
activeLeaf,
this.settings.frontmatterQueryProperty
);
if (!tagOfInterest)
return;
const tagsInfo = await fetchTagData(
this.app,
this.settings,
tagOfInterest
);
const tagPageContentString = await generateTagPageContent(
this.app,
this.settings,
tagsInfo,
tagOfInterest
);
swapPageContent(activeLeaf, tagPageContentString);
}
/**
* Creates a new tag page or navigates to an existing one.
*
* @param {string} tag - The tag for which to create or navigate to a page.
* @returns {Promise<void>} - A promise that resolves when the operation is complete.
*/
async createTagPage(tag) {
const tagOfInterest = tag.startsWith("#") ? tag : `#${tag}`;
const { isWildCard, cleanedTag } = getIsWildCard(tagOfInterest);
const filename = generateFilename(
cleanedTag,
isWildCard,
this.settings.nestedSeparator
);
const tagPage = this.app.vault.getAbstractFileByPath(
`${this.settings.tagPageDir}${filename}`
);
if (!tagPage) {
const tagsInfo = await fetchTagData(
this.app,
this.settings,
tagOfInterest
);
const tagPageContentString = await generateTagPageContent(
this.app,
this.settings,
tagsInfo,
tagOfInterest
);
const exists = await this.app.vault.adapter.exists(
(0, import_obsidian2.normalizePath)(this.settings.tagPageDir)
);
if (!exists) {
await this.app.vault.createFolder(this.settings.tagPageDir);
}
const createdPage = await this.app.vault.create(
`${this.settings.tagPageDir}${filename}`,
tagPageContentString
);
await this.app.workspace.getLeaf().openFile(createdPage);
} else {
await this.app.workspace.getLeaf().openFile(tagPage);
}
}
};
var CreateTagPageModal = class extends import_obsidian2.Modal {
constructor(app, plugin) {
super(app);
this.plugin = plugin;
}
onOpen() {
const { contentEl } = this;
contentEl.setText("Tag to create page for:");
const tagForm = contentEl.createEl("form");
contentEl.addClass("create-page-modal");
const input = tagForm.createEl("input", { type: "text" });
input.placeholder = "#tag";
input.value = "#";
input.addEventListener("keydown", (e) => {
const cursorPosition = input.selectionStart;
if (cursorPosition === 1 && (e.key === "Backspace" || e.key === "Delete")) {
e.preventDefault();
}
});
const submitButton = tagForm.createEl("button", { type: "submit" });
submitButton.innerText = "Create Tag Page";
tagForm.addEventListener("submit", async (e) => {
e.preventDefault();
const tag = input.value;
this.contentEl.empty();
this.contentEl.setText(`Creating tag page for ${tag}...`);
await this.plugin.createTagPage(tag);
this.close();
});
}
onClose() {
const { contentEl } = this;
contentEl.empty();
}
};
var TagPageSettingTab = class extends import_obsidian2.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
new import_obsidian2.Setting(containerEl).setName("Tag page directory").setDesc("The directory in which to create tag pages.").addText(
(text) => text.setValue(this.plugin.settings.tagPageDir).onChange(async (value) => {
if (!value.endsWith("/")) {
value = `${value}/`;
}
this.plugin.settings.tagPageDir = value;
await this.plugin.saveSettings();
})
);
new import_obsidian2.Setting(containerEl).setName("Frontmatter query property").setDesc(
"The frontmatter property to use storing the query tag within the tag page. Required for page refresh."
).addText(
(text) => text.setValue(this.plugin.settings.frontmatterQueryProperty).onChange(async (value) => {
this.plugin.settings.frontmatterQueryProperty = value;
await this.plugin.saveSettings();
})
);
new import_obsidian2.Setting(containerEl).setName("Nested page separator").setDesc(
`Text used to separate levels for nested tags. Avoid \\/<>:"|?* and other characters that aren't file-safe, or you won't be able to make pages for nested tags.`
).addText(
(text) => text.setValue(this.plugin.settings.nestedSeparator).onChange(async (value) => {
this.plugin.settings.nestedSeparator = value;
await this.plugin.saveSettings();
})
);
new import_obsidian2.Setting(containerEl).setName("Include lines").setDesc("Include lines containing the tag in the tag page.").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.includeLines).onChange(async (value) => {
this.plugin.settings.includeLines = value;
await this.plugin.saveSettings();
})
);
new import_obsidian2.Setting(containerEl).setName("Bulleted sub-items").setDesc(
"Include bulleted sub-items containing the tag in the tag page."
).addToggle(
(toggle) => toggle.setValue(this.plugin.settings.bulletedSubItems).onChange(async (value) => {
this.plugin.settings.bulletedSubItems = value;
await this.plugin.saveSettings();
})
);
new import_obsidian2.Setting(containerEl).setName("Auto refresh").setDesc(
"Automatically refresh tag pages when they are opened or become active."
).addToggle(
(toggle) => toggle.setValue(this.plugin.settings.autoRefresh).onChange(async (value) => {
this.plugin.settings.autoRefresh = value;
await this.plugin.saveSettings();
})
);
new import_obsidian2.Setting(containerEl).setName("Display full link name as reference").setDesc(
"Each bit of pulled content will display the full link title as a reference as an end of line. Displays * when false."
).addToggle(
(toggle) => toggle.setValue(this.plugin.settings.fullLinkName).onChange(async (value) => {
this.plugin.settings.fullLinkName = value;
await this.plugin.saveSettings();
})
);
}
};

View file

@ -1,11 +0,0 @@
{
"id": "tag-page-md",
"name": "Tag Page",
"version": "1.1.0",
"minAppVersion": "0.15.0",
"description": "Dynamically generate and update tag-specific pages, offering a consolidated view of each tag's references across your vault.",
"author": "Matthew Sumpter",
"authorUrl": "https://matthewsumpter.org",
"fundingUrl": "https://www.buymeacoffee.com/buymeacofftu",
"isDesktopOnly": false
}

View file

@ -1,29 +0,0 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/
.create-page-modal {
/* add margin to all children */
& > * {
margin: 10px;
}
display: flex;
flex-direction: column;
text-align: center;
& form {
display: flex;
flex-direction: column;
& > input {
text-align: center;
}
}
}

17
.obsidian/plugins/waypoint/data.json vendored Normal file
View file

@ -0,0 +1,17 @@
{
"waypointFlag": "%% Waypoint %%",
"landmarkFlag": "%% Landmark %%",
"stopScanAtFolderNotes": false,
"showFolderNotes": false,
"showNonMarkdownFiles": true,
"debugLogging": false,
"useWikiLinks": false,
"useFrontMatterTitle": false,
"showEnclosingNote": false,
"folderNoteType": "INSIDE_FOLDER",
"ignorePaths": [
"_attachments"
],
"useSpaces": false,
"numSpaces": 2
}

View file

@ -10,13 +10,49 @@
{ {
"id": "7d5274162457b1c7", "id": "7d5274162457b1c7",
"type": "leaf", "type": "leaf",
"pinned": true,
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "Readme.md", "file": "Readme.md",
"mode": "preview", "mode": "preview",
"source": true "source": true
},
"pinned": true,
"icon": "lucide-file",
"title": "Readme"
} }
},
{
"id": "073b99b42ebd2844",
"type": "leaf",
"pinned": true,
"state": {
"type": "markdown",
"state": {
"file": "Notes/__Using The Vault.md",
"mode": "preview",
"source": true
},
"pinned": true,
"icon": "lucide-file",
"title": "__Using The Vault"
}
},
{
"id": "ac5db91574f2a15e",
"type": "leaf",
"pinned": true,
"state": {
"type": "markdown",
"state": {
"file": "__Dashboard.md",
"mode": "preview",
"source": true
},
"pinned": true,
"icon": "lucide-file",
"title": "__Dashboard"
} }
} }
] ]
@ -39,7 +75,9 @@
"type": "file-explorer", "type": "file-explorer",
"state": { "state": {
"sortOrder": "alphabetical" "sortOrder": "alphabetical"
} },
"icon": "lucide-folder-closed",
"title": "Files"
} }
}, },
{ {
@ -54,7 +92,9 @@
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
"sortOrder": "alphabetical" "sortOrder": "alphabetical"
} },
"icon": "lucide-search",
"title": "Search"
} }
}, },
{ {
@ -62,7 +102,9 @@
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "bookmarks", "type": "bookmarks",
"state": {} "state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
} }
} }
] ]
@ -93,7 +135,9 @@
"searchQuery": "", "searchQuery": "",
"backlinkCollapsed": false, "backlinkCollapsed": false,
"unlinkedCollapsed": true "unlinkedCollapsed": true
} },
"icon": "links-coming-in",
"title": "Backlinks for Readme"
} }
}, },
{ {
@ -105,7 +149,9 @@
"file": "Readme.md", "file": "Readme.md",
"linksCollapsed": false, "linksCollapsed": false,
"unlinkedCollapsed": true "unlinkedCollapsed": true
} },
"icon": "links-going-out",
"title": "Outgoing links from Readme"
} }
}, },
{ {
@ -116,7 +162,9 @@
"state": { "state": {
"sortOrder": "frequency", "sortOrder": "frequency",
"useHierarchy": true "useHierarchy": true
} },
"icon": "lucide-tags",
"title": "Tags"
} }
}, },
{ {
@ -126,7 +174,9 @@
"type": "outline", "type": "outline",
"state": { "state": {
"file": "Readme.md" "file": "Readme.md"
} },
"icon": "lucide-list",
"title": "Outline of Readme"
} }
}, },
{ {
@ -138,7 +188,9 @@
"sortOrder": "frequency", "sortOrder": "frequency",
"showSearch": false, "showSearch": false,
"searchQuery": "" "searchQuery": ""
} },
"icon": "lucide-archive",
"title": "All properties"
} }
} }
], ],
@ -156,57 +208,56 @@
"zk-prefixer:Create new unique note": true, "zk-prefixer:Create new unique note": true,
"command-palette:Open command palette": false, "command-palette:Open command palette": false,
"smart-random-note:Open Random Note from Search": true, "smart-random-note:Open Random Note from Search": true,
"dashboard-navigator:Open dashboard navigator": false, "dashboard-navigator:Open dashboard navigator": false
"table-editor-obsidian:Advanced Tables Toolbar": true
} }
}, },
"active": "7d5274162457b1c7", "active": "7d5274162457b1c7",
"lastOpenFiles": [ "lastOpenFiles": [
"Notes/__Using The Vault.md", "Notes/__Using The Vault.md",
"Readme.md",
"__Dashboard.md", "__Dashboard.md",
"Notes/Obtaining Source Material.md", "Attic",
"Notes/Obsidian ToC.md", "New folder",
"Notes/Krita Quick Reference.md", "New shortcut.lnk",
"Notes/eInk Setting.md", "Notes/attachments/attachments.md",
"Notes/Drawing Tablet Quick Reference.md", "Notes/attachments/Coloring Page Quick Reference",
"Notes/Dot to Dot Quick Reference.md", "Ideas - Inspiration/attachments/attachments.md",
"Ideas - Inspiration/attachments/Coloring Page Quick Reference",
"Notes/Coloring Page Quick Reference.md", "Notes/Coloring Page Quick Reference.md",
"Notes/Digital coloring and drawing.md",
"Notes/Convert photo to coloring page.md",
"Notes/Convert PDF Coloring Pages.md",
"Notes/Color Palette Generator.md", "Notes/Color Palette Generator.md",
"Notes/Android Drawing Apps.md", "Notes/Convert PDF Coloring Pages.md",
"Notes/Notes.md",
"Readme.md",
"Notes/_Troubleshooting The Vault.md", "Notes/_Troubleshooting The Vault.md",
"_Gallery - Favorites.md", "consistency-report.md",
"Notes/attachments/Vault Screenshot 3.png",
"Notes/attachments/Vault Screenshot 2.png",
"Notes/attachments/Vault Screenshot 1.png",
"Notes/attachments/Palate-Layer---Fox.png",
"Notes/attachments/Obsidian ToC.png",
"Notes/attachments/Imagepipe_361.jpg",
"Notes/attachments/Imagepipe_360.jpg", "Notes/attachments/Imagepipe_360.jpg",
"Notes/attachments/Imagepipe_359.jpg", "Notes/attachments/Imagepipe_359.jpg",
"Notes/attachments/Imagepipe_361.jpg", "Notes/attachments/DSC02900-3.jpg",
"Notes/attachments/2024-09-13_17-00_1.png", "Notes/attachments/downloading_2.png",
"Notes/attachments/2024-09-13_17-00.png", "attachments/Readme",
"Notes/attachments/2024-09-13_16-58.png", "attachments",
"Notes/attachments/2024-09-13_16-56.png", "Notes/attachments/Obsidian ToC",
"Notes/attachments/2024-09-13_16-56_1.png", "Notes/attachments/Krita Quick Reference",
"Notes/Extract Images From PDF.md", "Notes/attachments/Dot to Dot Quick Reference",
"kritarc", "Coloring/Source Materials/Source Materials.md",
"Resources/sessions/Zentangle.0040.ksn", "Notes/Untitled.md",
"Resources/sessions/Coloring.0058.ksn", "Notes/Android Drawing Apps.md",
"Resources/sessions/Coloring.0057.ksn", "Zentangle/Tangles/attachments/attachments.md",
"Resources/sessions/Coloring.0056.ksn", "Zentangle/Practice/attachments/attachments.md",
"Resources/sessions/Coloring.0055.ksn", "Zentangle/In Progress/attachments/attachments.md",
"Resources/input/photoshopcompatible.profile", "Zentangle/Practice/attachments/Untitled.md",
"Resources/input/painttoolsaicompatible.profile", "Zentangle/_ZIA/attachments/attachments.md",
"Resources/input/kritadefault.profile", "Zentangle/In Progress/attachments/Untitled.md",
"Resources/input/clipstudiopaintcompatible.profile", "Drawing/Practice/attachments/attachments.md",
"Dot to Dot/_Gallery - Dot to Dot.md", "Drawing/In Progress/attachments/attachments.md",
"Dot to Dot/In Progress/moon-base.md", "Drawing/Complete/attachments/attachments.md",
"Dot to Dot/In Progress/squirrel.md", "Dot to Dot/Source Materials/Source Materials.md",
"Dot to Dot/In Progress/polar-bear.md", "Dot to Dot/Prepped/attachments/attachments.md",
"Dot to Dot/In Progress/penguin.md", "Coloring/Prepped/attachments/attachments.canvas"
"Dot to Dot/In Progress/haunted-house.md",
"Dot to Dot/In Progress/bulldozer.md",
"Dot to Dot/In Progress/_template.md",
"Dot to Dot/Source Materials/TimsPrintables/bulldozer-dot-to-dot_2_thumb.png",
"Dot to Dot/Source Materials/TimsPrintables/bulldozer-dot-to-dot_1_thumb.png"
] ]
} }

1
Attic/.nomedia Normal file
View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -34,6 +34,6 @@ source: N/A
## Screenshots ## Screenshots
![](Notes/attachments/2024-09-13_16-56.png) ![](attachments/Coloring%20Page%20Quick%20Reference/2024-09-13_16-56.png)
![](Notes/attachments/2024-09-13_16-56_1.png) ![](attachments/Coloring%20Page%20Quick%20Reference/2024-09-13_16-56_1.png)

View file

@ -7,7 +7,7 @@ created_at: "2023-02-28"
source: "Unknown" source: "Unknown"
--- ---
![](Notes/attachments/DSC02900-3.jpg) ![](attachments/Digital%20coloring%20and%20drawing/DSC02900-3.jpg)
## Changelog {#changelog} ## Changelog {#changelog}
@ -195,23 +195,23 @@ Hopefully you can do the same.
### Complete Coloring Page {#complete-coloring-page} ### Complete Coloring Page {#complete-coloring-page}
![](Notes/attachments/Complete---Fox-1.png) ![](attachments/Digital%20coloring%20and%20drawing/Complete---Fox-1.png)
### In Progress Coloring Page {#in-progress-coloring-page} ### In Progress Coloring Page {#in-progress-coloring-page}
![](Notes/attachments/Blending---On-Top---Fox.png) ![](attachments/Digital%20coloring%20and%20drawing/Blending---On-Top---Fox.png)
### Palate Layer {#palate-layer} ### Palate Layer {#palate-layer}
![](Notes/attachments/Palate-Layer---Fox.png) ![](attachments/Digital%20coloring%20and%20drawing/Palate-Layer---Fox.png)
### Blending - Darken {#blending-darken} ### Blending - Darken {#blending-darken}
![](Notes/attachments/Blending---Darken---Layer---Fox.png) ![](attachments/Digital%20coloring%20and%20drawing/Blending---Darken---Layer---Fox.png)
### Blending - Normal {#blending-normal} ### Blending - Normal {#blending-normal}
![](Notes/attachments/Blending---Normal---Layer---Fox.png) ![](attachments/Digital%20coloring%20and%20drawing/Blending---Normal---Layer---Fox.png)
## Advanced Coloring With Krita {#advanced-coloring-with-krita} ## Advanced Coloring With Krita {#advanced-coloring-with-krita}
@ -227,7 +227,7 @@ The below sections layout how I setup Krita overall and I leave the practical im
## Important Note ## Important Note
Please see [Krita Quick Reference](Notes/Krita%20Quick%20Reference.md) instead of the below for current information on using Krita with mobile devices, particularly Android devices. Please see [Krita Quick Reference](Krita%20Quick%20Reference.md) instead of the below for current information on using Krita with mobile devices, particularly Android devices.
The below is the original blog post information which may have 'skewed out of date' over time compared to the `Krita Quick Reference` note stored in this vault. The below is the original blog post information which may have 'skewed out of date' over time compared to the `Krita Quick Reference` note stored in this vault.

View file

@ -42,8 +42,8 @@ source: N/A
## Screenshots ## Screenshots
![](Notes/attachments/2024-09-13_16-58.png) ![](attachments/Dot%20to%20Dot%20Quick%20Reference/2024-09-13_16-58.png)
![](Notes/attachments/2024-09-13_17-00.png) ![](attachments/Dot%20to%20Dot%20Quick%20Reference/2024-09-13_17-00.png)
![](Notes/attachments/2024-09-13_17-00_1.png) ![](attachments/Dot%20to%20Dot%20Quick%20Reference/2024-09-13_17-00_1.png)

View file

@ -24,8 +24,8 @@ title: **Table of Contents**
## Input Device Tips / Tricks ## Input Device Tips / Tricks
- [Drawing Tablet Quick Reference](Notes/Drawing%20Tablet%20Quick%20Reference.md) - [Drawing Tablet Quick Reference](Drawing%20Tablet%20Quick%20Reference.md)
- [Trackpad Quick Reference](Notes/Trackpad%20Quick%20Reference.md) - [Trackpad Quick Reference](Trackpad%20Quick%20Reference.md)
## Android Tablet Tips / Tricks ## Android Tablet Tips / Tricks
@ -101,9 +101,9 @@ The below are the main hid settings KemoNine uses with a Samsung Android tablet
The following are the device configs KemoNine uses within each device's setup/config tool(s). The following are the device configs KemoNine uses within each device's setup/config tool(s).
- [Wacom One (Small) Drawing Tablet](Notes/Drawing%20Tablet%20Quick%20Reference.md#^163d42) - [Wacom One (Small) Drawing Tablet](Drawing%20Tablet%20Quick%20Reference.md#^163d42)
- [Logitech T650 Trackpad](Notes/Trackpad%20Quick%20Reference.md#^9233aa) - [Logitech T650 Trackpad](Trackpad%20Quick%20Reference.md#^9233aa)
- [Samsung Z Fold 4](Notes/Krita%20Quick%20Reference.md#^0f3b48) - [Samsung Z Fold 4](#^0f3b48)
### Krita Input Config ### Krita Input Config
@ -143,12 +143,12 @@ The below are the input settings KemoNine uses within Krita
### Main Krita View With File Open ### Main Krita View With File Open
![](Notes/attachments/Imagepipe_359.jpg) ![](attachments/Krita%20Quick%20Reference/Imagepipe_359.jpg)
### Canvas View ### Canvas View
![](Notes/attachments/Imagepipe_360.jpg) ![](attachments/Krita%20Quick%20Reference/Imagepipe_360.jpg)
### Pop-up Palette ### Pop-up Palette
![](Notes/attachments/Imagepipe_361.jpg) ![](attachments/Krita%20Quick%20Reference/Imagepipe_361.jpg)

19
Notes/Notes.md Normal file
View file

@ -0,0 +1,19 @@
%% Begin Waypoint %%
- [__Using The Vault](./__Using%20The%20Vault.md)
- [_Troubleshooting The Vault](./_Troubleshooting%20The%20Vault.md)
- [Android Drawing Apps](./Android%20Drawing%20Apps.md)
- **[attachments](./attachments/attachments.md)**
- [Color Palette Generator](./Color%20Palette%20Generator.md)
- [Coloring Page Quick Reference](./Coloring%20Page%20Quick%20Reference.md)
- [Convert PDF Coloring Pages](./Convert%20PDF%20Coloring%20Pages.md)
- [Convert photo to coloring page](./Convert%20photo%20to%20coloring%20page.md)
- [Digital coloring and drawing](./Digital%20coloring%20and%20drawing.md)
- [Dot to Dot Quick Reference](./Dot%20to%20Dot%20Quick%20Reference.md)
- [Drawing Tablet Quick Reference](./Drawing%20Tablet%20Quick%20Reference.md)
- [eInk Setting](./eInk%20Setting.md)
- [Krita Quick Reference](./Krita%20Quick%20Reference.md)
- [Obsidian ToC](./Obsidian%20ToC.md)
- [Obtaining Source Material](./Obtaining%20Source%20Material.md)
- [Trackpad Quick Reference](./Trackpad%20Quick%20Reference.md)
%% End Waypoint %%

View file

@ -18,4 +18,4 @@ title: **Table of Contents**
To see a table of contents using built in methods: To see a table of contents using built in methods:
![](Notes/attachments/Obsidian%20ToC.png) ![](attachments/Obsidian%20ToC/Obsidian%20ToC.png)

View file

@ -14,3 +14,7 @@ title: **Table of Contents**
## Galleries Don't Update ## Galleries Don't Update
If the gallery pages are not updating properly, it's likely the cache the plugin uses needs to be refreshed. From the command palette, run `Note Gallery: Drop all cache and re-initialize database` to force update all galleries. If the gallery pages are not updating properly, it's likely the cache the plugin uses needs to be refreshed. From the command palette, run `Note Gallery: Drop all cache and re-initialize database` to force update all galleries.
## Attachment Weirdness / Infinite Loops
The `Consistent Attachments and Links` plugin can act strange and/or trigger an infinite loop when it encounters any folder notes that act as indexes. Check the file and folder exclusions for this plugin to ensure they are accurate and exclude all indexes.

View file

@ -12,6 +12,58 @@ The creator of this Obsidian vault has **NOT** included any source materials or
Please note: If you're viewing this file from the main website where the files have been published, some, if not all, of the links below will be broken. These links will *not* be broken once the vault is opened within Obsidian. Please note: If you're viewing this file from the main website where the files have been published, some, if not all, of the links below will be broken. These links will *not* be broken once the vault is opened within Obsidian.
## Pinned Tabs
There are a number of pinned tab to ensure users see the most useful information when first opening this vault. Feel free to unpin tabs as desired.
I do recommend keeping the `__Dashboard` tab pinned as it's a great starting point for using this vault, even when used heavily day to day.
## A Note About Deletions
Due to the way the attachment folder indexes and automatic attachment management work: attachments may not be auto-deleted when deleting a note. This is a quirk with how the attachment folder indexes interact with the automatic attachment management setup.
I do *not* consider this a problem.
A paper comp book won't have content deleted, if anything: it'd be crossed out and still somewhat visible. To properly 'delete' something from a paper comp book, you'd need to cut or tear the page(s). I doubt many are going to that much trouble.
Instead of deletes, there is an `Attic` folder where content can be moved out of visible scope but still available if you ever need to go back and reference it. This will allow you to achieve a similar work flow as 'crossing out' content in a paper comp book.
If you are the type of person who would go through the trouble of cutting or tearing page(s) in a paper comp book, you can still delete a note and its attached files. You'll just need to delete both the note and folder with the attachments manually.
## Automatic Attachment Management
This vault is setup to automatically manage attachments. It is configured to ensure all note attachments are stored in the appropriate `attachments` directory under a sub-folder with the same name as the note.
This will automatically move attachments and update links when a note is moved between folders. This is especially helpful as a note moves through the various state/status folders.
You can disable this functionality by disabling the `Consistent Attachments and Links` and `Custom Attachment Location` community plugins.
## Folder Indexes
### Important
Please note *all* folder indexes *must* be excluded from the `Consistent Attachments and Links` plugin (if enabled). These folder indexes can create an infinite loop situation when the attachment automatic management is triggered.
This is particularly problematic when running the `Reorganize Vault` command.
### Attachment Folders
This vault is setup to have "Folder Notes" that index the contents of each `attachments` directory. These folder notes are auto-updated and are a simple index of files within a given `attachments` directory. Simply click on an `attachments` directory to open the index.
### Source Materials Folders
This vault is setup to have "Folder Notes" that index the contents of each `Source Materials` directory. These folder notes are auto-updated and are a simple index of files within a given `Source Materials` directory. Simply click on an `Source Materials` directory to open the index.
### Notes Folder
The `Notes` directory contains a lot of useful information related to digital art. The directory is indexed using "Folder Notes" and the index is automatically updated when new notes are added to the directory. Simply click on the `Notes` directory to open the index.
### Disabling
You can completely disable the directory index functionality by disabling the `Folder Notes` and `Waypoint` plugins. When disabling these plugins, you'll need to manually delete the folder notes within each `attachments` directory, each `Source Materials` directory as well as the folder note within the `Notes` directory.
If you would like to keep the folder index functionality for only a sub-set of directories, simply delete the folder note for any directories you do not want indexed.
## Comp Book (Vault) Layout ## Comp Book (Vault) Layout
- Different folders for each form of art performed - Different folders for each form of art performed
@ -47,9 +99,12 @@ Please note: If you're viewing this file from the main website where the files h
- Each gallery uses queries to find the notes shown based on folders - Each gallery uses queries to find the notes shown based on folders
- You do *not* need to manage the galleries directly - You do *not* need to manage the galleries directly
- Art works should flow between sub folders as progress is made. For example: `Prepped` -> `In Progress` -> `Complete` for order - Art works should flow between sub folders as progress is made. For example: `Prepped` -> `In Progress` -> `Complete` for order
- The files in the `Notes` section are non-indexed and exist as a generalized list of topics in the file browser. This can be changed to match your preferences.
- The `Ideas - Inspiration` folder does *not* have sub-folders and assumes you'll just keep a list of notes similar to the `Notes` section or adjust this area to match your preferences. - The `Ideas - Inspiration` folder does *not* have sub-folders and assumes you'll just keep a list of notes similar to the `Notes` section or adjust this area to match your preferences.
- The [__Dashboard](__Dashboard.md) is meant to be 'the starting point' and 'overview' for the whole vault - The [\_\_Dashboard](../__Dashboard.md) is meant to be 'the starting point' and 'overview' for the whole vault
## Troubleshooting
The [Troubleshooting The Vault](_Troubleshooting%20The%20Vault.md) note includes some common scenarios that can happen as the vault is used over time. If you have problems with the vault, start with this page for troubleshooting.
## New Artwork General Workflow ## New Artwork General Workflow
@ -57,7 +112,7 @@ Please note: If you're viewing this file from the main website where the files h
- Convert source material to art app native format - Convert source material to art app native format
- Setup any necessary layers - Setup any necessary layers
- See [Coloring Page Quick Reference](Notes/Coloring%20Page%20Quick%20Reference.md) for coloring pages - See [Coloring Page Quick Reference](Notes/Coloring%20Page%20Quick%20Reference.md) for coloring pages
- See [Dot to Dot Quick Reference](Notes/Dot%20to%20Dot%20Quick%20Reference.md) for dot to dot pages - See [Dot to Dot Quick Reference](Dot%20to%20Dot%20Quick%20Reference.md) for dot to dot pages
- Create page for artwork using the appropriate template - Create page for artwork using the appropriate template
- Link files to new artwork page as appropriate - Link files to new artwork page as appropriate
- Move artwork page to appropriate sub folder - Move artwork page to appropriate sub folder
@ -67,12 +122,12 @@ Please note: If you're viewing this file from the main website where the files h
## Suggested Reading (Notes) ## Suggested Reading (Notes)
- [Obtaining Source Material](Notes/Obtaining%20Source%20Material.md) - [Obtaining Source Material](Obtaining%20Source%20Material.md)
- [Android Drawing Apps](Notes/Android%20Drawing%20Apps.md) - [Android Drawing Apps](Android%20Drawing%20Apps.md)
- [Krita Quick Reference](Notes/Krita%20Quick%20Reference.md) - [Krita Quick Reference](Krita%20Quick%20Reference.md)
- [Color Palette Generator](Notes/Color%20Palette%20Generator.md) - [Color Palette Generator](Color%20Palette%20Generator.md)
- [Coloring Page Quick Reference](Notes/Coloring%20Page%20Quick%20Reference.md) - [Coloring Page Quick Reference](Notes/Coloring%20Page%20Quick%20Reference.md)
- [Dot to Dot Quick Reference](Notes/Dot%20to%20Dot%20Quick%20Reference.md) - [Dot to Dot Quick Reference](Dot%20to%20Dot%20Quick%20Reference.md)
## Enjoy ## Enjoy

View file

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 573 KiB

After

Width:  |  Height:  |  Size: 573 KiB

View file

Before

Width:  |  Height:  |  Size: 490 KiB

After

Width:  |  Height:  |  Size: 490 KiB

View file

Before

Width:  |  Height:  |  Size: 541 KiB

After

Width:  |  Height:  |  Size: 541 KiB

View file

Before

Width:  |  Height:  |  Size: 894 KiB

After

Width:  |  Height:  |  Size: 894 KiB

View file

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View file

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View file

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 239 KiB

View file

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 334 KiB

View file

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 236 KiB

View file

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -0,0 +1,23 @@
%% Begin Waypoint %%
- **Coloring Page Quick Reference**
- [2024-09-13_16-56_1.png](./Coloring%20Page%20Quick%20Reference/2024-09-13_16-56_1.png)
- [2024-09-13_16-56.png](./Coloring%20Page%20Quick%20Reference/2024-09-13_16-56.png)
- **Digital coloring and drawing**
- [Blending---Darken---Layer---Fox.png](./Digital%20coloring%20and%20drawing/Blending---Darken---Layer---Fox.png)
- [Blending---Normal---Layer---Fox.png](./Digital%20coloring%20and%20drawing/Blending---Normal---Layer---Fox.png)
- [Blending---On-Top---Fox.png](./Digital%20coloring%20and%20drawing/Blending---On-Top---Fox.png)
- [Complete---Fox-1.png](./Digital%20coloring%20and%20drawing/Complete---Fox-1.png)
- [DSC02900-3.jpg](./Digital%20coloring%20and%20drawing/DSC02900-3.jpg)
- [Palate-Layer---Fox.png](./Digital%20coloring%20and%20drawing/Palate-Layer---Fox.png)
- **Dot to Dot Quick Reference**
- [2024-09-13_16-58.png](./Dot%20to%20Dot%20Quick%20Reference/2024-09-13_16-58.png)
- [2024-09-13_17-00_1.png](./Dot%20to%20Dot%20Quick%20Reference/2024-09-13_17-00_1.png)
- [2024-09-13_17-00.png](./Dot%20to%20Dot%20Quick%20Reference/2024-09-13_17-00.png)
- **Krita Quick Reference**
- [Imagepipe_359.jpg](./Krita%20Quick%20Reference/Imagepipe_359.jpg)
- [Imagepipe_360.jpg](./Krita%20Quick%20Reference/Imagepipe_360.jpg)
- [Imagepipe_361.jpg](./Krita%20Quick%20Reference/Imagepipe_361.jpg)
- **Obsidian ToC**
- [Obsidian ToC.png](./Obsidian%20ToC/Obsidian%20ToC.png)
%% End Waypoint %%

View file

@ -6,7 +6,7 @@ Digital art may be 'rigid' and 'not notebook friendly' but this Obsidian vault c
## Additional Details ## Additional Details
Please see the [__Using The Vault](Notes/__Using%20The%20Vault.md) file for additional detail how this vault can be used as a digital art composition book. Please note: some links on the `__Using The Vault` page will be broken when viewed from the website but *will* work properly when opened within Obsidian. Please see the [\_\_Using The Vault](Notes/__Using%20The%20Vault.md) file for additional detail how this vault can be used as a digital art composition book. Please note: some links on the `__Using The Vault` page will be broken when viewed from the website but *will* work properly when opened within Obsidian.
There are also screenshots below showing the vault in use. There are also screenshots below showing the vault in use.
@ -27,19 +27,19 @@ This project is licensed under the [Creative Commons BY-NC 4.0 International](ht
### From GitHub (the main site) ### From GitHub (the main site)
![How to download - GitHub](Notes/attachments/downloading_2.png) ![How to download - GitHub](attachments/Readme/downloading_2.png)
### From Forgejo (KemoNine's personal site mirror) ### From Forgejo (KemoNine's personal site mirror)
![How to download - Forgejo](Notes/attachments/downloading.png) ![How to download - Forgejo](attachments/Readme/downloading.png)
## Screenshots ## Screenshots
### Main Vault View ### Main Vault View
![Main Vault View](Notes/attachments/Vault%20Screenshot%201.png) ![Main Vault View](attachments/Readme/Vault%20Screenshot%201.png)
### KemoNine Zentangle View ### KemoNine Zentangle View
![KemoNine Zentangle View](Notes/attachments/Vault%20Screenshot%202.png) ![KemoNine Zentangle View](attachments/Readme/Vault%20Screenshot%202.png)
### KemoNine Coloring View ### KemoNine Coloring View
![KemoNine Coloring View](Notes/attachments/Vault%20Screenshot%203.png) ![KemoNine Coloring View](attachments/Readme/Vault%20Screenshot%203.png)

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1 @@
/storage/emulated/0/Krita

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -0,0 +1,4 @@
%% Begin Waypoint %%
%% End Waypoint %%

View file

@ -45,6 +45,7 @@ title: **Table of Contents**
## Reference ## Reference
- [Using The Vault](Notes/__Using%20The%20Vault.md)
- [Troubleshooting The Vault](Notes/_Troubleshooting%20The%20Vault.md) - [Troubleshooting The Vault](Notes/_Troubleshooting%20The%20Vault.md)
- [Obtaining Source Material](Notes/Obtaining%20Source%20Material.md) - [Obtaining Source Material](Notes/Obtaining%20Source%20Material.md)
- [Color Palette Generator](Notes/Color%20Palette%20Generator.md) - [Color Palette Generator](Notes/Color%20Palette%20Generator.md)

1
attachments/.nomedia Normal file
View file

@ -0,0 +1 @@
/storage/emulated/0/obsidian/digital-art-composition-book

View file

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View file

Before

Width:  |  Height:  |  Size: 523 KiB

After

Width:  |  Height:  |  Size: 523 KiB

View file

Before

Width:  |  Height:  |  Size: 571 KiB

After

Width:  |  Height:  |  Size: 571 KiB

View file

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View file

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB