Compare commits
13 commits
f119a01042
...
9d4412a407
Author | SHA1 | Date | |
---|---|---|---|
9d4412a407 | |||
497ea4a61a | |||
b12b301968 | |||
01e5326bc7 | |||
4601db3567 | |||
cbd9f8eb9f | |||
97a42fb7ed | |||
e1a82c1cf7 | |||
1d476aa416 | |||
0067f45e8b | |||
f9862afe79 | |||
0af814993c | |||
008f7d9f19 |
3
.obsidian/app.json
vendored
|
@ -6,5 +6,6 @@
|
|||
"useMarkdownLinks": true,
|
||||
"showUnsupportedFiles": true,
|
||||
"defaultViewMode": "preview",
|
||||
"livePreview": false
|
||||
"livePreview": false,
|
||||
"attachmentFolderPath": "./attachments"
|
||||
}
|
6
.obsidian/community-plugins.json
vendored
|
@ -4,11 +4,11 @@
|
|||
"note-gallery",
|
||||
"smart-random-note",
|
||||
"tag-word-cloud",
|
||||
"obsidian-sort-and-permute-lines",
|
||||
"dashboard-navigator",
|
||||
"automatic-table-of-contents",
|
||||
"obsidian-advanced-uri",
|
||||
"table-editor-obsidian",
|
||||
"folder-notes",
|
||||
"waypoint"
|
||||
"waypoint",
|
||||
"consistent-attachments-and-links",
|
||||
"obsidian-custom-attachment-location"
|
||||
]
|
47
.obsidian/core-plugins.json
vendored
|
@ -1,17 +1,30 @@
|
|||
[
|
||||
"file-explorer",
|
||||
"global-search",
|
||||
"graph",
|
||||
"backlink",
|
||||
"canvas",
|
||||
"outgoing-link",
|
||||
"tag-pane",
|
||||
"properties",
|
||||
"page-preview",
|
||||
"command-palette",
|
||||
"editor-status",
|
||||
"bookmarks",
|
||||
"zk-prefixer",
|
||||
"outline",
|
||||
"file-recovery"
|
||||
]
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": false,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"properties": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": false,
|
||||
"templates": false,
|
||||
"note-composer": false,
|
||||
"command-palette": true,
|
||||
"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
|
||||
}
|
2076
.obsidian/plugins/attachment-management/main.js
vendored
|
@ -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
|
||||
}
|
|
@ -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;
|
||||
}
|
22
.obsidian/plugins/consistent-attachments-and-links/data.json
vendored
Normal 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
|
||||
}
|
4930
.obsidian/plugins/consistent-attachments-and-links/main.js
vendored
Normal file
11
.obsidian/plugins/consistent-attachments-and-links/manifest.json
vendored
Normal 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"
|
||||
}
|
|
@ -14,5 +14,12 @@
|
|||
"color_audios": "#bfbf00",
|
||||
"color_pdf": "#00a300",
|
||||
"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": []
|
||||
}
|
1492
.obsidian/plugins/dashboard-navigator/main.js
vendored
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "dashboard-navigator",
|
||||
"name": "Dashboard navigator",
|
||||
"version": "2.0.0",
|
||||
"version": "5.2.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.",
|
||||
"author": "Bernardo Pires",
|
||||
|
|
285
.obsidian/plugins/dashboard-navigator/styles.css
vendored
|
@ -5,6 +5,7 @@ body {
|
|||
--dn-background-color: var(--background-secondary);
|
||||
--dn-foreground-color: var(--text-normal);
|
||||
--dn-border-color: var(--background-modifier-border);
|
||||
--dn-border-color-hover: var(--background-modifier-border-hover);
|
||||
--dn-file-property-color: #828282;
|
||||
--dn-font-size: 16px;
|
||||
|
||||
|
@ -71,7 +72,7 @@ body {
|
|||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
margin-top: var(--size-4-1);
|
||||
margin-bottom: var(--size-4-2);
|
||||
margin-bottom: var(--size-4-1);
|
||||
flex-wrap: wrap;
|
||||
align-content: center;
|
||||
}
|
||||
|
@ -251,6 +252,7 @@ body {
|
|||
display: none;
|
||||
}
|
||||
|
||||
a.dn-ext,
|
||||
a.dn-folder-path {
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
@ -280,57 +282,69 @@ table#dn-table td {
|
|||
text-overflow: ellipsis;
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
min-width: 50px;
|
||||
width: clamp(50px, auto, unset);
|
||||
font-size: var(--dn-font-size);
|
||||
}
|
||||
|
||||
table#dn-table th {
|
||||
position: sticky;
|
||||
top: 80px;
|
||||
z-index: 901;
|
||||
text-align: left;
|
||||
font-weight: var(--font-semibold);
|
||||
color: var(--text-normal);
|
||||
border-bottom: 1px solid var(--dn-border-color);
|
||||
cursor: pointer;
|
||||
background-color: var(--background-primary);
|
||||
}
|
||||
|
||||
table#dn-table th:not(.sort-active, th:nth-child(5)):hover {
|
||||
background-color: var(--tag-background);
|
||||
table#dn-table th:not(th:nth-child(6), th:nth-child(7)):hover {
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
table#dn-table th.sort-active {
|
||||
color: var(--text-normal);
|
||||
background-color: var(--tag-background);
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
table#dn-table th.sort-active.sort-asc::before {
|
||||
content: " ↑";
|
||||
color: var(--text-accent);
|
||||
font-weight: var(--font-bold);
|
||||
color: var(--interactive-accent);
|
||||
|
||||
}
|
||||
|
||||
table#dn-table th.sort-active.sort-desc::before {
|
||||
content: " ↓";
|
||||
color: var(--text-accent);
|
||||
font-weight: var(--font-bold);
|
||||
color: var(--interactive-accent);
|
||||
}
|
||||
|
||||
table#dn-table th:nth-child(1),
|
||||
table#dn-table th:nth-child(2),
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
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;
|
||||
}
|
||||
|
||||
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 {
|
||||
|
@ -367,25 +381,17 @@ table#dn-table tr:hover td {
|
|||
}
|
||||
|
||||
.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;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.dn-pagination span {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.dn-pagination span {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.dn-pagination-total-results {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.dn-pagination-total-results::after {
|
||||
clear: left;
|
||||
background-color: var(--background-secondary);
|
||||
z-index: 900;
|
||||
justify-content: space-between;
|
||||
border: 1px solid var(--dn-border-color);
|
||||
opacity: .9;
|
||||
}
|
||||
|
||||
.dn-btn-prev:disabled,
|
||||
|
@ -396,6 +402,7 @@ table#dn-table tr:hover td {
|
|||
.dn-btn-prev,
|
||||
.dn-btn-next {
|
||||
cursor: pointer;
|
||||
margin-left: var(--size-4-1);
|
||||
}
|
||||
|
||||
/* File icons */
|
||||
|
@ -513,6 +520,7 @@ a.dn-f-other::before {
|
|||
}
|
||||
|
||||
.dn-no-results-found {
|
||||
padding-left: var(--size-4-2);
|
||||
color: var(--text-faint);
|
||||
font-style: italic;
|
||||
}
|
||||
|
@ -522,12 +530,41 @@ a.dn-tag {
|
|||
border-radius: var(--tag-radius);
|
||||
margin-right: var(--size-4-1);
|
||||
padding-inline-end: var(--tag-padding-x);
|
||||
font-size: var(--tag-size);
|
||||
font-size: var(--font-size);
|
||||
background-color: var(--tag-background);
|
||||
color: var(--tag-color);
|
||||
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-videos,
|
||||
#dn-audios,
|
||||
|
@ -535,7 +572,8 @@ a.dn-tag {
|
|||
#dn-images,
|
||||
#dn-canvas,
|
||||
#dn-recent-notes,
|
||||
#dn-recent-files {
|
||||
#dn-recent-files,
|
||||
#dn-last-opened-files {
|
||||
padding: var(--size-4-2);
|
||||
background-color: var(--background-primary);
|
||||
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);
|
||||
}
|
||||
|
||||
table#dn-table.dn-tbl-column th:nth-child(even),
|
||||
table#dn-table.dn-tbl-column td:nth-child(even) {
|
||||
table#dn-table.dn-tbl-column td:nth-child(even of :not(.dn-hidden)) {
|
||||
background-color: var(--dn-even-background-color);
|
||||
}
|
||||
|
||||
|
@ -590,15 +627,60 @@ table#dn-table.dn-tbl-default td {
|
|||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.dn-div-top-preview-btns {
|
||||
text-align: left;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.dn-div-bottom-properties {
|
||||
text-align: center;
|
||||
text-align: left;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.dn-btn-close-properties {
|
||||
width: 30%;
|
||||
.dn-div-top-preview-btns button,
|
||||
.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) {
|
||||
.dn-flex {
|
||||
|
@ -621,10 +703,10 @@ table#dn-table.dn-tbl-default td {
|
|||
width: 30%;
|
||||
}
|
||||
|
||||
table#dn-table th:nth-child(3),
|
||||
table#dn-table td:nth-child(3),
|
||||
table#dn-table th:nth-child(5),
|
||||
table#dn-table td:nth-child(5) {
|
||||
table#dn-table th:nth-child(4),
|
||||
table#dn-table td:nth-child(4),
|
||||
table#dn-table th:nth-child(6),
|
||||
table#dn-table td:nth-child(6) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
@ -667,7 +749,11 @@ table#dn-table.dn-tbl-default td {
|
|||
table#dn-table th:nth-child(4),
|
||||
table#dn-table td:nth-child(4),
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
4
.obsidian/plugins/folder-notes/data.json
vendored
|
@ -9,7 +9,7 @@
|
|||
"excludeFolders": [
|
||||
{
|
||||
"type": "pattern",
|
||||
"string": "*_attachment*",
|
||||
"string": "*attachment*",
|
||||
"position": 0,
|
||||
"subFolders": true,
|
||||
"disableSync": true,
|
||||
|
@ -62,7 +62,7 @@
|
|||
"explorer": true,
|
||||
"path": true
|
||||
},
|
||||
"settingsTab": "file_explorer",
|
||||
"settingsTab": "general",
|
||||
"supportedFileTypes": [
|
||||
"md",
|
||||
"canvas"
|
||||
|
|
141
.obsidian/plugins/line-arrange/main.js
vendored
10
.obsidian/plugins/line-arrange/manifest.json
vendored
|
@ -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
|
||||
}
|
214
.obsidian/plugins/litegallery/main.js
vendored
|
@ -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() {
|
||||
}
|
||||
};
|
10
.obsidian/plugins/litegallery/manifest.json
vendored
|
@ -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
|
||||
}
|
111
.obsidian/plugins/litegallery/styles.css
vendored
|
@ -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;
|
||||
|
||||
}
|
6555
.obsidian/plugins/multi-column-markdown/main.js
vendored
|
@ -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
|
||||
}
|
249
.obsidian/plugins/multi-column-markdown/styles.css
vendored
|
@ -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)
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isDesktopOnly": false,
|
||||
"js": "main.js",
|
||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||
"version": "1.44.1",
|
||||
"version": "1.44.2",
|
||||
"author": "Vinzent",
|
||||
"authorUrl": "https://github.com/Vinzent03"
|
||||
}
|
||||
|
|
18
.obsidian/plugins/obsidian-custom-attachment-location/data.json
vendored
Normal 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
|
||||
}
|
9101
.obsidian/plugins/obsidian-custom-attachment-location/main.js
vendored
Normal file
11
.obsidian/plugins/obsidian-custom-attachment-location/manifest.json
vendored
Normal 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"
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"formatType": "normal",
|
||||
"showRibbonIcon": true,
|
||||
"bindEnter": true,
|
||||
"bindTab": true
|
||||
}
|
14109
.obsidian/plugins/table-editor-obsidian/main.js
vendored
|
@ -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"
|
||||
}
|
|
@ -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;
|
||||
}
|
9
.obsidian/plugins/tag-page-md/data.json
vendored
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"tagPageDir": "_Tags/",
|
||||
"frontmatterQueryProperty": "tag-page-query",
|
||||
"nestedSeparator": "_",
|
||||
"bulletedSubItems": true,
|
||||
"includeLines": true,
|
||||
"autoRefresh": true,
|
||||
"fullLinkName": false
|
||||
}
|
525
.obsidian/plugins/tag-page-md/main.js
vendored
|
@ -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();
|
||||
})
|
||||
);
|
||||
}
|
||||
};
|
11
.obsidian/plugins/tag-page-md/manifest.json
vendored
|
@ -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
|
||||
}
|
29
.obsidian/plugins/tag-page-md/styles.css
vendored
|
@ -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
|
@ -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
|
||||
}
|
149
.obsidian/workspace.json
vendored
|
@ -10,13 +10,49 @@
|
|||
{
|
||||
"id": "7d5274162457b1c7",
|
||||
"type": "leaf",
|
||||
"pinned": true,
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Readme.md",
|
||||
"mode": "preview",
|
||||
"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",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
},
|
||||
"icon": "lucide-folder-closed",
|
||||
"title": "Files"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -54,7 +92,9 @@
|
|||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
},
|
||||
"icon": "lucide-search",
|
||||
"title": "Search"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -62,7 +102,9 @@
|
|||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {}
|
||||
"state": {},
|
||||
"icon": "lucide-bookmark",
|
||||
"title": "Bookmarks"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -93,7 +135,9 @@
|
|||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "Backlinks for Readme"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -105,7 +149,9 @@
|
|||
"file": "Readme.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "Outgoing links from Readme"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -116,7 +162,9 @@
|
|||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true
|
||||
}
|
||||
},
|
||||
"icon": "lucide-tags",
|
||||
"title": "Tags"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -126,7 +174,9 @@
|
|||
"type": "outline",
|
||||
"state": {
|
||||
"file": "Readme.md"
|
||||
}
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "Outline of Readme"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -138,7 +188,9 @@
|
|||
"sortOrder": "frequency",
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
}
|
||||
},
|
||||
"icon": "lucide-archive",
|
||||
"title": "All properties"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -156,57 +208,56 @@
|
|||
"zk-prefixer:Create new unique note": true,
|
||||
"command-palette:Open command palette": false,
|
||||
"smart-random-note:Open Random Note from Search": true,
|
||||
"dashboard-navigator:Open dashboard navigator": false,
|
||||
"table-editor-obsidian:Advanced Tables Toolbar": true
|
||||
"dashboard-navigator:Open dashboard navigator": false
|
||||
}
|
||||
},
|
||||
"active": "7d5274162457b1c7",
|
||||
"lastOpenFiles": [
|
||||
"Notes/__Using The Vault.md",
|
||||
"Readme.md",
|
||||
"__Dashboard.md",
|
||||
"Notes/Obtaining Source Material.md",
|
||||
"Notes/Obsidian ToC.md",
|
||||
"Notes/Krita Quick Reference.md",
|
||||
"Notes/eInk Setting.md",
|
||||
"Notes/Drawing Tablet Quick Reference.md",
|
||||
"Notes/Dot to Dot Quick Reference.md",
|
||||
"Attic",
|
||||
"New folder",
|
||||
"New shortcut.lnk",
|
||||
"Notes/attachments/attachments.md",
|
||||
"Notes/attachments/Coloring Page Quick Reference",
|
||||
"Ideas - Inspiration/attachments/attachments.md",
|
||||
"Ideas - Inspiration/attachments/Coloring Page Quick Reference",
|
||||
"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/Android Drawing Apps.md",
|
||||
"Notes/Convert PDF Coloring Pages.md",
|
||||
"Notes/Notes.md",
|
||||
"Readme.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_359.jpg",
|
||||
"Notes/attachments/Imagepipe_361.jpg",
|
||||
"Notes/attachments/2024-09-13_17-00_1.png",
|
||||
"Notes/attachments/2024-09-13_17-00.png",
|
||||
"Notes/attachments/2024-09-13_16-58.png",
|
||||
"Notes/attachments/2024-09-13_16-56.png",
|
||||
"Notes/attachments/2024-09-13_16-56_1.png",
|
||||
"Notes/Extract Images From PDF.md",
|
||||
"kritarc",
|
||||
"Resources/sessions/Zentangle.0040.ksn",
|
||||
"Resources/sessions/Coloring.0058.ksn",
|
||||
"Resources/sessions/Coloring.0057.ksn",
|
||||
"Resources/sessions/Coloring.0056.ksn",
|
||||
"Resources/sessions/Coloring.0055.ksn",
|
||||
"Resources/input/photoshopcompatible.profile",
|
||||
"Resources/input/painttoolsaicompatible.profile",
|
||||
"Resources/input/kritadefault.profile",
|
||||
"Resources/input/clipstudiopaintcompatible.profile",
|
||||
"Dot to Dot/_Gallery - Dot to Dot.md",
|
||||
"Dot to Dot/In Progress/moon-base.md",
|
||||
"Dot to Dot/In Progress/squirrel.md",
|
||||
"Dot to Dot/In Progress/polar-bear.md",
|
||||
"Dot to Dot/In Progress/penguin.md",
|
||||
"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"
|
||||
"Notes/attachments/DSC02900-3.jpg",
|
||||
"Notes/attachments/downloading_2.png",
|
||||
"attachments/Readme",
|
||||
"attachments",
|
||||
"Notes/attachments/Obsidian ToC",
|
||||
"Notes/attachments/Krita Quick Reference",
|
||||
"Notes/attachments/Dot to Dot Quick Reference",
|
||||
"Coloring/Source Materials/Source Materials.md",
|
||||
"Notes/Untitled.md",
|
||||
"Notes/Android Drawing Apps.md",
|
||||
"Zentangle/Tangles/attachments/attachments.md",
|
||||
"Zentangle/Practice/attachments/attachments.md",
|
||||
"Zentangle/In Progress/attachments/attachments.md",
|
||||
"Zentangle/Practice/attachments/Untitled.md",
|
||||
"Zentangle/_ZIA/attachments/attachments.md",
|
||||
"Zentangle/In Progress/attachments/Untitled.md",
|
||||
"Drawing/Practice/attachments/attachments.md",
|
||||
"Drawing/In Progress/attachments/attachments.md",
|
||||
"Drawing/Complete/attachments/attachments.md",
|
||||
"Dot to Dot/Source Materials/Source Materials.md",
|
||||
"Dot to Dot/Prepped/attachments/attachments.md",
|
||||
"Coloring/Prepped/attachments/attachments.canvas"
|
||||
]
|
||||
}
|
1
Attic/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Coloring/Complete/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Coloring/In Progress/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Coloring/In Progress/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Coloring/Prepped/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Coloring/Prepped/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Coloring/Source Materials/Source Materials.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Dot to Dot/Complete/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Dot to Dot/In Progress/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Dot to Dot/In Progress/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Dot to Dot/Prepped/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Dot to Dot/Prepped/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Dot to Dot/Source Materials/Source Materials.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Drawing/Complete/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Drawing/In Progress/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Drawing/In Progress/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Drawing/Practice/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Drawing/Practice/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Ideas - Inspiration/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
|
@ -34,6 +34,6 @@ source: N/A
|
|||
|
||||
## 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)
|
|
@ -7,7 +7,7 @@ created_at: "2023-02-28"
|
|||
source: "Unknown"
|
||||
---
|
||||
|
||||
![](Notes/attachments/DSC02900-3.jpg)
|
||||
![](attachments/Digital%20coloring%20and%20drawing/DSC02900-3.jpg)
|
||||
|
||||
## Changelog {#changelog}
|
||||
|
||||
|
@ -195,23 +195,23 @@ Hopefully you can do the same.
|
|||
|
||||
### 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}
|
||||
|
||||
![](Notes/attachments/Blending---On-Top---Fox.png)
|
||||
![](attachments/Digital%20coloring%20and%20drawing/Blending---On-Top---Fox.png)
|
||||
|
||||
### Palate Layer {#palate-layer}
|
||||
|
||||
![](Notes/attachments/Palate-Layer---Fox.png)
|
||||
![](attachments/Digital%20coloring%20and%20drawing/Palate-Layer---Fox.png)
|
||||
|
||||
### 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}
|
||||
|
||||
![](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}
|
||||
|
||||
|
@ -227,7 +227,7 @@ The below sections layout how I setup Krita overall and I leave the practical im
|
|||
|
||||
## 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.
|
||||
|
||||
|
|
|
@ -42,8 +42,8 @@ source: N/A
|
|||
|
||||
## 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)
|
|
@ -24,8 +24,8 @@ title: **Table of Contents**
|
|||
|
||||
## Input Device Tips / Tricks
|
||||
|
||||
- [Drawing Tablet Quick Reference](Notes/Drawing%20Tablet%20Quick%20Reference.md)
|
||||
- [Trackpad Quick Reference](Notes/Trackpad%20Quick%20Reference.md)
|
||||
- [Drawing Tablet Quick Reference](Drawing%20Tablet%20Quick%20Reference.md)
|
||||
- [Trackpad Quick Reference](Trackpad%20Quick%20Reference.md)
|
||||
|
||||
## 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).
|
||||
|
||||
- [Wacom One (Small) Drawing Tablet](Notes/Drawing%20Tablet%20Quick%20Reference.md#^163d42)
|
||||
- [Logitech T650 Trackpad](Notes/Trackpad%20Quick%20Reference.md#^9233aa)
|
||||
- [Samsung Z Fold 4](Notes/Krita%20Quick%20Reference.md#^0f3b48)
|
||||
- [Wacom One (Small) Drawing Tablet](Drawing%20Tablet%20Quick%20Reference.md#^163d42)
|
||||
- [Logitech T650 Trackpad](Trackpad%20Quick%20Reference.md#^9233aa)
|
||||
- [Samsung Z Fold 4](#^0f3b48)
|
||||
|
||||
### Krita Input Config
|
||||
|
||||
|
@ -143,12 +143,12 @@ The below are the input settings KemoNine uses within Krita
|
|||
|
||||
### Main Krita View With File Open
|
||||
|
||||
![](Notes/attachments/Imagepipe_359.jpg)
|
||||
![](attachments/Krita%20Quick%20Reference/Imagepipe_359.jpg)
|
||||
|
||||
### Canvas View
|
||||
|
||||
![](Notes/attachments/Imagepipe_360.jpg)
|
||||
![](attachments/Krita%20Quick%20Reference/Imagepipe_360.jpg)
|
||||
|
||||
### Pop-up Palette
|
||||
|
||||
![](Notes/attachments/Imagepipe_361.jpg)
|
||||
![](attachments/Krita%20Quick%20Reference/Imagepipe_361.jpg)
|
||||
|
|
19
Notes/Notes.md
Normal 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 %%
|
|
@ -18,4 +18,4 @@ title: **Table of Contents**
|
|||
|
||||
To see a table of contents using built in methods:
|
||||
|
||||
![](Notes/attachments/Obsidian%20ToC.png)
|
||||
![](attachments/Obsidian%20ToC/Obsidian%20ToC.png)
|
||||
|
|
|
@ -14,3 +14,7 @@ title: **Table of Contents**
|
|||
## 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.
|
||||
|
||||
## 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.
|
|
@ -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.
|
||||
|
||||
## 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
|
||||
|
||||
- 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
|
||||
- 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
|
||||
- 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 [__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
|
||||
|
||||
|
@ -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
|
||||
- Setup any necessary layers
|
||||
- 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
|
||||
- Link files to new artwork page as appropriate
|
||||
- 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)
|
||||
|
||||
- [Obtaining Source Material](Notes/Obtaining%20Source%20Material.md)
|
||||
- [Android Drawing Apps](Notes/Android%20Drawing%20Apps.md)
|
||||
- [Krita Quick Reference](Notes/Krita%20Quick%20Reference.md)
|
||||
- [Color Palette Generator](Notes/Color%20Palette%20Generator.md)
|
||||
- [Obtaining Source Material](Obtaining%20Source%20Material.md)
|
||||
- [Android Drawing Apps](Android%20Drawing%20Apps.md)
|
||||
- [Krita Quick Reference](Krita%20Quick%20Reference.md)
|
||||
- [Color Palette Generator](Color%20Palette%20Generator.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
|
||||
|
||||
|
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 573 KiB After Width: | Height: | Size: 573 KiB |
Before Width: | Height: | Size: 490 KiB After Width: | Height: | Size: 490 KiB |
Before Width: | Height: | Size: 541 KiB After Width: | Height: | Size: 541 KiB |
Before Width: | Height: | Size: 894 KiB After Width: | Height: | Size: 894 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB |
Before Width: | Height: | Size: 334 KiB After Width: | Height: | Size: 334 KiB |
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
23
Notes/attachments/attachments.md
Normal 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 %%
|
12
Readme.md
|
@ -6,7 +6,7 @@ Digital art may be 'rigid' and 'not notebook friendly' but this Obsidian vault c
|
|||
|
||||
## 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.
|
||||
|
||||
|
@ -27,19 +27,19 @@ This project is licensed under the [Creative Commons BY-NC 4.0 International](ht
|
|||
|
||||
### 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)
|
||||
|
||||
![How to download - Forgejo](Notes/attachments/downloading.png)
|
||||
![How to download - Forgejo](attachments/Readme/downloading.png)
|
||||
|
||||
## Screenshots
|
||||
|
||||
### 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](Notes/attachments/Vault%20Screenshot%202.png)
|
||||
![KemoNine Zentangle View](attachments/Readme/Vault%20Screenshot%202.png)
|
||||
|
||||
### KemoNine Coloring View
|
||||
![KemoNine Coloring View](Notes/attachments/Vault%20Screenshot%203.png)
|
||||
![KemoNine Coloring View](attachments/Readme/Vault%20Screenshot%203.png)
|
||||
|
|
4
Zentangle/In Progress/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Zentangle/Practice/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
1
Zentangle/Tangles/attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/Krita
|
4
Zentangle/Tangles/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
4
Zentangle/_ZIA/attachments/attachments.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
%% Begin Waypoint %%
|
||||
|
||||
|
||||
%% End Waypoint %%
|
|
@ -45,6 +45,7 @@ title: **Table of Contents**
|
|||
|
||||
## Reference
|
||||
|
||||
- [Using The Vault](Notes/__Using%20The%20Vault.md)
|
||||
- [Troubleshooting The Vault](Notes/_Troubleshooting%20The%20Vault.md)
|
||||
- [Obtaining Source Material](Notes/Obtaining%20Source%20Material.md)
|
||||
- [Color Palette Generator](Notes/Color%20Palette%20Generator.md)
|
||||
|
|
1
attachments/.nomedia
Normal file
|
@ -0,0 +1 @@
|
|||
/storage/emulated/0/obsidian/digital-art-composition-book
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 523 KiB After Width: | Height: | Size: 523 KiB |
Before Width: | Height: | Size: 571 KiB After Width: | Height: | Size: 571 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |