mirror of
https://github.com/Pantonius/pantosite-astro.git
synced 2026-04-26 09:24:38 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc87dde39f | ||
|
|
31cae670c4 | ||
|
|
7e4f1acbf1 | ||
|
|
fcb52ebdc9 | ||
|
|
c0a7f193db | ||
|
|
da9d256b71 | ||
|
|
d03478f81a | ||
|
|
120ce7726f | ||
|
|
bd814e06ce | ||
|
|
cd99d22174 | ||
|
|
128af8a7d5 |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
public/images/photos/*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||||
39
.github/workflows/deploy.yml
vendored
39
.github/workflows/deploy.yml
vendored
@@ -1,39 +0,0 @@
|
|||||||
name: Deploy to GitHub Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Trigger the workflow every time you push to the `main` branch
|
|
||||||
# Using a different branch name? Replace `main` with your branch’s name
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
# Allows you to run this workflow manually from the Actions tab on GitHub.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
# Allow this job to clone the repo and create a page deployment
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout your repository using git
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Install, build, and upload your site
|
|
||||||
uses: withastro/action@v3
|
|
||||||
# with:
|
|
||||||
# path: . # The root location of your Astro project inside the repository. (optional)
|
|
||||||
# node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional)
|
|
||||||
# package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
needs: build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
environment:
|
|
||||||
name: github-pages
|
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
|
||||||
steps:
|
|
||||||
- name: Deploy to GitHub Pages
|
|
||||||
id: deployment
|
|
||||||
uses: actions/deploy-pages@v4
|
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -22,3 +22,8 @@ pnpm-debug.log*
|
|||||||
|
|
||||||
# jetbrains setting folder
|
# jetbrains setting folder
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
|
# Vault CMS / Obsidian
|
||||||
|
.obsidian/workspace.json
|
||||||
|
.obsidian/workspace-mobile.json
|
||||||
|
.ref/
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import sitemap from '@astrojs/sitemap';
|
|||||||
|
|
||||||
// https://astro.build/config
|
// https://astro.build/config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
vite: {
|
||||||
|
assetsInclude: ['**/*.base', '**/.obsidian/**', '**/_bases/**'],
|
||||||
|
},
|
||||||
site: 'https://pantonius.dev',
|
site: 'https://pantonius.dev',
|
||||||
markdown: {
|
markdown: {
|
||||||
remarkPlugins: [remarkMath],
|
remarkPlugins: [remarkMath],
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ services:
|
|||||||
build: .
|
build: .
|
||||||
ports:
|
ports:
|
||||||
- "4443:80"
|
- "4443:80"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|||||||
14270
package-lock.json
generated
14270
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -9,11 +9,10 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "^4.3.5",
|
"@astrojs/mdx": "^5.0.3",
|
||||||
"@astrojs/rss": "^4.0.12",
|
"@astrojs/rss": "^4.0.18",
|
||||||
"@astrojs/sitemap": "^3.5.1",
|
"@astrojs/sitemap": "^3.7.2",
|
||||||
"@astrojs/vue": "^5.1.1",
|
"astro": "^6.1.4",
|
||||||
"astro": "^5.13.7",
|
|
||||||
"rehype-katex": "^7.0.1",
|
"rehype-katex": "^7.0.1",
|
||||||
"remark-math": "^6.0.0"
|
"remark-math": "^6.0.0"
|
||||||
}
|
}
|
||||||
|
|||||||
3300
public/geojson/freiraum/uni_konstanz.geojson
Normal file
3300
public/geojson/freiraum/uni_konstanz.geojson
Normal file
File diff suppressed because it is too large
Load Diff
BIN
public/images/photography/DSC05932.jpg
Normal file
BIN
public/images/photography/DSC05932.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 MiB |
BIN
public/images/photography/DSC06124.jpg
Normal file
BIN
public/images/photography/DSC06124.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.7 MiB |
BIN
public/images/photography/DSC06196.jpg
Normal file
BIN
public/images/photography/DSC06196.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 MiB |
BIN
public/images/photography/UKN_Topo_01.jpg
Normal file
BIN
public/images/photography/UKN_Topo_01.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.4 MiB |
BIN
public/images/photography/UKN_Topo_02.jpg
Normal file
BIN
public/images/photography/UKN_Topo_02.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.3 MiB |
BIN
public/images/photography/UKN_Topo_03.jpg
Normal file
BIN
public/images/photography/UKN_Topo_03.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.4 MiB |
22
src/bachelor/[...slug].astro
Normal file
22
src/bachelor/[...slug].astro
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
import { getCollection } from 'astro:content';
|
||||||
|
import BlogPost from '../../layouts/BlogPost.astro';
|
||||||
|
import { render } from 'astro:content';
|
||||||
|
import { convertCollectionPost, convertPost, type Post } from '../../models/Post';
|
||||||
|
|
||||||
|
export async function getStaticPaths() {
|
||||||
|
const posts: Post[] = (await getCollection('blog')).map(convertPost);
|
||||||
|
return posts.map((post) => ({
|
||||||
|
params: { slug: post.id },
|
||||||
|
props: post,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
type Props = Post;
|
||||||
|
|
||||||
|
const post: Post = Astro.props;
|
||||||
|
const { Content } = await render(convertCollectionPost(post));
|
||||||
|
---
|
||||||
|
|
||||||
|
<BlogPost {...post}>
|
||||||
|
<Content />
|
||||||
|
</BlogPost>
|
||||||
32
src/bachelor/index.astro
Normal file
32
src/bachelor/index.astro
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
import BaseHead from '../../components/BaseHead.astro';
|
||||||
|
import Header from '../../components/Header.astro';
|
||||||
|
import Main from '../../components/Main.astro';
|
||||||
|
import Footer from '../../components/Footer.astro';
|
||||||
|
import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts';
|
||||||
|
import { getCollection } from 'astro:content';
|
||||||
|
import Showcase from '../../components/Showcase.astro';
|
||||||
|
import { convertPost } from '../../models/Post';
|
||||||
|
|
||||||
|
const posts: Post[] = (await getCollection('blog')).map(convertPost).sort(
|
||||||
|
(a, b) => b.pubDate.valueOf() - a.pubDate.valueOf(),
|
||||||
|
);
|
||||||
|
---
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<Header />
|
||||||
|
<Main>
|
||||||
|
{posts.length === 0 ? (
|
||||||
|
<h1 style="opacity: .5; user-select: none;">No posts yet 😛</h1>
|
||||||
|
) : (
|
||||||
|
<Showcase collection="blog" posts={posts} />
|
||||||
|
)}
|
||||||
|
</Main>
|
||||||
|
<Footer />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -44,4 +44,4 @@ const { title, description, image = '/logo.png' } = Astro.props;
|
|||||||
<meta property="twitter:url" content={Astro.url} />
|
<meta property="twitter:url" content={Astro.url} />
|
||||||
<meta property="twitter:title" content={title} />
|
<meta property="twitter:title" content={title} />
|
||||||
<meta property="twitter:description" content={description} />
|
<meta property="twitter:description" content={description} />
|
||||||
<meta property="twitter:image" content={new URL(image, Astro.url)} />
|
<meta property="twitter:image" content={new URL(image, Astro.url)} />
|
||||||
|
|||||||
@@ -1,25 +1,11 @@
|
|||||||
---
|
---
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
|
import Socials from "./Socials.astro";
|
||||||
---
|
---
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
© {today.getFullYear()} <a href="/about">Anton Pogrebnjak</a>. All rights reserved.
|
© {today.getFullYear()} <a href="/about">Anton</a>. All rights reserved.
|
||||||
<div class="social-links">
|
<Socials />
|
||||||
<a href="https://github.com/Pantonius" target="_blank">
|
|
||||||
<span class="sr-only">Go to my GitHub repo</span>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
aria-hidden="true"
|
|
||||||
width="32"
|
|
||||||
height="32"
|
|
||||||
astro-icon="social/github"
|
|
||||||
><path
|
|
||||||
fill="currentColor"
|
|
||||||
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"
|
|
||||||
></path></svg
|
|
||||||
>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</footer>
|
</footer>
|
||||||
<style>
|
<style>
|
||||||
footer {
|
footer {
|
||||||
@@ -28,12 +14,6 @@ const today = new Date();
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-links {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 1em;
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
.social-links a {
|
.social-links a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
|
|||||||
25
src/components/Freiraum/UKNMap.astro
Normal file
25
src/components/Freiraum/UKNMap.astro
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<div id="map" style="height: 400px;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let map = L.map('map').setView([47.689749, 9.187857], 16);
|
||||||
|
L.tileLayer('https://sgx.geodatenzentrum.de/wmts_basemapde/tile/1.0.0/de_basemapde_web_raster_grau/default/GLOBAL_WEBMERCATOR/{z}/{y}/{x}.png', {
|
||||||
|
minZoom: 0,
|
||||||
|
maxZoom: 20,
|
||||||
|
attribution: 'Map data: © <a href="http://www.govdata.de/dl-de/by-2-0">dl-de/by-2-0</a>',
|
||||||
|
ext: 'png'
|
||||||
|
}).addTo(map);
|
||||||
|
|
||||||
|
let geojson = await fetch('/geojson/freiraum/uni_konstanz.geojson', {
|
||||||
|
method: 'GET',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}).then(res => res.json());
|
||||||
|
|
||||||
|
let geoLayer = L.geoJson(geojson, {
|
||||||
|
style: { fillColor: 'rgba(18, 174, 225, .2)', fillOpacity: 1, stroke: true, color: 'rgba(18, 174, 225, .6)' },
|
||||||
|
}).addTo(map);
|
||||||
|
</script>
|
||||||
49
src/components/Gallery.astro
Normal file
49
src/components/Gallery.astro
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
---
|
||||||
|
import type { Photo } from '../models/Photo.ts';
|
||||||
|
|
||||||
|
const photos: Photo[] = Astro.props.photos;
|
||||||
|
const collection: string = Astro.props.collection;
|
||||||
|
|
||||||
|
const color = Astro.props.color || 'var(--text)';
|
||||||
|
---
|
||||||
|
<section>
|
||||||
|
{
|
||||||
|
photos.map((photo) => (
|
||||||
|
<a href={"/photography/" + photo.id}>
|
||||||
|
<img src={photo.src} />
|
||||||
|
</a>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<style define:vars={{ color }}>
|
||||||
|
section {
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 2px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 200px;
|
||||||
|
max-height: 12.5rem;
|
||||||
|
min-width: 200px;
|
||||||
|
max-width: 12.5rem;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 0;
|
||||||
|
|
||||||
|
transition: transform .2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
img:hover {
|
||||||
|
transform: scale(1.2);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,34 +1,21 @@
|
|||||||
---
|
---
|
||||||
import { ClientRouter } from "astro:transitions";
|
import { ClientRouter } from "astro:transitions";
|
||||||
import HeaderLink from "./HeaderLink.astro";
|
import HeaderLink from "./HeaderLink.astro";
|
||||||
|
import Socials from "./Socials.astro";
|
||||||
---
|
---
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<nav>
|
<nav class="head">
|
||||||
<a class="logo" href="/">
|
<a class="logo" href="/">
|
||||||
<img src="/logo.svg" alt="ಠ_ಠ" />
|
<img src="/logo.svg" alt="ಠ_ಠ" />
|
||||||
</a>
|
</a>
|
||||||
<div class="internal-links">
|
<Socials/>
|
||||||
<HeaderLink href="/">Home</HeaderLink>
|
|
||||||
<HeaderLink href="/projects">Projects</HeaderLink>
|
|
||||||
<HeaderLink href="/blog">Blog</HeaderLink>
|
|
||||||
</div>
|
|
||||||
<div class="social-links">
|
|
||||||
<a href="https://github.com/Pantonius" target="_blank">
|
|
||||||
<span class="sr-only">Go to my GitHub repo</span>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
aria-hidden="true"
|
|
||||||
width="32"
|
|
||||||
height="32"
|
|
||||||
><path
|
|
||||||
fill="currentColor"
|
|
||||||
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"
|
|
||||||
></path></svg
|
|
||||||
>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
<nav class="internal-links">
|
||||||
|
<HeaderLink href="/projects">Projects</HeaderLink>
|
||||||
|
<HeaderLink href="/photography">Photography</HeaderLink>
|
||||||
|
<HeaderLink href="/blog">Blog</HeaderLink>
|
||||||
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<ClientRouter />
|
<ClientRouter />
|
||||||
@@ -36,10 +23,22 @@ import HeaderLink from "./HeaderLink.astro";
|
|||||||
<style>
|
<style>
|
||||||
header {
|
header {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0 1em;
|
padding: .5em 1em;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: var(--background-soft);
|
background-color: var(--background-soft);
|
||||||
}
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
header .logo {
|
header .logo {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -54,36 +53,46 @@ import HeaderLink from "./HeaderLink.astro";
|
|||||||
height: 24pt;
|
height: 24pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav {
|
.internal-links {
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a {
|
position: absolute;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.internal-links a {
|
||||||
padding: .4em 0.5em;
|
padding: .4em 0.5em;
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
border-bottom: 4px solid transparent;
|
border-bottom: 4px solid transparent;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav a.active {
|
.internal-links a.active {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-bottom-color: var(--primary);
|
border-bottom-color: var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-links,
|
@media (max-width: 720px) {
|
||||||
.social-links a {
|
header {
|
||||||
display: flex;
|
flex-direction: column;
|
||||||
}
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 720px) {
|
|
||||||
header .logo img {
|
header .logo img {
|
||||||
height: 18pt;
|
height: 18pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav {
|
nav.head {
|
||||||
font-size: 16px;
|
padding: .5em 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.internal-links {
|
||||||
|
border-top: var(--background) 1px solid;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -15,10 +15,11 @@ const isActive = href === pathname || href === '/' + (subpath?.[0] || '');
|
|||||||
<style>
|
<style>
|
||||||
a {
|
a {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
font-variant-caps: small-caps;
|
||||||
}
|
}
|
||||||
a.active {
|
a.active {
|
||||||
font-weight: bolder;
|
font-weight: bolder;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import { ClientRouter } from "astro:transitions";
|
|||||||
document.addEventListener("mousemove", (e) => {
|
document.addEventListener("mousemove", (e) => {
|
||||||
mouse.x = e.clientX;
|
mouse.x = e.clientX;
|
||||||
mouse.y = e.clientY;
|
mouse.y = e.clientY;
|
||||||
|
draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
let distanceThreshold = .2;
|
let distanceThreshold = .2;
|
||||||
@@ -66,7 +67,5 @@ import { ClientRouter } from "astro:transitions";
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
setInterval(() => {
|
draw();
|
||||||
draw();
|
|
||||||
}, 1000 / 60);
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ const color = Astro.props.color || 'var(--text)';
|
|||||||
<a href={`/${collection}/${post.id}/`}>
|
<a href={`/${collection}/${post.id}/`}>
|
||||||
{
|
{
|
||||||
post.heroImage && (
|
post.heroImage && (
|
||||||
<img class="heroImage" src={post.heroImage} alt="" />
|
<img class="heroImage" src={post.heroImage.src} alt="" />
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -78,6 +78,8 @@ const color = Astro.props.color || 'var(--text)';
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
color: var(--color);
|
color: var(--color);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
font-size: 1em;
|
||||||
|
font-variant-caps: small-caps;
|
||||||
}
|
}
|
||||||
.date {
|
.date {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -101,8 +103,8 @@ const color = Astro.props.color || 'var(--text)';
|
|||||||
ul li:first-child {
|
ul li:first-child {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
ul li:first-child .title {
|
ul li:first-child .title, ul li .title {
|
||||||
font-size: 1.563em;
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
24
src/components/Socials.astro
Normal file
24
src/components/Socials.astro
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<div class="social-links">
|
||||||
|
<a href="https://github.com/Pantonius" target="_blank">
|
||||||
|
<span class="sr-only">Go to my GitHub repo</span>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" width="42" height="42"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill="currentColor" d="M237.9 461.4C237.9 463.4 235.6 465 232.7 465C229.4 465.3 227.1 463.7 227.1 461.4C227.1 459.4 229.4 457.8 232.3 457.8C235.3 457.5 237.9 459.1 237.9 461.4zM206.8 456.9C206.1 458.9 208.1 461.2 211.1 461.8C213.7 462.8 216.7 461.8 217.3 459.8C217.9 457.8 216 455.5 213 454.6C210.4 453.9 207.5 454.9 206.8 456.9zM251 455.2C248.1 455.9 246.1 457.8 246.4 460.1C246.7 462.1 249.3 463.4 252.3 462.7C255.2 462 257.2 460.1 256.9 458.1C256.6 456.2 253.9 454.9 251 455.2zM316.8 72C178.1 72 72 177.3 72 316C72 426.9 141.8 521.8 241.5 555.2C254.3 557.5 258.8 549.6 258.8 543.1C258.8 536.9 258.5 502.7 258.5 481.7C258.5 481.7 188.5 496.7 173.8 451.9C173.8 451.9 162.4 422.8 146 415.3C146 415.3 123.1 399.6 147.6 399.9C147.6 399.9 172.5 401.9 186.2 425.7C208.1 464.3 244.8 453.2 259.1 446.6C261.4 430.6 267.9 419.5 275.1 412.9C219.2 406.7 162.8 398.6 162.8 302.4C162.8 274.9 170.4 261.1 186.4 243.5C183.8 237 175.3 210.2 189 175.6C209.9 169.1 258 202.6 258 202.6C278 197 299.5 194.1 320.8 194.1C342.1 194.1 363.6 197 383.6 202.6C383.6 202.6 431.7 169 452.6 175.6C466.3 210.3 457.8 237 455.2 243.5C471.2 261.2 481 275 481 302.4C481 398.9 422.1 406.6 366.2 412.9C375.4 420.8 383.2 435.8 383.2 459.3C383.2 493 382.9 534.7 382.9 542.9C382.9 549.4 387.5 557.3 400.2 555C500.2 521.8 568 426.9 568 316C568 177.3 455.5 72 316.8 72zM169.2 416.9C167.9 417.9 168.2 420.2 169.9 422.1C171.5 423.7 173.8 424.4 175.1 423.1C176.4 422.1 176.1 419.8 174.4 417.9C172.8 416.3 170.5 415.6 169.2 416.9zM158.4 408.8C157.7 410.1 158.7 411.7 160.7 412.7C162.3 413.7 164.3 413.4 165 412C165.7 410.7 164.7 409.1 162.7 408.1C160.7 407.5 159.1 407.8 158.4 408.8zM190.8 444.4C189.2 445.7 189.8 448.7 192.1 450.6C194.4 452.9 197.3 453.2 198.6 451.6C199.9 450.3 199.3 447.3 197.3 445.4C195.1 443.1 192.1 442.8 190.8 444.4zM179.4 429.7C177.8 430.7 177.8 433.3 179.4 435.6C181 437.9 183.7 438.9 185 437.9C186.6 436.6 186.6 434 185 431.7C183.6 429.4 181 428.4 179.4 429.7z"/></svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://mastodon.social/@pantonius" target="_blank">
|
||||||
|
<span class="sr-only">Go to my Mastodon profile</span>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" width="42" height="42"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill="currentColor" d="M529 243.1C529 145.9 465.3 117.4 465.3 117.4C402.8 88.7 236.7 89 174.8 117.4C174.8 117.4 111.1 145.9 111.1 243.1C111.1 358.8 104.5 502.5 216.7 532.2C257.2 542.9 292 545.2 320 543.6C370.8 540.8 399.3 525.5 399.3 525.5L397.6 488.6C397.6 488.6 361.3 500 320.5 498.7C280.1 497.3 237.5 494.3 230.9 444.7C230.3 440.1 230 435.4 230 430.8C315.6 451.7 388.7 439.9 408.7 437.5C464.8 430.8 513.7 396.2 519.9 364.6C529.7 314.8 528.9 243.1 528.9 243.1zM453.9 368.3L407.3 368.3L407.3 254.1C407.3 204.4 343.3 202.5 343.3 261L343.3 323.5L297 323.5L297 261C297 202.5 233 204.4 233 254.1L233 368.3L186.3 368.3C186.3 246.2 181.1 220.4 204.7 193.3C230.6 164.4 284.5 162.5 308.5 199.4L320.1 218.9L331.7 199.4C355.8 162.3 409.8 164.6 435.5 193.3C459.2 220.6 453.9 246.3 453.9 368.3L453.9 368.3z"/></svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://instagram.com/kindpanto" target="_blank">
|
||||||
|
<span class="sr-only">Go to my Instgram profile</span>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" width="42" height="42"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill="currentColor" d="M320.3 205C256.8 204.8 205.2 256.2 205 319.7C204.8 383.2 256.2 434.8 319.7 435C383.2 435.2 434.8 383.8 435 320.3C435.2 256.8 383.8 205.2 320.3 205zM319.7 245.4C360.9 245.2 394.4 278.5 394.6 319.7C394.8 360.9 361.5 394.4 320.3 394.6C279.1 394.8 245.6 361.5 245.4 320.3C245.2 279.1 278.5 245.6 319.7 245.4zM413.1 200.3C413.1 185.5 425.1 173.5 439.9 173.5C454.7 173.5 466.7 185.5 466.7 200.3C466.7 215.1 454.7 227.1 439.9 227.1C425.1 227.1 413.1 215.1 413.1 200.3zM542.8 227.5C541.1 191.6 532.9 159.8 506.6 133.6C480.4 107.4 448.6 99.2 412.7 97.4C375.7 95.3 264.8 95.3 227.8 97.4C192 99.1 160.2 107.3 133.9 133.5C107.6 159.7 99.5 191.5 97.7 227.4C95.6 264.4 95.6 375.3 97.7 412.3C99.4 448.2 107.6 480 133.9 506.2C160.2 532.4 191.9 540.6 227.8 542.4C264.8 544.5 375.7 544.5 412.7 542.4C448.6 540.7 480.4 532.5 506.6 506.2C532.8 480 541 448.2 542.8 412.3C544.9 375.3 544.9 264.5 542.8 227.5zM495 452C487.2 471.6 472.1 486.7 452.4 494.6C422.9 506.3 352.9 503.6 320.3 503.6C287.7 503.6 217.6 506.2 188.2 494.6C168.6 486.8 153.5 471.7 145.6 452C133.9 422.5 136.6 352.5 136.6 319.9C136.6 287.3 134 217.2 145.6 187.8C153.4 168.2 168.5 153.1 188.2 145.2C217.7 133.5 287.7 136.2 320.3 136.2C352.9 136.2 423 133.6 452.4 145.2C472 153 487.1 168.1 495 187.8C506.7 217.3 504 287.3 504 319.9C504 352.5 506.7 422.6 495 452z"/></svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.social-links,
|
||||||
|
.social-links a {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: var(--text);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,34 +1,65 @@
|
|||||||
import { glob } from 'astro/loaders';
|
import { glob, file } from 'astro/loaders';
|
||||||
import { defineCollection, z } from 'astro:content';
|
import { defineCollection, z } from 'astro:content';
|
||||||
|
|
||||||
|
const bachelor = defineCollection({
|
||||||
|
// Load Markdown and MDX files in the `src/content/blog/` directory.
|
||||||
|
loader: glob({ base: './src/content/bachelor', pattern: '**/*.{md,mdx}' }),
|
||||||
|
// Type-check frontmatter using a schema
|
||||||
|
schema: ({ image }) => z.object({
|
||||||
|
title: z.string(),
|
||||||
|
description: z.string(),
|
||||||
|
part: z.number(),
|
||||||
|
// Transform string to Date object
|
||||||
|
pubDate: z.coerce.date(),
|
||||||
|
updatedDate: z.coerce.date().optional(),
|
||||||
|
heroImage: image().optional(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
const blog = defineCollection({
|
const blog = defineCollection({
|
||||||
// Load Markdown and MDX files in the `src/content/blog/` directory.
|
// Load Markdown and MDX files in the `src/content/blog/` directory.
|
||||||
loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
|
loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
|
||||||
// Type-check frontmatter using a schema
|
// Type-check frontmatter using a schema
|
||||||
schema: z.object({
|
schema: ({ image }) => z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
// Transform string to Date object
|
// Transform string to Date object
|
||||||
pubDate: z.coerce.date(),
|
pubDate: z.coerce.date(),
|
||||||
updatedDate: z.coerce.date().optional(),
|
updatedDate: z.coerce.date().optional(),
|
||||||
heroImage: z.string().optional(),
|
heroImage: image().optional(),
|
||||||
}),
|
}),
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const projects = defineCollection({
|
const photography = defineCollection({
|
||||||
// Load Markdown and MDX files in the `src/content/blog/` directory.
|
// Load Markdown and MDX files in the `src/content/projects/` directory.
|
||||||
loader: glob({
|
loader: file(
|
||||||
base: './src/content/projects', pattern: '**/*.{md,mdx}'
|
'./src/content/photography/index.json'
|
||||||
}),
|
),
|
||||||
// Type-check frontmatter using a schema
|
// Type-check frontmatter using a schema
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
|
src: z.string(),
|
||||||
// Transform string to Date object
|
// Transform string to Date object
|
||||||
pubDate: z.coerce.date(),
|
pubDate: z.coerce.date(),
|
||||||
updatedDate: z.coerce.date().optional(),
|
|
||||||
heroImage: z.string().optional(),
|
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const collections = { blog, projects };
|
const projects = defineCollection({
|
||||||
|
// Load Markdown and MDX files in the `src/content/projects/` directory.
|
||||||
|
loader: glob({
|
||||||
|
base: './src/content/projects', pattern: '**/*.{md,mdx}'
|
||||||
|
}),
|
||||||
|
// Type-check frontmatter using a schema
|
||||||
|
schema: ({ image }) => z.object({
|
||||||
|
title: z.string(),
|
||||||
|
description: z.string(),
|
||||||
|
// Transform string to Date object
|
||||||
|
pubDate: z.coerce.date(),
|
||||||
|
updatedDate: z.coerce.date().optional(),
|
||||||
|
heroImage: image().optional(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const collections = { bachelor, blog, photography, projects };
|
||||||
|
|||||||
47
src/content/.obsidian/app.json
vendored
Normal file
47
src/content/.obsidian/app.json
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"showInlineTitle": false,
|
||||||
|
"promptDelete": true,
|
||||||
|
"showIndentGuide": false,
|
||||||
|
"attachmentFolderPath": "attachments",
|
||||||
|
"userIgnoreFilters": [
|
||||||
|
"dist",
|
||||||
|
"node_modules/"
|
||||||
|
],
|
||||||
|
"focusNewTab": false,
|
||||||
|
"mobilePullAction": "command-palette:open",
|
||||||
|
"trashOption": "system",
|
||||||
|
"alwaysUpdateLinks": true,
|
||||||
|
"useMarkdownLinks": true,
|
||||||
|
"mobileToolbarCommands": [
|
||||||
|
"editor:undo",
|
||||||
|
"editor:redo",
|
||||||
|
"editor:insert-wikilink",
|
||||||
|
"editor:insert-embed",
|
||||||
|
"editor:insert-tag",
|
||||||
|
"editor:attach-file",
|
||||||
|
"editor:set-heading",
|
||||||
|
"editor:toggle-bold",
|
||||||
|
"editor:toggle-italics",
|
||||||
|
"editor:toggle-strikethrough",
|
||||||
|
"editor:toggle-highlight",
|
||||||
|
"editor:toggle-code",
|
||||||
|
"editor:toggle-blockquote",
|
||||||
|
"editor:insert-link",
|
||||||
|
"editor:toggle-bullet-list",
|
||||||
|
"editor:toggle-numbered-list",
|
||||||
|
"editor:toggle-checklist-status",
|
||||||
|
"editor:indent-list",
|
||||||
|
"editor:unindent-list",
|
||||||
|
"astro-composer:standardize-properties",
|
||||||
|
"astro-composer:convert-wikilinks-astro",
|
||||||
|
"seo:seo-run-current",
|
||||||
|
"editor:configure-toolbar"
|
||||||
|
],
|
||||||
|
"newFileLocation": "folder",
|
||||||
|
"newFileFolderPath": "blog",
|
||||||
|
"newLinkFormat": "relative",
|
||||||
|
"mobileQuickRibbonItem": "",
|
||||||
|
"vimMode": false,
|
||||||
|
"readableLineLength": true,
|
||||||
|
"defaultViewMode": "source"
|
||||||
|
}
|
||||||
10
src/content/.obsidian/appearance.json
vendored
Normal file
10
src/content/.obsidian/appearance.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"cssTheme": "Oxygen",
|
||||||
|
"showViewHeader": true,
|
||||||
|
"showRibbon": false,
|
||||||
|
"enabledCssSnippets": [
|
||||||
|
"astro-modular-styling"
|
||||||
|
],
|
||||||
|
"theme": "moonstone",
|
||||||
|
"accentColor": ""
|
||||||
|
}
|
||||||
3
src/content/.obsidian/backlink.json
vendored
Normal file
3
src/content/.obsidian/backlink.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"backlinkInDocument": true
|
||||||
|
}
|
||||||
10
src/content/.obsidian/bookmarks.json
vendored
Normal file
10
src/content/.obsidian/bookmarks.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"ctime": 1755331588238,
|
||||||
|
"path": "_formatting-reference.md",
|
||||||
|
"title": "Formatting Reference"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
25
src/content/.obsidian/community-plugins.json
vendored
Normal file
25
src/content/.obsidian/community-plugins.json
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[
|
||||||
|
"seo",
|
||||||
|
"property-over-file-name",
|
||||||
|
"oxygen-settings",
|
||||||
|
"vault-cms",
|
||||||
|
"astro-composer",
|
||||||
|
"settings-search",
|
||||||
|
"editing-toolbar",
|
||||||
|
"image-manager",
|
||||||
|
"bases-cms",
|
||||||
|
"home-base",
|
||||||
|
"obsidian-git",
|
||||||
|
"zenmode",
|
||||||
|
"tag-wrangler",
|
||||||
|
"explorer-focus",
|
||||||
|
"ui-tweaker",
|
||||||
|
"obsidian42-brat",
|
||||||
|
"omnisearch",
|
||||||
|
"data-files-editor",
|
||||||
|
"file-name-history",
|
||||||
|
"nested-properties",
|
||||||
|
"paste-image-into-property",
|
||||||
|
"homepage",
|
||||||
|
"obsidian-paste-image-rename"
|
||||||
|
]
|
||||||
33
src/content/.obsidian/core-plugins.json
vendored
Normal file
33
src/content/.obsidian/core-plugins.json
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"file-explorer": true,
|
||||||
|
"global-search": true,
|
||||||
|
"switcher": true,
|
||||||
|
"graph": false,
|
||||||
|
"backlink": false,
|
||||||
|
"canvas": false,
|
||||||
|
"outgoing-link": false,
|
||||||
|
"tag-pane": true,
|
||||||
|
"footnotes": false,
|
||||||
|
"properties": false,
|
||||||
|
"page-preview": false,
|
||||||
|
"daily-notes": false,
|
||||||
|
"templates": false,
|
||||||
|
"note-composer": false,
|
||||||
|
"command-palette": true,
|
||||||
|
"slash-command": true,
|
||||||
|
"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": false,
|
||||||
|
"bases": true,
|
||||||
|
"webviewer": false
|
||||||
|
}
|
||||||
30
src/content/.obsidian/graph.json
vendored
Normal file
30
src/content/.obsidian/graph.json
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"collapse-filter": true,
|
||||||
|
"search": "path:posts/",
|
||||||
|
"showTags": false,
|
||||||
|
"showAttachments": false,
|
||||||
|
"hideUnresolved": false,
|
||||||
|
"showOrphans": true,
|
||||||
|
"collapse-color-groups": true,
|
||||||
|
"colorGroups": [
|
||||||
|
{
|
||||||
|
"query": "",
|
||||||
|
"color": {
|
||||||
|
"a": 1,
|
||||||
|
"rgb": 14701138
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"collapse-display": true,
|
||||||
|
"showArrow": false,
|
||||||
|
"textFadeMultiplier": 0,
|
||||||
|
"nodeSizeMultiplier": 1,
|
||||||
|
"lineSizeMultiplier": 1,
|
||||||
|
"collapse-forces": true,
|
||||||
|
"centerStrength": 0.518713248970312,
|
||||||
|
"repelStrength": 10,
|
||||||
|
"linkStrength": 1,
|
||||||
|
"linkDistance": 250,
|
||||||
|
"scale": 1.0147822288211785,
|
||||||
|
"close": true
|
||||||
|
}
|
||||||
274
src/content/.obsidian/hotkeys.json
vendored
Normal file
274
src/content/.obsidian/hotkeys.json
vendored
Normal file
@@ -0,0 +1,274 @@
|
|||||||
|
{
|
||||||
|
"app:go-back": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "ArrowLeft"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "ArrowLeft"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app:go-forward": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "ArrowRight"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "ArrowRight"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"homepage:open-homepage": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "M"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app:toggle-left-sidebar": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app:toggle-right-sidebar": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "X"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"obsidian-git:push": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "S"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"insert-unsplash-image:insert": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"custom-save:save": [],
|
||||||
|
"editor:insert-callout": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "C"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"astro-composer:rename-note": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "R"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"astro-composer:rename-content": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "R"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"editor:toggle-fold-properties": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "P"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"seo:seo-open-global": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"insert-unsplash-image:insert-in-frontmatter": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"astro-modular-settings:open-settings": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": ","
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"seo:open-global": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"oxygen-settings:toggle-minimal-focus-mode": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "F"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zenmode:exit-zen-mode": [],
|
||||||
|
"oxygen-settings:toggle-zen-mode": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"oxygen-settings:toggle-tab-containers": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "S"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app:toggle-ribbon": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zenmode:toggle-zen-mode": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app:reload": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "R"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme:toggle-light-dark": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "M"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"astro-composer:open-project-terminal": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "D"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"editing-toolbar:workplace-fullscreen-focus": [],
|
||||||
|
"editing-toolbar:fullscreen-focus": [],
|
||||||
|
"editing-toolbar:hide-show-menu": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "E"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"astro-composer:edit-astro-config": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": ","
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"image-manager:search-image": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"image-manager:insert-remote-image-to-property": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ui-tweaker:toggle-tab-bar": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt",
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
|
"key": "S"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"omnisearch:show-modal": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Mod",
|
||||||
|
"Shift"
|
||||||
|
],
|
||||||
|
"key": "O"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
70
src/content/.obsidian/plugins/astro-composer/data.json
vendored
Normal file
70
src/content/.obsidian/plugins/astro-composer/data.json
vendored
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"defaultTemplate": "---\ntitle: \"{{title}}\"\npubDate: {{date}}\ndescription: \"\"\nheroImage: \"\"\n---\n",
|
||||||
|
"autoInsertProperties": true,
|
||||||
|
"dateFormat": "YYYY-MM-DD",
|
||||||
|
"enableCopyHeadingLink": true,
|
||||||
|
"copyHeadingLinkFormat": "astro",
|
||||||
|
"addTrailingSlashToLinks": true,
|
||||||
|
"enableOpenTerminalCommand": true,
|
||||||
|
"terminalProjectRootPath": "../..",
|
||||||
|
"terminalApplicationName": "",
|
||||||
|
"enableTerminalDebugLogging": false,
|
||||||
|
"enableTerminalRibbonIcon": true,
|
||||||
|
"enableOpenConfigFileCommand": true,
|
||||||
|
"configFilePath": "../../astro.config.mjs",
|
||||||
|
"enableConfigRibbonIcon": true,
|
||||||
|
"contentTypes": [
|
||||||
|
{
|
||||||
|
"id": "content-type-1775852991942-ai56rw2lw",
|
||||||
|
"name": "Blog",
|
||||||
|
"folder": "blog",
|
||||||
|
"linkBasePath": "/blog/",
|
||||||
|
"template": "---\ntitle: \"{{title}}\"\npubDate: {{date}}\ndescription: \"\"\nheroImage: \"\"\n---\n",
|
||||||
|
"enabled": true,
|
||||||
|
"creationMode": "file",
|
||||||
|
"indexFileName": "index",
|
||||||
|
"ignoreSubfolders": false,
|
||||||
|
"enableUnderscorePrefix": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "content-type-1775852991942-7eiqfk6yj",
|
||||||
|
"name": "Bachelor",
|
||||||
|
"folder": "bachelor",
|
||||||
|
"linkBasePath": "/bachelor/",
|
||||||
|
"template": "---\ntitle: \"{{title}}\"\npubDate: {{date}}\ndescription: \"\"\nheroImage: \"\"\npart: 1\n---\n",
|
||||||
|
"enabled": true,
|
||||||
|
"creationMode": "file",
|
||||||
|
"indexFileName": "index",
|
||||||
|
"ignoreSubfolders": false,
|
||||||
|
"enableUnderscorePrefix": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "content-type-1775852991942-gvtf8m5h6",
|
||||||
|
"name": "Projects",
|
||||||
|
"folder": "projects",
|
||||||
|
"linkBasePath": "/projects/",
|
||||||
|
"template": "---\ntitle: \"{{title}}\"\npubDate: {{date}}\ndescription: \"\"\nheroImage: \"\"\n---\n",
|
||||||
|
"enabled": true,
|
||||||
|
"creationMode": "file",
|
||||||
|
"indexFileName": "index",
|
||||||
|
"ignoreSubfolders": false,
|
||||||
|
"enableUnderscorePrefix": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"migrationCompleted": true,
|
||||||
|
"helpButtonReplacement": {
|
||||||
|
"enabled": true,
|
||||||
|
"commandId": "astro-composer:edit-astro-config",
|
||||||
|
"iconId": "rocket"
|
||||||
|
},
|
||||||
|
"showMdxFilesInExplorer": true,
|
||||||
|
"processBackgroundFileChanges": true,
|
||||||
|
"syncDraftDate": false,
|
||||||
|
"draftDetectionMode": "property",
|
||||||
|
"draftProperty": "",
|
||||||
|
"draftLogic": "true-is-draft",
|
||||||
|
"publishDateField": "pubDate",
|
||||||
|
"renameOnTitleClick": false,
|
||||||
|
"updateModifiedDate": false,
|
||||||
|
"modifiedDateField": ""
|
||||||
|
}
|
||||||
4467
src/content/.obsidian/plugins/astro-composer/main.js
vendored
Normal file
4467
src/content/.obsidian/plugins/astro-composer/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/astro-composer/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/astro-composer/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"astro-composer","name":"Astro Composer","version":"0.12.0","minAppVersion":"1.11.0","description":"Turn your notes into posts and pages for your Astro blog with automated content management features.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
372
src/content/.obsidian/plugins/astro-composer/styles.css
vendored
Normal file
372
src/content/.obsidian/plugins/astro-composer/styles.css
vendored
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
.astro-composer-title-input {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-button-container {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ensure all buttons in the button container use default cursor */
|
||||||
|
.astro-composer-button-container button {
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-button-container button:hover {
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-cancel-button,
|
||||||
|
.astro-composer-create-button {
|
||||||
|
padding: 6px 12px;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-cancel-button:hover,
|
||||||
|
.astro-composer-create-button:hover {
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-create-button.mod-cta {
|
||||||
|
background-color: var(--interactive-accent);
|
||||||
|
color: var(--text-on-accent);
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-create-button.mod-cta:hover {
|
||||||
|
background-color: var(--interactive-accent-hover);
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-template-textarea {
|
||||||
|
height: 300px; /* Adjusted for 5-10 lines of properties */
|
||||||
|
width: 100%;
|
||||||
|
padding: 8px;
|
||||||
|
resize: vertical; /* Allow vertical resizing */
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-modal {
|
||||||
|
padding: 20px;
|
||||||
|
max-width: 500px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-modal h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Custom Content Types Styling */
|
||||||
|
.custom-content-types-container {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-item {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-header .setting-item {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-header .setting-item-name {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-item .setting-item {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-item .setting-item:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add spacing between settings in custom content types since we removed dividers */
|
||||||
|
.custom-content-type-settings > div {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-settings > div:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-settings {
|
||||||
|
transition: all 0.2s ease-in-out;
|
||||||
|
padding-top: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-content-type-settings[style*="none"] {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile-specific improvements for Astro Composer modal */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
/* Force mobile positioning for all modals containing our content */
|
||||||
|
.modal:has(.astro-composer-title-input) {
|
||||||
|
position: fixed !important;
|
||||||
|
top: 10% !important;
|
||||||
|
left: 50% !important;
|
||||||
|
transform: translateX(-50%) !important;
|
||||||
|
max-height: 50vh !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
width: 90vw !important;
|
||||||
|
max-width: 500px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only target our specific modal content, not all modals */
|
||||||
|
.modal .astro-composer-title-input {
|
||||||
|
font-size: 16px; /* Prevents zoom on iOS */
|
||||||
|
padding: 12px;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ensure our modal content is properly sized on mobile */
|
||||||
|
.modal .astro-composer-button-container {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal .astro-composer-cancel-button,
|
||||||
|
.modal .astro-composer-create-button {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
font-size: 16px;
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal .astro-composer-cancel-button:hover,
|
||||||
|
.modal .astro-composer-create-button:hover {
|
||||||
|
cursor: default !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fallback for browsers that don't support :has() */
|
||||||
|
.astro-composer-mobile-modal {
|
||||||
|
position: fixed !important;
|
||||||
|
top: 10% !important;
|
||||||
|
left: 50% !important;
|
||||||
|
transform: translateX(-50%) !important;
|
||||||
|
max-height: 50vh !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
width: 90vw !important;
|
||||||
|
max-width: 500px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Settings UI utility classes */
|
||||||
|
.astro-composer-setting-container-visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-setting-container-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-custom-type-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-header-name {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Collapse button */
|
||||||
|
.astro-composer-collapse-button {
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
padding: 4px;
|
||||||
|
margin-right: 4px;
|
||||||
|
cursor: default;
|
||||||
|
color: var(--text-muted);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: background-color 0.2s ease, color 0.2s ease;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-collapse-button:hover {
|
||||||
|
background-color: var(--background-modifier-hover);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-collapse-button:active {
|
||||||
|
background-color: var(--background-modifier-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-collapse-button svg {
|
||||||
|
transition: transform 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-collapse-button.is-collapsed svg {
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reorder buttons container */
|
||||||
|
.astro-composer-reorder-buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 4px;
|
||||||
|
margin-right: 8px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reorder buttons - minimal icon-only style */
|
||||||
|
.astro-composer-reorder-button {
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
padding: 4px;
|
||||||
|
cursor: default;
|
||||||
|
color: var(--text-muted);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: background-color 0.2s ease, color 0.2s ease;
|
||||||
|
line-height: 1;
|
||||||
|
opacity: 0.6;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-reorder-button:hover:not(:disabled) {
|
||||||
|
background-color: var(--background-modifier-hover);
|
||||||
|
color: var(--text-normal);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-reorder-button:active:not(:disabled) {
|
||||||
|
background-color: var(--background-modifier-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-reorder-button:disabled {
|
||||||
|
opacity: 0.2;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-reorder-button svg {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-remove-setting {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-add-button {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Floating button container - no settings background, right-aligned */
|
||||||
|
.astro-composer-add-button-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding: 0;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-add-button-container button {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Settings tab - hidden setting elements */
|
||||||
|
/* Only hide the setting item info elements, not nested ones inside content types */
|
||||||
|
.astro-composer-setting-hidden-elements > .setting-item-info > .setting-item-name,
|
||||||
|
.astro-composer-setting-hidden-elements > .setting-item-info > .setting-item-description,
|
||||||
|
.astro-composer-setting-hidden-elements > .setting-item-control {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-setting-hidden-elements {
|
||||||
|
border-top: none;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-setting-container-full-width {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-custom-types-container-visible {
|
||||||
|
display: block !important;
|
||||||
|
width: 100% !important;
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ensure custom content types container is always visible even when parent has hidden elements */
|
||||||
|
.astro-composer-setting-hidden-elements .custom-content-types-container {
|
||||||
|
display: block !important;
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ensure content type items inside the container are visible */
|
||||||
|
.custom-content-types-container .custom-content-type-item {
|
||||||
|
display: block !important;
|
||||||
|
visibility: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Conflict warning styles */
|
||||||
|
.astro-composer-conflict-warning {
|
||||||
|
color: var(--text-warning);
|
||||||
|
font-size: 0.9em;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-conflict-warning.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Help button replacement */
|
||||||
|
/* No special display needed - inherits from parent flex container */
|
||||||
|
|
||||||
|
/* Ribbon context menu hiding - these will be applied via classes */
|
||||||
|
.astro-composer-hide-terminal-icon .menu-item:has(svg[data-lucide="terminal-square"]),
|
||||||
|
.astro-composer-hide-terminal-icon .menu-item:has(.lucide-terminal-square),
|
||||||
|
.astro-composer-hide-terminal-icon .menu-item .menu-item-icon:has(svg[data-lucide="terminal-square"]),
|
||||||
|
.astro-composer-hide-terminal-icon .menu-item .menu-item-icon:has(.lucide-terminal-square) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.astro-composer-hide-config-icon .menu-item:has(svg[data-lucide="wrench"]),
|
||||||
|
.astro-composer-hide-config-icon .menu-item:has(svg[data-lucide="rocket"]),
|
||||||
|
.astro-composer-hide-config-icon .menu-item:has(.lucide-wrench),
|
||||||
|
.astro-composer-hide-config-icon .menu-item:has(.lucide-rocket),
|
||||||
|
.astro-composer-hide-config-icon .menu-item .menu-item-icon:has(svg[data-lucide="wrench"]),
|
||||||
|
.astro-composer-hide-config-icon .menu-item .menu-item-icon:has(svg[data-lucide="rocket"]),
|
||||||
|
.astro-composer-hide-config-icon .menu-item .menu-item-icon:has(.lucide-wrench),
|
||||||
|
.astro-composer-hide-config-icon .menu-item .menu-item-icon:has(.lucide-rocket) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Help button hiding */
|
||||||
|
.astro-composer-hide-help-button .workspace-drawer-vault-actions .clickable-icon:has(svg.help) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Scoped to only this plugin's settings container to avoid affecting other plugins */
|
||||||
28
src/content/.obsidian/plugins/bases-cms/data.json
vendored
Normal file
28
src/content/.obsidian/plugins/bases-cms/data.json
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"confirmBulkOperations": true,
|
||||||
|
"deleteParentFolder": true,
|
||||||
|
"deleteParentFolderFilename": "index",
|
||||||
|
"deleteUniqueAttachments": true,
|
||||||
|
"confirmDeletions": true,
|
||||||
|
"useHomeIcon": true,
|
||||||
|
"enableQuickEdit": true,
|
||||||
|
"quickEditCommand": "astro-composer:rename-content",
|
||||||
|
"quickEditCommandName": "Astro Composer: Rename current content",
|
||||||
|
"quickEditIcon": "lucide-pencil-line",
|
||||||
|
"quickEditOpenFile": false,
|
||||||
|
"showToolbarSelectAll": true,
|
||||||
|
"showToolbarClear": true,
|
||||||
|
"showToolbarDraft": true,
|
||||||
|
"showToolbarPublish": true,
|
||||||
|
"showToolbarTags": true,
|
||||||
|
"showToolbarSet": true,
|
||||||
|
"showToolbarRemove": true,
|
||||||
|
"showToolbarDelete": true,
|
||||||
|
"forceStaticGifImages": false,
|
||||||
|
"embeddedViewRefreshDebounceMs": 250,
|
||||||
|
"virtualScrollThreshold": 100,
|
||||||
|
"virtualScrollBuffer": 20,
|
||||||
|
"migrationBasesCmsToCmsDone": true,
|
||||||
|
"showPropertiesInfoModal": true,
|
||||||
|
"thumbnailCacheSize": "balanced"
|
||||||
|
}
|
||||||
6786
src/content/.obsidian/plugins/bases-cms/main.js
vendored
Normal file
6786
src/content/.obsidian/plugins/bases-cms/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
src/content/.obsidian/plugins/bases-cms/manifest.json
vendored
Normal file
11
src/content/.obsidian/plugins/bases-cms/manifest.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"id": "bases-cms",
|
||||||
|
"name": "Bases CMS",
|
||||||
|
"version": "0.4.9",
|
||||||
|
"minAppVersion": "1.11.0",
|
||||||
|
"description": "Manage your notes in bases like a content management system.",
|
||||||
|
"author": "David V. Kimball",
|
||||||
|
"authorUrl": "https://davidvkimball.com",
|
||||||
|
"fundingUrl": "https://patreon.com/davidvkimball",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
1570
src/content/.obsidian/plugins/bases-cms/styles.css
vendored
Normal file
1570
src/content/.obsidian/plugins/bases-cms/styles.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
24
src/content/.obsidian/plugins/data-files-editor/data.json
vendored
Normal file
24
src/content/.obsidian/plugins/data-files-editor/data.json
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"doLoadTxt": false,
|
||||||
|
"doCreateTxt": false,
|
||||||
|
"doLoadXml": false,
|
||||||
|
"doCreateXml": false,
|
||||||
|
"doLoadJson": true,
|
||||||
|
"doCreateJson": true,
|
||||||
|
"doLoadYaml": false,
|
||||||
|
"doCreateYaml": false,
|
||||||
|
"doLoadAstro": true,
|
||||||
|
"doCreateAstro": true,
|
||||||
|
"doLoadTs": false,
|
||||||
|
"doCreateTs": false,
|
||||||
|
"doLoadCss": false,
|
||||||
|
"doCreateCss": false,
|
||||||
|
"doLoadHtml": false,
|
||||||
|
"doCreateHtml": false,
|
||||||
|
"doLoadJs": false,
|
||||||
|
"doCreateJs": false,
|
||||||
|
"doLoadMjs": false,
|
||||||
|
"doCreateMjs": false,
|
||||||
|
"doAutosaveFiles": true,
|
||||||
|
"lineWrapping": true
|
||||||
|
}
|
||||||
6
src/content/.obsidian/plugins/data-files-editor/main.js
vendored
Normal file
6
src/content/.obsidian/plugins/data-files-editor/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
src/content/.obsidian/plugins/data-files-editor/manifest.json
vendored
Normal file
11
src/content/.obsidian/plugins/data-files-editor/manifest.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"id": "data-files-editor",
|
||||||
|
"name": "Data Files Editor",
|
||||||
|
"version": "1.4.1",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "Plugin to edit data files like txt, xml, json, and yaml",
|
||||||
|
"author": "ZukTol",
|
||||||
|
"authorUrl": "https://github.com/ZukTol",
|
||||||
|
"fundingUrl": "",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
23
src/content/.obsidian/plugins/data-files-editor/styles.css
vendored
Normal file
23
src/content/.obsidian/plugins/data-files-editor/styles.css
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.datafile-source-view.mod-cm6 .cm-gutters {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
background-color: transparent;
|
||||||
|
color: var(--text-faint) !important;
|
||||||
|
border-right: none !important;
|
||||||
|
margin-inline-end: var(--file-folding-offset);
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
z-index: 1;
|
||||||
|
font-variant: tabular-nums;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-gutterElement.cm-activeLineGutter {
|
||||||
|
background-color: #aaeeff44;
|
||||||
|
}
|
||||||
123
src/content/.obsidian/plugins/disable-tabs/main.js
vendored
Normal file
123
src/content/.obsidian/plugins/disable-tabs/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/disable-tabs/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/disable-tabs/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"disable-tabs","name":"Disable Tabs","version":"1.0.10","minAppVersion":"1.11.0","description":"Disables having more than one tab open at a time.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
7
src/content/.obsidian/plugins/disable-tabs/styles.css
vendored
Normal file
7
src/content/.obsidian/plugins/disable-tabs/styles.css
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
/* Hide mobile new tab icon when the plugin setting is enabled */
|
||||||
|
body.disable-tabs-hide-mobile-icon .mobile-navbar-action-tabs {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Scoped to only this plugin's settings container to avoid affecting other plugins */
|
||||||
441
src/content/.obsidian/plugins/editing-toolbar/data.json
vendored
Normal file
441
src/content/.obsidian/plugins/editing-toolbar/data.json
vendored
Normal file
@@ -0,0 +1,441 @@
|
|||||||
|
{
|
||||||
|
"lastVersion": "3.2.7",
|
||||||
|
"aestheticStyle": "glass",
|
||||||
|
"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": "SubmenuCommands-header",
|
||||||
|
"name": "submenu",
|
||||||
|
"icon": "heading-glyph",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header2-text",
|
||||||
|
"name": "Header 2",
|
||||||
|
"icon": "header-2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:header3-text",
|
||||||
|
"name": "Header 3",
|
||||||
|
"icon": "header-3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "editing-toolbar:toggle-format-brush",
|
||||||
|
"name": "Format Painter",
|
||||||
|
"icon": "paintbrush"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:format-eraser",
|
||||||
|
"name": "Clear text formatting",
|
||||||
|
"icon": "eraser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:editor:swap-line-down",
|
||||||
|
"name": "Swap line down",
|
||||||
|
"icon": "lucide-corner-right-down"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-text-tools",
|
||||||
|
"name": "Text Tools",
|
||||||
|
"icon": "box",
|
||||||
|
"menuType": "dropdown",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:get-plain-text",
|
||||||
|
"name": "Get Plain Text",
|
||||||
|
"icon": "lucide-file-text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:smart-symbols",
|
||||||
|
"name": "Full Half Converter",
|
||||||
|
"icon": "lucide-at-sign"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editingToolbar-Divider-Line",
|
||||||
|
"name": "Line Operations",
|
||||||
|
"icon": "vertical-split"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:insert-blank-lines",
|
||||||
|
"name": "Insert Blank Lines",
|
||||||
|
"icon": "lucide-space"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:remove-blank-lines",
|
||||||
|
"name": "Remove Blank Lines",
|
||||||
|
"icon": "lucide-minimize-2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:split-lines",
|
||||||
|
"name": "Split Lines",
|
||||||
|
"icon": "lucide-split"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:merge-lines",
|
||||||
|
"name": "Merge Lines",
|
||||||
|
"icon": "lucide-merge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:dedupe-lines",
|
||||||
|
"name": "Dedupe Lines",
|
||||||
|
"icon": "lucide-filter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editingToolbar-Divider-Line",
|
||||||
|
"name": "Text Processing",
|
||||||
|
"icon": "vertical-split"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:add-wrap",
|
||||||
|
"name": "Add Prefix/Suffix",
|
||||||
|
"icon": "lucide-wrap-text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:number-lines",
|
||||||
|
"name": "Number Lines (Custom)",
|
||||||
|
"icon": "lucide-list-ordered"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:remove-whitespace-trim",
|
||||||
|
"name": "Trim Line Ends",
|
||||||
|
"icon": "lucide-scissors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:remove-whitespace-compress",
|
||||||
|
"name": "Shrink Extra Spaces",
|
||||||
|
"icon": "lucide-minimize"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:remove-whitespace-all",
|
||||||
|
"name": "Remove All Whitespace",
|
||||||
|
"icon": "lucide-eraser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editingToolbar-Divider-Line",
|
||||||
|
"name": "Advanced Tools",
|
||||||
|
"icon": "vertical-split"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:list-to-table",
|
||||||
|
"name": "List to Table",
|
||||||
|
"icon": "lucide-table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:table-to-list",
|
||||||
|
"name": "Table to List",
|
||||||
|
"icon": "lucide-list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:extract-between",
|
||||||
|
"name": "Extract Between Strings",
|
||||||
|
"icon": "lucide-brackets"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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:toggle-blockquote",
|
||||||
|
"name": "Blockquote",
|
||||||
|
"icon": "quote"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:insert-callout",
|
||||||
|
"name": "Insert Callout ",
|
||||||
|
"icon": "alert-triangle"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "SubmenuCommands-list",
|
||||||
|
"name": "submenu-list",
|
||||||
|
"icon": "bullet-list-glyph",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"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: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:editor:toggle-checklist-status",
|
||||||
|
"name": "Checklist",
|
||||||
|
"icon": "checkbox-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "editing-toolbar:renumber-ordered-list",
|
||||||
|
"name": "Reorder numbered list",
|
||||||
|
"icon": "list-restart"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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: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:custom-summary",
|
||||||
|
"name": "Summary",
|
||||||
|
"icon": "chat-bubbles-filled"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:custom-small",
|
||||||
|
"name": "Small text",
|
||||||
|
"icon": "header-n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:superscript",
|
||||||
|
"name": "Superscript",
|
||||||
|
"icon": "superscript-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:subscript",
|
||||||
|
"name": "Subscript",
|
||||||
|
"icon": "subscript-glyph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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-aligin",
|
||||||
|
"name": "submenu-aligin",
|
||||||
|
"icon": "align-left",
|
||||||
|
"SubmenuCommands": [
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:left",
|
||||||
|
"name": "<p aligin=\"left\"></p>",
|
||||||
|
"icon": "align-left"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:center",
|
||||||
|
"name": "<center>",
|
||||||
|
"icon": "align-center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:right",
|
||||||
|
"name": "<p aligin=\"right\"></p>",
|
||||||
|
"icon": "align-right"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "editing-toolbar:justify",
|
||||||
|
"name": "<p aligin=\"justify\"></p>",
|
||||||
|
"icon": "align-justify"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "zenmode:toggle-zen-mode",
|
||||||
|
"name": "Zen Mode: Toggle",
|
||||||
|
"icon": "expand"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"followingCommands": [],
|
||||||
|
"topCommands": [],
|
||||||
|
"fixedCommands": [],
|
||||||
|
"mobileCommands": [],
|
||||||
|
"enableMultipleConfig": false,
|
||||||
|
"enableTopToolbar": true,
|
||||||
|
"enableFollowingToolbar": false,
|
||||||
|
"enableFixedToolbar": false,
|
||||||
|
"appendMethod": "workspace",
|
||||||
|
"shouldShowMenuOnSelect": false,
|
||||||
|
"cMenuVisibility": false,
|
||||||
|
"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": [
|
||||||
|
{
|
||||||
|
"id": "custom-summary",
|
||||||
|
"name": "Summary",
|
||||||
|
"prefix": "<details> \n<summary>",
|
||||||
|
"suffix": "</summary> \nInclude details here.\n</details>",
|
||||||
|
"char": 0,
|
||||||
|
"line": 0,
|
||||||
|
"islinehead": false,
|
||||||
|
"icon": "chat-bubbles-filled"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom-small",
|
||||||
|
"name": "Small text",
|
||||||
|
"prefix": "<small>",
|
||||||
|
"suffix": "</small>",
|
||||||
|
"char": 0,
|
||||||
|
"line": 0,
|
||||||
|
"islinehead": false,
|
||||||
|
"icon": "header-n"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"viewTypeSettings": {
|
||||||
|
"bases": false
|
||||||
|
},
|
||||||
|
"appearanceByStyle": {
|
||||||
|
"top": {
|
||||||
|
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
|
||||||
|
"toolbarIconColor": "var(--text-normal)",
|
||||||
|
"toolbarIconSize": 18,
|
||||||
|
"aestheticStyle": "glass"
|
||||||
|
},
|
||||||
|
"following": {
|
||||||
|
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
|
||||||
|
"toolbarIconColor": "var(--text-normal)",
|
||||||
|
"toolbarIconSize": 18,
|
||||||
|
"aestheticStyle": "default"
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
|
||||||
|
"toolbarIconColor": "var(--text-normal)",
|
||||||
|
"toolbarIconSize": 18,
|
||||||
|
"aestheticStyle": "default"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
|
||||||
|
"toolbarIconColor": "var(--text-normal)",
|
||||||
|
"toolbarIconSize": 18,
|
||||||
|
"aestheticStyle": "default"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
|
||||||
|
"toolbarIconColor": "var(--text-normal)",
|
||||||
|
"toolbarIconSize": 18,
|
||||||
|
"useCurrentLineForRegex": false,
|
||||||
|
"commandIdsFixed": true
|
||||||
|
}
|
||||||
12
src/content/.obsidian/plugins/editing-toolbar/main.js
vendored
Normal file
12
src/content/.obsidian/plugins/editing-toolbar/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
src/content/.obsidian/plugins/editing-toolbar/manifest.json
vendored
Normal file
10
src/content/.obsidian/plugins/editing-toolbar/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "editing-toolbar",
|
||||||
|
"name": "Editing Toolbar",
|
||||||
|
"version": "3.2.7",
|
||||||
|
"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
|
||||||
|
}
|
||||||
1506
src/content/.obsidian/plugins/editing-toolbar/styles.css
vendored
Normal file
1506
src/content/.obsidian/plugins/editing-toolbar/styles.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
11
src/content/.obsidian/plugins/explorer-focus/data.json
vendored
Normal file
11
src/content/.obsidian/plugins/explorer-focus/data.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"showRightClickMenu": true,
|
||||||
|
"showFileExplorerIcon": true,
|
||||||
|
"focusLevel": "parent",
|
||||||
|
"customFolderPath": "src/content",
|
||||||
|
"hideAncestorFolders": false,
|
||||||
|
"autoHidePaths": [
|
||||||
|
"node_modules",
|
||||||
|
"dist"
|
||||||
|
]
|
||||||
|
}
|
||||||
818
src/content/.obsidian/plugins/explorer-focus/main.js
vendored
Normal file
818
src/content/.obsidian/plugins/explorer-focus/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/explorer-focus/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/explorer-focus/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"explorer-focus","name":"Explorer Focus","version":"0.1.9","minAppVersion":"1.11.0","description":"Focus on a specific file or folder in the file explorer.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
1
src/content/.obsidian/plugins/explorer-focus/styles.css
vendored
Normal file
1
src/content/.obsidian/plugins/explorer-focus/styles.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/* No custom styles needed - using native Obsidian classes */
|
||||||
19
src/content/.obsidian/plugins/file-name-history/data.json
vendored
Normal file
19
src/content/.obsidian/plugins/file-name-history/data.json
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"historyPropertyName": "aliases",
|
||||||
|
"ignoreRegexes": [
|
||||||
|
"^_",
|
||||||
|
"^Untitled$",
|
||||||
|
"^Untitled \\d+$"
|
||||||
|
],
|
||||||
|
"timeoutSeconds": 5,
|
||||||
|
"caseSensitive": false,
|
||||||
|
"autoCreateFrontmatter": true,
|
||||||
|
"includeFolders": [],
|
||||||
|
"excludeFolders": [],
|
||||||
|
"fileExtensions": [
|
||||||
|
"md",
|
||||||
|
"mdx"
|
||||||
|
],
|
||||||
|
"trackFolderRenames": "index",
|
||||||
|
"excludePropertyName": ""
|
||||||
|
}
|
||||||
475
src/content/.obsidian/plugins/file-name-history/main.js
vendored
Normal file
475
src/content/.obsidian/plugins/file-name-history/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/file-name-history/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/file-name-history/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"file-name-history","name":"File Name History","version":"0.2.7","minAppVersion":"1.11.0","description":"Store file name or folder name change history into note properties.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
1
src/content/.obsidian/plugins/file-name-history/styles.css
vendored
Normal file
1
src/content/.obsidian/plugins/file-name-history/styles.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/* Scoped to only this plugin's settings container to avoid affecting other plugins */
|
||||||
129
src/content/.obsidian/plugins/folder-notes/data.json
vendored
Normal file
129
src/content/.obsidian/plugins/folder-notes/data.json
vendored
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"syncFolderName": true,
|
||||||
|
"ctrlKey": true,
|
||||||
|
"altKey": false,
|
||||||
|
"hideFolderNote": true,
|
||||||
|
"templatePath": "",
|
||||||
|
"autoCreate": false,
|
||||||
|
"autoCreateFocusFiles": true,
|
||||||
|
"autoCreateForAttachmentFolder": false,
|
||||||
|
"autoCreateForFiles": false,
|
||||||
|
"enableCollapsing": false,
|
||||||
|
"excludeFolders": [],
|
||||||
|
"whitelistFolders": [],
|
||||||
|
"showDeleteConfirmation": true,
|
||||||
|
"underlineFolder": true,
|
||||||
|
"stopWhitespaceCollapsing": true,
|
||||||
|
"underlineFolderInPath": true,
|
||||||
|
"openFolderNoteOnClickInPath": true,
|
||||||
|
"openInNewTab": false,
|
||||||
|
"focusExistingTab": false,
|
||||||
|
"oldFolderNoteName": "{{folder_name}}",
|
||||||
|
"folderNoteName": "index",
|
||||||
|
"folderNoteType": ".md",
|
||||||
|
"disableFolderHighlighting": false,
|
||||||
|
"newFolderNoteName": "{{folder_name}}",
|
||||||
|
"storageLocation": "insideFolder",
|
||||||
|
"syncDelete": false,
|
||||||
|
"showRenameConfirmation": true,
|
||||||
|
"defaultOverview": {
|
||||||
|
"id": "",
|
||||||
|
"folderPath": "",
|
||||||
|
"title": "{{folderName}} overview",
|
||||||
|
"showTitle": false,
|
||||||
|
"depth": 3,
|
||||||
|
"includeTypes": [
|
||||||
|
"folder",
|
||||||
|
"markdown"
|
||||||
|
],
|
||||||
|
"style": "list",
|
||||||
|
"disableFileTag": false,
|
||||||
|
"sortBy": "name",
|
||||||
|
"sortByAsc": true,
|
||||||
|
"showEmptyFolders": false,
|
||||||
|
"onlyIncludeSubfolders": false,
|
||||||
|
"storeFolderCondition": true,
|
||||||
|
"showFolderNotes": false,
|
||||||
|
"disableCollapseIcon": true,
|
||||||
|
"alwaysCollapse": false,
|
||||||
|
"autoSync": true,
|
||||||
|
"allowDragAndDrop": true,
|
||||||
|
"hideLinkList": true,
|
||||||
|
"hideFolderOverview": false,
|
||||||
|
"useActualLinks": false,
|
||||||
|
"fmtpIntegration": false,
|
||||||
|
"titleSize": 1,
|
||||||
|
"isInCallout": false
|
||||||
|
},
|
||||||
|
"useSubmenus": true,
|
||||||
|
"syncMove": true,
|
||||||
|
"frontMatterTitle": {
|
||||||
|
"enabled": false,
|
||||||
|
"explorer": true,
|
||||||
|
"path": true
|
||||||
|
},
|
||||||
|
"settingsTab": "general",
|
||||||
|
"supportedFileTypes": [
|
||||||
|
"md",
|
||||||
|
"canvas",
|
||||||
|
"base"
|
||||||
|
],
|
||||||
|
"boldName": false,
|
||||||
|
"boldNameInPath": false,
|
||||||
|
"cursiveName": false,
|
||||||
|
"cursiveNameInPath": false,
|
||||||
|
"disableOpenFolderNoteOnClick": false,
|
||||||
|
"openByClick": true,
|
||||||
|
"openWithCtrl": false,
|
||||||
|
"openWithAlt": false,
|
||||||
|
"excludeFolderDefaultSettings": {
|
||||||
|
"type": "folder",
|
||||||
|
"path": "",
|
||||||
|
"id": "a8a3086d-f63b-409f-be17-9e5676db13b5",
|
||||||
|
"subFolders": true,
|
||||||
|
"disableSync": true,
|
||||||
|
"disableAutoCreate": true,
|
||||||
|
"disableFolderNote": false,
|
||||||
|
"enableCollapsing": false,
|
||||||
|
"position": 0,
|
||||||
|
"excludeFromFolderOverview": false,
|
||||||
|
"string": "",
|
||||||
|
"hideInSettings": false,
|
||||||
|
"detached": false,
|
||||||
|
"showFolderNote": false
|
||||||
|
},
|
||||||
|
"excludePatternDefaultSettings": {
|
||||||
|
"type": "pattern",
|
||||||
|
"path": "",
|
||||||
|
"id": "d97ab7fb-3b20-49e7-8128-666bf4985a2c",
|
||||||
|
"subFolders": true,
|
||||||
|
"disableSync": true,
|
||||||
|
"disableAutoCreate": true,
|
||||||
|
"disableFolderNote": false,
|
||||||
|
"enableCollapsing": false,
|
||||||
|
"position": 0,
|
||||||
|
"excludeFromFolderOverview": false,
|
||||||
|
"string": "",
|
||||||
|
"hideInSettings": false,
|
||||||
|
"detached": false,
|
||||||
|
"showFolderNote": false
|
||||||
|
},
|
||||||
|
"hideCollapsingIcon": false,
|
||||||
|
"hideCollapsingIconForEmptyFolders": false,
|
||||||
|
"tabManagerEnabled": true,
|
||||||
|
"ignoreAttachmentFolder": true,
|
||||||
|
"deleteFilesAction": "trash",
|
||||||
|
"openSidebar": {
|
||||||
|
"mobile": false,
|
||||||
|
"desktop": true
|
||||||
|
},
|
||||||
|
"highlightFolder": true,
|
||||||
|
"persistentSettingsTab": {
|
||||||
|
"afterRestart": true,
|
||||||
|
"afterChangingTab": true
|
||||||
|
},
|
||||||
|
"firstTimeInsertOverview": true,
|
||||||
|
"fvGlobalSettings": {
|
||||||
|
"autoUpdateLinks": false
|
||||||
|
}
|
||||||
|
}
|
||||||
9144
src/content/.obsidian/plugins/folder-notes/main.js
vendored
Normal file
9144
src/content/.obsidian/plugins/folder-notes/main.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
12
src/content/.obsidian/plugins/folder-notes/manifest.json
vendored
Normal file
12
src/content/.obsidian/plugins/folder-notes/manifest.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"id": "folder-notes",
|
||||||
|
"name": "Folder notes",
|
||||||
|
"version": "1.8.18",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "Create notes within folders that can be accessed without collapsing the folder, similar to the functionality offered in Notion.",
|
||||||
|
"author": "Lost Paul",
|
||||||
|
"authorUrl": "https://github.com/LostPaul",
|
||||||
|
"fundingUrl": "https://ko-fi.com/paul305844",
|
||||||
|
"helpUrl": "https://lostpaul.github.io/obsidian-folder-notes/",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
349
src/content/.obsidian/plugins/folder-notes/styles.css
vendored
Normal file
349
src/content/.obsidian/plugins/folder-notes/styles.css
vendored
Normal file
@@ -0,0 +1,349 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
General States & Utilities
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.hide,
|
||||||
|
.hide-folder .folder-name,
|
||||||
|
.hide-folder-note .is-folder-note {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* make.md plugin integration */
|
||||||
|
.hide-folder-note .mk-tree-node > .mk-tree-wrapper > .dropzone > .mk-tree-item.is-folder-note {
|
||||||
|
opacity: 40%;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pointer-cursor,
|
||||||
|
.has-folder-note .nav-folder-title-content:hover,
|
||||||
|
.has-folder-note.view-header-breadcrumb:hover,
|
||||||
|
.nav-folder-collapse-indicator:hover,
|
||||||
|
.fn-delete-confirmation-modal-buttons span:hover,
|
||||||
|
.fn-delete-confirmation-modal-buttons input:hover {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-folder-note :not(.show-folder-note-in-explorer).only-has-folder-note .nav-folder-children {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Tree Items
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
body:not(.is-grabbing) .tree-item-self.fn-is-active:hover,
|
||||||
|
body:not(.disable-folder-highlight) .tree-item-self.fn-is-active {
|
||||||
|
color: var(--nav-item-color-active);
|
||||||
|
background-color: var(--nav-item-background-active);
|
||||||
|
font-weight: var(--nav-item-weight-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Exclude Folder Settings
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.fn-excluded-folder-heading {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
border-top: 1px solid var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-exclude-folder-item,
|
||||||
|
.fn-exclude-folder-list {
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-exclude-folder-list.setting-item {
|
||||||
|
border-top: 0 !important;
|
||||||
|
border-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-exclude-folder-list .setting-item-control {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-exclude-folder-list .setting-item-info {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-exclude-folder-list .search-input-container {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Modal Styles
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.fn-backup-warning-modal .fn-modal-button-container {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5rem;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-confirmation-modal {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-confirmation-modal .setting-item {
|
||||||
|
border-top: 0 !important;
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.is-phone) .fn-confirmation-modal-button {
|
||||||
|
margin-right: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.is-phone) .fn-delete-confirmation-modal-buttons {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.is-phone) .fn-delete-confirmation-modal-buttons .fn-confirmation-modal-button {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.is-phone) .fn-delete-confirmation-modal-buttons input[type="checkbox"] {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .fn-delete-confirmation-modal-buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .fn-delete-confirmation-modal-buttons .fn-confirmation-modal-button {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Folder Overview
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.folder-overview-container.fv-remove-edit-button .folder-overview-edit-button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-line:has(.fv-link-list-item),
|
||||||
|
li:has(.fv-link-list-item),
|
||||||
|
.el-ul:has(.fv-link-list-item),
|
||||||
|
.cm-line:has(.fv-link-list-start),
|
||||||
|
.cm-line:has(.fv-link-list-end),
|
||||||
|
.fv-hide-overview {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.folder-overview-list {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
padding-bottom: 1.200 !important;
|
||||||
|
padding-top: 1.200 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-list-item {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-list::marker {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-list::marker {
|
||||||
|
color: var(--text-normal) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-gap: 20px;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-grid-item {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
margin: 0 1.2rem 1.2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-grid-item-article article {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 15px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-grid-item-article a {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-overview-grid-item-article h1 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.overview-setting-item-fv {
|
||||||
|
border-top: 1px solid var(--background-modifier-border);
|
||||||
|
padding: 0.75em 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.overview-setting-item-fv .setting-item {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
File Explorer & Path Styling
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.folder-note-underline .has-folder-note .nav-folder-title-content {
|
||||||
|
text-decoration-line: underline;
|
||||||
|
text-decoration-color: var(--text-faint);
|
||||||
|
text-decoration-thickness: 2px;
|
||||||
|
text-underline-offset: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-note-underline-path .has-folder-note.view-header-breadcrumb {
|
||||||
|
text-decoration-line: underline;
|
||||||
|
text-decoration-color: var(--text-faint);
|
||||||
|
text-decoration-thickness: 1px;
|
||||||
|
text-underline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-note-bold .has-folder-note .nav-folder-title-content,
|
||||||
|
.folder-note-bold-path .has-folder-note.view-header-breadcrumb {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-note-cursive .has-folder-note .nav-folder-title-content,
|
||||||
|
.folder-note-cursive-path .has-folder-note.view-header-breadcrumb {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Collapse Icon Handling */
|
||||||
|
|
||||||
|
.fn-folder-overview-collapse-icon {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-has-no-files .collapse-icon,
|
||||||
|
.fn-hide-collapse-icon .has-folder-note.only-has-folder-note .tree-item-icon,
|
||||||
|
body.fn-ignore-attachment-folder.fn-hide-collapse-icon .only-has-folder-note .fn-empty-folder.fn-has-attachment-folder .tree-item-icon,
|
||||||
|
body.fn-hide-collapse-icon .only-has-folder-note .fn-empty-folder:not(.fn-has-attachment-folder) .tree-item-icon,
|
||||||
|
body.fn-hide-empty-collapse-icon :not(.only-has-folder-note) > .fn-empty-folder:not(.fn-has-attachment-folder) .tree-item-icon,
|
||||||
|
body.fn-hide-collapse-icon.only-has-folder-note:not(.is-collapsed):not(.show-folder-note-in-explorer)>.nav-folder-children {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Settings Tabs
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.fn-settings-tab-bar {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-settings-tab {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-2);
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-settings-tab-active {
|
||||||
|
background-color: var(--color-accent);
|
||||||
|
color: var(--text-on-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-settings-tab-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-settings-tab-icon {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Suggestion Container
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.fn-suggestion-container {
|
||||||
|
position: absolute;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
max-width: 500px;
|
||||||
|
max-height: 300px;
|
||||||
|
border-radius: var(--radius-m);
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
box-shadow: var(--shadow-s);
|
||||||
|
z-index: var(--layer-notice);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Whitelist Folder Input (Desktop & Mobile)
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/* Default Desktop Layout */
|
||||||
|
.fn-whitelist-folder-input-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-whitelist-folder-input-container input {
|
||||||
|
flex-grow: 1;
|
||||||
|
width: auto;
|
||||||
|
margin-right: 8px;
|
||||||
|
height: 40px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-whitelist-folder-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Overrides */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.fn-whitelist-folder-input-container {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-whitelist-folder-input-container input {
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fn-whitelist-folder-buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .fn-overview-folder-path .setting-item-control {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
31
src/content/.obsidian/plugins/home-base/data.json
vendored
Normal file
31
src/content/.obsidian/plugins/home-base/data.json
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"homeBaseType": "File",
|
||||||
|
"homeBaseValue": "_bases/Home.base",
|
||||||
|
"openOnStartup": true,
|
||||||
|
"openViewMode": "default",
|
||||||
|
"openMode": "replace-all",
|
||||||
|
"manualOpenMode": "retain",
|
||||||
|
"replaceNewTab": false,
|
||||||
|
"newTabMode": "only-when-empty",
|
||||||
|
"openWhenAllTabsClosed": false,
|
||||||
|
"useDifferentFileForNewTab": false,
|
||||||
|
"newTabType": "File",
|
||||||
|
"newTabValue": "",
|
||||||
|
"newTabSeparateMobile": false,
|
||||||
|
"mobileNewTabType": "File",
|
||||||
|
"mobileNewTabValue": "",
|
||||||
|
"showStickyHomeIcon": true,
|
||||||
|
"stickyIconName": "home",
|
||||||
|
"hideHomeTabHeader": true,
|
||||||
|
"replaceMobileNewTab": false,
|
||||||
|
"separateMobile": false,
|
||||||
|
"mobileHomeBaseType": "File",
|
||||||
|
"mobileHomeBaseValue": "",
|
||||||
|
"commandOnOpen": "",
|
||||||
|
"waitForGitSync": false,
|
||||||
|
"gitSyncTimeout": 3,
|
||||||
|
"revertView": false,
|
||||||
|
"autoScroll": false,
|
||||||
|
"hideReleaseNotes": false,
|
||||||
|
"stickyIconReplaceTab": false
|
||||||
|
}
|
||||||
3958
src/content/.obsidian/plugins/home-base/main.js
vendored
Normal file
3958
src/content/.obsidian/plugins/home-base/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/home-base/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/home-base/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"home-base","name":"Home Base","version":"0.2.6","minAppVersion":"1.11.0","description":"Your dedicated home in your vault.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
217
src/content/.obsidian/plugins/home-base/styles.css
vendored
Normal file
217
src/content/.obsidian/plugins/home-base/styles.css
vendored
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
/**
|
||||||
|
* Home Base Plugin Styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
Icon Picker (matching iconic plugin)
|
||||||
|
======================================== */
|
||||||
|
|
||||||
|
.iconic-icon-picker .iconic-search-results {
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconic-icon-picker .iconic-search-results>.setting-item-info {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconic-icon-picker .iconic-search-results>.setting-item-control {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconic-icon-picker .iconic-search-results:focus-visible {
|
||||||
|
box-shadow: 0 0 0 2px var(--background-modifier-border-focus);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Search result icons */
|
||||||
|
.iconic-icon-picker .iconic-search-result>* {
|
||||||
|
height: var(--icon-size);
|
||||||
|
--icon-size: calc(var(--icon-l) * 1.25);
|
||||||
|
--icon-stroke: calc(var(--icon-l-stroke-width) * 6/7);
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconic-icon-picker .iconic-search-result.is-selected {
|
||||||
|
background-color: var(--background-modifier-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconic-icon-picker .iconic-invisible {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
Sticky Home Icon (Desktop)
|
||||||
|
======================================== */
|
||||||
|
|
||||||
|
/* Sticky home icon - part of tab bar structure, flows inline with tabs */
|
||||||
|
.workspace-tab-header-container-inner>.home-base-sticky-icon {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
margin-left: 8px;
|
||||||
|
margin-right: 8px;
|
||||||
|
cursor: default;
|
||||||
|
color: var(--text-muted);
|
||||||
|
transition: color 150ms ease;
|
||||||
|
background: none;
|
||||||
|
height: var(--tab-height, 32px);
|
||||||
|
width: 24px;
|
||||||
|
min-width: 24px;
|
||||||
|
max-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
pointer-events: auto;
|
||||||
|
align-self: center;
|
||||||
|
margin-top: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reduce left padding since icon is now inside the container */
|
||||||
|
/* Only apply to splits that actually have the sticky icon (not the other side of a split view) */
|
||||||
|
.workspace-split.mod-vertical.mod-root.home-base-sticky-icon-enabled .workspace-tab-header-container-inner:has(.home-base-sticky-icon) {
|
||||||
|
padding-left: 0;
|
||||||
|
/* Icon is inside, so no extra left padding needed */
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-base-sticky-icon:hover {
|
||||||
|
background: none;
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-base-sticky-icon-active {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-base-sticky-icon-active:hover {
|
||||||
|
color: var(--text-accent-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-tab-header-container-inner>.home-base-sticky-icon svg {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
min-width: 18px;
|
||||||
|
min-height: 18px;
|
||||||
|
max-width: 18px;
|
||||||
|
max-height: 18px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: block;
|
||||||
|
/* Prevent any size changes */
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide home base tab header when sticky icon is enabled */
|
||||||
|
/* Completely remove from DOM flow to prevent tab counting */
|
||||||
|
.workspace-tab-header.is-home-base-tab,
|
||||||
|
.workspace-tab-header[data-home-base-ghost="true"] {
|
||||||
|
display: none !important;
|
||||||
|
/* Remove from accessibility tree */
|
||||||
|
visibility: hidden !important;
|
||||||
|
/* Remove from layout completely */
|
||||||
|
position: fixed !important;
|
||||||
|
left: -9999px !important;
|
||||||
|
top: -9999px !important;
|
||||||
|
width: 0 !important;
|
||||||
|
height: 0 !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
border: none !important;
|
||||||
|
/* Ensure it doesn't count for tab counting logic */
|
||||||
|
pointer-events: none !important;
|
||||||
|
/* Make it not count for :nth-child selectors */
|
||||||
|
order: -9999 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide sticky icon when tab bar is hidden - general purpose rules */
|
||||||
|
/* These work automatically because the icon is inside the tab container */
|
||||||
|
|
||||||
|
/* Zen Mode */
|
||||||
|
body.zenmode-active .home-base-sticky-icon {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* UI Tweaker */
|
||||||
|
body.hider-tabs .home-base-sticky-icon {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When tab header container is hidden via display:none, icon should also be hidden */
|
||||||
|
.workspace-tab-header-container[style*="display: none"] .home-base-sticky-icon,
|
||||||
|
.workspace-tab-header-container[style*="display:none"] .home-base-sticky-icon {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When tab container inner is hidden via display:none */
|
||||||
|
.workspace-tab-header-container-inner[style*="display: none"] .home-base-sticky-icon,
|
||||||
|
.workspace-tab-header-container-inner[style*="display:none"] .home-base-sticky-icon {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Oxygen theme auto-hide: When tab container has opacity 0 and pointer-events none, hide icon */
|
||||||
|
/* Only hide when opacity is 0 AND it's clearly meant to be hidden (not just a transition) */
|
||||||
|
.workspace-tab-header-container[style*="opacity: 0"][style*="pointer-events: none"] .home-base-sticky-icon,
|
||||||
|
.workspace-tab-header-container[style*="opacity:0"][style*="pointer-events:none"] .home-base-sticky-icon {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Focus mode: REMOVED - was incorrectly hiding icon when window is focused */
|
||||||
|
/* Focus mode should be handled by the tab bar hiding, not by this rule */
|
||||||
|
|
||||||
|
/* Additional safety: Hide icon when parent workspace-tabs is hidden via display */
|
||||||
|
.workspace-tabs[style*="display: none"] .home-base-sticky-icon,
|
||||||
|
.workspace-tabs[style*="display:none"] .home-base-sticky-icon {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* JavaScript-controlled hiding removed - CSS handles all visibility automatically */
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
Mobile New Tab Button Replacement
|
||||||
|
======================================== */
|
||||||
|
|
||||||
|
/* Hide the default SVG when mobile home is enabled */
|
||||||
|
.home-base-mobile-enabled .mobile-navbar-action-new-tab .clickable-icon svg {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add Lucide house icon as replacement */
|
||||||
|
.home-base-mobile-enabled .mobile-navbar-action-new-tab .clickable-icon::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
background-color: currentColor;
|
||||||
|
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8'/%3E%3Cpath d='M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3C/svg%3E") no-repeat center / contain;
|
||||||
|
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8'/%3E%3Cpath d='M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3C/svg%3E") no-repeat center / contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
Settings Tab Styles
|
||||||
|
======================================== */
|
||||||
|
|
||||||
|
/* File suggester styling - scoped to home base suggestions */
|
||||||
|
.home-base-suggestion-item .suggestion-title {
|
||||||
|
font-weight: 500;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-base-suggestion-item .suggestion-note {
|
||||||
|
color: var(--text-faint);
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
font-size: var(--font-smaller);
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-base-suggestion-item .suggestion-flair {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1px 4px;
|
||||||
|
margin-left: 8px;
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
background-color: var(--background-modifier-border);
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-smallest);
|
||||||
|
font-weight: 500;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Scoped to only this plugin's settings container to avoid affecting other plugins */
|
||||||
3
src/content/.obsidian/plugins/homepage/main.js
vendored
Normal file
3
src/content/.obsidian/plugins/homepage/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
13
src/content/.obsidian/plugins/homepage/manifest.json
vendored
Normal file
13
src/content/.obsidian/plugins/homepage/manifest.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"id": "homepage",
|
||||||
|
"name": "Homepage",
|
||||||
|
"version": "4.4.0",
|
||||||
|
"minAppVersion": "1.11.0",
|
||||||
|
"description": "Open a specified note, canvas, base, or workspace on startup, or set it for quick access later.",
|
||||||
|
"author": "novov",
|
||||||
|
"authorUrl": "https://novov.me",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": {
|
||||||
|
"Ko-fi": "https://ko-fi.com/novov"
|
||||||
|
}
|
||||||
|
}
|
||||||
231
src/content/.obsidian/plugins/homepage/styles.css
vendored
Normal file
231
src/content/.obsidian/plugins/homepage/styles.css
vendored
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
@keyframes nv-interstitial-destroy {
|
||||||
|
from { opacity: 1; }
|
||||||
|
to { opacity: 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-item[nv-greyed] {
|
||||||
|
opacity: .5;
|
||||||
|
pointer-events: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting .setting-item-control {
|
||||||
|
padding-top: var(--size-4-1);
|
||||||
|
flex-basis: 100%;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting .setting-item-control input, #nv-main-setting .setting-item-control select {
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting .setting-item-control select {
|
||||||
|
padding: var(--size-4-3) var(--size-4-4);
|
||||||
|
padding-right: var(--size-4-8);
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting .setting-item-control input {
|
||||||
|
flex-grow: 1;
|
||||||
|
padding: var(--size-4-5) var(--size-4-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting .setting-item-control input[disabled] {
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting #nv-desc, #nv-main-setting #nv-info {
|
||||||
|
flex-basis: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting #nv-desc {
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
padding: 10px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting #nv-desc.mod-warning {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting #nv-desc code {
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
font-size: var(--font-smaller);
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting #nv-desc small {
|
||||||
|
display: block;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: calc(var(--font-ui-smaller) * 0.9);
|
||||||
|
padding: 5px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-homepage-file-tag {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: var(--size-2-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-mobile-setting, .nv-command-setting {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
row-gap: var(--size-2-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-mobile-setting .nv-mobile-info {
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
width: 100%;
|
||||||
|
margin-right: var(--size-4-18);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-desc {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-box {
|
||||||
|
margin: 1em 0 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 12px;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill {
|
||||||
|
background-color: var(--background-modifier-hover);
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
padding: var(--size-2-1) var(--size-2-2) var(--size-2-1) var(--size-2-3) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill.nv-command-invalid {
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 0 3px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill button:first-of-type {
|
||||||
|
margin-left: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill button.nv-command-selected {
|
||||||
|
margin-left: var(--size-2-2);
|
||||||
|
padding: 0 var(--size-2-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill button.nv-command-selected span {
|
||||||
|
color: var(--text-accent);
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 0.9em;
|
||||||
|
vertical-align: top;
|
||||||
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill > .svg-icon, .nv-command-pill button .svg-icon {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill > .svg-icon {
|
||||||
|
vertical-align: text-bottom;
|
||||||
|
position: relative;
|
||||||
|
margin: 0 var(--size-2-1) 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-pill.nv-dragging {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-command-add-button {
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
padding: var(--size-2-2) var(--size-4-2);
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nv-main-setting + .setting-item, .nv-command-desc + .setting-item {
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-debug-button {
|
||||||
|
margin: 3em 0 -0.2em;
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
padding: 0;
|
||||||
|
height: auto;
|
||||||
|
float: right;
|
||||||
|
box-shadow: none !important;
|
||||||
|
background: none !important;
|
||||||
|
color: var(--text-accent);
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nv-debug-button:hover, .nv-debug-button:active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone #nv-main-setting .setting-item-control {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone #nv-main-setting .setting-item-control select {
|
||||||
|
width: auto;
|
||||||
|
max-width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-mobile-setting {
|
||||||
|
row-gap: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-mobile-setting .setting-item-info {
|
||||||
|
max-width: calc(100% - 100px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-mobile-setting {
|
||||||
|
row-gap: var(--size-4-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-mobile-setting .setting-item-info {
|
||||||
|
max-width: calc(100% - 100px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-command-pill {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
padding: 0 0 var(--size-4-2);
|
||||||
|
display: flex;
|
||||||
|
gap: var(--size-4-4);
|
||||||
|
align-items: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-command-pill .nv-command-text {
|
||||||
|
flex-grow: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-command-pill, .is-phone .nv-command-add-button {
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-phone .nv-command-pill button {
|
||||||
|
line-height: var(--font-ui-medium);
|
||||||
|
height: 100%;
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
118
src/content/.obsidian/plugins/image-manager/data.json
vendored
Normal file
118
src/content/.obsidian/plugins/image-manager/data.json
vendored
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"enableRenameOnPaste": true,
|
||||||
|
"enableRenameOnDrop": true,
|
||||||
|
"imageNameTemplate": "{{DATE:YYYY-MM-DD}}_{{fileName}}",
|
||||||
|
"attachmentLocation": "obsidian",
|
||||||
|
"customAttachmentPath": "./assets",
|
||||||
|
"defaultProvider": "local",
|
||||||
|
"unsplashProxyServer": "",
|
||||||
|
"pexelsApiKey": "",
|
||||||
|
"pexelsApiKeySecretId": "",
|
||||||
|
"pixabayApiKey": "",
|
||||||
|
"pixabayApiKeySecretId": "",
|
||||||
|
"defaultOrientation": "any",
|
||||||
|
"defaultImageSize": "large",
|
||||||
|
"enablePropertyPaste": true,
|
||||||
|
"propertyLinkFormat": "obsidian",
|
||||||
|
"customPropertyLinkFormat": "{image-url}",
|
||||||
|
"defaultPropertyName": "heroImage",
|
||||||
|
"defaultIconPropertyName": "icon",
|
||||||
|
"altTextProperty": "",
|
||||||
|
"autoConvertRemoteImages": false,
|
||||||
|
"convertOnNoteOpen": false,
|
||||||
|
"convertOnNoteSave": false,
|
||||||
|
"processBackgroundChanges": true,
|
||||||
|
"showRenameDialog": true,
|
||||||
|
"autoRename": false,
|
||||||
|
"dupNumberDelimiter": "-",
|
||||||
|
"dupNumberAtStart": false,
|
||||||
|
"disableRenameNotice": false,
|
||||||
|
"enableDescriptiveImages": true,
|
||||||
|
"insertSize": "",
|
||||||
|
"insertReferral": true,
|
||||||
|
"insertBackLink": false,
|
||||||
|
"appendReferral": false,
|
||||||
|
"banner": {
|
||||||
|
"properties": {
|
||||||
|
"imageProperty": "heroImage",
|
||||||
|
"iconProperty": "icon"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"enabled": true,
|
||||||
|
"height": 240,
|
||||||
|
"viewOffset": 0,
|
||||||
|
"noteOffset": -32,
|
||||||
|
"borderRadius": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"padding": 8,
|
||||||
|
"fade": true,
|
||||||
|
"iconEnabled": false,
|
||||||
|
"iconSize": 96,
|
||||||
|
"iconRadius": 8,
|
||||||
|
"iconBackground": true,
|
||||||
|
"iconBorder": 2,
|
||||||
|
"iconFrame": true,
|
||||||
|
"iconAlignmentH": "flex-start",
|
||||||
|
"iconAlignmentV": "flex-end",
|
||||||
|
"iconOffsetX": 0,
|
||||||
|
"iconOffsetY": -24
|
||||||
|
},
|
||||||
|
"tablet": {
|
||||||
|
"enabled": true,
|
||||||
|
"height": 190,
|
||||||
|
"viewOffset": 0,
|
||||||
|
"noteOffset": -32,
|
||||||
|
"borderRadius": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"padding": 8,
|
||||||
|
"fade": true,
|
||||||
|
"iconEnabled": false,
|
||||||
|
"iconSize": 96,
|
||||||
|
"iconRadius": 8,
|
||||||
|
"iconBackground": true,
|
||||||
|
"iconBorder": 2,
|
||||||
|
"iconFrame": true,
|
||||||
|
"iconAlignmentH": "flex-start",
|
||||||
|
"iconAlignmentV": "flex-end",
|
||||||
|
"iconOffsetX": 0,
|
||||||
|
"iconOffsetY": -24
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"enabled": true,
|
||||||
|
"height": 160,
|
||||||
|
"viewOffset": 0,
|
||||||
|
"noteOffset": -32,
|
||||||
|
"borderRadius": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"padding": 8,
|
||||||
|
"fade": true,
|
||||||
|
"iconEnabled": false,
|
||||||
|
"iconSize": 56,
|
||||||
|
"iconRadius": 8,
|
||||||
|
"iconBackground": true,
|
||||||
|
"iconBorder": 2,
|
||||||
|
"iconFrame": true,
|
||||||
|
"iconAlignmentH": "flex-start",
|
||||||
|
"iconAlignmentV": "flex-end",
|
||||||
|
"iconOffsetX": 0,
|
||||||
|
"iconOffsetY": -24
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"supportedExtensions": [
|
||||||
|
"md",
|
||||||
|
"mdx"
|
||||||
|
],
|
||||||
|
"debugMode": false
|
||||||
|
}
|
||||||
4257
src/content/.obsidian/plugins/image-manager/main.js
vendored
Normal file
4257
src/content/.obsidian/plugins/image-manager/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/image-manager/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/image-manager/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"image-manager","name":"Image Manager","version":"0.3.2","minAppVersion":"1.11.0","description":"Insert, rename, and sort images within your notes.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
530
src/content/.obsidian/plugins/image-manager/styles.css
vendored
Normal file
530
src/content/.obsidian/plugins/image-manager/styles.css
vendored
Normal file
@@ -0,0 +1,530 @@
|
|||||||
|
/* Image Manager Plugin Styles */
|
||||||
|
|
||||||
|
/* Rename Modal uses Obsidian's default modal sizing */
|
||||||
|
|
||||||
|
.image-manager-rename-modal .modal-content {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-preview {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
padding: 1rem;
|
||||||
|
background: var(--background-secondary);
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-preview img,
|
||||||
|
.image-manager-preview-img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 200px;
|
||||||
|
object-fit: contain;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-info {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-info ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-info li {
|
||||||
|
padding: 0.25rem 0;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-info li strong {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-error-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-error-visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remote search modal styles */
|
||||||
|
.image-inserter-container .modal-close-button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .modal-content {
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container {
|
||||||
|
z-index: 1;
|
||||||
|
position: relative;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .input-group {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .query-input {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .selector {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area {
|
||||||
|
overflow-x: hidden;
|
||||||
|
margin-top: 6px;
|
||||||
|
width: 100%;
|
||||||
|
max-height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area.loading {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .images-list {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(1, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 600px) {
|
||||||
|
.image-inserter-container .container {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container {
|
||||||
|
max-width: 80vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .images-list {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 768px) {
|
||||||
|
.image-inserter-container .container .scroll-area .images-list {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 1200px) {
|
||||||
|
.image-inserter-container .container .scroll-area .images-list {
|
||||||
|
grid-template-columns: repeat(4, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .images-list .query-result {
|
||||||
|
padding: 5px 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .images-list .query-result img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .images-list .query-result.is-selected {
|
||||||
|
background-color: var(--background-tertiary);
|
||||||
|
box-shadow: 0 1px 3px rgb(0 0 0 / 12%), 0 1px 2px rgb(0 0 0 / 24%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .pagination {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 24px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .pagination .btn {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Loading Animation */
|
||||||
|
.image-inserter-container .loading-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .loading-container .loader-icon {
|
||||||
|
display: inline-block;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
color: var(--text-normal);
|
||||||
|
animation: loader-spin 1s linear infinite;
|
||||||
|
transform-origin: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .loading-container .loader-icon svg {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loader-spin {
|
||||||
|
from {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .no-result-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-inserter-container .container .scroll-area .no-result-container.error-text {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Scoped to only this plugin's settings container to avoid affecting other plugins */
|
||||||
|
|
||||||
|
|
||||||
|
/* File Picker Modal (hidden) */
|
||||||
|
.image-manager-file-picker input[type="file"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Confirmation Modal */
|
||||||
|
.image-manager-confirm-message {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-confirm-message p {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
white-space: pre-line;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-confirm-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5rem;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-manager-confirm-buttons button {
|
||||||
|
min-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================
|
||||||
|
Banner Image Styles
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
/* Default CSS Variables for Banner */
|
||||||
|
body {
|
||||||
|
/* Banner Variables */
|
||||||
|
--im-banner-padding: 8px;
|
||||||
|
--im-banner-radius: 0px 0px 0px 0px;
|
||||||
|
--im-banner-height: 240px;
|
||||||
|
--im-banner-url: none;
|
||||||
|
--im-banner-repeat: no-repeat;
|
||||||
|
--im-banner-size: cover;
|
||||||
|
--im-banner-img-x: 0px;
|
||||||
|
--im-banner-img-y: 0px;
|
||||||
|
--im-banner-note-offset: -32px;
|
||||||
|
--im-banner-view-offset: 0px;
|
||||||
|
--im-banner-mask: linear-gradient(180deg, transparent 25%, var(--background-primary));
|
||||||
|
--im-banner-mask-webkit: -webkit-linear-gradient(270deg, transparent 25%, var(--background-primary));
|
||||||
|
|
||||||
|
/* Icon Variables */
|
||||||
|
--im-banner-icon-align-h: flex-start;
|
||||||
|
--im-banner-icon-align-v: flex-end;
|
||||||
|
--im-banner-icon-size-w: 96px;
|
||||||
|
--im-banner-icon-size-h: 96px;
|
||||||
|
--im-banner-icon-offset-x: 0px;
|
||||||
|
--im-banner-icon-offset-y: -24px;
|
||||||
|
--im-banner-icon-radius: 8px;
|
||||||
|
--im-banner-icon-value: '';
|
||||||
|
--im-banner-icon-fontsize: inherit;
|
||||||
|
--im-banner-icon-background: rgb(from var(--background-primary) r g b / 80%);
|
||||||
|
--im-banner-icon-border: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner Container */
|
||||||
|
div.image-manager-banner {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 1;
|
||||||
|
width: calc(100% - (var(--im-banner-padding) * 2));
|
||||||
|
height: 100%;
|
||||||
|
margin-left: var(--im-banner-padding);
|
||||||
|
max-height: var(--im-banner-height);
|
||||||
|
padding: var(--size-4-3) var(--size-4-3) 0 var(--size-4-3);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner content wrapper (for rounding and clipping) */
|
||||||
|
div.image-manager-banner > div.banner-content {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 2;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: var(--im-banner-radius);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
/* Hardware acceleration fix for jagged rounded corners */
|
||||||
|
-webkit-mask-image: -webkit-radial-gradient(white, black);
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner video element */
|
||||||
|
div.image-manager-banner > div.banner-content > video {
|
||||||
|
inset: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
z-index: 2;
|
||||||
|
animation: im-banner-fade-in 1s cubic-bezier(0.4, 0, 0.2, 1) forwards, im-banner-video-anim 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
||||||
|
object-position: calc(50% + var(--im-banner-img-x)) calc(50% + var(--im-banner-img-y));
|
||||||
|
border-radius: var(--im-banner-radius);
|
||||||
|
transition: object-position 0.5s ease-in-out;
|
||||||
|
will-change: object-position;
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner image background (::before pseudo-element) */
|
||||||
|
div.image-manager-banner > div.banner-content::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 2;
|
||||||
|
box-shadow: inset 0 2px 4px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: var(--im-banner-radius);
|
||||||
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
|
background-image: var(--im-banner-url);
|
||||||
|
background-repeat: var(--im-banner-repeat);
|
||||||
|
background-size: var(--im-banner-size);
|
||||||
|
background-position-x: calc(50% + var(--im-banner-img-x));
|
||||||
|
background-position-y: calc(50% + var(--im-banner-img-y));
|
||||||
|
animation: im-banner-fade-in 1s cubic-bezier(0.4, 0, 0.2, 1) forwards, im-banner-anim 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
||||||
|
transition: background-position-x 0.5s ease-in-out;
|
||||||
|
will-change: background-position-x, background-position-y;
|
||||||
|
transform-style: preserve-3d;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner fade overlay (::after pseudo-element) */
|
||||||
|
div.image-manager-banner > div.banner-content::after {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 3;
|
||||||
|
content: '';
|
||||||
|
border-radius: var(--im-banner-radius);
|
||||||
|
background: var(--im-banner-mask);
|
||||||
|
background: var(--im-banner-mask-webkit);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Static state (no animation) */
|
||||||
|
div.image-manager-banner.static > div.banner-content::after {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.image-manager-banner.static > div.banner-content::before {
|
||||||
|
animation: none !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
transition: background-position-x 0.5s ease-in-out, background-position-y 0.5s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Static video */
|
||||||
|
div.image-manager-banner.static > div.banner-content > video {
|
||||||
|
animation: none !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* During animation, disable transition to prevent conflicts */
|
||||||
|
div.image-manager-banner:not(.static) > div.banner-content::before {
|
||||||
|
transition: background-position-x 0.5s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Content after banner */
|
||||||
|
div.image-manager-banner + div {
|
||||||
|
position: relative;
|
||||||
|
z-index: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner animations */
|
||||||
|
@keyframes im-banner-fade-in {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes im-banner-anim {
|
||||||
|
from {
|
||||||
|
background-position-y: calc(50% + (var(--im-banner-img-y, 0px) - 10px));
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position-y: calc(50% + var(--im-banner-img-y, 0px));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes im-banner-video-anim {
|
||||||
|
from {
|
||||||
|
object-position: calc(50% + var(--im-banner-img-x, 0px)) calc(50% + (var(--im-banner-img-y, 0px) - 10px));
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
object-position: calc(50% + var(--im-banner-img-x, 0px)) calc(50% + var(--im-banner-img-y, 0px));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes im-banner-icon-anim {
|
||||||
|
from {
|
||||||
|
transform: translate(var(--im-banner-icon-offset-x), calc(var(--im-banner-icon-offset-y) - 10px));
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translate(var(--im-banner-icon-offset-x), var(--im-banner-icon-offset-y));
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Icon Container */
|
||||||
|
div.image-manager-banner > div.banner-icon {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: var(--im-banner-icon-align-h);
|
||||||
|
align-items: var(--im-banner-icon-align-v);
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
z-index: 4;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: var(--file-line-width);
|
||||||
|
transform: translate(0, 0);
|
||||||
|
animation: im-banner-fade-in 0.7s linear forwards, im-banner-icon-anim 0.8s ease-out;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.image-manager-banner > div.banner-icon > div {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
width: var(--im-banner-icon-size-w);
|
||||||
|
height: var(--im-banner-icon-size-h);
|
||||||
|
background-color: var(--im-banner-icon-background);
|
||||||
|
transform: translate(var(--im-banner-icon-offset-x), var(--im-banner-icon-offset-y));
|
||||||
|
border-radius: var(--im-banner-icon-radius);
|
||||||
|
border: var(--im-banner-icon-border) solid var(--background-primary);
|
||||||
|
z-index: 2;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text icon */
|
||||||
|
div.image-manager-banner > div.banner-icon > div[data-type="text"]::after {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
text-transform: uppercase;
|
||||||
|
content: var(--im-banner-icon-value);
|
||||||
|
color: var(--text-normal);
|
||||||
|
line-height: 0;
|
||||||
|
font-size: var(--im-banner-icon-fontsize, inherit);
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Link/image icon */
|
||||||
|
div.image-manager-banner > div.banner-icon > div[data-type="link"]::after {
|
||||||
|
position: absolute;
|
||||||
|
text-transform: uppercase;
|
||||||
|
inset: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
content: '';
|
||||||
|
background-image: var(--im-banner-icon-value);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Static icon (no animation) */
|
||||||
|
div.image-manager-banner.static > div.banner-icon {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile adjustments */
|
||||||
|
body.is-tablet div.image-manager-banner {
|
||||||
|
width: calc(100% - (var(--im-banner-padding) * 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
body.is-phone div.image-manager-banner {
|
||||||
|
width: calc(100% - (var(--im-banner-padding) * 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
body.is-tablet div.image-manager-banner > div.banner-icon {
|
||||||
|
left: calc(var(--size-4-2) * -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.is-phone div.image-manager-banner > div.banner-icon {
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Frontmatter Overrides for views with banner */
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content > .markdown-source-view.mod-cm6 > .cm-editor > .cm-scroller,
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content .markdown-preview-view {
|
||||||
|
padding-top: var(--im-banner-height, 240px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content > .markdown-source-view.mod-cm6 > .cm-editor > .cm-scroller .inline-embed .el-pre.mod-frontmatter.mod-ui,
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content > .markdown-source-view.mod-cm6 > .cm-editor > .cm-scroller .inline-embed .markdown-preview-view,
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content .markdown-preview-view .inline-embed .el-pre.mod-frontmatter.mod-ui,
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content .markdown-preview-view .inline-embed .markdown-preview-view {
|
||||||
|
padding-top: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content > .markdown-source-view.mod-cm6 > .cm-editor > .cm-scroller .cm-sizer {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
margin-top: var(--im-banner-note-offset, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-im-banner][data-mode="source"] .view-content > .markdown-source-view.mod-cm6 > .cm-editor > .cm-scroller .cm-sizer {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-im-banner] .view-content {
|
||||||
|
margin-top: var(--im-banner-view-offset, 0);
|
||||||
|
}
|
||||||
394
src/content/.obsidian/plugins/nested-properties/main.js
vendored
Normal file
394
src/content/.obsidian/plugins/nested-properties/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/nested-properties/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/nested-properties/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"author":"mnaoumov","authorUrl":"https://github.com/mnaoumov/","description":"Allows to view/edit nested frontmatter properties.","fundingUrl":"https://www.buymeacoffee.com/mnaoumov","id":"nested-properties","isDesktopOnly":false,"name":"Nested Properties","version":"1.2.0","minAppVersion":"1.12.7"}
|
||||||
1
src/content/.obsidian/plugins/nested-properties/styles.css
vendored
Normal file
1
src/content/.obsidian/plugins/nested-properties/styles.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.metadata-property:not(.nested-properties-container .metadata-property):has(>.metadata-property-value>.nested-properties-container){flex-wrap:wrap;overflow:auto}.metadata-property:not(.nested-properties-container .metadata-property):has(>.metadata-property-value>.nested-properties-container)>.metadata-property-warning-icon{display:none}.metadata-property:not(.nested-properties-container .metadata-property):has(>.metadata-property-value>.nested-properties-container)>.metadata-property-value{overflow:visible;width:100%;margin-left:144px}.metadata-property:not(.nested-properties-container .metadata-property):has(>.metadata-property-value>.nested-properties-container).is-collapsed{flex-wrap:nowrap;overflow:hidden}.metadata-property:not(.nested-properties-container .metadata-property):has(>.metadata-property-value>.nested-properties-container).is-collapsed>.metadata-property-value{flex-direction:row;overflow:hidden;width:auto;margin-left:0}.nested-properties-container{width:100%;display:flex;flex-direction:column}.nested-properties-container .metadata-property{width:100%;border-bottom:none;overflow:visible}.nested-properties-container .nested-properties-collapsible{flex-wrap:wrap}.nested-properties-container .nested-properties-collapsible>.metadata-property-value{flex-direction:column;overflow:visible;width:100%;margin-left:144px}.nested-properties-container .nested-properties-collapsible.is-collapsed>.metadata-property-value{flex-direction:row;overflow:hidden;width:auto;margin-left:0}.nested-properties-collapsible.is-collapsed{flex-wrap:nowrap}.nested-properties-collapsible.is-collapsed>.metadata-property-value>.nested-properties-container{display:none}.nested-properties-collapsible.is-collapsed>.metadata-property-key>.nested-properties-collapse-btn{transform:rotate(-90deg)}.nested-properties-summary{display:none;color:var(--text-muted);font-style:italic;cursor:var(--cursor);white-space:nowrap}.nested-properties-collapsible.is-collapsed>.metadata-property-value>.nested-properties-summary{display:inline}.metadata-container:not(:has(.nested-properties-collapsible)) .nested-properties-header-actions{display:none}.nested-properties-header-actions{display:inline-flex;align-items:center;margin-left:4px;vertical-align:middle}.nested-properties-add-item,.nested-properties-add-property{display:inline-flex;width:fit-content;align-items:center;gap:4px;padding:2px 4px;color:var(--text-muted);font-size:var(--metadata-label-font-size);cursor:var(--cursor);border-radius:var(--radius-s)}.nested-properties-add-item:hover,.nested-properties-add-property:hover{color:var(--text-normal);background:var(--background-modifier-hover)}.nested-properties-add-item svg,.nested-properties-add-property svg{width:16px;height:16px}.nested-properties-add-property input{background:transparent;border:none;outline:none;color:var(--text-normal);font-size:inherit;padding:0}.nested-properties-floating-scrollbar{display:none;position:fixed;left:var(--track-left);width:var(--track-width);bottom:var(--track-bottom);height:12px;z-index:10;cursor:ew-resize;background:var(--background-secondary);border-top:1px solid var(--background-modifier-border)}.nested-properties-floating-scrollbar.is-visible{display:block}.nested-properties-floating-scrollbar-thumb{position:absolute;left:var(--thumb-left);width:var(--thumb-width);top:2px;height:8px;border-radius:4px;background:var(--scrollbar-thumb-bg)}.nested-properties-floating-scrollbar-thumb:hover{background:var(--scrollbar-active-thumb-bg)}.nested-properties-ew-resize{cursor:ew-resize}.nested-properties-collapse-btn{display:inline-flex;align-items:center;justify-content:center;cursor:var(--cursor);color:var(--text-muted);flex-shrink:0;width:16px;height:16px;align-self:center;transition:transform .1s ease-in-out}.nested-properties-collapse-btn svg{width:10px;height:10px}
|
||||||
68
src/content/.obsidian/plugins/obsidian-git/data.json
vendored
Normal file
68
src/content/.obsidian/plugins/obsidian-git/data.json
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"commitMessage": "Blog update {{date}}: {{numFiles}} file(s) changed.",
|
||||||
|
"autoCommitMessage": "Blog update {{date}}: {{numFiles}} file(s) changed.",
|
||||||
|
"commitMessageScript": "",
|
||||||
|
"commitDateFormat": "M/D/YYYY h:ma",
|
||||||
|
"autoSaveInterval": 0,
|
||||||
|
"autoPushInterval": 0,
|
||||||
|
"autoPullInterval": 0,
|
||||||
|
"autoPullOnBoot": true,
|
||||||
|
"autoCommitOnlyStaged": false,
|
||||||
|
"disablePush": false,
|
||||||
|
"pullBeforePush": true,
|
||||||
|
"disablePopups": false,
|
||||||
|
"showErrorNotices": true,
|
||||||
|
"disablePopupsForNoChanges": true,
|
||||||
|
"listChangedFilesInMessageBody": false,
|
||||||
|
"showStatusBar": true,
|
||||||
|
"updateSubmodules": false,
|
||||||
|
"syncMethod": "merge",
|
||||||
|
"mergeStrategy": "none",
|
||||||
|
"customMessageOnAutoBackup": false,
|
||||||
|
"autoBackupAfterFileChange": false,
|
||||||
|
"treeStructure": false,
|
||||||
|
"refreshSourceControl": true,
|
||||||
|
"basePath": "",
|
||||||
|
"differentIntervalCommitAndPush": false,
|
||||||
|
"changedFilesInStatusBar": true,
|
||||||
|
"showedMobileNotice": true,
|
||||||
|
"refreshSourceControlTimer": 7000,
|
||||||
|
"showBranchStatusBar": false,
|
||||||
|
"setLastSaveToLastCommit": false,
|
||||||
|
"submoduleRecurseCheckout": false,
|
||||||
|
"gitDir": "",
|
||||||
|
"showFileMenu": false,
|
||||||
|
"authorInHistoryView": "hide",
|
||||||
|
"dateInHistoryView": false,
|
||||||
|
"diffStyle": "split",
|
||||||
|
"hunks": {
|
||||||
|
"showSigns": false,
|
||||||
|
"hunkCommands": false,
|
||||||
|
"statusBar": "disabled"
|
||||||
|
},
|
||||||
|
"lineAuthor": {
|
||||||
|
"show": false,
|
||||||
|
"followMovement": "inactive",
|
||||||
|
"authorDisplay": "initials",
|
||||||
|
"showCommitHash": false,
|
||||||
|
"dateTimeFormatOptions": "date",
|
||||||
|
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
||||||
|
"dateTimeTimezone": "viewer-local",
|
||||||
|
"coloringMaxAge": "1y",
|
||||||
|
"colorNew": {
|
||||||
|
"r": 255,
|
||||||
|
"g": 150,
|
||||||
|
"b": 150
|
||||||
|
},
|
||||||
|
"colorOld": {
|
||||||
|
"r": 120,
|
||||||
|
"g": 160,
|
||||||
|
"b": 255
|
||||||
|
},
|
||||||
|
"textColorCss": "var(--text-muted)",
|
||||||
|
"ignoreWhitespace": false,
|
||||||
|
"gutterSpacingFallbackLength": 5,
|
||||||
|
"lastShownAuthorDisplay": "initials",
|
||||||
|
"lastShownDateTimeFormatOptions": "date"
|
||||||
|
}
|
||||||
|
}
|
||||||
452
src/content/.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
452
src/content/.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
src/content/.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
10
src/content/.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"author": "Vinzent",
|
||||||
|
"authorUrl": "https://github.com/Vinzent03",
|
||||||
|
"id": "obsidian-git",
|
||||||
|
"name": "Git",
|
||||||
|
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||||
|
"version": "2.38.0"
|
||||||
|
}
|
||||||
23
src/content/.obsidian/plugins/obsidian-git/obsidian_askpass.sh
vendored
Normal file
23
src/content/.obsidian/plugins/obsidian-git/obsidian_askpass.sh
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PROMPT="$1"
|
||||||
|
TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
rm -f "$TEMP_FILE" "$TEMP_FILE.response"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
echo "$PROMPT" > "$TEMP_FILE"
|
||||||
|
|
||||||
|
while [ ! -e "$TEMP_FILE.response" ]; do
|
||||||
|
if [ ! -e "$TEMP_FILE" ]; then
|
||||||
|
echo "Trigger file got removed: Abort" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
RESPONSE=$(cat "$TEMP_FILE.response")
|
||||||
|
|
||||||
|
echo "$RESPONSE"
|
||||||
710
src/content/.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
710
src/content/.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
@@ -0,0 +1,710 @@
|
|||||||
|
@keyframes loading {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-signs-gutter {
|
||||||
|
.cm-gutterElement {
|
||||||
|
/* Needed to align the sign properly for different line heigts. Such as
|
||||||
|
* when having a heading or list item.
|
||||||
|
*/
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .button-border {
|
||||||
|
border: 2px solid var(--interactive-accent);
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .view-content {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"] .view-content {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading > svg {
|
||||||
|
animation: 2s linear infinite loading;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-center {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-textarea {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-center-button {
|
||||||
|
display: block;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.mod-left {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.mod-right {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Limits the scrollbar to the view body */
|
||||||
|
.git-view {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
|
||||||
|
.workspace-drawer .git-view .nav-buttons-container {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-tools {
|
||||||
|
display: flex;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.git-tools .type {
|
||||||
|
padding-left: var(--size-2-1);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-tools .type[data-type="M"] {
|
||||||
|
color: orange;
|
||||||
|
}
|
||||||
|
.git-tools .type[data-type="D"] {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.git-tools .buttons {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.git-tools .buttons > * {
|
||||||
|
padding: 0 0;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .tree-item-self,
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"]
|
||||||
|
.tree-item-self:hover
|
||||||
|
.clickable-icon,
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"]
|
||||||
|
.tree-item-self:hover
|
||||||
|
.clickable-icon {
|
||||||
|
color: var(--icon-color-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Highlight an item as active if it's diff is currently opened */
|
||||||
|
.is-active .git-tools .buttons > * {
|
||||||
|
color: var(--nav-item-color-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-author {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-date {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-ref {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== diff2html ======
|
||||||
|
The following styles are adapted from the obsidian-version-history plugin by
|
||||||
|
@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
|
||||||
|
which itself is adapted from the diff2html library with the following original license:
|
||||||
|
|
||||||
|
https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
|
||||||
|
|
||||||
|
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||||
|
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||||
|
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
||||||
|
Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||||
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.theme-dark,
|
||||||
|
.theme-light {
|
||||||
|
--git-delete-bg: #ff475040;
|
||||||
|
--git-delete-hl: #96050a75;
|
||||||
|
--git-insert-bg: #68d36840;
|
||||||
|
--git-insert-hl: #23c02350;
|
||||||
|
--git-change-bg: #ffd55840;
|
||||||
|
--git-selected: #3572b0;
|
||||||
|
|
||||||
|
--git-delete: #c33;
|
||||||
|
--git-insert: #399839;
|
||||||
|
--git-change: #d0b44c;
|
||||||
|
--git-move: #3572b0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-diff {
|
||||||
|
.d2h-d-none {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.d2h-wrapper {
|
||||||
|
text-align: left;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.d2h-file-header.d2h-file-header {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
font-family:
|
||||||
|
Source Sans Pro,
|
||||||
|
Helvetica Neue,
|
||||||
|
Helvetica,
|
||||||
|
Arial,
|
||||||
|
sans-serif;
|
||||||
|
height: 35px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
.d2h-file-header,
|
||||||
|
.d2h-file-stats {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.d2h-file-header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.d2h-file-stats {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.d2h-lines-added {
|
||||||
|
border: 1px solid var(--color-green);
|
||||||
|
border-radius: 5px 0 0 5px;
|
||||||
|
color: var(--color-green);
|
||||||
|
padding: 2px;
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-lines-deleted {
|
||||||
|
border: 1px solid var(--color-red);
|
||||||
|
border-radius: 0 5px 5px 0;
|
||||||
|
color: var(--color-red);
|
||||||
|
margin-left: 1px;
|
||||||
|
padding: 2px;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-file-name-wrapper {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
font-size: 15px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-file-name {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-size: var(--h5-size);
|
||||||
|
}
|
||||||
|
.d2h-file-wrapper {
|
||||||
|
border: 1px solid var(--background-secondary-alt);
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
.d2h-file-collapse {
|
||||||
|
-webkit-box-pack: end;
|
||||||
|
-ms-flex-pack: end;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid var(--background-secondary-alt);
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
font-size: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 4px 8px;
|
||||||
|
}
|
||||||
|
.d2h-file-collapse.d2h-selected {
|
||||||
|
background-color: var(--git-selected);
|
||||||
|
}
|
||||||
|
.d2h-file-collapse-input {
|
||||||
|
margin: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
.d2h-diff-table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
font-size: var(--code-size);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-files-diff {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-file-diff {
|
||||||
|
/*
|
||||||
|
overflow-y: scroll;
|
||||||
|
*/
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: var(--font-text-size);
|
||||||
|
line-height: var(--line-height-normal);
|
||||||
|
}
|
||||||
|
.d2h-file-side-diff {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
margin-right: -4px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
overflow-y: hidden;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.d2h-code-line {
|
||||||
|
padding-left: 6em;
|
||||||
|
padding-right: 1.5em;
|
||||||
|
}
|
||||||
|
.d2h-code-line,
|
||||||
|
.d2h-code-side-line {
|
||||||
|
display: inline-block;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-code-side-line {
|
||||||
|
/* needed to be changed */
|
||||||
|
padding-left: 0.5em;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
}
|
||||||
|
.d2h-code-line-ctn {
|
||||||
|
word-wrap: normal;
|
||||||
|
background: none;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 100%;
|
||||||
|
/* only works for line-by-line */
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.d2h-code-line del,
|
||||||
|
.d2h-code-side-line del {
|
||||||
|
background-color: var(--git-delete-hl);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.d2h-code-line del,
|
||||||
|
.d2h-code-line ins,
|
||||||
|
.d2h-code-side-line del,
|
||||||
|
.d2h-code-side-line ins {
|
||||||
|
border-radius: 0.2em;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: -1px;
|
||||||
|
text-decoration: none;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-code-line ins,
|
||||||
|
.d2h-code-side-line ins {
|
||||||
|
background-color: var(--git-insert-hl);
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.d2h-code-line-prefix {
|
||||||
|
word-wrap: normal;
|
||||||
|
background: none;
|
||||||
|
display: inline;
|
||||||
|
padding: 0;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.line-num1 {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.line-num1,
|
||||||
|
.line-num2 {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
/*
|
||||||
|
padding: 0 0.5em;
|
||||||
|
*/
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 2.5em;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.line-num2 {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.d2h-code-linenumber {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: solid var(--background-modifier-border);
|
||||||
|
border-width: 0 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-faint);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: right;
|
||||||
|
width: 5.5em;
|
||||||
|
}
|
||||||
|
.d2h-code-linenumber:after {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
.d2h-code-side-linenumber {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: solid var(--background-modifier-border);
|
||||||
|
border-width: 0 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-faint);
|
||||||
|
cursor: pointer;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
text-align: right;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 4em;
|
||||||
|
/* needed to be changed */
|
||||||
|
display: table-cell;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.d2h-code-side-linenumber:after {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
.d2h-code-side-emptyplaceholder,
|
||||||
|
.d2h-emptyplaceholder {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-color: var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
.d2h-code-line-prefix,
|
||||||
|
.d2h-code-linenumber,
|
||||||
|
.d2h-code-side-linenumber,
|
||||||
|
.d2h-emptyplaceholder {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.d2h-code-linenumber,
|
||||||
|
.d2h-code-side-linenumber {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.d2h-del {
|
||||||
|
background-color: var(--git-delete-bg);
|
||||||
|
border-color: var(--git-delete-hl);
|
||||||
|
}
|
||||||
|
.d2h-ins {
|
||||||
|
background-color: var(--git-insert-bg);
|
||||||
|
border-color: var(--git-insert-hl);
|
||||||
|
}
|
||||||
|
.d2h-info {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-color: var(--background-modifier-border);
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
.d2h-del,
|
||||||
|
.d2h-ins,
|
||||||
|
.d2h-file-diff .d2h-change {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.d2h-file-diff .d2h-del.d2h-change {
|
||||||
|
background-color: var(--git-change-bg);
|
||||||
|
}
|
||||||
|
.d2h-file-diff .d2h-ins.d2h-change {
|
||||||
|
background-color: var(--git-insert-bg);
|
||||||
|
}
|
||||||
|
.d2h-file-list-wrapper {
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: default;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.d2h-file-list-header {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.d2h-file-list-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.d2h-file-list-line {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.d2h-file-list {
|
||||||
|
}
|
||||||
|
.d2h-file-list > li {
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
.d2h-file-list > li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.d2h-file-switch {
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.d2h-icon {
|
||||||
|
fill: currentColor;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-deleted {
|
||||||
|
color: var(--git-delete);
|
||||||
|
}
|
||||||
|
.d2h-added {
|
||||||
|
color: var(--git-insert);
|
||||||
|
}
|
||||||
|
.d2h-changed {
|
||||||
|
color: var(--git-change);
|
||||||
|
}
|
||||||
|
.d2h-moved {
|
||||||
|
color: var(--git-move);
|
||||||
|
}
|
||||||
|
.d2h-tag {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
.d2h-deleted-tag {
|
||||||
|
border: 1px solid var(--git-delete);
|
||||||
|
}
|
||||||
|
.d2h-added-tag {
|
||||||
|
border: 1px solid var(--git-insert);
|
||||||
|
}
|
||||||
|
.d2h-changed-tag {
|
||||||
|
border: 1px solid var(--git-change);
|
||||||
|
}
|
||||||
|
.d2h-moved-tag {
|
||||||
|
border: 1px solid var(--git-move);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* needed for line-by-line*/
|
||||||
|
|
||||||
|
.d2h-diff-tbody {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====================== Line Authoring Information ====================== */
|
||||||
|
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter {
|
||||||
|
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
|
||||||
|
border-width: 0px 2px 0.2px 2px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: var(--background-secondary);
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter > div,
|
||||||
|
.line-author-settings-preview {
|
||||||
|
/* delegate text color to settings */
|
||||||
|
color: var(--obs-git-gutter-text);
|
||||||
|
font-family: monospace;
|
||||||
|
height: 100%; /* ensure, that age-based background color occupies entire parent */
|
||||||
|
text-align: right;
|
||||||
|
padding: 0px 6px 0px 6px;
|
||||||
|
white-space: pre; /* Keep spaces and do not collapse them. */
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
/* hide git blame gutter not to superpose text */
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-unified-diff-view,
|
||||||
|
.git-split-diff-view .cm-deletedLine .cm-changedText {
|
||||||
|
background-color: #ee443330;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-unified-diff-view,
|
||||||
|
.git-split-diff-view .cm-insertedLine .cm-changedText {
|
||||||
|
background-color: #22bb2230;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
|
||||||
|
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
|
||||||
|
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Override styling of Codemirror merge view "collapsed lines" indicator */
|
||||||
|
.git-split-diff-view .ͼ2 .cm-collapsedLines {
|
||||||
|
background: var(--interactive-normal);
|
||||||
|
border-radius: var(--radius-m);
|
||||||
|
color: var(--text-accent);
|
||||||
|
font-size: var(--font-small);
|
||||||
|
padding: var(--size-4-1) var(--size-4-1);
|
||||||
|
}
|
||||||
|
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
|
||||||
|
background: var(--interactive-hover);
|
||||||
|
color: var(--text-accent-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-signs-gutter {
|
||||||
|
.cm-gutterElement {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker:hover {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-add {
|
||||||
|
background-color: var(--color-green);
|
||||||
|
justify-self: center;
|
||||||
|
height: inherit;
|
||||||
|
width: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-change {
|
||||||
|
background-color: var(--color-yellow);
|
||||||
|
justify-self: center;
|
||||||
|
height: inherit;
|
||||||
|
width: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-changedelete {
|
||||||
|
color: var(--color-yellow);
|
||||||
|
font-weight: var(--font-bold);
|
||||||
|
font-size: 1rem;
|
||||||
|
justify-self: center;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-delete {
|
||||||
|
background-color: var(--color-red);
|
||||||
|
height: 0.2rem;
|
||||||
|
width: 0.8rem;
|
||||||
|
align-self: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-topdelete {
|
||||||
|
background-color: var(--color-red);
|
||||||
|
height: 0.2rem;
|
||||||
|
width: 0.8rem;
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-change {
|
||||||
|
width: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-add {
|
||||||
|
width: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-delete {
|
||||||
|
height: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-topdelete {
|
||||||
|
height: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-changedelete {
|
||||||
|
font-weight: var(--font-bold);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.staged {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-diff {
|
||||||
|
.cm-merge-revert {
|
||||||
|
width: 4em;
|
||||||
|
}
|
||||||
|
/* Ensure that merge revert markers are positioned correctly */
|
||||||
|
.cm-merge-revert > * {
|
||||||
|
position: absolute;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prevent shifting of the editor when git signs gutter is the only gutter present */
|
||||||
|
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
|
||||||
|
margin-inline-end: 0;
|
||||||
|
.git-signs-gutter {
|
||||||
|
margin-inline-start: -1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-changes-status-bar-colored {
|
||||||
|
.git-add {
|
||||||
|
color: var(--color-green);
|
||||||
|
}
|
||||||
|
.git-change {
|
||||||
|
color: var(--color-yellow);
|
||||||
|
}
|
||||||
|
.git-delete {
|
||||||
|
color: var(--color-red);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-changes-status-bar .git-add {
|
||||||
|
margin-right: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-changes-status-bar .git-change {
|
||||||
|
margin-right: 0.3em;
|
||||||
|
}
|
||||||
10
src/content/.obsidian/plugins/obsidian-paste-image-rename/data.json
vendored
Normal file
10
src/content/.obsidian/plugins/obsidian-paste-image-rename/data.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"imageNamePattern": "{{fileName}}_{{DATE:YYYY-MM-DD}}",
|
||||||
|
"dupNumberAtStart": false,
|
||||||
|
"dupNumberDelimiter": "-",
|
||||||
|
"dupNumberAlways": false,
|
||||||
|
"autoRename": false,
|
||||||
|
"handleAllAttachments": false,
|
||||||
|
"excludeExtensionPattern": "",
|
||||||
|
"disableRenameNotice": false
|
||||||
|
}
|
||||||
944
src/content/.obsidian/plugins/obsidian-paste-image-rename/main.js
vendored
Normal file
944
src/content/.obsidian/plugins/obsidian-paste-image-rename/main.js
vendored
Normal file
@@ -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 */
|
||||||
10
src/content/.obsidian/plugins/obsidian-paste-image-rename/manifest.json
vendored
Normal file
10
src/content/.obsidian/plugins/obsidian-paste-image-rename/manifest.json
vendored
Normal file
@@ -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
|
||||||
|
}
|
||||||
79
src/content/.obsidian/plugins/obsidian-paste-image-rename/styles.css
vendored
Normal file
79
src/content/.obsidian/plugins/obsidian-paste-image-rename/styles.css
vendored
Normal file
@@ -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%;
|
||||||
|
}
|
||||||
5
src/content/.obsidian/plugins/obsidian42-brat/brat-migrations.json
vendored
Normal file
5
src/content/.obsidian/plugins/obsidian42-brat/brat-migrations.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"appliedMigrations": [
|
||||||
|
"tokens-to-secretstorage-v1"
|
||||||
|
]
|
||||||
|
}
|
||||||
84
src/content/.obsidian/plugins/obsidian42-brat/data.json
vendored
Normal file
84
src/content/.obsidian/plugins/obsidian42-brat/data.json
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"pluginList": [
|
||||||
|
"mnaoumov/obsidian-nested-properties",
|
||||||
|
"davidvkimball/obsidian-property-over-file-name",
|
||||||
|
"davidvkimball/obsidian-file-name-history",
|
||||||
|
"davidvkimball/obsidian-explorer-focus",
|
||||||
|
"davidvkimball/obsidian-ui-tweaker",
|
||||||
|
"davidvkimball/obsidian-home-base",
|
||||||
|
"davidvkimball/obsidian-image-manager",
|
||||||
|
"davidvkimball/obsidian-vault-cms",
|
||||||
|
"davidvkimball/obsidian-bases-cms",
|
||||||
|
"davidvkimball/obsidian-oxygen-settings",
|
||||||
|
"davidvkimball/obsidian-seo",
|
||||||
|
"davidvkimball/obsidian-disable-tabs",
|
||||||
|
"davidvkimball/obsidian-astro-composer"
|
||||||
|
],
|
||||||
|
"pluginSubListFrozenVersion": [
|
||||||
|
{
|
||||||
|
"repo": "mnaoumov/obsidian-nested-properties",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-property-over-file-name",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-file-name-history",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-explorer-focus",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-ui-tweaker",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-home-base",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-image-manager",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-vault-cms",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-bases-cms",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-oxygen-settings",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-seo",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-disable-tabs",
|
||||||
|
"version": "latest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"repo": "davidvkimball/obsidian-astro-composer",
|
||||||
|
"version": "latest"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"themesList": [],
|
||||||
|
"updateAtStartup": true,
|
||||||
|
"updateThemesAtStartup": true,
|
||||||
|
"enableAfterInstall": true,
|
||||||
|
"loggingEnabled": false,
|
||||||
|
"loggingPath": "BRAT-log",
|
||||||
|
"loggingVerboseEnabled": false,
|
||||||
|
"debuggingMode": false,
|
||||||
|
"notificationsEnabled": true,
|
||||||
|
"globalTokenName": "",
|
||||||
|
"personalAccessToken": "",
|
||||||
|
"selectLatestPluginVersionByDefault": false,
|
||||||
|
"allowIncompatiblePlugins": false
|
||||||
|
}
|
||||||
45
src/content/.obsidian/plugins/obsidian42-brat/main.js
vendored
Normal file
45
src/content/.obsidian/plugins/obsidian42-brat/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
14
src/content/.obsidian/plugins/obsidian42-brat/manifest.json
vendored
Normal file
14
src/content/.obsidian/plugins/obsidian42-brat/manifest.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian42-brat",
|
||||||
|
"name": "BRAT",
|
||||||
|
"version": "2.0.2",
|
||||||
|
"minAppVersion": "1.11.4",
|
||||||
|
"description": "Easily install a beta version of a plugin for testing.",
|
||||||
|
"author": "TfTHacker",
|
||||||
|
"authorUrl": "https://github.com/TfTHacker/obsidian42-brat",
|
||||||
|
"helpUrl": "https://tfthacker.com/BRAT",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": {
|
||||||
|
"Visit my site": "https://tfthacker.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
152
src/content/.obsidian/plugins/obsidian42-brat/styles.css
vendored
Normal file
152
src/content/.obsidian/plugins/obsidian42-brat/styles.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
.brat-modal .modal-button-container {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-modal .disabled-setting {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-modal .disabled-setting:hover {
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input validation styles */
|
||||||
|
.brat-settings .valid-input,
|
||||||
|
.brat-modal .valid-repository {
|
||||||
|
border-color: var(--color-green);
|
||||||
|
}
|
||||||
|
.brat-settings .invalid-input,
|
||||||
|
.brat-modal .invalid-repository {
|
||||||
|
border-color: var(--color-red);
|
||||||
|
}
|
||||||
|
.brat-settings .validation-error,
|
||||||
|
.brat-modal .validation-error {
|
||||||
|
border-color: var(--color-orange);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Version selector */
|
||||||
|
.brat-version-selector {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 400px;
|
||||||
|
justify-content: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-token-input {
|
||||||
|
min-width: 33%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Token info container styles */
|
||||||
|
.brat-token-info {
|
||||||
|
margin-top: 8px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Token status indicators */
|
||||||
|
.brat-token-info.valid,
|
||||||
|
.brat-token-status.valid {
|
||||||
|
color: var(--color-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-token-info.invalid,
|
||||||
|
.brat-token-status.invalid {
|
||||||
|
color: var(--color-red);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-token-info.valid {
|
||||||
|
border-left: 3px solid var(--color-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-token-info.invalid {
|
||||||
|
border-left: 3px solid var(--color-red);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Token details and status */
|
||||||
|
.brat-token-status {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-token-details {
|
||||||
|
margin-top: 4px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Token warnings */
|
||||||
|
.brat-token-warning {
|
||||||
|
color: var(--color-orange);
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Token additional info */
|
||||||
|
.brat-token-scopes,
|
||||||
|
.brat-token-rate {
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Flex break utility */
|
||||||
|
.brat-modal .break {
|
||||||
|
flex-basis: 100%;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Validation status */
|
||||||
|
.brat-modal .validation-status-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-modal .validation-status {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
font-size: 0.8em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.confirm-modal .ok-button {
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide filtered plugin items */
|
||||||
|
.brat-plugin-item[hidden] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide filtered theme items */
|
||||||
|
.brat-theme-item[hidden] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Filter and button layout */
|
||||||
|
.brat-filter-and-button {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 10px;
|
||||||
|
margin: 0.75em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-filter-input {
|
||||||
|
max-width: 300px;
|
||||||
|
padding: 4px 8px;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-filter-input:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--interactive-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-filter-and-button .setting-item {
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brat-filter-and-button .setting-item-control {
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
42
src/content/.obsidian/plugins/omnisearch/data.json
vendored
Normal file
42
src/content/.obsidian/plugins/omnisearch/data.json
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"useCache": true,
|
||||||
|
"hideExcluded": true,
|
||||||
|
"recencyBoost": "0",
|
||||||
|
"downrankedFoldersFilters": [],
|
||||||
|
"ignoreDiacritics": true,
|
||||||
|
"ignoreArabicDiacritics": false,
|
||||||
|
"indexedFileTypes": [],
|
||||||
|
"displayTitle": "title",
|
||||||
|
"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
|
||||||
|
}
|
||||||
171
src/content/.obsidian/plugins/omnisearch/main.js
vendored
Normal file
171
src/content/.obsidian/plugins/omnisearch/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
14
src/content/.obsidian/plugins/omnisearch/manifest.json
vendored
Normal file
14
src/content/.obsidian/plugins/omnisearch/manifest.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"id": "omnisearch",
|
||||||
|
"name": "Omnisearch",
|
||||||
|
"version": "1.28.2",
|
||||||
|
"minAppVersion": "1.7.2",
|
||||||
|
"description": "A search engine that just works",
|
||||||
|
"author": "Simon Cambier",
|
||||||
|
"authorUrl": "https://github.com/scambier/obsidian-omnisearch",
|
||||||
|
"fundingUrl": {
|
||||||
|
"Github": "https://github.com/sponsors/scambier",
|
||||||
|
"Ko-fi": "https://ko-fi.com/scambier"
|
||||||
|
},
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
135
src/content/.obsidian/plugins/omnisearch/styles.css
vendored
Normal file
135
src/content/.obsidian/plugins/omnisearch/styles.css
vendored
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
.omnisearch-modal {
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result {
|
||||||
|
white-space: normal;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
/* justify-content: space-between; */
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__title-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
column-gap: 5px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__title {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__title > span {
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__folder-path {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__extension {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__counter {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__body {
|
||||||
|
white-space: normal;
|
||||||
|
font-size: small;
|
||||||
|
word-wrap: normal;
|
||||||
|
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-inline-start: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__embed {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.omnisearch-result__image-container {
|
||||||
|
flex-basis: 20%;
|
||||||
|
text-align: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-highlight {
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-default-highlight {
|
||||||
|
text-decoration: underline;
|
||||||
|
text-decoration-color: var(--text-highlight-bg);
|
||||||
|
text-decoration-thickness: 3px;
|
||||||
|
text-underline-offset: -1px;
|
||||||
|
text-decoration-skip-ink: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-input-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__icon {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__icon svg {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-result__icon--emoji {
|
||||||
|
font-size: 16px;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.omnisearch-input-container {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-input-container__buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 1em 0 1em;
|
||||||
|
gap: 1em;
|
||||||
|
}
|
||||||
|
.omnisearch-input-container__buttons > button {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 600px) {
|
||||||
|
.omnisearch-input-container__buttons {
|
||||||
|
margin-inline-end: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.omnisearch-input-field {
|
||||||
|
position: relative;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
553
src/content/.obsidian/plugins/oxygen-settings/data.json
vendored
Normal file
553
src/content/.obsidian/plugins/oxygen-settings/data.json
vendored
Normal file
@@ -0,0 +1,553 @@
|
|||||||
|
{
|
||||||
|
"lightStyle": "oxygen-light",
|
||||||
|
"darkStyle": "oxygen-dark",
|
||||||
|
"lightScheme": "oxygen-oxygen-light",
|
||||||
|
"darkScheme": "oxygen-oxygen-dark",
|
||||||
|
"editorFont": "",
|
||||||
|
"lineHeight": 1.5,
|
||||||
|
"lineWidth": 40,
|
||||||
|
"lineWidthWide": 50,
|
||||||
|
"maxWidth": 88,
|
||||||
|
"textNormal": 16,
|
||||||
|
"textSmall": 13,
|
||||||
|
"imgGrid": true,
|
||||||
|
"imgWidth": "img-default-width",
|
||||||
|
"tableWidth": "table-default-width",
|
||||||
|
"iframeWidth": "iframe-default-width",
|
||||||
|
"mapWidth": "map-default-width",
|
||||||
|
"chartWidth": "chart-default-width",
|
||||||
|
"colorfulHeadings": false,
|
||||||
|
"colorfulFrame": false,
|
||||||
|
"colorfulActiveStates": false,
|
||||||
|
"trimNames": true,
|
||||||
|
"labeledNav": false,
|
||||||
|
"fullWidthMedia": true,
|
||||||
|
"workspaceBorders": "enhanced",
|
||||||
|
"minimalStatus": true,
|
||||||
|
"underlineInternal": true,
|
||||||
|
"underlineExternal": true,
|
||||||
|
"folding": true,
|
||||||
|
"lineNumbers": false,
|
||||||
|
"readableLineLength": true,
|
||||||
|
"devBlockWidth": false,
|
||||||
|
"customPresets": [
|
||||||
|
{
|
||||||
|
"id": "discord",
|
||||||
|
"name": "Discord",
|
||||||
|
"author": "David V. Kimball",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"light": {
|
||||||
|
"base": {
|
||||||
|
"h": 0,
|
||||||
|
"s": 0,
|
||||||
|
"l": 98
|
||||||
|
},
|
||||||
|
"accent": {
|
||||||
|
"h": 235,
|
||||||
|
"s": 86,
|
||||||
|
"l": 65
|
||||||
|
},
|
||||||
|
"colors": {
|
||||||
|
"bg1": "#fbfbfb",
|
||||||
|
"bg2": "#f3f3f4",
|
||||||
|
"bg3": "#ffffff"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dark": {
|
||||||
|
"base": {
|
||||||
|
"h": 240,
|
||||||
|
"s": 6,
|
||||||
|
"l": 7
|
||||||
|
},
|
||||||
|
"accent": {
|
||||||
|
"h": 235,
|
||||||
|
"s": 86,
|
||||||
|
"l": 65
|
||||||
|
},
|
||||||
|
"colors": {
|
||||||
|
"bg1": "#1a1a1e",
|
||||||
|
"bg2": "#121214",
|
||||||
|
"ui3": "#222327"
|
||||||
|
},
|
||||||
|
"frameLightnessOffset": -5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"enableCustomPresets": true,
|
||||||
|
"navIndentationGuideWidth": "0px",
|
||||||
|
"navIndentationGuideColor": "rgba(var(--mono-rgb-100), 0.12)",
|
||||||
|
"animationPersonality": "default",
|
||||||
|
"animationSpeed": 0.7,
|
||||||
|
"enableBlur": false,
|
||||||
|
"useDefaultFolderIcon": false,
|
||||||
|
"focusMode": false,
|
||||||
|
"deemphasizeProperties": false,
|
||||||
|
"autoHideTabBarWhenSingleTab": false,
|
||||||
|
"hideTitleBarOnHover": false,
|
||||||
|
"hideTabs": false,
|
||||||
|
"hideStatus": false,
|
||||||
|
"hideScroll": false,
|
||||||
|
"hideSidebarButtons": false,
|
||||||
|
"hideLeftSidebarButton": false,
|
||||||
|
"hideRightSidebarButton": false,
|
||||||
|
"hideTooltips": false,
|
||||||
|
"hideFileNavButtons": false,
|
||||||
|
"hideSearchSuggestions": false,
|
||||||
|
"hideSearchCounts": false,
|
||||||
|
"hideInstructions": false,
|
||||||
|
"hidePropertiesReading": true,
|
||||||
|
"hideVault": false,
|
||||||
|
"hidePropertiesHeading": true,
|
||||||
|
"hideAddPropertyButton": true,
|
||||||
|
"autoHideVaultSwitcher": true,
|
||||||
|
"autoHideVaultSwitcherBgTransparency": 1,
|
||||||
|
"hideHelpButton": false,
|
||||||
|
"autoHideSettingsButton": false,
|
||||||
|
"collapseFileExplorerButtons": true,
|
||||||
|
"autoHideFileExplorerNavHeader": false,
|
||||||
|
"autoHideOtherNavHeaders": false,
|
||||||
|
"autoHideLeftTabHeaders": false,
|
||||||
|
"autoHideRightTabHeaders": false,
|
||||||
|
"collapseOtherNavHeaders": false,
|
||||||
|
"autoCollapseRibbon": false,
|
||||||
|
"hideButtonNewNote": false,
|
||||||
|
"hideButtonNewFolder": false,
|
||||||
|
"hideButtonSortOrder": false,
|
||||||
|
"hideButtonAutoReveal": false,
|
||||||
|
"hideButtonCollapseAll": false,
|
||||||
|
"hideButtonReadingMode": false,
|
||||||
|
"hideButtonSearchSettings": false,
|
||||||
|
"hideTabListIcon": false,
|
||||||
|
"hideNewTabIcon": false,
|
||||||
|
"hideTabCloseButton": false,
|
||||||
|
"hideIconMobileChevrons": false,
|
||||||
|
"hideButtonMobileNavbarActionBack": false,
|
||||||
|
"hideButtonMobileNavbarActionForward": false,
|
||||||
|
"hideButtonMobileNavbarActionQuickSwitcher": false,
|
||||||
|
"hideButtonMobileNavbarActionNewTab": false,
|
||||||
|
"hideButtonMobileNavbarActionTabs": false,
|
||||||
|
"hideButtonMobileNavbarActionMenu": false,
|
||||||
|
"swapMobileNewTabIcon": false,
|
||||||
|
"orderNavbarButton1": "order-navbar-button-nth-child-1-1",
|
||||||
|
"orderNavbarButton2": "order-navbar-button-nth-child-2-2",
|
||||||
|
"orderNavbarButton3": "order-navbar-button-nth-child-3-3",
|
||||||
|
"orderNavbarButton4": "order-navbar-button-nth-child-4-4",
|
||||||
|
"orderNavbarButton5": "order-navbar-button-nth-child-5-5",
|
||||||
|
"orderNavbarButton6": "order-navbar-button-nth-child-6-6",
|
||||||
|
"helpButtonReplacement": {
|
||||||
|
"enabled": false,
|
||||||
|
"commandId": "oxygen-settings:oxygen-settings:open-settings",
|
||||||
|
"iconId": "lucide-settings-2"
|
||||||
|
},
|
||||||
|
"autoHideVaultSwitcherTransparency": 0,
|
||||||
|
"zenMode": false,
|
||||||
|
"zenModeFullscreen": false,
|
||||||
|
"zenModeLeftSidebar": true,
|
||||||
|
"zenModeRightSidebar": true,
|
||||||
|
"bordersToggle": false,
|
||||||
|
"workspaceBordersEnhanced": true,
|
||||||
|
"keepTabBorders": false,
|
||||||
|
"autoHideScrollbars": false,
|
||||||
|
"statusBarStyle": "status-bar-default",
|
||||||
|
"uiHoverReveal": false,
|
||||||
|
"uiHoverRevealViewHeaderLeft": false,
|
||||||
|
"uiHoverRevealViewActions": false,
|
||||||
|
"uiHoverRevealSidebarToggleLeft": false,
|
||||||
|
"uiHoverRevealSidebarToggleRight": false,
|
||||||
|
"uiHoverRevealOpacity": 50,
|
||||||
|
"focusModeEnhanced": false,
|
||||||
|
"focusModeOpacity": 50,
|
||||||
|
"focusViewHeaderOpacity": 50,
|
||||||
|
"focusHideViewHeaderLeft": false,
|
||||||
|
"focusHideViewActions": false,
|
||||||
|
"focusHideSidebarToggleButtons": false,
|
||||||
|
"scrollbarHide": false,
|
||||||
|
"interfaceFont": "",
|
||||||
|
"densityModifier": 1,
|
||||||
|
"radiusModifier": 1,
|
||||||
|
"iconStrokeModifier": 1,
|
||||||
|
"layoutStyle": "minimal",
|
||||||
|
"elementStyle": "minimal",
|
||||||
|
"mobileStyle": "stable",
|
||||||
|
"tabTitleFontSize": "0.9em",
|
||||||
|
"tabTitleFontWeight": 400,
|
||||||
|
"tabTitleAlignment": "center",
|
||||||
|
"headerHeight": "40px",
|
||||||
|
"fileHeaderVisibility": "minimal-tab-title-hover",
|
||||||
|
"sidebarActiveFileStyle": "subtle",
|
||||||
|
"sidebarColorfulFolders": "none",
|
||||||
|
"sidebarItemNameSize": "13px",
|
||||||
|
"sidebarLargeNewNoteButton": false,
|
||||||
|
"sidebarFullItemName": false,
|
||||||
|
"sidebarBoldFolders": false,
|
||||||
|
"sidebarAlwaysShowVaultSwitcher": false,
|
||||||
|
"indentationGuidesThickness": "thin",
|
||||||
|
"indentationGuidesColor": "subtle",
|
||||||
|
"windowFrameOpacity": 100,
|
||||||
|
"windowFrameInvertColors": false,
|
||||||
|
"windowTitleOff": false,
|
||||||
|
"frameBackgroundLight": "",
|
||||||
|
"frameBackgroundDark": "",
|
||||||
|
"frameIconColorLight": "",
|
||||||
|
"frameIconColorDark": "",
|
||||||
|
"titlebarTextColorFocusedLight": "",
|
||||||
|
"titlebarTextColorFocusedDark": "",
|
||||||
|
"titlebarTextColorLight": "",
|
||||||
|
"titlebarTextColorDark": "",
|
||||||
|
"titlebarTextWeight": 600,
|
||||||
|
"tabletLeftSidebarWidth": "",
|
||||||
|
"tabletRightSidebarWidth": "",
|
||||||
|
"tabletLeftSidebarWidthPinned": "",
|
||||||
|
"tabletRightSidebarWidthPinned": "",
|
||||||
|
"monospaceFont": "",
|
||||||
|
"boldTextModifier": 200,
|
||||||
|
"focusView": false,
|
||||||
|
"disableQuickModeSwitcher": false,
|
||||||
|
"activeLineStyle": "none",
|
||||||
|
"activeLineColor": "monochrome",
|
||||||
|
"activeLineBackgroundColorLight": "",
|
||||||
|
"activeLineBackgroundColorDark": "",
|
||||||
|
"normalLineWidth": "",
|
||||||
|
"wideLineWidth": "",
|
||||||
|
"basesWidth": "default",
|
||||||
|
"imageWidth": "default",
|
||||||
|
"mapWidthNew": "default",
|
||||||
|
"chartWidthNew": "default",
|
||||||
|
"editorIndentationThickness": "none",
|
||||||
|
"editorIndentationColor": "subtle",
|
||||||
|
"editorIndentationGuideColorLight": "",
|
||||||
|
"editorIndentationGuideColorDark": "",
|
||||||
|
"editorIndentationGuideColorActiveLight": "",
|
||||||
|
"editorIndentationGuideColorActiveDark": "",
|
||||||
|
"propertiesStyle": "default",
|
||||||
|
"propertiesHideHeading": false,
|
||||||
|
"propertiesHideAddButton": false,
|
||||||
|
"propertiesHideIcons": false,
|
||||||
|
"propertiesDisableLinkWrap": false,
|
||||||
|
"propertiesNameWidth": 1,
|
||||||
|
"headingSpacing": "",
|
||||||
|
"paragraphSpacing": "",
|
||||||
|
"readableSpacing": false,
|
||||||
|
"readableSpacingModifier": 0.25,
|
||||||
|
"pSpacing": "",
|
||||||
|
"inlineTitleDisableBackground": false,
|
||||||
|
"inlineTitleFont": "",
|
||||||
|
"inlineTitleFontSize": "",
|
||||||
|
"inlineTitleFontWeight": 600,
|
||||||
|
"inlineTitleColorLight": "",
|
||||||
|
"inlineTitleColorDark": "",
|
||||||
|
"h1ColorLight": "",
|
||||||
|
"h1ColorDark": "",
|
||||||
|
"h1Font": "",
|
||||||
|
"h1Size": "",
|
||||||
|
"h1Weight": 600,
|
||||||
|
"h1Variant": "normal",
|
||||||
|
"h1Style": "normal",
|
||||||
|
"h1Transform": "normal",
|
||||||
|
"h1DividerLine": false,
|
||||||
|
"h2ColorLight": "",
|
||||||
|
"h2ColorDark": "",
|
||||||
|
"h2Font": "",
|
||||||
|
"h2Size": "",
|
||||||
|
"h2Weight": 600,
|
||||||
|
"h2Variant": "normal",
|
||||||
|
"h2Style": "normal",
|
||||||
|
"h2Transform": "normal",
|
||||||
|
"h2DividerLine": false,
|
||||||
|
"h3ColorLight": "",
|
||||||
|
"h3ColorDark": "",
|
||||||
|
"h3Font": "",
|
||||||
|
"h3Size": "",
|
||||||
|
"h3Weight": 600,
|
||||||
|
"h3Variant": "normal",
|
||||||
|
"h3Style": "normal",
|
||||||
|
"h3Transform": "normal",
|
||||||
|
"h3DividerLine": false,
|
||||||
|
"h4ColorLight": "",
|
||||||
|
"h4ColorDark": "",
|
||||||
|
"h4Font": "",
|
||||||
|
"h4Size": "",
|
||||||
|
"h4Weight": 500,
|
||||||
|
"h4Variant": "normal",
|
||||||
|
"h4Style": "normal",
|
||||||
|
"h4Transform": "normal",
|
||||||
|
"h4DividerLine": false,
|
||||||
|
"h5ColorLight": "",
|
||||||
|
"h5ColorDark": "",
|
||||||
|
"h5Font": "",
|
||||||
|
"h5Size": "",
|
||||||
|
"h5Weight": 500,
|
||||||
|
"h5Variant": "normal",
|
||||||
|
"h5Style": "normal",
|
||||||
|
"h5Transform": "normal",
|
||||||
|
"h5DividerLine": false,
|
||||||
|
"h6ColorLight": "",
|
||||||
|
"h6ColorDark": "",
|
||||||
|
"h6Font": "",
|
||||||
|
"h6Size": "",
|
||||||
|
"h6Weight": 400,
|
||||||
|
"h6Variant": "normal",
|
||||||
|
"h6Style": "normal",
|
||||||
|
"h6Transform": "normal",
|
||||||
|
"h6DividerLine": false,
|
||||||
|
"headingsColorfulText": false,
|
||||||
|
"headingsColorfulIndicator": false,
|
||||||
|
"headingsColorfulBackground": false,
|
||||||
|
"headingsColorfulFullWidth": false,
|
||||||
|
"horizontalRuleWidth": "",
|
||||||
|
"horizontalRuleThickness": 2,
|
||||||
|
"horizontalRuleAlignment": "start",
|
||||||
|
"horizontalRuleDashed": false,
|
||||||
|
"horizontalRuleDashedLineSize": "",
|
||||||
|
"horizontalRuleDashedLineSpacing": "",
|
||||||
|
"bannerDisabled": false,
|
||||||
|
"bannerImageHeight": "",
|
||||||
|
"bannerImageHeightSmall": "",
|
||||||
|
"bannerImageSideSpacing": "",
|
||||||
|
"bannerImageRadius": 8,
|
||||||
|
"bannerImageFit": "cover",
|
||||||
|
"bannerImageFadeOffset": "",
|
||||||
|
"bannerIconSize": "",
|
||||||
|
"bannerToContentOffset": "",
|
||||||
|
"blockquotesStyle": "default",
|
||||||
|
"blockquotesBorderThickness": 1,
|
||||||
|
"blockquotesFontSize": "",
|
||||||
|
"blockquotesTextColorLight": "",
|
||||||
|
"blockquotesTextColorDark": "",
|
||||||
|
"blockquotesBackgroundColorLight": "",
|
||||||
|
"blockquotesBackgroundColorDark": "",
|
||||||
|
"blockquotesBorderColorLight": "",
|
||||||
|
"blockquotesBorderColorDark": "",
|
||||||
|
"calloutsStyle": "filled",
|
||||||
|
"calloutsBlendMode": "normal",
|
||||||
|
"calloutsFontSize": "",
|
||||||
|
"codeBlocksStyle": "filled",
|
||||||
|
"codeBlocksFontSize": "",
|
||||||
|
"codeBlocksLineNumbers": false,
|
||||||
|
"codeBlocksScrollLongLines": false,
|
||||||
|
"codeBackgroundColorLight": "",
|
||||||
|
"codeBackgroundColorDark": "",
|
||||||
|
"codeTextColorLight": "",
|
||||||
|
"codeTextColorDark": "",
|
||||||
|
"codeCommentColorLight": "",
|
||||||
|
"codeCommentColorDark": "",
|
||||||
|
"codeFunctionColorLight": "",
|
||||||
|
"codeFunctionColorDark": "",
|
||||||
|
"codeKeywordColorLight": "",
|
||||||
|
"codeKeywordColorDark": "",
|
||||||
|
"codeImportantColorLight": "",
|
||||||
|
"codeImportantColorDark": "",
|
||||||
|
"codeOperatorColorLight": "",
|
||||||
|
"codeOperatorColorDark": "",
|
||||||
|
"codePropertyColorLight": "",
|
||||||
|
"codePropertyColorDark": "",
|
||||||
|
"codePunctuationColorLight": "",
|
||||||
|
"codePunctuationColorDark": "",
|
||||||
|
"codeStringColorLight": "",
|
||||||
|
"codeStringColorDark": "",
|
||||||
|
"codeTagColorLight": "",
|
||||||
|
"codeTagColorDark": "",
|
||||||
|
"codeValueColorLight": "",
|
||||||
|
"codeValueColorDark": "",
|
||||||
|
"embedsStyle": "clean",
|
||||||
|
"embedsBorderThickness": 2,
|
||||||
|
"embedsHideTitles": false,
|
||||||
|
"embedsMaxHeight": "",
|
||||||
|
"embedsStrict": false,
|
||||||
|
"embedsUnderline": false,
|
||||||
|
"embedsDecorationStyle": "solid",
|
||||||
|
"embedsDecorationColorLight": "",
|
||||||
|
"embedsDecorationColorDark": "",
|
||||||
|
"embedsBackgroundLight": "",
|
||||||
|
"embedsBackgroundDark": "",
|
||||||
|
"mediaRadius": 8,
|
||||||
|
"mediaOpacityDark": 1,
|
||||||
|
"mediaDisableMaximized": false,
|
||||||
|
"mediaDisableZoom": false,
|
||||||
|
"imageBlendLight": false,
|
||||||
|
"imageGridFit": "cover",
|
||||||
|
"imageGridBackgroundLight": "",
|
||||||
|
"imageGridBackgroundDark": "",
|
||||||
|
"pdfsPageStyle": "seamless",
|
||||||
|
"pdfsOpacityDark": 1,
|
||||||
|
"pdfsInvertDark": false,
|
||||||
|
"basesToolbarLabel": "visible",
|
||||||
|
"basesToolbarOpacity": 1,
|
||||||
|
"basesTableRowHeight": 30,
|
||||||
|
"basesStripedRows": false,
|
||||||
|
"basesStripedColumns": false,
|
||||||
|
"basesTableHeaderIcons": "visible",
|
||||||
|
"basesTableVerticalAlignment": "top",
|
||||||
|
"canvasBackgroundColor": "",
|
||||||
|
"canvasDotPatternColor": "",
|
||||||
|
"iconMuted": 0.5,
|
||||||
|
"iconColorLight": "",
|
||||||
|
"iconColorDark": "",
|
||||||
|
"iconColorHoverLight": "",
|
||||||
|
"iconColorHoverDark": "",
|
||||||
|
"iconColorActiveLight": "",
|
||||||
|
"iconColorActiveDark": "",
|
||||||
|
"iconColorFocusedLight": "",
|
||||||
|
"iconColorFocusedDark": "",
|
||||||
|
"graphLineColorLight": "",
|
||||||
|
"graphLineColorDark": "",
|
||||||
|
"graphNodeColorLight": "",
|
||||||
|
"graphNodeColorDark": "",
|
||||||
|
"graphNodeFocusedColorLight": "",
|
||||||
|
"graphNodeFocusedColorDark": "",
|
||||||
|
"graphNodeTagColorLight": "",
|
||||||
|
"graphNodeTagColorDark": "",
|
||||||
|
"graphNodeAttachmentColorLight": "",
|
||||||
|
"graphNodeAttachmentColorDark": "",
|
||||||
|
"graphNodeUnresolvedColorLight": "",
|
||||||
|
"graphNodeUnresolvedColorDark": "",
|
||||||
|
"dataviewTrimCols": false,
|
||||||
|
"dataviewInlineLists": false,
|
||||||
|
"dataviewMaxColWidth": "",
|
||||||
|
"linksInternalUnderline": "underline",
|
||||||
|
"linksExternalUnderline": "underline",
|
||||||
|
"linkColorLight": "",
|
||||||
|
"linkColorDark": "",
|
||||||
|
"linkColorHoverLight": "",
|
||||||
|
"linkColorHoverDark": "",
|
||||||
|
"linkUnresolvedColorLight": "",
|
||||||
|
"linkUnresolvedColorDark": "",
|
||||||
|
"linkUnresolvedDecorationColorLight": "",
|
||||||
|
"linkUnresolvedDecorationColorDark": "",
|
||||||
|
"linkUnresolvedOpacity": 0.5,
|
||||||
|
"linkExternalColorLight": "",
|
||||||
|
"linkExternalColorDark": "",
|
||||||
|
"linkExternalColorHoverLight": "",
|
||||||
|
"linkExternalColorHoverDark": "",
|
||||||
|
"listsSpacing": 0.075,
|
||||||
|
"listsIndent": 2,
|
||||||
|
"listsBulletColorLight": "",
|
||||||
|
"listsBulletColorDark": "",
|
||||||
|
"listsOrderedStyle": "decimal",
|
||||||
|
"listsDisableStrikeTasks": false,
|
||||||
|
"tablesFontSize": "",
|
||||||
|
"tablesRowLines": false,
|
||||||
|
"tablesColumnLines": false,
|
||||||
|
"tablesFrame": false,
|
||||||
|
"tablesStripedRows": false,
|
||||||
|
"tablesStripedColumns": false,
|
||||||
|
"tablesTabularFigures": false,
|
||||||
|
"tablesRowNumbers": false,
|
||||||
|
"tablesFitContentWidth": false,
|
||||||
|
"tablesDisableLineWrap": false,
|
||||||
|
"tablesHeaderAlignment": "start",
|
||||||
|
"tablesBodyAlignment": "start",
|
||||||
|
"tablesHighlightActiveRow": false,
|
||||||
|
"tableColumnMinWidth": "",
|
||||||
|
"tableColumnMaxWidth": "",
|
||||||
|
"maximizeTables": "maximize-tables-off",
|
||||||
|
"tableCenter": false,
|
||||||
|
"tableRowBackgroundHoverLight": "",
|
||||||
|
"tableRowBackgroundHoverDark": "",
|
||||||
|
"tagsPlain": false,
|
||||||
|
"tagsShape": "pill",
|
||||||
|
"tagsBorderWidth": 0,
|
||||||
|
"tagColorLight": "",
|
||||||
|
"tagColorDark": "",
|
||||||
|
"tagBackgroundColorLight": "",
|
||||||
|
"tagBackgroundColorDark": "",
|
||||||
|
"tagBorderColorLight": "",
|
||||||
|
"tagBorderColorDark": "",
|
||||||
|
"tasksCheckboxColorLight": "",
|
||||||
|
"tasksCheckboxColorDark": "",
|
||||||
|
"tasksCheckboxShape": "rounded",
|
||||||
|
"ribbonStyle": "ribbon-hidden",
|
||||||
|
"tabsStyle": "tabs-default",
|
||||||
|
"tabTextColorLight": "",
|
||||||
|
"tabTextColorDark": "",
|
||||||
|
"tabTextColorActiveLight": "",
|
||||||
|
"tabTextColorActiveDark": "",
|
||||||
|
"tabStackedPaneWidth": 700,
|
||||||
|
"tabStackedHeaderWidth": 40,
|
||||||
|
"tabStackedSpineOrientation": "tab-stack-top",
|
||||||
|
"tabStackedSpineOrder": "row",
|
||||||
|
"textFormattingColorLight": "",
|
||||||
|
"textFormattingColorDark": "",
|
||||||
|
"italicColorLight": "",
|
||||||
|
"italicColorDark": "",
|
||||||
|
"boldColorLight": "",
|
||||||
|
"boldColorDark": "",
|
||||||
|
"titleColorLight": "",
|
||||||
|
"titleColorDark": "",
|
||||||
|
"titleColorInactiveLight": "",
|
||||||
|
"titleColorInactiveDark": "",
|
||||||
|
"workspaceBackgroundTranslucentLight": "",
|
||||||
|
"workspaceBackgroundTranslucentDark": "",
|
||||||
|
"cardsMinWidth": "",
|
||||||
|
"cardsMaxWidth": "",
|
||||||
|
"cardsMobileWidth": "",
|
||||||
|
"cardsPadding": "",
|
||||||
|
"cardsImageHeight": "",
|
||||||
|
"cardsBorderWidth": "",
|
||||||
|
"cardsBackgroundLight": "",
|
||||||
|
"cardsBackgroundDark": "",
|
||||||
|
"cardsBackgroundHoverLight": "",
|
||||||
|
"cardsBackgroundHoverDark": "",
|
||||||
|
"hideMarkdown": false,
|
||||||
|
"hideSettingsDesc": false,
|
||||||
|
"cursor": "default",
|
||||||
|
"baseColorLight": "",
|
||||||
|
"baseColorDark": "",
|
||||||
|
"bg1Light": "",
|
||||||
|
"bg1Dark": "",
|
||||||
|
"bg2Light": "",
|
||||||
|
"bg2Dark": "",
|
||||||
|
"bg3Light": "",
|
||||||
|
"bg3Dark": "",
|
||||||
|
"ui1Light": "",
|
||||||
|
"ui1Dark": "",
|
||||||
|
"ui2Light": "",
|
||||||
|
"ui2Dark": "",
|
||||||
|
"ui3Light": "",
|
||||||
|
"ui3Dark": "",
|
||||||
|
"ax1Light": "",
|
||||||
|
"ax1Dark": "",
|
||||||
|
"ax2Light": "",
|
||||||
|
"ax2Dark": "",
|
||||||
|
"ax3Light": "",
|
||||||
|
"ax3Dark": "",
|
||||||
|
"sp1Light": "",
|
||||||
|
"sp1Dark": "",
|
||||||
|
"tx1Light": "",
|
||||||
|
"tx1Dark": "",
|
||||||
|
"tx2Light": "",
|
||||||
|
"tx2Dark": "",
|
||||||
|
"tx3Light": "",
|
||||||
|
"tx3Dark": "",
|
||||||
|
"hl1Light": "",
|
||||||
|
"hl1Dark": "",
|
||||||
|
"hl2Light": "",
|
||||||
|
"hl2Dark": "",
|
||||||
|
"colorRedLight": "",
|
||||||
|
"colorRedDark": "",
|
||||||
|
"colorOrangeLight": "",
|
||||||
|
"colorOrangeDark": "",
|
||||||
|
"colorYellowLight": "",
|
||||||
|
"colorYellowDark": "",
|
||||||
|
"colorGreenLight": "",
|
||||||
|
"colorGreenDark": "",
|
||||||
|
"colorCyanLight": "",
|
||||||
|
"colorCyanDark": "",
|
||||||
|
"colorBlueLight": "",
|
||||||
|
"colorBlueDark": "",
|
||||||
|
"colorPurpleLight": "",
|
||||||
|
"colorPurpleDark": "",
|
||||||
|
"colorPinkLight": "",
|
||||||
|
"colorPinkDark": "",
|
||||||
|
"foldingOffset": 32,
|
||||||
|
"gutterBackgroundLight": "",
|
||||||
|
"gutterBackgroundDark": "",
|
||||||
|
"lineNumberColorLight": "",
|
||||||
|
"lineNumberColorDark": "",
|
||||||
|
"lineNumberColorActiveLight": "",
|
||||||
|
"lineNumberColorActiveDark": "",
|
||||||
|
"dashedUnderlineInternal": false,
|
||||||
|
"_migrationVersions": [
|
||||||
|
"minimal-to-oxygen-prefix-v1"
|
||||||
|
]
|
||||||
|
}
|
||||||
3611
src/content/.obsidian/plugins/oxygen-settings/main.js
vendored
Normal file
3611
src/content/.obsidian/plugins/oxygen-settings/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
src/content/.obsidian/plugins/oxygen-settings/manifest.json
vendored
Normal file
1
src/content/.obsidian/plugins/oxygen-settings/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"id":"oxygen-settings","name":"Oxygen Theme Settings","version":"0.3.8","minAppVersion":"1.11.0","description":"Configure advanced customization options in Oxygen Theme.","author":"David V. Kimball","authorUrl":"https://davidvkimball.com","fundingUrl":"https://patreon.com/davidvkimball","isDesktopOnly":false}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user