Initial import
This commit is contained in:
commit
3b7a9de464
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"theme": "moonstone",
|
||||||
|
"cssTheme": "Simple"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"backlinkInDocument": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
[
|
||||||
|
"dataview",
|
||||||
|
"obsidian-front-matter-title-plugin",
|
||||||
|
"obsidian-meta-bind-plugin",
|
||||||
|
"metadata-menu",
|
||||||
|
"frontmatter-links",
|
||||||
|
"searchpp",
|
||||||
|
"remotely-save",
|
||||||
|
"obsidian-pandoc",
|
||||||
|
"omnisearch",
|
||||||
|
"obsidian-local-rest-api",
|
||||||
|
"lemons-search",
|
||||||
|
"obsidian-git",
|
||||||
|
"file-tree-alternative",
|
||||||
|
"file-explorer-note-count",
|
||||||
|
"obsidian-dictionary-plugin",
|
||||||
|
"colored-tags",
|
||||||
|
"obsidian-bible-reference",
|
||||||
|
"word-frequency",
|
||||||
|
"better-search-views",
|
||||||
|
"editing-toolbar",
|
||||||
|
"anysocket-sync"
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"file-explorer": true,
|
||||||
|
"global-search": true,
|
||||||
|
"switcher": true,
|
||||||
|
"graph": true,
|
||||||
|
"backlink": true,
|
||||||
|
"canvas": true,
|
||||||
|
"outgoing-link": true,
|
||||||
|
"tag-pane": true,
|
||||||
|
"properties": true,
|
||||||
|
"page-preview": true,
|
||||||
|
"daily-notes": true,
|
||||||
|
"templates": true,
|
||||||
|
"note-composer": true,
|
||||||
|
"command-palette": true,
|
||||||
|
"slash-command": true,
|
||||||
|
"editor-status": true,
|
||||||
|
"bookmarks": true,
|
||||||
|
"markdown-importer": true,
|
||||||
|
"zk-prefixer": false,
|
||||||
|
"random-note": false,
|
||||||
|
"outline": true,
|
||||||
|
"word-count": true,
|
||||||
|
"slides": false,
|
||||||
|
"audio-recorder": false,
|
||||||
|
"workspaces": true,
|
||||||
|
"file-recovery": true,
|
||||||
|
"publish": false,
|
||||||
|
"sync": true,
|
||||||
|
"webviewer": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"collapse-filter": true,
|
||||||
|
"search": "",
|
||||||
|
"showTags": false,
|
||||||
|
"showAttachments": false,
|
||||||
|
"hideUnresolved": false,
|
||||||
|
"showOrphans": true,
|
||||||
|
"collapse-color-groups": true,
|
||||||
|
"colorGroups": [],
|
||||||
|
"collapse-display": true,
|
||||||
|
"showArrow": true,
|
||||||
|
"textFadeMultiplier": 0,
|
||||||
|
"nodeSizeMultiplier": 1,
|
||||||
|
"lineSizeMultiplier": 1,
|
||||||
|
"collapse-forces": true,
|
||||||
|
"centerStrength": 0.518713248970312,
|
||||||
|
"repelStrength": 10,
|
||||||
|
"linkStrength": 1,
|
||||||
|
"linkDistance": 250,
|
||||||
|
"scale": 0.2588386562181638,
|
||||||
|
"close": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"host": "192.168.10.69",
|
||||||
|
"port": "3010",
|
||||||
|
"password": "Devgcc2020*",
|
||||||
|
"syncEnabled": true,
|
||||||
|
"delayedSync": 3,
|
||||||
|
"autoSync": true,
|
||||||
|
"notifications": 1,
|
||||||
|
"deviceName": "WhiteMana",
|
||||||
|
"debug": false
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "anysocket-sync",
|
||||||
|
"name": "AnySocket Sync",
|
||||||
|
"version": "1.3.3",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "Self-Hosted synchronization for you Vault using AnySocket",
|
||||||
|
"author": "Andrei Vaduva",
|
||||||
|
"authorUrl": "https://github.com/lynxaegon",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
.anysocket-ribbon-icon.offline {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.anysocket-files-history .item-path {
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-files-history .item-metadata {
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
padding: var(--size-4-1) var(--size-4-2) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history {
|
||||||
|
padding: 0;
|
||||||
|
width: var(--modal-width);
|
||||||
|
height: var(--modal-height);
|
||||||
|
max-width: var(--modal-max-width);
|
||||||
|
max-height: var(--modal-max-height);
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.anysocket-version-history .modal-content {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .history-list {
|
||||||
|
padding: var(--size-4-2) var(--size-4-2) 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-basis: 250px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border-inline-end: 1px solid var(--background-modifier-border);
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-timestamp {
|
||||||
|
padding: var(--size-4-2) var(--size-2-2) var(--size-4-2) var(--size-4-4);
|
||||||
|
margin-bottom: var(--size-2-1);
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
line-height: var(--line-height-tight);
|
||||||
|
color: var(--nav-item-color);
|
||||||
|
font-variant: tabular-nums;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-timestamp:hover {
|
||||||
|
background-color: var(--nav-item-background-active);
|
||||||
|
color: var(--nav-item-color-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-timestamp.active {
|
||||||
|
background-color: var(--nav-item-background-active);
|
||||||
|
color: var(--nav-item-color-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-container {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
padding: 0;
|
||||||
|
height: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: "100%";
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-grow: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-titlebar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: var(--size-4-2) var(--size-4-4);
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-filename {
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
font-weight: var(--file-header-font-weight);
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anysocket-version-history .modal-content .version-actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
padding-inline-end: var(--size-4-8);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "better-search-views",
|
||||||
|
"name": "Better Search Views",
|
||||||
|
"version": "0.3.0",
|
||||||
|
"minAppVersion": "0.16.0",
|
||||||
|
"description": "Outliner-like breadcrumb trees for search, backlinks and embedded queries ",
|
||||||
|
"author": "ivan-lednev",
|
||||||
|
"authorUrl": "https://github.com/ivan-lednev",
|
||||||
|
"fundingUrl": "https://www.buymeacoffee.com/machineelf",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,190 @@
|
||||||
|
/* TODO: blockquotes need a better fix */
|
||||||
|
.better-search-views-file-match.markdown-rendered > *,
|
||||||
|
.better-search-views-file-match.markdown-rendered > blockquote > * {
|
||||||
|
margin-block-start: 0;
|
||||||
|
margin-block-end: 0;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-file-match.markdown-rendered ul > li,
|
||||||
|
.better-search-views-file-match.markdown-rendered ol > li {
|
||||||
|
margin-inline-start: calc(var(--list-indent) * 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-file-match > blockquote {
|
||||||
|
margin-inline-start: 0;
|
||||||
|
margin-inline-end: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-file-match ul {
|
||||||
|
position: relative;
|
||||||
|
padding-inline-start: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-file-match a {
|
||||||
|
cursor: default;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Copied from Obsidian */
|
||||||
|
.better-search-views-file-match li > ul::before {
|
||||||
|
content: "\200B";
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: -1em;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
border-right: var(--indentation-guide-width) solid
|
||||||
|
var(--indentation-guide-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-breadcrumbs {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree-item-children {
|
||||||
|
margin-left: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
border-left: var(--nav-indentation-guide-width) solid
|
||||||
|
var(--indentation-guide-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree-item-children:hover {
|
||||||
|
border-left-color: var(--indentation-guide-color-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-breadcrumb-container {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5em;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree .tree-item-inner {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-grow: 1;
|
||||||
|
gap: 2px;
|
||||||
|
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-titles-container .tree-item-inner:not(:hover) {
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-result-file-matches:has(.better-search-views-tree) {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
line-height: var(--line-height-tight);
|
||||||
|
color: var(--text-muted);
|
||||||
|
|
||||||
|
background-color: revert;
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-result-file-matches:has(.better-search-views-tree),
|
||||||
|
.better-search-views-tree .search-result-file-matches {
|
||||||
|
margin: var(--size-4-1) 0 var(--size-4-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree .search-result-file-matches {
|
||||||
|
margin-left: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree-item.search-result
|
||||||
|
> .search-result-file-matches:has(.better-search-views-tree) {
|
||||||
|
/* This fixes box shadow in child match boxes */
|
||||||
|
padding-right: 1px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-result-file-matches:has(.better-search-views-tree)
|
||||||
|
.better-search-views-file-match:not(:hover) {
|
||||||
|
background-color: var(--search-result-background);
|
||||||
|
box-shadow: 0 0 0 1px var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-icon {
|
||||||
|
width: var(--icon-xs);
|
||||||
|
height: var(--icon-xs);
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree blockquote {
|
||||||
|
padding-left: 10px;
|
||||||
|
border-left: var(--blockquote-border-thickness) solid
|
||||||
|
var(--blockquote-border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree .tree-item-inner:hover {
|
||||||
|
background-color: var(--nav-item-background-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree .search-result-file-title {
|
||||||
|
padding-right: 0;
|
||||||
|
|
||||||
|
/* TODO: this is still hardcoded */
|
||||||
|
padding-left: calc(20px + var(--nav-indentation-guide-width));
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.is-grabbing)
|
||||||
|
.better-search-views-tree
|
||||||
|
.tree-item-self.search-result-file-title:hover {
|
||||||
|
background-color: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree .better-search-views-breadcrumb-container {
|
||||||
|
flex-grow: 1;
|
||||||
|
padding-right: 2px;
|
||||||
|
padding-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree
|
||||||
|
.better-search-views-breadcrumb-container:not(:last-child) {
|
||||||
|
padding-bottom: 2px;
|
||||||
|
border-bottom: var(--nav-indentation-guide-width) solid
|
||||||
|
var(--nav-indentation-guide-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-breadcrumb-token {
|
||||||
|
color: var(--text-faint);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: calc(1em * var(--line-height-tight));
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-tree .collapse-icon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
align-self: flex-start;
|
||||||
|
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-titles-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-source-view.mod-cm6
|
||||||
|
.better-search-views-tree
|
||||||
|
.task-list-item-checkbox {
|
||||||
|
margin-inline-start: calc(var(--checkbox-size) * -1.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.better-search-views-is-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "breadcrumbs",
|
||||||
|
"name": "Breadcrumbs",
|
||||||
|
"version": "3.6.11",
|
||||||
|
"minAppVersion": "0.15.2",
|
||||||
|
"description": "Visualise & navigate your vault's structure",
|
||||||
|
"author": "SkepticMystic",
|
||||||
|
"authorUrl": "https://github.com/SkepticMystic/breadcrumbs",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
.BC-trail {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
margin-bottom: 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* completely hides the trail when "no path found message" is left empty and no path is found */
|
||||||
|
.BC-trail:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BC-matrix-square li {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ensure empty headers not leaving an element */
|
||||||
|
.BC-Matrix .BC-Matrix-square .BC-Matrix-header:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.internal-link.BC-Link {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.internal-link.BC-Link:hover {
|
||||||
|
color: var(--text-accent-hover, var(--text-accent));
|
||||||
|
}
|
||||||
|
|
||||||
|
.vis-view-options > * {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Source: https://svelte.dev/repl/3153faf7584d40bd8ddebecf39f24ac1?version=3.41.0 */
|
||||||
|
[data-tooltip] {
|
||||||
|
position: relative;
|
||||||
|
/* z-index: 2; */
|
||||||
|
/* display: block; */
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-tooltip]:before,
|
||||||
|
[data-tooltip]:after {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: 0.2s ease-out;
|
||||||
|
transform: translate(-50%, 5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-tooltip]:before {
|
||||||
|
position: absolute;
|
||||||
|
top: 80%;
|
||||||
|
/* bottom: 100%; */
|
||||||
|
left: 50%;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
padding: 7px;
|
||||||
|
width: fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
min-width: 200px;
|
||||||
|
min-height: 200px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
border-radius: 3px;
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
color: var(--text-normal);
|
||||||
|
content: attr(data-tooltip);
|
||||||
|
text-align: center;
|
||||||
|
font-size: var(--font-medium);
|
||||||
|
line-height: 1.2;
|
||||||
|
transition: 0.2s ease-out;
|
||||||
|
white-space: pre-line;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* [data-tooltip]:after {
|
||||||
|
position: absolute;
|
||||||
|
top: 80%;
|
||||||
|
left: 50%;
|
||||||
|
width: 0;
|
||||||
|
border-top: 5px solid #000;
|
||||||
|
border-top: 5px solid hsla(0, 0%, 20%, 0.9);
|
||||||
|
border-right: 5px solid transparent;
|
||||||
|
border-left: 5px solid transparent;
|
||||||
|
background-color: red;
|
||||||
|
content: " ";
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
} */
|
||||||
|
|
||||||
|
[data-tooltip]:hover:before,
|
||||||
|
[data-tooltip]:hover:after {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
}
|
||||||
|
[data-tooltip="false"]:hover:before,
|
||||||
|
[data-tooltip="false"]:hover:after {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thread-dir-templates .setting-item-control {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.juggl-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-type="BC-matrix"] div.view-content {
|
||||||
|
overflow: hidden !important;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"palette": {
|
||||||
|
"seed": 0,
|
||||||
|
"selected": "adaptive-soft",
|
||||||
|
"custom": "e12729-f37324-f8cc1b-72b043-007f4e"
|
||||||
|
},
|
||||||
|
"mixColors": true,
|
||||||
|
"transition": true,
|
||||||
|
"accessibility": {
|
||||||
|
"highTextContrast": false
|
||||||
|
},
|
||||||
|
"knownTags": {
|
||||||
|
"0070c0": 1
|
||||||
|
},
|
||||||
|
"_version": 3
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "colored-tags",
|
||||||
|
"name": "Colored Tags",
|
||||||
|
"version": "5.0.1",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "Colorizes tags in different colors. Colors of nested tags are mixed with the root tag to improve readability. Text color contrast is automatically matched to comply with AA level of WCAG 2.1.",
|
||||||
|
"author": "Pavel Frankov",
|
||||||
|
"authorUrl": "https://github.com/pfrankov",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"renderNullAs": "\\-",
|
||||||
|
"taskCompletionTracking": false,
|
||||||
|
"taskCompletionUseEmojiShorthand": false,
|
||||||
|
"taskCompletionText": "completion",
|
||||||
|
"taskCompletionDateFormat": "yyyy-MM-dd",
|
||||||
|
"recursiveSubTaskCompletion": false,
|
||||||
|
"warnOnEmptyResult": true,
|
||||||
|
"refreshEnabled": true,
|
||||||
|
"refreshInterval": 2500,
|
||||||
|
"defaultDateFormat": "MMMM dd, yyyy",
|
||||||
|
"defaultDateTimeFormat": "h:mm a - MMMM dd, yyyy",
|
||||||
|
"maxRecursiveRenderDepth": 4,
|
||||||
|
"tableIdColumnName": "File",
|
||||||
|
"tableGroupColumnName": "Group",
|
||||||
|
"showResultCount": true,
|
||||||
|
"allowHtml": true,
|
||||||
|
"inlineQueryPrefix": "=",
|
||||||
|
"inlineJsQueryPrefix": "$=",
|
||||||
|
"inlineQueriesInCodeblocks": true,
|
||||||
|
"enableInlineDataview": true,
|
||||||
|
"enableDataviewJs": true,
|
||||||
|
"enableInlineDataviewJs": true,
|
||||||
|
"prettyRenderInlineFields": true,
|
||||||
|
"prettyRenderInlineFieldsInLivePreview": true,
|
||||||
|
"dataviewJsKeyword": "dataviewjs"
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "dataview",
|
||||||
|
"name": "Dataview",
|
||||||
|
"version": "0.5.68",
|
||||||
|
"minAppVersion": "0.13.11",
|
||||||
|
"description": "Complex data views for the data-obsessed.",
|
||||||
|
"author": "Michael Brenan <blacksmithgu@gmail.com>",
|
||||||
|
"authorUrl": "https://github.com/blacksmithgu",
|
||||||
|
"helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
.block-language-dataview {
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************/
|
||||||
|
/** Table Views **/
|
||||||
|
/*****************/
|
||||||
|
|
||||||
|
/* List View Default Styling; rendered internally as a table. */
|
||||||
|
.table-view-table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-view-table > thead > tr, .table-view-table > tbody > tr {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-view-table > tbody > tr:hover {
|
||||||
|
background-color: var(--table-row-background-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-view-table > thead > tr > th {
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: larger;
|
||||||
|
border-top: none;
|
||||||
|
border-left: none;
|
||||||
|
border-right: none;
|
||||||
|
border-bottom: solid;
|
||||||
|
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-view-table > tbody > tr > td {
|
||||||
|
text-align: left;
|
||||||
|
border: none;
|
||||||
|
font-weight: 400;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-view-table ul, .table-view-table ol {
|
||||||
|
margin-block-start: 0.2em !important;
|
||||||
|
margin-block-end: 0.2em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Rendered value styling for any view. */
|
||||||
|
.dataview-result-list-root-ul {
|
||||||
|
padding: 0em !important;
|
||||||
|
margin: 0em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview-result-list-ul {
|
||||||
|
margin-block-start: 0.2em !important;
|
||||||
|
margin-block-end: 0.2em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Generic grouping styling. */
|
||||||
|
.dataview.result-group {
|
||||||
|
padding-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************/
|
||||||
|
/** Inline Fields **/
|
||||||
|
/*******************/
|
||||||
|
|
||||||
|
.dataview.inline-field-key {
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
color: var(--nav-item-color-selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview.inline-field-value {
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
color: var(--nav-item-color-selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview.inline-field-standalone-value {
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
color: var(--nav-item-color-selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************/
|
||||||
|
/** Task View **/
|
||||||
|
/***************/
|
||||||
|
|
||||||
|
.dataview.task-list-item, .dataview.task-list-basic-item {
|
||||||
|
margin-top: 3px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
transition: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
|
||||||
|
background-color: var(--text-selection);
|
||||||
|
box-shadow: -40px 0 0 var(--text-selection);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************/
|
||||||
|
/** Error Views **/
|
||||||
|
/*****************/
|
||||||
|
|
||||||
|
div.dataview-error-box {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 150px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 4px dashed var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview-error-message {
|
||||||
|
color: var(--text-muted);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************/
|
||||||
|
/** Additional Metadata **/
|
||||||
|
/*************************/
|
||||||
|
|
||||||
|
.dataview.small-text {
|
||||||
|
font-size: smaller;
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview.small-text::before {
|
||||||
|
content: "(";
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataview.small-text::after {
|
||||||
|
content: ")";
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,328 @@
|
||||||
|
{
|
||||||
|
"lastVersion": "3.1.16",
|
||||||
|
"aestheticStyle": "default",
|
||||||
|
"positionStyle": "top",
|
||||||
|
"menuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor-undo",
|
||||||
|
"name": "Undo editor",
|
||||||
|
"icon": "undo-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor-redo",
|
||||||
|
"name": "Redo editor",
|
||||||
|
"icon": "redo-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-format-brush",
|
||||||
|
"name": "Format Brush",
|
||||||
|
"icon": "paintbrush"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:format-eraser",
|
||||||
|
"name": "Clear text formatting",
|
||||||
|
"icon": "eraser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header2-text",
|
||||||
|
"name": "Header 2",
|
||||||
|
"icon": "header-2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header3-text",
|
||||||
|
"name": "Header 3",
|
||||||
|
"icon": "header-3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-header",
|
||||||
|
"name": "submenu",
|
||||||
|
"icon": "header-n",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header1-text",
|
||||||
|
"name": "Header 1",
|
||||||
|
"icon": "header-1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header4-text",
|
||||||
|
"name": "Header 4",
|
||||||
|
"icon": "header-4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header5-text",
|
||||||
|
"name": "Header 5",
|
||||||
|
"icon": "header-5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header6-text",
|
||||||
|
"name": "Header 6",
|
||||||
|
"icon": "header-6"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-bold",
|
||||||
|
"name": "Bold",
|
||||||
|
"icon": "bold-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-italics",
|
||||||
|
"name": "Italics",
|
||||||
|
"icon": "italic-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-strikethrough",
|
||||||
|
"name": "Strikethrough",
|
||||||
|
"icon": "strikethrough-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:underline",
|
||||||
|
"name": "Underline",
|
||||||
|
"icon": "underline-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-highlight",
|
||||||
|
"name": "==Highlight==",
|
||||||
|
"icon": "highlight-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-lucdf3en5",
|
||||||
|
"name": "submenu",
|
||||||
|
"icon": "edit",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor-copy",
|
||||||
|
"name": "Copy",
|
||||||
|
"icon": "lucide-copy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor-cut",
|
||||||
|
"name": "Cut",
|
||||||
|
"icon": "lucide-scissors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor-paste",
|
||||||
|
"name": "Paste",
|
||||||
|
"icon": "lucide-clipboard-type"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:swap-line-down",
|
||||||
|
"name": "Swap line down",
|
||||||
|
"icon": "lucide-corner-right-down"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:swap-line-up",
|
||||||
|
"name": "Swap line up",
|
||||||
|
"icon": "lucide-corner-right-up"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:attach-file",
|
||||||
|
"name": "Attach file",
|
||||||
|
"icon": "lucide-paperclip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:insert-table",
|
||||||
|
"name": "Insert Table",
|
||||||
|
"icon": "lucide-table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:cycle-list-checklist",
|
||||||
|
"name": "Cycle list checklist",
|
||||||
|
"icon": "check-circle"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-luc8efull",
|
||||||
|
"name": "submenu",
|
||||||
|
"icon": "message-square",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:toggle-blockquote",
|
||||||
|
"name": "Blockquote",
|
||||||
|
"icon": "lucide-text-quote"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:insert-callout",
|
||||||
|
"name": "Insert Callout ",
|
||||||
|
"icon": "lucide-quote"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-mdcmder",
|
||||||
|
"name": "submenu",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M464 608 l0 -568 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-80 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 568 l-232 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 80 q0 3 2.5 5.5 q2.5 2.5 5.5 2.5 l560 0 q3 0 5.5 -2.5 q2.5 -2.5 2.5 -5.5 l0 -80 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-232 0 ZM864 696 q17 0 28.5 11.5 q11.5 11.5 11.5 28.5 q0 17 -11.5 28.5 q-11.5 11.5 -28.5 11.5 q-17 0 -28.5 -11.5 q-11.5 -11.5 -11.5 -28.5 q0 -17 11.5 -28.5 q11.5 -11.5 28.5 -11.5 ZM864 640 q-40 0 -68 28 q-28 28 -28 68 q0 40 28 68 q28 28 68 28 q40 0 68 -28 q28 -28 28 -68 q0 -40 -28 -68 q-28 -28 -68 -28 ZM576 322 l0 -63 q0 -3 2 -5 l89 -70 l-89 -70 q-2 -2 -2 -5 l0 -63 q0 -4 3.5 -5.5 q3.5 -1.5 6.5 0.5 l170 133 q4 3 4.5 8.5 q0.5 5.5 -2.5 9.5 l-2 2 l-170 133 q-3 2 -6.5 0.5 q-3.5 -1.5 -3.5 -5.5 ZM256 322 l0 -63 q0 -3 -2 -5 l-89 -70 l89 -70 q2 -2 2 -5 l0 -63 q0 -4 -3.5 -5.5 q-3.5 -1.5 -6.5 0.5 l-170 133 q-4 3 -4.5 8.5 q-0.5 5.5 2.5 9.5 l2 2 l170 133 q3 2 6.5 0.5 q3.5 -1.5 3.5 -5.5 Z\"></path></g></svg>",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:superscript",
|
||||||
|
"name": "Superscript",
|
||||||
|
"icon": "superscript-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:subscript",
|
||||||
|
"name": "Subscript",
|
||||||
|
"icon": "subscript-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:toggle-code",
|
||||||
|
"name": "Inline code",
|
||||||
|
"icon": "code-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:codeblock",
|
||||||
|
"name": "Code block",
|
||||||
|
"icon": "codeblock-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:insert-wikilink",
|
||||||
|
"name": "Insert wikilink [[]]",
|
||||||
|
"icon": "<svg width=\"15\" height=\"15\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M306 134 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 7 q0 -8 -5 -8 l-45 0 q-5 0 -5 8 l0 784 q0 8 5 8 l45 0 q5 0 5 -8 q0 8 1 8 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 -623 q0 8 1 8 ZM139 134 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 7 q0 -8 -5 -8 l-45 0 q-5 0 -5 8 l0 784 q0 8 5 8 l45 0 q5 0 5 -8 q0 8 1 8 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 -623 q0 8 1 8 ZM711 134 q1 0 1 -8 l0 623 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 q1 0 1 -8 q0 8 4 8 l46 0 q4 0 4 -8 l0 -784 q0 -8 -4 -8 l-46 0 q-4 0 -4 8 q0 -7 -1 -7 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 ZM878 134 q1 0 1 -8 l0 623 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 q1 0 1 -8 q0 8 5 8 l45 0 q4 0 4 -8 l0 -784 q0 -8 -4 -8 l-45 0 q-5 0 -5 8 q0 -7 -1 -7 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:insert-embed",
|
||||||
|
"name": "Insert embed ![[]]",
|
||||||
|
"icon": "note-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:insert-link",
|
||||||
|
"name": "Insert link []()",
|
||||||
|
"icon": "link-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:hrline",
|
||||||
|
"name": "Horizontal divider",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M912 424 l0 -80 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-784 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 80 q0 3 2.5 5.5 q2.5 2.5 5.5 2.5 l784 0 q3 0 5.5 -2.5 q2.5 -2.5 2.5 -5.5 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-inline-math",
|
||||||
|
"name": "Inline math",
|
||||||
|
"icon": "lucide-sigma"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:insert-mathblock",
|
||||||
|
"name": "MathBlock",
|
||||||
|
"icon": "lucide-sigma-square"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-list",
|
||||||
|
"name": "submenu-list",
|
||||||
|
"icon": "bullet-list-glyph",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:toggle-checklist-status",
|
||||||
|
"name": "Checklist",
|
||||||
|
"icon": "checkbox-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:renumber-ordered-list",
|
||||||
|
"name": "Renumber ordered list",
|
||||||
|
"icon": "list-restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-numbered-list",
|
||||||
|
"name": "Numbered list",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M860 424 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM860 756 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM860 92 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM264 136 l-3 -3 l-51 -57 l56 0 q14 0 24.5 -10 q10.5 -10 11.5 -25 l0 -1 q0 -15 -10.5 -25.5 q-10.5 -10.5 -24.5 -10.5 l-137 0 q-15 0 -25 10 q-10 10 -11 24.5 q-1 14.5 9 25.5 l63 70 l49 54 q7 7 7 16.5 q0 9.5 -7.5 16.5 q-7.5 7 -18.5 7 q-11 0 -18.5 -6.5 q-7.5 -6.5 -8.5 -16.5 l0 0 q0 -15 -10.5 -25.5 q-10.5 -10.5 -25.5 -10.5 q-15 0 -25.5 10.5 q-10.5 10.5 -10.5 25.5 q0 26 13.5 47.5 q13.5 21.5 36 34.5 q22.5 13 49 13 q26.5 0 49.5 -13 q23 -13 36 -34.5 q13 -21.5 13 -47.5 q0 -20 -7.5 -37.5 q-7.5 -17.5 -21.5 -30.5 l-1 -1 ZM173 794 q11 11 25 10.5 q14 -0.5 24.5 -10.5 q10.5 -10 10.5 -25 l0 -293 q0 -15 -10 -25.5 q-10 -10.5 -25 -10.5 q-15 0 -25.5 10 q-10.5 10 -11.5 25 l0 211 q-10 -8 -23.5 -7 q-13.5 1 -22.5 11 l-1 0 q-10 11 -9.5 25.5 q0.5 14.5 10.5 24.5 l58 54 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:toggle-bullet-list",
|
||||||
|
"name": "Bullet list",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M860 424 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM860 756 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM860 92 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM176 716 l0 0 ZM112 716 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 ZM176 384 l0 0 ZM112 384 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 ZM176 52 l0 0 ZM112 52 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:undent-list",
|
||||||
|
"name": "Unindent-list",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 302 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 542 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 784 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 62 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM244 534 l-123 -122 q-8 -7 -8 -18 q0 -11 8 -18 l123 -122 q8 -7 19 -7 q11 0 18.5 7.5 q7.5 7.5 7.5 18.5 l0 242 q0 11 -7.5 18.5 q-7.5 7.5 -18.5 7.5 q-11 0 -19 -7 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:indent-list",
|
||||||
|
"name": "Indent list",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 302 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 542 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 784 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 62 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM158 534 l124 -122 q7 -7 7 -18 q0 -11 -7 -18 l-124 -122 q-7 -7 -18 -7 q-11 0 -19 7.5 q-8 7.5 -8 18.5 l0 242 q0 11 8 18.5 q8 7.5 19 7.5 q11 0 18 -7 Z\"></path></g></svg>"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-aligin",
|
||||||
|
"name": "submenu-aligin",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M724 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM724 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:justify",
|
||||||
|
"name": "<p aligin=\"justify\"></p>",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M112 736 l0 0 ZM120 736 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 331 l0 0 ZM120 331 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 128 l0 0 ZM120 128 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 533 l0 0 ZM120 533 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:left",
|
||||||
|
"name": "<p aligin=\"left\"></p>",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M572 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM572 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:center",
|
||||||
|
"name": "<center>",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M724 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM724 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:right",
|
||||||
|
"name": "<p aligin=\"right\"></p>",
|
||||||
|
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:change-font-color",
|
||||||
|
"name": "Change font color[html]",
|
||||||
|
"icon": "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" focusable=\"false\" fill=\"currentColor\"><g fill-rule=\"evenodd\"><path id=\"change-font-color-icon\" d=\"M3 18h18v3H3z\" style=\"fill:#2DC26B\"></path><path d=\"M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z\"></path></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:change-background-color",
|
||||||
|
"name": "Change Backgroundcolor[html]",
|
||||||
|
"icon": "<svg width=\"18\" height=\"24\" viewBox=\"0 0 256 256\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"><g stroke=\"none\" stroke-width=\"1\" fill=\"currentColor\" fill-rule=\"evenodd\"><g ><g fill=\"currentColor\"><g transform=\"translate(119.502295, 137.878331) rotate(-135.000000) translate(-119.502295, -137.878331) translate(48.002295, 31.757731)\" ><path d=\"M100.946943,60.8084699 L43.7469427,60.8084699 C37.2852111,60.8084699 32.0469427,66.0467383 32.0469427,72.5084699 L32.0469427,118.70847 C32.0469427,125.170201 37.2852111,130.40847 43.7469427,130.40847 L100.946943,130.40847 C107.408674,130.40847 112.646943,125.170201 112.646943,118.70847 L112.646943,72.5084699 C112.646943,66.0467383 107.408674,60.8084699 100.946943,60.8084699 Z M93.646,79.808 L93.646,111.408 L51.046,111.408 L51.046,79.808 L93.646,79.808 Z\" fill-rule=\"nonzero\"></path><path d=\"M87.9366521,16.90916 L87.9194966,68.2000001 C87.9183543,69.4147389 86.9334998,70.399264 85.7187607,70.4 L56.9423078,70.4 C55.7272813,70.4 54.7423078,69.4150264 54.7423078,68.2 L54.7423078,39.4621057 C54.7423078,37.2523513 55.5736632,35.1234748 57.0711706,33.4985176 L76.4832996,12.4342613 C78.9534987,9.75382857 83.1289108,9.5834005 85.8093436,12.0535996 C87.1658473,13.303709 87.9372691,15.0644715 87.9366521,16.90916 Z\" fill-rule=\"evenodd\"></path><path d=\"M131.3,111.241199 L11.7,111.241199 C5.23826843,111.241199 0,116.479467 0,122.941199 L0,200.541199 C0,207.002931 5.23826843,212.241199 11.7,212.241199 L131.3,212.241199 C137.761732,212.241199 143,207.002931 143,200.541199 L143,122.941199 C143,116.479467 137.761732,111.241199 131.3,111.241199 Z M124,130.241 L124,193.241 L19,193.241 L19,130.241 L124,130.241 Z\" fill-rule=\"nonzero\"></path></g></g><path d=\"M51,218 L205,218 C211.075132,218 216,222.924868 216,229 C216,235.075132 211.075132,240 205,240 L51,240 C44.9248678,240 40,235.075132 40,229 C40,222.924868 44.9248678,218 51,218 Z\" id=\"change-background-color-icon\" style=\"fill:#FA541C\"></path></g></g></svg>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:fullscreen-focus",
|
||||||
|
"name": "Fullscreen focus mode",
|
||||||
|
"icon": "fullscreen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:workplace-fullscreen-focus",
|
||||||
|
"name": "Workplace-Fullscreen ",
|
||||||
|
"icon": "exit-fullscreen"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"followingCommands": [],
|
||||||
|
"topCommands": [],
|
||||||
|
"fixedCommands": [],
|
||||||
|
"mobileCommands": [],
|
||||||
|
"enableMultipleConfig": false,
|
||||||
|
"appendMethod": "workspace",
|
||||||
|
"shouldShowMenuOnSelect": false,
|
||||||
|
"cMenuVisibility": true,
|
||||||
|
"cMenuBottomValue": 4.25,
|
||||||
|
"cMenuNumRows": 12,
|
||||||
|
"cMenuWidth": 610,
|
||||||
|
"cMenuFontColor": "#c6d9f0",
|
||||||
|
"cMenuBackgroundColor": "#d3f8b6",
|
||||||
|
"autohide": false,
|
||||||
|
"Iscentered": false,
|
||||||
|
"custom_bg1": "#FFB78B8C",
|
||||||
|
"custom_bg2": "#CDF4698C",
|
||||||
|
"custom_bg3": "#A0CCF68C",
|
||||||
|
"custom_bg4": "#F0A7D88C",
|
||||||
|
"custom_bg5": "#ADEFEF8C",
|
||||||
|
"custom_fc1": "#D83931",
|
||||||
|
"custom_fc2": "#DE7802",
|
||||||
|
"custom_fc3": "#245BDB",
|
||||||
|
"custom_fc4": "#6425D0",
|
||||||
|
"custom_fc5": "#646A73",
|
||||||
|
"isLoadOnMobile": false,
|
||||||
|
"horizontalPosition": 0,
|
||||||
|
"verticalPosition": 0,
|
||||||
|
"formatBrushes": {},
|
||||||
|
"customCommands": [],
|
||||||
|
"viewTypeSettings": {},
|
||||||
|
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
|
||||||
|
"toolbarIconColor": "var(--text-normal)",
|
||||||
|
"toolbarIconSize": 18
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar",
|
||||||
|
"name": "Editing Toolbar",
|
||||||
|
"version": "3.1.16",
|
||||||
|
"minAppVersion": "0.14.0",
|
||||||
|
"description": "The Obsidian Editing Toolbar is modified from cmenu, which provides more powerful customization settings and has many built-in editing commands to be a MS Word-like toolbar editing experience.",
|
||||||
|
"author": "Cuman",
|
||||||
|
"authorUrl": "https://github.com/cumany/obsidian-editing-toolbar",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"showAllNumbers": true,
|
||||||
|
"filterList": [
|
||||||
|
"md"
|
||||||
|
],
|
||||||
|
"blacklist": false,
|
||||||
|
"addRootFolder": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,970 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var obsidian = require('obsidian');
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
|
||||||
|
function __awaiter(thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
||||||
|
var e = new Error(message);
|
||||||
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 'path' module extracted from Node.js v8.11.1 (only the posix part)
|
||||||
|
|
||||||
|
function assertPath(path) {
|
||||||
|
if (typeof path !== 'string') {
|
||||||
|
throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resolves . and .. elements in a path with directory names
|
||||||
|
function normalizeStringPosix(path, allowAboveRoot) {
|
||||||
|
var res = '';
|
||||||
|
var lastSegmentLength = 0;
|
||||||
|
var lastSlash = -1;
|
||||||
|
var dots = 0;
|
||||||
|
var code;
|
||||||
|
for (var i = 0; i <= path.length; ++i) {
|
||||||
|
if (i < path.length)
|
||||||
|
code = path.charCodeAt(i);
|
||||||
|
else if (code === 47 /*/*/)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
code = 47 /*/*/;
|
||||||
|
if (code === 47 /*/*/) {
|
||||||
|
if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) {
|
||||||
|
if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {
|
||||||
|
if (res.length > 2) {
|
||||||
|
var lastSlashIndex = res.lastIndexOf('/');
|
||||||
|
if (lastSlashIndex !== res.length - 1) {
|
||||||
|
if (lastSlashIndex === -1) {
|
||||||
|
res = '';
|
||||||
|
lastSegmentLength = 0;
|
||||||
|
} else {
|
||||||
|
res = res.slice(0, lastSlashIndex);
|
||||||
|
lastSegmentLength = res.length - 1 - res.lastIndexOf('/');
|
||||||
|
}
|
||||||
|
lastSlash = i;
|
||||||
|
dots = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else if (res.length === 2 || res.length === 1) {
|
||||||
|
res = '';
|
||||||
|
lastSegmentLength = 0;
|
||||||
|
lastSlash = i;
|
||||||
|
dots = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (allowAboveRoot) {
|
||||||
|
if (res.length > 0)
|
||||||
|
res += '/..';
|
||||||
|
else
|
||||||
|
res = '..';
|
||||||
|
lastSegmentLength = 2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (res.length > 0)
|
||||||
|
res += '/' + path.slice(lastSlash + 1, i);
|
||||||
|
else
|
||||||
|
res = path.slice(lastSlash + 1, i);
|
||||||
|
lastSegmentLength = i - lastSlash - 1;
|
||||||
|
}
|
||||||
|
lastSlash = i;
|
||||||
|
dots = 0;
|
||||||
|
} else if (code === 46 /*.*/ && dots !== -1) {
|
||||||
|
++dots;
|
||||||
|
} else {
|
||||||
|
dots = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _format(sep, pathObject) {
|
||||||
|
var dir = pathObject.dir || pathObject.root;
|
||||||
|
var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');
|
||||||
|
if (!dir) {
|
||||||
|
return base;
|
||||||
|
}
|
||||||
|
if (dir === pathObject.root) {
|
||||||
|
return dir + base;
|
||||||
|
}
|
||||||
|
return dir + sep + base;
|
||||||
|
}
|
||||||
|
|
||||||
|
var posix = {
|
||||||
|
// path.resolve([from ...], to)
|
||||||
|
resolve: function resolve() {
|
||||||
|
var resolvedPath = '';
|
||||||
|
var resolvedAbsolute = false;
|
||||||
|
var cwd;
|
||||||
|
|
||||||
|
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
||||||
|
var path;
|
||||||
|
if (i >= 0)
|
||||||
|
path = arguments[i];
|
||||||
|
else {
|
||||||
|
if (cwd === undefined)
|
||||||
|
cwd = process.cwd();
|
||||||
|
path = cwd;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertPath(path);
|
||||||
|
|
||||||
|
// Skip empty entries
|
||||||
|
if (path.length === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
resolvedPath = path + '/' + resolvedPath;
|
||||||
|
resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;
|
||||||
|
}
|
||||||
|
|
||||||
|
// At this point the path should be resolved to a full absolute path, but
|
||||||
|
// handle relative paths to be safe (might happen when process.cwd() fails)
|
||||||
|
|
||||||
|
// Normalize the path
|
||||||
|
resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
|
||||||
|
|
||||||
|
if (resolvedAbsolute) {
|
||||||
|
if (resolvedPath.length > 0)
|
||||||
|
return '/' + resolvedPath;
|
||||||
|
else
|
||||||
|
return '/';
|
||||||
|
} else if (resolvedPath.length > 0) {
|
||||||
|
return resolvedPath;
|
||||||
|
} else {
|
||||||
|
return '.';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
normalize: function normalize(path) {
|
||||||
|
assertPath(path);
|
||||||
|
|
||||||
|
if (path.length === 0) return '.';
|
||||||
|
|
||||||
|
var isAbsolute = path.charCodeAt(0) === 47 /*/*/;
|
||||||
|
var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;
|
||||||
|
|
||||||
|
// Normalize the path
|
||||||
|
path = normalizeStringPosix(path, !isAbsolute);
|
||||||
|
|
||||||
|
if (path.length === 0 && !isAbsolute) path = '.';
|
||||||
|
if (path.length > 0 && trailingSeparator) path += '/';
|
||||||
|
|
||||||
|
if (isAbsolute) return '/' + path;
|
||||||
|
return path;
|
||||||
|
},
|
||||||
|
|
||||||
|
isAbsolute: function isAbsolute(path) {
|
||||||
|
assertPath(path);
|
||||||
|
return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;
|
||||||
|
},
|
||||||
|
|
||||||
|
join: function join() {
|
||||||
|
if (arguments.length === 0)
|
||||||
|
return '.';
|
||||||
|
var joined;
|
||||||
|
for (var i = 0; i < arguments.length; ++i) {
|
||||||
|
var arg = arguments[i];
|
||||||
|
assertPath(arg);
|
||||||
|
if (arg.length > 0) {
|
||||||
|
if (joined === undefined)
|
||||||
|
joined = arg;
|
||||||
|
else
|
||||||
|
joined += '/' + arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (joined === undefined)
|
||||||
|
return '.';
|
||||||
|
return posix.normalize(joined);
|
||||||
|
},
|
||||||
|
|
||||||
|
relative: function relative(from, to) {
|
||||||
|
assertPath(from);
|
||||||
|
assertPath(to);
|
||||||
|
|
||||||
|
if (from === to) return '';
|
||||||
|
|
||||||
|
from = posix.resolve(from);
|
||||||
|
to = posix.resolve(to);
|
||||||
|
|
||||||
|
if (from === to) return '';
|
||||||
|
|
||||||
|
// Trim any leading backslashes
|
||||||
|
var fromStart = 1;
|
||||||
|
for (; fromStart < from.length; ++fromStart) {
|
||||||
|
if (from.charCodeAt(fromStart) !== 47 /*/*/)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var fromEnd = from.length;
|
||||||
|
var fromLen = fromEnd - fromStart;
|
||||||
|
|
||||||
|
// Trim any leading backslashes
|
||||||
|
var toStart = 1;
|
||||||
|
for (; toStart < to.length; ++toStart) {
|
||||||
|
if (to.charCodeAt(toStart) !== 47 /*/*/)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var toEnd = to.length;
|
||||||
|
var toLen = toEnd - toStart;
|
||||||
|
|
||||||
|
// Compare paths to find the longest common path from root
|
||||||
|
var length = fromLen < toLen ? fromLen : toLen;
|
||||||
|
var lastCommonSep = -1;
|
||||||
|
var i = 0;
|
||||||
|
for (; i <= length; ++i) {
|
||||||
|
if (i === length) {
|
||||||
|
if (toLen > length) {
|
||||||
|
if (to.charCodeAt(toStart + i) === 47 /*/*/) {
|
||||||
|
// We get here if `from` is the exact base path for `to`.
|
||||||
|
// For example: from='/foo/bar'; to='/foo/bar/baz'
|
||||||
|
return to.slice(toStart + i + 1);
|
||||||
|
} else if (i === 0) {
|
||||||
|
// We get here if `from` is the root
|
||||||
|
// For example: from='/'; to='/foo'
|
||||||
|
return to.slice(toStart + i);
|
||||||
|
}
|
||||||
|
} else if (fromLen > length) {
|
||||||
|
if (from.charCodeAt(fromStart + i) === 47 /*/*/) {
|
||||||
|
// We get here if `to` is the exact base path for `from`.
|
||||||
|
// For example: from='/foo/bar/baz'; to='/foo/bar'
|
||||||
|
lastCommonSep = i;
|
||||||
|
} else if (i === 0) {
|
||||||
|
// We get here if `to` is the root.
|
||||||
|
// For example: from='/foo'; to='/'
|
||||||
|
lastCommonSep = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var fromCode = from.charCodeAt(fromStart + i);
|
||||||
|
var toCode = to.charCodeAt(toStart + i);
|
||||||
|
if (fromCode !== toCode)
|
||||||
|
break;
|
||||||
|
else if (fromCode === 47 /*/*/)
|
||||||
|
lastCommonSep = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
var out = '';
|
||||||
|
// Generate the relative path based on the path difference between `to`
|
||||||
|
// and `from`
|
||||||
|
for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
|
||||||
|
if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {
|
||||||
|
if (out.length === 0)
|
||||||
|
out += '..';
|
||||||
|
else
|
||||||
|
out += '/..';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lastly, append the rest of the destination (`to`) path that comes after
|
||||||
|
// the common path parts
|
||||||
|
if (out.length > 0)
|
||||||
|
return out + to.slice(toStart + lastCommonSep);
|
||||||
|
else {
|
||||||
|
toStart += lastCommonSep;
|
||||||
|
if (to.charCodeAt(toStart) === 47 /*/*/)
|
||||||
|
++toStart;
|
||||||
|
return to.slice(toStart);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_makeLong: function _makeLong(path) {
|
||||||
|
return path;
|
||||||
|
},
|
||||||
|
|
||||||
|
dirname: function dirname(path) {
|
||||||
|
assertPath(path);
|
||||||
|
if (path.length === 0) return '.';
|
||||||
|
var code = path.charCodeAt(0);
|
||||||
|
var hasRoot = code === 47 /*/*/;
|
||||||
|
var end = -1;
|
||||||
|
var matchedSlash = true;
|
||||||
|
for (var i = path.length - 1; i >= 1; --i) {
|
||||||
|
code = path.charCodeAt(i);
|
||||||
|
if (code === 47 /*/*/) {
|
||||||
|
if (!matchedSlash) {
|
||||||
|
end = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// We saw the first non-path separator
|
||||||
|
matchedSlash = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (end === -1) return hasRoot ? '/' : '.';
|
||||||
|
if (hasRoot && end === 1) return '//';
|
||||||
|
return path.slice(0, end);
|
||||||
|
},
|
||||||
|
|
||||||
|
basename: function basename(path, ext) {
|
||||||
|
if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string');
|
||||||
|
assertPath(path);
|
||||||
|
|
||||||
|
var start = 0;
|
||||||
|
var end = -1;
|
||||||
|
var matchedSlash = true;
|
||||||
|
var i;
|
||||||
|
|
||||||
|
if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {
|
||||||
|
if (ext.length === path.length && ext === path) return '';
|
||||||
|
var extIdx = ext.length - 1;
|
||||||
|
var firstNonSlashEnd = -1;
|
||||||
|
for (i = path.length - 1; i >= 0; --i) {
|
||||||
|
var code = path.charCodeAt(i);
|
||||||
|
if (code === 47 /*/*/) {
|
||||||
|
// If we reached a path separator that was not part of a set of path
|
||||||
|
// separators at the end of the string, stop now
|
||||||
|
if (!matchedSlash) {
|
||||||
|
start = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (firstNonSlashEnd === -1) {
|
||||||
|
// We saw the first non-path separator, remember this index in case
|
||||||
|
// we need it if the extension ends up not matching
|
||||||
|
matchedSlash = false;
|
||||||
|
firstNonSlashEnd = i + 1;
|
||||||
|
}
|
||||||
|
if (extIdx >= 0) {
|
||||||
|
// Try to match the explicit extension
|
||||||
|
if (code === ext.charCodeAt(extIdx)) {
|
||||||
|
if (--extIdx === -1) {
|
||||||
|
// We matched the extension, so mark this as the end of our path
|
||||||
|
// component
|
||||||
|
end = i;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Extension does not match, so our result is the entire path
|
||||||
|
// component
|
||||||
|
extIdx = -1;
|
||||||
|
end = firstNonSlashEnd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;
|
||||||
|
return path.slice(start, end);
|
||||||
|
} else {
|
||||||
|
for (i = path.length - 1; i >= 0; --i) {
|
||||||
|
if (path.charCodeAt(i) === 47 /*/*/) {
|
||||||
|
// If we reached a path separator that was not part of a set of path
|
||||||
|
// separators at the end of the string, stop now
|
||||||
|
if (!matchedSlash) {
|
||||||
|
start = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (end === -1) {
|
||||||
|
// We saw the first non-path separator, mark this as the end of our
|
||||||
|
// path component
|
||||||
|
matchedSlash = false;
|
||||||
|
end = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (end === -1) return '';
|
||||||
|
return path.slice(start, end);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
extname: function extname(path) {
|
||||||
|
assertPath(path);
|
||||||
|
var startDot = -1;
|
||||||
|
var startPart = 0;
|
||||||
|
var end = -1;
|
||||||
|
var matchedSlash = true;
|
||||||
|
// Track the state of characters (if any) we see before our first dot and
|
||||||
|
// after any path separator we find
|
||||||
|
var preDotState = 0;
|
||||||
|
for (var i = path.length - 1; i >= 0; --i) {
|
||||||
|
var code = path.charCodeAt(i);
|
||||||
|
if (code === 47 /*/*/) {
|
||||||
|
// If we reached a path separator that was not part of a set of path
|
||||||
|
// separators at the end of the string, stop now
|
||||||
|
if (!matchedSlash) {
|
||||||
|
startPart = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (end === -1) {
|
||||||
|
// We saw the first non-path separator, mark this as the end of our
|
||||||
|
// extension
|
||||||
|
matchedSlash = false;
|
||||||
|
end = i + 1;
|
||||||
|
}
|
||||||
|
if (code === 46 /*.*/) {
|
||||||
|
// If this is our first dot, mark it as the start of our extension
|
||||||
|
if (startDot === -1)
|
||||||
|
startDot = i;
|
||||||
|
else if (preDotState !== 1)
|
||||||
|
preDotState = 1;
|
||||||
|
} else if (startDot !== -1) {
|
||||||
|
// We saw a non-dot and non-path separator before our dot, so we should
|
||||||
|
// have a good chance at having a non-empty extension
|
||||||
|
preDotState = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startDot === -1 || end === -1 ||
|
||||||
|
// We saw a non-dot character immediately before the dot
|
||||||
|
preDotState === 0 ||
|
||||||
|
// The (right-most) trimmed path component is exactly '..'
|
||||||
|
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return path.slice(startDot, end);
|
||||||
|
},
|
||||||
|
|
||||||
|
format: function format(pathObject) {
|
||||||
|
if (pathObject === null || typeof pathObject !== 'object') {
|
||||||
|
throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject);
|
||||||
|
}
|
||||||
|
return _format('/', pathObject);
|
||||||
|
},
|
||||||
|
|
||||||
|
parse: function parse(path) {
|
||||||
|
assertPath(path);
|
||||||
|
|
||||||
|
var ret = { root: '', dir: '', base: '', ext: '', name: '' };
|
||||||
|
if (path.length === 0) return ret;
|
||||||
|
var code = path.charCodeAt(0);
|
||||||
|
var isAbsolute = code === 47 /*/*/;
|
||||||
|
var start;
|
||||||
|
if (isAbsolute) {
|
||||||
|
ret.root = '/';
|
||||||
|
start = 1;
|
||||||
|
} else {
|
||||||
|
start = 0;
|
||||||
|
}
|
||||||
|
var startDot = -1;
|
||||||
|
var startPart = 0;
|
||||||
|
var end = -1;
|
||||||
|
var matchedSlash = true;
|
||||||
|
var i = path.length - 1;
|
||||||
|
|
||||||
|
// Track the state of characters (if any) we see before our first dot and
|
||||||
|
// after any path separator we find
|
||||||
|
var preDotState = 0;
|
||||||
|
|
||||||
|
// Get non-dir info
|
||||||
|
for (; i >= start; --i) {
|
||||||
|
code = path.charCodeAt(i);
|
||||||
|
if (code === 47 /*/*/) {
|
||||||
|
// If we reached a path separator that was not part of a set of path
|
||||||
|
// separators at the end of the string, stop now
|
||||||
|
if (!matchedSlash) {
|
||||||
|
startPart = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (end === -1) {
|
||||||
|
// We saw the first non-path separator, mark this as the end of our
|
||||||
|
// extension
|
||||||
|
matchedSlash = false;
|
||||||
|
end = i + 1;
|
||||||
|
}
|
||||||
|
if (code === 46 /*.*/) {
|
||||||
|
// If this is our first dot, mark it as the start of our extension
|
||||||
|
if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;
|
||||||
|
} else if (startDot !== -1) {
|
||||||
|
// We saw a non-dot and non-path separator before our dot, so we should
|
||||||
|
// have a good chance at having a non-empty extension
|
||||||
|
preDotState = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startDot === -1 || end === -1 ||
|
||||||
|
// We saw a non-dot character immediately before the dot
|
||||||
|
preDotState === 0 ||
|
||||||
|
// The (right-most) trimmed path component is exactly '..'
|
||||||
|
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
||||||
|
if (end !== -1) {
|
||||||
|
if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (startPart === 0 && isAbsolute) {
|
||||||
|
ret.name = path.slice(1, startDot);
|
||||||
|
ret.base = path.slice(1, end);
|
||||||
|
} else {
|
||||||
|
ret.name = path.slice(startPart, startDot);
|
||||||
|
ret.base = path.slice(startPart, end);
|
||||||
|
}
|
||||||
|
ret.ext = path.slice(startDot, end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
|
||||||
|
sep: '/',
|
||||||
|
delimiter: ':',
|
||||||
|
win32: null,
|
||||||
|
posix: null
|
||||||
|
};
|
||||||
|
|
||||||
|
posix.posix = posix;
|
||||||
|
|
||||||
|
var pathBrowserify = posix;
|
||||||
|
|
||||||
|
const withSubfolderClass = 'oz-with-subfolder';
|
||||||
|
const showAllNumbersClass = 'oz-show-all-num';
|
||||||
|
const isFolder = (item) => item.file instanceof obsidian.TFolder;
|
||||||
|
const iterateItems = (items, callback) => {
|
||||||
|
for (const key in items) {
|
||||||
|
if (!Object.prototype.hasOwnProperty.call(items, key))
|
||||||
|
continue;
|
||||||
|
callback(items[key]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const getParentPath = (src) => {
|
||||||
|
if (src === '/')
|
||||||
|
return null;
|
||||||
|
const path = pathBrowserify.dirname(src);
|
||||||
|
if (path === '.')
|
||||||
|
return '/';
|
||||||
|
else
|
||||||
|
return path;
|
||||||
|
};
|
||||||
|
const equals = (arr1, arr2) => {
|
||||||
|
// if the other array is a falsy value, return
|
||||||
|
if (!Array.isArray(arr1) || !Array.isArray(arr2))
|
||||||
|
return false;
|
||||||
|
// compare lengths - can save a lot of time
|
||||||
|
if (arr1.length != arr2.length)
|
||||||
|
return false;
|
||||||
|
return arr1.every((v, i) => v === arr2[i]);
|
||||||
|
};
|
||||||
|
const isParent = (parent, child) => {
|
||||||
|
if (child === parent)
|
||||||
|
return false;
|
||||||
|
if (parent === '/')
|
||||||
|
parent = '';
|
||||||
|
if (child === '/')
|
||||||
|
child = '';
|
||||||
|
const parentTokens = parent.split('/').filter((i) => i.length);
|
||||||
|
return parentTokens.every((t, i) => child.split('/')[i] === t);
|
||||||
|
};
|
||||||
|
// Helper to play with the File Explorer (if exists)
|
||||||
|
const doWithFileExplorer = (plugin, callback) => {
|
||||||
|
let leaves;
|
||||||
|
let count = 0;
|
||||||
|
const tryGetView = () => {
|
||||||
|
leaves = plugin.app.workspace.getLeavesOfType('file-explorer');
|
||||||
|
if (leaves.length === 0) {
|
||||||
|
if (count++ > 5)
|
||||||
|
console.error('failed to get file-explorer');
|
||||||
|
else {
|
||||||
|
console.log('file-explorer not found, retrying...');
|
||||||
|
setTimeout(tryGetView, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (leaves.length > 1)
|
||||||
|
console.warn('more then one file-explorer');
|
||||||
|
callback(leaves[0].view);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
tryGetView();
|
||||||
|
};
|
||||||
|
|
||||||
|
function around(obj, factories) {
|
||||||
|
const removers = Object.keys(factories).map(key => around1(obj, key, factories[key]));
|
||||||
|
return removers.length === 1 ? removers[0] : function () { removers.forEach(r => r()); };
|
||||||
|
}
|
||||||
|
function around1(obj, method, createWrapper) {
|
||||||
|
const original = obj[method], hadOwn = obj.hasOwnProperty(method);
|
||||||
|
let current = createWrapper(original);
|
||||||
|
// Let our wrapper inherit static props from the wrapping method,
|
||||||
|
// and the wrapping method, props from the original method
|
||||||
|
if (original)
|
||||||
|
Object.setPrototypeOf(current, original);
|
||||||
|
Object.setPrototypeOf(wrapper, current);
|
||||||
|
obj[method] = wrapper;
|
||||||
|
// Return a callback to allow safe removal
|
||||||
|
return remove;
|
||||||
|
function wrapper(...args) {
|
||||||
|
// If we have been deactivated and are no longer wrapped, remove ourselves
|
||||||
|
if (current === original && obj[method] === wrapper)
|
||||||
|
remove();
|
||||||
|
return current.apply(this, args);
|
||||||
|
}
|
||||||
|
function remove() {
|
||||||
|
// If no other patches, just do a direct removal
|
||||||
|
if (obj[method] === wrapper) {
|
||||||
|
if (hadOwn)
|
||||||
|
obj[method] = original;
|
||||||
|
else
|
||||||
|
delete obj[method];
|
||||||
|
}
|
||||||
|
if (current === original)
|
||||||
|
return;
|
||||||
|
// Else pass future calls through, and remove wrapper from the prototype chain
|
||||||
|
current = original;
|
||||||
|
Object.setPrototypeOf(wrapper, original || Function);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const countFolderChildren = (folder, filter) => {
|
||||||
|
let count = 0;
|
||||||
|
for (const af of folder.children) {
|
||||||
|
if (filter(af))
|
||||||
|
count++;
|
||||||
|
if (af instanceof obsidian.TFolder)
|
||||||
|
count += countFolderChildren(af, filter);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
};
|
||||||
|
/** filter out all path that is the parent of existing path */
|
||||||
|
const filterParent = (pathList) => {
|
||||||
|
const list = Array.from(pathList);
|
||||||
|
list.sort();
|
||||||
|
for (let i = 0; i < list.length; i++) {
|
||||||
|
if (i < list.length - 1 && (list[i] === list[i + 1] || isParent(list[i], list[i + 1]))) {
|
||||||
|
list.shift();
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Set(list);
|
||||||
|
};
|
||||||
|
/** get all parents and add to set if not exist */
|
||||||
|
const getAllParents = (path, set) => {
|
||||||
|
let parent = getParentPath(path);
|
||||||
|
while (parent && !set.has(parent)) {
|
||||||
|
set.add(parent);
|
||||||
|
parent = getParentPath(parent);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Update folder count of target's parent
|
||||||
|
*/
|
||||||
|
const updateCount = (targetList, plugin) => {
|
||||||
|
const set = filterParent(targetList);
|
||||||
|
for (const path of targetList) {
|
||||||
|
getAllParents(path, set);
|
||||||
|
}
|
||||||
|
// set count of path
|
||||||
|
const { fileExplorer, fileFilter } = plugin;
|
||||||
|
if (!fileExplorer) {
|
||||||
|
console.error('fileExplorer missing');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (const path of set) {
|
||||||
|
// check if path available
|
||||||
|
if (!fileExplorer.fileItems[path])
|
||||||
|
continue;
|
||||||
|
setCount(fileExplorer.fileItems[path], fileFilter);
|
||||||
|
}
|
||||||
|
// Update root separately
|
||||||
|
if (plugin.rootFolderEl && plugin.settings.addRootFolder) {
|
||||||
|
setupRootCount(plugin);
|
||||||
|
}
|
||||||
|
// empty waitingList
|
||||||
|
targetList.length = 0;
|
||||||
|
};
|
||||||
|
const setupRootCount = (plugin) => {
|
||||||
|
if (plugin.rootFolderEl) {
|
||||||
|
let rootFolderElChildren = plugin.rootFolderEl.children;
|
||||||
|
if (rootFolderElChildren && rootFolderElChildren.length > 0) {
|
||||||
|
let totalCount = countFolderChildren(plugin.app.vault.getAbstractFileByPath('/'), plugin.fileFilter);
|
||||||
|
rootFolderElChildren[0].setAttr('data-count', totalCount.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const setupCount = (plugin, revert = false) => {
|
||||||
|
if (!plugin.fileExplorer)
|
||||||
|
throw new Error('fileExplorer not found');
|
||||||
|
// For each setup, first setup the root folder
|
||||||
|
plugin.setupRootFolder();
|
||||||
|
setupRootCount(plugin);
|
||||||
|
// Iterate other items and include new counts
|
||||||
|
iterateItems(plugin.fileExplorer.fileItems, (item) => {
|
||||||
|
if (!isFolder(item))
|
||||||
|
return;
|
||||||
|
if (revert)
|
||||||
|
removeCount(item);
|
||||||
|
else
|
||||||
|
setCount(item, plugin.fileFilter);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setCount = (item, filter) => {
|
||||||
|
// if (item.file.isRoot()) return;
|
||||||
|
const count = countFolderChildren(item.file, filter);
|
||||||
|
item.selfEl.dataset['count'] = count.toString();
|
||||||
|
item.selfEl.toggleClass(withSubfolderClass, Array.isArray(item.file.children) && item.file.children.some((af) => af instanceof obsidian.TFolder));
|
||||||
|
};
|
||||||
|
const removeCount = (item) => {
|
||||||
|
if (item.selfEl.dataset['count'])
|
||||||
|
delete item.selfEl.dataset['count'];
|
||||||
|
item.selfEl.removeClass(withSubfolderClass);
|
||||||
|
};
|
||||||
|
|
||||||
|
class VaultHandler {
|
||||||
|
get app() {
|
||||||
|
return this.plugin.app;
|
||||||
|
}
|
||||||
|
get vault() {
|
||||||
|
return this.plugin.app.vault;
|
||||||
|
}
|
||||||
|
constructor(plugin) {
|
||||||
|
this.waitingList = [];
|
||||||
|
this.update = obsidian.debounce(() => updateCount(this.waitingList, this.plugin), 500, true);
|
||||||
|
this.handler = (...args) => {
|
||||||
|
var _a;
|
||||||
|
for (const arg of args) {
|
||||||
|
const path = arg instanceof obsidian.TAbstractFile ? arg.path : arg;
|
||||||
|
this.waitingList.push((_a = getParentPath(path)) !== null && _a !== void 0 ? _a : '/');
|
||||||
|
}
|
||||||
|
this.update();
|
||||||
|
};
|
||||||
|
this.registerVaultEvent = () => {
|
||||||
|
this.plugin.registerEvent(this.vault.on('create', this.handler));
|
||||||
|
this.plugin.registerEvent(this.vault.on('rename', this.handler));
|
||||||
|
this.plugin.registerEvent(this.vault.on('delete', this.handler));
|
||||||
|
};
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const DEFAULT_SETTINGS = {
|
||||||
|
showAllNumbers: false,
|
||||||
|
filterList: ['md'],
|
||||||
|
blacklist: false,
|
||||||
|
addRootFolder: false,
|
||||||
|
};
|
||||||
|
class FENoteCountSettingTab extends obsidian.PluginSettingTab {
|
||||||
|
constructor(app, plugin) {
|
||||||
|
super(app, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
get showOnlyNoteValue() {
|
||||||
|
const { settings } = this.plugin;
|
||||||
|
return settings.blacklist === DEFAULT_SETTINGS.blacklist && equals(settings.filterList, DEFAULT_SETTINGS.filterList);
|
||||||
|
}
|
||||||
|
set showOnlyNoteValue(value) {
|
||||||
|
const { blacklist, filterList } = DEFAULT_SETTINGS;
|
||||||
|
this.plugin.settings.blacklist = blacklist;
|
||||||
|
if (value) {
|
||||||
|
// do deep copy
|
||||||
|
this.plugin.settings.filterList = Array.from(filterList);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.plugin.settings.filterList.length = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
let { containerEl } = this;
|
||||||
|
containerEl.empty();
|
||||||
|
containerEl.createEl('h2', {
|
||||||
|
text: 'File Explorer Note Count Settings',
|
||||||
|
});
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Show All Numbers')
|
||||||
|
.setDesc('Turn on this option if you want to see the number of notes even after you expand the collapsed folders')
|
||||||
|
.addToggle((toggle) => toggle.setValue(this.plugin.settings.showAllNumbers).onChange((value) => {
|
||||||
|
document.body.toggleClass('oz-show-all-num', value);
|
||||||
|
this.plugin.settings.showAllNumbers = value;
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Add Root Folder')
|
||||||
|
.setDesc('By default, there is no root folder provided by Obsidian. It is moved to drop-down menu to switch between vaults. ' +
|
||||||
|
'Enable this option if you want to see root folder and its count in the file explorer')
|
||||||
|
.addToggle((toggle) => toggle.setValue(this.plugin.settings.addRootFolder).onChange((value) => {
|
||||||
|
this.plugin.settings.addRootFolder = value;
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
this.plugin.reloadCount();
|
||||||
|
}));
|
||||||
|
this.filterOpt();
|
||||||
|
}
|
||||||
|
filterOpt() {
|
||||||
|
new obsidian.Setting(this.containerEl)
|
||||||
|
.setName('Show Only Markdown Notes')
|
||||||
|
.setDesc('Turn off this option to choose file that should be counted')
|
||||||
|
.addToggle((toggle) => toggle.setValue(this.showOnlyNoteValue).onChange((value) => {
|
||||||
|
this.showOnlyNoteValue = value;
|
||||||
|
this.plugin.reloadCount();
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
this.display();
|
||||||
|
}));
|
||||||
|
if (!this.showOnlyNoteValue) {
|
||||||
|
new obsidian.Setting(this.containerEl)
|
||||||
|
.setName('Filter List')
|
||||||
|
.setDesc(createFragment((descEl) => {
|
||||||
|
descEl.appendText('Extension list to include/exclude file during counting');
|
||||||
|
descEl.appendChild(document.createElement('br'));
|
||||||
|
descEl.appendText('Separated by comma');
|
||||||
|
}))
|
||||||
|
.addTextArea((text) => {
|
||||||
|
const onChange = (value) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const list = value.split(',').map((v) => v.trim());
|
||||||
|
this.plugin.settings.filterList = list;
|
||||||
|
this.plugin.reloadCount();
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
text.setPlaceholder('Leave it empty to count all types of files');
|
||||||
|
text.setValue(this.plugin.settings.filterList.join(', ')).onChange(obsidian.debounce(onChange, 500, true));
|
||||||
|
text.inputEl.rows = 2;
|
||||||
|
text.inputEl.cols = 25;
|
||||||
|
});
|
||||||
|
new obsidian.Setting(this.containerEl)
|
||||||
|
.setName('Enable Blacklist')
|
||||||
|
.setDesc('Turn on this option to use Filter List to exclude files')
|
||||||
|
.addToggle((toggle) => toggle.setValue(this.plugin.settings.blacklist).onChange((value) => {
|
||||||
|
this.plugin.settings.blacklist = value;
|
||||||
|
this.plugin.reloadCount();
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class FileExplorerNoteCount extends obsidian.Plugin {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
this.settings = DEFAULT_SETTINGS;
|
||||||
|
this.vaultHandler = new VaultHandler(this);
|
||||||
|
this.rootFolderEl = null;
|
||||||
|
this.explorerNavHeaderSelector = '.workspace-leaf-content[data-type="file-explorer"] .nav-header';
|
||||||
|
this.rootFolderClassName = 'oz-explorer-root-folder';
|
||||||
|
this.initialize = (revert = false) => {
|
||||||
|
let plugin = this;
|
||||||
|
// First Check if the root folder exists
|
||||||
|
let explorerHeaderEl = document.querySelector(`${this.explorerNavHeaderSelector} .${this.rootFolderClassName}`);
|
||||||
|
if (explorerHeaderEl)
|
||||||
|
this.rootFolderEl = explorerHeaderEl;
|
||||||
|
const getViewHandler = (revert) => (view) => {
|
||||||
|
this.fileExplorer = view;
|
||||||
|
setupCount(this, revert);
|
||||||
|
this.setupRootFolder(revert);
|
||||||
|
if (!revert) {
|
||||||
|
this.registerEvent(this.app.workspace.on('css-change', this.setupRootFolder));
|
||||||
|
this.vaultHandler.registerVaultEvent();
|
||||||
|
if (this.settings.showAllNumbers)
|
||||||
|
document.body.addClass('oz-show-all-num');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (const el of document.getElementsByClassName(withSubfolderClass)) {
|
||||||
|
el.removeClass(withSubfolderClass);
|
||||||
|
}
|
||||||
|
document.body.removeClass(showAllNumbersClass);
|
||||||
|
}
|
||||||
|
if (!revert) {
|
||||||
|
// when file explorer is closed (workspace changed)
|
||||||
|
// try to update fehanlder with new file explorer instance
|
||||||
|
this.register(around(view, {
|
||||||
|
onClose: (next) => function () {
|
||||||
|
setTimeout(() => doWithFileExplorer(plugin, getViewHandler(false)), 1e3);
|
||||||
|
return next.apply(this);
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
doWithFileExplorer(plugin, getViewHandler(revert));
|
||||||
|
};
|
||||||
|
this.setupRootFolder = (revert = false) => {
|
||||||
|
var _a, _b, _c;
|
||||||
|
if (!this.fileExplorer) {
|
||||||
|
console.error('file-explorer not found');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.rootFolderEl && !this.settings.addRootFolder) {
|
||||||
|
this.rootFolderEl.remove();
|
||||||
|
this.rootFolderEl = null;
|
||||||
|
}
|
||||||
|
// Check if root is provided by Obsidian (it shouldn't be in the new releases)
|
||||||
|
const root = (_c = (_b = (_a = this.fileExplorer) === null || _a === void 0 ? void 0 : _a.fileItems) === null || _b === void 0 ? void 0 : _b['/']) !== null && _c !== void 0 ? _c : null;
|
||||||
|
if (!root) {
|
||||||
|
// Get the Nav Header
|
||||||
|
let explorerHeaderEl = document.querySelector(this.explorerNavHeaderSelector);
|
||||||
|
if (!explorerHeaderEl)
|
||||||
|
return;
|
||||||
|
if (!this.rootFolderEl && this.settings.addRootFolder) {
|
||||||
|
this.rootFolderEl = explorerHeaderEl.createEl('div', {
|
||||||
|
cls: ['tree-item', 'nav-folder', this.rootFolderClassName],
|
||||||
|
});
|
||||||
|
this.rootFolderEl.innerHTML = `
|
||||||
|
<div class="oz-explorer-root-nav-folder-title" data-path="/">
|
||||||
|
<div class="tree-item-inner nav-folder-title-content">${this.app.vault.getName()}</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
onload() {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
console.log('loading FileExplorerNoteCount');
|
||||||
|
this.addSettingTab(new FENoteCountSettingTab(this.app, this));
|
||||||
|
yield this.loadSettings();
|
||||||
|
this.app.workspace.onLayoutReady(this.initialize);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
onunload() {
|
||||||
|
console.log('unloading FileExplorerNoteCount');
|
||||||
|
this.initialize(true);
|
||||||
|
}
|
||||||
|
loadSettings() {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
this.settings = Object.assign(Object.assign({}, this.settings), (yield this.loadData()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
saveSettings() {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
yield this.saveData(this.settings);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
reloadCount() {
|
||||||
|
setupCount(this);
|
||||||
|
}
|
||||||
|
get fileFilter() {
|
||||||
|
let list = this.settings.filterList;
|
||||||
|
return (af) => {
|
||||||
|
if (af instanceof obsidian.TFile) {
|
||||||
|
const { extension: target } = af;
|
||||||
|
// if list is empty, filter nothing
|
||||||
|
if (list.length === 0)
|
||||||
|
return true;
|
||||||
|
else if (this.settings.blacklist)
|
||||||
|
return !list.includes(target);
|
||||||
|
else
|
||||||
|
return list.includes(target);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = FileExplorerNoteCount;
|
||||||
|
|
||||||
|
/* nosourcemap */
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "file-explorer-note-count",
|
||||||
|
"name": "File Explorer Note Count",
|
||||||
|
"version": "1.2.3",
|
||||||
|
"minAppVersion": "1.2.0",
|
||||||
|
"description": "The plugin helps you to see the number of notes under each folder within the file explorer.",
|
||||||
|
"author": "Ozan Tellioglu",
|
||||||
|
"authorUrl": "https://www.ozan.pl",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
.nav-folder-title[data-count]::after {
|
||||||
|
content: attr(data-count);
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
font-size: calc(100% * 0.8);
|
||||||
|
margin-right: 4px;
|
||||||
|
/* border-radius: 3px; */
|
||||||
|
padding: 2px 0;
|
||||||
|
/* background-color: var(--background-secondary-alt); */
|
||||||
|
transition: opacity 100ms ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-explorer-root-nav-folder-title {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-explorer-root-nav-folder-title[data-count]::after {
|
||||||
|
content: attr(data-count);
|
||||||
|
margin-right: 4px;
|
||||||
|
font-size: calc(100% * 0.8);
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.oz-show-all-num) .nav-folder:not(.is-collapsed) > .nav-folder-title.oz-with-subfolder[data-count]:not([data-path='/'])::after {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-folder-title-content {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-explorer-root-folder {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"openViewOnStart": true,
|
||||||
|
"ribbonIcon": true,
|
||||||
|
"showRootFolder": true,
|
||||||
|
"showFilesFromSubFolders": true,
|
||||||
|
"searchFunction": true,
|
||||||
|
"allSearchOnlyInFocusedFolder": false,
|
||||||
|
"showFilesFromSubFoldersButton": true,
|
||||||
|
"revealActiveFileButton": false,
|
||||||
|
"excludedExtensions": "",
|
||||||
|
"hideAttachments": false,
|
||||||
|
"attachmentsFolderName": "attachments",
|
||||||
|
"folderIcon": "default",
|
||||||
|
"folderCount": true,
|
||||||
|
"folderCountOption": "notes",
|
||||||
|
"evernoteView": "Vertical",
|
||||||
|
"filePreviewOnHover": false,
|
||||||
|
"iconBeforeFileName": true,
|
||||||
|
"sortFilesBy": "name",
|
||||||
|
"sortReverse": false,
|
||||||
|
"sortFoldersBy": "name",
|
||||||
|
"fixedHeaderInFileList": true,
|
||||||
|
"createdYaml": false,
|
||||||
|
"fileNameIsHeader": false,
|
||||||
|
"folderNote": false,
|
||||||
|
"deleteFileOption": "trash",
|
||||||
|
"showFileNameAsFullPath": false,
|
||||||
|
"bookmarksEvents": false
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "file-tree-alternative",
|
||||||
|
"name": "File Tree Alternative",
|
||||||
|
"version": "2.6.0",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "This plugin allows you to have an alternative file tree view.",
|
||||||
|
"author": "Ozan Tellioglu",
|
||||||
|
"authorUrl": "https://www.ozan.pl",
|
||||||
|
"fundingUrl": "https://ko-fi.com/ozante",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,535 @@
|
||||||
|
/* @settings
|
||||||
|
|
||||||
|
name: File Tree Alternative Plugin
|
||||||
|
id: file-tree-alternative-plugin
|
||||||
|
settings:
|
||||||
|
|
||||||
|
# Folder Pane Styles
|
||||||
|
|
||||||
|
-
|
||||||
|
id: oz-fta-folder-pane-heading
|
||||||
|
title: Folder Pane Styles
|
||||||
|
description: Style settings dedicated for only folder pane
|
||||||
|
type: heading
|
||||||
|
level: 1
|
||||||
|
collapsed: true
|
||||||
|
-
|
||||||
|
id: oz-fta-folder-font-size
|
||||||
|
title: Folder Pane | Folder Name Font Size
|
||||||
|
description: Set folder pane font size in px
|
||||||
|
type: variable-number
|
||||||
|
default: 14
|
||||||
|
format: px
|
||||||
|
-
|
||||||
|
id: oz-fta-folder-icon-color
|
||||||
|
title: Folder Pane | Collapse/Expand Icon Color
|
||||||
|
description: Set the color of folder icons
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#2d8ff7'
|
||||||
|
-
|
||||||
|
id: oz-fta-folder-indendation-guide-color
|
||||||
|
title: Folder Pane | Indendation Guide Color
|
||||||
|
description: Set the color of indendation guide lines
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#ededeb'
|
||||||
|
-
|
||||||
|
id: oz-fta-folder-pane-file-name-color
|
||||||
|
title: Folder Pane | Folder Name Color
|
||||||
|
description: Set the color of names
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#'
|
||||||
|
|
||||||
|
# File Pane Styles
|
||||||
|
|
||||||
|
-
|
||||||
|
id: oz-fta-file-pane-heading
|
||||||
|
title: File Pane Styles
|
||||||
|
description: Style settings dedicated for only file pane
|
||||||
|
type: heading
|
||||||
|
level: 1
|
||||||
|
collapsed: true
|
||||||
|
-
|
||||||
|
id: oz-fta-file-font-size
|
||||||
|
title: File Pane | File Name Font Size
|
||||||
|
description: Set file pane font size in px
|
||||||
|
type: variable-number
|
||||||
|
default: 13
|
||||||
|
format: px
|
||||||
|
-
|
||||||
|
id: oz-fta-file-pane-file-name-color
|
||||||
|
title: File Pane | File Name Color
|
||||||
|
description: Set the color of names
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#'
|
||||||
|
-
|
||||||
|
id: oz-fta-file-pane-foldername-color
|
||||||
|
title: File Pane | Header Folder Name Color
|
||||||
|
description: Set the color of folder name in the file pane
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#'
|
||||||
|
|
||||||
|
# All Panes Styles
|
||||||
|
|
||||||
|
-
|
||||||
|
id: oz-fta-all-panes-heading
|
||||||
|
title: All Panes
|
||||||
|
description: Common style settings for both folder and file panes
|
||||||
|
type: heading
|
||||||
|
level: 1
|
||||||
|
collapsed: true
|
||||||
|
-
|
||||||
|
id: oz-fta-header-background-color
|
||||||
|
title: All Panes | Header Background Color
|
||||||
|
description: Set the background color of headers in both file and folder panes
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#'
|
||||||
|
-
|
||||||
|
id: oz-fta-header-icon-colors
|
||||||
|
title: All Panes | Header Action Icons Color
|
||||||
|
description: Set the color of icons in file and folder panes
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
alt-format:
|
||||||
|
-
|
||||||
|
id: oz-fta-header-icon-colors-accent-rgb
|
||||||
|
format: rgb
|
||||||
|
default: '#'
|
||||||
|
-
|
||||||
|
id: oz-fta-all-panes-active-text-color
|
||||||
|
title: All Panes | Active File/Folder Name Color
|
||||||
|
description: Set the color of active file and folder name
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#'
|
||||||
|
-
|
||||||
|
id: oz-fta-file-pane-active-file-background-color
|
||||||
|
title: File Pane | Active File Background Color
|
||||||
|
description: Set the color of active file background color
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
default: '#'
|
||||||
|
*/
|
||||||
|
|
||||||
|
.theme-light,
|
||||||
|
.theme-dark {
|
||||||
|
--oz-fta-folder-font-size: 13px;
|
||||||
|
--oz-fta-file-font-size: 12px;
|
||||||
|
--oz-fta-folder-icon-color: var(--interactive-accent);
|
||||||
|
--oz-fta-folder-indendation-guide-color: var(--text-muted);
|
||||||
|
--oz-fta-header-background-color: var(--background-secondary-alt);
|
||||||
|
--oz-fta-header-icon-colors: var(--text-muted);
|
||||||
|
--oz-fta-file-pane-foldername-color: var(--text-normal);
|
||||||
|
--oz-fta-folder-pane-file-name-color: var(--text-normal);
|
||||||
|
--oz-fta-header-icon-colors-accent-rgb: var(--interactive-accent-hover);
|
||||||
|
--oz-fta-all-panes-active-text-color: var(--text-normal);
|
||||||
|
--oz-fta-file-pane-active-file-background-color: var(--background-secondary-alt);
|
||||||
|
--oz-fta-file-pane-file-name-color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-file-tree-header {
|
||||||
|
color: var(--oz-fta-file-pane-foldername-color);
|
||||||
|
background: var(--oz-fta-header-background-color);
|
||||||
|
margin-top: 3px;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
align-items: center;
|
||||||
|
width: fit-content;
|
||||||
|
min-width: -webkit-fill-available;
|
||||||
|
min-width: fill-available;
|
||||||
|
height: fit-content;
|
||||||
|
padding: 5px 0px 5px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-action-button {
|
||||||
|
color: var(--oz-fta-header-icon-colors);
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0px 0px 0px 2px;
|
||||||
|
margin-left: 5px;
|
||||||
|
opacity: 0.5;
|
||||||
|
border-radius: 8px;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-action-button:hover {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-action-button svg {
|
||||||
|
vertical-align: middle !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-input-container {
|
||||||
|
margin-bottom: 3px !important;
|
||||||
|
margin-top: 3px !important;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-input-container input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-buttons-right-block {
|
||||||
|
text-align: right;
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
height: min-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-file-title {
|
||||||
|
color: var(--oz-fta-file-pane-file-name-color);
|
||||||
|
font-size: var(--oz-fta-file-font-size);
|
||||||
|
width: calc(100% - 30px);
|
||||||
|
display: flex;
|
||||||
|
white-space: nowrap;
|
||||||
|
min-width: 100%;
|
||||||
|
cursor: pointer;
|
||||||
|
line-height: 19px;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 1px 2px 0px 2px;
|
||||||
|
min-width: 100%;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-file-title .oz-nav-file-title-content {
|
||||||
|
width: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-file {
|
||||||
|
border-bottom: 1px solid var(--divider-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.oz-nav-file.is-active,
|
||||||
|
div.oz-nav-file.is-active div.oz-nav-file-title,
|
||||||
|
div.oz-nav-file.is-active div.oz-nav-file-title-content {
|
||||||
|
background-color: var(--oz-fta-file-pane-active-file-background-color);
|
||||||
|
color: var(--oz-fta-all-panes-active-text-color);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-folder-active {
|
||||||
|
color: var(--oz-fta-all-panes-active-text-color) !important;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-file-tag {
|
||||||
|
/* @Consider */
|
||||||
|
color: var(--text-muted);
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
border-radius: 3px;
|
||||||
|
font-size: 9px;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
margin: 0px 2px 0px 4px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
align-self: center;
|
||||||
|
padding: 0px 4px 0px 4px;
|
||||||
|
vertical-align: middle !important;
|
||||||
|
line-height: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.workspace-leaf-content[data-type='file-tree-view'] > div.view-content {
|
||||||
|
padding: 10px 5px 5px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-flex-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: min-content;
|
||||||
|
padding: 2px 2px 2px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folders-action-items {
|
||||||
|
text-align: center;
|
||||||
|
padding: 3px 2px 0px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folders-action-items,
|
||||||
|
.oz-flex-container {
|
||||||
|
background: var(--oz-fta-header-background-color);
|
||||||
|
border: 1px solid var(--oz-fta-header-background-color);
|
||||||
|
margin-bottom: 3px;
|
||||||
|
border-radius: 8px;
|
||||||
|
stroke-width: 2px;
|
||||||
|
-webkit-backdrop-filter: blur(8px);
|
||||||
|
backdrop-filter: blur(8px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-explorer-container {
|
||||||
|
padding-left: 3px !important;
|
||||||
|
padding-right: 3px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-file-tree-files {
|
||||||
|
padding-top: 3px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drag-entered,
|
||||||
|
.oz-folder-element:hover,
|
||||||
|
.oz-nav-file:hover {
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-file {
|
||||||
|
margin-left: 3px;
|
||||||
|
padding-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-contents {
|
||||||
|
will-change: transform, opacity, height;
|
||||||
|
margin-left: 6;
|
||||||
|
padding-left: 14px;
|
||||||
|
border-left: 2px solid var(--oz-fta-folder-indendation-guide-color);
|
||||||
|
margin-left: 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-toggle {
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
margin-right: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.treeview {
|
||||||
|
position: relative;
|
||||||
|
padding: 0px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-type {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 0.6em;
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-name {
|
||||||
|
color: var(--oz-fta-folder-pane-file-name-color);
|
||||||
|
font-size: var(--oz-fta-folder-font-size);
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.oz-folder-name.is-root-folder {
|
||||||
|
font-size: calc(var(--oz-fta-folder-font-size) + 2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-icon-div {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-line {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
white-space: nowrap;
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-block {
|
||||||
|
display: flex;
|
||||||
|
flex-grow: 1;
|
||||||
|
padding-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-count {
|
||||||
|
margin-left: auto;
|
||||||
|
height: 1.4em;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-element {
|
||||||
|
line-height: 1.4em;
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folders-tree-wrapper {
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
padding-left: 8px;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-input-container > input {
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-tree-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-tree-plugin-view {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-pane {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
height: 50%;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-file-list-pane {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-coffee-div {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#file-tree-divider {
|
||||||
|
height: 3.8px;
|
||||||
|
opacity: 0.3;
|
||||||
|
cursor: row-resize;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-bottom: 3px solid var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
div#file-tree-divider.active-divider {
|
||||||
|
background-color: var(--interactive-accent);
|
||||||
|
border-bottom: 0.5px solid var(--interactive-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
#file-tree-divider:hover {
|
||||||
|
background-color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-tree-container-horizontal {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-folder-pane-horizontal {
|
||||||
|
display: block;
|
||||||
|
width: 50%;
|
||||||
|
overflow-y: auto;
|
||||||
|
height: 100%;
|
||||||
|
resize: horizontal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-file-list-pane-horizontal {
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#file-tree-divider-horizontal {
|
||||||
|
margin-left: 5px;
|
||||||
|
width: 3.8px;
|
||||||
|
opacity: 0.3;
|
||||||
|
cursor: col-resize;
|
||||||
|
margin-right: 3px;
|
||||||
|
border-right: 3px solid var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
div#file-tree-divider-horizontal.active-divider {
|
||||||
|
background-color: var(--interactive-accent);
|
||||||
|
border-bottom: 0.5px solid var(--interactive-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
#file-tree-divider-horizontal:hover {
|
||||||
|
background-color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-tree-header-fixed {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-tree-files-fixed {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-tree-files-fixed-with-search {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg.oz-folder-toggle path {
|
||||||
|
fill: var(--oz-fta-folder-icon-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Solution for React-Icon Center Issue */
|
||||||
|
.oz-folder-name svg {
|
||||||
|
vertical-align: middle !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oz-nav-file-icon {
|
||||||
|
line-height: 1;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
margin-right: 2px;
|
||||||
|
padding-bottom: 2.5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Adjustments */
|
||||||
|
|
||||||
|
.is-mobile .oz-nav-file-title {
|
||||||
|
line-height: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mobile .oz-flex-container {
|
||||||
|
height: 31px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mobile .oz-folder-name.is-root-folder {
|
||||||
|
font-size: calc(var(--oz-fta-folder-font-size) + 2.5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mobile .oz-folder-name {
|
||||||
|
font-size: var(--oz-fta-folder-font-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mobile div.oz-nav-file-title .nav-file-title-content {
|
||||||
|
font-size: calc(var(--oz-fta-file-font-size) + 3px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mobile .oz-input-container > input {
|
||||||
|
height: 33px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-mobile .oz-nav-action-button svg {
|
||||||
|
transform: scale(1.2);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"hideQuotes": false,
|
||||||
|
"addToGraph": true,
|
||||||
|
"updateLinks": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,447 @@
|
||||||
|
/*
|
||||||
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||||
|
if you want to view the source, please visit the github repository of this plugin
|
||||||
|
*/
|
||||||
|
|
||||||
|
var __create = Object.create;
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
|
};
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// node_modules/valid-url/index.js
|
||||||
|
var require_valid_url = __commonJS({
|
||||||
|
"node_modules/valid-url/index.js"(exports, module2) {
|
||||||
|
(function(module3) {
|
||||||
|
"use strict";
|
||||||
|
module3.exports.is_uri = is_iri;
|
||||||
|
module3.exports.is_http_uri = is_http_iri;
|
||||||
|
module3.exports.is_https_uri = is_https_iri;
|
||||||
|
module3.exports.is_web_uri = is_web_iri;
|
||||||
|
module3.exports.isUri = is_iri;
|
||||||
|
module3.exports.isHttpUri = is_http_iri;
|
||||||
|
module3.exports.isHttpsUri = is_https_iri;
|
||||||
|
module3.exports.isWebUri = is_web_iri;
|
||||||
|
var splitUri = function(uri) {
|
||||||
|
var splitted = uri.match(/(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/);
|
||||||
|
return splitted;
|
||||||
|
};
|
||||||
|
function is_iri(value) {
|
||||||
|
if (!value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/[^a-z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\.\-\_\~\%]/i.test(value))
|
||||||
|
return;
|
||||||
|
if (/%[^0-9a-f]/i.test(value))
|
||||||
|
return;
|
||||||
|
if (/%[0-9a-f](:?[^0-9a-f]|$)/i.test(value))
|
||||||
|
return;
|
||||||
|
var splitted = [];
|
||||||
|
var scheme = "";
|
||||||
|
var authority = "";
|
||||||
|
var path = "";
|
||||||
|
var query = "";
|
||||||
|
var fragment = "";
|
||||||
|
var out = "";
|
||||||
|
splitted = splitUri(value);
|
||||||
|
scheme = splitted[1];
|
||||||
|
authority = splitted[2];
|
||||||
|
path = splitted[3];
|
||||||
|
query = splitted[4];
|
||||||
|
fragment = splitted[5];
|
||||||
|
if (!(scheme && scheme.length && path.length >= 0))
|
||||||
|
return;
|
||||||
|
if (authority && authority.length) {
|
||||||
|
if (!(path.length === 0 || /^\//.test(path)))
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
if (/^\/\//.test(path))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!/^[a-z][a-z0-9\+\-\.]*$/.test(scheme.toLowerCase()))
|
||||||
|
return;
|
||||||
|
out += scheme + ":";
|
||||||
|
if (authority && authority.length) {
|
||||||
|
out += "//" + authority;
|
||||||
|
}
|
||||||
|
out += path;
|
||||||
|
if (query && query.length) {
|
||||||
|
out += "?" + query;
|
||||||
|
}
|
||||||
|
if (fragment && fragment.length) {
|
||||||
|
out += "#" + fragment;
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
function is_http_iri(value, allowHttps) {
|
||||||
|
if (!is_iri(value)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var splitted = [];
|
||||||
|
var scheme = "";
|
||||||
|
var authority = "";
|
||||||
|
var path = "";
|
||||||
|
var port = "";
|
||||||
|
var query = "";
|
||||||
|
var fragment = "";
|
||||||
|
var out = "";
|
||||||
|
splitted = splitUri(value);
|
||||||
|
scheme = splitted[1];
|
||||||
|
authority = splitted[2];
|
||||||
|
path = splitted[3];
|
||||||
|
query = splitted[4];
|
||||||
|
fragment = splitted[5];
|
||||||
|
if (!scheme)
|
||||||
|
return;
|
||||||
|
if (allowHttps) {
|
||||||
|
if (scheme.toLowerCase() != "https")
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
if (scheme.toLowerCase() != "http")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!authority) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/:(\d+)$/.test(authority)) {
|
||||||
|
port = authority.match(/:(\d+)$/)[0];
|
||||||
|
authority = authority.replace(/:\d+$/, "");
|
||||||
|
}
|
||||||
|
out += scheme + ":";
|
||||||
|
out += "//" + authority;
|
||||||
|
if (port) {
|
||||||
|
out += port;
|
||||||
|
}
|
||||||
|
out += path;
|
||||||
|
if (query && query.length) {
|
||||||
|
out += "?" + query;
|
||||||
|
}
|
||||||
|
if (fragment && fragment.length) {
|
||||||
|
out += "#" + fragment;
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
function is_https_iri(value) {
|
||||||
|
return is_http_iri(value, true);
|
||||||
|
}
|
||||||
|
function is_web_iri(value) {
|
||||||
|
return is_http_iri(value) || is_https_iri(value);
|
||||||
|
}
|
||||||
|
})(module2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var main_exports = {};
|
||||||
|
__export(main_exports, {
|
||||||
|
default: () => FrontmatterLinksPlugin
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(main_exports);
|
||||||
|
var import_obsidian5 = require("obsidian");
|
||||||
|
|
||||||
|
// src/editor_plugin.ts
|
||||||
|
var import_language = require("@codemirror/language");
|
||||||
|
var import_state = require("@codemirror/state");
|
||||||
|
var import_view2 = require("@codemirror/view");
|
||||||
|
|
||||||
|
// src/link_widget.ts
|
||||||
|
var import_view = require("@codemirror/view");
|
||||||
|
var import_obsidian = require("obsidian");
|
||||||
|
var import_valid_url = __toESM(require_valid_url());
|
||||||
|
var FrontmatterLinkWidget = class extends import_view.WidgetType {
|
||||||
|
constructor(linkSlice) {
|
||||||
|
super();
|
||||||
|
this.linkSlice = linkSlice;
|
||||||
|
}
|
||||||
|
toDOM(view) {
|
||||||
|
const aElement = document.createElement("a");
|
||||||
|
aElement.href = this.linkSlice.href;
|
||||||
|
aElement.innerText = this.linkSlice.alias || this.linkSlice.href;
|
||||||
|
if ((0, import_valid_url.isUri)(this.linkSlice.href)) {
|
||||||
|
aElement.addClass(this.linkSlice.markdownLink ? "external-link" : "cm-url");
|
||||||
|
} else {
|
||||||
|
aElement.addClass("internal-link");
|
||||||
|
if (!(app.metadataCache.getFirstLinkpathDest(this.linkSlice.href, "") instanceof import_obsidian.TFile) && !this.linkSlice.markdownLink) {
|
||||||
|
aElement.addClass("is-unresolved");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aElement;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/editor_plugin.ts
|
||||||
|
var import_valid_url2 = __toESM(require_valid_url());
|
||||||
|
var import_obsidian2 = require("obsidian");
|
||||||
|
var FrontmatterLinksEditorPlugin = class {
|
||||||
|
constructor(view) {
|
||||||
|
this.linkSlices = new Array();
|
||||||
|
this.linkSlices = new Array();
|
||||||
|
this.decorations = this.buildDecorations(view);
|
||||||
|
}
|
||||||
|
update(update) {
|
||||||
|
if (update.docChanged || update.viewportChanged || update.selectionSet) {
|
||||||
|
this.decorations = this.buildDecorations(update.view);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
destroy() {
|
||||||
|
}
|
||||||
|
buildDecorations(view) {
|
||||||
|
const builder = new import_state.RangeSetBuilder();
|
||||||
|
this.linkSlices = new Array();
|
||||||
|
this.findLinks(view, this.linkSlices);
|
||||||
|
this.processLinks(view, builder);
|
||||||
|
return builder.finish();
|
||||||
|
}
|
||||||
|
findLinks(view, linkSlices) {
|
||||||
|
const settings = app.plugins.plugins["frontmatter-links"].settings;
|
||||||
|
let externalLinkFrom;
|
||||||
|
let externalLinkTo;
|
||||||
|
for (let { from, to } of view.visibleRanges) {
|
||||||
|
(0, import_language.syntaxTree)(view.state).iterate({
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
enter(node) {
|
||||||
|
if (externalLinkFrom === null) {
|
||||||
|
if (node.name === "hmd-frontmatter") {
|
||||||
|
externalLinkFrom = node.from;
|
||||||
|
externalLinkTo = node.to;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (node.name === "atom_hmd-frontmatter" || node.name === "def_hmd-frontmatter") {
|
||||||
|
let text = view.state.sliceDoc(externalLinkFrom, externalLinkTo);
|
||||||
|
if ((0, import_valid_url2.isUri)(text)) {
|
||||||
|
linkSlices.push({
|
||||||
|
originalText: text,
|
||||||
|
href: text,
|
||||||
|
from: externalLinkFrom,
|
||||||
|
to: externalLinkTo
|
||||||
|
});
|
||||||
|
}
|
||||||
|
externalLinkFrom = null;
|
||||||
|
} else {
|
||||||
|
externalLinkTo = node.to;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node.name === "hmd-frontmatter_string") {
|
||||||
|
const text = view.state.sliceDoc(node.from + 1, node.to - 1);
|
||||||
|
let match;
|
||||||
|
let href;
|
||||||
|
let alias;
|
||||||
|
let markdownLink;
|
||||||
|
if (match = text.match(/\[\[(.+)\|(.+)\]\]/m)) {
|
||||||
|
href = match[1];
|
||||||
|
alias = match[2];
|
||||||
|
} else if (match = text.match(/\[\[(.+)\]\]/m)) {
|
||||||
|
href = match[1];
|
||||||
|
} else if (match = text.match(/\[(.+)\]\((.+)\)/m)) {
|
||||||
|
href = match[2];
|
||||||
|
alias = match[1];
|
||||||
|
markdownLink = true;
|
||||||
|
} else if ((0, import_valid_url2.isUri)(text)) {
|
||||||
|
href = text;
|
||||||
|
}
|
||||||
|
if (href) {
|
||||||
|
linkSlices.push({
|
||||||
|
originalText: text,
|
||||||
|
href,
|
||||||
|
alias,
|
||||||
|
from: node.from + (settings.hideQuotes ? 0 : 1),
|
||||||
|
to: node.to - (settings.hideQuotes ? 0 : 1),
|
||||||
|
markdownLink
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
processLinks(view, builder) {
|
||||||
|
for (let linkSlice of this.linkSlices) {
|
||||||
|
const cursorHead = view.state.selection.main.head;
|
||||||
|
if (linkSlice.from - 1 <= cursorHead && cursorHead <= linkSlice.to + 1) {
|
||||||
|
this.styleLink(view, builder, linkSlice);
|
||||||
|
} else {
|
||||||
|
builder.add(linkSlice.from, linkSlice.to, import_view2.Decoration.replace({ widget: new FrontmatterLinkWidget(linkSlice) }));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
styleLink(view, builder, linkSlice) {
|
||||||
|
const settings = app.plugins.plugins["frontmatter-links"].settings;
|
||||||
|
const unresolved = !(app.metadataCache.getFirstLinkpathDest(linkSlice.href, "") instanceof import_obsidian2.TFile);
|
||||||
|
const text = view.state.sliceDoc(linkSlice.from, linkSlice.to);
|
||||||
|
let match;
|
||||||
|
if (match = text.match(/\[\[(.+)\|(.+)\]\]/m)) {
|
||||||
|
builder.add(linkSlice.from + (settings.hideQuotes ? 1 : 0), linkSlice.from + 2 + (settings.hideQuotes ? 1 : 0), import_view2.Decoration.mark({ class: "cm-formatting-link cm-formatting-link-start" }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[1]), linkSlice.from + text.indexOf(match[1]) + match[1].length, import_view2.Decoration.mark({ class: "cm-link" + (unresolved ? " is-unresolved" : "") }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[1]) + match[1].length, linkSlice.from + text.indexOf(match[1]) + match[1].length + 1, import_view2.Decoration.mark({ class: "cm-hmd-internal-link" }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[2]), linkSlice.from + text.indexOf(match[2]) + match[2].length, import_view2.Decoration.mark({ class: "cm-link" + (unresolved ? " is-unresolved" : "") }));
|
||||||
|
builder.add(linkSlice.to - 2 - (settings.hideQuotes ? 1 : 0), linkSlice.to - (settings.hideQuotes ? 1 : 0), import_view2.Decoration.mark({ class: "cm-formatting-link cm-formatting-link-end" }));
|
||||||
|
} else if (match = text.match(/\[\[(.+)\]\]/m)) {
|
||||||
|
builder.add(linkSlice.from + (settings.hideQuotes ? 1 : 0), linkSlice.from + 2 + (settings.hideQuotes ? 1 : 0), import_view2.Decoration.mark({ class: "cm-formatting-link cm-formatting-link-start" }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[1]), linkSlice.from + text.indexOf(match[1]) + match[1].length, import_view2.Decoration.mark({ class: "cm-link" + (unresolved ? " is-unresolved" : "") }));
|
||||||
|
builder.add(linkSlice.to - 2 - (settings.hideQuotes ? 1 : 0), linkSlice.to - (settings.hideQuotes ? 1 : 0), import_view2.Decoration.mark({ class: "cm-formatting-link cm-formatting-link-end" }));
|
||||||
|
} else if (match = text.match(/\[(.+)\](\(.+\))/m)) {
|
||||||
|
builder.add(linkSlice.from + (settings.hideQuotes ? 1 : 0), linkSlice.from + 1 + (settings.hideQuotes ? 1 : 0), import_view2.Decoration.mark({ class: "cm-formatting-link cm-formatting-link-start" }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[1]), linkSlice.from + text.indexOf(match[1]) + match[1].length, import_view2.Decoration.mark({ class: "cm-link" }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf("]"), linkSlice.from + text.indexOf("]") + 1, import_view2.Decoration.mark({ class: "cm-formatting-link cm-formatting-link-end" }));
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[2]), linkSlice.from + text.indexOf(match[2]) + match[2].length, import_view2.Decoration.mark({ class: (0, import_valid_url2.isUri)(linkSlice.href) ? "external-link" : "cm-url" }));
|
||||||
|
} else if (match = text.match(/\"(.+)\"/m)) {
|
||||||
|
builder.add(linkSlice.from + text.indexOf(match[1]), linkSlice.from + text.indexOf(match[1]) + match[1].length, import_view2.Decoration.mark({ class: "cm-url" }));
|
||||||
|
} else if ((0, import_valid_url2.isUri)(text)) {
|
||||||
|
builder.add(linkSlice.from, linkSlice.to, import_view2.Decoration.mark({ class: "cm-url" }));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var FRONTMATTER_LINKS_EDITOR_PLUGIN = import_view2.ViewPlugin.fromClass(FrontmatterLinksEditorPlugin, {
|
||||||
|
decorations: (value) => value.decorations
|
||||||
|
});
|
||||||
|
|
||||||
|
// src/metadata_cache.ts
|
||||||
|
var import_obsidian3 = require("obsidian");
|
||||||
|
var import_valid_url3 = __toESM(require_valid_url());
|
||||||
|
function onMetadataCacheResolve(file) {
|
||||||
|
const cache = app.metadataCache.getFileCache(file);
|
||||||
|
if (!cache) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const frontmatter = cache.frontmatter;
|
||||||
|
if (!frontmatter) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
addFrontmatterLinksToCache(file, frontmatter);
|
||||||
|
}
|
||||||
|
function addFrontmatterLinksToCache(file, frontmatter) {
|
||||||
|
if (!frontmatter) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (let key of Object.keys(frontmatter)) {
|
||||||
|
const value = frontmatter[key];
|
||||||
|
if (typeof value === "string") {
|
||||||
|
const match = value.match(/\[\[(.+)\|.+\]\]/m) || value.match(/\[\[(.+)\]\]/m) || value.match(/\[.+\]\((.+)\)/m);
|
||||||
|
if (!match) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let href = match[1];
|
||||||
|
if ((0, import_valid_url3.isUri)(href)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let f = app.metadataCache.getFirstLinkpathDest(href, "");
|
||||||
|
let links;
|
||||||
|
if (f instanceof import_obsidian3.TFile) {
|
||||||
|
href = f.path;
|
||||||
|
links = app.metadataCache.resolvedLinks;
|
||||||
|
} else {
|
||||||
|
links = app.metadataCache.unresolvedLinks;
|
||||||
|
}
|
||||||
|
if (links[file.path][href]) {
|
||||||
|
links[file.path][href] += 1;
|
||||||
|
} else {
|
||||||
|
links[file.path][href] = 1;
|
||||||
|
}
|
||||||
|
} else if (typeof value === "object") {
|
||||||
|
addFrontmatterLinksToCache(file, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/settings.ts
|
||||||
|
var import_obsidian4 = require("obsidian");
|
||||||
|
var DEFAULT_SETTINGS = {
|
||||||
|
hideQuotes: false,
|
||||||
|
addToGraph: true,
|
||||||
|
updateLinks: true
|
||||||
|
};
|
||||||
|
var FrontmatterLinksSettingTab = class extends import_obsidian4.PluginSettingTab {
|
||||||
|
constructor(app2, plugin) {
|
||||||
|
super(app2, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
new import_obsidian4.Setting(this.containerEl).setName("Hide quotation marks").setDesc("Don't render quotation marks surrounding frontmatter links.").addToggle((component) => {
|
||||||
|
component.setValue(this.plugin.settings.hideQuotes);
|
||||||
|
component.onChange((value) => {
|
||||||
|
this.plugin.settings.hideQuotes = value;
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
new import_obsidian4.Setting(this.containerEl).setName("Add to graph").setDesc("Add frontmatter link connections to the graph view.").addToggle((component) => {
|
||||||
|
component.setValue(this.plugin.settings.addToGraph);
|
||||||
|
component.onChange((value) => {
|
||||||
|
app.metadataCache.initialize();
|
||||||
|
this.plugin.settings.addToGraph = value;
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
new import_obsidian4.Setting(this.containerEl).setName("Automatically update internal frontmatter links").setDesc("Turn on to update frontmatter links when a note is renamed.<br>'Automatically update internal links' in 'Files & Links' must also be enabled.").setDesc(createFragment((el) => {
|
||||||
|
el.appendText("Turn on to update frontmatter links when a note is renamed.");
|
||||||
|
el.createEl("br");
|
||||||
|
el.createEl("div", {
|
||||||
|
cls: "mod-warning",
|
||||||
|
text: "Disabled because it was causing issues. Will fix next week after finals. Sorry."
|
||||||
|
});
|
||||||
|
})).addToggle((component) => {
|
||||||
|
component.setValue(this.plugin.settings.updateLinks);
|
||||||
|
component.onChange((value) => {
|
||||||
|
this.plugin.settings.updateLinks = value;
|
||||||
|
this.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
}).setDisabled(true);
|
||||||
|
}
|
||||||
|
hide() {
|
||||||
|
this.containerEl.empty();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var FrontmatterLinksPlugin = class extends import_obsidian5.Plugin {
|
||||||
|
async onload() {
|
||||||
|
await this.loadSettings();
|
||||||
|
this.addSettingTab(new FrontmatterLinksSettingTab(this.app, this));
|
||||||
|
this.registerEditorExtension(FRONTMATTER_LINKS_EDITOR_PLUGIN);
|
||||||
|
if (this.settings.addToGraph) {
|
||||||
|
app.metadataCache.initialize();
|
||||||
|
}
|
||||||
|
const plugin = this;
|
||||||
|
this.registerEvent(app.metadataCache.on("resolve", (file) => {
|
||||||
|
if (!plugin.settings.addToGraph) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
onMetadataCacheResolve(file);
|
||||||
|
}));
|
||||||
|
this.registerEvent(app.vault.on("rename", (file, oldPath) => {
|
||||||
|
if (plugin.settings.updateLinks && app.vault.getConfig("alwaysUpdateLinks")) {
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
onunload() {
|
||||||
|
}
|
||||||
|
async loadSettings() {
|
||||||
|
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
|
||||||
|
this.settings.updateLinks = false;
|
||||||
|
this.saveSettings();
|
||||||
|
}
|
||||||
|
async saveSettings() {
|
||||||
|
this.saveData(this.settings);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* nosourcemap */
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "frontmatter-links",
|
||||||
|
"name": "Frontmatter Links",
|
||||||
|
"version": "1.2.7",
|
||||||
|
"minAppVersion": "1.0.0",
|
||||||
|
"description": "Renders links in a note's frontmatter as links.",
|
||||||
|
"author": "Dion Tryban (Trikzon)",
|
||||||
|
"authorUrl": "https://github.com/Trikzon",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "lemons-search",
|
||||||
|
"name": "Lemons Search",
|
||||||
|
"version": "0.3.0",
|
||||||
|
"minAppVersion": "1.6.0",
|
||||||
|
"description": "A blazingly fast fuzzy finder with file preview.",
|
||||||
|
"author": "Moritz Jung",
|
||||||
|
"authorUrl": "https://www.moritzjung.dev",
|
||||||
|
"fundingUrl": "https://github.com/sponsors/mProjectsCode",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
.lemons-search {
|
||||||
|
/* marker class */
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--modal {
|
||||||
|
min-width: 80%;
|
||||||
|
height: 80%;
|
||||||
|
padding: revert;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--modal .modal-content {
|
||||||
|
display: flex;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--modal .modal-header {
|
||||||
|
margin: revert;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: var(--size-4-3);
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search .lemons-search--search {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search .lemons-search--search input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search .lemons-search--preview {
|
||||||
|
flex: 2;
|
||||||
|
text-wrap: wrap;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search .lemons-search--preview > * {
|
||||||
|
padding: var(--size-4-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search .lemons-search--preview .preview-empty {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search--preview-search .lemons-search--preview .preview-img img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search .modal-content .prompt-results {
|
||||||
|
padding: 0;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search .suggestion-sub-text {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search .suggestion-item.is-selected .suggestion-sub-text {
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search .lemons-search--suggestion-group-header {
|
||||||
|
padding: var(--size-2-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search .lemons-search--suggestion-empty {
|
||||||
|
padding: var(--size-2-3) var(--size-4-3);
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lemons-search .suggestion-item {
|
||||||
|
white-space: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .lemons-search-modal .modal-content .prompt-results .suggestion-title {
|
||||||
|
color: var(--text-muted);
|
||||||
|
|
||||||
|
& .suggestion-highlight {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
} */
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "link-tree",
|
||||||
|
"name": "Link Tree",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "View file links and backlinks as a recursively expandable, filterable list with editable text, combining the structure of outliners like Dynalist & WorkFlowy with the flexibility of Obsidian.",
|
||||||
|
"author": "Joshua Reinier",
|
||||||
|
"authorUrl": "https://joshuareinier.com",
|
||||||
|
"fundingUrl": "https://joshuareinier.com",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,790 @@
|
||||||
|
/* src/plugins/obsidian-link-tree/src/styles.css */
|
||||||
|
*,
|
||||||
|
::before,
|
||||||
|
::after {
|
||||||
|
--tw-border-spacing-x: 0;
|
||||||
|
--tw-border-spacing-y: 0;
|
||||||
|
--tw-translate-x: 0;
|
||||||
|
--tw-translate-y: 0;
|
||||||
|
--tw-rotate: 0;
|
||||||
|
--tw-skew-x: 0;
|
||||||
|
--tw-skew-y: 0;
|
||||||
|
--tw-scale-x: 1;
|
||||||
|
--tw-scale-y: 1;
|
||||||
|
--tw-pan-x: ;
|
||||||
|
--tw-pan-y: ;
|
||||||
|
--tw-pinch-zoom: ;
|
||||||
|
--tw-scroll-snap-strictness: proximity;
|
||||||
|
--tw-gradient-from-position: ;
|
||||||
|
--tw-gradient-via-position: ;
|
||||||
|
--tw-gradient-to-position: ;
|
||||||
|
--tw-ordinal: ;
|
||||||
|
--tw-slashed-zero: ;
|
||||||
|
--tw-numeric-figure: ;
|
||||||
|
--tw-numeric-spacing: ;
|
||||||
|
--tw-numeric-fraction: ;
|
||||||
|
--tw-ring-inset: ;
|
||||||
|
--tw-ring-offset-width: 0px;
|
||||||
|
--tw-ring-offset-color: #fff;
|
||||||
|
--tw-ring-color: rgb(59 130 246 / 0.5);
|
||||||
|
--tw-ring-offset-shadow: 0 0 #0000;
|
||||||
|
--tw-ring-shadow: 0 0 #0000;
|
||||||
|
--tw-shadow: 0 0 #0000;
|
||||||
|
--tw-shadow-colored: 0 0 #0000;
|
||||||
|
--tw-blur: ;
|
||||||
|
--tw-brightness: ;
|
||||||
|
--tw-contrast: ;
|
||||||
|
--tw-grayscale: ;
|
||||||
|
--tw-hue-rotate: ;
|
||||||
|
--tw-invert: ;
|
||||||
|
--tw-saturate: ;
|
||||||
|
--tw-sepia: ;
|
||||||
|
--tw-drop-shadow: ;
|
||||||
|
--tw-backdrop-blur: ;
|
||||||
|
--tw-backdrop-brightness: ;
|
||||||
|
--tw-backdrop-contrast: ;
|
||||||
|
--tw-backdrop-grayscale: ;
|
||||||
|
--tw-backdrop-hue-rotate: ;
|
||||||
|
--tw-backdrop-invert: ;
|
||||||
|
--tw-backdrop-opacity: ;
|
||||||
|
--tw-backdrop-saturate: ;
|
||||||
|
--tw-backdrop-sepia: ;
|
||||||
|
}
|
||||||
|
::backdrop {
|
||||||
|
--tw-border-spacing-x: 0;
|
||||||
|
--tw-border-spacing-y: 0;
|
||||||
|
--tw-translate-x: 0;
|
||||||
|
--tw-translate-y: 0;
|
||||||
|
--tw-rotate: 0;
|
||||||
|
--tw-skew-x: 0;
|
||||||
|
--tw-skew-y: 0;
|
||||||
|
--tw-scale-x: 1;
|
||||||
|
--tw-scale-y: 1;
|
||||||
|
--tw-pan-x: ;
|
||||||
|
--tw-pan-y: ;
|
||||||
|
--tw-pinch-zoom: ;
|
||||||
|
--tw-scroll-snap-strictness: proximity;
|
||||||
|
--tw-gradient-from-position: ;
|
||||||
|
--tw-gradient-via-position: ;
|
||||||
|
--tw-gradient-to-position: ;
|
||||||
|
--tw-ordinal: ;
|
||||||
|
--tw-slashed-zero: ;
|
||||||
|
--tw-numeric-figure: ;
|
||||||
|
--tw-numeric-spacing: ;
|
||||||
|
--tw-numeric-fraction: ;
|
||||||
|
--tw-ring-inset: ;
|
||||||
|
--tw-ring-offset-width: 0px;
|
||||||
|
--tw-ring-offset-color: #fff;
|
||||||
|
--tw-ring-color: rgb(59 130 246 / 0.5);
|
||||||
|
--tw-ring-offset-shadow: 0 0 #0000;
|
||||||
|
--tw-ring-shadow: 0 0 #0000;
|
||||||
|
--tw-shadow: 0 0 #0000;
|
||||||
|
--tw-shadow-colored: 0 0 #0000;
|
||||||
|
--tw-blur: ;
|
||||||
|
--tw-brightness: ;
|
||||||
|
--tw-contrast: ;
|
||||||
|
--tw-grayscale: ;
|
||||||
|
--tw-hue-rotate: ;
|
||||||
|
--tw-invert: ;
|
||||||
|
--tw-saturate: ;
|
||||||
|
--tw-sepia: ;
|
||||||
|
--tw-drop-shadow: ;
|
||||||
|
--tw-backdrop-blur: ;
|
||||||
|
--tw-backdrop-brightness: ;
|
||||||
|
--tw-backdrop-contrast: ;
|
||||||
|
--tw-backdrop-grayscale: ;
|
||||||
|
--tw-backdrop-hue-rotate: ;
|
||||||
|
--tw-backdrop-invert: ;
|
||||||
|
--tw-backdrop-opacity: ;
|
||||||
|
--tw-backdrop-saturate: ;
|
||||||
|
--tw-backdrop-sepia: ;
|
||||||
|
}
|
||||||
|
.fixed {
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
.\!absolute {
|
||||||
|
position: absolute !important;
|
||||||
|
}
|
||||||
|
.absolute {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.relative {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.sticky {
|
||||||
|
position: sticky;
|
||||||
|
}
|
||||||
|
.left-0 {
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
.left-1\/2 {
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
.top-0 {
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
.top-1\/2 {
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
.top-4 {
|
||||||
|
top: 1rem;
|
||||||
|
}
|
||||||
|
.z-10 {
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.z-30 {
|
||||||
|
z-index: 30;
|
||||||
|
}
|
||||||
|
.z-40 {
|
||||||
|
z-index: 40;
|
||||||
|
}
|
||||||
|
.\!mx-0 {
|
||||||
|
margin-left: 0px !important;
|
||||||
|
margin-right: 0px !important;
|
||||||
|
}
|
||||||
|
.mx-1 {
|
||||||
|
margin-left: 0.25rem;
|
||||||
|
margin-right: 0.25rem;
|
||||||
|
}
|
||||||
|
.my-0 {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
.my-1 {
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
.my-2 {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.my-4 {
|
||||||
|
margin-top: 1rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
.-mt-1 {
|
||||||
|
margin-top: -0.25rem;
|
||||||
|
}
|
||||||
|
.ml-1 {
|
||||||
|
margin-left: 0.25rem;
|
||||||
|
}
|
||||||
|
.ml-2 {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
.mr-1 {
|
||||||
|
margin-right: 0.25rem;
|
||||||
|
}
|
||||||
|
.mr-2 {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
.mt-1 {
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
}
|
||||||
|
.mt-2 {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
.block {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.inline {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.flex {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.aspect-square {
|
||||||
|
aspect-ratio: 1 / 1;
|
||||||
|
}
|
||||||
|
.\!h-fit {
|
||||||
|
height: -moz-fit-content !important;
|
||||||
|
height: fit-content !important;
|
||||||
|
}
|
||||||
|
.h-0 {
|
||||||
|
height: 0px;
|
||||||
|
}
|
||||||
|
.h-0\.5 {
|
||||||
|
height: 0.125rem;
|
||||||
|
}
|
||||||
|
.h-1 {
|
||||||
|
height: 0.25rem;
|
||||||
|
}
|
||||||
|
.h-1\.5 {
|
||||||
|
height: 0.375rem;
|
||||||
|
}
|
||||||
|
.h-12 {
|
||||||
|
height: 3rem;
|
||||||
|
}
|
||||||
|
.h-2 {
|
||||||
|
height: 0.5rem;
|
||||||
|
}
|
||||||
|
.h-3 {
|
||||||
|
height: 0.75rem;
|
||||||
|
}
|
||||||
|
.h-4 {
|
||||||
|
height: 1rem;
|
||||||
|
}
|
||||||
|
.h-6 {
|
||||||
|
height: 1.5rem;
|
||||||
|
}
|
||||||
|
.h-\[16px\] {
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
.h-\[28px\] {
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
|
.h-\[75vh\] {
|
||||||
|
height: 75vh;
|
||||||
|
}
|
||||||
|
.h-full {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.h-line {
|
||||||
|
height: calc(var(--line-height-normal) * 1em);
|
||||||
|
}
|
||||||
|
.max-h-\[50\%\] {
|
||||||
|
max-height: 50%;
|
||||||
|
}
|
||||||
|
.max-h-\[calc\(28px\*2\+2px\)\] {
|
||||||
|
max-height: calc(28px * 2 + 2px);
|
||||||
|
}
|
||||||
|
.min-h-\[12px\] {
|
||||||
|
min-height: 12px;
|
||||||
|
}
|
||||||
|
.min-h-\[4px\] {
|
||||||
|
min-height: 4px;
|
||||||
|
}
|
||||||
|
.min-h-line {
|
||||||
|
min-height: var(--font-text-size);
|
||||||
|
}
|
||||||
|
.\!w-8 {
|
||||||
|
width: 2rem !important;
|
||||||
|
}
|
||||||
|
.\!w-full {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
.w-1 {
|
||||||
|
width: 0.25rem;
|
||||||
|
}
|
||||||
|
.w-1\.5 {
|
||||||
|
width: 0.375rem;
|
||||||
|
}
|
||||||
|
.w-16 {
|
||||||
|
width: 4rem;
|
||||||
|
}
|
||||||
|
.w-2 {
|
||||||
|
width: 0.5rem;
|
||||||
|
}
|
||||||
|
.w-3 {
|
||||||
|
width: 0.75rem;
|
||||||
|
}
|
||||||
|
.w-4 {
|
||||||
|
width: 1rem;
|
||||||
|
}
|
||||||
|
.w-6 {
|
||||||
|
width: 1.5rem;
|
||||||
|
}
|
||||||
|
.w-7 {
|
||||||
|
width: 1.75rem;
|
||||||
|
}
|
||||||
|
.w-8 {
|
||||||
|
width: 2rem;
|
||||||
|
}
|
||||||
|
.w-\[4em\] {
|
||||||
|
width: 4em;
|
||||||
|
}
|
||||||
|
.w-fit {
|
||||||
|
width: -moz-fit-content;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
.w-full {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.min-w-\[24px\] {
|
||||||
|
min-width: 24px;
|
||||||
|
}
|
||||||
|
.max-w-\[75\%\] {
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
.flex-none {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
.grow {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
.-translate-x-1\/2 {
|
||||||
|
--tw-translate-x: -50%;
|
||||||
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||||
|
}
|
||||||
|
.-translate-y-1\/2 {
|
||||||
|
--tw-translate-y: -50%;
|
||||||
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||||
|
}
|
||||||
|
.cursor-grab {
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
.cursor-ns-resize {
|
||||||
|
cursor: ns-resize;
|
||||||
|
}
|
||||||
|
.cursor-pointer {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.select-none {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.snap-x {
|
||||||
|
scroll-snap-type: x var(--tw-scroll-snap-strictness);
|
||||||
|
}
|
||||||
|
.snap-y {
|
||||||
|
scroll-snap-type: y var(--tw-scroll-snap-strictness);
|
||||||
|
}
|
||||||
|
.snap-mandatory {
|
||||||
|
--tw-scroll-snap-strictness: mandatory ;
|
||||||
|
}
|
||||||
|
.grid-cols-2 {
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
.flex-col {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.flex-wrap {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.items-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.justify-end {
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
.justify-center {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.justify-around {
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
.space-x-1 > :not([hidden]) ~ :not([hidden]) {
|
||||||
|
--tw-space-x-reverse: 0;
|
||||||
|
margin-right: calc(0.25rem * var(--tw-space-x-reverse));
|
||||||
|
margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
|
||||||
|
}
|
||||||
|
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
||||||
|
--tw-space-x-reverse: 0;
|
||||||
|
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
||||||
|
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
||||||
|
}
|
||||||
|
.space-x-4 > :not([hidden]) ~ :not([hidden]) {
|
||||||
|
--tw-space-x-reverse: 0;
|
||||||
|
margin-right: calc(1rem * var(--tw-space-x-reverse));
|
||||||
|
margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
|
||||||
|
}
|
||||||
|
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
|
||||||
|
--tw-space-y-reverse: 0;
|
||||||
|
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
|
||||||
|
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
|
||||||
|
}
|
||||||
|
.overflow-hidden {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.\!overflow-x-auto {
|
||||||
|
overflow-x: auto !important;
|
||||||
|
}
|
||||||
|
.overflow-x-auto {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
.overflow-y-auto {
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.overflow-x-hidden {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
.overflow-y-clip {
|
||||||
|
overflow-y: clip;
|
||||||
|
}
|
||||||
|
.truncate {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.whitespace-nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.break-words {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
.rounded {
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
}
|
||||||
|
.rounded-checkbox {
|
||||||
|
border-radius: var(--checkbox-radius);
|
||||||
|
}
|
||||||
|
.rounded-full {
|
||||||
|
border-radius: 9999px;
|
||||||
|
}
|
||||||
|
.rounded-icon {
|
||||||
|
border-radius: var(--clickable-icon-radius);
|
||||||
|
}
|
||||||
|
.rounded-lg {
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
.border {
|
||||||
|
border-width: 1px;
|
||||||
|
}
|
||||||
|
.border-t {
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
|
.border-solid {
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
.\!border-none {
|
||||||
|
border-style: none !important;
|
||||||
|
}
|
||||||
|
.border-none {
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
.border-faint {
|
||||||
|
border-color: var(--text-faint);
|
||||||
|
}
|
||||||
|
.border-muted {
|
||||||
|
border-color: var(--text-muted);
|
||||||
|
}
|
||||||
|
.\!bg-accent {
|
||||||
|
background-color: var(--text-accent) !important;
|
||||||
|
}
|
||||||
|
.\!bg-selection {
|
||||||
|
background-color: var(--text-selection) !important;
|
||||||
|
}
|
||||||
|
.bg-faint {
|
||||||
|
background-color: var(--text-faint);
|
||||||
|
}
|
||||||
|
.bg-gray-500\/5 {
|
||||||
|
background-color: rgb(107 114 128 / 0.05);
|
||||||
|
}
|
||||||
|
.bg-muted {
|
||||||
|
background-color: var(--text-muted);
|
||||||
|
}
|
||||||
|
.bg-primary {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
}
|
||||||
|
.bg-primary-alt {
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
}
|
||||||
|
.bg-red-500\/20 {
|
||||||
|
background-color: rgb(239 68 68 / 0.2);
|
||||||
|
}
|
||||||
|
.bg-red-800\/50 {
|
||||||
|
background-color: rgb(153 27 27 / 0.5);
|
||||||
|
}
|
||||||
|
.bg-secondary-alt {
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
}
|
||||||
|
.bg-selection {
|
||||||
|
background-color: var(--text-selection);
|
||||||
|
}
|
||||||
|
.bg-transparent {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.p-0 {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
.p-0\.5 {
|
||||||
|
padding: 0.125rem;
|
||||||
|
}
|
||||||
|
.p-1 {
|
||||||
|
padding: 0.25rem;
|
||||||
|
}
|
||||||
|
.p-4 {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
.px-1 {
|
||||||
|
padding-left: 0.25rem;
|
||||||
|
padding-right: 0.25rem;
|
||||||
|
}
|
||||||
|
.px-4 {
|
||||||
|
padding-left: 1rem;
|
||||||
|
padding-right: 1rem;
|
||||||
|
}
|
||||||
|
.py-0 {
|
||||||
|
padding-top: 0px;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
}
|
||||||
|
.py-0\.5 {
|
||||||
|
padding-top: 0.125rem;
|
||||||
|
padding-bottom: 0.125rem;
|
||||||
|
}
|
||||||
|
.py-1 {
|
||||||
|
padding-top: 0.25rem;
|
||||||
|
padding-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
.py-2 {
|
||||||
|
padding-top: 0.5rem;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.pb-0 {
|
||||||
|
padding-bottom: 0px;
|
||||||
|
}
|
||||||
|
.pb-0\.5 {
|
||||||
|
padding-bottom: 0.125rem;
|
||||||
|
}
|
||||||
|
.pb-1 {
|
||||||
|
padding-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
.pb-2 {
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.pb-4 {
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
.pl-1 {
|
||||||
|
padding-left: 0.25rem;
|
||||||
|
}
|
||||||
|
.pl-2 {
|
||||||
|
padding-left: 0.5rem;
|
||||||
|
}
|
||||||
|
.pl-6 {
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
}
|
||||||
|
.pl-7 {
|
||||||
|
padding-left: 1.75rem;
|
||||||
|
}
|
||||||
|
.pr-2 {
|
||||||
|
padding-right: 0.5rem;
|
||||||
|
}
|
||||||
|
.pt-4 {
|
||||||
|
padding-top: 1rem;
|
||||||
|
}
|
||||||
|
.text-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.text-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.font-menu {
|
||||||
|
font-family: var(--font-interface);
|
||||||
|
}
|
||||||
|
.font-sans {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
}
|
||||||
|
.font-serif {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
}
|
||||||
|
.\!text-xs {
|
||||||
|
font-size: 0.75rem !important;
|
||||||
|
line-height: 1rem !important;
|
||||||
|
}
|
||||||
|
.text-base {
|
||||||
|
font-size: var(--font-text-size);
|
||||||
|
}
|
||||||
|
.text-lg {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
line-height: 1.75rem;
|
||||||
|
}
|
||||||
|
.text-sm {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
line-height: 1.25rem;
|
||||||
|
}
|
||||||
|
.text-xs {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
line-height: 1rem;
|
||||||
|
}
|
||||||
|
.font-bold {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.leading-line {
|
||||||
|
line-height: var(--line-height-normal);
|
||||||
|
}
|
||||||
|
.text-accent {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
.text-faint {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
.text-muted {
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
.text-normal {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.line-through {
|
||||||
|
text-decoration-line: line-through;
|
||||||
|
}
|
||||||
|
.opacity-0 {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
.opacity-40 {
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
.opacity-50 {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
.opacity-75 {
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
|
.\!shadow-none {
|
||||||
|
--tw-shadow: 0 0 #0000 !important;
|
||||||
|
--tw-shadow-colored: 0 0 #0000 !important;
|
||||||
|
box-shadow:
|
||||||
|
var(--tw-ring-offset-shadow, 0 0 #0000),
|
||||||
|
var(--tw-ring-shadow, 0 0 #0000),
|
||||||
|
var(--tw-shadow) !important;
|
||||||
|
}
|
||||||
|
.shadow-none {
|
||||||
|
--tw-shadow: 0 0 #0000;
|
||||||
|
--tw-shadow-colored: 0 0 #0000;
|
||||||
|
box-shadow:
|
||||||
|
var(--tw-ring-offset-shadow, 0 0 #0000),
|
||||||
|
var(--tw-ring-shadow, 0 0 #0000),
|
||||||
|
var(--tw-shadow);
|
||||||
|
}
|
||||||
|
.invert {
|
||||||
|
--tw-invert: invert(100%);
|
||||||
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||||
|
}
|
||||||
|
.filter {
|
||||||
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||||
|
}
|
||||||
|
.backdrop-blur {
|
||||||
|
--tw-backdrop-blur: blur(8px);
|
||||||
|
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||||
|
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||||
|
}
|
||||||
|
.transition {
|
||||||
|
transition-property:
|
||||||
|
color,
|
||||||
|
background-color,
|
||||||
|
border-color,
|
||||||
|
text-decoration-color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
-webkit-backdrop-filter;
|
||||||
|
transition-property:
|
||||||
|
color,
|
||||||
|
background-color,
|
||||||
|
border-color,
|
||||||
|
text-decoration-color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter;
|
||||||
|
transition-property:
|
||||||
|
color,
|
||||||
|
background-color,
|
||||||
|
border-color,
|
||||||
|
text-decoration-color,
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
opacity,
|
||||||
|
box-shadow,
|
||||||
|
transform,
|
||||||
|
filter,
|
||||||
|
backdrop-filter,
|
||||||
|
-webkit-backdrop-filter;
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transition-duration: 150ms;
|
||||||
|
}
|
||||||
|
.transition-colors {
|
||||||
|
transition-property:
|
||||||
|
color,
|
||||||
|
background-color,
|
||||||
|
border-color,
|
||||||
|
text-decoration-color,
|
||||||
|
fill,
|
||||||
|
stroke;
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transition-duration: 150ms;
|
||||||
|
}
|
||||||
|
.transition-opacity {
|
||||||
|
transition-property: opacity;
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transition-duration: 150ms;
|
||||||
|
}
|
||||||
|
.duration-1000 {
|
||||||
|
transition-duration: 1000ms;
|
||||||
|
}
|
||||||
|
.duration-300 {
|
||||||
|
transition-duration: 300ms;
|
||||||
|
}
|
||||||
|
.ease-in-out {
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
.ease-linear {
|
||||||
|
transition-timing-function: linear;
|
||||||
|
}
|
||||||
|
.hover\:border-b:hover {
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
.hover\:border-normal:hover {
|
||||||
|
border-color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.hover\:underline:hover {
|
||||||
|
text-decoration-line: underline;
|
||||||
|
}
|
||||||
|
.active\:\!w-full:active {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
.group:hover .group-hover\:opacity-100 {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.child\:relative > * {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.child\:h-full > * {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.child\:w-1\/2 > * {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.child\:w-1\/3 > * {
|
||||||
|
width: 33.333333%;
|
||||||
|
}
|
||||||
|
.child\:w-1\/4 > * {
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.child\:w-\[calc\(100\%\/7\)\] > * {
|
||||||
|
width: calc(100% / 7);
|
||||||
|
}
|
||||||
|
.child\:w-full > * {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.child\:flex-none > * {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
.child\:snap-start > * {
|
||||||
|
scroll-snap-align: start;
|
||||||
|
}
|
||||||
|
.child\:truncate > * {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.child\:p-2 > * {
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
.child\:px-1 > * {
|
||||||
|
padding-left: 0.25rem;
|
||||||
|
padding-right: 0.25rem;
|
||||||
|
}
|
||||||
|
.child\:pb-0 > * {
|
||||||
|
padding-bottom: 0px;
|
||||||
|
}
|
||||||
|
@media (hover: hover) {
|
||||||
|
.mouse\:hover\:border:hover {
|
||||||
|
border-width: 1px;
|
||||||
|
}
|
||||||
|
.mouse\:hover\:border-solid:hover {
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"presetFields": [
|
||||||
|
{
|
||||||
|
"type": "Select",
|
||||||
|
"tagName": "select",
|
||||||
|
"icon": "right-triangle",
|
||||||
|
"tooltip": "Accepts a single value from a list",
|
||||||
|
"colorClass": "select",
|
||||||
|
"options": {
|
||||||
|
"sourceType": "ValuesListNotePath",
|
||||||
|
"valuesList": {
|
||||||
|
"1": "AR",
|
||||||
|
"2": "BO",
|
||||||
|
"3": "BR",
|
||||||
|
"4": "CL"
|
||||||
|
},
|
||||||
|
"valuesListNotePath": "countries.md"
|
||||||
|
},
|
||||||
|
"name": "country",
|
||||||
|
"id": "hzsqnO",
|
||||||
|
"path": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Multi",
|
||||||
|
"tagName": "multi",
|
||||||
|
"icon": "bullet-list",
|
||||||
|
"tooltip": "Accepts multiple values from a list",
|
||||||
|
"colorClass": "multi",
|
||||||
|
"options": {
|
||||||
|
"sourceType": "ValuesList",
|
||||||
|
"valuesList": {
|
||||||
|
"1": "video",
|
||||||
|
"2": "audio",
|
||||||
|
"3": "booklet",
|
||||||
|
"4": "simple"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "translations",
|
||||||
|
"id": "kVzZVa",
|
||||||
|
"path": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fileClassQueries": [],
|
||||||
|
"displayFieldsInContextMenu": true,
|
||||||
|
"globallyIgnoredFields": [],
|
||||||
|
"classFilesPath": null,
|
||||||
|
"isAutosuggestEnabled": true,
|
||||||
|
"fileClassAlias": "fileClass",
|
||||||
|
"settingsVersion": "5.8",
|
||||||
|
"firstDayOfWeek": 1,
|
||||||
|
"enableLinks": true,
|
||||||
|
"enableTabHeader": true,
|
||||||
|
"enableEditor": true,
|
||||||
|
"enableBacklinks": true,
|
||||||
|
"enableStarred": true,
|
||||||
|
"enableFileExplorer": true,
|
||||||
|
"enableSearch": true,
|
||||||
|
"enableProperties": true,
|
||||||
|
"tableViewMaxRecords": 20,
|
||||||
|
"frontmatterListDisplay": "asArray",
|
||||||
|
"fileClassExcludedFolders": [],
|
||||||
|
"showIndexingStatusInStatusBar": true,
|
||||||
|
"fileIndexingExcludedFolders": [],
|
||||||
|
"fileIndexingExcludedExtensions": [
|
||||||
|
".excalidraw.md"
|
||||||
|
],
|
||||||
|
"fileIndexingExcludedRegex": [],
|
||||||
|
"frontmatterOnly": false,
|
||||||
|
"showFileClassSelectInModal": true,
|
||||||
|
"chooseFileClassAtFileCreation": false,
|
||||||
|
"autoInsertFieldsAtFileClassInsertion": false,
|
||||||
|
"fileClassIcon": "package",
|
||||||
|
"isAutoCalculationEnabled": true
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"id": "metadata-menu",
|
||||||
|
"name": "Metadata Menu",
|
||||||
|
"version": "0.8.9",
|
||||||
|
"minAppVersion": "1.4.16",
|
||||||
|
"description": "For data quality enthusiasts (and dataview users): manage the metadata of your notes.",
|
||||||
|
"author": "mdelobelle",
|
||||||
|
"authorUrl": "https://github.com/mdelobelle",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": "https://github.com/sponsors/mdelobelle/",
|
||||||
|
"helpUrl": "https://mdelobelle.github.io/metadatamenu/"
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"bibleVersion": "rv1960",
|
||||||
|
"defaultBibleVersion": "rv1960",
|
||||||
|
"referenceLinkPosition": "Header",
|
||||||
|
"verseFormatting": "Single Line",
|
||||||
|
"verseNumberFormatting": "1. ",
|
||||||
|
"collapsibleVerses": false,
|
||||||
|
"enableHyperlinking": true,
|
||||||
|
"showVerseTranslation": true,
|
||||||
|
"bookTagging": false,
|
||||||
|
"chapterTagging": false,
|
||||||
|
"enableBibleVerseLookupRibbon": false,
|
||||||
|
"optOutToEvents": false,
|
||||||
|
"bookBacklinking": "None",
|
||||||
|
"chapterBacklinking": "None",
|
||||||
|
"bibleVersionStatusIndicator": "Short",
|
||||||
|
"displayBibleIconPrefixAtHeader": true,
|
||||||
|
"internalLinkingFormat": "None",
|
||||||
|
"enableInternalLinking": "None",
|
||||||
|
"versionCodeBLB": ""
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-bible-reference",
|
||||||
|
"name": "Bible Reference",
|
||||||
|
"version": "25.05.13",
|
||||||
|
"minAppVersion": "0.12.0",
|
||||||
|
"description": "Taking Bible Study note in Obsidian.md application easily. Automatically suggesting Bible Verses as references. ",
|
||||||
|
"author": "tim-hub",
|
||||||
|
"authorUrl": "https://github.com/tim-hub",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": {
|
||||||
|
"GitHub Sponsor": "https://github.com/sponsors/tim-hub"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
.callout[data-callout='bible'] {
|
||||||
|
/*--callout-color: 0, 0, 0;*/
|
||||||
|
/*fa-book-bible"*/
|
||||||
|
/* <!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --> */
|
||||||
|
--callout-icon: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><path d='M448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-31.1c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM144 144c0-8.875 7.125-15.1 16-15.1L208 128V80c0-8.875 7.125-15.1 16-15.1l32 .0009c8.875 0 16 7.12 16 15.1V128L320 128c8.875 0 16 7.121 16 15.1v32c0 8.875-7.125 16-16 16L272 192v112c0 8.875-7.125 16-16 16l-32-.0002c-8.875 0-16-7.127-16-16V192L160 192c-8.875 0-16-7.127-16-16V144zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448z'/></svg>";
|
||||||
|
}
|
||||||
|
|
||||||
|
.obr-loading-container {
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sponsor-button {
|
||||||
|
margin-right: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-core-search-assistant-plugin",
|
||||||
|
"name": "Core Search Assistant",
|
||||||
|
"version": "0.9.4",
|
||||||
|
"minAppVersion": "1.2.7",
|
||||||
|
"description": "Enhance built-in search: keyboard interface, card preview, bigger preview",
|
||||||
|
"author": "qawatake",
|
||||||
|
"authorUrl": "https://github.com/qawatake/obsidian-core-search-assistant-plugin",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
/* search result item */
|
||||||
|
.core-search-assistant_search-result-items-focus .tree-item-self {
|
||||||
|
background-color: var(--background-secondary-alt);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.core-search-assistant_search-result-items-focus .tree-item-flair {
|
||||||
|
background-color: var(--interactive-accent);
|
||||||
|
color: var(--text-on-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* outline on search mode */
|
||||||
|
body {
|
||||||
|
--search-mode-outline: var(--interactive-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* option modal */
|
||||||
|
.core-search-assistant_option-modal div.modal {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
}
|
||||||
|
.core-search-assistant_option-modal kbd.suggestion-hotkey {
|
||||||
|
float: right;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 10px;
|
||||||
|
padding: 0 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
.core-search-assistant_option-modal span.suggestion-icon {
|
||||||
|
float: left;
|
||||||
|
margin-left: 0;
|
||||||
|
padding: 0 10px;
|
||||||
|
height: 1.5em;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.core-search-assistant_option-modal div.suggestion-item {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 10px;
|
||||||
|
cursor: default;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.core-search-assistant_option-modal div.suggestion-item.is-selected {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
text color
|
||||||
|
*/
|
||||||
|
span {
|
||||||
|
--highlight-search-match: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
background color
|
||||||
|
*/
|
||||||
|
span {
|
||||||
|
--highlight-search-match-bg: var(--text-highlight-bg);
|
||||||
|
--focus-search-match-bg: #ff9633;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"getLangFromFile": true,
|
||||||
|
"defaultLanguage": "en_US",
|
||||||
|
"normalLang": "en_US",
|
||||||
|
"shouldShowSynonymPopover": true,
|
||||||
|
"shouldShowCustomContextMenu": false,
|
||||||
|
"apiSettings": {
|
||||||
|
"en_US": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": "Free Dictionary API"
|
||||||
|
},
|
||||||
|
"hi": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"es": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": "Altervista"
|
||||||
|
},
|
||||||
|
"fr": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": "Altervista"
|
||||||
|
},
|
||||||
|
"ja": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"ru": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"en_GB": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"de": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": "Open Thesaurus"
|
||||||
|
},
|
||||||
|
"it": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": "Altervista"
|
||||||
|
},
|
||||||
|
"ko": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"pt_BR": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"ar": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"tr": {
|
||||||
|
"definitionApiName": "Free Dictionary API",
|
||||||
|
"synonymApiName": null
|
||||||
|
},
|
||||||
|
"cn": {
|
||||||
|
"definitionApiName": "Offline Dictionary",
|
||||||
|
"synonymApiName": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"partOfSpeechApiName": "Systran API",
|
||||||
|
"advancedSynonymAnalysis": false,
|
||||||
|
"useCaching": false,
|
||||||
|
"folder": "",
|
||||||
|
"capitalizedFileName": true,
|
||||||
|
"prefix": "",
|
||||||
|
"suffix": " ({{lang}})",
|
||||||
|
"template": "---\n# {{notice}}\naliases: [\"{{word}}\"]\n---\n\n# {{word}}\n\n## {{pronunciationHeader}}\n\n{{phoneticList}}\n\n## {{meaningHeader}}\n\n{{meanings}}\n\n## {{originHeader}}\n\n{{origin}}\n",
|
||||||
|
"languageSpecificSubFolders": false
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-dictionary-plugin",
|
||||||
|
"name": "Dictionary",
|
||||||
|
"version": "2.22.0",
|
||||||
|
"minAppVersion": "0.12.11",
|
||||||
|
"description": "This is a simple dictionary for the Obsidian Note-Taking Tool.",
|
||||||
|
"author": "phibr0",
|
||||||
|
"authorUrl": "https://github.com/phibr0",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
.setting-item.extra > .setting-item-info {
|
||||||
|
opacity: 0.65;
|
||||||
|
}
|
||||||
|
|
||||||
|
a[href="https://ko-fi.com/phibr0"] > img
|
||||||
|
{
|
||||||
|
height: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a[href="https://ko-fi.com/phibr0"]
|
||||||
|
{
|
||||||
|
transform: translate(0, 5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dictionaryprefixsuffix .setting-item-control input {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dictionarytextarea .setting-item-control textarea {
|
||||||
|
height: 15em;
|
||||||
|
width: 100%;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dictionarycenter {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dictionarybuttons {
|
||||||
|
display: flex;
|
||||||
|
place-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dictionary-view-content {
|
||||||
|
overflow-y: hidden !important;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
{
|
||||||
|
"version": "3.13.1",
|
||||||
|
"templates": {
|
||||||
|
"common": {
|
||||||
|
"main": "title",
|
||||||
|
"fallback": "fallback_title"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"paths": {
|
||||||
|
"mode": "black",
|
||||||
|
"values": []
|
||||||
|
},
|
||||||
|
"delimiter": {
|
||||||
|
"enabled": false,
|
||||||
|
"value": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug": false,
|
||||||
|
"boot": {
|
||||||
|
"delay": 1000,
|
||||||
|
"background": true
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"alias": {
|
||||||
|
"enabled": false,
|
||||||
|
"strategy": "ensure",
|
||||||
|
"validator": "fr",
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"explorer": {
|
||||||
|
"enabled": false,
|
||||||
|
"sort": true,
|
||||||
|
"templates": {
|
||||||
|
"main": "{{date}}-{{activity}} {{title}}",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tab": {
|
||||||
|
"enabled": true,
|
||||||
|
"templates": {
|
||||||
|
"main": "{{date}}-{{activity}} {{title}}",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"header": {
|
||||||
|
"enabled": true,
|
||||||
|
"templates": {
|
||||||
|
"main": "{{date}}-{{activity}} {{title}}",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"graph": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bookmarks": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inlineTitle": {
|
||||||
|
"enabled": true,
|
||||||
|
"templates": {
|
||||||
|
"main": "title",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"canvas": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"backlink": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"windowFrame": {
|
||||||
|
"enabled": false,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"noteLink": {
|
||||||
|
"enabled": false,
|
||||||
|
"strategy": "onlyEmpty",
|
||||||
|
"approval": true,
|
||||||
|
"templates": {
|
||||||
|
"main": "",
|
||||||
|
"fallback": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"processor": {
|
||||||
|
"args": [],
|
||||||
|
"type": null
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-front-matter-title-plugin",
|
||||||
|
"name": "Front Matter Title",
|
||||||
|
"version": "3.13.1",
|
||||||
|
"minAppVersion": "1.7.4",
|
||||||
|
"description": "Lets you define a title in frontmatter to be displayed as the filename for explorer, graph, search and etc.",
|
||||||
|
"author": "Snezhig",
|
||||||
|
"authorUrl": "https://github.com/snezhig",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": "https://www.buymeacoffee.com/snezhig"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"commitMessage": "vault backup: {{date}}",
|
||||||
|
"autoCommitMessage": "vault backup: {{date}}",
|
||||||
|
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||||
|
"autoSaveInterval": 0,
|
||||||
|
"autoPushInterval": 0,
|
||||||
|
"autoPullInterval": 0,
|
||||||
|
"autoPullOnBoot": false,
|
||||||
|
"disablePush": false,
|
||||||
|
"pullBeforePush": true,
|
||||||
|
"disablePopups": false,
|
||||||
|
"showErrorNotices": true,
|
||||||
|
"disablePopupsForNoChanges": false,
|
||||||
|
"listChangedFilesInMessageBody": false,
|
||||||
|
"showStatusBar": true,
|
||||||
|
"updateSubmodules": false,
|
||||||
|
"syncMethod": "merge",
|
||||||
|
"customMessageOnAutoBackup": false,
|
||||||
|
"autoBackupAfterFileChange": false,
|
||||||
|
"treeStructure": false,
|
||||||
|
"refreshSourceControl": true,
|
||||||
|
"basePath": "",
|
||||||
|
"differentIntervalCommitAndPush": false,
|
||||||
|
"changedFilesInStatusBar": true,
|
||||||
|
"showedMobileNotice": true,
|
||||||
|
"refreshSourceControlTimer": 7000,
|
||||||
|
"showBranchStatusBar": true,
|
||||||
|
"setLastSaveToLastCommit": false,
|
||||||
|
"submoduleRecurseCheckout": false,
|
||||||
|
"gitDir": "",
|
||||||
|
"showFileMenu": true,
|
||||||
|
"authorInHistoryView": "full",
|
||||||
|
"dateInHistoryView": true,
|
||||||
|
"diffStyle": "split",
|
||||||
|
"lineAuthor": {
|
||||||
|
"show": false,
|
||||||
|
"followMovement": "inactive",
|
||||||
|
"authorDisplay": "initials",
|
||||||
|
"showCommitHash": false,
|
||||||
|
"dateTimeFormatOptions": "date",
|
||||||
|
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
||||||
|
"dateTimeTimezone": "viewer-local",
|
||||||
|
"coloringMaxAge": "1y",
|
||||||
|
"colorNew": {
|
||||||
|
"r": 255,
|
||||||
|
"g": 150,
|
||||||
|
"b": 150
|
||||||
|
},
|
||||||
|
"colorOld": {
|
||||||
|
"r": 120,
|
||||||
|
"g": 160,
|
||||||
|
"b": 255
|
||||||
|
},
|
||||||
|
"textColorCss": "var(--text-muted)",
|
||||||
|
"ignoreWhitespace": false,
|
||||||
|
"gutterSpacingFallbackLength": 5,
|
||||||
|
"lastShownAuthorDisplay": "initials",
|
||||||
|
"lastShownDateTimeFormatOptions": "date"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"author": "Vinzent",
|
||||||
|
"authorUrl": "https://github.com/Vinzent03",
|
||||||
|
"id": "obsidian-git",
|
||||||
|
"name": "Git",
|
||||||
|
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||||
|
"version": "2.33.0"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PROMPT="$1"
|
||||||
|
TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
rm -f "$TEMP_FILE" "$TEMP_FILE.response"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
echo "$PROMPT" > "$TEMP_FILE"
|
||||||
|
|
||||||
|
while [ ! -e "$TEMP_FILE.response" ]; do
|
||||||
|
if [ ! -e "$TEMP_FILE" ]; then
|
||||||
|
echo "Trigger file got removed: Abort" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
RESPONSE=$(cat "$TEMP_FILE.response")
|
||||||
|
|
||||||
|
echo "$RESPONSE"
|
||||||
|
|
@ -0,0 +1,605 @@
|
||||||
|
@keyframes loading {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .button-border {
|
||||||
|
border: 2px solid var(--interactive-accent);
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .view-content {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"] .view-content {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading > svg {
|
||||||
|
animation: 2s linear infinite loading;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-center {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-textarea {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-center-button {
|
||||||
|
display: block;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.mod-left {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.mod-right {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
.git-tools {
|
||||||
|
display: flex;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.git-tools .type {
|
||||||
|
padding-left: var(--size-2-1);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-tools .type[data-type="M"] {
|
||||||
|
color: orange;
|
||||||
|
}
|
||||||
|
.git-tools .type[data-type="D"] {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.git-tools .buttons {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.git-tools .buttons > * {
|
||||||
|
padding: 0 0;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-active .git-tools .buttons > * {
|
||||||
|
color: var(--nav-item-color-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-author {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-date {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-ref {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-d-none {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-bottom: 1px solid var(--interactive-accent);
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
height: 35px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added {
|
||||||
|
border: 1px solid #b4e2b4;
|
||||||
|
border-radius: 5px 0 0 5px;
|
||||||
|
color: #399839;
|
||||||
|
padding: 2px;
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
|
||||||
|
border: 1px solid #e9aeae;
|
||||||
|
border-radius: 0 5px 5px 0;
|
||||||
|
color: #c33;
|
||||||
|
margin-left: 1px;
|
||||||
|
padding: 2px;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
font-size: 15px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name {
|
||||||
|
overflow-x: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse {
|
||||||
|
-webkit-box-pack: end;
|
||||||
|
-ms-flex-pack: end;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
font-size: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 4px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected {
|
||||||
|
background-color: #c8e1ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input {
|
||||||
|
margin: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-family: Menlo, Consolas, monospace;
|
||||||
|
font-size: 13px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff {
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
margin-right: -4px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
overflow-y: hidden;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line {
|
||||||
|
padding: 0 8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||||
|
display: inline-block;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||||
|
padding: 0 4.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn {
|
||||||
|
word-wrap: normal;
|
||||||
|
background: none;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
vertical-align: middle;
|
||||||
|
white-space: pre;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||||
|
.theme-light
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-code-side-line
|
||||||
|
del {
|
||||||
|
background-color: #ffb6ba;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||||
|
.theme-dark
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-code-side-line
|
||||||
|
del {
|
||||||
|
background-color: #8d232881;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
|
||||||
|
border-radius: 0.2em;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: -1px;
|
||||||
|
text-decoration: none;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||||
|
.theme-light
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-code-side-line
|
||||||
|
ins {
|
||||||
|
background-color: #97f295;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||||
|
.theme-dark
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-code-side-line
|
||||||
|
ins {
|
||||||
|
background-color: #1d921996;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix {
|
||||||
|
word-wrap: normal;
|
||||||
|
background: none;
|
||||||
|
display: inline;
|
||||||
|
padding: 0;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .line-num1 {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .line-num1,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 3.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: solid var(--background-modifier-border);
|
||||||
|
border-width: 0 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-muted);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: right;
|
||||||
|
width: 7.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: solid var(--background-modifier-border);
|
||||||
|
border-width: 0 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-muted);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
position: absolute;
|
||||||
|
text-align: right;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-color: var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||||
|
background-color: #fee8e9;
|
||||||
|
border-color: #e9aeae;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||||
|
background-color: #dfd;
|
||||||
|
border-color: #b4e2b4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||||
|
background-color: #521b1d83;
|
||||||
|
border-color: #691d1d73;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||||
|
background-color: rgba(30, 71, 30, 0.5);
|
||||||
|
border-color: #13501381;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-info {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-color: var(--background-modifier-border);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-file-diff
|
||||||
|
.d2h-del.d2h-change {
|
||||||
|
background-color: #fdf2d0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-file-diff
|
||||||
|
.d2h-del.d2h-change {
|
||||||
|
background-color: #55492480;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-file-diff
|
||||||
|
.d2h-ins.d2h-change {
|
||||||
|
background-color: #ded;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-file-diff
|
||||||
|
.d2h-ins.d2h-change {
|
||||||
|
background-color: rgba(37, 78, 37, 0.418);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a {
|
||||||
|
color: #3572b0;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"]
|
||||||
|
.d2h-file-list-wrapper
|
||||||
|
a:visited {
|
||||||
|
color: #3572b0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list {
|
||||||
|
display: block;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li {
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch {
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-icon {
|
||||||
|
fill: currentColor;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted {
|
||||||
|
color: #c33;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-added {
|
||||||
|
color: #399839;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-changed {
|
||||||
|
color: #d0b44c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-moved {
|
||||||
|
color: #3572b0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-tag {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
|
||||||
|
border: 2px solid #c33;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
|
||||||
|
border: 1px solid #399839;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
|
||||||
|
border: 1px solid #d0b44c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
|
||||||
|
border: 1px solid #3572b0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====================== Line Authoring Information ====================== */
|
||||||
|
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter {
|
||||||
|
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
|
||||||
|
border-width: 0px 2px 0.2px 2px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: var(--background-secondary);
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter > div,
|
||||||
|
.line-author-settings-preview {
|
||||||
|
/* delegate text color to settings */
|
||||||
|
color: var(--obs-git-gutter-text);
|
||||||
|
font-family: monospace;
|
||||||
|
height: 100%; /* ensure, that age-based background color occupies entire parent */
|
||||||
|
text-align: right;
|
||||||
|
padding: 0px 6px 0px 6px;
|
||||||
|
white-space: pre; /* Keep spaces and do not collapse them. */
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
/* hide git blame gutter not to superpose text */
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-unified-diff-view,
|
||||||
|
.git-split-diff-view .cm-deletedLine .cm-changedText {
|
||||||
|
background-color: #ee443330;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-unified-diff-view,
|
||||||
|
.git-split-diff-view .cm-insertedLine .cm-changedText {
|
||||||
|
background-color: #22bb2230;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Limits the scrollbar to the view body */
|
||||||
|
.git-view {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
|
||||||
|
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
|
||||||
|
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Override styling of Codemirror merge view "collapsed lines" indicator */
|
||||||
|
.git-split-diff-view .ͼ2 .cm-collapsedLines {
|
||||||
|
background: var(--interactive-normal);
|
||||||
|
border-radius: var(--radius-m);
|
||||||
|
color: var(--text-accent);
|
||||||
|
font-size: var(--font-small);
|
||||||
|
padding: var(--size-4-1) var(--size-4-1);
|
||||||
|
}
|
||||||
|
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
|
||||||
|
background: var(--interactive-hover);
|
||||||
|
color: var(--text-accent-hover);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"port": 27124,
|
||||||
|
"insecurePort": 27123,
|
||||||
|
"enableInsecureServer": false,
|
||||||
|
"apiKey": "7e92868686d7ef29e94a5919b2254d2df6aa68ad778c6eaa705a62c2519d5cfc",
|
||||||
|
"crypto": {
|
||||||
|
"cert": "-----BEGIN CERTIFICATE-----\r\nMIIDRTCCAi2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDExdPYnNp\r\nZGlhbiBMb2NhbCBSRVNUIEFQSTAeFw0yNTA2MDcwNDE2NTVaFw0yNjA2MDcwNDE2\r\nNTVaMCIxIDAeBgNVBAMTF09ic2lkaWFuIExvY2FsIFJFU1QgQVBJMIIBIjANBgkq\r\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFCtYX1cYgrZT1xA3hXXvQsaow/pGykd\r\nMrKbSXD5Zw0LTY5d2FEzuB5Tf2gru7pgIFYX8RiLOw4qJQW84CgSLokbRqY57vUs\r\nH7cI0bNHpNTHXWWpsk9UJvfkJqUEHBZlxDmcJbiDVmrEnQLkFJM2vFnk4okDhd9b\r\nWkBPivlp1cZVo091mISG1veKPbajfNHxQjonZx3o3jtjdEf7Xa7YxVRWu9vipQif\r\nMEV/fISp0AzVOxqaOWR7bhFiwGoLOzt5J4/seul3PrfHESo4GEHLweWFWc+jDobI\r\nu3SZAikXILSpe/JmH84bgKc2ffKDqO//u3bBcZtCtQIeuZ43NiXw3QIDAQABo4GF\r\nMIGCMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLEMDsGA1UdJQQ0MDIG\r\nCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcD\r\nCDARBglghkgBhvhCAQEEBAMCAPcwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0B\r\nAQsFAAOCAQEAQr8oX7csKX8+9twJ6gA5L12UJ/2E26hZSRfuS6cEPgth1oHsRFrC\r\nFAaLN37L6HZ7Qs7sBuDKyivf+jJpH2Ooo+p3QPXq0SHsSGWascEerkegye+XknoP\r\npSV6whz2wQHmv2v+3Qutn870YbZV964OA/y4WFp/+Ajt6I1DZKcOJOu0XN+Rz8zE\r\nrGFIlr5sbzrNXt+7XO8LkWcA0lurNX+rE64r57cyThLBkcKC2Dvwc9fWYmhaBVf/\r\nGXcU/1l5icjYEbOudeigqQIoX16X1BBXD8YB1eckylY3DJ+e2CcH+jbnT6sZy4Fw\r\no9fl+ASd4yveF1Ju9FBvh2ReO4SJ1vGiVg==\r\n-----END CERTIFICATE-----\r\n",
|
||||||
|
"privateKey": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCAQEAuFCtYX1cYgrZT1xA3hXXvQsaow/pGykdMrKbSXD5Zw0LTY5d\r\n2FEzuB5Tf2gru7pgIFYX8RiLOw4qJQW84CgSLokbRqY57vUsH7cI0bNHpNTHXWWp\r\nsk9UJvfkJqUEHBZlxDmcJbiDVmrEnQLkFJM2vFnk4okDhd9bWkBPivlp1cZVo091\r\nmISG1veKPbajfNHxQjonZx3o3jtjdEf7Xa7YxVRWu9vipQifMEV/fISp0AzVOxqa\r\nOWR7bhFiwGoLOzt5J4/seul3PrfHESo4GEHLweWFWc+jDobIu3SZAikXILSpe/Jm\r\nH84bgKc2ffKDqO//u3bBcZtCtQIeuZ43NiXw3QIDAQABAoIBAD0TlvCoTvW6LJqs\r\nsl4llNDzHgeM3Sz/6coD/4tNoYexfd5cX+Kvvdi0S+z7Qwq5TuNIRDTDclfGcNbF\r\n2PnarXO4QU6fBLGXkuCLkaOTqhkH3WyopJwOx48GNBdONVdtYJmukXy6cOMxDCgP\r\nbi8XPVsa2srqpj01b5svlmwyDA0nU05XMRDSg6x7YGq7TL314azEr9YkhQnGFujW\r\npRtynJ7sjCuo62pHo7rg1FUoCg+bebUm+C6BljF/qUkqhSQIp2WueKvSGgNRv68l\r\nd81LGYdYkiKW5AOC0BgylkPaOZcBS5p1D14KEqAJaDRI7V0hhzqPnF09z7qFow40\r\nWRJA7S0CgYEA/T4/xTPkdOkMlBu2B6HS4Zx8aN+N/EYYTL06pTdRq1oUcPiuyljW\r\ntWgH2xol1zqjL5cD06jdagyr5yI0gGpEfVqPhOCOfzocuMaB57mFZDNnvt7q7pCR\r\nYp9gZTOnr3ciFQd2hdaUQr0an6eMIPQoP40jaA01GGGTimhIBDXB548CgYEAulJW\r\nCPfKp3vYQU26N5JmApEepXJZ9OO7ZLeTdgYFYSx5/NdDCBAufpyDM1xvyHA3GKwz\r\n8m8TdGkSdmjk8a8Bh13jsl7sRQkrorcwE7M1vZGCA2kLyXVI39UbbEcdUdEHQxvj\r\npeAVZvYSeXcmvw18eubeXa9MR3xI6/ObBq7vitMCgYA/VELUSP7XsbQAkdF6pSA8\r\nZUrDWyyBqvHGtweka2oUBMnZ2oazeXXwFZzpUOenpDVM4GIHm1ILhDG08lvYxTpt\r\ncqkzXIimDl1CY/n2ffF6tlQ6ajqsACErXZnYlQtZGNzAD4a3P4sCCZJP3LFxSD2M\r\nbvosuijN+RDRavSfgOYFxwKBgQCtUsyP+Ro+5RkN3qV87qYQezj8BT0jbvmyvobh\r\ngsZcWAh+qSzFAnCN/UCbdcDSv3ixbffA7Y02fEvddMSNAxSz/SZElsLJkbdS3YBO\r\nwyYZ25MLYxvA42bQOakR97GRm5Za2kXR13txVTVoYuvbTEtg9QUkN18JHNelDu9G\r\nr1NMWwKBgH0h15j2sPX50RkGeE67F/67YIfvsjeuhXXKlE0ijq23K6N2Wt4qxhaC\r\nUT8a06ObV1q/2sVo6h9GnBWEFUhjc7L/D3CfeWP7gV27Ryg/XXKuVbsv0i34vkjB\r\ntPKng1bdmT1XiMbRNRuqOSchsgJJaWokrZH7f62mjYN87slIzzuD\r\n-----END RSA PRIVATE KEY-----\r\n",
|
||||||
|
"publicKey": "-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFCtYX1cYgrZT1xA3hXX\r\nvQsaow/pGykdMrKbSXD5Zw0LTY5d2FEzuB5Tf2gru7pgIFYX8RiLOw4qJQW84CgS\r\nLokbRqY57vUsH7cI0bNHpNTHXWWpsk9UJvfkJqUEHBZlxDmcJbiDVmrEnQLkFJM2\r\nvFnk4okDhd9bWkBPivlp1cZVo091mISG1veKPbajfNHxQjonZx3o3jtjdEf7Xa7Y\r\nxVRWu9vipQifMEV/fISp0AzVOxqaOWR7bhFiwGoLOzt5J4/seul3PrfHESo4GEHL\r\nweWFWc+jDobIu3SZAikXILSpe/JmH84bgKc2ffKDqO//u3bBcZtCtQIeuZ43NiXw\r\n3QIDAQAB\r\n-----END PUBLIC KEY-----\r\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-local-rest-api",
|
||||||
|
"name": "Local REST API",
|
||||||
|
"version": "3.2.0",
|
||||||
|
"minAppVersion": "0.12.0",
|
||||||
|
"description": "Get, change or otherwise interact with your notes in Obsidian via a REST API.",
|
||||||
|
"author": "Adam Coddington",
|
||||||
|
"authorUrl": "https://coddingtonbear.net/",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* Sets all the text color to red! */
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings div.api-key-display {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
div.obsidian-local-rest-api-settings div.api-key-display pre {
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: var(--background-modifier-cover);
|
||||||
|
font-family: monospace;
|
||||||
|
user-select: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings div.setting-item-control {
|
||||||
|
min-width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings textarea {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings div.certificate-expired {
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: 2px solid #ff0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings div.certificate-expiring-soon {
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: 2px solid #ffff00;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings div.certificate-regeneration-recommended {
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: 2px solid #ffff00;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings table.api-urls tr {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings table.api-urls th, div.obsidian-local-rest-api-settings table.api-urls td {
|
||||||
|
padding: 5px 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.name, div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.url {
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"devMode": false,
|
||||||
|
"ignoreCodeBlockRestrictions": false,
|
||||||
|
"preferredDateFormat": "YYYY-MM-DD",
|
||||||
|
"firstWeekday": {
|
||||||
|
"index": 1,
|
||||||
|
"name": "Monday",
|
||||||
|
"shortName": "Mo"
|
||||||
|
},
|
||||||
|
"syncInterval": 200,
|
||||||
|
"enableJs": false,
|
||||||
|
"viewFieldDisplayNullAsEmpty": true,
|
||||||
|
"enableSyntaxHighlighting": true,
|
||||||
|
"enableEditorRightClickMenu": true,
|
||||||
|
"inputFieldTemplates": [],
|
||||||
|
"buttonTemplates": [],
|
||||||
|
"excludedFolders": [
|
||||||
|
"templates"
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-meta-bind-plugin",
|
||||||
|
"name": "Meta Bind",
|
||||||
|
"version": "1.4.2",
|
||||||
|
"minAppVersion": "1.4.0",
|
||||||
|
"description": "Make your notes interactive with inline input fields, metadata displays, and buttons.",
|
||||||
|
"author": "Moritz Jung",
|
||||||
|
"authorUrl": "https://www.moritzjung.dev/",
|
||||||
|
"fundingUrl": "https://github.com/sponsors/mProjectsCode",
|
||||||
|
"helpUrl": "https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,940 @@
|
||||||
|
body {
|
||||||
|
--mb-border-width: var(--border-width);
|
||||||
|
--mb-border-radius: var(--input-radius);
|
||||||
|
--mb-slider-spacing: 5px;
|
||||||
|
--mb-select-element-border-width: 5px;
|
||||||
|
--mb-date-input-year-input-width: 80px;
|
||||||
|
|
||||||
|
--mb-background-modifier-active: hsla(var(--interactive-accent-hsl), 0.15);
|
||||||
|
--mb-background-modifier-active-hover: hsla(var(--interactive-accent-hsl), 0.3);
|
||||||
|
|
||||||
|
--mb-input-type-select-text: var(--text-muted);
|
||||||
|
--mb-input-type-select-text-hover: var(--text-normal);
|
||||||
|
--mb-input-type-select-text-active: var(--text-normal);
|
||||||
|
--mb-input-type-select-text-active-hover: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input Wrappers */
|
||||||
|
.mb-input {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-input-wrapper {
|
||||||
|
display: inline;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-input-inline {
|
||||||
|
display: inline !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-input-block {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* View Wrappers */
|
||||||
|
/* For higher specificity */
|
||||||
|
:is(code, span).mb-view:has(> div.mb-view-wrapper) {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
color: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mb-view-wrapper.mb-view-markdown > p {
|
||||||
|
margin: 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mb-view-wrapper {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-button {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-button-inline {
|
||||||
|
display: inline !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-button-block {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-button-group.mb-button-group {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
padding-inline: 0;
|
||||||
|
|
||||||
|
& > .mb-button {
|
||||||
|
&:first-child:not(:last-child) {
|
||||||
|
& > .mb-button-inner {
|
||||||
|
border-radius: var(--mb-border-radius) 0 0 var(--mb-border-radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child:not(:first-child) {
|
||||||
|
& > .mb-button-inner {
|
||||||
|
border-radius: 0 var(--mb-border-radius) var(--mb-border-radius) 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child:first-child {
|
||||||
|
& > .mb-button-inner {
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .mb-button-inner {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-button-inner {
|
||||||
|
vertical-align: bottom;
|
||||||
|
/* Add a gap between text and icons. */
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center center;
|
||||||
|
|
||||||
|
&.mod-plain {
|
||||||
|
background: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.mod-plain:hover {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Toggle Input */
|
||||||
|
.mb-input-wrapper .checkbox-container {
|
||||||
|
vertical-align: text-bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Slider Input */
|
||||||
|
|
||||||
|
.mb-input-wrapper:has(> .mb-slider-input) {
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-slider-input {
|
||||||
|
align-self: center;
|
||||||
|
margin-left: var(--mb-slider-spacing) !important;
|
||||||
|
margin-right: var(--mb-slider-spacing) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-slider-input-label {
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text Input */
|
||||||
|
.mb-content-limit-indicator {
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-content-limit-indicator-overflow {
|
||||||
|
color: var(--color-red);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Select Input */
|
||||||
|
.mb-select-input-element {
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
align-items: center;
|
||||||
|
padding: var(--size-4-1) var(--size-4-2);
|
||||||
|
margin: var(--size-4-1) 0;
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
white-space: pre-wrap;
|
||||||
|
font-size: 16px;
|
||||||
|
min-width: 200px;
|
||||||
|
color: var(--mb-input-type-select-text);
|
||||||
|
|
||||||
|
&.is-selected {
|
||||||
|
color: var(--mb-input-type-select-text-active);
|
||||||
|
background: var(--mb-background-modifier-active);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--mb-input-type-select-text-active-hover);
|
||||||
|
background: var(--mb-background-modifier-active-hover);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--mb-input-type-select-text-hover);
|
||||||
|
background: var(--background-modifier-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.mb-mod-multi) > input[type='checkbox'] {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > input[type='checkbox'] {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* List Input */
|
||||||
|
.mb-list-input {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-list-input > input {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-list-input > textarea {
|
||||||
|
flex-grow: 1;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-list-empty {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-list-items {
|
||||||
|
margin-bottom: var(--size-4-4);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-list-item {
|
||||||
|
display: flex;
|
||||||
|
padding: var(--size-4-1) var(--size-4-2);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
user-select: text;
|
||||||
|
|
||||||
|
& > span {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--background-modifier-hover);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline List */
|
||||||
|
.mb-inline-list {
|
||||||
|
display: inline;
|
||||||
|
font-size: 0;
|
||||||
|
|
||||||
|
& > .mb-inline-list-item {
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
padding-inline: var(--size-4-2);
|
||||||
|
padding-block: var(--size-4-1);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
vertical-align: bottom;
|
||||||
|
user-select: text;
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-right: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--background-modifier-border-hover);
|
||||||
|
background-color: var(--background-modifier-hover);
|
||||||
|
transition:
|
||||||
|
box-shadow 0.15s ease-in-out,
|
||||||
|
border 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .mb-inline-list-add {
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding-inline: var(--size-4-2);
|
||||||
|
padding-block: var(--size-4-1);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--background-modifier-border-hover);
|
||||||
|
background-color: var(--background-modifier-hover);
|
||||||
|
transition:
|
||||||
|
box-shadow 0.15s ease-in-out,
|
||||||
|
border 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:focus-visible {
|
||||||
|
box-shadow: 0 0 0 2px var(--background-modifier-border-focus);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Suggester Input */
|
||||||
|
.mb-suggest-input {
|
||||||
|
background: var(--background-modifier-form-field);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
padding: var(--size-4-1) var(--size-4-2);
|
||||||
|
position: relative;
|
||||||
|
color: var(--text-normal);
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
user-select: text;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--background-modifier-border-hover);
|
||||||
|
transition:
|
||||||
|
box-shadow 0.15s ease-in-out,
|
||||||
|
border 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-suggest-input > button {
|
||||||
|
padding: 0;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-suggest-text {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Progress Bar Input */
|
||||||
|
|
||||||
|
.mb-progress-bar-input {
|
||||||
|
height: var(--input-height);
|
||||||
|
width: 100%;
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
position: relative;
|
||||||
|
cursor: col-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-progress-bar-input:focus-visible {
|
||||||
|
box-shadow: 0 0 0 3px var(--background-modifier-border-focus);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-progress-bar-progress {
|
||||||
|
height: 100%;
|
||||||
|
background: var(--color-accent);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-progress-bar-value {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-progress-bar-label-left {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
left: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-progress-bar-label-right {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
right: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text Area Input */
|
||||||
|
|
||||||
|
.mb-input-textarea {
|
||||||
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* editor */
|
||||||
|
|
||||||
|
.mb-editor-input {
|
||||||
|
background: var(--background-secondary);
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
margin-left: 0;
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-editor-input > textarea {
|
||||||
|
background: var(--background-secondary);
|
||||||
|
border: none;
|
||||||
|
padding: var(--size-4-4) var(--size-4-8);
|
||||||
|
margin: 0;
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
resize: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-editor-input > div {
|
||||||
|
padding: var(--size-4-4) var(--size-4-8);
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Card */
|
||||||
|
.mb-card {
|
||||||
|
padding: var(--size-4-2);
|
||||||
|
margin: var(--size-4-2) 0;
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*='block-language-'] > .mb-card {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-card > :first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-card > :last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-card > code {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-card > pre {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-card > h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-card.mb-card-full-width {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Image */
|
||||||
|
.mb-image-modal-header {
|
||||||
|
margin-bottom: var(--size-4-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
|
||||||
|
gap: var(--size-4-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-suggester-modal {
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card-image {
|
||||||
|
width: 100%;
|
||||||
|
height: fit-content;
|
||||||
|
max-height: 500px;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card-text {
|
||||||
|
display: block;
|
||||||
|
margin: var(--size-4-2);
|
||||||
|
margin-bottom: var(--size-4-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card-footer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
& > span {
|
||||||
|
padding-left: var(--size-4-2);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
color: var(--text-muted);
|
||||||
|
min-width: 0;
|
||||||
|
text-overflow-ellipsis: true;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card-button {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
top: var(--size-4-2);
|
||||||
|
right: var(--size-4-2);
|
||||||
|
transition: opacity 0.2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-card:hover .mb-image-card-button {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-suggest-input {
|
||||||
|
background: var(--background-secondary);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
padding: var(--size-4-2);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-image-empty {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Time Input */
|
||||||
|
|
||||||
|
.mb-input-type-time {
|
||||||
|
input[type='time'] {
|
||||||
|
-webkit-app-region: no-drag;
|
||||||
|
background: var(--background-modifier-form-field);
|
||||||
|
border: var(--input-border-width) solid var(--background-modifier-border);
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-family: inherit;
|
||||||
|
padding: var(--size-4-1) var(--size-4-2);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
border-radius: var(--input-radius);
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--background-modifier-border-hover);
|
||||||
|
transition:
|
||||||
|
box-shadow 0.15s ease-in-out,
|
||||||
|
border 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:focus-visible {
|
||||||
|
box-shadow: 0 0 0 2px var(--background-modifier-border-focus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Date Picker Input */
|
||||||
|
|
||||||
|
.mb-date-picker-input {
|
||||||
|
background: var(--background-modifier-form-field);
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-family: inherit;
|
||||||
|
padding: var(--size-4-1) var(--size-4-2);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
border-radius: var(--input-radius);
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--background-modifier-border-hover);
|
||||||
|
transition:
|
||||||
|
box-shadow 0.15s ease-in-out,
|
||||||
|
border 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:focus-visible {
|
||||||
|
box-shadow: 0 0 0 2px var(--background-modifier-border-focus);
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .mb-date-picker-text {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker {
|
||||||
|
display: block;
|
||||||
|
padding: var(--size-4-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-header {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-header-text {
|
||||||
|
flex: 1;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: min-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-header-text-year {
|
||||||
|
width: 60px;
|
||||||
|
padding: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-header-text-month {
|
||||||
|
height: min-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-month-switch-button {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-util-button {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-date-picker-footer {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
background: var(--background-secondary);
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
margin-bottom: var(--size-4-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-content {
|
||||||
|
display: grid;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
grid-template-columns: repeat(7, 1fr);
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-cell {
|
||||||
|
min-width: 40px;
|
||||||
|
padding: var(--size-4-2);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-content-cell {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-cell-text {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-cell.mb-calendar-selected {
|
||||||
|
background: var(--interactive-accent);
|
||||||
|
color: var(--text-on-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-cell.mb-calendar-highlight:hover {
|
||||||
|
background: var(--interactive-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-calendar-cell.mb-calendar-selected.mb-calendar-highlight:hover {
|
||||||
|
background: var(--interactive-accent-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Embed */
|
||||||
|
|
||||||
|
.mb-embed > .mb-embed-message {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-smaller);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error */
|
||||||
|
.mb-error {
|
||||||
|
color: var(--text-error) !important;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
}
|
||||||
|
|
||||||
|
code.mb-error {
|
||||||
|
color: var(--text-error) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-warning {
|
||||||
|
color: var(--text-warning) !important;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
}
|
||||||
|
|
||||||
|
code.mb-warning {
|
||||||
|
color: var(--text-warning) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code */
|
||||||
|
.mb-code {
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error Collection */
|
||||||
|
.mb-error-collection-card {
|
||||||
|
padding: var(--size-4-2);
|
||||||
|
margin: var(--size-4-2) 0;
|
||||||
|
border-radius: var(--mb-border-radius);
|
||||||
|
border: var(--mb-border-width) solid var(--background-modifier-border);
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-family: var(--font-default);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-collection {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-inline: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.publish-renderer .mb-error-collection {
|
||||||
|
margin-inline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-collection > svg {
|
||||||
|
width: var(--font-text-size);
|
||||||
|
height: var(--font-text-size);
|
||||||
|
vertical-align: text-bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-collection > svg.lucide-alert-circle {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-collection > svg.lucide-alert-triangle {
|
||||||
|
color: var(--text-warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-collection > svg.lucide-info {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-pre {
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-pre > code {
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-collection-modal {
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-error-text {
|
||||||
|
color: var(--text-error) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-warning-text {
|
||||||
|
color: var(--text-warning) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Misc --- */
|
||||||
|
|
||||||
|
.mb-whitespace-pre {
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-excluded-folders-table-input-cell {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-excluded-folders-table-input-cell > input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-textarea {
|
||||||
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-icon-wrapper {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-icon-wrapper.mb-icon-wrapper-inline {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-icon-wrapper > svg {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-faq-view {
|
||||||
|
max-width: var(--file-line-width);
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.mb-no-link {
|
||||||
|
color: var(--code-normal);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.mb-html-table {
|
||||||
|
}
|
||||||
|
|
||||||
|
td.mb-html-table-button-cell {
|
||||||
|
--table-column-min-width: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.mb-html-table-button-cell {
|
||||||
|
--table-column-min-width: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-table-wrapper {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-flex-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-flex-row.mb-flex-row-stretch > :first-child {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-flex-row-reverse {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-flex-row-reverse.mb-flex-row-stretch > :last-child {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-full-width-text-input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-full-width-text-input > input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-full-width-text-input > textarea {
|
||||||
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.setting-item.mb-vertical {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.setting-item > div.setting-item-control.mb-vertical-control {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: var(--size-4-1);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-search-modal-element-description {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- HIGHLIGHTING CLASSES --- */
|
||||||
|
.mb-highlight-test {
|
||||||
|
color: #00bfbc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-highlight-ident,
|
||||||
|
.cm-mb-highlight-ident {
|
||||||
|
color: var(--code-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-highlight-control,
|
||||||
|
.cm-mb-highlight-control {
|
||||||
|
color: var(--code-keyword);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-highlight-string,
|
||||||
|
.cm-mb-highlight-string {
|
||||||
|
color: var(--code-string);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-highlight-keyword,
|
||||||
|
.cm-mb-highlight-keyword {
|
||||||
|
color: var(--code-property);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-highlight-error,
|
||||||
|
.cm-mb-highlight-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- UTIL CLASSES --- */
|
||||||
|
|
||||||
|
.meta-bind-full-width > * {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-bind-high > * {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-bind-small-width > * {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- PUBLISH STUFF --- */
|
||||||
|
|
||||||
|
.published-container {
|
||||||
|
.mb-input-type-toggle > div {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: sub;
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "obsidian-pandoc",
|
||||||
|
"name": "Pandoc Plugin",
|
||||||
|
"version": "0.4.1",
|
||||||
|
"minAppVersion": "0.12.5",
|
||||||
|
"description": "This is a Pandoc export plugin for Obsidian. It provides commands to export to formats like DOCX, ePub and PDF.",
|
||||||
|
"author": "Oliver Balfour",
|
||||||
|
"authorUrl": "https://github.com/OliverBalfour/obsidian-pandoc",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
.pandoc-plugin-error {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
"useCache": true,
|
||||||
|
"hideExcluded": false,
|
||||||
|
"recencyBoost": "0",
|
||||||
|
"downrankedFoldersFilters": [],
|
||||||
|
"ignoreDiacritics": true,
|
||||||
|
"ignoreArabicDiacritics": false,
|
||||||
|
"indexedFileTypes": [],
|
||||||
|
"displayTitle": "",
|
||||||
|
"PDFIndexing": false,
|
||||||
|
"officeIndexing": false,
|
||||||
|
"imagesIndexing": false,
|
||||||
|
"aiImageIndexing": false,
|
||||||
|
"unsupportedFilesIndexing": "default",
|
||||||
|
"splitCamelCase": false,
|
||||||
|
"openInNewPane": false,
|
||||||
|
"vimLikeNavigationShortcut": false,
|
||||||
|
"ribbonIcon": true,
|
||||||
|
"showExcerpt": true,
|
||||||
|
"maxEmbeds": 5,
|
||||||
|
"renderLineReturnInExcerpts": true,
|
||||||
|
"showCreateButton": false,
|
||||||
|
"highlight": true,
|
||||||
|
"showPreviousQueryResults": true,
|
||||||
|
"simpleSearch": false,
|
||||||
|
"tokenizeUrls": false,
|
||||||
|
"fuzziness": "1",
|
||||||
|
"weightBasename": 10,
|
||||||
|
"weightDirectory": 7,
|
||||||
|
"weightH1": 6,
|
||||||
|
"weightH2": 5,
|
||||||
|
"weightH3": 4,
|
||||||
|
"weightUnmarkedTags": 2,
|
||||||
|
"weightCustomProperties": [],
|
||||||
|
"httpApiEnabled": false,
|
||||||
|
"httpApiPort": "51361",
|
||||||
|
"httpApiNotice": true,
|
||||||
|
"welcomeMessage": "1.21.0",
|
||||||
|
"verboseLogging": false,
|
||||||
|
"DANGER_httpHost": null,
|
||||||
|
"DANGER_forceSaveCache": false
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"id": "omnisearch",
|
||||||
|
"name": "Omnisearch",
|
||||||
|
"version": "1.27.1",
|
||||||
|
"minAppVersion": "1.7.2",
|
||||||
|
"description": "A search engine that just works",
|
||||||
|
"author": "Simon Cambier",
|
||||||
|
"authorUrl": "https://github.com/scambier/obsidian-omnisearch",
|
||||||
|
"fundingUrl": {
|
||||||
|
"Github": "https://github.com/sponsors/scambier",
|
||||||
|
"Ko-fi": "https://ko-fi.com/scambier"
|
||||||
|
},
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
.omnisearch-modal {
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result {
|
||||||
|
white-space: normal;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
/* justify-content: space-between; */
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__title-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
column-gap: 5px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__title {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__title > span {
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__folder-path {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__extension {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__counter {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__body {
|
||||||
|
white-space: normal;
|
||||||
|
font-size: small;
|
||||||
|
word-wrap: normal;
|
||||||
|
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-inline-start: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__embed {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.omnisearch-result__image-container {
|
||||||
|
flex-basis: 20%;
|
||||||
|
text-align: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-highlight {
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-default-highlight {
|
||||||
|
text-decoration: underline;
|
||||||
|
text-decoration-color: var(--text-highlight-bg);
|
||||||
|
text-decoration-thickness: 3px;
|
||||||
|
text-underline-offset: -1px;
|
||||||
|
text-decoration-skip-ink: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-input-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__icon {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__icon svg {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__icon--emoji {
|
||||||
|
font-size: 16px;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.omnisearch-input-container {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-input-container__buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 1em 0 1em;
|
||||||
|
gap: 1em;
|
||||||
|
}
|
||||||
|
.omnisearch-input-container__buttons > button {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 600px) {
|
||||||
|
.omnisearch-input-container__buttons {
|
||||||
|
margin-inline-end: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-input-field {
|
||||||
|
position: relative;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
data.json
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"id": "remotely-save",
|
||||||
|
"name": "Remotely Save",
|
||||||
|
"version": "0.5.25",
|
||||||
|
"minAppVersion": "0.13.21",
|
||||||
|
"description": "Yet another unofficial plugin allowing users to synchronize notes between local device and the cloud service.",
|
||||||
|
"author": "fyears",
|
||||||
|
"authorUrl": "https://github.com/fyears",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": "https://remotelysave.com"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,244 @@
|
||||||
|
/* set the styles */
|
||||||
|
|
||||||
|
.password-second-confirm {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.encryptionmethod-second-confirm {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-auth-related {
|
||||||
|
border-top: 1px solid var(--background-modifier-border);
|
||||||
|
padding-top: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-percentage-custom-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-encryption-method-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s3-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.s3-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropbox-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.dropbox-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropbox-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropbox-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrive-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.onedrive-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrive-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrive-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrivefull-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrivefull-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.onedrivefull-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrivefull-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onedrivefull-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webdav-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.webdav-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webdav-customheaders-textarea {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webdis-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.webdis-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.googledrive-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.googledrive-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.googledrive-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.googledrive-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.googledrive-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.box-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pcloud-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.pcloud-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pcloud-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pcloud-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pcloud-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yandexdisk-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.yandexdisk-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yandexdisk-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yandexdisk-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yandexdisk-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.koofr-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.koofr-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.koofr-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.koofr-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.koofr-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.azureblobstorage-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.azureblobstorage-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.azureblobstorage-allow-to-use-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode-img {
|
||||||
|
width: 350px;
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ignorepaths-textarea {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.onlyallowpaths-textarea {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logtohttpserver-warning {
|
||||||
|
color: red;
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-need-wrapping .setting-item-control {
|
||||||
|
/* flex-wrap: wrap; */
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pro-disclaimer {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.pro-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pro-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pro-revoke-auth-button-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,290 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var obsidian = require('obsidian');
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
/* global Reflect, Promise */
|
||||||
|
|
||||||
|
var extendStatics = function(d, b) {
|
||||||
|
extendStatics = Object.setPrototypeOf ||
|
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||||
|
return extendStatics(d, b);
|
||||||
|
};
|
||||||
|
|
||||||
|
function __extends(d, b) {
|
||||||
|
extendStatics(d, b);
|
||||||
|
function __() { this.constructor = d; }
|
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
|
}
|
||||||
|
|
||||||
|
var C__Users_HAOUARI_Desktop_Notes_NotesTest__obsidian_plugins_obsidianTextExtract_node_modules_removeMarkdown = function(md, options) {
|
||||||
|
options = options || {};
|
||||||
|
options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;
|
||||||
|
options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;
|
||||||
|
options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;
|
||||||
|
options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;
|
||||||
|
|
||||||
|
var output = md || '';
|
||||||
|
|
||||||
|
// Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)
|
||||||
|
output = output.replace(/^(-\s*?|\*\s*?|_\s*?){3,}\s*$/gm, '');
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (options.stripListLeaders) {
|
||||||
|
if (options.listUnicodeChar)
|
||||||
|
output = output.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm, options.listUnicodeChar + ' $1');
|
||||||
|
else
|
||||||
|
output = output.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm, '$1');
|
||||||
|
}
|
||||||
|
if (options.gfm) {
|
||||||
|
output = output
|
||||||
|
// Header
|
||||||
|
.replace(/\n={2,}/g, '\n')
|
||||||
|
// Fenced codeblocks
|
||||||
|
.replace(/~{3}.*\n/g, '')
|
||||||
|
// Strikethrough
|
||||||
|
.replace(/~~/g, '')
|
||||||
|
// Fenced codeblocks
|
||||||
|
.replace(/`{3}.*\n/g, '');
|
||||||
|
}
|
||||||
|
output = output
|
||||||
|
// Remove HTML tags
|
||||||
|
.replace(/<[^>]*>/g, '')
|
||||||
|
// Remove setext-style headers
|
||||||
|
.replace(/^[=\-]{2,}\s*$/g, '')
|
||||||
|
// Remove footnotes?
|
||||||
|
.replace(/\[\^.+?\](\: .*?$)?/g, '')
|
||||||
|
.replace(/\s{0,2}\[.*?\]: .*?$/g, '')
|
||||||
|
// Remove images
|
||||||
|
.replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, options.useImgAltText ? '$1' : '')
|
||||||
|
// Remove inline links
|
||||||
|
.replace(/\[(.*?)\][\[\(].*?[\]\)]/g, '$1')
|
||||||
|
// Remove blockquotes
|
||||||
|
.replace(/^\s{0,3}>\s?/g, '')
|
||||||
|
// Remove reference-style links?
|
||||||
|
.replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g, '')
|
||||||
|
// Remove atx-style headers
|
||||||
|
.replace(/^(\n)?\s{0,}#{1,6}\s+| {0,}(\n)?\s{0,}#{0,} {0,}(\n)?\s{0,}$/gm, '$1$2$3')
|
||||||
|
// Remove emphasis (repeat the line to remove double emphasis)
|
||||||
|
.replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g, '$2')
|
||||||
|
.replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g, '$2')
|
||||||
|
// Remove code blocks
|
||||||
|
.replace(/(`{3,})(.*?)\1/gm, '$2')
|
||||||
|
// Remove inline code
|
||||||
|
.replace(/`(.+?)`/g, '$1')
|
||||||
|
// Replace two or more newlines with exactly two? Not entirely sure this belongs here...
|
||||||
|
.replace(/\n{2,}/g, '\n\n');
|
||||||
|
} catch(e) {
|
||||||
|
console.error(e);
|
||||||
|
return md;
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
};
|
||||||
|
|
||||||
|
function inlineLog(str) {
|
||||||
|
console.log(str);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
var SearchPP = /** @class */ (function (_super) {
|
||||||
|
__extends(SearchPP, _super);
|
||||||
|
function SearchPP() {
|
||||||
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||||||
|
_this.delay = 2000;
|
||||||
|
_this.textExtraction = "Activated";
|
||||||
|
_this.defaultSize = 30;
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
SearchPP.prototype.onload = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.addSettingTab(new SettingTab(this.app, this));
|
||||||
|
console.log('Loading insert search results plugin');
|
||||||
|
var config = [
|
||||||
|
{
|
||||||
|
id: 'editor:insertSearchResultsFormated',
|
||||||
|
name: 'Insert search results Formated',
|
||||||
|
formatTitle: function (ele) { return "# " + ele.file.name + " (" + ele.result.content.length + ")" + "\n" + "[[" + ele.file.name + "]]" + "\n"; },
|
||||||
|
formatResults: function (str, start, end) { return "## ..." + C__Users_HAOUARI_Desktop_Notes_NotesTest__obsidian_plugins_obsidianTextExtract_node_modules_removeMarkdown(str.substring(start, end).replace("\n", " ")) + "...\n"; },
|
||||||
|
formatContent: function (str, start, end) { return C__Users_HAOUARI_Desktop_Notes_NotesTest__obsidian_plugins_obsidianTextExtract_node_modules_removeMarkdown(str.substring(start, end).replace("\n", " ")); },
|
||||||
|
postResults: function () { _this.app.commands.commands["editor:fold-all"].checkCallback(); }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'editor:insertSearchResultsNotFormated',
|
||||||
|
name: 'Insert search results not formated',
|
||||||
|
formatTitle: function (ele) { return ele.file.name + " (" + ele.result.content.length + ")" + "\n" + "[[" + ele.file.name + "]]" + "\n"; },
|
||||||
|
formatResults: function (str, start, end) { return C__Users_HAOUARI_Desktop_Notes_NotesTest__obsidian_plugins_obsidianTextExtract_node_modules_removeMarkdown(str.substring(start, end).replace("\n", " ")) + "...\n"; },
|
||||||
|
formatContent: function (str, start, end) { return C__Users_HAOUARI_Desktop_Notes_NotesTest__obsidian_plugins_obsidianTextExtract_node_modules_removeMarkdown(str.substring(start, end).replace("\n", " ")); },
|
||||||
|
postResults: function () { }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'editor:insertSearchResultContent',
|
||||||
|
name: 'Insert search results content',
|
||||||
|
formatTitle: function (ele) { return ""; },
|
||||||
|
formatResults: function (str, start, end) { return ""; },
|
||||||
|
formatContent: function (str, start, end) { return C__Users_HAOUARI_Desktop_Notes_NotesTest__obsidian_plugins_obsidianTextExtract_node_modules_removeMarkdown(str.substring(start, end).replace("\n", " ")); },
|
||||||
|
postResults: function () { }
|
||||||
|
}
|
||||||
|
];
|
||||||
|
var reformatLinks = function (links, config, size) {
|
||||||
|
var currentView = _this.app.workspace.activeLeaf.view;
|
||||||
|
var query = _this.app.workspace.getLeavesOfType('search')[0].view.searchQuery.query.replace(/^"(.*)"$/, '$1');
|
||||||
|
links.sort(function (a, b) { return b.result.content.length - a.result.content.length; });
|
||||||
|
return links.filter(function (ele) { return ele.file.name !== currentView.file.name; }).map(function (ele) {
|
||||||
|
var titleSize = 20;
|
||||||
|
var extractedText = "";
|
||||||
|
if (_this.textExtraction == "Activated") {
|
||||||
|
extractedText = config.formatTitle(ele);
|
||||||
|
var minIndex_1 = 9999999;
|
||||||
|
var maxIndex_1 = 0;
|
||||||
|
ele.result.content.forEach(function (position) {
|
||||||
|
var minTitle = Math.max(position[0] - titleSize, 0);
|
||||||
|
var maxTitle = Math.min(position[1] + titleSize, ele.content.length - 1);
|
||||||
|
var min = Math.max(position[0] - size, 0);
|
||||||
|
var max = Math.min(position[1] + size, ele.content.length - 1);
|
||||||
|
// console.log({min,max,minIndex,maxIndex})
|
||||||
|
if (!((min >= minIndex_1 && min <= maxIndex_1) || (max >= minIndex_1 && max <= maxIndex_1))) {
|
||||||
|
minIndex_1 = Math.min(minIndex_1, position[0]);
|
||||||
|
maxIndex_1 = Math.max(maxIndex_1, position[1]);
|
||||||
|
extractedText += config.formatResults(ele.content, minTitle, maxTitle);
|
||||||
|
//console.log(ele.content.substring(min,max));
|
||||||
|
extractedText += config.formatContent(ele.content, min, max);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return extractedText;
|
||||||
|
}).join('\n');
|
||||||
|
};
|
||||||
|
function getLastLineNum(doc, line) {
|
||||||
|
if (line === void 0) { line = 0; }
|
||||||
|
var lineNum = line === 0
|
||||||
|
? doc.getCursor().line
|
||||||
|
: line;
|
||||||
|
if (doc.lineCount() === lineNum) {
|
||||||
|
return doc.getCursor().line + 1;
|
||||||
|
}
|
||||||
|
return doc.getLine(lineNum) === '---'
|
||||||
|
? lineNum
|
||||||
|
: getLastLineNum(doc, lineNum + 1);
|
||||||
|
}
|
||||||
|
var initExpander = function (config) {
|
||||||
|
// Search files
|
||||||
|
var cmDoc = null;
|
||||||
|
// @ts-ignore
|
||||||
|
var globalSearchFn = _this.app.internalPlugins.getPluginById('global-search').instance.openGlobalSearch.bind(_this);
|
||||||
|
var search = function (query) { return globalSearchFn(inlineLog(query)); };
|
||||||
|
var getFoundFilenames = function (config, callback, size) {
|
||||||
|
var searchLeaf = _this.app.workspace.getLeavesOfType('search')[0];
|
||||||
|
console.log("searchLeaf", searchLeaf);
|
||||||
|
searchLeaf.open(searchLeaf.view)
|
||||||
|
.then(function (view) { return setTimeout(function () {
|
||||||
|
// Using undocumented feature
|
||||||
|
// @ts-ignore
|
||||||
|
var result = reformatLinks(view.dom.resultDoms, config, size);
|
||||||
|
callback(result);
|
||||||
|
config.postResults();
|
||||||
|
}, _this.delay); });
|
||||||
|
};
|
||||||
|
var currentView = _this.app.workspace.activeLeaf.view;
|
||||||
|
if (currentView instanceof obsidian.MarkdownView) {
|
||||||
|
cmDoc = currentView.sourceMode.cmEditor;
|
||||||
|
}
|
||||||
|
var hasFormulaRegexp = /^\{\{.+\}\}.*/;
|
||||||
|
var curNum = cmDoc.getCursor().line;
|
||||||
|
var curText = cmDoc.getLine(curNum);
|
||||||
|
if (!hasFormulaRegexp.test(curText)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var isEmbed = cmDoc.getLine(curNum - 1) === '```expander'
|
||||||
|
&& cmDoc.getLine(curNum + 1) === '```';
|
||||||
|
var fstLineNumToReplace = isEmbed
|
||||||
|
? curNum - 1
|
||||||
|
: curNum;
|
||||||
|
var lstLineNumToReplace = isEmbed
|
||||||
|
? getLastLineNum(cmDoc)
|
||||||
|
: curNum;
|
||||||
|
var searchQuery = curText.replace('{{', '').replace('}}', '');
|
||||||
|
var size = _this.defaultSize;
|
||||||
|
if (searchQuery.indexOf("/") !== -1) {
|
||||||
|
size = +searchQuery.split("/")[1];
|
||||||
|
searchQuery = searchQuery.split("/")[0];
|
||||||
|
}
|
||||||
|
var embedFormula = '```expander\n' +
|
||||||
|
'{{' + searchQuery + '}}\n' +
|
||||||
|
'```\n';
|
||||||
|
var replaceLine = function (content) { return cmDoc.replaceRange(embedFormula + content + '\n\n', { line: fstLineNumToReplace, ch: 0 }, { line: lstLineNumToReplace, ch: cmDoc.getLine(lstLineNumToReplace).length }); };
|
||||||
|
search(inlineLog(searchQuery));
|
||||||
|
getFoundFilenames(config, replaceLine, size);
|
||||||
|
};
|
||||||
|
config.forEach(function (e) {
|
||||||
|
_this.addCommand({
|
||||||
|
id: e.id,
|
||||||
|
name: e.name,
|
||||||
|
callback: function () { return initExpander(e); },
|
||||||
|
hotkeys: []
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
SearchPP.prototype.onunload = function () {
|
||||||
|
console.log('unloading plugin');
|
||||||
|
};
|
||||||
|
return SearchPP;
|
||||||
|
}(obsidian.Plugin));
|
||||||
|
var SettingTab = /** @class */ (function (_super) {
|
||||||
|
__extends(SettingTab, _super);
|
||||||
|
function SettingTab(app, plugin) {
|
||||||
|
var _this = _super.call(this, app, plugin) || this;
|
||||||
|
_this.app = app;
|
||||||
|
_this.plugin = plugin;
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
SettingTab.prototype.display = function () {
|
||||||
|
var _this = this;
|
||||||
|
var containerEl = this.containerEl;
|
||||||
|
containerEl.empty();
|
||||||
|
containerEl.createEl('h2', { text: 'Settings for Search++' });
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Delay')
|
||||||
|
.setDesc('Search++ don\' wait until search completed. It waits for a delay and paste result after that.')
|
||||||
|
.addSlider(function (slider) {
|
||||||
|
slider.setLimits(1000, 10000, 1000);
|
||||||
|
slider.setValue(_this.plugin.delay);
|
||||||
|
slider.onChange(function (value) { return _this.plugin.delay = value; });
|
||||||
|
slider.setDynamicTooltip();
|
||||||
|
});
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Text Extraction')
|
||||||
|
.setDesc('Add extracted text to the found results.')
|
||||||
|
.addDropdown(function (cb) {
|
||||||
|
cb.addOption("Activated", "Activated");
|
||||||
|
cb.addOption("Disabled", "Disabled");
|
||||||
|
cb.setValue(_this.plugin.textExtraction);
|
||||||
|
cb.onChange(function (value) { return _this.plugin.textExtraction = value; });
|
||||||
|
});
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Default Size')
|
||||||
|
.setDesc('The number of the chars to extract before and after the found text')
|
||||||
|
.addText(function (text) {
|
||||||
|
text.setValue(_this.plugin.defaultSize.toString());
|
||||||
|
text.onChange(function (value) { return _this.plugin.defaultSize = +value; });
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return SettingTab;
|
||||||
|
}(obsidian.PluginSettingTab));
|
||||||
|
|
||||||
|
module.exports = SearchPP;
|
||||||
|
|
||||||
|
|
||||||
|
/* nosourcemap */
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "searchpp",
|
||||||
|
"name": "Search++",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"repo": "https://github.com/nhaouari/searchpp",
|
||||||
|
"description": "Allow inserting text context search results on the active note, the plugin is based on the plugin mrj-text-expand-witb-text of MrJackphil.",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"author": "Noureddine Haouari",
|
||||||
|
"authorUrl": "https://haouari.com"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,365 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var obsidian = require('obsidian');
|
||||||
|
|
||||||
|
const DEFAULT_SETTINGS = {
|
||||||
|
blacklist: 'the,and,to,of,a,in,for,on,is,it,that,with,as,this,by,your,you',
|
||||||
|
threshold: 3,
|
||||||
|
};
|
||||||
|
const ELEMENT_CLASSES = {
|
||||||
|
containerButton: 'word-frequency-button-container',
|
||||||
|
containerContent: 'word-frequency-sidebar-content',
|
||||||
|
containerCount: 'word-frequency-count-container',
|
||||||
|
containerFilter: 'word-frequency-filter-container',
|
||||||
|
containerRow: 'word-frequency-row',
|
||||||
|
containerThreshold: 'word-frequency-threshold-display',
|
||||||
|
containerWordList: 'word-frequency-word-list',
|
||||||
|
filter: 'word-frequency-filter',
|
||||||
|
settingBlacklist: 'word-frequency-setting-blacklist',
|
||||||
|
settingInfoItem: 'word-frequency-setting-item-info',
|
||||||
|
settingItem: 'word-frequency-setting-item',
|
||||||
|
};
|
||||||
|
const COMMAND_ID_SHOW_SIDEBAR = 'word-frequency-show-sidebar';
|
||||||
|
const EVENT_UPDATE = 'word-frequency-update';
|
||||||
|
const FREQUENCY_ICON = 'file-chart-column-increasing';
|
||||||
|
const PLUGIN_NAME = 'Word frequency';
|
||||||
|
const SETTINGS_DESCRIPTIONS = {
|
||||||
|
blacklist: 'Comma-separated list of words to exclude.',
|
||||||
|
threshold: 'Only show words that appear at least this many times.',
|
||||||
|
};
|
||||||
|
const SETTINGS_NAMES = {
|
||||||
|
blacklist: 'Blacklist',
|
||||||
|
threshold: 'Word frequency threshold',
|
||||||
|
};
|
||||||
|
const VIEW_TYPE = 'word-frequency-view';
|
||||||
|
|
||||||
|
class ViewManager {
|
||||||
|
plugin;
|
||||||
|
constructor(plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
getOrCreateLeaf(workspace, viewType) {
|
||||||
|
const leaves = workspace.getLeavesOfType(viewType);
|
||||||
|
if (leaves.length > 0) {
|
||||||
|
return leaves[0];
|
||||||
|
}
|
||||||
|
return workspace.getRightLeaf(false);
|
||||||
|
}
|
||||||
|
async setViewState(leaf, viewType) {
|
||||||
|
await leaf.setViewState({
|
||||||
|
type: viewType,
|
||||||
|
active: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
updateContent() {
|
||||||
|
const editor = this.plugin.app.workspace.getActiveViewOfType(obsidian.MarkdownView)?.editor;
|
||||||
|
this.plugin.frequencyCounter.triggerUpdateContent(editor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function segmentText(content) {
|
||||||
|
const normalized = content.toLowerCase().normalize('NFKC');
|
||||||
|
const stripped = normalized.replace(/[^\p{L}\p{N}\s]+/gu, '');
|
||||||
|
return stripped
|
||||||
|
.trim()
|
||||||
|
.split(/\s+/)
|
||||||
|
.filter((word) => word.length > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class WordFrequencyCounter {
|
||||||
|
debouncedEditorChange;
|
||||||
|
lastActiveEditor;
|
||||||
|
plugin;
|
||||||
|
constructor(plugin,
|
||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
debouncedEditorChange = obsidian.debounce((editor) => this.triggerUpdateContent(editor), 3000)
|
||||||
|
/* eslint-enable no-unused-vars */
|
||||||
|
) {
|
||||||
|
this.debouncedEditorChange = debouncedEditorChange;
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
calculateWordFrequencies(content) {
|
||||||
|
if (content.length === 0) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
const words = segmentText(content);
|
||||||
|
const wordCounts = new Map();
|
||||||
|
for (const word of words) {
|
||||||
|
wordCounts.set(word, (wordCounts.get(word) || 0) + 1);
|
||||||
|
}
|
||||||
|
return Array.from(wordCounts.entries()).sort(([, countA], [, countB]) => countB - countA);
|
||||||
|
}
|
||||||
|
handleActiveLeafChange(leaf, workspace) {
|
||||||
|
if (leaf === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(leaf.view instanceof obsidian.MarkdownView)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.plugin.registerEvent(workspace.on('editor-change', (editor) => this.debouncedEditorChange(editor)));
|
||||||
|
const activeView = workspace.getActiveViewOfType(obsidian.MarkdownView);
|
||||||
|
if (activeView) {
|
||||||
|
this.lastActiveEditor = activeView.editor;
|
||||||
|
}
|
||||||
|
if (workspace.getLeavesOfType(VIEW_TYPE).length > 0) {
|
||||||
|
this.triggerUpdateContent(this.lastActiveEditor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
triggerUpdateContent(editor) {
|
||||||
|
if (editor === undefined) {
|
||||||
|
if (this.lastActiveEditor === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor = this.lastActiveEditor;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const wordCounts = this.calculateWordFrequencies(editor.getValue());
|
||||||
|
window.document.dispatchEvent(new CustomEvent(EVENT_UPDATE, { detail: { wordCounts } }));
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error('error in triggerUpdateContent', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WordFrequencyDisplay {
|
||||||
|
getFilter;
|
||||||
|
debouncedFilterInput;
|
||||||
|
filter = '';
|
||||||
|
plugin;
|
||||||
|
view;
|
||||||
|
constructor(plugin, view,
|
||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
getFilter = () => this.filter, debouncedFilterInput = obsidian.debounce((event) => {
|
||||||
|
const target = event.target;
|
||||||
|
this.filter = target.value;
|
||||||
|
this.view.updateContent();
|
||||||
|
}, 500)
|
||||||
|
/* eslint-enable no-unused-vars */
|
||||||
|
) {
|
||||||
|
this.getFilter = getFilter;
|
||||||
|
this.debouncedFilterInput = debouncedFilterInput;
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.view = view;
|
||||||
|
}
|
||||||
|
addWordToSidebar(blacklist, word, count, contentContainer) {
|
||||||
|
if (blacklist.has(word) ||
|
||||||
|
count < this.plugin.settings.threshold ||
|
||||||
|
!word.toLowerCase().includes(this.getFilter().toLowerCase())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const row = contentContainer.createEl('div', {
|
||||||
|
cls: ELEMENT_CLASSES.containerRow,
|
||||||
|
});
|
||||||
|
const wordCountContainer = row.createEl('div', {
|
||||||
|
cls: ELEMENT_CLASSES.containerCount,
|
||||||
|
});
|
||||||
|
wordCountContainer.createEl('span', { text: word });
|
||||||
|
wordCountContainer.createEl('span', { text: count.toString() });
|
||||||
|
const buttonContainer = row.createEl('div', {
|
||||||
|
cls: ELEMENT_CLASSES.containerButton,
|
||||||
|
});
|
||||||
|
const button = buttonContainer.createEl('button');
|
||||||
|
obsidian.setIcon(button, 'trash-2');
|
||||||
|
this.plugin.registerDomEvent(button, 'click', () => {
|
||||||
|
this.saveWordToBlacklist(word);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
createFilter(contentEl) {
|
||||||
|
const filterContainer = contentEl.createEl('div', {
|
||||||
|
cls: ELEMENT_CLASSES.containerFilter,
|
||||||
|
});
|
||||||
|
const filterInput = filterContainer.createEl('input', {
|
||||||
|
cls: ELEMENT_CLASSES.filter,
|
||||||
|
attr: {
|
||||||
|
type: 'text',
|
||||||
|
placeholder: 'Type to filter results',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
this.plugin.registerDomEvent(filterInput, 'input', (event) => this.debouncedFilterInput(event));
|
||||||
|
}
|
||||||
|
createHeader(contentEl) {
|
||||||
|
const headerContainer = contentEl.createEl('div');
|
||||||
|
const headerElement = headerContainer.createEl('h4');
|
||||||
|
headerElement.setText(PLUGIN_NAME);
|
||||||
|
}
|
||||||
|
createThresholdDisplay(contentEl) {
|
||||||
|
const thresholdDisplay = contentEl.createEl('div', {
|
||||||
|
cls: ELEMENT_CLASSES.containerThreshold,
|
||||||
|
});
|
||||||
|
thresholdDisplay.setText(`Current frequency threshold is ${this.plugin.settings.threshold}.`);
|
||||||
|
thresholdDisplay.setAttr('title', 'Configure settings for this plugin to update the frequency threshold.');
|
||||||
|
}
|
||||||
|
saveWordToBlacklist(word) {
|
||||||
|
const settings = this.plugin.settings;
|
||||||
|
settings.blacklist += `,${word}`;
|
||||||
|
this.plugin.saveData(settings);
|
||||||
|
this.view.updateContent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WordFrequencyView extends obsidian.ItemView {
|
||||||
|
display;
|
||||||
|
eventListener = () => { };
|
||||||
|
plugin;
|
||||||
|
wordCountList = [];
|
||||||
|
wordListContainer;
|
||||||
|
constructor(leaf, plugin, display, divElement) {
|
||||||
|
super(leaf);
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.display = display ?? new WordFrequencyDisplay(plugin, this);
|
||||||
|
// TODO: find a better way to set a default value
|
||||||
|
this.wordListContainer = divElement ?? this.containerEl.createDiv();
|
||||||
|
}
|
||||||
|
getDisplayText() {
|
||||||
|
return PLUGIN_NAME;
|
||||||
|
}
|
||||||
|
getIcon() {
|
||||||
|
return FREQUENCY_ICON;
|
||||||
|
}
|
||||||
|
getPlugin() {
|
||||||
|
return this.plugin;
|
||||||
|
}
|
||||||
|
getViewType() {
|
||||||
|
return VIEW_TYPE;
|
||||||
|
}
|
||||||
|
async onOpen() {
|
||||||
|
this.eventListener = (event) => {
|
||||||
|
if (event.type === EVENT_UPDATE) {
|
||||||
|
this.wordCountList = event.detail.wordCounts;
|
||||||
|
this.updateContent();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.document.addEventListener(EVENT_UPDATE, this.eventListener);
|
||||||
|
this.contentEl.empty();
|
||||||
|
const contentContainer = this.contentEl.createDiv({
|
||||||
|
cls: ELEMENT_CLASSES.containerContent,
|
||||||
|
});
|
||||||
|
this.display.createHeader(contentContainer);
|
||||||
|
this.display.createFilter(contentContainer);
|
||||||
|
this.wordListContainer = contentContainer.createDiv({
|
||||||
|
cls: ELEMENT_CLASSES.containerWordList,
|
||||||
|
});
|
||||||
|
this.display.createThresholdDisplay(contentContainer);
|
||||||
|
this.updateContent();
|
||||||
|
}
|
||||||
|
async onClose() {
|
||||||
|
window.document.removeEventListener(EVENT_UPDATE, this.eventListener);
|
||||||
|
}
|
||||||
|
updateContent() {
|
||||||
|
this.wordListContainer.empty();
|
||||||
|
const blacklist = new Set(this.plugin.settings.blacklist.split(',').map((word) => word.trim()));
|
||||||
|
this.wordCountList.forEach(([word, count]) => {
|
||||||
|
this.display.addWordToSidebar(blacklist, word, count, this.wordListContainer);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WordFrequencySettingTab extends obsidian.PluginSettingTab {
|
||||||
|
plugin;
|
||||||
|
settingFactory;
|
||||||
|
constructor(plugin, settingFactory = (element) => new obsidian.Setting(element)) {
|
||||||
|
super(plugin.app, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.settingFactory = settingFactory;
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
const { containerEl } = this;
|
||||||
|
containerEl.empty();
|
||||||
|
const blacklist = this.settingFactory(containerEl)
|
||||||
|
.setName(SETTINGS_NAMES.blacklist)
|
||||||
|
.setDesc(SETTINGS_DESCRIPTIONS.blacklist)
|
||||||
|
.setClass(ELEMENT_CLASSES.settingItem)
|
||||||
|
.addTextArea((text) => {
|
||||||
|
text.setValue(this.plugin.settings.blacklist)
|
||||||
|
.onChange(async (value) => {
|
||||||
|
await this.saveBlacklistValue(value);
|
||||||
|
})
|
||||||
|
.inputEl.classList.add(ELEMENT_CLASSES.settingBlacklist);
|
||||||
|
});
|
||||||
|
blacklist.infoEl.addClass(ELEMENT_CLASSES.settingInfoItem);
|
||||||
|
this.settingFactory(containerEl)
|
||||||
|
.setName(SETTINGS_NAMES.threshold)
|
||||||
|
.setDesc(SETTINGS_DESCRIPTIONS.threshold)
|
||||||
|
.addText((text) => text
|
||||||
|
.setPlaceholder('3')
|
||||||
|
.setValue(this.plugin.settings.threshold.toString())
|
||||||
|
.onChange(async (value) => {
|
||||||
|
await this.updateThreshold(value);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
async saveBlacklistValue(value) {
|
||||||
|
this.plugin.settings.blacklist = value;
|
||||||
|
await this.plugin.saveSettings();
|
||||||
|
}
|
||||||
|
async updateThreshold(value) {
|
||||||
|
const num = parseInt(value, 10);
|
||||||
|
if (isNaN(num)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.plugin.settings.threshold = num;
|
||||||
|
await this.plugin.saveSettings();
|
||||||
|
this.plugin.app.workspace.getLeavesOfType(VIEW_TYPE).forEach((leaf) => {
|
||||||
|
if (leaf.view instanceof WordFrequencyView) {
|
||||||
|
leaf.view.updateContent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WordFrequencyPlugin extends obsidian.Plugin {
|
||||||
|
createView;
|
||||||
|
frequencyCounter;
|
||||||
|
settings = DEFAULT_SETTINGS;
|
||||||
|
settingTab;
|
||||||
|
viewManager;
|
||||||
|
constructor(app, manifest, viewManager, settingTab, frequencyCounter,
|
||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
createView = (leaf) => new WordFrequencyView(leaf, this)
|
||||||
|
/* eslint-enable no-unused-vars */
|
||||||
|
) {
|
||||||
|
super(app, manifest);
|
||||||
|
this.createView = createView;
|
||||||
|
this.settingTab = settingTab ?? new WordFrequencySettingTab(this);
|
||||||
|
this.viewManager = viewManager ?? new ViewManager(this);
|
||||||
|
this.frequencyCounter =
|
||||||
|
frequencyCounter ?? new WordFrequencyCounter(this);
|
||||||
|
}
|
||||||
|
async onload() {
|
||||||
|
const title = `Show ${PLUGIN_NAME.toLowerCase()} sidebar`;
|
||||||
|
await this.loadSettings();
|
||||||
|
this.registerView(VIEW_TYPE, this.createView);
|
||||||
|
this.addRibbonIcon(FREQUENCY_ICON, title, () => this.activateView());
|
||||||
|
this.addCommand({
|
||||||
|
id: COMMAND_ID_SHOW_SIDEBAR,
|
||||||
|
name: title,
|
||||||
|
callback: () => this.activateView(),
|
||||||
|
});
|
||||||
|
this.registerEvent(this.app.workspace.on('active-leaf-change', (leaf) => {
|
||||||
|
this.frequencyCounter.handleActiveLeafChange(leaf, this.app.workspace);
|
||||||
|
}));
|
||||||
|
this.addSettingTab(this.settingTab);
|
||||||
|
}
|
||||||
|
onunload() { }
|
||||||
|
async activateView() {
|
||||||
|
const { workspace } = this.app;
|
||||||
|
const leaf = this.viewManager.getOrCreateLeaf(workspace, VIEW_TYPE);
|
||||||
|
if (leaf === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await this.viewManager.setViewState(leaf, VIEW_TYPE);
|
||||||
|
await workspace.revealLeaf(leaf);
|
||||||
|
this.viewManager.updateContent();
|
||||||
|
}
|
||||||
|
async saveSettings() {
|
||||||
|
await this.saveData(this.settings);
|
||||||
|
}
|
||||||
|
async loadSettings() {
|
||||||
|
const settings = await this.loadData();
|
||||||
|
this.settings = Object.assign({}, DEFAULT_SETTINGS, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = WordFrequencyPlugin;
|
||||||
|
|
||||||
|
/* nosourcemap */
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"id": "word-frequency",
|
||||||
|
"name": "Word Frequency",
|
||||||
|
"version": "1.3.3",
|
||||||
|
"minAppVersion": "1.0.0",
|
||||||
|
"description": "Counts the most frequently used words in a note and displays them in the sidebar.",
|
||||||
|
"author": "Mike Rodarte",
|
||||||
|
"authorUrl": "https://github.com/mts7",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": {
|
||||||
|
"GitHub Sponsor": "https://github.com/sponsors/mts7",
|
||||||
|
"Buy Me a Coffee": "https://www.buymeacoffee.com/mts7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
.word-frequency-setting-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word-frequency-setting-item-info {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word-frequency-setting-blacklist {
|
||||||
|
min-height: 150px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word-frequency-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word-frequency-count-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word-frequency-count-container span {
|
||||||
|
flex-shrink: 1;
|
||||||
|
max-width: 80%;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.word-frequency-button-container {
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"name": "Simple",
|
||||||
|
"version": "1.0.7",
|
||||||
|
"minAppVersion": "1.0.7",
|
||||||
|
"author": "Diego Eis",
|
||||||
|
"authorUrl": "https://diegoeis.com/"
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "Tokyo Night",
|
||||||
|
"version": "1.1.5",
|
||||||
|
"minAppVersion": "0.0.1",
|
||||||
|
"author": "tcmmichaelb139"
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"name": "Wikipedia",
|
||||||
|
"version": "2.0.4",
|
||||||
|
"minAppVersion": "1.0.0",
|
||||||
|
"author": "Ha'ani Whitlock",
|
||||||
|
"authorUrl": "https://github.com/Bluemoondragon07"
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"types": {
|
||||||
|
"aliases": "aliases",
|
||||||
|
"cssclasses": "multitext",
|
||||||
|
"tags": "tags",
|
||||||
|
"activity": "number",
|
||||||
|
"country": "text",
|
||||||
|
"duration": "text",
|
||||||
|
"rm": "checkbox",
|
||||||
|
"items": "multitext",
|
||||||
|
"en": "text"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,303 @@
|
||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "b83a08a30604bbce",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "88af96269c5a87a8",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "ea337600d6d40ef9",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "es/2025/06/Prueba de nota.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false,
|
||||||
|
"backlinks": true,
|
||||||
|
"backlinkOpts": {
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Prueba de nota"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "ed7e0b2914551963",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "9a5598f2aaf579d6",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "63b944b95147256e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "eb3eaf6d4050ec5c",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "fi",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "efa5337609c790b6",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f6dff2ffb8e28402",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-tree-view",
|
||||||
|
"state": {},
|
||||||
|
"icon": "sheets-in-box",
|
||||||
|
"title": "File Tree"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 776.5
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "d75212a88a57fa15",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8539d979e7333e43",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "5b1e816bdec0bf77",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "es/2025/06/Prueba de nota.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Prueba de nota"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "333431ef3b28ff5a",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f8305c05bf6c5c33",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fbfe7834b59af137",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "62b3cbc295ffcd98",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7830ac5c60f184cc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "BC-matrix",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Plugin no longer active"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "84868046ee0e004b",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "BC-tree",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Plugin no longer active"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4df0c32583908cb8",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "60fde61f41df72e7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "word-frequency-view",
|
||||||
|
"state": {},
|
||||||
|
"icon": "file-chart-column-increasing",
|
||||||
|
"title": "Word frequency"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4c9a3b55dc2f7ca3",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "git-view",
|
||||||
|
"state": {},
|
||||||
|
"icon": "git-pull-request",
|
||||||
|
"title": "Source Control"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 9
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 395.5
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"markdown-importer:Open format converter": false,
|
||||||
|
"workspaces:Manage workspace layouts": false,
|
||||||
|
"remotely-save:Remotely Save": false,
|
||||||
|
"omnisearch:Omnisearch": false,
|
||||||
|
"obsidian-git:Open Git source control": false,
|
||||||
|
"file-tree-alternative:File Tree Alternative Plugin": false,
|
||||||
|
"obsidian-bible-reference:Bible Verse Lookup": false,
|
||||||
|
"word-frequency:Show word frequency sidebar": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "5b1e816bdec0bf77",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"es/2025/06/Prueba de nota.md",
|
||||||
|
"es/2025/06",
|
||||||
|
"es/2025",
|
||||||
|
"es/1996/02/spa-1996-02-25-2-vi_encuentro_juvenil_latinomericano_y_caribeno_los_jovenes_del_futuro_en_la_edad_del_amor_divino_el_hijo_de_la_diestra-SANCL.md",
|
||||||
|
"es/1996/02/spa-1996-02-06-2-la_revelacion_de_jesucristo_en_el_fin_del_tiempo-SANCO.md",
|
||||||
|
"es/1996/01/spa-1996-01-21-1-los_requisitos_para_la_adopcion_de_un_hijo_de_dios-CAYPR.md",
|
||||||
|
"es/1996/05/spa-1996-05-12--la_creacion_del_nuevo_hombre-CIUMX.md",
|
||||||
|
"es/1996/09/spa-1996-09-15--el_misterio_de_dios_revelado-CAYPR.md",
|
||||||
|
"es/1996/10/spa-1996-10-27-1-la_manifestacion_de_la_gloria_de_jehova_para_el_dia_postrero-LIMPE.md",
|
||||||
|
"es/1996/09/spa-1996-09-01-1-lo_que_vera_la_iglesia_del_senor_jesucristo_en_el_dia_postrero-CAYPR.md",
|
||||||
|
"es/1996/01",
|
||||||
|
"es/1996/02",
|
||||||
|
"es/1996/10",
|
||||||
|
"es/1996/09",
|
||||||
|
"es/1996/05",
|
||||||
|
"es/1996",
|
||||||
|
"es/1997/11/spa-1997-11-30-2-el_misterio_de_la_venida_del_hijo_del_hombre_con_sus_angeles_en_el_occidente-BOABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-26-2-el_misterio_de_las_cuatro_clases_de_tierra-JI-BR.md",
|
||||||
|
"es/1997/11/spa-1997-11-26-1-los_obreros_de_la_hora_undecima_decimotercera_promocion_de_obreros_para_el_ministerio_los_obreros_de_la_hora_undecima-JI-BR.md",
|
||||||
|
"es/1997/11/spa-1997-11-25-2-el_misterio_de_la_buena_tierra_que_es_bendecida-ARIBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-25-1-el_misterio_del_padre_de_la_creacion-PORBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-24-1-el_misterio_del_occidente-PORBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-23-2-el_misterio_de_gabriel_y_miguel_en_el_dia_postrero_1er_encuentro_juvenil_paulista_el_misterio_de_la_cosecha_del_dia_postrero-ITABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-23-1-el_misterio_de_moises_elias_y_jesus_1er_encuentro_juvenil_paulista_el_misterio_de_la_cosecha_del_dia_postrero-ITABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-22-4-el_misterio_de_la_obra_maestra_de_dios_1er_encuentro_juvenil_paulista_el_misterio_de_la_cosecha_del_dia_postrero-ITABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-22-3-el_misterio_de_los_cosechadores_del_dia_postrero_1er_encuentro_juvenil_paulista_el_misterio_de_la_cosecha_del_dia_postrero-ITABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-21-1-el_misterio_de_la_venida_del_senor_como_el_sol_de_justicia_1er_encuentro_juvenil_paulista_el_misterio_de_la_cosecha_del_dia_postrero-ITABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-20-1-el_misterio_de_su_venida_como_ladron_en_la_noche-SãBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-19-1-el_misterio_de_los_angeles_de_la_cosecha-SUMBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-18-1-el_misterio_de_la_plenitud_de_los_gentiles-FRABR.md",
|
||||||
|
"es/1997/11/spa-1997-11-17-1-el_misterio_de_la_transformacion_y_el_arrebatamiento_de_los_escogidos_de_dios-SANBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-16-1-el_misterio_de_la_venida_del_senor_en_las_nubes_primer_congreso_regional_juvenil_mineiro-BELBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-15-3-el_misterio_de_las_tres_biblias_primer_congreso_regional_juvenil_mineiro-BELBR.md",
|
||||||
|
"es/1997/11/spa-1997-11-14-4-el_misterio_del_sol_la_luna_y_las_estrellas_marcando_el_tiempo_primer_congreso_regional_juvenil_mineiro-BELBR.md",
|
||||||
|
"es/1997/11",
|
||||||
|
"es/1997/12",
|
||||||
|
"banner-printing.webp",
|
||||||
|
"Untitled 1.canvas",
|
||||||
|
"Untitled.canvas"
|
||||||
|
]
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue