This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"promptDelete": false
}
+3
View File
@@ -0,0 +1,3 @@
{
"cssTheme": "Obsidianite"
}
+22
View File
@@ -0,0 +1,22 @@
[
"editing-toolbar",
"obsidian-livesync",
"copilot",
"obsidian-icon-folder",
"obsidian-importer",
"obsidian-file-color",
"supercharged-links-obsidian",
"settings-search",
"recent-files-obsidian",
"obsidian-paste-image-rename",
"omnisearch",
"mcp-tools-istefox",
"calendar",
"colored-tags",
"file-explorer-note-count",
"code-styler",
"file-explorer-plus",
"cmdr",
"obsidian-tasks-plugin",
"notebook-navigator"
]
+33
View File
@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"webviewer": false,
"footnotes": false,
"bases": true
}
+22
View File
@@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": true,
"showAttachments": true,
"hideUnresolved": true,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.13168724279835387,
"close": true
}
+11
View File
@@ -0,0 +1,11 @@
{
"omnisearch:show-modal": [
{
"modifiers": [
"Mod"
],
"key": "O"
}
],
"switcher:open": []
}
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor" width="16px" height="16px"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"></path></svg>

After

Width:  |  Height:  |  Size: 451 B

+10
View File
@@ -0,0 +1,10 @@
{
"shouldConfirmBeforeCreate": true,
"weekStart": "locale",
"wordsPerDot": 250,
"showWeeklyNote": false,
"weeklyNoteFormat": "",
"weeklyNoteTemplate": "",
"weeklyNoteFolder": "",
"localeOverride": "system-default"
}
File diff suppressed because it is too large Load Diff
+10
View File
@@ -0,0 +1,10 @@
{
"id": "calendar",
"name": "Calendar",
"description": "Calendar view of your daily notes",
"version": "1.5.10",
"author": "Liam Cain",
"authorUrl": "https://github.com/liamcain/",
"isDesktopOnly": false,
"minAppVersion": "0.9.11"
}
+36
View File
@@ -0,0 +1,36 @@
{
"confirmDeletion": true,
"showAddCommand": true,
"debug": false,
"editorMenu": [],
"fileMenu": [],
"leftRibbon": [],
"rightRibbon": [],
"titleBar": [],
"statusBar": [],
"pageHeader": [
{
"id": "omnisearch:show-modal",
"icon": "lucide-search",
"name": "Omnisearch: Vault search",
"mode": "any"
}
],
"macros": [],
"explorer": [],
"hide": {
"statusbar": [],
"leftRibbon": []
},
"spacing": 8,
"advancedToolbar": {
"rowHeight": 48,
"rowCount": 1,
"spacing": 0,
"buttonWidth": 48,
"columnLayout": false,
"mappedIcons": [],
"tooltips": false,
"heightOffset": 0
}
}
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "cmdr",
"name": "Commander",
"version": "0.5.5",
"minAppVersion": "1.4.0",
"description": "Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.",
"author": "jsmorabito & phibr0",
"authorUrl": "https://github.com/phibr0",
"fundingUrl": "https://ko-fi.com/phibr0",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+457
View File
@@ -0,0 +1,457 @@
{
"themes": {
"Default": {
"settings": {
"codeblock": {
"lineNumbers": true,
"unwrapLines": true,
"wrapLinesActive": false,
"curvature": 4
},
"gutter": {
"highlight": true,
"activeLine": false
},
"header": {
"title": {
"textFont": "",
"textBold": false,
"textItalic": true
},
"languageTag": {
"display": "none",
"textFont": "",
"textBold": true,
"textItalic": false
},
"languageIcon": {
"display": "none",
"displayColour": true
},
"externalReference": {
"displayRepository": true,
"displayVersion": true,
"displayTimestamp": true
},
"fontSize": 14,
"foldPlaceholder": ""
},
"highlights": {
"activeCodeblockLine": false,
"activeEditorLine": false
},
"inline": {
"syntaxHighlight": true,
"style": true,
"fontWeight": 4,
"curvature": 6,
"paddingVertical": 5,
"paddingHorizontal": 5,
"marginHorizontal": 0,
"titleFontWeight": 8
},
"advanced": {
"gradientHighlights": false,
"gradientHighlightsColourStop": "70%",
"languageBorderColour": false,
"languageBorderWidth": 5,
"iconSize": 28
}
},
"colours": {
"light": {
"codeblock": {
"backgroundColour": "--code-background",
"textColour": "--code-normal"
},
"gutter": {
"backgroundColour": "--code-background",
"textColour": "--text-faint",
"activeTextColour": "--text-muted"
},
"header": {
"backgroundColour": "--code-background",
"title": {
"textColour": "--code-comment"
},
"languageTag": {
"backgroundColour": "--code-background",
"textColour": "--code-comment"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#FF00FF",
"displayTimestampColour": "#808080"
},
"lineColour": "--color-base-30"
},
"highlights": {
"activeCodeblockLineColour": "--color-base-30",
"activeEditorLineColour": "--color-base-20",
"defaultColour": "--text-highlight-bg",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "--code-background",
"textColour": "--code-normal",
"activeTextColour": "--code-normal",
"titleTextColour": "--code-comment"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
},
"dark": {
"codeblock": {
"backgroundColour": "--code-background",
"textColour": "--code-normal"
},
"gutter": {
"backgroundColour": "--code-background",
"textColour": "--text-faint",
"activeTextColour": "--text-muted"
},
"header": {
"backgroundColour": "--code-background",
"title": {
"textColour": "--code-comment"
},
"languageTag": {
"backgroundColour": "--code-background",
"textColour": "--code-comment"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#FF00FF",
"displayTimestampColour": "#808080"
},
"lineColour": "--color-base-30"
},
"highlights": {
"activeCodeblockLineColour": "--color-base-30",
"activeEditorLineColour": "--color-base-20",
"defaultColour": "--text-highlight-bg",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "--code-background",
"textColour": "--code-normal",
"activeTextColour": "--code-normal",
"titleTextColour": "--code-comment"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
}
}
},
"Solarized": {
"settings": {
"codeblock": {
"lineNumbers": true,
"unwrapLines": true,
"wrapLinesActive": false,
"curvature": 4
},
"gutter": {
"highlight": true,
"activeLine": false
},
"header": {
"title": {
"textFont": "",
"textBold": false,
"textItalic": true
},
"languageTag": {
"display": "none",
"textFont": "",
"textBold": true,
"textItalic": false
},
"languageIcon": {
"display": "none",
"displayColour": true
},
"externalReference": {
"displayRepository": true,
"displayVersion": true,
"displayTimestamp": true
},
"fontSize": 14,
"foldPlaceholder": ""
},
"highlights": {
"activeCodeblockLine": false,
"activeEditorLine": false
},
"inline": {
"syntaxHighlight": true,
"style": true,
"fontWeight": 4,
"curvature": 6,
"paddingVertical": 5,
"paddingHorizontal": 5,
"marginHorizontal": 0,
"titleFontWeight": 8
},
"advanced": {
"gradientHighlights": false,
"gradientHighlightsColourStop": "70%",
"languageBorderColour": false,
"languageBorderWidth": 5,
"iconSize": 28
}
},
"colours": {
"light": {
"codeblock": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#eee8d5",
"textColour": "#6c6c6c",
"activeTextColour": "#8c8c8c"
},
"header": {
"backgroundColour": "#D5CCB4",
"title": {
"textColour": "#866704"
},
"languageTag": {
"backgroundColour": "#B8B5AA",
"textColour": "#C25F30"
},
"externalReference": {
"displayRepositoryColour": "#941100",
"displayVersionColour": "#ff9300",
"displayTimestampColour": "#808080"
},
"lineColour": "#EDD489"
},
"highlights": {
"activeCodeblockLineColour": "#eee8d5",
"activeEditorLineColour": "#60460633",
"defaultColour": "#E9DFBA",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#C25F30"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
},
"dark": {
"codeblock": {
"backgroundColour": "#002b36",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#073642",
"textColour": "#6c6c6c",
"activeTextColour": "#4c4c4c"
},
"header": {
"backgroundColour": "#0a4554",
"title": {
"textColour": "#dadada"
},
"languageTag": {
"backgroundColour": "#008080",
"textColour": "#000000"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#9437ff",
"displayTimestampColour": "#808080"
},
"lineColour": "#46cced"
},
"highlights": {
"activeCodeblockLineColour": "#073642",
"activeEditorLineColour": "#468eeb33",
"defaultColour": "#054b5c",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#002b36",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#000000"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
}
}
}
},
"selectedTheme": "Solarized",
"currentTheme": {
"settings": {
"codeblock": {
"lineNumbers": true,
"unwrapLines": true,
"wrapLinesActive": false,
"curvature": 4
},
"gutter": {
"highlight": true,
"activeLine": false
},
"header": {
"title": {
"textFont": "",
"textBold": false,
"textItalic": true
},
"languageTag": {
"display": "none",
"textFont": "",
"textBold": true,
"textItalic": false
},
"languageIcon": {
"display": "none",
"displayColour": true
},
"externalReference": {
"displayRepository": true,
"displayVersion": true,
"displayTimestamp": true
},
"fontSize": 14,
"foldPlaceholder": ""
},
"highlights": {
"activeCodeblockLine": false,
"activeEditorLine": false
},
"inline": {
"syntaxHighlight": true,
"style": true,
"fontWeight": 4,
"curvature": 6,
"paddingVertical": 5,
"paddingHorizontal": 5,
"marginHorizontal": 0,
"titleFontWeight": 8
},
"advanced": {
"gradientHighlights": false,
"gradientHighlightsColourStop": "70%",
"languageBorderColour": false,
"languageBorderWidth": 5,
"iconSize": 28
}
},
"colours": {
"light": {
"codeblock": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#eee8d5",
"textColour": "#6c6c6c",
"activeTextColour": "#8c8c8c"
},
"header": {
"backgroundColour": "#D5CCB4",
"title": {
"textColour": "#866704"
},
"languageTag": {
"backgroundColour": "#B8B5AA",
"textColour": "#C25F30"
},
"externalReference": {
"displayRepositoryColour": "#941100",
"displayVersionColour": "#ff9300",
"displayTimestampColour": "#808080"
},
"lineColour": "#EDD489"
},
"highlights": {
"activeCodeblockLineColour": "#eee8d5",
"activeEditorLineColour": "#60460633",
"defaultColour": "#E9DFBA",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#C25F30"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
},
"dark": {
"codeblock": {
"backgroundColour": "#002b36",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#073642",
"textColour": "#6c6c6c",
"activeTextColour": "#4c4c4c"
},
"header": {
"backgroundColour": "#0a4554",
"title": {
"textColour": "#dadada"
},
"languageTag": {
"backgroundColour": "#008080",
"textColour": "#000000"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#9437ff",
"displayTimestampColour": "#808080"
},
"lineColour": "#46cced"
},
"highlights": {
"activeCodeblockLineColour": "#073642",
"activeEditorLineColour": "#468eeb33",
"defaultColour": "#054b5c",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#002b36",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#000000"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
}
}
},
"newTheme": "",
"newHighlight": "",
"exampleCodeblockParameters": "python title:foo",
"exampleCodeblockContent": "print(\"This line is very long and should be used as an example for how the plugin deals with wrapping and unwrapping very long lines given the choice of codeblock parameters and settings.\")\nprint(\"This line is highlighted.\")",
"exampleInlineCode": "{python icon title:foo} print(\"This is inline code\")",
"decoratePrint": true,
"excludedLanguages": "ad-*, reference",
"externalReferenceUpdateOnLoad": false,
"processedCodeblocksWhitelist": "run-*, include",
"redirectLanguages": {},
"version": "1.1.7"
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"id": "code-styler",
"name": "Code Styler",
"version": "1.1.7",
"minAppVersion": "0.15.0",
"description": "Style and customize codeblocks and inline code in both editing mode and reading mode.",
"author": "Mayuran Visakan",
"authorUrl": "https://github.com/mayurankv",
"fundingUrl": "https://www.buymeacoffee.com/mayurankv2",
"isDesktopOnly": false
}
@@ -0,0 +1 @@
{}
File diff suppressed because it is too large Load Diff
+59
View File
@@ -0,0 +1,59 @@
{
"palette": {
"seed": 0,
"selected": "adaptive-soft",
"custom": "e12729-f37324-f8cc1b-72b043-007f4e"
},
"mixColors": true,
"transition": true,
"accessibility": {
"highTextContrast": false
},
"knownTags": {
"ai": 20,
"ansible": 10,
"authentik": 3,
"backup": 11,
"bookstack": 33,
"cheetsheet": 17,
"chezmoi": 37,
"ci": 38,
"ci-cd": 39,
"clippings": 43,
"configs": 40,
"containers": 21,
"dashboard": 7,
"desktop": 30,
"docker": 4,
"documentation": 34,
"documents": 5,
"email": 8,
"git": 36,
"hermes": 29,
"ip": 32,
"lxc": 22,
"management": 31,
"manager": 9,
"media": 16,
"monitoring": 12,
"mount": 23,
"networking": 24,
"notes": 35,
"patching": 15,
"persona": 25,
"powershell": 18,
"proxmox": 26,
"proxy": 13,
"resizing": 27,
"scirpts": 42,
"security": 6,
"server": 41,
"storage": 28,
"windows": 19,
"wireguard": 14,
"xrandr": 2,
"ci/cd": 1
},
"tagColors": {},
"_version": 4
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
{
"id": "colored-tags",
"name": "Colored Tags",
"version": "6.1.3",
"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
}
+196
View File
@@ -0,0 +1,196 @@
/* src/styles.css */
.colored-tags-settings .tagsExample {
display: flex;
gap: 0.5em;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
margin: 1em 0 2em;
}
.colored-tags-settings .palette {
display: flex;
align-items: stretch;
border-radius: var(--radius-m);
overflow: hidden;
}
.colored-tags-settings .visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.colored-tags-settings .community-palettes {
display: block;
}
.colored-tags-settings .community-palettes > *:first-child {
margin-inline-end: 0;
}
.colored-tags-settings .community-palettes__scroll {
margin-top: var(--size-4-3);
max-height: 400px;
overflow-y: auto;
padding: var(--size-4-3);
}
.colored-tags-settings .community-palettes__grid {
display: grid;
gap: var(--size-4-4);
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}
.colored-tags-settings .community-palettes__status {
color: var(--text-faint);
padding: var(--size-4-3);
border-radius: var(--radius-m);
background-color: var(--background-primary);
border: var(--border-width) solid var(--background-modifier-border);
}
.colored-tags-settings .community-palette-card {
display: flex;
flex-direction: column;
gap: var(--size-4-2);
padding: var(--size-4-3);
border-radius: var(--radius-m);
position: relative;
background-color: var(--dropdown-background);
box-shadow: var(--input-shadow);
cursor: pointer;
transition: all 120ms ease-in-out;
}
.colored-tags-settings .community-palette-card.is-selected {
box-shadow: 0 0 0 2px var(--interactive-accent), var(--input-shadow);
cursor: auto;
}
.colored-tags-settings .community-palette-card.is-selected::after {
content: "\2713";
position: absolute;
top: var(--size-4-2);
right: var(--size-4-2);
width: var(--size-4-4);
height: var(--size-4-4);
border-radius: var(--radius-round, 999px);
background-color: var(--interactive-accent);
color: var(--text-on-accent, var(--background-primary));
display: flex;
align-items: center;
justify-content: center;
font-weight: var(--font-semibold, 600);
}
.colored-tags-settings .community-palette-card:hover {
background-color: var(--dropdown-background-hover);
box-shadow: var(--input-shadow-hover);
}
.colored-tags-settings .community-palette-card.is-selected:hover {
box-shadow: 0 0 0 2px var(--interactive-accent), var(--input-shadow);
}
.colored-tags-settings .community-palette-card:focus-visible {
outline: var(--border-width) solid var(--interactive-accent);
outline-offset: var(--outline-offset);
box-shadow: 0 0 0 3px var(--background-modifier-border-focus);
}
.colored-tags-settings .community-palette-card__preview {
display: flex;
overflow: hidden;
border-radius: var(--radius-m);
height: var(--input-height);
}
.colored-tags-settings .community-palette-card__meta {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--size-4-2);
min-height: var(--line-height-tight);
}
.colored-tags-settings .community-palette-card__author {
font-family: var(--font-monospace);
color: var(--text-muted);
}
.colored-tags-settings .community-palette-card.is-selected .community-palette-card__author {
font-weight: var(--font-semibold, 600);
}
.colored-tags-settings .community-palette-card__upvotes {
color: var(--text-muted);
font-size: var(--font-ui-smaller);
font-weight: var(--font-medium);
}
.colored-tags-settings .tag-color-setting-item {
flex-direction: column;
align-items: stretch;
gap: var(--size-4-2);
}
.colored-tags-settings .tag-color-setting-item .setting-item-control {
width: 100%;
}
.colored-tags-settings .tag-color-setting {
display: flex;
flex-direction: column;
gap: var(--size-4-2);
width: 100%;
}
.colored-tags-settings .tag-color-setting__row {
display: grid;
grid-template-columns: auto 1fr;
gap: var(--size-4-3);
align-items: start;
}
.colored-tags-settings .tag-color-setting__input input[type=text] {
width: 220px;
font-weight: var(--font-normal, 400);
}
.theme-light .colored-tags-settings .tag-color-setting__input input[type=text] {
color-scheme: light;
background-color: var(--background-primary);
color: var(--text-normal);
}
.colored-tags-settings .tag-color-setting__palette {
display: flex;
flex-wrap: wrap;
gap: var(--size-2-2);
}
.colored-tags-settings .tag-color-setting__swatch {
width: 32px;
height: 32px;
border-radius: var(--radius-s);
cursor: pointer;
}
.colored-tags-settings .tag-color-setting__swatch:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.colored-tags-settings .tag-color-setting__swatch.is-selected {
box-shadow: 0 0 0 3px var(--interactive-accent);
}
.colored-tags-settings .tag-color-setting__chips {
display: flex;
flex-wrap: wrap;
gap: var(--size-2-2);
margin-top: var(--size-2-3);
}
.colored-tags-settings .tag-color-setting__chip {
position: relative;
display: inline-flex;
align-items: center;
gap: var(--size-2-1);
text-decoration: none;
}
.colored-tags-settings .tag-color-setting__chip-remove {
background: none;
border: none;
color: var(--text-faint);
width: 18px;
height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
box-shadow: none;
font-size: var(--font-ui-smaller);
margin-left: -6px;
}
.colored-tags-settings .tag-color-setting__empty {
color: var(--text-faint);
font-style: italic;
}
+338
View File
@@ -0,0 +1,338 @@
{
"userId": "2ded4caa-c74d-4fac-98fa-7d569a80824a",
"isPlusUser": false,
"plusLicenseKey": "",
"openAIApiKey": "",
"openAIOrgId": "",
"huggingfaceApiKey": "",
"cohereApiKey": "",
"anthropicApiKey": "",
"azureOpenAIApiKey": "",
"azureOpenAIApiInstanceName": "",
"azureOpenAIApiDeploymentName": "",
"azureOpenAIApiVersion": "",
"azureOpenAIApiEmbeddingDeploymentName": "",
"googleApiKey": "",
"openRouterAiApiKey": "",
"xaiApiKey": "",
"mistralApiKey": "",
"deepseekApiKey": "",
"defaultChainType": "llm_chain",
"defaultModelKey": "dolphin3.0-llama3.2-3b|lm-studio",
"embeddingModelKey": "text-embedding-3-small|openai",
"temperature": 0.1,
"maxTokens": 6000,
"contextTurns": 15,
"userSystemPrompt": "",
"openAIProxyBaseUrl": "",
"openAIEmbeddingProxyBaseUrl": "",
"stream": true,
"defaultSaveFolder": "copilot-conversations",
"defaultConversationTag": "copilot-conversation",
"autosaveChat": false,
"includeActiveNoteAsContext": true,
"defaultOpenArea": "view",
"customPromptsFolder": "copilot-custom-prompts",
"indexVaultToVectorStore": "ON MODE SWITCH",
"qaExclusions": "copilot-conversations,copilot-custom-prompts",
"qaInclusions": "",
"chatNoteContextPath": "",
"chatNoteContextTags": [],
"enableIndexSync": true,
"debug": false,
"enableEncryption": false,
"maxSourceChunks": 3,
"groqApiKey": "",
"activeModels": [
{
"name": "copilot-plus-flash",
"provider": "copilot-plus",
"enabled": false,
"isBuiltIn": true,
"core": true,
"plusExclusive": true,
"projectEnabled": false,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-flash-lite-preview-06-17",
"provider": "openrouterai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-flash",
"provider": "openrouterai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-pro",
"provider": "openrouterai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-5",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-5-mini",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-5-nano",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-mini",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-nano",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "o4-mini",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"reasoning"
]
},
{
"name": "claude-3-5-sonnet-latest",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "claude-sonnet-4-20250514",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true,
"capabilities": [
"reasoning",
"vision"
]
},
{
"name": "claude-3-7-sonnet-latest",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true,
"capabilities": [
"reasoning",
"vision"
]
},
{
"name": "claude-3-5-haiku-latest",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true
},
{
"name": "grok-3-beta",
"provider": "xai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "grok-3-mini-beta",
"provider": "xai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "gemini-2.5-flash",
"provider": "google",
"enabled": false,
"isBuiltIn": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gemini-2.5-pro",
"provider": "google",
"enabled": false,
"isBuiltIn": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "command-r",
"provider": "cohereai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "command-r-plus",
"provider": "cohereai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "azure-openai",
"provider": "azure openai",
"enabled": false,
"isBuiltIn": true
}
],
"activeEmbeddingModels": [
{
"name": "copilot-plus-small",
"provider": "copilot-plus",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true
},
{
"name": "copilot-plus-large",
"provider": "copilot-plus-jina",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"believerExclusive": true,
"dimensions": 1024
},
{
"name": "copilot-plus-multilingual",
"provider": "copilot-plus-jina",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"dimensions": 512
},
{
"name": "text-embedding-3-small",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true
},
{
"name": "text-embedding-3-large",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
},
{
"name": "embed-multilingual-light-v3.0",
"provider": "cohereai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
},
{
"name": "text-embedding-004",
"provider": "google",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
},
{
"name": "azure-openai",
"provider": "azure openai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
}
],
"embeddingRequestsPerMin": 90,
"embeddingBatchSize": 16,
"disableIndexOnMobile": true,
"showSuggestedPrompts": true,
"showRelevantNotes": true,
"numPartitions": 1,
"promptUsageTimestamps": {},
"promptSortStrategy": "timestamp",
"defaultConversationNoteName": "{$topic}@{$date}_{$time}",
"inlineEditCommands": [],
"projectList": [],
"enableAutocomplete": false,
"autocompleteAcceptKey": "Tab",
"allowAdditionalContext": true,
"enableWordCompletion": false,
"lastDismissedVersion": "2.9.5",
"passMarkdownImages": true,
"enableCustomPromptTemplating": true,
"suggestedDefaultCommands": true
}
File diff suppressed because one or more lines are too long
+13
View File
@@ -0,0 +1,13 @@
{
"id": "copilot",
"name": "Copilot",
"version": "2.9.5",
"minAppVersion": "0.15.0",
"description": "Your AI Copilot: Chat with Your Second Brain, Learn Faster, Work Smarter.",
"author": "Logan Yang",
"authorUrl": "https://twitter.com/logancyang",
"fundingUrl": {
"Buy Me a Coffee": "https://www.buymeacoffee.com/logancyang",
"GitHub Sponsor": "https://github.com/sponsors/logancyang"
}
}
File diff suppressed because one or more lines are too long
@@ -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": "#2DC26B",
"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,973 @@
'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],
});
let rootTitle = this.rootFolderEl.createEl('div', {
cls: ['oz-explorer-root-nav-folder-title'],
attr: { 'data-path': '/' },
});
let titleContent = rootTitle.createEl('div', {
cls: ['tree-item-inner', 'nav-folder-title-content'],
});
titleContent.textContent = this.app.vault.getName();
}
}
};
}
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.4",
"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,61 @@
{
"hideStrictPathFilters": true,
"pinFilters": {
"active": true,
"tags": [
{
"name": "",
"active": true,
"pattern": "",
"patternType": "STRICT"
}
],
"paths": [
{
"name": "",
"active": true,
"type": "FILES_AND_DIRECTORIES",
"pattern": "",
"patternType": "WILDCARD"
}
],
"frontMatter": [
{
"name": "",
"active": true,
"path": "",
"pattern": "",
"patternType": "STRICT"
}
]
},
"hideFilters": {
"active": true,
"tags": [
{
"name": "",
"active": true,
"pattern": "",
"patternType": "STRICT"
}
],
"paths": [
{
"name": "",
"active": true,
"type": "FILES_AND_DIRECTORIES",
"pattern": "",
"patternType": "WILDCARD"
}
],
"frontMatter": [
{
"name": "",
"active": true,
"path": "",
"pattern": "",
"patternType": "STRICT"
}
]
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
{
"id": "file-explorer-plus",
"name": "File Explorer++",
"version": "1.3.1",
"minAppVersion": "1.6.3",
"description": "Hide and pin files and folders in the file explorer using custom filters, such as wildcards and regex, based on their names, paths, and tags. Additionally, achieve the same with a single click in the file menu.",
"author": "kelszo",
"authorUrl": "https://github.com/kelszo",
"isDesktopOnly": false
}
@@ -0,0 +1,31 @@
.file-explorer-plus.pin-icon {
color: hsl(var(--accent-h), var(--accent-s), var(--accent-l));
margin-right: 0.2em;
width: 16px;
height: 16px;
margin-top: -4px;
align-self: center;
scale: 0.75;
rotate: 45deg;
opacity: 0.7;
}
.file-explorer-plus.filters-activated-modal {
display: grid;
place-items: center;
}
.file-explorer-plus table {
border-collapse: collapse;
}
.file-explorer-plus th {
text-align: center;
padding-left: 5px;
padding-right: 5px;
border-bottom: 2px solid var(--text-normal);
}
.file-explorer-plus td {
padding: 3px;
}
.file-explorer-plus h2.settings-header {
font-size: calc(var(--font-ui-medium) * 1.3);
font-weight: var(--font-bold);
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
{
"id": "local-rest-api-second-brain-mcp-extension",
"name": "Local REST API Second Brain MCP Extension",
"version": "1.0.9",
"minAppVersion": "1.4.0",
"description": "Extension for Local REST API plugin to add second brain MCP server.",
"author": "Mehran Ziadloo",
"isDesktopOnly": true
}
@@ -0,0 +1,8 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/
@@ -0,0 +1,174 @@
{
"mcpTransport": {
"bearerToken": "Jw2Zr-cuvoS8yGaj-zGMpPzjAgK3tN3AfOFr6Tzbq-c"
},
"semanticSearch": {
"provider": "auto",
"indexingMode": "live",
"unloadModelWhenIdle": false
},
"commandPermissions": {
"enabled": true,
"allowlist": [
"editor:toggle-bold",
"editor:toggle-strikethrough",
"editor:toggle-highlight",
"editor:toggle-code",
"editor:toggle-inline-math",
"editor:toggle-blockquote",
"editor:toggle-bullet-list",
"editor:toggle-numbered-list",
"editor:toggle-checklist-status",
"editor:toggle-comments",
"editor:insert-link",
"editor:insert-wikilink",
"editor:insert-embed",
"editor:insert-horizontal-rule",
"editor:insert-callout",
"editor:insert-tag",
"app:go-back",
"app:go-forward",
"editor:focus-top",
"editor:focus-bottom",
"editor:focus-left",
"editor:focus-right",
"workspace:split-vertical",
"workspace:split-horizontal",
"workspace:close",
"workspace:next-tab",
"workspace:previous-tab",
"graph:open",
"graph:open-local",
"global-search:open",
"switcher:open",
"file-explorer:reveal-active-file",
"recent-files-obsidian:recent-files-open",
"tag-pane:open",
"outline:open",
"outline:open-for-current",
"daily-notes",
"insert-current-date",
"insert-current-time",
"insert-template",
"open-with-default-app:open",
"open-with-default-app:show",
"omnisearch:show-modal",
"omnisearch:show-modal-infile",
"obsidian-paste-image-rename:batch-rename-all-images",
"obsidian-paste-image-rename:batch-rename-embeded-files",
"obsidian-importer:open-modal",
"note-composer:merge-file",
"note-composer:split-file",
"note-composer:extract-heading",
"markdown:toggle-preview",
"markdown:clear-metadata-properties",
"markdown:add-metadata-property",
"markdown:add-alias",
"graph:animate",
"file-recovery:open",
"file-explorer:open",
"file-explorer:new-folder",
"file-explorer:new-file-in-new-pane",
"file-explorer:new-file-in-current-tab",
"file-explorer:new-file",
"file-explorer:move-file",
"file-explorer:duplicate-file",
"editor:add-cursor-above",
"editor:add-cursor-below",
"editor:attach-file",
"editor:clear-formatting",
"editor:context-menu",
"editor:cycle-list-checklist",
"editor:delete-paragraph",
"editor:download-attachments",
"editor:focus",
"editor:fold-all",
"editor:fold-less",
"editor:fold-more",
"editor:follow-link",
"editor:indent-list",
"editor:insert-codeblock",
"editor:insert-footnote",
"editor:insert-mathblock",
"editor:insert-table",
"editor:open-link-in-new-split",
"editor:open-link-in-new-leaf",
"editor:set-heading-1",
"editor:set-heading-0",
"editor:set-heading",
"editor:save-file",
"editor:rename-heading",
"editor:open-search-replace",
"editor:open-search",
"editor:open-link-in-new-window",
"editor:table-col-align-center",
"editor:table-col-after",
"editor:swap-line-up",
"editor:swap-line-down",
"editor:set-heading-6",
"editor:set-heading-5",
"editor:set-heading-4",
"editor:set-heading-3",
"editor:set-heading-2",
"editor:table-col-align-left",
"editor:table-col-align-right",
"editor:table-col-before",
"editor:table-col-copy",
"editor:table-col-delete",
"editor:table-col-left",
"editor:table-col-right",
"editor:table-row-after",
"editor:table-row-down",
"editor:table-row-delete",
"editor:table-row-copy",
"editor:table-row-before",
"editor:table-row-up",
"editor:toggle-fold-properties",
"editor:toggle-fold",
"editor:toggle-line-numbers",
"editor:toggle-italics",
"editor:toggle-spellcheck",
"editor:toggle-source",
"editor:toggle-readable-line-length",
"editor:unfold-all",
"editor:unindent-list",
"daily-notes:goto-prev",
"daily-notes:goto-next",
"command-palette:open",
"canvas:new-file",
"canvas:jump-to-group",
"canvas:export-as-image",
"canvas:convert-to-file",
"bookmarks:unbookmark-current-view",
"bookmarks:open",
"bookmarks:bookmark-current-view",
"bookmarks:bookmark-current-section",
"bookmarks:bookmark-current-search",
"bookmarks:bookmark-current-heading",
"bookmarks:bookmark-all-tabs",
"bases:new-file",
"bases:insert",
"bases:copy-table",
"bases:change-view",
"bases:add-view",
"bases:add-item",
"backlink:open",
"backlink:open-backlinks",
"backlink:toggle-backlinks-in-document",
"app:open-another-vault",
"app:open-help",
"app:open-sandbox-vault",
"app:open-settings",
"app:open-vault",
"app:reload",
"app:toggle-ribbon",
"app:toggle-left-sidebar",
"app:toggle-default-new-pane-mode",
"app:switch-vault",
"app:show-release-notes",
"app:show-debug-info",
"app:toggle-right-sidebar",
"app:delete-file"
]
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "mcp-tools-istefox",
"name": "MCP Connector",
"version": "0.22.0",
"minAppVersion": "1.7.2",
"description": "Connect MCP-compatible clients (Claude Desktop, Claude Code, Cline) to your vault with semantic search, templates, file management and gated command execution.",
"author": "Stefano Ferri",
"authorUrl": "https://github.com/istefox",
"isDesktopOnly": true
}
@@ -0,0 +1,554 @@
{
"vaultProfiles": [
{
"id": "default",
"name": "Default",
"fileVisibility": "supported",
"propertyKeys": [],
"hiddenFolders": [],
"hiddenTags": [],
"hiddenFileNames": [],
"hiddenFileTags": [],
"hiddenFileProperties": [],
"navigationBanner": null,
"periodicNotesFolder": "",
"shortcuts": [],
"navRainbow": {
"mode": "foreground",
"balanceHueLuminance": true,
"separateThemeColors": false,
"shortcuts": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#ef4444",
"darkLastColor": "#8b5cf6",
"transitionStyle": "rgb"
},
"recent": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#ef4444",
"darkLastColor": "#8b5cf6",
"transitionStyle": "rgb"
},
"folders": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#fb7185",
"darkLastColor": "#c084fc",
"transitionStyle": "hue",
"scope": "root"
},
"tags": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#fb7185",
"darkLastColor": "#c084fc",
"transitionStyle": "hue",
"scope": "root"
},
"properties": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#fb7185",
"darkLastColor": "#c084fc",
"transitionStyle": "hue",
"scope": "root"
}
}
}
],
"vaultProfile": "default",
"vaultTitle": "navigation",
"syncModes": {
"vaultProfile": "synced",
"homepage": "synced",
"folderSortOrder": "synced",
"tagSortOrder": "synced",
"propertySortOrder": "synced",
"includeDescendantNotes": "synced",
"useFloatingToolbars": "synced",
"dualPane": "synced",
"dualPaneOrientation": "synced",
"narrowSidebarLayout": "synced",
"narrowSidebarTriggerMode": "synced",
"narrowSidebarCustomWidth": "synced",
"paneTransitionDuration": "synced",
"toolbarVisibility": "synced",
"pinNavigationBanner": "synced",
"navIndent": "synced",
"navItemHeight": "synced",
"navItemHeightScaleText": "synced",
"calendarPlacement": "synced",
"calendarLeftPlacement": "synced",
"calendarWeeksToShow": "synced",
"compactItemHeight": "synced",
"compactItemHeightScaleText": "synced",
"featureImageSize": "synced",
"featureImagePixelSize": "synced",
"uiScale": "synced"
},
"createNewNotesInNewTab": true,
"autoRevealActiveFile": true,
"autoRevealShortestPath": true,
"autoRevealIgnoreRightSidebar": true,
"autoRevealIgnoreOtherWindows": true,
"paneTransitionDuration": 150,
"multiSelectModifier": "cmdCtrl",
"enterToOpenFiles": false,
"shiftEnterOpenContext": "tab",
"cmdCtrlEnterOpenContext": "split",
"mouseBackForwardAction": "history",
"startView": "files",
"showInfoButtons": true,
"homepage": {
"source": "none",
"file": null,
"createMissingPeriodicNote": true
},
"dualPane": true,
"dualPaneOrientation": "horizontal",
"narrowSidebarLayout": "singlePane",
"narrowSidebarTriggerMode": "fitPanes",
"narrowSidebarCustomWidth": 350,
"showTooltips": false,
"showTooltipPath": true,
"showTooltipWordCount": false,
"desktopBackground": "separate",
"desktopScale": 1,
"mobileScale": 1,
"useFloatingToolbars": true,
"toolbarVisibility": {
"navigation": {
"toggleDualPane": true,
"expandCollapse": true,
"calendar": true,
"hiddenItems": true,
"rootReorder": true,
"newFolder": true
},
"list": {
"back": true,
"search": true,
"reveal": false,
"descendants": true,
"sort": true,
"appearance": true,
"newNote": true
}
},
"interfaceIcons": {},
"colorIconOnly": false,
"dateFormat": "MMM D, YYYY",
"timeFormat": "h:mm a",
"calendarTemplateFolder": "",
"confirmBeforeDelete": true,
"deleteAttachments": "ask",
"moveFileConflicts": "ask",
"externalIconProviders": {
"bootstrap-icons": true,
"fontawesome-solid": true,
"material-icons": true,
"phosphor": true,
"rpg-awesome": true,
"simple-icons": true
},
"checkForUpdatesOnStart": true,
"pinNavigationBanner": true,
"showNoteCount": true,
"separateNoteCounts": true,
"showIndentGuides": false,
"navCountLeaderStyle": "none",
"rootLevelSpacing": 0,
"navIndent": 16,
"navItemHeight": 28,
"navItemHeightScaleText": true,
"collapseBehavior": "all",
"smartCollapse": true,
"excludeVaultRootFromCollapse": false,
"collapseOtherBranchesOnExpand": false,
"autoSelectFirstFileOnFocusChange": false,
"autoExpandNavItems": false,
"springLoadedFolders": true,
"springLoadedFoldersInitialDelay": 0.5,
"springLoadedFoldersSubsequentDelay": 0.5,
"showSectionIcons": true,
"showShortcuts": true,
"shortcutBadgeDisplay": "index",
"skipAutoScroll": false,
"showRecentNotes": true,
"hideRecentNotes": "none",
"pinRecentNotesWithShortcuts": false,
"recentNotesCount": 5,
"showFolderIcons": true,
"showRootFolder": true,
"inheritFolderColors": true,
"folderSortOrder": "alpha-asc",
"enableFolderNotes": false,
"folderNoteType": "markdown",
"folderNoteName": "",
"folderNoteNamePattern": "",
"folderNoteTemplate": null,
"enableFolderNoteLinks": true,
"hideFolderNoteInList": true,
"pinCreatedFolderNote": false,
"folderNoteOpenLocation": "current-tab",
"showNearestFolderNoteInSidebar": true,
"showTags": true,
"showTagIcons": true,
"showAllTagsFolder": true,
"showUntagged": true,
"scopeTagsToCurrentContext": false,
"tagSortOrder": "alpha-asc",
"inheritTagColors": true,
"keepEmptyTagsProperty": false,
"showProperties": true,
"showPropertyIcons": true,
"inheritPropertyColors": true,
"propertySortOrder": "alpha-asc",
"showAllPropertiesFolder": true,
"scopePropertiesToCurrentContext": false,
"defaultListMode": "standard",
"includeDescendantNotes": false,
"defaultFolderSort": "modified-desc",
"propertySortKey": "",
"propertySortSecondary": "title",
"manualSortPropertyKey": "sort_index",
"manualSortGroupHeaderProperty": "group_header",
"manualSortNewNotePlacement": "below-selected-note",
"confirmBeforeManualSort": true,
"revealFileOnListChanges": true,
"listPaneTitle": "header",
"noteGrouping": "date",
"showSelectedNavigationPills": false,
"stickyGroupHeaders": true,
"showFolderGroupPaths": true,
"showCurrentFolderFilesAtBottom": false,
"filterPinnedByFolder": false,
"compactItemHeight": 28,
"compactItemHeightScaleText": true,
"showQuickActions": true,
"quickActionRevealInFolder": false,
"quickActionAddTag": true,
"quickActionAddToShortcuts": true,
"quickActionPinNote": true,
"quickActionOpenInNewTab": false,
"hideDrawingPreviewImages": true,
"useFrontmatterMetadata": false,
"frontmatterIconField": "icon",
"frontmatterColorField": "color",
"frontmatterBackgroundField": "background",
"frontmatterNameField": "",
"frontmatterCreatedField": "",
"frontmatterModifiedField": "",
"frontmatterDateFormat": "",
"showFileIconUnfinishedTask": false,
"showFileBackgroundUnfinishedTask": false,
"unfinishedTaskBackgroundColor": "#ef000050",
"showFileIcons": true,
"useFolderIconForFiles": true,
"showFilenameMatchIcons": false,
"fileNameIconMap": {},
"showCategoryIcons": false,
"fileTypeIconMap": {},
"fileTypeIconPreset": "none",
"fileNameRows": 1,
"useFolderColorForTitles": false,
"showFilePreview": true,
"skipHeadingsInPreview": true,
"skipCodeBlocksInPreview": true,
"stripHtmlInPreview": true,
"stripLatexInPreview": true,
"previewRows": 2,
"previewProperties": [],
"previewPropertiesFallback": true,
"showFeatureImage": true,
"featureImageProperties": [],
"featureImageExcludeProperties": [],
"featureImageSize": "64",
"featureImagePixelSize": "256",
"forceSquareFeatureImage": true,
"downloadExternalFeatureImages": true,
"showFileTags": true,
"colorFileTags": true,
"prioritizeColoredFileTags": true,
"showFileTagAncestors": false,
"showFileTagsInCompactMode": false,
"showFileProperties": true,
"colorFileProperties": true,
"prioritizeColoredFileProperties": true,
"showFilePropertiesInCompactMode": false,
"showPropertiesOnSeparateRows": false,
"enablePropertyInternalLinks": true,
"enablePropertyExternalLinks": true,
"textCountDisplay": "none",
"textCountPlacement": "title",
"characterCountSpaces": "include",
"wordCountTargetProperty": "word-goal",
"showWordCountPercentage": false,
"showFileDate": true,
"alphabeticalDateMode": "modified",
"showParentFolder": true,
"showParentFolderFullPath": false,
"parentFolderClickRevealsFile": false,
"showParentFolderColor": false,
"showParentFolderIcon": false,
"calendarEnabled": true,
"calendarPlacement": "left-sidebar",
"calendarConfirmBeforeCreate": true,
"calendarLocale": "system-default",
"calendarWeekendDays": "sat-sun",
"calendarMonthHeadingFormat": "full",
"calendarHighlightToday": true,
"calendarShowFeatureImage": true,
"calendarMonthHighlights": {},
"calendarShowWeekNumber": false,
"calendarShowQuarter": false,
"calendarShowYearCalendar": true,
"calendarLeftPlacement": "navigation",
"calendarWeeksToShow": 1,
"calendarIntegrationMode": "notebook-navigator",
"calendarPeriodicNotesLocaleSource": "calendar",
"calendarCustomFilePattern": "YYYY/YYYYMMDD",
"calendarCustomWeekPattern": "gggg/[W]ww",
"calendarCustomMonthPattern": "YYYY/YYYYMM",
"calendarCustomQuarterPattern": "YYYY/[Q]Q",
"calendarCustomYearPattern": "YYYY",
"calendarCustomFileTemplate": null,
"calendarCustomWeekTemplate": null,
"calendarCustomMonthTemplate": null,
"calendarCustomQuarterTemplate": null,
"calendarCustomYearTemplate": null,
"keyboardShortcuts": {
"pane:move-up": [
{
"key": "ArrowUp",
"modifiers": []
}
],
"pane:move-down": [
{
"key": "ArrowDown",
"modifiers": []
}
],
"pane:page-up": [
{
"key": "PageUp",
"modifiers": []
}
],
"pane:page-down": [
{
"key": "PageDown",
"modifiers": []
}
],
"pane:home": [
{
"key": "Home",
"modifiers": []
}
],
"pane:end": [
{
"key": "End",
"modifiers": []
}
],
"pane:rename": [
{
"key": "F2",
"modifiers": []
}
],
"navigation:collapse-or-parent": [
{
"key": "ArrowLeft",
"modifiers": []
}
],
"navigation:expand-or-focus-list": [
{
"key": "ArrowRight",
"modifiers": []
}
],
"navigation:focus-list": [
{
"key": "Tab",
"modifiers": []
}
],
"pane:delete-selected": [
{
"key": "Delete",
"modifiers": []
},
{
"key": "Backspace",
"modifiers": []
}
],
"list:focus-navigation": [
{
"key": "ArrowLeft",
"modifiers": []
},
{
"key": "Tab",
"modifiers": [
"Shift"
]
}
],
"list:focus-editor": [
{
"key": "ArrowRight",
"modifiers": []
},
{
"key": "Tab",
"modifiers": []
}
],
"list:select-all": [
{
"key": "A",
"modifiers": [
"Mod"
]
}
],
"list:extend-selection-up": [
{
"key": "ArrowUp",
"modifiers": [
"Shift"
]
}
],
"list:extend-selection-down": [
{
"key": "ArrowDown",
"modifiers": [
"Shift"
]
}
],
"list:manual-sort-up": [
{
"key": "ArrowUp",
"modifiers": [
"Mod"
]
}
],
"list:manual-sort-down": [
{
"key": "ArrowDown",
"modifiers": [
"Mod"
]
}
],
"list:range-to-start": [
{
"key": "Home",
"modifiers": [
"Shift"
]
}
],
"list:range-to-end": [
{
"key": "End",
"modifiers": [
"Shift"
]
}
],
"search:focus-list": [
{
"key": "Tab",
"modifiers": []
},
{
"key": "Enter",
"modifiers": []
}
],
"search:focus-navigation": [
{
"key": "Tab",
"modifiers": [
"Shift"
]
}
],
"search:close": [
{
"key": "Escape",
"modifiers": []
}
]
},
"customVaultName": "",
"pinnedNotes": {},
"collapsedPinnedContexts": {},
"fileIcons": {},
"fileColors": {},
"fileBackgroundColors": {},
"folderIcons": {},
"folderColors": {},
"folderBackgroundColors": {},
"folderSortOverrides": {},
"folderTreeSortOverrides": {},
"folderAppearances": {},
"tagIcons": {},
"tagColors": {},
"tagBackgroundColors": {},
"tagSortOverrides": {},
"tagTreeSortOverrides": {},
"tagAppearances": {},
"propertyIcons": {},
"propertyColors": {},
"propertyBackgroundColors": {},
"propertySortOverrides": {},
"propertyTreeSortOverrides": {},
"propertyAppearances": {},
"virtualFolderColors": {},
"virtualFolderBackgroundColors": {},
"navigationSeparators": {},
"userColors": [
"#ffffff",
"#d9d9d9",
"#a6a6a6",
"#737373",
"#000000",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040"
],
"lastShownVersion": "3.2.2",
"rootFolderOrder": [],
"rootTagOrder": [],
"rootPropertyOrder": []
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"id": "notebook-navigator",
"name": "Notebook Navigator",
"version": "3.2.2",
"minAppVersion": "1.11.0",
"description": "Replace the default file explorer with a clean two-pane interface featuring folder tree, tag browsing, file previews, keyboard navigation, drag-and-drop, pinned notes, and customizable display options.",
"author": "Johan Sanneblad",
"authorUrl": "https://github.com/johansan",
"fundingUrl": "https://github.com/sponsors/johansan/",
"isDesktopOnly": false
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,32 @@
{
"cascadeColors": true,
"colorBackground": true,
"palette": [
{
"id": "PbkbBOekkylxRskByXevs",
"name": "Calgary",
"value": "#657b9f"
},
{
"id": "mT7Y6J5p2UWGraEutdbBw",
"name": "Reddish",
"value": "#af4141"
},
{
"id": "jMNeXlsuD37N4KWe33CHD",
"name": "",
"value": "#cbd44e"
},
{
"id": "D7BkFsf6bdqf6QeNsVxTH",
"name": "",
"value": "#6dee87"
},
{
"id": "ueHvc6VOvvkec3znswDC3",
"name": "",
"value": "#de8117"
}
],
"fileColors": []
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
{
"id": "obsidian-file-color",
"name": "File Color",
"version": "1.1.0",
"minAppVersion": "1.2.7",
"description": "An Obsidian plugin for setting colors on folders and files in the file tree.",
"author": "ecustic",
"authorUrl": "https://github.com/ecustic",
"fundingUrl": "https://www.buymeacoffee.com/ecustic",
"isDesktopOnly": false
}
@@ -0,0 +1,27 @@
/* TEXT COLORING, NO CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text > .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text > .nav-file-title
{
color: var(--file-color-color);
}
/* TEXT COLORING, WITH CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text.file-color-cascade .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text.file-color-cascade .nav-file-title
{
color: var(--file-color-color);
}
/* BACKGROUND COLORING, NO CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background > .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background > .nav-file-title
{
background-color: color-mix(in srgb, var(--file-color-color) 15%, transparent);
}
/* BACKGROUND COLORING, WITH CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background.file-color-cascade .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background.file-color-cascade .nav-file-title
{
background-color: color-mix(in srgb, var(--file-color-color) 15%, transparent);
}
@@ -0,0 +1,36 @@
{
"settings": {
"migrated": 6,
"iconPacksPath": ".obsidian/icons",
"fontSize": 16,
"emojiStyle": "native",
"iconColor": null,
"recentlyUsedIcons": [
"FabMicrosoft",
"LiBackpack"
],
"recentlyUsedIconsSize": 5,
"rules": [],
"extraMargin": {
"top": 0,
"right": 4,
"bottom": 0,
"left": 0
},
"iconInTabsEnabled": false,
"iconInTitleEnabled": false,
"iconInTitlePosition": "above",
"iconInFrontmatterEnabled": false,
"iconInFrontmatterFieldName": "icon",
"iconColorInFrontmatterFieldName": "iconColor",
"iconsBackgroundCheckEnabled": false,
"iconsInNotesEnabled": true,
"iconsInLinksEnabled": true,
"iconIdentifier": ":",
"lucideIconPackType": "native",
"debugMode": false,
"useInternalPlugins": false
},
"Learning CI-CD": "LiBackpack",
"Microsoft Windows": "FabMicrosoft"
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-icon-folder",
"name": "Iconize",
"version": "2.14.7",
"minAppVersion": "0.9.12",
"description": "Add icons to anything you desire in Obsidian, including files, folders, and text.",
"author": "Florian Woelki",
"authorUrl": "https://florianwoelki.com/",
"isDesktopOnly": false
}
@@ -0,0 +1,120 @@
.iconize-inline-title-wrapper {
width: var(--line-width);
max-width: var(--max-width);
margin-inline: var(--content-margin);
}
.iconize-title-icon {
max-width: var(--max-width);
margin-right: var(--size-4-2);
}
.iconize-icon-in-link {
transform: translateY(20%);
margin-right: var(--size-2-2);
display: inline-flex;
}
.iconize-icon {
border: 1px solid transparent;
margin: 0px 4px 0px 0px;
display: flex;
align-self: center;
margin: auto 0;
}
.nav-folder-title,
.nav-file-title {
align-items: center;
}
.iconize-setting input[type='color'] {
margin: 0 6px;
}
.iconize-modal.prompt-results {
margin: 0;
overflow-y: auto;
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
}
.prompt .iconize-subheadline {
margin-top: 12px;
font-size: 12px;
color: gray;
grid-column-start: 1;
grid-column-end: 6;
}
@media (max-width: 640px) {
.iconize-modal.prompt-results {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.prompt .iconize-subheadline {
grid-column-end: 4;
}
}
.iconize-modal.prompt-results .suggestion-item {
cursor: pointer;
white-space: pre-wrap;
display: flex;
justify-content: flex-end;
align-items: center;
flex-direction: column-reverse;
text-align: center;
font-size: 13px;
color: var(--text-muted);
padding: 16px 8px;
line-break: auto;
word-break: break-word;
line-height: 1.3;
}
.iconize-modal.prompt-results .suggestion-item.suggestion-item__center {
justify-content: center;
}
.iconize-icon-preview {
font-size: 22px;
}
.iconize-icon-preview img {
width: 16px;
height: 16px;
}
.iconize-icon-preview svg {
width: 24px;
height: 24px;
color: currentColor;
margin-bottom: 4px;
}
.iconize-dragover {
position: relative;
}
.iconize-dragover-el {
position: absolute;
width: 100%;
height: 100%;
color: var(--text-normal);
background-color: var(--background-secondary-alt);
display: flex;
align-items: center;
justify-content: center;
}
/* Custom rule modal. */
.iconize-custom-modal .modal-content {
display: flex;
align-items: center;
justify-content: center;
}
.iconize-custom-modal .modal-content input {
width: 100%;
margin-right: 0.5rem;
}
@@ -0,0 +1,465 @@
{
"importers": {
"onenote": {
"previouslyImportedIDs": [
"0-c866819f4dc14b5f8222f471a9f6372b!1-A17362FB20FDB35!s88eb6bb0d39e4f23908d5f7f2891bba7",
"0-92121ffa1a7e4ff0abf0404c94ae1da5!1-A17362FB20FDB35!s021bdabf6dba42159bc029f07ee6c19d",
"0-acefaf2d7a254f7e897c43a2e4a1eac7!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-787c09521e4341f68c470a90bf1b7c67!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-2426f18a225f45bda55866736b78cd81!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-ab277567bf2648fd80bac5baaac46274!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-cabc5546baae4beeaa1d3874eabcc7d6!1-A17362FB20FDB35!10085",
"0-09a8664f9084054422bfe9133b2c0aed!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-040ec452ae0e424aaecea2c6c407199c!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-f5f5a1bcb955449c91d438a45f8ebad4!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-9dac01913cdf0b243aaaf04da2934917!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-f277ac574fa5494a9fd4e9c0167c827d!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-cb32a4dfd7470c8f0ac5e3b7d84ebfb0!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-c8b848149c4845fea07702fb4da7792c!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-1defefbf911048f5b4b1e6ec33132957!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-13829412a5d445e1aa16718aa38bed57!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-1e0122aacdd749ff9f8a46f9e1bfde84!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-09c69b4e58b24f50938dfa0bc33630b2!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-d12ad78df8164bd48f06b1070e1d2ea4!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-6bd1cb92183e4202adab2df7605a24c6!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-09a8664f9084054422bfe9133b2c0aed!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-040ec452ae0e424aaecea2c6c407199c!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-f5f5a1bcb955449c91d438a45f8ebad4!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-9dac01913cdf0b243aaaf04da2934917!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-f277ac574fa5494a9fd4e9c0167c827d!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-cb32a4dfd7470c8f0ac5e3b7d84ebfb0!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-c8b848149c4845fea07702fb4da7792c!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-1defefbf911048f5b4b1e6ec33132957!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-13829412a5d445e1aa16718aa38bed57!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-1e0122aacdd749ff9f8a46f9e1bfde84!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-09c69b4e58b24f50938dfa0bc33630b2!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-d12ad78df8164bd48f06b1070e1d2ea4!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-6bd1cb92183e4202adab2df7605a24c6!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-12ac3ef6e3a14304b201cb4f7ecd50a2!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-75516fd9f1a60cf91add345e88cc6a49!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-44aeb3a211944961ae08ed584ad8fcca!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-0f2561d79af7016d320c90ef8d3a3ccb!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-7e6855a77d474bad8ab1643ea8f715b7!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-6be781b7e3790303242773fc4c9d2f2d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-0703223f422f0ebf2f604e7d8d71db51!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-4d9a118f05b104d92a86ce358cd69456!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-1f079d5b43f20b1f1a9934e476cc5dc5!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-e6fde5370a8a044a379ee7cae3c01159!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-d0358b72a6a70b782c9e42b34da359b4!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-53ae3d92692e036e3636083a29d4629d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-672f83e740f943e8b08ff56700796b21!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-598c6dbdd2ef4e92a5f275a21d777c35!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-43ed671240e14e4bbb76d5e6cea42cdc!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-fdbcc8f5439249a9820093c4578a8fdd!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-8586470f2bcc02a41e31e37502b135e3!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-c65ce38688f40d703e932b7f57e8062b!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-de09662a52cc0849221bd5f1a2e9ef86!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-5a84187f5ec14b0484a4177ec67643ac!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-07e551ae2ab70d191e2f135c358a885e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-021ffa68741d0d89387ed6cda6465065!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-1fb2767959bf4e36a1d9c397abb80c6d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-6295219f34680ff307c257a5174b6ed4!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-dba7b37e136201542042ad56851fefcc!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-6177526fd4f9071d085ab9172c76ca64!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-39b36a47280309940ce1f2ac6cd8b5da!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-28fab697e2c400a121dcd1cc62f6b53e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-25feab25973e039b0c2d3865414df372!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-e332d8d3e2a04a998460538e13ecbb64!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-e68565a9eda74e31baf9510eb2453582!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-914c61f792394208bc452a2ad22f6333!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-5add95a0dea3491184e5454ed692ea9b!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-8c17cda4c80b455397d2fd6667c02612!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-a9438e23a7584fa382bf9fe2e081be1d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-da6f07ad9ff24240a3c79196528503b6!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-b94b51769509489aab6bbb7712c3411b!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-8dbeae69ff6143f2af453aafc549d47e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-d8cc6c0f225a4510b19cccf0fa233449!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-86d08654d40e46009ab8909101b4069f!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-3e2e47c8d0eb4648be569224aad76892!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-352c8be445e24809a595bd92571a2a93!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-05cb4ad9d3ac4ed79ca38f99fa4c27da!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-49a248c4ceb94f8ab17e89ec2cbf753f!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-413f2b2a513843aaba09742db47b48dd!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-74bb026e59dd4afa805cc87f1a0a4dbb!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-4637c318154c4b11aaa950c22ecfcb03!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-0e22a4ced155407da7457f737e85922e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-2ab60ff1bd114d35aaddb5af1492364a!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-75516fd9f1a60cf91add345e88cc6a49!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-44aeb3a211944961ae08ed584ad8fcca!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-0f2561d79af7016d320c90ef8d3a3ccb!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-7e6855a77d474bad8ab1643ea8f715b7!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-6be781b7e3790303242773fc4c9d2f2d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-0703223f422f0ebf2f604e7d8d71db51!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-4d9a118f05b104d92a86ce358cd69456!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-1f079d5b43f20b1f1a9934e476cc5dc5!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-e6fde5370a8a044a379ee7cae3c01159!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-d0358b72a6a70b782c9e42b34da359b4!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-53ae3d92692e036e3636083a29d4629d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-672f83e740f943e8b08ff56700796b21!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-598c6dbdd2ef4e92a5f275a21d777c35!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-43ed671240e14e4bbb76d5e6cea42cdc!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-fdbcc8f5439249a9820093c4578a8fdd!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-8586470f2bcc02a41e31e37502b135e3!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-c65ce38688f40d703e932b7f57e8062b!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-de09662a52cc0849221bd5f1a2e9ef86!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-5a84187f5ec14b0484a4177ec67643ac!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-07e551ae2ab70d191e2f135c358a885e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-021ffa68741d0d89387ed6cda6465065!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-1fb2767959bf4e36a1d9c397abb80c6d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-6295219f34680ff307c257a5174b6ed4!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-dba7b37e136201542042ad56851fefcc!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-6177526fd4f9071d085ab9172c76ca64!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-39b36a47280309940ce1f2ac6cd8b5da!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-28fab697e2c400a121dcd1cc62f6b53e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-25feab25973e039b0c2d3865414df372!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-e332d8d3e2a04a998460538e13ecbb64!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-e68565a9eda74e31baf9510eb2453582!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-914c61f792394208bc452a2ad22f6333!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-5add95a0dea3491184e5454ed692ea9b!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-8c17cda4c80b455397d2fd6667c02612!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-a9438e23a7584fa382bf9fe2e081be1d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-da6f07ad9ff24240a3c79196528503b6!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-b94b51769509489aab6bbb7712c3411b!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-8dbeae69ff6143f2af453aafc549d47e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-d8cc6c0f225a4510b19cccf0fa233449!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-86d08654d40e46009ab8909101b4069f!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-3e2e47c8d0eb4648be569224aad76892!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-352c8be445e24809a595bd92571a2a93!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-05cb4ad9d3ac4ed79ca38f99fa4c27da!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-49a248c4ceb94f8ab17e89ec2cbf753f!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-413f2b2a513843aaba09742db47b48dd!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-74bb026e59dd4afa805cc87f1a0a4dbb!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-4637c318154c4b11aaa950c22ecfcb03!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-0e22a4ced155407da7457f737e85922e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-2ab60ff1bd114d35aaddb5af1492364a!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-9f37e99c27930d1c14610200236bb780!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-700f16cd2434010d1a29fe8328255afb!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-7b313306c6830100012b5f1f153cda52!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-b9c4d30c63600b41369e8272f2b92db8!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-f25b804e359706981b9be352d286825c!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-978963bc40940e8a1c542ce0aa731e0b!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-a294613abcf50e8f14a03b40152866bd!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-9f37e99c27930d1c14610200236bb780!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-700f16cd2434010d1a29fe8328255afb!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-7b313306c6830100012b5f1f153cda52!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-b9c4d30c63600b41369e8272f2b92db8!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-f25b804e359706981b9be352d286825c!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-978963bc40940e8a1c542ce0aa731e0b!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-a294613abcf50e8f14a03b40152866bd!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-18490057bedb0eb227b9cd8ba4b1c4c4!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-f9375004e3f8486e868bfc11b8b846ac!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-c9566c8abdff0248361c5875dec6da1d!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-47a903bdf1214e98b6cbfd9a3d7b0bff!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-eed003ccc46f4e3788519f4b963e23ee!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-71e160becd5d0b770cc64657be7634f2!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-a5221a10912002d83b82d584331eb461!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-03d100a8b4df0d2204ac5e1066e78668!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-a3a7fb93b1b80ca7202baba61906b987!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-4830c5106fcb0d021648de5d8517ebc4!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-922172e61db90f92126c77dc2f8939e9!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-27ecdd4281f74bbda13d0b874c58ea10!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-4b599b1c8a2705c91559f72c9faa4d1e!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-9414e265c4040b5f0dc73bc40d78cd74!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-72a33f8c96410d340955bd94ce1d5298!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-16c2674821d00bdc0801ec969f6226b8!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-449ffb4f571e492088e2b6d69c01fd64!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-d01a46a4b1350df713ff809cd813fb70!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-23bba4f62351069124d87b4beb4f2ce1!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-c18c9d0f497b4cca95ae76b8765aaf64!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-311d1d5b430a4b419dd873c0155aa5b8!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-8b0ae4bdafc547688c550497ed7c164e!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-40f8e2ffc6024d9abe9ee3246c94a013!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-5ec358d6ef6b4f968fd36e307fa7833a!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-48dc0b44218c4f1b8ffc74d3e49f11f6!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-abde233087664ad7a48a454a4ccf346d!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-0b9d4749fcf74e81b2d3a374f29c43cf!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-9beb2edcf9924629965658e19eb1de03!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-676677eb8f864020a2a1aed50b0bdac8!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-18490057bedb0eb227b9cd8ba4b1c4c4!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-f9375004e3f8486e868bfc11b8b846ac!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-c9566c8abdff0248361c5875dec6da1d!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-47a903bdf1214e98b6cbfd9a3d7b0bff!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-eed003ccc46f4e3788519f4b963e23ee!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-71e160becd5d0b770cc64657be7634f2!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-a5221a10912002d83b82d584331eb461!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-03d100a8b4df0d2204ac5e1066e78668!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-a3a7fb93b1b80ca7202baba61906b987!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-4830c5106fcb0d021648de5d8517ebc4!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-922172e61db90f92126c77dc2f8939e9!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-27ecdd4281f74bbda13d0b874c58ea10!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-4b599b1c8a2705c91559f72c9faa4d1e!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-9414e265c4040b5f0dc73bc40d78cd74!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-72a33f8c96410d340955bd94ce1d5298!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-16c2674821d00bdc0801ec969f6226b8!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-449ffb4f571e492088e2b6d69c01fd64!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-d01a46a4b1350df713ff809cd813fb70!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-23bba4f62351069124d87b4beb4f2ce1!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-c18c9d0f497b4cca95ae76b8765aaf64!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-311d1d5b430a4b419dd873c0155aa5b8!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-8b0ae4bdafc547688c550497ed7c164e!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-40f8e2ffc6024d9abe9ee3246c94a013!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-5ec358d6ef6b4f968fd36e307fa7833a!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-48dc0b44218c4f1b8ffc74d3e49f11f6!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-abde233087664ad7a48a454a4ccf346d!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-0b9d4749fcf74e81b2d3a374f29c43cf!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-9beb2edcf9924629965658e19eb1de03!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-676677eb8f864020a2a1aed50b0bdac8!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-cc2bef22faa74943b23ad350650ba8fb!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-86571a28686744f7a00a21562b20775c!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-71c272ca4214045438906c9766dd0e12!1-A17362FB20FDB35!s41c8f595616c4415a5073c427db6ebc2",
"0-968200594798058c0b555ce1f71119dd!1-A17362FB20FDB35!s10eb4051e61347d4966085693709b8c2",
"0-7f1f8f9051ce0270297535f716dac952!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-b5f99ef288ea051d13b3b2f4b64bbe8b!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-e7c3526105d708dd323d1018617c7091!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-54cf0f0f28c503a8066fb8289cd6aa9b!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-ec329669a93708630f2583076b23862f!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-59306a5cf59a09d7101b599c927ab404!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-c5f057cf2ee34b64944cace969e086ec!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-cb0849f71c9a407a86c83fec6824df70!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-af3fbf96c621413b88d58f0c696dd110!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-726de65b9cd542e99972101c43ab7bfd!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-c5f057cf2ee34b64944cace969e086ec!1-A17362FB20FDB35!s58276b3e29424354a5e8d7576f84c404",
"0-cc38f313511240fea9d0996155d2c919!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-969b6ff7d4e44a0abe1b22014377905c!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-14527592b9f600413034d56dfdafff31!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e685e64e75ec080129886856ee14b730!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-669716ae2e4c0a01166c0ceef11dca3b!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-4a14c352c2c64f1fa556d4be42040703!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!98-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!146-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-ca136ea651310fae13708fd6e40cedc6!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-12f5e1b969de0cf41bd7ea60eb117bb5!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!27-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e22839fe648e4ed989a36c5c266e2ab1!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-1b3c8688eea24d25ba679ab1d4ff8daf!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-07df92115fda03b70db6ce474cf190a6!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e30d31c5fe1d0dd232769b02e160e747!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-7152829923da0595142aef346ed03ba6!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e67391ac23d40af70573a9c9e4f5d55f!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-13ef8e5ffe0405b924ac139a04aeac17!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-d6d1fc04ac254a7daed0ad71d66e8b87!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!122-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!79-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!164-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-10a92889a2d102a525b2979889b22d83!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-011157b8eb150b7d1ad632409fd4ad25!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c627774b9e7904f61f06d9f685516051!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e03d40c62f420e6a27aec6bfe605ac86!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-3ccd7d56f0c20ffd0fffc40fbb6961bc!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-99615b6a9d234d3e8809c1033f4632d8!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-59caf69e30be41a6bf184981412c90cc!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-3ed476a14f9145dc8164bba8c8ff5e2f!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-cfb72ff23ce94434b8887db73875e2f3!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-25aa697d02674182b8a0762e988629f1!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-cc38f313511240fea9d0996155d2c919!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-969b6ff7d4e44a0abe1b22014377905c!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-14527592b9f600413034d56dfdafff31!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e685e64e75ec080129886856ee14b730!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-669716ae2e4c0a01166c0ceef11dca3b!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-4a14c352c2c64f1fa556d4be42040703!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!98-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!146-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-ca136ea651310fae13708fd6e40cedc6!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-12f5e1b969de0cf41bd7ea60eb117bb5!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!27-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e22839fe648e4ed989a36c5c266e2ab1!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-1b3c8688eea24d25ba679ab1d4ff8daf!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-07df92115fda03b70db6ce474cf190a6!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e30d31c5fe1d0dd232769b02e160e747!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-7152829923da0595142aef346ed03ba6!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e67391ac23d40af70573a9c9e4f5d55f!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-13ef8e5ffe0405b924ac139a04aeac17!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-d6d1fc04ac254a7daed0ad71d66e8b87!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!122-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!79-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!164-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-10a92889a2d102a525b2979889b22d83!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-011157b8eb150b7d1ad632409fd4ad25!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c627774b9e7904f61f06d9f685516051!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e03d40c62f420e6a27aec6bfe605ac86!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-3ccd7d56f0c20ffd0fffc40fbb6961bc!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-99615b6a9d234d3e8809c1033f4632d8!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-59caf69e30be41a6bf184981412c90cc!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-3ed476a14f9145dc8164bba8c8ff5e2f!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-cfb72ff23ce94434b8887db73875e2f3!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-25aa697d02674182b8a0762e988629f1!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-ad7c9efe77fc03d60439ea1ea38c87d8!1-A17362FB20FDB35!sb62c969a726b47dcba74a7288ab9199e",
"0-12d64f52d8a804d81a41a64605a917f6!1-A17362FB20FDB35!sb62c969a726b47dcba74a7288ab9199e",
"0-ad7c9efe77fc03d60439ea1ea38c87d8!1-A17362FB20FDB35!s7fe8149e120c4b48a67399ff140908d6",
"0-12d64f52d8a804d81a41a64605a917f6!1-A17362FB20FDB35!s7fe8149e120c4b48a67399ff140908d6",
"0-83f950c96fa10e6535b22e3e43694b40!1-A17362FB20FDB35!s29646bac687f4a3c9bffe399d93f7530",
"0-d3215a45bdb24e219b1b3eddd0fff4d2!1-A17362FB20FDB35!s29646bac687f4a3c9bffe399d93f7530",
"0-0d3ab4ec846e4f01ba5a14ce2db58775!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-ff88e3a7a62c4183bd600bb00911bb8c!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-bdb0b5b109aa06d200c354543d1956de!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-943a9a2d396403a83034d1641d450db6!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3f4d5ac65cbf0e5d3de6e186d8c752bd!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-49ed72c5fc0f000201f829ce398d6930!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-26cfb0d58a620616068aea5cf3ec7ab7!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-d3391649e4610c2b14562cfc2377ab63!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-f5208760dd43046c177bd6327c617bd9!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-423ae252e97004af0aeca8f2847eb595!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-0f8ed51262064665971f049ba4cc2209!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3286dafb932e03dc10ce41bc2073903a!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-afc3cc7dd24208e41400c961193bd475!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-f1336e84c3410a6e1a2b6ffe9c5a2fcd!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3c9f9fed83cf01400b560926010001b2!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-77bd76ad7f6f4599a2fc92699f97cfde!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3d6b35dba21709a63928554d13e59e7a!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7601901019e30ec620abe81fc9a60abc!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-4fdd7d77639701a337b742ef1834d866!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-6fae50656c5d087527e0a546b9323ba6!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-130089a3db8e0d09266c7a05439f6725!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3669be627aed04352e9917402c633aa2!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-946779f292090f7c092c985892bbb25d!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-525c2f44175205c537e15c0ee7d1de02!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-71b7a9e9d2b706a730f75ca6352ca89b!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-df83008abd080ae70c6fd25e021157e4!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-d430ae28516a0f2910210fef3cdde12e!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7fa9b3da46a4063d0cf9257624ead189!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-190bd771d54b014b01497603c3ceb234!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-db8dc63c1c2f05c40e99c4c1dd6d36ce!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-02e44bb3ec0a02c6182d624b42bb38c1!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7d3ed9111e9a483c8f24dd9518d57142!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-ea1735fe9370065b34d4b20be5138c43!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-ebbc4e53b30f08e40082d4214a551e40!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-0bbb9fc29c1807d3276b30ba688e66d4!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-dbd436bd7659098e27a57c46de99f7ba!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-eee67e91637109541a4d5cbdf6696cba!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-e9a9f673ed8702373c1bea771fb1407f!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-86ed7399fcf44923943e633849408201!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-6505a471551341a6a81b6f7bed25b4f5!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-d8f555da265545c383128e6ed9c1a7c4!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7eb58707ecb746bd8c61bdd9f2f2c0c9!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-e0b0b7d6c2b849f6a3e7f79a007b8678!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-0d3ab4ec846e4f01ba5a14ce2db58775!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-ff88e3a7a62c4183bd600bb00911bb8c!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-bdb0b5b109aa06d200c354543d1956de!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-943a9a2d396403a83034d1641d450db6!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3f4d5ac65cbf0e5d3de6e186d8c752bd!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-49ed72c5fc0f000201f829ce398d6930!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-26cfb0d58a620616068aea5cf3ec7ab7!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-d3391649e4610c2b14562cfc2377ab63!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-f5208760dd43046c177bd6327c617bd9!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-423ae252e97004af0aeca8f2847eb595!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-0f8ed51262064665971f049ba4cc2209!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3286dafb932e03dc10ce41bc2073903a!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-b5649645b0b3062639003f3c4990faf8!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-afc3cc7dd24208e41400c961193bd475!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-f1336e84c3410a6e1a2b6ffe9c5a2fcd!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3c9f9fed83cf01400b560926010001b2!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-77bd76ad7f6f4599a2fc92699f97cfde!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3d6b35dba21709a63928554d13e59e7a!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7601901019e30ec620abe81fc9a60abc!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-4fdd7d77639701a337b742ef1834d866!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-6fae50656c5d087527e0a546b9323ba6!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-130089a3db8e0d09266c7a05439f6725!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3669be627aed04352e9917402c633aa2!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-946779f292090f7c092c985892bbb25d!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-525c2f44175205c537e15c0ee7d1de02!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-71b7a9e9d2b706a730f75ca6352ca89b!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-df83008abd080ae70c6fd25e021157e4!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-d430ae28516a0f2910210fef3cdde12e!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7fa9b3da46a4063d0cf9257624ead189!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-190bd771d54b014b01497603c3ceb234!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-db8dc63c1c2f05c40e99c4c1dd6d36ce!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-02e44bb3ec0a02c6182d624b42bb38c1!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-fb5619efd94302b83ba292031042a836!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7d3ed9111e9a483c8f24dd9518d57142!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-ea1735fe9370065b34d4b20be5138c43!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-ebbc4e53b30f08e40082d4214a551e40!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-e85ea45481a60cf5234c311bd1cd0b28!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-0bbb9fc29c1807d3276b30ba688e66d4!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-dbd436bd7659098e27a57c46de99f7ba!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-eee67e91637109541a4d5cbdf6696cba!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-e9a9f673ed8702373c1bea771fb1407f!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-86ed7399fcf44923943e633849408201!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-6505a471551341a6a81b6f7bed25b4f5!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-d8f555da265545c383128e6ed9c1a7c4!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7eb58707ecb746bd8c61bdd9f2f2c0c9!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-e0b0b7d6c2b849f6a3e7f79a007b8678!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-6713acad97020a4e1e48c459e10426f2!1-A17362FB20FDB35!sb69115ab5f1348cf92349373682ef8f0",
"0-d5abc54a86000a6b290d02662f01825d!1-A17362FB20FDB35!sb69115ab5f1348cf92349373682ef8f0",
"0-b85dcf2ff1ef082501bca9c82b6c3319!1-A17362FB20FDB35!sb69115ab5f1348cf92349373682ef8f0",
"0-0f2bcf64d0884ed1960833801b7bba6c!1-A17362FB20FDB35!s6378e6e93e044a9e9888b9f96c904154",
"0-9f339cc994e7014c1bc0c45376948f4d!1-A17362FB20FDB35!s6378e6e93e044a9e9888b9f96c904154",
"0-0f2bcf64d0884ed1960833801b7bba6c!1-A17362FB20FDB35!s651e6e4b885946ea97032ebc8ffcdf78",
"0-9f339cc994e7014c1bc0c45376948f4d!1-A17362FB20FDB35!s651e6e4b885946ea97032ebc8ffcdf78",
"0-4030c20a963206411d4aab91473a0dc5!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-a343156939210f0222036ede060df938!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-58c34f2e305f08061cb803f6ee29dfea!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-5059c7489bbd065d22410553734d5116!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-b93a8d5784530e0a1d8c6491879b8328!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-26551afa0cf84a94a175e0981ee7e4c4!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-5c3233b026180c4d3c47d9fed403e401!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-92b24a1469ac000a129b700fc25f67dc!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-02cdaa5b32ee44909e3a4fd0e112f12f!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-bf20b4e5d8b347a2ad0896dbbf9b94df!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-773a640d3329487685b8dbab4e01c7de!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-8c00d24886504e279fcb0324aa62e053!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-4030c20a963206411d4aab91473a0dc5!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-a343156939210f0222036ede060df938!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-58c34f2e305f08061cb803f6ee29dfea!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-5059c7489bbd065d22410553734d5116!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-b93a8d5784530e0a1d8c6491879b8328!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-26551afa0cf84a94a175e0981ee7e4c4!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-5c3233b026180c4d3c47d9fed403e401!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-92b24a1469ac000a129b700fc25f67dc!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-02cdaa5b32ee44909e3a4fd0e112f12f!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-bf20b4e5d8b347a2ad0896dbbf9b94df!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-773a640d3329487685b8dbab4e01c7de!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-8c00d24886504e279fcb0324aa62e053!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-da543a840f1c44f7b1e11e31b7d89903!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-23a815a387c202cd068fcc21c2308823!1-A17362FB20FDB35!s4fe06a34bfdb4fc59d3e518cffe2d739",
"0-acb5e43c5b790dbd2dc5f06a7136b361!1-A17362FB20FDB35!s4fe06a34bfdb4fc59d3e518cffe2d739",
"0-ffffd96e8a7800bb1bd8031f019fb737!1-A17362FB20FDB35!s4fe06a34bfdb4fc59d3e518cffe2d739",
"0-12bdaa42cee104bb2dd00992765797cc!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-acaac477894e07cc05e1413a55e2f06d!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-fcf08052e13f04450e59ae03fd2346ec!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-e17e68afd3c140ada20812fb953a1aa8!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-ed300b667bac010301046b7c558b93f3!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-23046a1f10ee4f9c8f339d63c4dc2187!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-5e6484e4301448e3af76fa8479969fe0!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-12bdaa42cee104bb2dd00992765797cc!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-acaac477894e07cc05e1413a55e2f06d!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-fcf08052e13f04450e59ae03fd2346ec!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-e17e68afd3c140ada20812fb953a1aa8!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-ed300b667bac010301046b7c558b93f3!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-23046a1f10ee4f9c8f339d63c4dc2187!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-5e6484e4301448e3af76fa8479969fe0!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-ce694770f9640ef82a5bca5ef42e12e2!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-bdf53935bc22018127fd1aa8b077eb77!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-99de1069187c08f320a7377fbd01c610!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-9e46756060ba076f1b6e86fc7529c65c!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-c4075ebd90e505e1085deaf065af4c2b!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-345d8ac649cb07273d1b26cfb1868e16!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-f21ba087e698017c22263aa423f41e0f!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-8441e4698a204cc5b1d171ef2d1a0848!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-26747730097a4c1fba7dedd430f5997a!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-220cdfce4c21413097867f2ff001c5ae!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-78a57d5a76f94d4aae399f643f505d94!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-97c4cab2bcd544b79e8668231d687317!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-ee61ce076cec4dc5ac09d84d35d68202!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-c1d8d131d081427d89eacbd25ddb3d56!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-400fe2ba446043779e876a333c3108ed!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-50de44df2d0147e09e63e950cfafc2ba!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-07ab08d03a3d46b09395ddd82295b111!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-ad8df5abe91c400ca7e4f1175c58d940!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-f6f04f03cab44e98987af9981525271b!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-9914eeeb1eb24bec9335a0bcaa0ad083!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-ce694770f9640ef82a5bca5ef42e12e2!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-bdf53935bc22018127fd1aa8b077eb77!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-99de1069187c08f320a7377fbd01c610!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-9e46756060ba076f1b6e86fc7529c65c!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-c4075ebd90e505e1085deaf065af4c2b!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-345d8ac649cb07273d1b26cfb1868e16!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-f21ba087e698017c22263aa423f41e0f!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-8441e4698a204cc5b1d171ef2d1a0848!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-26747730097a4c1fba7dedd430f5997a!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-220cdfce4c21413097867f2ff001c5ae!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-78a57d5a76f94d4aae399f643f505d94!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-97c4cab2bcd544b79e8668231d687317!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931"
]
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-importer",
"name": "Importer",
"version": "1.6.21",
"minAppVersion": "0.15.0",
"description": "Import data from Notion, Evernote, Apple Notes, Microsoft OneNote, Google Keep, Bear, Roam, and HTML files.",
"author": "Obsidian",
"authorUrl": "https://obsidian.md",
"isDesktopOnly": false
}
@@ -0,0 +1,87 @@
.modal.mod-importer {
max-height: var(--modal-height);
padding: var(--size-4-4) 0 0 0;
position: relative;
overflow: hidden;
}
.modal.mod-importer .modal-title {
padding: 0 var(--size-4-4);
}
.modal.mod-importer .modal-content {
overflow: auto;
padding: var(--size-4-4);
margin-bottom: calc(var(--input-height) + var(--size-4-8));
border-top: var(--border-width) solid var(--background-modifier-border);
}
.modal.mod-importer .modal-button-container {
margin: 0 0 0 calc(var(--size-4-4) * -1);
padding: var(--size-4-4);
gap: var(--size-4-2);
position: absolute;
bottom: 0;
background-color: var(--background-primary);
border-top: var(--border-width) solid var(--background-modifier-border);
width: 100%;
}
.importer-progress-bar {
width: 100%;
height: 8px;
background-color: var(--background-secondary);
overflow: hidden;
box-shadow: inset 0px 0px 0px 1px var(--background-modifier-border);
border-radius: var(--radius-s);
}
.importer-progress-bar-inner {
width: 0;
height: 100%;
background-color: var(--interactive-accent);
}
.importer-status {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: var(--size-4-2) 0;
}
.importer-stats-container {
display: flex;
justify-content: space-evenly;
margin-top: var(--size-4-5);
margin-bottom: var(--size-4-5);
}
.importer-stat {
text-align: center;
}
.importer-stat-count {
font-size: var(--font-ui-large);
}
.importer-log {
overflow: auto;
flex-grow: 1;
font-family: var(--font-monospace);
font-size: var(--font-ui-smaller);
color: var(--text-muted);
border: 1px solid var(--background-modifier-border);
padding: var(--size-4-4);
background-color: var(--background-secondary);
border-radius: var(--radius-s);
max-height: 300px;
user-select: text;
}
.importer-log .list-item {
display: inline-block;
line-height: var(--line-height-normal);
white-space: pre;
margin: var(--size-2-1);
}
.importer-error {
color: var(--text-error);
}
@@ -0,0 +1,150 @@
{
"remoteType": "",
"useCustomRequestHandler": false,
"couchDB_URI": "",
"couchDB_USER": "",
"couchDB_PASSWORD": "",
"couchDB_DBNAME": "",
"liveSync": false,
"syncOnSave": false,
"syncOnStart": true,
"savingDelay": 200,
"lessInformationInLog": false,
"gcDelay": 0,
"versionUpFlash": "",
"minimumChunkSize": 20,
"longLineThreshold": 250,
"showVerboseLog": false,
"suspendFileWatching": false,
"trashInsteadDelete": true,
"periodicReplication": true,
"periodicReplicationInterval": 60,
"syncOnFileOpen": true,
"encrypt": true,
"passphrase": "",
"usePathObfuscation": true,
"doNotDeleteFolder": false,
"resolveConflictsByNewerFile": false,
"batchSave": true,
"batchSaveMinimumDelay": 5,
"batchSaveMaximumDelay": 60,
"deviceAndVaultName": "",
"usePluginSettings": false,
"showOwnPlugins": false,
"showStatusOnEditor": true,
"showStatusOnStatusbar": true,
"showOnlyIconsOnEditor": false,
"hideFileWarningNotice": false,
"usePluginSync": false,
"autoSweepPlugins": false,
"autoSweepPluginsPeriodic": false,
"notifyPluginOrSettingUpdated": false,
"checkIntegrityOnSave": false,
"batch_size": 50,
"batches_limit": 50,
"useHistory": true,
"disableRequestURI": true,
"skipOlderFilesOnSync": true,
"checkConflictOnlyOnOpen": false,
"showMergeDialogOnlyOnActive": false,
"syncInternalFiles": false,
"syncInternalFilesBeforeReplication": false,
"syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",
"syncInternalFilesTargetPatterns": "",
"syncInternalFilesInterval": 60,
"additionalSuffixOfDatabaseName": "61fcc0be27d0c623",
"ignoreVersionCheck": false,
"lastReadUpdates": 0,
"deleteMetadataOfDeletedFiles": false,
"syncIgnoreRegEx": "",
"syncOnlyRegEx": "",
"customChunkSize": 50,
"readChunksOnline": true,
"watchInternalFileChanges": true,
"automaticallyDeleteMetadataOfDeletedFiles": 0,
"disableMarkdownAutoMerge": false,
"writeDocumentsIfConflicted": false,
"useDynamicIterationCount": false,
"syncAfterMerge": false,
"configPassphraseStore": "",
"encryptedPassphrase": "%a57e3279017d17a1cc64a3b104000000139d7cc3156fab1f39931c34c76facb0HcSvGbJmxL0ybbCQu85RXc5O5djY6wdJ1KXsx8ip",
"encryptedCouchDBConnection": "%a57e3279017d17a1cc64a3b103000000139d7cc3156fab1f39931c34c76facb0gTnylUguutu7k7/0sHULlu9w9CIrHBsu/b2GC2ZAQXGQ6bV+/5Djl7e7OkmQxcmisv00CbbObJD7a1AWwyKmwtIqxylzVuNTGfAdy4momyNYFjmIdiezrLBULecFjNzOtvy1oDBWBaLKhzQ7F7W7Wq5RgObpIBlOwc95SXkQWj3XdpHMc7I76k6MkOk0O+18nGwayORYaG+gIvRSAAzb7Ny+t+43QEfakTFsmCZLr+dY25cy0wOG1ZtFJQq9tbZgfFK9IiGt1yET4wLPfnRsmy7XrzuwV7IFN6rtPFOR89p3vpXzLb0960cAHidoDZfF3ZG5eOm0vB67btnSMWkPqrqaVREBdRhqji6YPes/DqRujwp898Qm6Py1WJ57/nZC/unT1IGJOf5Coygm7NbqH9pZWayjZ/HYHgLa9BclwvjireS5M9bMMDiTdYlRwWlUU5VXoiJ7144EURI9zWKf+BufWGtsWZ+Mg0N56J/PPkOEF8Huk/aZZq0kgFKqqjO292tfL5GcxzcFWyW+w01yKsmFATrxsQ47gRvVMyp8JcJvtQt1bXfpkvG1nnGOcC6DBPJs4xzF3mA=",
"permitEmptyPassphrase": false,
"useIndexedDBAdapter": true,
"useTimeouts": false,
"writeLogToTheFile": false,
"doNotPaceReplication": false,
"hashCacheMaxCount": 300,
"hashCacheMaxAmount": 50,
"concurrencyOfReadChunksOnline": 100,
"minimumIntervalOfReadChunksOnline": 100,
"hashAlg": "xxhash64",
"suspendParseReplicationResult": false,
"doNotSuspendOnFetching": false,
"useIgnoreFiles": false,
"ignoreFiles": ".gitignore",
"syncOnEditorSave": false,
"pluginSyncExtendedSetting": {},
"syncMaxSizeInMB": 50,
"settingSyncFile": "",
"writeCredentialsForSettingSync": false,
"notifyAllSettingSyncFile": false,
"isConfigured": true,
"settingVersion": 10,
"enableCompression": false,
"accessKey": "",
"bucket": "",
"endpoint": "",
"region": "",
"secretKey": "",
"useEden": false,
"maxChunksInEden": 10,
"maxTotalLengthInEden": 1024,
"maxAgeInEden": 10,
"disableCheckingConfigMismatch": false,
"displayLanguage": "def",
"enableChunkSplitterV2": false,
"disableWorkerForGeneratingChunks": false,
"processSmallFilesInUIThread": false,
"notifyThresholdOfRemoteStorageSize": 800,
"usePluginSyncV2": false,
"usePluginEtc": false,
"handleFilenameCaseSensitive": false,
"doNotUseFixedRevisionForChunks": true,
"showLongerLogInsideEditor": false,
"sendChunksBulk": false,
"sendChunksBulkMaxSize": 1,
"useSegmenter": false,
"useAdvancedMode": false,
"usePowerUserMode": false,
"useEdgeCaseMode": false,
"enableDebugTools": false,
"suppressNotifyHiddenFilesChange": false,
"syncMinimumInterval": 2000,
"P2P_Enabled": false,
"P2P_AutoAccepting": 0,
"P2P_AppID": "self-hosted-livesync",
"P2P_roomID": "",
"P2P_passphrase": "",
"P2P_relays": "wss://exp-relay.vrtmrz.net/",
"P2P_AutoBroadcast": false,
"P2P_AutoStart": false,
"P2P_AutoSyncPeers": "",
"P2P_AutoWatchPeers": "",
"P2P_SyncOnReplication": "",
"P2P_RebuildFrom": "",
"P2P_AutoAcceptingPeers": "",
"P2P_AutoDenyingPeers": "",
"P2P_IsHeadless": false,
"doctorProcessedVersion": "0.24.16",
"bucketCustomHeaders": "",
"couchDB_CustomHeaders": "",
"useJWT": false,
"jwtAlgorithm": "",
"jwtKey": "",
"jwtKid": "",
"jwtSub": "",
"jwtExpDuration": 5,
"useRequestAPI": false,
"bucketPrefix": ""
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.24.28",
"minAppVersion": "0.9.12",
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
"author": "vorotamoroz",
"authorUrl": "https://github.com/vrtmrz",
"isDesktopOnly": false
}
@@ -0,0 +1,454 @@
.added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.normal {
color: var(--text-normal);
}
.deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
}
.op-scrollable {
overflow-y: scroll;
/* min-height: 280px; */
max-height: 280px;
user-select: text;
-webkit-user-select: text;
}
.op-pre {
white-space: pre-wrap;
}
.op-warn {
border: 1px solid salmon;
padding: 2px;
border-radius: 4px;
}
.op-warn::before {
content: "Warning";
font-weight: bold;
color: salmon;
position: relative;
display: block;
}
.op-warn-info {
border: 1px solid rgb(255, 209, 81);
padding: 2px;
border-radius: 4px;
}
.op-warn-info::before {
content: "Notice";
font-weight: bold;
color: rgb(255, 209, 81);
position: relative;
display: block;
}
.syncstatusbar {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.tcenter {
text-align: center;
}
.sls-plugins-wrap {
display: flex;
flex-grow: 1;
max-height: 50vh;
overflow-y: scroll;
}
.sls-plugins-tbl {
border: 1px solid var(--background-modifier-border);
width: 100%;
max-height: 80%;
}
.divider th {
border-top: 1px solid var(--background-modifier-border);
}
.sls-header-button {
margin-left: 2em;
}
.sls-hidden {
display: none;
}
:root {
--sls-log-text: "";
}
.sls-troubleshoot-preview {
max-width: max-content;
}
.sls-troubleshoot-preview img {
max-width: 100%;
}
.sls-setting-tab {
display: none;
}
div.sls-setting-menu-btn {
color: var(--text-normal);
background-color: var(--background-secondary-alt);
border-radius: 4px 4px 0 0;
padding: 6px 10px;
cursor: pointer;
margin-right: 12px;
font-family: "Inter", sans-serif;
outline: none;
user-select: none;
flex-grow: 1;
text-align: center;
flex-shrink: 1;
}
.sls-setting-label.selected {
/* order: 1; */
flex-grow: 1;
/* width: 100%; */
}
.sls-setting-tab:hover~div.sls-setting-menu-btn,
.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
background-color: var(--interactive-accent);
color: var(--text-on-accent);
}
.sls-setting-menu-wrapper {
display: flex;
flex-direction: column;
flex-grow: 1;
position: sticky;
top: 0;
background-color: rgba(var(--background-primary), 0.3);
backdrop-filter: blur(4px);
border-radius: 4px;
z-index: 10;
}
.sls-setting-menu {
display: flex;
flex-direction: row;
overflow-x: auto;
}
body {
--sls-col-transparent: transparent;
--sls-col-warn: rgba(var(--background-modifier-error-rgb), 0.1);
--sls-col-warn-stripe1: var(--sls-col-transparent);
--sls-col-warn-stripe2: var(--sls-col-warn);
}
.sls-setting-menu-buttons {
border: 1px solid var(--sls-col-warn);
padding: 2px;
margin: 1px;
border-radius: 4px;
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-size: 30px 30px;
display: flex;
flex-direction: row;
justify-content: flex-end;
padding: 0.5em 0.25em;
justify-content: center;
align-items: center;
/* transition: background-position 1s; */
animation: sls-scroll-warn 1s linear 0s infinite;
}
@keyframes sls-scroll-warn {
0% {
background-position: 0 0;
}
100% {
background-position: 30px 0;
}
}
.sls-setting-menu-buttons label {
margin-right: auto;
flex-grow: 1;
color: var(--text-warning);
}
.sls-setting-label {
flex-grow: 1;
display: inline-flex;
justify-content: center;
}
.setting-collapsed {
display: none;
}
.sls-plugins-tbl-buttons {
text-align: right;
}
.sls-plugins-tbl-buttons button {
flex-grow: 0;
padding: 6px 10px;
}
.sls-plugins-tbl-device-head {
background-color: var(--background-secondary-alt);
color: var(--text-accent);
}
.op-flex {
display: flex;
}
.op-flex input {
display: inline-flex;
flex-grow: 1;
margin-bottom: 8px;
}
.op-info {
display: inline-flex;
flex-grow: 1;
border-bottom: 1px solid var(--background-modifier-border);
width: 100%;
margin-bottom: 4px;
padding-bottom: 4px;
}
.history-added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.history-normal {
color: var(--text-normal);
}
.history-deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
text-decoration: line-through;
}
.ob-btn-config-fix label {
margin-right: 40px;
}
.ob-btn-config-info {
border: 1px solid salmon;
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.ob-btn-config-head {
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.isWizard .wizardHidden {
display: none;
}
.sls-setting:not(.isWizard) .wizardOnly {
display: none;
}
.sls-item-dirty::before {
content: "✏";
}
.sls-item-dirty-help::after {
content: " ❓";
}
.sls-item-invalid-value {
background-color: rgba(var(--background-modifier-error-rgb), 0.3) !important;
}
.sls-setting-disabled input[type=text],
.sls-setting-disabled input[type=number],
.sls-setting-disabled input[type=password] {
filter: brightness(80%);
color: var(--text-muted);
}
.sls-setting-hidden {
display: none;
}
.sls-setting-obsolete {
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-image: linear-gradient(-45deg,
transparent 25%, rgba(var(--background-secondary), 0.1) 25%, rgba(var(--background-secondary), 0.1) 50%, transparent 50%, transparent 75%, rgba(var(--background-secondary), 0.1) 75%, rgba(var(--background-secondary), 0.1));
background-size: 60px 60px;
}
.password-input>.setting-item-control>input {
-webkit-text-security: disc;
}
span.ls-mark-cr::after {
user-select: none;
content: "↲";
color: var(--text-muted);
font-size: 0.8em;
}
.deleted span.ls-mark-cr::after {
color: var(--text-on-accent);
}
.ls-imgdiff-wrap {
display: flex;
justify-content: center;
align-items: center;
}
.ls-imgdiff-wrap .overlay {
position: relative;
}
.ls-imgdiff-wrap .overlay .img-base {
position: relative;
top: 0;
left: 0;
}
.ls-imgdiff-wrap .overlay .img-overlay {
-webkit-filter: invert(100%) opacity(50%);
filter: invert(100%) opacity(50%);
position: absolute;
top: 0;
left: 0;
animation: ls-blink-diff 0.5s cubic-bezier(0.4, 0, 1, 1) infinite alternate;
}
@keyframes ls-blink-diff {
0% {
opacity: 0;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.livesync-status {
user-select: none;
pointer-events: none;
height: auto;
min-height: 1em;
position: absolute;
background-color: transparent;
width: 100%;
padding: 10px;
padding-right: 16px;
top: var(--header-height);
z-index: calc(var(--layer-cover) + 1);
font-variant-numeric: tabular-nums;
tab-size: 4;
text-align: right;
white-space: pre-wrap;
display: inline-block;
color: var(--text-normal);
font-size: 80%;
}
.livesync-status div {
opacity: 0.6;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.livesync-status .livesync-status-loghistory {
text-align: left;
opacity: 0.4;
}
.livesync-status div.livesync-status-messagearea {
opacity: 0.6;
color: var(--text-on-accent);
background: var(--background-modifier-error);
-webkit-filter: unset;
filter: unset;
}
.menu-setting-poweruser-disabled .sls-setting-poweruser {
display: none;
}
.menu-setting-advanced-disabled .sls-setting-advanced {
display: none;
}
.menu-setting-edgecase-disabled .sls-setting-edgecase {
display: none;
}
.sls-setting-panel-title {
position: sticky;
}
.sls-setting-panel-title {
top: 2em;
background-color: rgba(var(--background-primary), 0.3);
backdrop-filter: blur(4px);
border-radius: 30%;
}
.sls-dialogue-note-wrapper {
display: flex;
justify-content: flex-end;
align-items: center;
}
.sls-dialogue-note-countdown {
font-size: 0.8em;
}
.sls-qr {
display: flex;
justify-content: center;
align-items: center;
max-width: max-content;
}
.sls-keypair pre {
max-width: 100%;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-local-rest-api",
"name": "Local REST API with MCP",
"version": "4.1.3",
"minAppVersion": "1.4.0",
"description": "A secure REST API and Model Context Protocol (MCP) server for your vault.",
"author": "Adam Coddington",
"authorUrl": "https://adamcoddington.net/",
"isDesktopOnly": true
}
@@ -0,0 +1,55 @@
/* 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 pre {
font-size: 0.8em;
padding: 10px 20px;
margin: 10px 25px;
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;
}
div.obsidian-local-rest-api-settings p {
padding: 0px 15px;
}
@@ -0,0 +1,944 @@
/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD */
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// package.json
var require_package = __commonJS({
"package.json"(exports, module2) {
module2.exports = {
name: "obsidian-paste-image-rename",
version: "1.6.1",
main: "main.js",
scripts: {
start: "node esbuild.config.mjs",
build: "tsc -noEmit -skipLibCheck && BUILD_ENV=production node esbuild.config.mjs && cp manifest.json build",
version: "node version-bump.mjs && git add manifest.json versions.json",
release: "npm run build && gh release create ${npm_package_version} build/*"
},
keywords: [],
author: "Reorx",
license: "MIT",
devDependencies: {
"@types/node": "^18.11.18",
"@typescript-eslint/eslint-plugin": "^5.49.0",
"@typescript-eslint/parser": "^5.49.0",
"builtin-modules": "^3.3.0",
esbuild: "0.16.17",
obsidian: "^1.1.1",
tslib: "2.5.0",
typescript: "4.9.4"
},
dependencies: {
"cash-dom": "^8.1.2"
}
};
}
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => PasteImageRenamePlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian2 = require("obsidian");
// src/batch.ts
var import_obsidian = require("obsidian");
// src/utils.ts
var DEBUG = false;
if (DEBUG)
console.log("DEBUG is enabled");
function debugLog(...args) {
if (DEBUG) {
console.log(new Date().toISOString().slice(11, 23), ...args);
}
}
function createElementTree(rootEl, opts) {
const result = {
el: rootEl.createEl(opts.tag, opts),
children: []
};
const children = opts.children || [];
for (const child of children) {
result.children.push(createElementTree(result.el, child));
}
return result;
}
var path = {
// Credit: @creationix/path.js
join(...partSegments) {
let parts = [];
for (let i = 0, l = partSegments.length; i < l; i++) {
parts = parts.concat(partSegments[i].split("/"));
}
const newParts = [];
for (let i = 0, l = parts.length; i < l; i++) {
const part = parts[i];
if (!part || part === ".")
continue;
else
newParts.push(part);
}
if (parts[0] === "")
newParts.unshift("");
return newParts.join("/");
},
// returns the last part of a path, e.g. 'foo.jpg'
basename(fullpath) {
const sp = fullpath.split("/");
return sp[sp.length - 1];
},
// return extension without dot, e.g. 'jpg'
extension(fullpath) {
const positions = [...fullpath.matchAll(new RegExp("\\.", "gi"))].map((a) => a.index);
return fullpath.slice(positions[positions.length - 1] + 1);
}
};
var filenameNotAllowedChars = /[^\p{L}0-9~`!@$&*()\-_=+{};'",<.>? ]/ug;
var sanitizer = {
filename(s) {
return s.replace(filenameNotAllowedChars, "").trim();
},
delimiter(s) {
s = this.filename(s);
if (!s)
s = "-";
return s;
}
};
function escapeRegExp(s) {
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function lockInputMethodComposition(el) {
const state = {
lock: false
};
el.addEventListener("compositionstart", () => {
state.lock = true;
});
el.addEventListener("compositionend", () => {
state.lock = false;
});
return state;
}
// src/batch.ts
var ImageBatchRenameModal = class extends import_obsidian.Modal {
constructor(app, activeFile, renameFunc, onClose) {
super(app);
this.activeFile = activeFile;
this.renameFunc = renameFunc;
this.onCloseExtra = onClose;
this.state = {
namePattern: "",
extPattern: "",
nameReplace: "",
renameTasks: []
};
}
onOpen() {
this.containerEl.addClass("image-rename-modal");
const { contentEl, titleEl } = this;
titleEl.setText("Batch rename embeded files");
const namePatternSetting = new import_obsidian.Setting(contentEl).setName("Name pattern").setDesc("Please input the name pattern to match files (regex)").addText((text) => text.setValue(this.state.namePattern).onChange(
(value) => __async(this, null, function* () {
this.state.namePattern = value;
})
));
const npInputEl = namePatternSetting.controlEl.children[0];
npInputEl.focus();
const npInputState = lockInputMethodComposition(npInputEl);
npInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && !npInputState.lock) {
e.preventDefault();
if (!this.state.namePattern) {
errorEl.innerText = 'Error: "Name pattern" could not be empty';
errorEl.style.display = "block";
return;
}
this.matchImageNames(tbodyEl);
}
}));
const extPatternSetting = new import_obsidian.Setting(contentEl).setName("Extension pattern").setDesc("Please input the extension pattern to match files (regex)").addText((text) => text.setValue(this.state.extPattern).onChange(
(value) => __async(this, null, function* () {
this.state.extPattern = value;
})
));
const extInputEl = extPatternSetting.controlEl.children[0];
extInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter") {
e.preventDefault();
this.matchImageNames(tbodyEl);
}
}));
const nameReplaceSetting = new import_obsidian.Setting(contentEl).setName("Name replace").setDesc("Please input the string to replace the matched name (use $1, $2 for regex groups)").addText((text) => text.setValue(this.state.nameReplace).onChange(
(value) => __async(this, null, function* () {
this.state.nameReplace = value;
})
));
const nrInputEl = nameReplaceSetting.controlEl.children[0];
const nrInputState = lockInputMethodComposition(nrInputEl);
nrInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && !nrInputState.lock) {
e.preventDefault();
this.matchImageNames(tbodyEl);
}
}));
const matchedContainer = contentEl.createDiv({
cls: "matched-container"
});
const tableET = createElementTree(matchedContainer, {
tag: "table",
children: [
{
tag: "thead",
children: [
{
tag: "tr",
children: [
{
tag: "td",
text: "Original path"
},
{
tag: "td",
text: "Renamed Name"
}
]
}
]
},
{
tag: "tbody"
}
]
});
const tbodyEl = tableET.children[1].el;
const errorEl = contentEl.createDiv({
cls: "error",
attr: {
style: "display: none;"
}
});
new import_obsidian.Setting(contentEl).addButton((button) => {
button.setButtonText("Rename all").setClass("mod-cta").onClick(() => {
new ConfirmModal(
this.app,
"Confirm rename all",
`Are you sure? This will rename all the ${this.state.renameTasks.length} images matched the pattern.`,
() => {
this.renameAll();
this.close();
}
).open();
});
}).addButton((button) => {
button.setButtonText("Cancel").onClick(() => {
this.close();
});
});
}
onClose() {
const { contentEl } = this;
contentEl.empty();
this.onCloseExtra();
}
renameAll() {
return __async(this, null, function* () {
debugLog("renameAll", this.state);
for (const task of this.state.renameTasks) {
yield this.renameFunc(task.file, task.name);
}
});
}
matchImageNames(tbodyEl) {
const { state } = this;
const renameTasks = [];
tbodyEl.empty();
const fileCache = this.app.metadataCache.getFileCache(this.activeFile);
if (!fileCache || !fileCache.embeds)
return;
const namePatternRegex = new RegExp(state.namePattern, "g");
const extPatternRegex = new RegExp(state.extPattern);
fileCache.embeds.forEach((embed) => {
const file = this.app.metadataCache.getFirstLinkpathDest(embed.link, this.activeFile.path);
if (!file) {
console.warn("file not found", embed.link);
return;
}
if (state.extPattern) {
const m0 = extPatternRegex.exec(file.extension);
if (!m0)
return;
}
const stem = file.basename;
namePatternRegex.lastIndex = 0;
const m1 = namePatternRegex.exec(stem);
if (!m1)
return;
let renamedName = file.name;
if (state.nameReplace) {
namePatternRegex.lastIndex = 0;
renamedName = stem.replace(namePatternRegex, state.nameReplace);
renamedName = `${renamedName}.${file.extension}`;
}
renameTasks.push({
file,
name: renamedName
});
createElementTree(tbodyEl, {
tag: "tr",
children: [
{
tag: "td",
children: [
{
tag: "span",
text: file.name
},
{
tag: "div",
text: file.path,
attr: {
class: "file-path"
}
}
]
},
{
tag: "td",
children: [
{
tag: "span",
text: renamedName
},
{
tag: "div",
text: path.join(file.parent.path, renamedName),
attr: {
class: "file-path"
}
}
]
}
]
});
});
debugLog("new renameTasks", renameTasks);
state.renameTasks = renameTasks;
}
};
var ConfirmModal = class extends import_obsidian.Modal {
constructor(app, title, message, onConfirm) {
super(app);
this.title = title;
this.message = message;
this.onConfirm = onConfirm;
}
onOpen() {
const { contentEl, titleEl } = this;
titleEl.setText(this.title);
contentEl.createEl("p", {
text: this.message
});
new import_obsidian.Setting(contentEl).addButton((button) => {
button.setButtonText("Yes").setClass("mod-warning").onClick(() => {
this.onConfirm();
this.close();
});
}).addButton((button) => {
button.setButtonText("No").onClick(() => {
this.close();
});
});
}
};
// src/template.ts
var dateTmplRegex = /{{DATE:([^}]+)}}/gm;
var frontmatterTmplRegex = /{{frontmatter:([^}]+)}}/gm;
var replaceDateVar = (s, date) => {
const m = dateTmplRegex.exec(s);
if (!m)
return s;
return s.replace(m[0], date.format(m[1]));
};
var replaceFrontmatterVar = (s, frontmatter) => {
if (!frontmatter)
return s;
const m = frontmatterTmplRegex.exec(s);
if (!m)
return s;
return s.replace(m[0], frontmatter[m[1]] || "");
};
var renderTemplate = (tmpl, data, frontmatter) => {
const now = window.moment();
let text = tmpl;
let newtext;
while ((newtext = replaceDateVar(text, now)) != text) {
text = newtext;
}
while ((newtext = replaceFrontmatterVar(text, frontmatter)) != text) {
text = newtext;
}
text = text.replace(/{{imageNameKey}}/gm, data.imageNameKey).replace(/{{fileName}}/gm, data.fileName).replace(/{{dirName}}/gm, data.dirName).replace(/{{firstHeading}}/gm, data.firstHeading);
return text;
};
// src/main.ts
var DEFAULT_SETTINGS = {
imageNamePattern: "{{fileName}}",
dupNumberAtStart: false,
dupNumberDelimiter: "-",
dupNumberAlways: false,
autoRename: false,
handleAllAttachments: false,
excludeExtensionPattern: "",
disableRenameNotice: false
};
var PASTED_IMAGE_PREFIX = "Pasted image ";
var PasteImageRenamePlugin = class extends import_obsidian2.Plugin {
constructor() {
super(...arguments);
this.modals = [];
}
onload() {
return __async(this, null, function* () {
const pkg = require_package();
console.log(`Plugin loading: ${pkg.name} ${pkg.version} BUILD_ENV=${"production"}`);
yield this.loadSettings();
this.registerEvent(
this.app.vault.on("create", (file) => {
if (!(file instanceof import_obsidian2.TFile))
return;
const timeGapMs = new Date().getTime() - file.stat.ctime;
if (timeGapMs > 1e3)
return;
if (isMarkdownFile(file))
return;
if (isPastedImage(file)) {
debugLog("pasted image created", file);
this.startRenameProcess(file, this.settings.autoRename);
} else {
if (this.settings.handleAllAttachments) {
debugLog("handleAllAttachments for file", file);
if (this.testExcludeExtension(file)) {
debugLog("excluded file by ext", file);
return;
}
this.startRenameProcess(file, this.settings.autoRename);
}
}
})
);
const startBatchRenameProcess = () => {
this.openBatchRenameModal();
};
this.addCommand({
id: "batch-rename-embeded-files",
name: "Batch rename embeded files (in the current file)",
callback: startBatchRenameProcess
});
if (DEBUG) {
this.addRibbonIcon("wand-glyph", "Batch rename embeded files", startBatchRenameProcess);
}
const batchRenameAllImages = () => {
this.batchRenameAllImages();
};
this.addCommand({
id: "batch-rename-all-images",
name: "Batch rename all images instantly (in the current file)",
callback: batchRenameAllImages
});
if (DEBUG) {
this.addRibbonIcon("wand-glyph", "Batch rename all images instantly (in the current file)", batchRenameAllImages);
}
this.addSettingTab(new SettingTab(this.app, this));
});
}
startRenameProcess(file, autoRename = false) {
return __async(this, null, function* () {
const activeFile = this.getActiveFile();
if (!activeFile) {
new import_obsidian2.Notice("Error: No active file found.");
return;
}
const { stem, newName, isMeaningful } = this.generateNewName(file, activeFile);
debugLog("generated newName:", newName, isMeaningful);
if (!isMeaningful || !autoRename) {
this.openRenameModal(file, isMeaningful ? stem : "", activeFile.path);
return;
}
this.renameFile(file, newName, activeFile.path, true);
});
}
renameFile(file, inputNewName, sourcePath, replaceCurrentLine) {
return __async(this, null, function* () {
const { name: newName } = yield this.deduplicateNewName(inputNewName, file);
debugLog("deduplicated newName:", newName);
const originName = file.name;
const linkText = this.app.fileManager.generateMarkdownLink(file, sourcePath);
const newPath = path.join(file.parent.path, newName);
try {
yield this.app.fileManager.renameFile(file, newPath);
} catch (err) {
new import_obsidian2.Notice(`Failed to rename ${newName}: ${err}`);
throw err;
}
if (!replaceCurrentLine) {
return;
}
const newLinkText = this.app.fileManager.generateMarkdownLink(file, sourcePath);
debugLog("replace text", linkText, newLinkText);
const editor = this.getActiveEditor();
if (!editor) {
new import_obsidian2.Notice(`Failed to rename ${newName}: no active editor`);
return;
}
const cursor = editor.getCursor();
const line = editor.getLine(cursor.line);
const replacedLine = line.replace(linkText, newLinkText);
debugLog("current line -> replaced line", line, replacedLine);
editor.transaction({
changes: [
{
from: __spreadProps(__spreadValues({}, cursor), { ch: 0 }),
to: __spreadProps(__spreadValues({}, cursor), { ch: line.length }),
text: replacedLine
}
]
});
if (!this.settings.disableRenameNotice) {
new import_obsidian2.Notice(`Renamed ${originName} to ${newName}`);
}
});
}
openRenameModal(file, newName, sourcePath) {
const modal = new ImageRenameModal(
this.app,
file,
newName,
(confirmedName) => {
debugLog("confirmedName:", confirmedName);
this.renameFile(file, confirmedName, sourcePath, true);
},
() => {
this.modals.splice(this.modals.indexOf(modal), 1);
}
);
this.modals.push(modal);
modal.open();
debugLog("modals count", this.modals.length);
}
openBatchRenameModal() {
const activeFile = this.getActiveFile();
const modal = new ImageBatchRenameModal(
this.app,
activeFile,
(file, name) => __async(this, null, function* () {
yield this.renameFile(file, name, activeFile.path);
}),
() => {
this.modals.splice(this.modals.indexOf(modal), 1);
}
);
this.modals.push(modal);
modal.open();
}
batchRenameAllImages() {
return __async(this, null, function* () {
const activeFile = this.getActiveFile();
const fileCache = this.app.metadataCache.getFileCache(activeFile);
if (!fileCache || !fileCache.embeds)
return;
const extPatternRegex = /jpe?g|png|gif|tiff|webp/i;
for (const embed of fileCache.embeds) {
const file = this.app.metadataCache.getFirstLinkpathDest(embed.link, activeFile.path);
if (!file) {
console.warn("file not found", embed.link);
return;
}
const m0 = extPatternRegex.exec(file.extension);
if (!m0)
return;
const { newName, isMeaningful } = this.generateNewName(file, activeFile);
debugLog("generated newName:", newName, isMeaningful);
if (!isMeaningful) {
new import_obsidian2.Notice("Failed to batch rename images: the generated name is not meaningful");
break;
}
yield this.renameFile(file, newName, activeFile.path, false);
}
});
}
// returns a new name for the input file, with extension
generateNewName(file, activeFile) {
let imageNameKey = "";
let firstHeading = "";
let frontmatter;
const fileCache = this.app.metadataCache.getFileCache(activeFile);
if (fileCache) {
debugLog("frontmatter", fileCache.frontmatter);
frontmatter = fileCache.frontmatter;
imageNameKey = (frontmatter == null ? void 0 : frontmatter.imageNameKey) || "";
firstHeading = getFirstHeading(fileCache.headings);
} else {
console.warn("could not get file cache from active file", activeFile.name);
}
const stem = renderTemplate(
this.settings.imageNamePattern,
{
imageNameKey,
fileName: activeFile.basename,
dirName: activeFile.parent.name,
firstHeading
},
frontmatter
);
const meaninglessRegex = new RegExp(`[${this.settings.dupNumberDelimiter}\\s]`, "gm");
return {
stem,
newName: stem + "." + file.extension,
isMeaningful: stem.replace(meaninglessRegex, "") !== ""
};
}
// newName: foo.ext
deduplicateNewName(newName, file) {
return __async(this, null, function* () {
const dir = file.parent.path;
const listed = yield this.app.vault.adapter.list(dir);
debugLog("sibling files", listed);
const newNameExt = path.extension(newName), newNameStem = newName.slice(0, newName.length - newNameExt.length - 1), newNameStemEscaped = escapeRegExp(newNameStem), delimiter = this.settings.dupNumberDelimiter, delimiterEscaped = escapeRegExp(delimiter);
let dupNameRegex;
if (this.settings.dupNumberAtStart) {
dupNameRegex = new RegExp(
`^(?<number>\\d+)${delimiterEscaped}(?<name>${newNameStemEscaped})\\.${newNameExt}$`
);
} else {
dupNameRegex = new RegExp(
`^(?<name>${newNameStemEscaped})${delimiterEscaped}(?<number>\\d+)\\.${newNameExt}$`
);
}
debugLog("dupNameRegex", dupNameRegex);
const dupNameNumbers = [];
let isNewNameExist = false;
for (let sibling of listed.files) {
sibling = path.basename(sibling);
if (sibling == newName) {
isNewNameExist = true;
continue;
}
const m = dupNameRegex.exec(sibling);
if (!m)
continue;
dupNameNumbers.push(parseInt(m.groups.number));
}
if (isNewNameExist || this.settings.dupNumberAlways) {
const newNumber = dupNameNumbers.length > 0 ? Math.max(...dupNameNumbers) + 1 : 1;
if (this.settings.dupNumberAtStart) {
newName = `${newNumber}${delimiter}${newNameStem}.${newNameExt}`;
} else {
newName = `${newNameStem}${delimiter}${newNumber}.${newNameExt}`;
}
}
return {
name: newName,
stem: newName.slice(0, newName.length - newNameExt.length - 1),
extension: newNameExt
};
});
}
getActiveFile() {
const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
const file = view == null ? void 0 : view.file;
debugLog("active file", file == null ? void 0 : file.path);
return file;
}
getActiveEditor() {
const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
return view == null ? void 0 : view.editor;
}
onunload() {
this.modals.map((modal) => modal.close());
}
testExcludeExtension(file) {
const pattern = this.settings.excludeExtensionPattern;
if (!pattern)
return false;
return new RegExp(pattern).test(file.extension);
}
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
};
function getFirstHeading(headings) {
if (headings && headings.length > 0) {
for (const heading of headings) {
if (heading.level === 1) {
return heading.heading;
}
}
}
return "";
}
function isPastedImage(file) {
if (file instanceof import_obsidian2.TFile) {
if (file.name.startsWith(PASTED_IMAGE_PREFIX)) {
return true;
}
}
return false;
}
function isMarkdownFile(file) {
if (file instanceof import_obsidian2.TFile) {
if (file.extension === "md") {
return true;
}
}
return false;
}
var ImageRenameModal = class extends import_obsidian2.Modal {
constructor(app, src, stem, renameFunc, onClose) {
super(app);
this.src = src;
this.stem = stem;
this.renameFunc = renameFunc;
this.onCloseExtra = onClose;
}
onOpen() {
this.containerEl.addClass("image-rename-modal");
const { contentEl, titleEl } = this;
titleEl.setText("Rename image");
const imageContainer = contentEl.createDiv({
cls: "image-container"
});
imageContainer.createEl("img", {
attr: {
src: this.app.vault.getResourcePath(this.src)
}
});
let stem = this.stem;
const ext = this.src.extension;
const getNewName = (stem2) => stem2 + "." + ext;
const getNewPath = (stem2) => path.join(this.src.parent.path, getNewName(stem2));
const infoET = createElementTree(contentEl, {
tag: "ul",
cls: "info",
children: [
{
tag: "li",
children: [
{
tag: "span",
text: "Origin path"
},
{
tag: "span",
text: this.src.path
}
]
},
{
tag: "li",
children: [
{
tag: "span",
text: "New path"
},
{
tag: "span",
text: getNewPath(stem)
}
]
}
]
});
const doRename = () => __async(this, null, function* () {
debugLog("doRename", `stem=${stem}`);
this.renameFunc(getNewName(stem));
});
const nameSetting = new import_obsidian2.Setting(contentEl).setName("New name").setDesc("Please input the new name for the image (without extension)").addText((text) => text.setValue(stem).onChange(
(value) => __async(this, null, function* () {
stem = sanitizer.filename(value);
infoET.children[1].children[1].el.innerText = getNewPath(stem);
})
));
const nameInputEl = nameSetting.controlEl.children[0];
nameInputEl.focus();
const nameInputState = lockInputMethodComposition(nameInputEl);
nameInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && !nameInputState.lock) {
e.preventDefault();
if (!stem) {
errorEl.innerText = 'Error: "New name" could not be empty';
errorEl.style.display = "block";
return;
}
doRename();
this.close();
}
}));
const errorEl = contentEl.createDiv({
cls: "error",
attr: {
style: "display: none;"
}
});
new import_obsidian2.Setting(contentEl).addButton((button) => {
button.setButtonText("Rename").onClick(() => {
doRename();
this.close();
});
}).addButton((button) => {
button.setButtonText("Cancel").onClick(() => {
this.close();
});
});
}
onClose() {
const { contentEl } = this;
contentEl.empty();
this.onCloseExtra();
}
};
var imageNamePatternDesc = `
The pattern indicates how the new name should be generated.
Available variables:
- {{fileName}}: name of the active file, without ".md" extension.
- {{imageNameKey}}: this variable is read from the markdown file's frontmatter, from the same key "imageNameKey".
- {{DATE:$FORMAT}}: use "$FORMAT" to format the current date, "$FORMAT" must be a Moment.js format string, e.g. {{DATE:YYYY-MM-DD}}.
Here are some examples from pattern to image names (repeat in sequence), variables: fileName = "My note", imageNameKey = "foo":
- {{fileName}}: My note, My note-1, My note-2
- {{imageNameKey}}: foo, foo-1, foo-2
- {{imageNameKey}}-{{DATE:YYYYMMDD}}: foo-20220408, foo-20220408-1, foo-20220408-2
`;
var SettingTab = class extends import_obsidian2.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
new import_obsidian2.Setting(containerEl).setName("Image name pattern").setDesc(imageNamePatternDesc).setClass("long-description-setting-item").addText((text) => text.setPlaceholder("{{imageNameKey}}").setValue(this.plugin.settings.imageNamePattern).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.imageNamePattern = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Duplicate number at start (or end)").setDesc(`If enabled, duplicate number will be added at the start as prefix for the image name, otherwise it will be added at the end as suffix for the image name.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.dupNumberAtStart).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.dupNumberAtStart = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Duplicate number delimiter").setDesc(`The delimiter to generate the number prefix/suffix for duplicated names. For example, if the value is "-", the suffix will be like "-1", "-2", "-3", and the prefix will be like "1-", "2-", "3-". Only characters that are valid in file names are allowed.`).addText((text) => text.setValue(this.plugin.settings.dupNumberDelimiter).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.dupNumberDelimiter = sanitizer.delimiter(value);
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Always add duplicate number").setDesc(`If enabled, duplicate number will always be added to the image name. Otherwise, it will only be added when the name is duplicated.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.dupNumberAlways).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.dupNumberAlways = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Auto rename").setDesc(`By default, the rename modal will always be shown to confirm before renaming, if this option is set, the image will be auto renamed after pasting.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.autoRename).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.autoRename = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Handle all attachments").setDesc(`By default, the plugin only handles images that starts with "Pasted image " in name,
which is the prefix Obsidian uses to create images from pasted content.
If this option is set, the plugin will handle all attachments that are created in the vault.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.handleAllAttachments).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.handleAllAttachments = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Exclude extension pattern").setDesc(`This option is only useful when "Handle all attachments" is enabled.
Write a Regex pattern to exclude certain extensions from being handled. Only the first line will be used.`).setClass("single-line-textarea").addTextArea((text) => text.setPlaceholder("docx?|xlsx?|pptx?|zip|rar").setValue(this.plugin.settings.excludeExtensionPattern).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.excludeExtensionPattern = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Disable rename notice").setDesc(`Turn off this option if you don't want to see the notice when renaming images.
Note that Obsidian may display a notice when a link has changed, this option cannot disable that.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.disableRenameNotice).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.disableRenameNotice = value;
yield this.plugin.saveSettings();
})
));
}
};
/* nosourcemap */
@@ -0,0 +1,10 @@
{
"id": "obsidian-paste-image-rename",
"name": "Paste image rename",
"version": "1.6.1",
"minAppVersion": "0.12.0",
"description": "Rename pasted images and all the other attchments added to the vault",
"author": "Reorx",
"authorUrl": "https://github.com/reorx",
"isDesktopOnly": false
}
@@ -0,0 +1,79 @@
/* src/styles.css */
:root {
--shadow-color: 0deg 0% 0%;
--shadow-elevation-medium:
0.5px 0.5px 0.7px hsl(var(--shadow-color) / 0.14),
1.1px 1.1px 1.5px -0.9px hsl(var(--shadow-color) / 0.12),
2.4px 2.5px 3.3px -1.8px hsl(var(--shadow-color) / 0.1),
5.3px 5.6px 7.3px -2.7px hsl(var(--shadow-color) / 0.09),
11px 11.4px 15.1px -3.6px hsl(var(--shadow-color) / 0.07);
}
.image-rename-modal .modal {
width: 65%;
min-width: 600px;
}
.image-rename-modal .modal-content {
padding: 10px 5px;
}
.image-rename-modal .image-container {
display: flex;
justify-content: center;
}
.image-rename-modal .info {
padding: 10px 0;
color: var(--text-muted);
user-select: text;
}
.image-rename-modal .info li > span:nth-of-type(1) {
display: inline-block;
width: 6em;
margin-right: .5em;
}
.image-rename-modal .info li > span:nth-of-type(1):after {
content: ":";
float: right;
}
.image-rename-modal .image-container img {
display: block;
max-height: 300px;
box-shadow: var(--shadow-elevation-medium);
}
.image-rename-modal .setting-item-control input {
min-width: 300px;
}
.image-rename-modal .error {
border: 1px solid rgb(201, 90, 90);
color: rgb(134, 22, 22);
padding: 10px;
}
.image-rename-modal table {
font-size: .9em;
line-height: 1.8;
margin-bottom: 1.5em;
user-select: text;
}
.image-rename-modal table td {
padding-right: 1em;
}
.image-rename-modal table thead td {
font-weight: 700;
}
.image-rename-modal table tbody td .file-path {
font-size: .8em;
color: var(--text-faint);
line-height: 1;
}
.long-description-setting-item {
flex-wrap: wrap;
}
.long-description-setting-item .setting-item-description {
white-space: pre-wrap;
line-height: 1.3em;
}
.long-description-setting-item .setting-item-control {
padding-top: 10px;
}
.long-description-setting-item .setting-item-control input {
min-width: 300px;
width: 50%;
}
@@ -0,0 +1,105 @@
{
"presets": {
"this_file": "path includes {{query.file.path}}",
"this_folder": "folder includes {{query.file.folder}}",
"this_folder_only": "filter by function task.file.folder === query.file.folder",
"this_root": "root includes {{query.file.root}}",
"hide_date_fields": "# Hide any values for all date fields\nhide due date\nhide scheduled date\nhide start date\nhide created date\nhide done date\nhide cancelled date",
"hide_non_date_fields": "# Hide all the non-date fields, but not tags\nhide id\nhide depends on\nhide recurrence rule\nhide on completion\nhide priority",
"hide_query_elements": "# Hide toolbar, postpone, edit and backlinks\nhide toolbar\nhide postpone button\nhide edit button\nhide backlinks",
"hide_everything": "# Hide everything except description and any tags\npreset hide_date_fields\npreset hide_non_date_fields\npreset hide_query_elements"
},
"globalQuery": "",
"globalFilter": "",
"removeGlobalFilter": false,
"taskFormat": "tasksPluginEmoji",
"setCreatedDate": false,
"setDoneDate": true,
"setCancelledDate": true,
"autoSuggestInEditor": true,
"autoSuggestMinMatch": 0,
"autoSuggestMaxItems": 20,
"provideAccessKeys": true,
"useFilenameAsScheduledDate": false,
"filenameAsScheduledDateFormat": "",
"filenameAsDateFolders": [],
"recurrenceOnNextLine": false,
"removeScheduledDateOnRecurrence": false,
"searchResults": {
"taskCountLocation": "bottom"
},
"statusSettings": {
"coreStatuses": [
{
"symbol": " ",
"name": "Todo",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "TODO"
},
{
"symbol": "x",
"name": "Done",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "DONE"
}
],
"customStatuses": [
{
"symbol": "/",
"name": "In Progress",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "IN_PROGRESS"
},
{
"symbol": "-",
"name": "Cancelled",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "CANCELLED"
}
]
},
"isShownInEditModal": {
"priority": true,
"recurrence": true,
"due": true,
"scheduled": true,
"start": true,
"before_this": true,
"after_this": true,
"status": true,
"created": true,
"done": true,
"cancelled": true
},
"dismissedNotices": {
"live-preview-callout-warning": false
},
"features": {
"INTERNAL_TESTING_ENABLED_BY_DEFAULT": true
},
"generalSettings": {},
"headingOpened": {
"Core Statuses": true,
"Custom Statuses": true
},
"debugSettings": {
"ignoreSortInstructions": false,
"showTaskHiddenData": false,
"recordTimings": false
},
"loggingOptions": {
"minLevels": {
"": "info",
"tasks": "info",
"tasks.Cache": "info",
"tasks.Events": "info",
"tasks.File": "info",
"tasks.Query": "info",
"tasks.Task": "info"
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "8.2.2",
"minAppVersion": "1.8.7",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/",
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
"authorUrl": "https://github.com/obsidian-tasks-group",
"fundingUrl": "https://github.com/sponsors/claremacrae",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+43
View File
@@ -0,0 +1,43 @@
{
"useCache": true,
"hideExcluded": false,
"recencyBoost": "0",
"downrankedFoldersFilters": [],
"ignoreDiacritics": true,
"ignoreArabicDiacritics": false,
"indexedFileTypes": [],
"indexFilesWithoutExtension": false,
"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.29.3",
"minAppVersion": "1.7.2",
"description": "A search engine that just works.",
"author": "Simon Cambier",
"authorUrl": "https://scambier.xyz",
"fundingUrl": {
"Github": "https://github.com/sponsors/scambier",
"Ko-fi": "https://ko-fi.com/scambier"
},
"isDesktopOnly": false
}
+150
View File
@@ -0,0 +1,150 @@
.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;
}
.omnisearch-result-highlight .cm-content ::selection,
.omnisearch-result-highlight .cm-line::selection {
background-color: var(
--omnisearch-highlight-color,
rgba(222, 183, 110, 1)
) !important;
color: var(--omnisearch-highlight-text-color, black) !important;
}
.omnisearch-result-highlight .cm-selectionLayer .cm-selectionBackground {
background-color: var(
--omnisearch-highlight-color,
rgba(222, 183, 110, 1)
) !important;
}
@@ -0,0 +1,164 @@
{
"recentFiles": [
{
"basename": "Secure Server Build",
"path": "Linux/Security/Secure Server Build.md"
},
{
"basename": "IP Address Tracking",
"path": "IP Address Tracking.md"
},
{
"basename": "Configuring Arr Stack",
"path": "Application Install Notes/ArrStack - Testing/Configuring Arr Stack.md"
},
{
"basename": "arrstack One-command media server (SonarrRadarrProwlarrqBittorrent behind a VPN). Now maintained as SparkBox → tomsparkbox.com",
"path": "Application Install Notes/ArrStack - Testing/arrstack One-command media server (SonarrRadarrProwlarrqBittorrent behind a VPN). Now maintained as SparkBox → tomsparkbox.com.md"
},
{
"basename": "wg-down.sh",
"path": "Scripts/wireguard/wg-down.sh.md"
},
{
"basename": "APT - Update and Upgrade",
"path": "Scripts/APT - Update and Upgrade.md"
},
{
"basename": "Initial Server Setup with Debian-Based Distributions",
"path": "Linux/Security/Initial Server Setup with Debian-Based Distributions.md"
},
{
"basename": "zshrc - Zsh aliases and functions",
"path": "Linux/zshrc - Zsh aliases and functions.md"
},
{
"basename": "SSH Config file for desktop",
"path": "Linux/SSH Config file for desktop.md"
},
{
"basename": "Automatic Deployment Rollback",
"path": "Learning CI-CD/Automatic Deployment Rollback.md"
},
{
"basename": "Build & Push to Gitea Container Registry First",
"path": "Learning CI-CD/Build & Push to Gitea Container Registry First.md"
},
{
"basename": "Handle Local Storage Path Differences",
"path": "Learning CI-CD/Handle Local Storage Path Differences.md"
},
{
"basename": "README",
"path": "Desktop/Chemoi_Doc/dotfiles_samples/LoganDonley/README.md"
},
{
"basename": "ChezmoiNotes",
"path": "Desktop/Chemoi_Doc/ChezmoiNotes.md"
},
{
"basename": "Installing Targus Display Driver",
"path": "Desktop/Installing Targus Display Driver.md"
},
{
"basename": "Asusctl",
"path": "Desktop/Asusctl.md"
},
{
"basename": "web-application-firewall-waf",
"path": "Bookstack/web-application-firewall-waf.md"
},
{
"basename": "scripts",
"path": "Bookstack/scripts.md"
},
{
"basename": "Hestia Setup",
"path": "Application Install Notes/Hestia Setup.md"
},
{
"basename": "Hermes agent Troubleshooting",
"path": "Hermes agent Troubleshooting.md"
},
{
"basename": "AI - Persona entries",
"path": "AI - Persona entries.md"
},
{
"basename": "rClone sync to OneDrive",
"path": "Application Install Notes/rClone sync to OneDrive.md"
},
{
"basename": "Hermes agent Troubleshooting",
"path": "AI Brain/Hermes agent Troubleshooting.md"
},
{
"basename": "Project_Docker_Boilerplates_Master",
"path": "AI Brain/Project_Docker_Boilerplates_Master.md"
},
{
"basename": "Initial Server Setup with Windows Server 2019",
"path": "Microsoft Windows/Initial Server Setup with Windows Server 2019.md"
},
{
"basename": "Git",
"path": "Cheat Sheets/Git.md"
},
{
"basename": "ARRSTACK CONFIG",
"path": "Application Install Notes/ArrStack - Testing/ARRSTACK CONFIG.md"
},
{
"basename": "Trilium Notes - Install Syncing Server and Desktop App",
"path": "Application Install Notes/Docker Apps/Trilium Notes - Install Syncing Server and Desktop App.md"
},
{
"basename": "Watchtower - Update Docker Containers Automatically 1",
"path": "Application Install Notes/Docker Apps/Watchtower - Update Docker Containers Automatically 1.md"
},
{
"basename": "Portainer",
"path": "Application Install Notes/Docker Apps/Portainer.md"
},
{
"basename": "CheckMK - Open Source Network, Server, and Machine Monitoring",
"path": "Application Install Notes/Docker Apps/CheckMK - Open Source Network, Server, and Machine Monitoring.md"
},
{
"basename": "Zabbix - Setup and Install",
"path": "Application Install Notes/Docker Apps/Zabbix - Setup and Install.md"
},
{
"basename": "wg-easy - install",
"path": "Application Install Notes/Docker Apps/wg-easy - install.md"
},
{
"basename": "Authelia - Setup and Install",
"path": "Application Install Notes/Docker Apps/Authelia - Setup and Install.md"
},
{
"basename": "Authentik - Install and Setup",
"path": "Application Install Notes/Docker Apps/Authentik - Install and Setup.md"
},
{
"basename": "AI - Persona entries",
"path": "AI Brain/AI - Persona entries.md"
},
{
"basename": "Docker Install Script",
"path": "Application Install Notes/Docker Apps/Docker Install Script.md"
},
{
"basename": "arrstack",
"path": "Bookstack/arrstack.md"
},
{
"basename": "docker",
"path": "Bookstack/docker.md"
}
],
"omittedPaths": [],
"omittedTags": [],
"updateOn": "file-open",
"omitBookmarks": false
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
{
"id": "recent-files-obsidian",
"name": "Recent Files",
"version": "1.7.9",
"minAppVersion": "0.16.3",
"description": "List files by most recently opened.",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"isDesktopOnly": false,
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
}
}
@@ -0,0 +1,34 @@
.recent-files-file {
.tree-item-spacer {
flex-grow: 1;
}
}
.recent-files-title {
justify-content: flex-start;
align-items: unset;
}
.recent-files-file-delete {
justify-content: right;
display: none;
}
.recent-files-title:hover .recent-files-file-delete {
display: flex;
cursor: var(--cursor);
}
.recent-files-file-delete:hover {
color: var(--nav-item-color-hover);
}
.recent-files-donation {
width: 70%;
margin: 0 auto;
text-align: center;
}
.recent-files-donate-button {
margin: 10px;
}
+512
View File
@@ -0,0 +1,512 @@
/*
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 __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
// src/main.ts
__export(exports, {
default: () => SettingsSearch
});
var import_obsidian = __toModule(require("obsidian"));
// node_modules/monkey-around/mjs/index.js
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);
if (original)
Object.setPrototypeOf(current, original);
Object.setPrototypeOf(wrapper, current);
obj[method] = wrapper;
return remove;
function wrapper(...args) {
if (current === original && obj[method] === wrapper)
remove();
return current.apply(this, args);
}
function remove() {
if (obj[method] === wrapper) {
if (hadOwn)
obj[method] = original;
else
delete obj[method];
}
if (current === original)
return;
current = original;
Object.setPrototypeOf(wrapper, original || Function);
}
}
// src/main.ts
var SettingsSearch = class extends import_obsidian.Plugin {
constructor() {
super(...arguments);
__publicField(this, "settingsSearchEl", createDiv("settings-search-container vertical-tab-header-group"));
__publicField(this, "settingsResultsContainerEl", createDiv("settings-search-results-container vertical-tab-content"));
__publicField(this, "settingsNavItemContainer", this.settingsSearchEl.createDiv("vertical-tab-header-group-items").createDiv("vertical-tab-nav-item settings-search-input"));
__publicField(this, "settingsResultsEl");
__publicField(this, "search");
__publicField(this, "locale");
__publicField(this, "resources", []);
__publicField(this, "results", []);
__publicField(this, "loaded", false);
__publicField(this, "tabIndex", 0);
__publicField(this, "pluginTabIndex", 0);
__publicField(this, "seen", []);
__publicField(this, "settingCache", new Map());
__publicField(this, "searchAppended", false);
__publicField(this, "activeIndex", -1);
__publicField(this, "activeSetting");
__publicField(this, "scope", new import_obsidian.Scope(this.app.scope));
__publicField(this, "mobileContainers", []);
}
async onload() {
(window["SettingsSearch"] = {
addResources: this.addResources.bind(this),
removeResources: this.removeResources.bind(this),
removeTabResources: this.removeTabResources.bind(this)
}) && this.register(() => delete window["SettingsSearch"]);
this.app.workspace.onLayoutReady(async () => {
this.settingsResultsContainerEl.createEl("h3", {
text: "Settings Search Results"
});
this.settingsResultsEl = this.settingsResultsContainerEl.createDiv("settings-search-results");
this.buildScope();
this.buildSearch();
this.buildResources();
this.buildPluginResources();
this.patchSettings();
this.loaded = true;
this.app.workspace.trigger("settings-search-loaded");
});
}
buildResources() {
const tab = this.app.setting.settingTabs[this.tabIndex];
if (tab && tab.id !== void 0 && !this.seen.includes(tab.id)) {
this.getTabResources(tab);
this.tabIndex++;
setTimeout(() => this.buildResources());
}
}
buildPluginResources() {
const tab = this.app.setting.pluginTabs[this.pluginTabIndex];
if (tab) {
this.getTabResources(tab);
this.pluginTabIndex++;
setTimeout(() => this.buildPluginResources());
}
}
get manifests() {
return Object.values(this.app.plugins.manifests);
}
addResourceToCache(resource) {
if (!resource || !resource.text || !resource.name || !resource.tab) {
return new Error("A valid resource must be provided.");
}
let name;
if (resource.external) {
name = createFragment((el) => {
(0, import_obsidian.setIcon)(el.createSpan({
attr: {
"aria-label": "This setting was added by another plugin."
}
}), "info");
el.createSpan({ text: resource.text });
});
} else {
name = resource.text;
}
const setting = new import_obsidian.Setting(createDiv()).setName(name).setDesc(createFragment((e) => e.createDiv().innerHTML = resource.desc ?? ""));
if (resource.external) {
setting.settingEl.addClass("set-externally");
}
if (resource.tab == "community-plugins") {
let plugin = this.manifests.find((p) => p.name == resource.text);
if (plugin && this.app.plugins.getPlugin(plugin.id)?._loaded && this.app.setting.pluginTabs.find((t) => t.id == plugin.id)) {
setting.addExtraButton((b) => {
b.setTooltip(`Open ${resource.text} Settings`).onClick(() => {
this.app.setting.openTabById(plugin.id);
});
});
}
}
if (resource.tab == "plugins") {
const plugins = Object.values(this.app.internalPlugins.plugins);
const plugin = plugins.find((p) => p._loaded && p.instance.name == resource.text);
if (plugin && this.app.setting.pluginTabs.find((t) => t.id == plugin.instance.id)) {
setting.addExtraButton((b) => {
b.setTooltip(`Open ${resource.text} Settings`).onClick(() => {
this.app.setting.openTabById(plugin.instance.id);
});
});
}
}
setting.addExtraButton((b) => {
b.setIcon("forward-arrow").onClick(() => {
this.showResult(resource);
});
});
this.settingCache.set(resource, setting);
}
getResourceFromCache(resource) {
if (!this.settingCache.has(resource)) {
this.addResourceToCache(resource);
}
return this.settingCache.get(resource);
}
removeResourcesFromCache(resources) {
for (const resource of resources) {
this.settingCache.delete(resource);
}
}
addResources(...resources) {
for (const resource of resources) {
resource.external = true;
if (this.resources.find((k) => this.equivalent(resource, k)))
continue;
this.resources.push(resource);
this.addResourceToCache(resource);
}
return () => this.removeResources(...resources);
}
equivalent(resource1, resource2) {
return resource1.name == resource2.name && resource1.tab == resource2.tab && resource1.text == resource2.text && resource1.desc == resource2.desc && resource1.external == resource2.external;
}
removeResources(...resources) {
const removing = [];
const keys = [...this.settingCache.keys()];
for (const resource of resources) {
if (!resource || !resource.text || !resource.name || !resource.tab) {
continue;
}
resource.external = true;
this.resources = this.resources.filter((r) => !this.equivalent(resource, r));
removing.push(...keys.filter((k) => k == resource || this.equivalent(resource, k)));
}
this.removeResourcesFromCache(removing);
}
removeTabResources(tab) {
const removing = this.resources.filter((t) => t.tab == tab);
this.resources = this.resources.filter((t) => t.tab != tab);
this.removeResourcesFromCache(removing);
}
async getTabResources(tab) {
await tab.display();
const settings = tab.containerEl.querySelectorAll(".setting-item:not(.setting-item-header)");
for (const el of Array.from(settings)) {
const text = el.querySelector(".setting-item-name")?.textContent;
if (!text)
continue;
const desc = el.querySelector(".setting-item-description")?.innerHTML ?? "";
const resource = {
tab: tab.id,
name: tab.name,
text,
desc
};
this.resources.push(resource);
this.addResourceToCache(resource);
}
if (this.app.setting.activeTab?.id == tab.id)
return;
this.seen.push(tab.id);
tab.containerEl.detach();
tab.hide();
}
patchSettings() {
const self = this;
this.register(around(this.app.setting, {
onOpen: function(next) {
return function() {
next.apply(this);
if (!import_obsidian.Platform.isMobile)
self.search.inputEl.focus();
return next;
};
}
}));
this.register(around(this.app.setting, {
addSettingTab: function(next) {
return function(tab) {
if (tab && tab.id !== void 0 && !self.seen.includes(tab.id)) {
self.getTabResources(tab);
}
return next.call(this, tab);
};
}
}));
this.register(around(this.app.setting, {
removeSettingTab: function(next) {
return function(tab) {
if (this.isPluginSettingTab(tab)) {
self.removeTabResources(tab.id);
}
return next.call(this, tab);
};
}
}));
this.register(around(this.app.setting, {
openTab: function(next) {
return function(tab) {
self.searchAppended = false;
self.app.keymap.popScope(self.scope);
return next.call(this, tab);
};
},
openTabById: function(next) {
return function(tab) {
self.searchAppended = false;
self.app.keymap.popScope(self.scope);
return next.call(this, tab);
};
},
onClose: function(next) {
return function() {
if (import_obsidian.Platform.isMobile) {
self.detach();
}
return next.call(this);
};
}
}));
}
buildSearch() {
const tempSetting = new import_obsidian.Setting(createDiv()).addSearch((s) => {
this.search = s;
});
this.settingsNavItemContainer.append(tempSetting.controlEl);
tempSetting.settingEl.detach();
this.search.onChange((v) => {
this.onChange(v);
});
this.search.setPlaceholder("Search settings...");
this.app.setting.tabHeadersEl.prepend(this.settingsSearchEl);
}
buildScope() {
this.scope.register(["Ctrl"], "N", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex + 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register([], "ArrowDown", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex + 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register(["Ctrl"], "P", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex - 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register([], "ArrowUp", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex - 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register([], "Enter", () => {
if (this.activeSetting) {
this.showResult(this.results[this.activeIndex]);
}
});
}
centerActiveSetting() {
const result = this.results[this.activeIndex];
this.activeSetting = this.getResourceFromCache(result);
this.activeSetting.settingEl.addClass("active");
this.activeSetting.settingEl.scrollIntoView({
behavior: "auto",
block: "nearest"
});
}
detachFromMobile() {
if (import_obsidian.Platform.isMobile) {
this.settingsResultsContainerEl.detach();
for (const header of this.mobileContainers) {
this.app.setting.tabHeadersEl.append(header);
}
this.search.setValue("");
}
}
detachFromDesktop() {
if (import_obsidian.Platform.isDesktop) {
this.app.setting.openTabById(this.app.setting.lastTabId);
}
}
detach() {
this.detachFromDesktop();
this.detachFromMobile();
this.searchAppended = false;
}
onChange(v) {
if (!v) {
this.detach();
this.app.keymap.popScope(this.scope);
return;
}
if (!this.searchAppended) {
this.activeIndex = -1;
this.app.keymap.popScope(this.scope);
this.app.keymap.pushScope(this.scope);
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
this.activeSetting = null;
}
if (!import_obsidian.Platform.isMobile) {
this.app.setting.activeTab.navEl.removeClass("is-active");
this.app.setting.tabContentContainer.empty();
this.app.setting.tabContentContainer.append(this.settingsResultsContainerEl);
} else {
const headers = this.app.setting.tabHeadersEl.querySelectorAll(".vertical-tab-header-group:not(.settings-search-container)");
for (const header of Array.from(headers)) {
this.mobileContainers.push(header);
header.detach();
}
this.app.setting.tabHeadersEl.append(this.settingsResultsContainerEl);
}
this.searchAppended = true;
}
this.appendResults(this.performFuzzySearch(v));
}
getMatchText(text, result) {
const matchElements = {};
return createFragment((content) => {
for (let i = 0; i < text.length; i++) {
let match = result.matches.find((m) => m[0] === i);
if (match) {
const index = result.matches.indexOf(match);
if (!matchElements[index]) {
matchElements[index] = createSpan("suggestion-highlight");
}
let element = matchElements[index];
content.appendChild(element);
element.appendText(text.substring(match[0], match[1]));
i += match[1] - match[0] - 1;
continue;
}
content.appendText(text[i]);
}
});
}
appendResults(results) {
this.settingsResultsEl.empty();
if (results.length) {
const headers = {};
for (const resource of results) {
if (!(resource.tab in headers)) {
headers[resource.tab] = this.settingsResultsEl.createDiv();
new import_obsidian.Setting(headers[resource.tab]).setHeading().setName(resource.name);
}
const setting = this.getResourceFromCache(resource);
headers[resource.tab].append(setting.settingEl);
}
} else {
this.settingsResultsEl.setText("No results found :(");
}
}
showResult(result) {
this.search.setValue("");
const tab = this.app.setting.settingTabs.find((t) => t.id == result.tab) ?? this.app.setting.pluginTabs.find((t) => t.id == result.tab);
if (!tab) {
new import_obsidian.Notice("There was an issue opening the setting tab.");
return;
}
this.app.setting.openTabById(tab.id);
this.app.keymap.popScope(this.scope);
this.detach();
try {
const names = tab.containerEl.querySelectorAll(".setting-item-name");
const el = Array.from(names).find((n) => n.textContent == result.text);
if (!el)
return;
const setting = el.closest(".setting-item");
if (!setting)
return;
if (tab.id == "obsidian-style-settings") {
let collapsed = setting.closest(".style-settings-container");
let previous = collapsed?.previousElementSibling;
while (previous != null && previous.hasClass("is-collapsed") && previous.hasClass("style-settings-heading")) {
previous.removeClass("is-collapsed");
collapsed = collapsed.parentElement?.closest(".style-settings-container");
previous = collapsed?.previousElementSibling;
}
}
let details = setting.closest("details");
while (details) {
details.setAttr("open", "open");
details = details.parentElement?.closest("details");
}
setting.scrollIntoView(true);
setting.addClass("is-flashing");
window.setTimeout(() => setting.removeClass("is-flashing"), 3e3);
} catch (e) {
console.error(e);
}
}
performFuzzySearch(input) {
const results = [], hotkeys = [];
for (const resource of this.resources) {
let result = (0, import_obsidian.prepareSimpleSearch)(input)(resource.text) ?? (0, import_obsidian.prepareSimpleSearch)(input)(resource.desc);
if (result) {
if (resource.tab == "hotkeys") {
hotkeys.push(resource);
} else {
results.push(resource);
}
}
}
this.results = [...results, ...hotkeys];
return this.results;
}
onunload() {
this.settingsSearchEl.detach();
this.settingsResultsEl.detach();
this.detach();
if (this.searchAppended && import_obsidian.Platform.isDesktop)
this.app.setting.openTabById(this.app.setting.lastTabId);
}
};
/* nosourcemap */
@@ -0,0 +1,10 @@
{
"id": "settings-search",
"name": "Settings Search",
"version": "1.3.10",
"minAppVersion": "0.12.17",
"author": "Jeremy Valentine",
"description": "Globally search settings in Obsidian.md",
"authorUrl": "https://github.com/valentine195",
"isDesktopOnly": false
}
@@ -0,0 +1,25 @@
/* src/assets/main.css */
.settings-search-container.vertical-tab-header-group {
padding-bottom: 0;
}
.settings-search-input {
padding-left: 6px;
}
.vertical-tab-nav-item.settings-search-input {
background-color: inherit !important;
}
.settings-search-input .setting-item-control {
display: block;
}
.settings-search-input .search-input-container {
margin: 0;
}
.settings-search-results .setting-item.active {
background-color: var(--background-secondary);
}
.settings-search-results .set-externally .setting-item-name {
display: flex;
gap: 0.5rem;
}
/* src/styles.css */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
{
"id": "supercharged-links-obsidian",
"name": "Supercharged Links",
"version": "0.13.10",
"minAppVersion": "1.11.0",
"description": "Add properties and menu options to links and style them!",
"author": "mdelobelle & Emile",
"authorUrl": "https://github.com/mdelobelle/mdelobelle/tree/main",
"helpUrl": "https://github.com/mdelobelle/obsidian_supercharged_links#readme",
"isDesktopOnly": false
}
@@ -0,0 +1,15 @@
.css-boilerplate-result {
width: 30em
}
div.supercharged-modal {
height: 70vh;
}
div.supercharged-modal h4 {
margin: 0;
}
span.data-link-text > a.cm-underline {
color: inherit;
}
@@ -0,0 +1,10 @@
/* WARNING: This file will be overwritten by the plugin.
Do not edit this file directly! First copy this file and rename it if you want to edit things. */
:root {
}
/* @settings
name: Supercharged Links
id: supercharged-links
settings:
*/
@@ -0,0 +1,9 @@
{
"name": "Dark Clarity",
"author": "chenbihao",
"authorUrl": "https://github.com/chenbihao",
"version": "1.2.1",
"repo": "chenbihao/obsidian-theme-dark-clarity",
"screenshot": "screenshot.png",
"modes": ["dark", "light"]
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
{
"name": "Dracula for Obsidian",
"version": "0.0.0",
"minAppVersion": "0.16.0",
"author": "jarodise"
}
@@ -0,0 +1,717 @@
:root
{
--font-size-normal: 19px;
--font-size-code: 16px;
--font-size-side-dock: 16px;
--font-size-side-dock-title: 18px;
--font-size-status-bar: 16px;
--font-size-h1: 24px;
--font-size-h2: 23px;
--font-size-h3: 22px;
--font-size-h4: 21px;
--font-size-h5: 20px;
--font-size-h6: 19px;
--font-family-editor: Avenir, Avenir Next, sans-serif;
--font-family-preview: Avenir, Avenir Next, sans-serif;
}
.theme-light,
.theme-dark {
--background-primary: #282a36;
--background-primary-alt: #44475a;
--background-secondary: #44475a;
--background-secondary-alt: #282a36;
--background-accent: #f8f8f2;
--background-modifier-border: #f8f8f2;
--background-modifier-form-field: rgba(0, 0, 0, 0.2);
--background-modifier-form-field-highlighted: rgba(0, 0, 0, 0.5);
--background-modifier-box-shadow: rgba(0, 0, 0, 0.3);
--background-modifier-success: #50fa7b; /*no sure*/
--background-modifier-error: #3d0000; /*no sure*/
--background-modifier-error-rgb: 61, 0, 0;
--background-modifier-error-hover: #470000;
--background-modifier-cover: rgba(0, 0, 0, 0.6);
--text-accent: #ffb86c;
--text-accent-hover: #8be9fd;
--text-normal: #f8f8f2;
--text-muted: #f8f8f2;
--text-faint: #bd93f9;
--text-highlight-bg: #ff5555;
--text-error: #ff79c6;
--text-error-hover: #ff79c6;
--text-selection: #6272a4; /* Chromium precess this color with alpha channel */
--text-on-accent: #bd93f9;
--interactive-normal: #ffb86c;
--interactive-hover: #ff5555;
--interactive-accent: #ffb86c;
--interactive-accent-rgb: 123, 108, 217;
--interactive-accent-hover: #ff5555;
--scrollbar-active-thumb-bg: rgba(255, 255, 255, 0.2);
--scrollbar-bg: rgba(255, 255, 255, 0.05);
--scrollbar-thumb-bg: rgba(255, 255, 255, 0.1);
--text-title-h1: #ff79c6;
--text-title-h2: #bd93f9;
--text-title-h3: #ff5555;
--text-title-h4: #ffb86c;
--text-title-h5: #50fa7b;
--text-title-h6: #8be9fd;
--inline-code: #bd93f9;
--code-block: #8be9fd;
--pre-code: #44475a;
--blockquote-border: #ffb86c;
--vim-cursor: #ff5555;
--border-color: #2b2727; /*also like transparent*/
}
/*-------------------------------------*/
/* Search the following lines */
/* to jump to specific section */
/*-------------------------------------*/
/* resize-handle and borders */
/* tags */
/* link */
/* Cursor */
/* basic format in EDITOR and PREVIEW */
/* Headings - EDITOR and PREVIEW */
/* Code block in Preview */
/* Code block in Editor */
/* Brackets */
/* Blockquote */
/* table */
/* Checkbox */
/* html in editor */
/* popover */
/* Side panel */
/* internal embedded link in preview */
/* graph view */
/* settings */
/* Hide side bar */
/* width of content */
/* at a rule line before ul list *
/* Hide Scrollbar (recommend for mac) */
/*-------------------------------------*/
/***************************************/
/* resize-handle and borders */
/***************************************/
/*vertical resize-handle*/
.workspace-split.mod-vertical > * > .workspace-leaf-resize-handle,
.workspace-split.mod-left-split > .workspace-leaf-resize-handle,
.workspace-split.mod-right-split > .workspace-leaf-resize-handle{
width: 1px !important;
background-color: var(--border-color);
}
/*horizontal resize-handle*/
.workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle{
height: 1px !important;
background-color: var(--border-color);
}
/*workspace ribbon when collapsed*/
.workspace-ribbon.is-collapsed {
background-color: var(--background-primary-alt);
}
/*the vertical split*/
.workspace-split.mod-root .workspace-split.mod-vertical .workspace-leaf-content,
.workspace-split.mod-vertical > .workspace-split,
.workspace-split.mod-vertical > .workspace-leaf,
.workspace-tabs{
padding-right: 0px;
}
/*status-bar*/
.status-bar{
font-size: var(--font-size-status-bar);
background-color: var(--background-secondary-alt);
border-top: 0px;
}
.document-search-container{
border-top: 0px;
border-right: 0px;
z-index: inherit;
}
.workspace-ribbon.mod-left.is-collapsed{
border-right: 1px solid var(--border-color);
}
.workspace-ribbon.mod-right.is-collapsed{
border-left: 1px solid var(--border-color);
}
/*************************************/
/* tags */
/*************************************/
/* Tag hover in preview */
a.tag:hover {
color: var(--text-accent) !important;
}
/* Tag Color in editor and preview*/
.cm-hashtag, a.tag {
color: var(--text-accent-hover) !important;
text-decoration: none !important;
font-style: normal !important;
}
/*********************************/
/* link */
/*********************************/
/* link */
a,
.internal-link,
.cm-hmd-internal-link,
.cm-link,
.cm-formatting-link,
.cm-url {
text-decoration: none !important;
}
/* the url string in editor */
.cm-s-obsidian span.cm-string{
color: var(--text-accent-hover) !important;
}
/* make external links italics to differentiate */
a:not(.internal-link) {
font-style: italic;
}
/*footnote*/
.cm-s-obsidian pre.HyperMD-footnote span.cm-hmd-footnote,
.cm-s-obsidian span.cm-footref {
color: var(--text-accent) !important;
}
/***************************************/
/* Cursor */
/***************************************/
/* Cursor color and opacity */
.cm-fat-cursor .CodeMirror-cursor, .cm-animate-fat-cursor
{
width: 0.5em;
background: var(--vim-cursor);
opacity: 60% !important;
}
/**************************************/
/* basic format in EDITOR and PREVIEW */
/**************************************/
/* font for everything outside of editor/preview panes */
.app-container {
font-family: var(--font-family-preview);
}
/* set the text selection color for preview mode */
::selection {
background-color: var(--text-selection);
}
/* normal text outside of headings and code of editor */
.cm-s-obsidian, .mod-single-child .cm-s-obsidian {
font-family: var(--font-family-editor);
font-size: var(--font-size-normal);
}
/* normal text outside of headings and code of preview */
.markdown-preview-view, .mod-single-child .markdown-preview-view {
font-family: var(--font-family-editor);
font-size: var(--font-size-normal);
padding-top: 0px;
padding-left: 2% !important;
padding-right: 1% !important;
}
/* bold in preview and editor */
strong, .cm-strong {
font-weight: 600;
color: #50fa7b;
}
/* emphasis in preview and editor */
em, .cm-em {
color: var(--text-muted);
font-style: italic;
}
/* strikethrough in preview and editor */
s, .cm-strikethrough {
color: var(--text-muted);
}
/* list in editor */
.cm-s-obsidian span.cm-formatting-list {
color: var(--text-normal) !important;
}
/* horizontal line in preview */
.markdown-preview-view hr {
background-color: var(--text-faint) !important;
}
/* embedded images */
img:not(.emoji) {
display: block;
margin-left: auto;
margin-right: auto;
}
/* img hover zoom out img*/
img:hover {
transform: scale(1.04);
transition: transform 0.25s ease-in-out 0s;
}
.community-theme img:hover{
transform: none;
}
/*********************************/
/* Headings - EDITOR and PREVIEW */
/*********************************/
/* headings for editor and preview */
.cm-header-1, .markdown-preview-view h1
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h1);
color: var(--text-title-h1);
}
.cm-header-2, .markdown-preview-view h2
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h2);
color: var(--text-title-h2);
}
.cm-header-3, .markdown-preview-view h3
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h3);
color: var(--text-title-h3);
}
.cm-header-4, .markdown-preview-view h4
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h4);
color: var(--text-title-h4);
}
.cm-header-5, .markdown-preview-view h5
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h5);
color: var(--text-title-h5);
}
.cm-header-6, .markdown-preview-view h6
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h6);
color: var(--text-title-h6);
}
/***************************************/
/* Code block in Preview */
/***************************************/
/* code blocks in preview */
pre code {
font-family: monaco !important;
font-size: var(--font-size-code) !important;
padding: 6px !important;
line-height: normal;
display: block;
color: var(--code-block) !important;
}
/* padding of code blocks in preview */
.markdown-preview-view pre {
padding: 0px !important;
}
/* font-size of in-line block for preview */
.markdown-preview-view code
{
font-size: var(--font-size-code);
}
/* remove the shadow that typically affect light mode */
.theme-dark code[class*="language-"],
.theme-dark pre[class*="language-"],
.theme-light code[class*="language-"],
.theme-light pre[class*="language-"]
{
text-shadow: none !important;
color: var(--text-faint) !important;
background-color: var(--pre-code);
}
/***************************************/
/* Brackets */
/***************************************/
.cm-s-obsidian span.cm-formatting-link {
color: var(--text-accent) !important;
}
/***************************************/
/* Blockquote */
/***************************************/
/* for editor */
.cm-quote {
color: var(--text-normal) !important;
font-style: italic;
}
/* for preview */
.markdown-preview-view blockquote {
background-color: var(--pre-code);
border: 0px solid;
border-color: var(--blockquote-border) !important;
border-left-width: 4px !important;
border-radius: 0 8px 8px 0;
line-height: 1.5em;
margin: 30px 0px;
font-style: italic;
}
/***************************************/
/* table */
/***************************************/
th {
font-weight: 800 !important;
}
.markdown-preview-view th {
font-weight: 800;
background-color: var(--background-secondary) !important;
}
thead {
border-bottom: 3px solid var(--background-modifier-border);
}
.table {
padding: 4px;
line-height: normal;
display: block;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
/***************************************/
/* Checkbox */
/***************************************/
.markdown-preview-view .task-list-item-checkbox:checked::before {
content: '✓';
position: absolute;
color: var(--text-accent);
font-size:1em;
line-height: 1.25em;
width:1.2em;
text-align:center;
text-shadow: 0 0 0.1em var(--text-accent);
}
.markdown-preview-view .task-list-item-checkbox {
-webkit-appearance: none;
top: 0.2em !important;
right: 4px;
box-sizing: border-box;
border: 1px solid var(--text-muted);
position: relative;
width: 1.25em;
height: 1.25em;
margin: 0;
box-shadow: 0 0 0.1em var(--text-muted);
}
.checkbox-container {
background-color: var(--background-primary);
}
/***************************************/
/* popover */
/***************************************/
.popover{
border: 1px solid var(--border-color);
background-color: var(--background-secondary);
}
/***************************************/
/* Side panel */
/***************************************/
/* search result in backlink or file search */
.search-result-file-title {
font-size: 15px ;
}
.search-result-file-matches, .search-empty-state {
font-size: var(--font-size-side-dock);
}
/*decrease the spacing between result items*/
.search-result-file-title,
.search-result-file-match {
padding: 0px 10px;
}
.nav-file-title, .nav-folder-title {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
}
/*backlink pane*/
.workspace-leaf-content[data-type="backlink"] .view-content{
background-color: var(--background-secondary);
}
.workspace-leaf-content[data-type="tag"] .tag-pane-tag-count,
.workspace-leaf-content[data-type="tag"] .tag-pane-tag-text {
font-size: var(--font-size-side-dock);
}
.workspace-leaf-content[data-type="backlink"] .search-result-file-matches {
font-size: var(--font-size-side-dock);
}
/***************************************/
/* internal embedded link in preview */
/***************************************/
/* Naked Embeds */
.markdown-embed-title { display: none; }
.markdown-preview-view .markdown-embed-content>:first-child { margin-top: 0; }
.markdown-preview-view .markdown-embed-content>:last-child { margin-bottom: 0; }
/*remove the following two line, you will get border and scroll*/
.markdown-preview-view .markdown-embed { border:none; padding:0; margin:0; }
.markdown-preview-view .markdown-embed-content
{
max-height: unset;
background-color: var(--background-secondary);
}
/* the link on the top right corner*/
.markdown-embed-link {
color: var(--text-faint) !important;
}
.markdown-embed-link:hover {
color: var(--text-accent) !important;
}
/***************************************/
/* graph view */
/***************************************/
.graph-view.color-circle,
.graph-view.color-fill-highlight,
.graph-view.color-line-highlight
{
color: var(--text-accent) !important;
}
.graph-view.color-text
{
color: var(--text-normal) !important;
}
.graph-view.color-line {
color: #6272a4;
}
.graph-view.color-fill{
color: var(--text-muted);
}
.workspace-leaf-content[data-type = "graph"] .view-content{
background-color: var(--background-primary);
}
/***************************************/
/* settings */
/***************************************/
.modal.mod-settings button:not(.mod-cta):hover {
background-color: var(--interactive-accent-hover);
}
/***************************************/
/* Hide side bar */
/***************************************/
.workspace-ribbon:not(:hover) .workspace-ribbon-collapse-btn,
.workspace-ribbon:not(:hover) .side-dock-actions,
.workspace-ribbon:not(:hover) .side-dock-settings {
display:none;
transition: all 300ms ease-in-out;}
.workspace-ribbon:not(:hover) {
width: 0px;
transition: all 300ms ease-in-out;}
.workspace-split.mod-left-split {margin-left: 0px;}
.workspace-split.mod-right-split {margin-right: 0px;}
/***************************************/
/* width of content */
/***************************************/
.markdown-source-view.is-readable-line-width .CodeMirror {
max-width: 900px;
margin-left: auto;
margin-right: auto;
}
.markdown-preview-view.is-readable-line-width .markdown-preview-section {
max-width: 900px;
margin-left: 30px;
margin-right: 30px;
}
/* header */
.theme-dark .view-header {
background-color: var(--background-primary) !important;
border-top: 1px solid var(--border-color) !important;
border-bottom: 1px solid var(--border-color) !important;
}
.theme-dark .view-header-title-container:after {
background: linear-gradient(to bottom, transparent, var(--background-primary)) !important;
}
.theme-dark .workspace-leaf.mod-active .view-header {
background-color: var(--background-secondary-alt) !important;
border-top: 0px !important;
border-bottom: 3px solid var(--interactive-accent) !important;
}
.workspace-leaf.mod-active .view-header-title-container:after {
background: linear-gradient(to bottom, transparent, var(--background-secondary-alt)) !important;
}
.workspace-leaf.mod-active .view-header-title,
.workspace-leaf.mod-active .view-header-icon
{
color: var(--background-modifier-border);
}
.view-header-title, .view-header-icon, .view-action{
color: var(--text-faint);
}
.view-header-title
{
font-size: 20px;
}
/***************************************/
/* at a rule line before ul list */
/***************************************/
ul ul { position: relative; }
ul ul::before {
content:'';
border-left: 1px solid var(--border-color);
position: absolute;
}
ul ul::before { left: -1em; top: 0; bottom: 0; }
/* rule line when there are checkboxes*/
ul .task-list-item ul::before {left: 0.15em !important}
/***************************************/
/* Code block in Editor */
/***************************************/
/* in-line block for editor */
.cm-s-obsidian span.cm-inline-code,
.cm-s-obsidian span.cm-inline-code.cm-hmd-indented-code,
.cm-s-obsidian span.cm-inline-code:not(.cm-formatting):not(.cm-hmd-indented-code)
{
background-color: var(--pre-code-bg);
color: var(--inline-code) !important;
bottom: 0px !important;
}
/* Editor CodeBlock TEXT Appearance */
.cm-s-obsidian pre.HyperMD-codeblock {
font-family: monaco !important;
font-size: var(--font-size-code) !important;
padding: 1px !important;
display: block;
color: var(--code-block) !important;
font-weight: 500;
text-indent: 0px !important;
}
/*remove the border of codeblock in editor */
.HyperMD-codeblock-bg{
border: 0px !important;
}
/*an active line highlight in vim normal mode
.cm-fat-cursor .CodeMirror-activeline .CodeMirror-linebackground{
background-color: var(--text-selection) !important;
} */
/* in-line block for preview */
code{
color: var(--inline-code) !important;
bottom: 0px !important;
}
/* graph css */
.theme-dark .graph-view.color-arrow {
color: #50fa7b;
}
.theme-dark .graph-view.color-fill-tag {
color: #ffb86c;
}
.theme-dark .graph-view.color-fill-attachment {
color: #ff5555;
}
.theme-dark .graph-view.color-fill-unresolved {
color: #6272a4;
}
.search-result-collapse-indicator {
position: absolute;
left: 0;
top: -3px;
color: var(--text-faint);
transition: transform 100ms ease-in-out;
padding: 0px !important;
}
@@ -0,0 +1,7 @@
{
"name": "Obsidianite",
"version": "2.0.2",
"minAppVersion": "1.1.0",
"author": "@bennyxguo",
"authorUrl": "https://github.com/bennyxguo"
}
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
{
"name": "Soloing",
"version": "1.1.0",
"minAppVersion": "1.1.0",
"author": "isax785",
"authorUrl": "https://github.com/isax785"
}
+396
View File
@@ -0,0 +1,396 @@
/*
*/
:root {
--white: #FCFCFC;
--raisin-black: #1B1825;
--rich-black: #121019;
--dark-purple: #242032;
/* --tropical-indigo: #8B80F9; original, below darker*/
--tropical-indigo: #685fce;
--tropical-indigo-light: #A69EFA;
--robin-egg-blue: #19D8D5;
--cool-gray: #7C809B;
--cool-gray-light: #cbcdd3;
--french-gray : #D1D2DC; /*cool gray light*/
--white-smoke: #F5F5F5;
--ylmn-blue: #375BA9;
--mint: #13C4A3;
--mint-light: #9af6e5;
--anti-flash-white: #EBEBEB;
--folly-dark: #c7204a;
--folly: #FF3366;
--gold-light: #e8e08b;
--gold: rgb(253, 233, 9);
--line-width: 850px;
--light-sea-green: #00BFB3; /* accent color*/
--floral-white:#FFF8F0; /* try it for the text */
--bittersweet:#F05D5E; /* try it for the separator lines */
--lime: #C3F73A;
--lime-dark: #92cb00;
--light-mint: #3fc570; /*original*/
--dark-mint: #2f9b56; /* modded */
--bright-green: #5AFF15;
/* --mint: #68B684; /*original*/
/* --mint: #4ea76e; /*darker*/
/* --- DARK --- */
--background-1st-dark: #1a1c25;
--background-2nd-dark: #20212b;
--dark-background-primary: var(--background-1st-dark);
--dark-background-secondary: var(--background-2nd-dark);
--dark-divider-color: #2f3144;
--dark-hr-color: var(--bright-green);
--dark-hr-color: #6e8166;
--dark-accent: var(--bright-green);
--dark-code: var(--lime);
--dark-link: var(--mint);
--dark-code-background: #292c3a;
/* --- LIGHT --- */
--background-1st-light: #f6f6fc;
--background-2nd-light: #eceff5;
--light-divider:#dbe1f0;
--light-background-primary: var(--background-1st-light);
--light-background-secondary: var(--background-2nd-light);
--light-divider-color: var(--light-divider);
--light-hr-color: var(--light-divider);
--light-accent: var(--light-mint);
--light-code: var(--dark-mint);
--light-link: var(--light-mint);
--light-code-background:#dee1e7;
}
.theme-dark {
--checklist-done-decoration: none;
--checklist-done-color: var(--cool-gray);
--file-line-width: var(--line-width);
--background-primary: var(--dark-background-primary);
--background-secondary: var(--dark-background-secondary);
--background-primary-alt: var(--dark-background-secondary);
--background-secondary-alt: var(--dark-background-secondary);
--tab-divider-color: var(--dark-divider-color);
--tab-outline-color: var(--dark-divider-color);
--interactive-accent: var(--dark-accent);
--color-accent: var(--dark-accent);
/* --bold-color: var(--dark-code);
--italic-color: var(--dark-link); */
--bold-color: var(--dark-link);
--link-color: var(--dark-link);
--highlight-bg-color: var(--dark-link);
--highlight-text-color: var(--rich-black);
/* Checkboxes */
--checkbox-color: var(--dark-link);
--checkbox-color-hover: var(--dark-accent);
--checkbox-border-color-hover: var(--dark-accent);
/* Code block*/
--codeblock-background: var(--dark-code-background);
--codeblock-color: var(--white);
--inline-code-background: var(--dark-code-background);
/* --inline-code-color: var(--bright-green); */
--code-variable-color: var(--white);
--code-function-color: var(--mint);
--code-builtin-color: var(--tropical-indigo-light);
--code-string-color: var(--gold-light);
--code-operator-color: var(--mint);
--code-comment-color: var(--cool-gray);
--code-text-size: 0.9em;
--code-size: 0.9rem;
/* Quotes */
--blockquote-background-color: var(--dark-code-background);
--blockquote-border-color: var(--dark-accent);
--blockquote-border-thickness: 5px;
--hr-color: var(--dark-hr-color) !important;
/* Text Formatting */
.cm-strong {
color: var(--bold-color) !important;
}
/* Inline Code */
.cm-s-obsidian span.cm-inline-code {
color: var(--dark-code) !important;
}
.markdown-rendered code {
color: var(--dark-code);
}
/* Links */
.cm-s-obsidian span.cm-link {
color: var(--dark-link) !important;
}
.cm-s-obsidian span.cm-formatting-link.cm-url, .cm-s-obsidian span.cm-url {
color: var(--dark-link) !important;
}
--links-color: var(--dark-link);
/* Tags */
.cm-hashtag {
color: var(--dark-link) !important;
}
.tag {
color: var(--dark-link) !important;
}
/* Explorer */
--folder-title-color: var(--floral-white);
--file-title-color: var(--floral-white);
--file-content: '📄 ';
--folder-filter: invert(51%) sepia(51%) saturate(596%) hue-rotate(89deg) brightness(89%) contrast(84%)
}
.theme-light {
--checklist-done-decoration: none;
--checklist-done-color: var(--cool-gray);
--file-line-width: var(--line-width);
--background-primary: var(--light-background-primary);
--background-secondary: var(--light-background-secondary);
--background-primary-alt: var(--light-background-secondary);
--background-secondary-alt: var(--light-background-secondary);
--tab-divider-color: var(--light-divider-color);
--tab-outline-color: var(--light-divider-color);
--divider-color: var(--light-divider-color);
--interactive-accent: var(--light-accent);
--color-accent: var(--light-accent);
--bold-color: var(--light-code);
/* --italic-color: var(--light-link); */
--link-color: var(--light-link);
--highlight-bg-color: var(--light-link);
--highlight-text-color: var(--rich-black);
/* Checkboxes */
--checkbox-color: var(--light-link);
--checkbox-color-hover: var(--light-accent);
--checkbox-border-color-hover: var(--light-accent);
/* Code block */
--codeblock-background: var(--light-code-background);
--codeblock-color: var(--rich-black);
--inline-code-background: var(--light-code-background);
--code-variable-color: var(--rich-black);
--code-string-color: var(--tropical-indigo);
--code-builtin-color: var(--mint);
--code-function-color: var(--bittersweet);
--code-operator-color: var(--mint);
--code-comment-color: var(--cool-gray);
--code-text-size: 0.9em;
--code-size: 0.9rem;
--hr-color: var(--light-hr-color) !important;
/* Inline Code */
.cm-s-obsidian span.cm-inline-code {
color: var(--light-code) !important;
}
.markdown-rendered code {
color: var(--light-code);
}
/* Links */
.cm-s-obsidian span.cm-link {
color: var(--light-link) !important;
}
.cm-s-obsidian span.cm-formatting-link.cm-url, .cm-s-obsidian span.cm-url {
color: var(--light-link) !important;
}
--links-color: var(--light-link);
/* Tags */
.cm-hashtag {
color: var(--light-link) !important;
}
.tag {
color: var(--light-link) !important;
}
/* Quotes */
--blockquote-background-color: var(--light-code-background);
--blockquote-border-color: var(--light-accent);
--blockquote-border-thickness: 5px;
/* Explorer */
--folder-title-color: var(--rich-black);
--file-title-color: var(--rich-black);
--folder-filter: invert(55%) sepia(89%) saturate(330%) hue-rotate(89deg) brightness(99%) contrast(88%);
--file-content: '📄 ';
}
/* ----------- Links ----------- */
.external-link {
color: var(--links-color);
}
/* ----------- Highlight ----------- */
.cm-s-obsidian span.cm-highlight, .markdown-rendered mark {
background-color: var(--highlight-bg-color);
color: var(--highlight-text-color);
padding: 2px 2px 2px 2px;
}
/* ----------- Quotes ----------- */
.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote, .markdown-rendered blockquote {
font-style: var(--quote-style);
font-size: 0.9em;
background-color: var(--quote-background);
padding-top: 0.3em;
padding-bottom: 0.4em;
}
/* ----------- Tables ----------- */
table {
margin-left: auto;
margin-right: auto;
}
.markdown-preview-view table {
margin-left: auto;
margin-right: auto;
}
/* ----------- Images ----------- */
img {display:block;
margin-left:auto;
margin-right:auto;}
.markdown-preview-view img {
display: block;
margin-top: 20pt;
margin-bottom: 20pt;
margin-left: auto;
margin-right: auto;
width: 40%; /* experiment with values */
transition:transform 0.25s ease;
}
.markdown-preview-view img:hover {
-webkit-transform:scale(1); /* experiment with values */
transform:scale(1.4);
}
/* ----------- Code - Code Block ----------- */
pre code {
background-color: var(--codeblock-background) !important;
border: var(--codeblock-background) !important;
color: var(--codeblock-color)!important;
}
.markdown-rendered pre {
background-color: var(--codeblock-background);
}
pre[class*="language-"],
code[class*="language-"]
{
font-size: var(--code-text-size)!important;
background: var(--codeblock-background)!important;
color: var(--codeblock-color)!important;
}
.cm-s-obsidian div.HyperMD-codeblock-begin-bg,
.cm-s-obsidian div.HyperMD-codeblock-end-bg {
background-color: var(--codeblock-background);
}
.cm-s-obsidian div.HyperMD-codeblock-bg {
left: 0;
right: 0;
background-color: var(--codeblock-background);
}
.cm-inline-code{
background-color: var(--inline-code-background)!important;
color: var(--inline-code-color)!important;
font-size: var(--code-text-size)!important;
padding: 3px 4px;
border-radius: 5px;
}
.markdown-rendered code {
background-color: var(--codeblock-background)!important;
/* color: var(--white); */
color: var(--inline-code-color);
font-size: var(--code-text-size)!important;
padding: 3px 4px;
border-radius: 5px;
}
/* ----------- Code Styling ----------- */
.cm-link, .cm-variable, .cm-variable-2, .cm-variable-3 {color: var(--code-variable-color)!important;} /* variable */
.cm-def.cm-hmd-codeblock, .token.function, .token.class-name{
color: var(--code-function-color)!important;
text-emphasis: italic;
} /* function name in declaration */
.cm-builtin, .cm-property, .cm-attribute, .cm-type, .cm-keyword, .token.keyword, .token.builtin, .token.property {color: var(--code-builtin-color)!important;} /* built-in functions, methods */
.cm-hmd-codeblock.cm-string, .token.string {color: var(--code-string-color)!important;} /* strings */
.cm-hmd-codeblock.cm-number, .token.number {color: var(--code-operator-color)!important} /* numbers */
.cm-operator, .token.operator {color: var(--code-operator-color)!important;} /* operators */
.cm-hmd-codeblock {color: var(--codeblock-color);} /* codeblock */
.cm-comment, .token.comment {color: var(--code-comment-color)!important;} /* comment */
/* ----------- File Explorer ----------- */
.nav-folder-children .nav-file-title-content:first-child::before
{
content: var(--file-content);
}
.nav-folder-children .nav-folder-title-content::before
{
content: '📁 '; /*FCD53F*/
margin-right: 0px !important;
}
.nav-folder-title-content
{
color: var(--folder-title-color);
}
.nav-file-title-content
{
color: var(--file-title-color);
}
/* how to get CSS filter ?
0, open website: https://www.zhangxinxu.com/sp/filter.html
1, first: image original color this is : #FCD53F folder color
2, second: display color i want : #D6FFF1
3, CSS filter trans btn clik: the result is :
filter: invert(99%) sepia(90%) saturate(382%) hue-rotate(69deg) brightness(106%) contrast(102%);
4, pause👇 : OK ;
*/
.nav-folder-title-content::before {
font-size: 13px;
filter: var(--folder-filter);
/*
/* If you want to change the icon, you only need to modify this code.you can only change d=''
*/
/* Master folder icon */
content: url("data:image/svg+xml;charset=UTF-8, <svg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 100 100' width='17' height='17'><path fill='currentColor' stroke='currentColor' d='M6.1,8c-3.3,0-6,2.7-6,6v73.8c-0.1,0.5-0.1,0.9,0.1,1.4c0.6,2.7,3,4.8,5.9,4.8h78c3,0,5.4-2.2,5.9-5.1 c0-0.1,0.1-0.2,0.1-0.4c0,0,0-0.1,0-0.1l0.1-0.3c0,0,0,0,0-0.1l9.9-53.6l0.1-0.2V34c0-3.3-2.7-6-6-6v-6c0-3.3-2.7-6-6-6H36.1 c0,0,0,0-0.1,0c-0.1,0-0.2-0.2-0.6-0.6c-0.5-0.6-1.1-1.5-1.7-2.5c-0.6-1-1.3-2.1-2.1-3C30.9,9,29.7,8,28.1,8L6.1,8z M6.1,12h22 c-0.1,0,0.1,0,0.6,0.6c0.5,0.6,1.1,1.5,1.7,2.5c0.6,1,1.3,2.1,2.1,3c0.8,0.9,1.9,1.9,3.6,1.9h52c1.1,0,2,0.9,2,2v6h-74 c-3.1,0-5.7,2.5-5.9,5.6h-0.1L10.1,34l-6,32.4V14C4.1,12.9,4.9,12,6.1,12z M16.1,32h78c1.1,0,2,0.9,2,2l-9.8,53.1l-0.1,0.1 c0,0.1,0,0.2-0.1,0.2c0,0.1,0,0.2-0.1,0.2c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1c0,0.1,0,0.2-0.1,0.3c0,0.1,0,0.1,0,0.2 c0,0.1,0,0.2,0,0.2c-0.3,0.8-1,1.4-1.9,1.4h-78c-1.1,0-2-0.9-2-2L14,34.4l0.1-0.2V34C14.1,32.9,14.9,32,16.1,32L16.1,32z'/></svg>");
margin-right: 7px !important;
}
+29
View File
@@ -0,0 +1,29 @@
{
"types": {
"aliases": "aliases",
"cssclasses": "multitext",
"tags": "tags",
"TQ_explain": "checkbox",
"TQ_extra_instructions": "text",
"TQ_short_mode": "checkbox",
"TQ_show_backlink": "checkbox",
"TQ_show_cancelled_date": "checkbox",
"TQ_show_created_date": "checkbox",
"TQ_show_depends_on": "checkbox",
"TQ_show_done_date": "checkbox",
"TQ_show_due_date": "checkbox",
"TQ_show_edit_button": "checkbox",
"TQ_show_id": "checkbox",
"TQ_show_on_completion": "checkbox",
"TQ_show_postpone_button": "checkbox",
"TQ_show_priority": "checkbox",
"TQ_show_recurrence_rule": "checkbox",
"TQ_show_scheduled_date": "checkbox",
"TQ_show_start_date": "checkbox",
"TQ_show_tags": "checkbox",
"TQ_show_task_count": "checkbox",
"TQ_show_toolbar": "checkbox",
"TQ_show_tree": "checkbox",
"TQ_show_urgency": "checkbox"
}
}

Some files were not shown because too many files have changed in this diff Show More