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